2009-06-08 14 views
-2

SPARQLを使用してトリプルを選択します。これを行うには、私は次のクエリ使用しています:答えとして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 * {"Test"} "次に、私はどこでそれを試しました:ここで

$inst_query = 'SELECT * WHERE { <http://kjkhlsa.net> <http://lkasdjlkjas.com> "Test"}'; 
    echo $inst_query; 
が答えた「SELECT * WHERE { 『テスト』}」...そう、私はURIを欠けているが、これはPHPの問題とSPARQLない問題として私のためと思われます。

edit2: 私はSPARQLクエリエディタにクエリを入れました。私は応答が "結果なし" ....しかし、私はこのトリプルを持っていると確信しています。

+0

使用しているクエリエンジンはどれですか?標準SPARQLはCOUNT(*)などの集計をサポートしていないことに注意してください。また、SPARQLが正しく出てくるように投稿を編集してください。この形式では、クエリは解析すべきではありません。 – laalto

+0

申し訳ありませんが、どのエンジンを使用しているのか分かりません。 – cupakob

答えて

2

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

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

ここでは、FILTERの代わりにグラフパターンを使用するとよいでしょう。

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

注:標準SPARQLではないCOUNT(*)は含まれませんでした。 URIの周囲の<>リテラルを中心に""

+0

私はそれを試してみましたが、まだ動作しません。私は間違いをしています... \t しかしそれはクエリではありません。 <>と ""のヒントをありがとう。私が問題を解決するとすぐに、私はここに解決策を掲載します。 – cupakob

+0

Sirakovが最初に付けたURIに末尾にスラッシュを追加しました。したがって、指定したクエリを実行すると、URIが正確に一致する必要があるため、意図したクエリと実際には一致しません。 –

+0

@Phil M:ああ、ブラウザのURLコピー貼り付け機能の機能。それを指摘してくれてありがとう。私は答えを編集します。 – laalto

0

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

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

次のクエリでは、s変数に戻った明確なURI(S)の数をカウントするカウント機能を使用しています。

SELECT ?s (COUNT (DISTINCT ?s) as ?count) 
    WHERE {?s ?p ?o} 
    FILTER (?o="Test") 
関連する問題