星号在此SPARQL查询中是什么意思?

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

此SPARQL查询中的星号是什么意思?

SELECT ?uri ?type
WHERE{
    ?uri a ?type.
    ?type rdfs:subClassOf* example:Device.
}

这是否表示“子类的子类”?我可以将其与其他谓词一起使用吗?

sparql semantic-web owl ontology triplestore
2个回答
2
投票

谓词后的星号表示您要遵循零次或多次出现rdfs:subClassOf的属性路径。

您的短语“子类的子类”是正确的,尽管我会说“子类的子类”,因为*属性路径是递归的。正如您从AKSW注释中的技术文档中可以看到的那样,还有其他几个属性路径运算符可以在两个方向上使用,对出现次数(或深度)进行限制或没有限制。]

这是Marklogic的一个很好的例子……我认为这应该在任何1.1端点内都可以。

https://developer.marklogic.com/features/semantics/path-examples

是的,属性路径适用于任何谓词/属性,而不仅限于rdfs:subClassOf。


2
投票

路径元素后的星号(*)表示“此元素的零个或多个”。

如果路径中没有其他元素,则?a something* ?b表示?b也可能只是直接为?a,而它们之间根本没有路径元素。

?item wdt:P31/wdt:P279* ?class.
# means:
?item wdt:P31 ?class
# or
?item wdt:P31/wdt:P279 ?class
# or
?item wdt:P31/wdt:P279/wdt:P279 ?class
# or
?item wdt:P31/wdt:P279/wdt:P279/wdt:P279 ?class

请参阅here以获取更详细的答案。

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