繁体   English   中英

给定一个人的名字,如何查询这个人的维基数据属性?

[英]given a name of a person, how to query wikidata properties about this person?

我在 python 做一个商场项目。 我有一个包含列的表:“作者”、“标题”、“文本”。

我需要的是:对于给定的作者姓名,我想以某种方式获取一个包含以下列的表:“属性”、“值”,其中包含有关来自 Wiki 的属性“职业”和“性别或性别”的信息(行) -数据。

*编辑:表的类型并不重要。 一个 dataframe 会很棒,但其他所有工作的类型都很好!

示例:对于作者姓名 - David David,我想获得下表:

  • 第1行:属性=“职业”; 价值 = 大卫的职业。
  • row2: property = "gender or sex"; 值 = 大卫的性别。

谢谢:-)

好的,所以这是一种方法(我见过)这样做:

使用请求和 json。 例如:如果我想得到唐纳德特朗普的生日、职业和性别,我应该首先导入请求 package,并定义我的 SPARQL 查询。 (可以使用 SPARQL 查询语言查询 WikiData 数据库)

import requests

sparql_query = """
        prefix schema: <http://schema.org/>
        SELECT ?item ?occupation ?genderLabel ?bdayLabel
        WHERE {
            <https://en.wikipedia.org/wiki/Eric_P._Schmitt> schema:about ?item .
            ?item wdt:P106 ?occupation .
            ?item wdt:P21 ?gender .
            ?item wdt:P569 ?bday .
            SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
        }
    """

(不管 Eric P. Schmitt 到底是谁......)然后,我需要使用 request.get 方法提出请求并应用和查询:

url = 'https://query.wikidata.org/sparql'

# sleep(2)
r = requests.get(url, params={'format': 'json', 'query': sparql_query})

最后一步,将结果作为 json 并从其结构中访问所需信息:

url = 'https://query.wikidata.org/sparql'

r = requests.get(url, params={'format': 'json', 'query': sparql_query})
data = r.json()

print(data['results']['bindings'])
>>>> [{'item': {'type': 'uri', 'value': 'http://www.wikidata.org/entity/Q5387230'}, 'genderLabel': {'xml:lang': 'en', 'type': 'literal', 'value': 'male'}, 'bdayLabel': {'type': 'literal', 'value': '1959-11-02T00:00:00Z'}, 'occupation': {'type': 'uri', 'value': 'http://www.wikidata.org/entity/Q1930187'}}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM