1

我是第一次使用 WikiData 和 RDF。我下载了 WikiData 24GB “真实”数据集(仅提供 N-Triples.nt格式),但现在我很难理解它。

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

<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

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

  1. 我也可以得到.json这个文件的转储我的理解是否正确,.nt三元组只是对 JSON 层次结构的深度优先遍历,以将所有数据扁平化为三元组?
4

1 回答 1

1

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

将三元组解析为英语需要使用不同的三元组表示,例如http://wiki.bitplan.com/index.php/SiDIF。大多数 RDF 序列化对人类来说可读性不是很好。https://www.w3.org/TR/turtle/是更易读的之一。https://gbv.github.io/aREF/aREF.html也是一个好主意。RDF 的通用工具链对程序员不太友好。请参阅 JSON-LD 和我为什么讨厌语义网

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

有关该过程的描述,请参见http://wiki.bitplan.com/index.php/Get_your_own_copy_of_WikiData。截至 2020 年 5 月 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". }
}

尝试一下!

此文件是否包含获取 Q24、P27 和 Q30 的英文可读名称所需的信息?还是我必须进行单独的 HTTP API 调用来解决它们? 该文件应包含信息,因为“真实”仅意味着您没有出处数据,而是所有事实数据。使用 WikiData 可能非常麻烦,请参阅http://wiki.bitplan.com/index.php/WikiData。有一些库可以帮助您通过编程语言 API 直接与 WikiData 进行处理。例如https://github.com/Wikidata/Wikidata-Toolkit for Java。有关更全面的列表,请参阅https://www.wikidata.org/wiki/Wikidata:Tools/For_programmers 。

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

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

于 2020-05-11T11:54:22.820 回答