2017-05-11 4 views
0

を選択:SPARQLは、私は私の布石サーバーで、次のデータセットを持っている特定のデータ

<http://person/Mark-John> <http://purl.org/dc/elements/1.1/name> 
       "Mark John" ; 
     <http://purl.org/dc/elements/1.1/nationality> 
       "American" . 

<http://person/Elizabeth-Mary> 
     <http://purl.org/dc/elements/1.1/name> 
       "Elizabeth Mary" ; 
     <http://purl.org/dc/elements/1.1/nationality> 
       "American" . 

にはどうすればいいだけname =「マーク・ジョン」を持っているエントリのデータを得ることができますか?

これは私が試したものです:

public static void main(String[] argv) throws IOException { 
    execSelectAndPrint(
      "http://localhost:3030/Date/query", 
      "PREFIX dc: <http://purl.org/dc/elements/1.1/> " + "SELECT * WHERE { ?name dc:name 'Mark John' }" 
      ); 
} 

しかし、それはこの返します。私がしたい、


http://person/Mark-John

代わりのMark JohnAmerican

基本的に人のために利用可能なすべてのデータを出力します...私の場合、namenationality

答えて

1

クエリは、クエリのトリプルパターンとまったく同じものを返します。 「Mark John」という名前のリソースを要求しています。また、RDFリソースはURIで表されています。名前は、トリプルの目的の位置になりますので、実際にあなたの変数名を使用すると、再び名前を持つようにしたい場合は、変数を使用する必要があります...

紛らわしいです:

PREFIX dc: <http://purl.org/dc/elements/1.1/> 
SELECT ?name WHERE { 
VALUES ?name {"Mark John"} 
?s dc:name ?name . 
} 

そして、あなたはあなたの質問に国籍を選んでいません。これが返されることをどのように期待しますか?

PREFIX dc: <http://purl.org/dc/elements/1.1/> 
SELECT ?name ?ǹationality WHERE { 
VALUES ?name {"Mark John"} 
?s dc:name ?name ; 
    dc:nationality ?nationality . 
} 
関連する問題