以下是我拥有的数据集:
:project#1 :hasRevision :revision#1
:revision#1 :hasRevisionNumber 1
:project#1 :hasRevision :revision#2
:revision#2 :hasRevisionNumber 2
:project#1 :hasRevision :revision#3
:revision#3 :hasRevisionNumber 3
:revision#1 :committed :A1
:A1 :hasId 1
:revision#2 :committed :A2
:A2 :hasId 2
:revision#3 :reverted :A1
用例:
需要获取每个修订版中提交的属性。
- 如果用户要求:revision#1
,A1
应退回。
- 如果用户要求:revision#2
,A1
并且A2
应该被退回。
- 如果用户要求,:revision#3
只A2
应按原样A1
返回:reverted
。:revision#3
我能想出的最接近的查询在下面,它不起作用:
select ?attribute ?id WHERE {
:project1 :hasRevision ?revision .
?revision :hasRevisionNumber ?revNum ;
:committed ?attribute .
?attribute :hasId ?id .
FILTER NOT EXISTS { ?revision :reverted ?attribute }
FILTER ( ( ?revNum <= 3 && ?revNum > 0 ) && ?id in (1,2) )
}
实际输出:
A1 & A2
预期输出:
A2
我明白这个问题。无法提出正确的查询。你们中的任何人都可以帮忙吗?
提前致谢。