2

まず、この関連する質問と回答を見つけました。

SPARQL クエリに PREFIX を追加すると、機能します。ただし、すべての SPARQL クエリですべてのプレフィックスを複製するのではなく、それらを 1 回だけ定義したいと考えています。私はプログラムでそれをやろうとしましたrdfs::

model.setNsPrefix("rdfs", "http://www.w3.org/2000/01/rdf-schema#");
query.setPrefix("rdfs", "http://www.w3.org/2000/01/rdf-schema#");

動作しますが、独自のオントロジーで実行しようとすると動作しません:

model.setNsPrefix("myOnt", "http://example.com/ontologies/myOnt#");
query.setPrefix("myOnt", "http://example.com/ontologies/myOnt#");
4

1 に答える 1

1

Prologueを設定してプレフィックス マッピングを含め、それを特定の SPARQL クエリでQueryFactoryに渡すことができます。

Apache Jena 3.0.0を使用すると、次のようなことがうまくいきました。

Prologue queryPrologue = new Prologue();
queryPrologue.setPrefix("skos", "http://www.w3.org/2004/02/skos/core#");

String sparql = "SELECT (COUNT ?s) WHERE { ?s a skos:Concept . }"
Query query = QueryFactory.parse(new Query(queryPrologue), sparql, null, null);

try(QueryExecution queryExec = QueryExecutionFactory.create(query, dataset)) {
    // ...
}
于 2015-08-20T18:38:07.007 に答える