讓說我有形式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而不是ObjA2,因爲只有ObjA1僅爲propAA獲取值Obj1A和Obj1B。我現在所擁有的是
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。我現在在尋找的是知道是否有更好的方法來編寫這個查詢?更好意味着更高效或更簡潔(或兩者兼而有之)。
我試過這個查詢,但它不起作用。它不會忽略除了Obj1A和Obj1B之外的其他propAA其他值的實例。我正在尋找的只是那些Obj1A和Obj1B作爲propAA的值的實例。任何或多或少的東西都不應該退回。在我給出的例子中,ObjA2不應該被返回,因爲除了Obj1A和Obj1B作爲propAA的值之外,它還具有Obj1C作爲propAA的值。 – thisisshantzz
在這種情況下,我認爲你在OP中是正確的。 – scotthenninger