У меня есть онтология с объектами (NamedIndividual
) и их координаты (X, Y) в форме datatype
. Индивид выглядеть следующим образом:Извлечение данных из набора результатов SPARQL
<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>
я сделать запрос SPARQL:
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")
}
Мой запрос в затмении это:
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);
Это дает мне обратно результирующий набор, выводимой консоль моей IDE, например:
--------------------------
| objects | X | Y |
==========================
| onto:Window1 | 56 | 28 |
--------------------------
Мне нужно получить эти целые числа 56 и 28 и сохранить их в int x
и int y
. Может кто-нибудь помочь мне понять, как я могу их получить? В то время как процесс отладки Я нашел DataSetImpl
под названием dataset
в ветви ResultSet result
Хорошее объяснение. Некоторые дополнения: во-первых, для ситуаций, когда вы не можете быть уверены - для какого бы то ни было разумного - что будет возвращен литерал или ресурс, я бы предложил использовать 'get()' с проверкой, является ли он литералом на ' RDFNode' перед преобразованием. Во-вторых, просто чтобы избежать проблем в случае приведенного выше кода примера, как только вы напечатали результирующий набор, вы не сможете повторять его снова. Ах, и последнее, но не менее важное, Jena ARQ docs - хороший момент для начала. – AKSW