TL; DR
如何查询(sparql)属性的属性?
或..
因此,作为我项目的一部分,我需要在wikidata中找到具有任何时间限制的属性,具体说明“开始时间”和“结束时间”。
我试过这个问题:
SELECT DISTINCT ?prop WHERE {
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
?person wdt:P31 wd:Q5.
?person ?prop ?statement.
?statement pq:P580 ?starttime.
?statement pq:P582 ?endtime.
}
LIMIT 200
**是的,属性应该与人类有关
无论如何,我确实得到了一些好的结果,如:
http://www.wikidata.org/prop/P26
http://www.wikidata.org/prop/P39
但我也得到一些肯定错误的其他属性。
所以,基本上我要做的是获取具有属性约束(P2302)的属性列表 - 允许限定符约束(Q21510851)以及开始时间(P580)和结束时间(P582) 甚至是可能的: 我尝试了一些查询:
SELECT DISTINCT ?property ?propertyLabel ?propertyDescription ?subpTypeOf ?subpTypeOfLabel
WHERE
{
?property rdf:type wikibase:Property .
?property wdt:P2302 ?subpTypeOf.
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
但没有得到我想要的结果。 甚至可以查询这类东西吗?
由于
答案 0 :(得分:0)
Qualifiers也用于属性页面。您的第二个查询应该是:
SELECT DISTINCT ?prop ?propLabel {
?prop p:P2302 [ ps:P2302 wd:Q21510851 ; pq:P2306 wd:P580, wd:P582 ] ;
p:P2302 [ ps:P2302 wd:Q21503250 ; pq:P2308 wd:Q5 ; pq:P2309 wd:Q21503252 ] .
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
} ORDER BY ASC(xsd:integer(strafter(str(?prop), concat(str(wd:), "P"))))
您的第一个查询是正确的,但请注意,这是一个“原样”查询。例如,wd:P410没有相应的约束,但请查看wd:Q83855。