2

2つの異なるOntModelにインデックスを付け、それらに対してsparqlクエリを実行したいと思います。例えば:

String query = "PREFIX fise: <http://fise.iks-project.eu/ontology/>\n"
                   + "PREFIX pf: <http://jena.hpl.hp.com/ARQ/property#>\n"
                   + "PREFIX skos:   <http://www.w3.org/2004/02/skos/core#>\n"
                   + "SELECT distinct ?def\n" + "WHERE {\n"
                   + "  ?item a skos:Concept .\n"
                   + "  ?item skos:definition ?def.\n"
                   + "  (?label ?score)  pf:textMatch 'someKeyword'. \n"
                   + "};

ResultSet result = QueryExecutionFactory.create(query, ontModel1).execSelect();
ResultSet result2 = QueryExecutionFactory.create(query, ontModel2).execSelect();

2つのontモデルに異なるインデックスを作成するにはどうすればよいですか、またはそれを行う必要がありますか?最終的に、私が必要とするのは、LARQ機能を使用して2つのontモデルを照会することです。

SPARQLの実行中にlucene機能を使用できることを理解している限り、次のようなコードを実装する必要があります。

IndexBuilderString larqBuilder = new IndexBuilderString();
larqBuilder.indexStatements(ontModel.listStatements());
IndexLARQ index = larqBuilder.getIndex();
LARQ.setDefaultIndex(index);

ただし、このコードでは単一のインデックスを設定できます。さらに、2つのontモデルをマージしたくありません。Concextのコンセプトがありますが、使い方がわかりませんでした。

4

1 に答える 1

1

答えは、クエリのコンテキストを使用してクエリ実行ごとにインデックスを登録しているようです。

 QueryExecution qe = QueryExecutionFactory.create(query, model) ;
 LARQ.setDefaultIndex(qe.getContext(), index) ;
于 2011-09-13T12:17:11.650 に答える