【发布时间】:2021-12-12 11:09:10
【问题描述】:
给定以下三元组
@prefix ex: <http://example.org/> .
@base <http://example.com/> .
<person1> ex:has_interpretation <interpretation1> .
<interpretation1> ex:refers_to <objectA> ;
ex:resultIn <X> .
<person2> ex:has_interpretation <interpretation2> .
<interpretation2> ex:refers_to <objectA> ;
ex:resultIn <Y> .
<person2> ex:has_interpretation <interpretation3> .
<interpretation3> ex:refers_to <objectB> ;
ex:resultIn <Z> .
<person3> ex:has_interpretation <interpretation4> .
<interpretation3> ex:refers_to <objectA> ;
ex:resultIn <ZZ> .
我正在尝试使用 SPARQL 来:
- 仅计算 person1 和 person2 的解释所引用的对象的数量(交集)
- 计算对象的不同解释次数
- 计算 person1 和 person2 的解释中不引用的对象的数量
- 将上述计数与解释引用的对象列表以及创建解释的人员一起列出。
我在使用 1(因此是 3)时遇到问题,因为我找不到计算解释对象的交集的方法。
我当前的 SPARQL 查询没有得到我想要的:
PREFIX ex: <http://example.org/>
SELECT ?person (COUNT(distinct ?object) as ?c_object) (group_concat(distinct ?interpretation;separator="; ") as ?interpretations)
WHERE {
?person ex:has_interpretation ?interpretation .
?interpretation
ex:refers_to ?object ;
ex:resultIn ?result .
FILTER (?person = <http://example.com/person1> || ?person = <http://example.com/person2> )
}
GROUP BY ?person ?object
我想要的只是:
| object_uri | number_object | interpretations | person_involved |
|---|---|---|---|
<objectA> |
1 | <interpretation1>,<interpretation2> |
<person1>,<person2> |
有什么想法吗?
【问题讨论】:
-
如果您想要每个对象的人员列表,为什么要按
?person分组?另外,number_object的值在这种情况下是否大于 1?