sparql 查询中的空白节点与变量

问题描述 投票:0回答:1

这两个 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 查询中的两个空白节点不需要引用相同的节点,但我认为这在这种情况下不相关。对于这件事你有什么想法吗?

sparql rdf semantic-web virtuoso blank-nodes
1个回答
0
投票

第一个有:

[] :translationOf/a :Work ;
   :language ?language .

第二个有:

?endeavor  :translationOf ?t .
?t a :Work ;
   :language ?language .

:language
部分涉及不同的主题变量。

第一个查询中是

[]
(对应第二个中的
?endeavor
),第二个查询中是
:translationOf
的对象。

© www.soinside.com 2019 - 2024. All rights reserved.