Ich habe eine Ontologie mit den Objekten (NamedIndividual
) und deren Koordinaten (X, Y) in Form von datatype
. Die einzelnen sieht wie folgt aus:Abrufen von Daten aus SPARQL-Ergebnissatz
<owl:NamedIndividual rdf:about="http://www.semanticweb.org/PredefinedOntology#Door1">
<rdf:type rdf:resource="http://www.semanticweb.org/PredefinedOntology#Objects"/>
<Y rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">20</Y>
<X rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">33</X>
</owl:NamedIndividual>
Ich mache eine SPARQL-Abfrage:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX onto: <http://www.semanticweb.org/PredefinedOntology#>
SELECT ?objects ?X ?Y
WHERE {
?objects rdf:type owl:NamedIndividual
; onto:X ?X
; onto:Y ?Y
FILTER regex(str(?objects),"Door1")
}
Meine Abfrage in Eclipse ist dies:
Model model = FileManager.get().loadModel("/home/aidos/workspace/OntologicalFramework/files/ontologies/NewOnt.owl");
String queryString = "//THE QUERY I'VE WRITTEN ABOVE IN A STRING FORM"
Query query = QueryFactory.create(queryString);
QueryExecution qexec = QueryExecutionFactory.create(query, model);
ResultSet results = qexec.execSelect();
ResultSetFormatter.out(System.out, results, query);
Das gibt mir eine Ergebnismenge zurück zu bedruckenden die Konsole meiner IDE, wie:
--------------------------
| objects | X | Y |
==========================
| onto:Window1 | 56 | 28 |
--------------------------
Was ich brauche, ist diese Ganzzahlen 56 und 28 zu bekommen und sie in den int x
und int y
zu speichern. Könnte mir jemand helfen zu verstehen, wie ich sie bekommen kann? Während Prozess Debuggen habe ich die DataSetImpl
genannt dataset
im Zweig jeden Zugriffs ResultSet bietet ResultSet result
Gute Erklärung. Einige Ergänzungen: Erstens würde ich für Situationen, in denen Sie nicht sicher sein können - für welche Vernunft überhaupt - dass ein Literal oder eine Ressource zurückgegeben wird, vorschlagen, "get()" zu verwenden, um zu prüfen, ob es ein Literal ist RDFNode'-Objekt vor der Konvertierung. Zweitens, um Probleme im obigen Beispielcode zu vermeiden, können Sie nach dem Drucken des Resultsets nicht erneut darauf iterieren. Ah, und last but not least, Jena ARQ-Dokumente sind ein guter Anfangspunkt. – AKSW