0

タートル ファイルがロードされているオープン RDF リポジトリをクエリしようとしています。クエリですべてを選択する場合 - "SELECT ?s WHERE { ?s ?p ?o } "; その後、すべてが正常に機能していますが、少し複雑なクエリを使用している場合は機能しません。クエリ部分のコードを添付しています -

private static void queryingRDF(Repository repo) {
    try{
        RepositoryConnection con = repo.getConnection();
        try{
            String queryString = "SELECT ?s  WHERE { ?s uml:lineOfBusiness cp:lobEQUITIES .}" ;
              TupleQuery tupleQuery = con.prepareTupleQuery(QueryLanguage.SPARQL, queryString);

              TupleQueryResult result = tupleQuery.evaluate();
              try {
                   while(result.hasNext()){
                        BindingSet bindingSet = result.next();
                        Value valueOfX = bindingSet.getValue("s");
                        //Value valueOfY = bindingSet.getValue("p");
                        //Value valueOfZ = bindingSet.getValue("o");
                        //System.out.println(valueOfX + "   " + valueOfY + "   " + valueOfZ);
                        System.out.println(valueOfX) ;
                   }

              }

              finally {
                  result.close();
              }
        }
        finally{
            con.close();
        }
    }
    catch(OpenRDFException e){
        System.out.println("Query error");
    }

}

これは継続的に例外セクションに入り、エラー「クエリエラー」をスローします。何がうまくいかないのですか?

4

1 に答える 1

2

umlまたはcpプレフィックスを定義していないようです。クエリ文字列で次のようなステートメントを探しています。

PREFIX uml: <http://example.com/uml>

または、次のように RepositoryConnection::setNamespace を呼び出します。

con.setNamespace("uml", "http://example.com/uml");
于 2014-05-16T15:58:03.477 に答える