【发布时间】:2016-07-17 23:11:43
【问题描述】:
假设我有三元组
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 .
现在,我要做的是找到所有只有 propAA 值 Obj1A 和 Obj1B 的实例。基本上,查询应该返回 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。我现在正在寻找的是知道是否有更好的方法来编写这个查询?更好意味着更高效或更简洁(或两者兼而有之)。
【问题讨论】:
标签: sparql rdf linked-data