レッツは、私がSPARQLクエリが一部だけではなく、すべてのプロパティを持つインスタンスを取得するために
uri:ObjA1 uri:propAA uri:Obj1A .
uri:ObjA1 uri:propAA uri:Obj1B .
uri:ObjA2 uri:propAA uri:Obj1A .
uri:ObjA2 uri:propAA uri:Obj1B .
uri:ObjA2 uri:propAA uri:Obj1C .
今
が、私は何をしようとしていることだけに値Obj1AとObj1Bを持っているすべてのインスタンスを見つけることであるフォームのトリプルを持っていると言いますpropAA。基本的に、ObjA1はpropAAに対してのみObj1AとObj1Bの値を取るため、クエリはObjA1を返し、ObjA2は返しません。私が今いるのは、
SELECT * where {
?sub uri:propAA uri:Obj1A .
?sub uri:propAA uri:Obj1B .
FILTER NOT EXISTS {
?sub uri:propAA ?obj .
FILTER((?obj != uri:Obj1A) && (?obj != uri:Obj1B)) .
}
}
です。 FILTER NOT EXISTS句を指定しないと、ObjA1とObjA2の両方が返されます。私が今探しているのは、このクエリを書く良い方法があるかどうかを知ることです。より良い、より効率的、またはより簡潔な(またはその両方)という意味になります。あなたがuri:propAA
の値はuri:Obj1A
とuri:Obj1B
ともに?sub
のためのソリューションを探しているトリプル・パターンの観点から述べると
このクエリを試しましたが、動作しません。 Obj1AとObj1B以外のpropAAの他の値を持つインスタンスは無視されません。私が探しているのは、propAAの値としてObj1AとObj1Bを持つインスタンスだけを取得することです。多かれ少なかれ返されるべきではありません。私が与えた例では、ObjA2の値としてObj1AとObj1Bを除いて、propAAの値としてObj1Cもあるので、ObjA2は返されません。 – thisisshantzz
その場合、私はあなたがOPで正しいと思いました。 – scotthenninger