如何使用Wikidata SPARQL查询服务访问子属性?

如何使用Wikidata SPARQL查询服务访问子属性?,sparql,wikidata,Sparql,Wikidata,我想访问wikidata实体的子属性。例如,对于诸如的实体,属性可以是的子级。如何在SPARQL查询中动态执行此操作 使用在线提供的查询生成器,我可以构造一个简单的,适用于普通属性(在链接的示例中:体量),但不适用于所需的子属性(在链接的示例中:健康危害的NPFA代码),这些子属性最终为空,即使它们在。旁注:这是一个与第一段不同的例子 所需的目标是动态查询,如下所示: SELECT ?p ?item ?itemDescription ?prop ?value ?valueLabel ?itemL

我想访问wikidata实体的子属性。例如,对于诸如的实体,属性可以是的子级。如何在SPARQL查询中动态执行此操作

使用在线提供的查询生成器,我可以构造一个简单的,适用于普通属性(在链接的示例中:体量),但不适用于所需的子属性(在链接的示例中:健康危害的NPFA代码),这些子属性最终为空,即使它们在。旁注:这是一个与第一段不同的例子

所需的目标是动态查询,如下所示:

SELECT ?p ?item ?itemDescription ?prop ?value ?valueLabel ?itemLabel ?itemAltLabel ?propLabel WHERE {
  BIND(wd:Q138809 AS ?item)
  ?prop wikibase:directClaim ?p.
  #?item ?p ?value.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en".
    ?value rdfs:label ?valueLabel.
    ?prop rdfs:label ?propLabel.
    ?item rdfs:label ?itemLabel;
      skos:altLabel ?itemAltLabel;
      schema:description ?itemDescription.
  }
}
ORDER BY DESC(?prop)
LIMIT 10
使用第4行作为注释,我可以根据需要获得propLabel,但没有值;以另一种方式使用行而不是注释,我只得到属性,这些属性设置在第一级,但没有子属性。

多亏了,我在此发布了解决我问题的最终查询:

SELECT ?item ?itemLabel ?itemDescription ?itemAltLabel ?prop ?propertyLabel ?propertyValue ?propertyValueLabel ?qualifier ?qualifierLabel ?qualifierValue 
        { 
            VALUES (?item) {(wd:Q138809)}
            ?item ?prop ?statement . 
            ?statement ?ps ?propertyValue . 
            ?property wikibase:claim ?prop . 
            ?property wikibase:statementProperty ?ps . 
            OPTIONAL { ?statement ?pq ?qualifierValue . ?qualifier wikibase:qualifier ?pq . } 
            SERVICE wikibase:label { bd:serviceParam wikibase:language "en" } 
}

对我来说,关键的一步是理解子属性实际上是被调用的。

不确定你到底在问什么,但你所谓的“子属性”在Wikidata上下文中被称为语句限定符。不确定“动态”的确切含义,但获取项目的所有限定符将是
SELECT?item?itemsdescription?itemLabel?itemAltLabel?限定符属性?值,其中{BIND(wd:Q138809 AS?item)SERVICE wikibase:label{bd:serviceparm wikibase:language“[AUTO_language],en”。}?项目p:P4952?stmt。?stmt ps:P4952?安全。?stmt?限定符属性?值}限制50
感谢您的评论,很抱歉问题不清楚。我所说的“子属性”实际上可能是指限定符。所谓“动态”,我的意思是我可以选择它们而不知道它们的id,就像–在问题中–代码对“普通”属性所做的那样。我的注释中的查询返回所有限定符而不知道它们。这不是你想要的吗?它需要p:P4952的知识,但是是的,它朝着正确的方向发展,谢谢!我想我可以把你的和我的合并起来,找到想要的答案,或者你也可以,这样我就可以接受这个答案了。谢谢你的帮助!啊,现在我明白了-你基本上希望它适用于一个实体的所有属性。您还需要属性的标签,这使得它更复杂一些。这可能会起作用:
SELECT?propertyLabel?propertyValueLabel?qualifierLabel?qualifierValueLabel{VALUES(?item){(wd:Q138809)}?item?p?语句?ps?propertyValue。?属性wikibase:claim?p?属性wikibase:statementProperty?ps.可选{?语句?pq?限定符值。?限定符wikibase:限定符?pq.}服务wikibase:标签{bd:serviceParam wikibase:语言“en”}