我的问题是我如何提取所有属性以及各自的标签,这些标签也是在wikidata网页上呈现的,最好是通过SPARQL.
以wikidata上的Google条目为例.对于物业P414(证券交易所)或P159,有像P969(位于街道地址)的子属性.一旦您查询 wbgetentities为qualifieres,它们就会显示出来.问题wbgetentities是缺少标签.我wdt:P17 => country => United States of America使用以下SPARQL查询获得所需的输出(例如):
SELECT ?prop_id ?prop_label ?prop_val_label WHERE {
VALUES (?company) {
(wd:Q95)
}
?company ?prop_id ?company_item.
?wd wikibase:directClaim ?prop_id.
?wd rdfs:label ?prop_label.
OPTIONAL {
?company_item rdfs:label ?prop_val.
FILTER((LANG(?prop_val)) = "en")
}
BIND(COALESCE(?prop_val, ?companyItem) AS ?prop_val_label)
FILTER((LANG(?prop_label)) = "en")
}
Run Code Online (Sandbox Code Playgroud)
但这些"子属性"缺失,因为它们不是直接索赔.要提取单个语句限定符,我可以这样做:
SELECT ?company ?hq ?country WHERE {
wd:Q95 p:P159 ?company.
OPTIONAL {
?company ps:P159 ?hq.
?company pq:P17 ?country.
}
}
Run Code Online (Sandbox Code Playgroud)
但问题是,是否有办法将所有内容组合到一个查询中?
使用以下代码可以从维基数据中的实体中提取数据:
import requests
API_ENDPOINT = "https://www.wikidata.org/w/api.php"
query = "wikipedia"
params = {
'action': 'wbsearchentities',
'format': 'json',
'language': 'en',
'search': query
}
r = requests.get(API_ENDPOINT, params = params)
print(r.json()['search'][0])
Run Code Online (Sandbox Code Playgroud)
输出是:
{'repository': '', 'id': 'Q52', 'concepturi': 'http://www.wikidata.org/entity/Q52', 'title': 'Q52', 'pageid': 170, 'url': '//www.wikidata.org/wiki/Q52', 'label': 'Wikipedia', 'description': 'free online encyclopedia that anyone can edit', 'match': {'type': 'label', 'language': 'en', 'text': 'Wikipedia'}}
Run Code Online (Sandbox Code Playgroud)
但是访问concepturi'http ://www.wikidata.org/entity/Q52我看到的信息比json文件中报告的信息更多,特别是我对座右铭文本字段感兴趣。
我如何从维基数据获取更多信息?(这是一个可以显示更多信息的示例,其中查询输出的信息少于维基数据中包含的信息)。
我正在使用Wikidata查询服务(https://query.wikidata.org)获得有关电影和电视节目的详细信息。
我知道我可以查询属于电影实例的所有项目的类型(在下面查询),但是我只想查找特定的电影。
SELECT ?item ?itemLabel ?genreLabel
WHERE
{
?item wdt:P31 wd:Q11424 .
OPTIONAL {
?item wdt:P136 ?genre
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
} LIMIT 10
Run Code Online (Sandbox Code Playgroud)
我有电影的Wikidata项目编号(Q ###)的列表,电视节目我想获取其属性。我需要查询这些特定的电影或电视节目。例如,如果我知道Wikidata中的《星球大战第四集:新希望》是Q17738,那么如何查询其特定属性?