私は研究プロジェクトでしばらくの間 Jena を使用してきましたが、最近、プログラムがいくつかのタスクをより効率的に実行できるように、SPARQL クエリを使用しようとしています。
Twinkle ( http://www.ldodds.com/projects/twinkle/ )を使用して一連のクエリをテストし、目的の結果を得ましたが、それらを Jena に実装すると、追加の結果が返されました。
たとえばトゥインクルでは
SELECT ?x WHERE { ?x rdfs:domain ns:Area . ?x rdfs:range ns:Structure }
きらめき ( ns:Contains ) で 1 つの結果を返しますが、Jena を使用して私のプログラムで実行すると、別のプロパティ ( ns:testProperty ) が返されますが、範囲とドメインが一致しないため、返されるべきではありません。なぜこの不一致があるのか わかりません。ポインタをいただければ幸いです。
私のJavaコードは次のとおりです。
Query q = sparqlQueryGetProperties(s, o);
QueryExecution qexec = QueryExecutionFactory.create(q, m);
try {
Iterator<QuerySolution> rs = qexec.execSelect();
for (; rs.hasNext();) {
QuerySolution soln = rs.next();
if(soln.contains("x")){
RDFNode r = soln.get("x");
Resource rss = r.asResource();
props.add(rss.getLocalName());
}
}
} finally {
qexec.close();
}
その他の情報: Sparql v1.0 Jena Core 2.7.4 Jena ARQ 2.9.4
テストに使用した完全なクエリ:
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX ns:<http://www.semanticweb.org/ontologies/2012/1/Ontology1328444427428.owl#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT ?x WHERE { ?x rdfs:domain ns:Area . ?x rdfs:range ns:Structure }
アップデート
残念ながら、TWINKLE のテスト ケースからまだ追加のリソースが返されています。
以下は、Twinkle と Jena の両方で実行されている正確な SPARQL クエリです。
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ns: <http://www.semanticweb.org/ontologies/2012/1/Ontology1328444427428.owl#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?prp ?x
WHERE
{ ns:cathedral ?prp ?x .
?x rdf:type owl:NamedIndividual .
FILTER ( ?prp != ns:hasShape )
}
TWINKLE での結果:
?prp = ns:within ?x = ns:Campus
JENAでの結果:
(?prp -> ?x)
sameAs -> cathedral
disjoin -> cathedral
differentFrom -> Cath_point_4 //This particular relationship seems completely random.
topObjectProperty -> cathedral
within -> Campus
これが私が使用しているデータです(これは私がテスト用に開発したオントロジーです):
http://cgi.csc.liv.ac.uk/~roscminni/ontResources/spatialOntCopy.owl
Twinkle が古くなっているように見えることを考慮して、Twinkle のクエリをテストするためのより良いツールはありますか?