人々を直接人に関連させたい場合は、その人物を被写体として、もう1つをオブジェクトとして持つ2つのトリプルパターンが必要です。ここでは、このようなクエリを構築するための1つの方法は次のとおりです。
SELECT DISTINCT ?has ?of ?person
WHERE {
{?person a foaf:Person;
?of dbr:Chuck_Norris}
UNION
{?person a foaf:Person.
dbr:Chuck_Norris ?has ?person}
}
これはDBpediaの中にあらかじめ定義された接頭辞であると私はdbr:
を使用しています。あなたは今http://live.dbpedia.org/sparql
に照会する場合
いくつかのケースでは、あなたは異なる結果を得るでしょう、このクエリは制限があります。それはあなたに他のDBpediaリソースとの関係しか持たないでしょう。非常に頻繁にリテラルとして主張される関係者がいるかもしれません。私はそれを得るためのエレガントな方法を知らないが、人間関係に使用されることが知られているプロパティのリストを求める方法があります。ここdbp:spouse
に1つの値を持つリストと例です。
SELECT DISTINCT ?has ?of ?person
WHERE {
{?person a foaf:Person;
?of dbr:Chuck_Norris}
UNION
{?person a foaf:Person.
dbr:Chuck_Norris ?has ?person}
UNION
{values ?has {dbp:spouse}
dbr:Chuck_Norris ?has ?person .}
}
http://live.dbpedia.org/sparqlから、これはさらにあなたをもたらすでしょう。一般的には
has | person
---------------------------------------------------------
http://dbpedia.org/property/spouse | "Dianne Holechek"@en
http://dbpedia.org/property/spouse | "Gena O'Kelley"@en
---------------------------------------------------------
をそのようなリテラルを求めるあなたにごみ結果の多くをもたらすでしょうこれは文字列フィルタを使用して減らすことができます。
RDFおよびSPARQLのチュートリアルを参照して、データがトリプルで作成され、クエリがトリプルパターンで行われることを確認してください。つまり、あなたのクエリはいくつかの '?P'を選択しますが、WHERE部分では使用されません。 – AKSW