在SPARQL中构造具有未知长度propertyPath的子图
我试图从一个大的数据集(即Wikidata,通过它们的数据库)中提取一个子图。我已经找到了我感兴趣的节点对(使用某个属性),现在我想在SPARQL中构造具有未知长度propertyPath的子图,sparql,wikidata,Sparql,Wikidata,我试图从一个大的数据集(即Wikidata,通过它们的数据库)中提取一个子图。我已经找到了我感兴趣的节点对(使用某个属性),现在我想构造一个新的图,该图将包含这些对,包括一个属性链和节点链,将它们连接在一起(子类链) 所以我有点像: CONSTRUCT { #todo } WHERE { ?s1 ex:p1 ?o1 . ?s2 ex:p2 ?o2 . #OPTIONAL {?s1 rdfs:subClassOf* ?s2.} #something-like }
构造一个新的图,该图将包含这些对,包括一个属性链和节点链,将它们连接在一起(子类链)
所以我有点像:
CONSTRUCT { #todo }
WHERE {
?s1 ex:p1 ?o1 .
?s2 ex:p2 ?o2 .
#OPTIONAL {?s1 rdfs:subClassOf* ?s2.} #something-like
}
虽然,我的实际查询有点复杂,因为我也从同一属性中提取不同的信息(基于其字符串值),但这不会影响问题
现在,我想将rdfs:subassof
的propertyPaths
复制到新的图形中,它连接这些对。所以我想说--
--进入构造{}
部分,但是,当然,语法是不允许的。如果您还需要中间节点,那么这不起作用。即使使用?开始:p+?中间?mid:p*?end.
您将丢失对的信息。顺便说一下,该属性名为rdfs:subassof
@AKSW谢谢您的预期答案…:-/您是对的,我更正了原始问题中的Subassof属性,谢谢。@jmac,您可能可以使用?start:p*?mid1?mid1:p?mid2?mid2:p*?end.
。另外,Wikidata上使用了wdt:P279
,而不是rdfs:subassof
。
?s1 rdfs:subClassOf* ?s2 .