2017-02-01 4 views
0

Hey, ich habe das Protege-Tutorial für pizzas gemacht. Ich habe eine Eulenakte bekommen. Ich habe die Datei als RDF/XML-Format gespeichert. Jetzt versuche ich einige Informationen über die Daten in der Datei zu bekommen. Dinge wie:Sparql Anfrage für Beziehungen

"Select * where { 
?s rdfs:subClassOf owl:Thing 
} 

Arbeit. Jetzt möchte ich alle Themen und Objekte, die mit "HasTopping" verwandt sind, erhalten.

OntModel m = ModelFactory.createOntologyModel(OWL_MEM); 

    InputStream in = FileManager.get().open("pizza1.owl"); 
    m.read(in, "RDF/XML"); 
    String queryString = 
        "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> " + 
        "PREFIX : <http://www.pizza.com/ontologies/pizza.owl> " + 
        "PREFIX owl: <http://www.w3.org/2002/07/owl#>" + 
        "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>" + 
        "PREFIX xml: <http://www.w3.org/XML/1998/namespace>" + 
        "SELECT * WHERE" + 
        "{" + 
        "?s :hasTopping ?o" + 
        "}"; 
    Query query = QueryFactory.create(queryString); 
    QueryExecution qexec = QueryExecutionFactory.create(query,m); 
    try { 
     ResultSet results = qexec.execSelect(); 
     while(results.hasNext()) { 
      QuerySolution soln = results.nextSolution(); 
      RDFNode name = soln.get("s"); 
      RDFNode name1 = soln.get("o"); 


      //RDFNode name2 = soln.get("s"); 
      System.out.println("Subject:" + name); 
      System.out.println("Object:" + name1); 

      //System.out.println(name2); 
     } 
    } finally { 
     qexec.close(); 
    } 

Aber das Ergebnis ist immer leer. Hoffe jemand kann mir helfen.

Mit freundlichen Grüßen!

Antwort

1

Die Präfix Deklaration von : fehlt ein Trennzeichen wie # oder / - hängt davon ab, wie es in der Ontologie definiert ist.

Ohne es, mit :hasTopping Ergebnisse in der URI http://www.pizza.com/ontologies/pizza.owlhasTopping