我阅读了不同的教程,它们解释了如何使用Java Apache Jena(例如https://jena.apache.org/documentation/rdfconnection/)将模型加载到Virtuoso SPARQL端点,但是我做不到。
我尝试了此功能:
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)尝试了其他功能。
try (RDFConnection conn = RDFConnectionFactory.connect(myVirtuosoEndpoint)) {
Txn.executeWrite(conn, ()-> {
conn.load(targetGraph, model);
}) ;
}
我正在使用OpenLink Virtuoso服务器版本07.20.3217。至于Jena依赖项,我使用以下内容:
<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查询来对其进行验证。
有人遇到同样的问题吗?
谢谢
答案 0 :(得分:0)
我正在尝试另一种新方法来更新Virtuoso中RDF图的内容。
代码:
//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
中使用这些依赖项:
<!-- 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有可用依赖项的情况下,相同的代码可以完美运行...