有没有一种方法可以直接从Wikidata语句节点恢复主题和谓词参数?

时间:2019-01-29 17:20:52

标签: sparql rdf mediawiki-api wikidata

我想找到一种直接方法来检索隐含在Wikidata中的语句节点中的三元组(即主语,主谓语和宾语)。

例如,在Wikidata查询服务中,可以查询

SELECT ?subject ?statement ?object
WHERE 
{
 wd:Q2629845 p:P54 ?statement.
 ?statement ps:P54 wd:Q631.}
}

,即,为我获取?statement的值,该值代表Massimo Marazzina(wd:Q2629845)为国际米兰(wd:Q631)效力的语句节点。在此示例中,对?statement的绑定为wds:q2629845-C6C57DFC-1340-4373-8B24-FB718AA8A949

此语句中隐含的主语,主谓语和宾语(即三元组<wd:Q2629845 wdt:P54 wd:Q631>)均可从语句节点本身恢复。恢复语句节点似乎中编码的参数是wikibase服务所针对的一种东西,因此我想有一些谓词可以直接用于 查询这些参数。

一个人可以通过查询来重建在语句节点中编码的三元组<wd:Q2629845 wdt:P54 wd:Q631>

SELECT ?subject ?directPredicate ?object
WHERE 
{
 ?subject ?predicate wds:q2629845-C6C57DFC-1340-4373-8B24-FB718AA8A949.
 ?predicate (^wikibase:claim)/wikibase:directClaim ?directPredicate.
 ?predicate (^wikibase:claim)/wikibase:statementProperty ?statementProperty.
 wds:q2629845-C6C57DFC-1340-4373-8B24-FB718AA8A949 ?statementProperty ?object.
}

但是,这是一个相当复杂的过程,涉及到在谓词位置使用开放变量进行查询(我想避免这种情况)。

理想情况下,解决方案将类似于wikibase谓词(称为“ wikibase:mainPredicate”),给定一个语句节点STATEMENT,该查询将允许查询

SELECT ?mainPredicate
WHERE
{
  STATEMENT wikibase:mainPredicate ?mainPredicate.
}

其中?mainPredicate为我们提供了语句节点本身中使用的主要谓词。

谢谢!

0 个答案:

没有答案