解析 Wikidata n-triples 数据

Parsing Wikidata n-triples data

我是第一次使用 WikiData 和 RDF。我下载了 WikiData 24GB "truthy" dataset(仅提供 N-Triples .nt 格式),但现在我很难理解它。

以下是 .nt 文件中与 Jack Bauer 相关的一些行,显示(主语、谓语、宾语)三元组:

<http://www.wikidata.org/entity/Q24> <http://schema.org/description> "protagonista della serie televisiva americana ''24''"@it .

<http://www.wikidata.org/entity/Q24> <http://schema.org/name> "Jack Bauer"@en .

<http://www.wikidata.org/entity/Q24> <http://www.wikidata.org/prop/direct/P27> <http://www.wikidata.org/entity/Q30> .

<http://www.wikidata.org/entity/Q24> <http://www.wikidata.org/prop/direct/P451> <http://www.wikidata.org/entity/Q284262> .

所以我的问题是:

  1. 是否可以从这个巨大的文件中将三元组的所有 URI 解析为英语,还是我必须进行 API 调用? 例如,我想解析这个三元组:
<http://www.wikidata.org/entity/Q24> <http://www.wikidata.org/prop/direct/P27> <http://www.wikidata.org/entity/Q30> .

转换为人类可读的英语形式,如下所示:

Jack Bauer, country of citizenship, United States of America

此文件是否包含获取 Q24P27Q30 的英文可读名称所需的信息?或者我是否必须进行单独的 HTTP API 调用来解决它们?

  1. 我也可以得到一个.json dump of this file我的理解是否正确 .nt 三元组只是 JSON 层次结构的深度优先遍历 以将所有数据展平为三元组?

是否可以从这个巨大的文件中将三元组的所有 URI 解析为英语,还是我必须进行 API 调用?

将三元组解析为英语需要对三元组进行不同的表示,例如 http://wiki.bitplan.com/index.php/SiDIF. Most RDF serializations are not very well readable for humans. https://www.w3.org/TR/turtle/ being one of the more readable ones. https://gbv.github.io/aREF/aREF.html 也是一个好主意。 RDF 的通用工具链对程序员来说不是那么友好。看 JSON-LD and Why I Hate the Semantic Web

您可能希望将三元组导入 SPARQL 存储,然后为其使用查询前端。那会大大简化你的生活。这就是您可能一直在想的那种 "API"。

有关过程的说明,请参阅 http://wiki.bitplan.com/index.php/Get_your_own_copy_of_WikiData。截至 2020-05-11 我是导入到 Apache Jena。

https://query.wikidata.org/ 查询前端可能更易于用于简单查询。请在下面找到代表您找到的三元组的查询。

# WikiData statements about Jack Bauer
SELECT ?pLabel ?oLabel 
WHERE 
{
  wd:Q24 ?p ?o.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}

try it!

此文件是否包含获取 Q24、P27 和 Q30 的英文可读名称所需的信息?或者我是否必须进行单独的 HTTP API 调用来解决它们? 该文件应包含信息,因为 "truthy" 仅表示您没有出处数据,而是所有事实数据。使用 WikiData 可能会非常麻烦,请参阅 http://wiki.bitplan.com/index.php/WikiData. There are libraries out there that will help you deal via a programming languages API with WikiData directly. E.g. https://github.com/Wikidata/Wikidata-Toolkit for Java. See https://www.wikidata.org/wiki/Wikidata:Tools/For_programmers 以获得更全面的列表。

我还可以获得此文件的 .json 转储。我的理解是否正确,.nt 三元组只是 JSON 层次结构的深度优先遍历,以将所有数据展平为三元组?

三元组的内容应该是一样的。我不确定 json 转储中三元组的顺序是什么。坏消息是仅导入一部分转储是不够的,因为您会丢失 link 信息。