-2

SPARQLを使用してトリプルを選択したい。それを行うために、私は次のクエリを使用しています:

SELECT count (*)
WHERE {?s ?p ?o}
FILTER (?s=http://kjkhlsa.net && ?p=http://lkasdjlkjas.com && ?o=Test)

答えとして、私は完全に間違ったトリプルを取得します:(サブジェクトは「http://kjkhlsa.net」と等しくなく、述語は「http://lkasdjlkjas.com」と等しくなく、オブジェクトも「テスト」と等しくありません。誰かが私を説明します、私が間違っていること:(

edit1:クエリをphpファイルに入れました:

    $inst_query = 'SELECT * { <http://kjkhlsa.net> <http://lkasdjlkjas.com> "Test"}';
    echo $inst_query;

エコーからの答えは「SELECT*{"テスト"}」でした。それから私はWHEREでそれを試しました:

    $inst_query = 'SELECT * WHERE { <http://kjkhlsa.net> <http://lkasdjlkjas.com> "Test"}';
    echo $inst_query;

これが「SELECT*WHERE {"Test"}」という答えでした...したがって、URIがありませんが、これはphpの問題であり、sparqlの問題ではないように思われます。

edit2:クエリをSPARQLクエリエディターに入れたところ、「結果なし」という応答が返されました。しかし、確かに、このトリプルがあります。

4

3 に答える 3

2

現在の形式では、質問はあまり明確ではありません(上記の私のコメントを参照してください)。

基本的にパターンに一致するトリプルを取得しようとしているため、の代わりにグラフパターンを使用する方が効率的ですFILTER。多くのSPARQL実装は、最初にグラフパターンによって候補トリプルを照合し、次にFILTER式を適用します。本質的に、?s ?p ?oグラフパターンを使用すると、すべてのトリプルに対して線形スキャンを実行します。

したがって、FILTERの代わりにグラフパターンを使用して、機能するはずの何かがあります。

SELECT * { <http://kjkhlsa.net> <http://lkasdjlkjas.com> "Test" }

注:COUNT(*)標準のSPARQLではないものは含めませんでした。<>URIの周り。""文字通りの周り。

于 2009-06-08T07:48:05.183 に答える
0

これを使用してみてください:

SELECT count (*) as ?count
WHERE {
    ?s ?p ?o
FILTER (?s=<http://kjkhlsa.net> && ?p=<http://lkasdjlkjas.com> && ?o=Test)
}
于 2014-03-28T11:04:26.820 に答える