java - 如何将修改(OWL文件的创建、更新)保存到fuseki服务器中

标签 java sparql rdf jena fuseki

我使用 protege 创建了一个本体模型。 , 我使用java来填充我的本体(reate user,resources..) 然后我将所有修改保存到一个文件中。

现在我需要集成 RDF 服务器来保存更改 经过一些研究,我发现 Fuseki 是我可以使用的最好的服务器之一.. 经过更多研究后,我还发现我需要使用 RDFCOnnexion 与 fusioni 服务器进行通信,但我在集成服务器和操作所有 Java 类方面遇到了一些困难。

为了请求我的本体,我使用了 RDFconnexion: 例子 : 公共(public)静态无效主(字符串[]参数){

    RDFConnection conn1 = 
   RDFConnectionFactory.connect("http://localhost:3030/test/") ;
    try( QueryExecution qExec = conn1.query("PREFIX ex: <http://example.org/> 
    SELECT * { ?s ?p ?o }") ) {
        ResultSet rs = qExec.execSelect();
        ResultSetFormatter.out(rs, qExec.getQuery());
    }
     }

但我在尝试创建代理(用户)或资源时遇到问题。 下面您将看到我的 Java 代码的一部分:

private final OntModel onto;
private OntModel inferred;

public test() {
    onto = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
    OntDocumentManager manager = onto.getDocumentManager();
    manager.addAltEntry("http://www-test/1.0.0", "ontologies/test.owl");
  }

public String createUri(String prefix, String localName){
    String uri = prefix + "#" + localName ;
    uri = uri.replaceAll(" ", "_") ;
    return uri ;
}
// to create Agent 
public Resource createAgent(String uri) throws 
AlreadyExistingRdfResourceException {
    Resource agent = this.createEntity(uri) ;
    if (agent==null) return null ;

    Property prop ; Statement s ;
    s = ResourceFactory.createStatement(agent, RDF.type, 
    onto.getIndividual(EngineConstants.CD_Agent)) ;
    onto.add(s) ;

    this.synchronize();
    return agent ;
}
// TO get Agent Activty 
public Set<Resource> getAgentActivities(String agentUri){
    final String query = "SELECT ?entity WHERE { ?entity CD:hasAgent <"+ 
agentUri +">}" ;
    ResultSet resultSet = this.queryExec(this.getInferred(), query);
    return this.getRdfResources(resultSet, "entity") ;
}

我需要知道是否有人可以帮助我,并给我一个如何使用和集成 Fuseki 的示例(修改和请求我的本体)。

感谢您的帮助

最佳答案

请注意,您可能首先想使用 fetch() 方法检索图表 - http://jena.apache.org/documentation/javadoc/rdfconnection/org/apache/jena/rdfconnection/RDFDatasetAccessConnection.html#fetch-java.lang.String- - 这将比像现在这样查询它更有效,例如

Model model = connection.fetch("http://your-graph-name");

如果您只是使用默认图表,则只需执行 connection.fetch() 即可检索该图表。

获得本地副本后,根据需要使用 Jena API 对其进行修改。

然后您可以使用 put() 方法来更新图表 - http://jena.apache.org/documentation/javadoc/rdfconnection/org/apache/jena/rdfconnection/RDFConnection.html#put-java.lang.String-org.apache.jena.rdf.model.Model- - 例如您的本地更改

connection.put("http://your-graph-name", model);

这将使用模型的当前内容覆盖现有图表。同样,如果您仅使用默认图表,则只需执行 connection.put(model)

关于java - 如何将修改(OWL文件的创建、更新)保存到fuseki服务器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51032922/

相关文章:

java - 使用 Jena 将字符串插入到 SPARQL 查询中

android - Android 上的 Sesame RDF 存储/查询

java - java中如何转换arraylist?

java - 如何确定Java JDK版本和sdk版本?

java - 无法调用方法 : java. lang.IllegalArgumentException:参数类型不匹配

java - Spring MVC 应用程序在 Eclipse 中运行但不在 Intellij 中运行 - 找不到 404

prolog - 使用 append/3 谓词创建 SPARQL 参数化查询

rdf - 单个 SPARQL 查询返回 JSON 层次结构

sparql - 在 Wikidata-SPARQL 中使用限定符

imap - Mozilla Thunderbird 如何使用 IMAP 主机和端口的 RDF 数据库