gpt4 book ai didi

rdf - 获取 rdf :list using SPARQL 的计数

转载 作者:行者123 更新时间:2023-12-04 11:56:57 24 4
gpt4 key购买 nike

这是获取 rdf:list 中项目数的正确/最佳 SPARQL 查询:

选择 (COUNT(?a) AS ?count)
哪里{?a http://www.w3.org/1999/02/22-rdf-syntax-ns#first ?C}

在此先感谢您的帮助。

问候,
拉胡尔

最佳答案

有趣的问题,因为它看起来很简单,但很难正确表达查询。 William Greenly's answer没有提供您想要的内容,尽管他的解释完全正确并且正确使用了 property path .为了能够正确地提出正确的查询来回答您的问题,必须假设所有列表都是格式良好的(它们只有一个第一个元素,一个其余元素,并以 nil 结尾)。

您查询中的问题是它将计算数据集中所有列表的所有成员。你需要一些东西来关联 rdf:first仅到一个列表的元素。

如果您有一个 URI 标识您感兴趣的列表,您可以执行以下操作:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>  
PREFIX ex: <http://www.example.org/#>
SELECT (COUNT(?member) AS ?count)
WHERE {
ex:uriOfTheList rdf:rest*/rdf:first ?member
}

但通常,列表不是由 URI 标识的。在这种情况下,可以使用其他属性来识别某些列表。例如,假设您有一个 ex:listOfAuthors属性(property),你可以这样做:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX ex: <http://www.example.org/#>
SELECT (COUNT(?member) AS ?count)
WHERE {
ex:publication ex:listOfAuthors ?list .
?list rdf:rest*/rdf:first ?member .
}

请注意,如果您只是这样做:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT (COUNT(?member) AS ?count)
WHERE {
?list rdf:rest*/rdf:first ?member .
}

您将所有列表的大小相加 和子列表 .
现在,如果您没有可以附加列表的谓词,并且您没有 URI,并且您可能想要获取每个列表的所有列表的计数,那么事情会变得复杂。有一种方法应该有效:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT (COUNT(?c) AS ?count)
WHERE {
?thing !rdf:rest ?list .
?list rdf:rest*/rdf:first ?member .
}

这就是说我们想要找到连接到列表的东西,但不是谓词 rdf:rest .原则上,如果实体不是列表本身并且谓词不是 rdf:rest,则只有列表的开头通过谓词连接到某个其他实体。 .此外,列表通常总是以某种方式连接到其他实体,因为独立于其他任何东西来描述列表是没有意义的。

关于rdf - 获取 rdf :list using SPARQL 的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9770807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com