是否有rdf数据/其他格式允许我获取类别中可能存在的所有属性,例如那个人,那么我应该归还性别,出生日期等属性
如何在https://query.wikidata.org/查询此信息?
我想要的是https://www.wikidata.org/wiki/Wikidata:List_of_properties/Summary_table 但是有更好的格式吗?我想以编程方式访问
更新
此查询太重,导致超时。
SELECT ?p ?attName WHERE {
?q wdt:P31 wd:Q5.
?q ?p ?statement.
?realAtt wikibase:claim ?p.
?realAtt rdfs:label ?attName.
FILTER(((LANG(?attName)) = "en") || ((LANG(?attName)) = ""))
}
GROUP BY ?p ?attName
我必须指定实体,例如然后巴拉克奥巴马工作,但这并没有给我所有可能的属性。
SELECT ?p ?attName WHERE {
BIND(wd:Q76 AS ?q)
?q wdt:P31 wd:Q5.
?q ?p ?statement.
?realAtt wikibase:claim ?p.
?realAtt rdfs:label ?attName.
FILTER(((LANG(?attName)) = "en") || ((LANG(?attName)) = ""))
}
GROUP BY ?p ?attName
答案 0 :(得分:2)
<强> 1 强>
您链接的页面由机器人创建。如果您需要了解机器人的工作原理,请联系BetaBot运营商。
<强> 2 强>
也许机器人依赖于wd:P1963
属性:
SELECT ?property ?propertyLabel {
VALUES (?class) {(wd:Q5)}
?class wdt:P1963 ?property
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
} ORDER BY ASC(xsd:integer(strafter(str(?property), concat(str(wd:), "P"))))
以上查询returns 49结果。
第3 强>
我建议您依赖属性页中的类型约束:
SELECT ?property ?propertyLabel {
VALUES (?class) {(wd:Q5)}
?property a wikibase:Property .
?property p:P2302 [ ps:P2302 wd:Q21503250 ;
pq:P2309 wd:Q21503252 ;
pq:P2308 ?class ] .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
} ORDER BY ASC(xsd:integer(strafter(str(?property), concat(str(wd:), "P"))))
以上查询returns 700结果。
<强> 4 强>
您问题中的第一个查询适用于相对较小的类,例如: G。 wd:Q6256
('国家/地区')。在公共端点上,无法使查询适用于大型类。
但是,您可以将查询拆分为小部分。在Python中:
from wdqs import Client
from time import sleep
client = Client()
result = client.query("SELECT (count(?p) AS ?c) {?p a wikibase:Property}")
count = int(result[0]["c"])
offset = 0
limit = 50
possible = []
while offset <= count:
props = client.query("""
SELECT ?property WHERE {
hint:Query hint:optimizer "None" .
{
SELECT ?property {
?property a wikibase:Property .
} ORDER BY ?property OFFSET %s LIMIT %s
}
?property wikibase:directClaim ?wdt.
FILTER EXISTS {
?human ?wdt [] ; wdt:P31 wd:Q5 .
hint:Group hint:maxParallel 501 .
}
hint:Query hint:filterExists "SubQueryLimitOne" .
# SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
""" % (offset, limit))
for prop in props:
possible.append(prop['property'])
offset += limit
print (len(possible), min(offset, count))
sleep(0.25)
输出is的最后一行:
2156 5154