此SPARQL查询中的星号是什么意思?
SELECT ?uri ?type
WHERE{
?uri a ?type.
?type rdfs:subClassOf* example:Device.
}
这是否表示“子类的子类”?我可以将其与其他谓词一起使用吗?
谓词后的星号表示您要遵循零次或多次出现rdfs:subClassOf的属性路径。
您的短语“子类的子类”是正确的,尽管我会说“子类的子类”,因为*属性路径是递归的。正如您从AKSW注释中的技术文档中可以看到的那样,还有其他几个属性路径运算符可以在两个方向上使用,对出现次数(或深度)进行限制或没有限制。]
这是Marklogic的一个很好的例子……我认为这应该在任何1.1端点内都可以。
https://developer.marklogic.com/features/semantics/path-examples
是的,属性路径适用于任何谓词/属性,而不仅限于rdfs:subClassOf。
路径元素后的星号(*)表示“此元素的零个或多个”。
如果路径中没有其他元素,则?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以获取更详细的答案。