我想找到一种直接方法来检索隐含在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
为我们提供了语句节点本身中使用的主要谓词。
谢谢!