2

DBpedia にクエリを実行するために、Jena を使用して SPARQL クエリを作成しようとしています。Virtuoso を使用するとクエリは機能しますが、次の Java コードにプラグインすると、空のセットが返されます。

String sr="Christopher_Nolan";
String sparqlQueryString1 = "PREFIX dbont: <http://dbpedia.org/ontology/> "+            
        "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>"+ 
        "PREFIX foaf: <http://xmlns.com/foaf/0.1/> "+
        "   SELECT distinct   ?s"+        
        "   WHERE {  "+       
        "?s foaf:name ?label  ."  +
        "filter(?label=\"Christpher_Nolan\"@en)." +             
        "        }";
          Query query = QueryFactory.create(sparqlQueryString1);
          QueryExecution qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query);

          ResultSet results = qexec.execSelect();
          ResultSetFormatter.out(System.out,results, query);       

         qexec.close() ;    
4

1 に答える 1

2

これはイエナの問題ではないと思いますが、特定のクエリの問題です。DBpedia SPARQL エンドポイントでクエリを実行すると、結果が生成されません

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT distinct ?s      
WHERE {
  ?s foaf:name ?label .
  filter(?label="Christpher_Nolan"@en)
}

SPARQL の結果 (結果なし)

結果がありません

ただし、Christopher という名前に を追加しo、アンダースコアをスペースに変更すると、次の 3 つの結果が得られます。

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT distinct ?s      
WHERE {
  ?s foaf:name ?label .
  filter(?label="Christopher Nolan"@en)
}

SPARQL の結果 (3 件)

http://dbpedia.org/resource/Christopher_Nolan_ (
作者)
http://dbpedia.org/resource/Christopher_Nolan http://dbpedia.org/resource/Chris_Nolan_ (
音楽家)

3 つの結果

また、これはかなり珍しい使用方法であることも指摘しておきますfilter。特定の値を使用するトリプルを選択する場合は、その値をトリプル パターンに入れるだけです。

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT distinct ?s      
WHERE {
  ?s foaf:name "Christopher Nolan"@en 
}

SPARQL の結果 (同じ 3 つの結果)

于 2013-10-28T17:20:32.203 に答える