如果一个主题多次出现相同的属性,是否可以检索它们指向的所有对象/值,而不事先指定它们的数字?
这个问题类似于one。
示例数据(取自上面的链接):
@prefix example: <http://example.org/> .
example:subject1 example:property example:object1 .
example:subject1 example:property example:object2 .
example:subject1 example:property example:object3 .
...
可以通过以下方式获得定义数量的对象:
select ?subject ?object1/2/n
where {?subject example:property ?object1, ?object2 .}
filter( ?object1 != ?object2 ).
但是,如果我们事先不知道物业的发生次数怎么办? (除了编程)。谢谢。
答案 0 :(得分:0)
我想,你对Turtle syntax感到有些困惑。
事实上,
SELECT ?object1
WHERE {
?subject example:property ?object1, ?object2 .
FILTER ( ?object1 != ?object2 ).
}
只是一个语法糖:
SELECT ?object1
WHERE {
?subject example:property ?object1 .
?subject example:property ?object2 .
FILTER ( ?object1 != ?object2 ).
}
此模式匹配所有三元组,这三元组仅通过其对象彼此不同 我想,“一个多次出现相同属性的主题”(来自你的问题)意味着“同一主题和同一属性存在不同的对象”。
模式是对称的,即如果:object1
在结果中绑定到?object1
,则:object1
将绑定到另一个结果中的?object2
。对于此模式,是否存在具有不同对象:object3
的任何第三个三元组无关紧要,但如果存在,则:object3
将在另一个结果中绑定到?object1
。
你可以尝试这样的事情来更好地理解:
SELECT DISTINCT ?object1
WHERE {
?subject example:property ?object1 .
FILTER EXISTS {
?subject example:property ?object2 .
FILTER ( ?object1 != ?object2 )
}
}