这两个 sparql 查询会在 这个 sparql 端点(瑞典库)中产生不同的返回结果。为什么?我希望它们在功能上是等效的。
PREFIX : <https://id.kb.se/vocab/>
SELECT DISTINCT ?language ?langName {
[] :contribution [ a :PrimaryContribution ;
:role rel:author ;
:agent <https://libris.kb.se/qn247n18248vs58#it> ] ;
:translationOf/a :Work ;
:language ?language .
?language :prefLabel ?langName .
FILTER(lang(?langName) = 'sv')
}
PREFIX : <https://id.kb.se/vocab/>
SELECT DISTINCT ?language ?langName {
?endeavor :contribution ?c .
?c a :PrimaryContribution ;
:role rel:author ;
:agent <https://libris.kb.se/qn247n18248vs58#it>.
?endeavor :translationOf ?t .
?t a :Work ;
:language ?language .
?language :prefLabel ?langName .
FILTER(lang(?langName) = 'sv')
}
我对4.14空白节点的理解是查询中的空白节点充当变量。我已经了解了这个 stackoverflow question 并且我知道 sparql 查询中的两个空白节点不需要引用相同的节点,但我认为这在这种情况下不相关。对于这件事你有什么想法吗?
第一个有:
[] :translationOf/a :Work ;
:language ?language .
第二个有:
?endeavor :translationOf ?t .
?t a :Work ;
:language ?language .
:language
部分涉及不同的主题变量。
第一个查询中是
[]
(对应第二个中的?endeavor
),第二个查询中是:translationOf
的对象。