我想找到一种直接检索隐含在 Wikidata 中的语句节点中的三元组(即主语、主要谓词和宾语)的方法。
例如,在维基数据查询服务中,可以查询
SELECT ?subject ?statement ?object
WHERE
{
wd:Q2629845 p:P54 ?statement.
?statement ps:P54 wd:Q631.}
}
即,获取代表马西莫·马拉齐纳 ( ) 为国际米兰 ( ) 效力?statement
的陈述节点的值。在本例中,绑定的对象是.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.
}
where?mainPredicate
为我们提供了语句节点本身中使用的主要谓词。
谢谢!