Sparqlで次のクエリを実行したいと思います。「バラクオバマとイリノイ州と何らかの関係がある他の2人が関与するソーシャルトライアド」。ソーシャルトライアドが3人のグループであり、すべてのペアの間にリンクがある場合。
# Find social triads involving Barack Obama and two other people who
# have some connection to the state of Illinois. A social triad is a
# group of three people where there is a link between every pair.
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbpr: <http://dbpedia.org/resource/>
PREFIX dbpo: <http://dbpedia.org/ontology/>
PREFIX dbpprop: <http://dbpedia.org/property/>
PREFIX dbpedia: <http://dbpedia.org/resource/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT distinct ?P1 ?P2
WHERE {
?P1 a dbpo:Person.
?P2 a dbpo:Person.
?P1 dbpprop:state dbpr:Illinois.
?P2 dbpprop:state dbpr:Illinois.
?prop a rdf:Property.
{?P1 ?prop ?P2} UNION {?P2 ?prop ?P1}.
{dbpedia:Barack_Obama ?prop ?P1} UNION {?P1 ?prop dbpedia:Barack_Obama}.
{dbpedia:Barack_Obama ?prop ?P2} UNION {?P2 ?prop dbpedia:Barack_Obama}.
}
しかし、私はそれから結果を得ることができません。どうすればそれを機能させることができますか?さらに、?P1と?P2を別の人にしたい。どうしてそれが可能ですか?