如何查询最大开源知识图谱Wikidata的信息?

摘要:Wikidata是一个大型结构化开源知识图,为维基百科等项目提供支持。我们可使用SPARQL(Wikidata官方Tutorial)对其进行查询。SPARQL是一种专为 RDF(Resource Description Framework)
Wikidata是一个大型结构化开源知识图,为维基百科等项目提供支持。我们可使用SPARQL(Wikidata官方Tutorial)对其进行查询。SPARQL是一种专为 RDF(Resource Description Framework)数据模型设计的查询语言。RDF通过三元组(主语subject,谓词predicate,宾语object)来组织数据。我们可在WDQS (WikiData Query Service)中使用SPARQL对Wikidata进行在线查询。 Wikidata介绍 实体和属性   Wikidata中最基本概念为实体(Entity)和属性(Property)。由于语义多样性,每个实体和属性都会以字母加数字的形式进行唯一化,实体以Q为前缀,属性以P为前缀,如Q148(China),P31 (Instance of)。实体和属性分别构成了整个Wikidata知识图的节点和边。需注意的是,属性并不一定为知识图中连接两个实体的一条边。这种情况十分常见,如P1082 (Population) 用于表明实体(如某个国家)的人口数量,将直接对应一个数字(非实体)。此外,属性不一定只对应一个值,由于人口会随时间不断变化,因此P1082 (Population) 通常会有多个对应不同时间戳的值。 数据结构   由于在线查询受制于网速,可在WikidataDumps下载Wikidata的数据备份。如下载entities/latest-all.json.bz2,即可将整个Wikidata的知识图数据下载至一个json文件中(压缩文件约100GB,解压文件超过1TB)。json文件包含一个列表,列表中每个元素为一个字典,每个字典包含如下字段: type:类型,实体item或属性property。大部分是实体item,还有property。 id:唯一标识符。 labels:多语言标签,即名称。 descriptions:多语言描述。 aliases:多语言别名。 claims:声明,包含属性及其对应的值。构建知识图最重要的字段。 sitelinks:在其他维基项目中的链接,如中文wiki、法文wiki等。 pageid:在维基百科等站点中的页面 ID。 ns:所在的命名空间 (namespace)。条目通常在 0 命名空间,而用户页面在 2 命名空间。 title:标题。 lastrevid:最后一次修改的版本 ID。 modified:最后修改时间。   其中,声明claims的字典结构较为复杂,以属性标识符P[...]为键。每个键对应一个列表,存放相应的多条属性内容。属性内容字典结构如下: mainsnak:主体部分,包含属性和属性值 snaktype:mainsnak 的类型。常见有:value表示有有效的属性值;novalue表示没有值;somevalue表示值未知或不确定。 property:属性的ID(例如:P31)。 datatype:值的数据类型,通常是 wikibase-item(指向另一个实体)或 quantity(表示数量)。 datavalue:属性的值,可能是不同的数据类型,如实体、时间、量化数据等。 value:属性值,对于不同类型结构不同(如对于wikibase-entityid类型,值为字典,包含实体id)。 type:值的类型,常见的类型有: wikibase-entityid:表示实体(Item 或 Property)类型。value为字典,包含key: entity-type, id, numeric-id。entity-type为实体类型,通常为"item";id为实体id,如"Q3247091";numeric-id为实体id对应的数字,如3247091。 string/math:string和math都为字符串类型(例如:文本类型的描述、数学公式等),value为一个字符串,其中math的value通常为latex公式。 quantity:表示量化数据。value为字典,包含key: amount, unit。amount为数值本身,如"+894123","-1811";unit为数值单位,如"1"对应数值最小刻度,"https://www.wikidata.org/wiki/Q25267"对应摄氏度。 time:表示时间。value为字典,包含key: time, timezone, before, after, precision, calendarmodel。
阅读全文