首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jena Virtuoso负载模型

Jena Virtuoso负载模型
EN

Stack Overflow用户
提问于 2019-02-12 19:14:49
回答 1查看 482关注 0票数 0

我阅读了不同的教程,解释如何使用Java Apache Jena (例如https://jena.apache.org/documentation/rdfconnection/)将模型加载到Virtuoso SPARQL端点,但我无法做到这一点。

我尝试了这个函数:

代码语言:javascript
复制
public void uploader(){ 
String myVirtuosoEndpoint = "http://10.1.22.17:8890/"; //my Virtuoso endpoint IP

Model model = ModelFactory.createDefaultModel() ; //the Model I want to upload
model.createResource("https://example.org").addProperty(RDF.type, "http://myType");
try (RDFConnection conn = RDFConnectionFactory.connect(myVirtuosoEndpoint)) {
                conn.begin(ReadWrite.WRITE);
                conn.load("http://myGraph", model);
                conn.commit();
                conn.end();
        }
}

我也尝试了这个函数,利用了Jena的Txn库(https://jena.apache.org/documentation/txn/txn.html)。

代码语言:javascript
复制
try (RDFConnection conn = RDFConnectionFactory.connect(myVirtuosoEndpoint)) {
        Txn.executeWrite(conn, ()-> {
             conn.load(targetGraph, model);
        }) ;
}

我使用的是OpenLink Virtuoso服务器版本07.20.3217。至于Jena依赖项,我使用了以下内容:

代码语言:javascript
复制
    <dependency>
        <groupId>org.apache.jena</groupId>
        <artifactId>apache-jena-libs</artifactId>
        <type>pom</type>
        <version>3.1.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.jena/jena-rdfconnection -->
    <dependency>
        <groupId>org.apache.jena</groupId>
        <artifactId>jena-rdfconnection</artifactId>
        <version>3.10.0</version>
    </dependency>

看起来代码可以正常工作,因为我没有得到任何错误,但是我想要上传模型的图形并没有改变。在执行代码之后,我通过简单地对Graph执行SPARQL查询来验证它。

有谁有同样的问题吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-03-06 01:29:12

我正在尝试另一种新方法来更新Virtuoso中RDF图的内容。

代码:

代码语言:javascript
复制
//Connect to Virtuoso
VirtModel virtualModel = VirtModel.openDatabaseModel(GRAPH_NAME, endpoint, USERNAME, PASSWORD);
long modelInitialSize = virtualModel.size();

//Add model
virtualModel.add(model);
long modelNewSize = virtualModel.size();

virtualModel.close();

其中端点类似于jdbc:virtuoso://10.1.22.xxx:1111

我在pom.xml中使用这些依赖项

代码语言:javascript
复制
    <!-- https://mvnrepository.com/artifact/org.apache.jena/jena-tdb -->
    <dependency>
        <groupId>org.apache.jena</groupId>
        <artifactId>jena-tdb</artifactId>
        <version>3.9.0</version>
    </dependency>


    <!-- https://mvnrepository.com/artifact/org.apache.jena/apache-jena-libs -->
    <dependency>
        <groupId>org.apache.jena</groupId>
        <artifactId>apache-jena-libs</artifactId>
        <version>3.9.0</version>
        <type>pom</type>
    </dependency>

此外,我还使用了Virtuoso webapge中的virt_jena3.jar和virtjdbc4.jar依赖项

现在,我在尝试使用命令long modelNewSize = virtualModel.size();获取VirtModel的大小时出现以下错误

org.apache.jena.shared.JenaException: virtuoso.jdbc4.VirtuosoException: Problem during serialization : Software caused connection abort: socket write error

此外,一旦出现此错误,似乎Virtuoso服务器宕机了,我需要重新启动虚拟机来修复它。

棘手的部分是,在依赖项可用here的情况下,相同的代码可以完美地工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54648859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档