2

SPARQL エンドポイントを介して、トリプル ストア内のすべてのプロパティのリスト (の抜粋) をコンパイルしようとしています。次の 2 つのクエリのそれぞれで、有望な結果が得られます。

A:

SELECT DISTINCT ?prop
WHERE {
  [] ?prop [].
}
LIMIT 25

B:

SELECT DISTINCT ?prop
WHERE {
  ?prop a rdf:Property.
}
LIMIT 25

予想どおり、両方のクエリの結果セットに表示される項目がいくつかあります。したがって、制限を組み合わせると、SPARQLに関する私の現在の理解に基づいて、これらの項目が再び得られるはずです。

子:

SELECT DISTINCT ?prop
WHERE {
  [] ?prop [].
  ?prop a rdf:Property.
}
LIMIT 25

しかし、実際には、このクエリではほとんど結果が得られません。何故ですか?

私は自分が間違っていることを認識していません。この質問その質問への回答は、これら2つの(理論的には冗長で、非常にきちんとしたオントロジーで)制限を組み合わせる類似の手法を提案しているようです。


テストケース:

興味深いことに、JES & Co.およびオーストリアの Alpine Ski Racers による SPARQL エンドポイントは、私の予想どおりに動作し、クエリCの結果セットは空ではなく、クエリALIMITによって返されるプロパティで (私が課したように)満たされています。とB

では、なぜ 2 つの結果セットの交差であるべきものが実際には交差ではないのでしょうか? 説明されているエンドポイントはバグがありますか (ありそうもない...)、それとも SPARQL に関する私の理解に欠陥がありますか (ありそうです)?

4

1 に答える 1

2

DBpedia: クエリ A と B の両方が、!bgcolor、!logo、#FuelElements などの 24 個のプロパティを返します。それでも、クエリ C の結果セットは空です。

DBpedia のタイムアウトが原因である可能性があります。

WHERE {
   [] ?prop [].
   ?prop a rdf:Property .
}

実行戦略によっては、非常に高価なクエリになる可能性があります。最初の部分は、「すべてのトリプルを取得する」と言います。ちょうど

SELECT DISTINCT ?prop
WHERE {
  [] ?prop [].
}
LIMIT 25

結果は制限されたストリームです。を追加する?prop a rdf:Propertyと、共通の ?prop を見つけるために DB 結合が必要になります。これはかなり珍しいパターンであるため、オプティマイザーからのサポートが少なくなる可能性があります。

現時点では、タイムアウトが発生します

SELECT  ?prop
WHERE {
   ?prop a rdf:Property .
   [] ?prop [].
}
LIMIT 1
于 2013-10-22T12:26:12.683 に答える