как сохранить модификацию (создание, обновление файла OWL) на сервере fuseki - PullRequest
0 голосов
/ 26 июня 2018

Я создал модель онтологии, используя протеже.Я использовал Java для заполнения своей онтологии (reate user, resources ..), а затем сохраняю все изменения в файл.

Теперь мне нужно интегрировать RDF-сервер для сохранения изменений после некоторых исследований, которые я обнаружил, что FusekiЭто один из лучших серверов, которые я могу использовать. После некоторых исследований я также обнаружил, что мне нужно использовать RDFCOnnexion для связи с сервером fuseki, но у меня возникают некоторые трудности с интеграцией сервера и манипулированием всеми моими классами Java.

Чтобы запросить мою онтологию, я использовал RDFconnexion: пример: public static void main (String [] args) {

    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 для (изменения).и запросите мою онтологию).

спасибо за вашу помощь

1 Ответ

0 голосов
/ 27 июня 2018

Обратите внимание, что вы, вероятно, сначала хотите получить свой график, используя метод 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() получить его.

Как только вы получите локальную копию, измените ее с помощью API Jena по вашему желанию.

Затем вы можете использовать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);

Это заменит существующий график с текущим содержимым model.Опять же, если вы просто используете график по умолчанию, вы можете просто сделать connection.put(model).

...