Java 使用ApacheJena查询WikipediaRDF文件(海龟格式)

Java 使用ApacheJena查询WikipediaRDF文件(海龟格式),java,sparql,jena,wikipedia,wikidata,Java,Sparql,Jena,Wikipedia,Wikidata,我正在寻找一种方法来查询以Turtle语法格式化的RDF文件。 RDF文件实际上是由Wikidata提供的整个Wikipedia类别层次结构 以下是文件内容的摘录,显示了数据的全局结构: @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix mediawiki: <https://w

我正在寻找一种方法来查询以Turtle语法格式化的RDF文件。 RDF文件实际上是由Wikidata提供的整个Wikipedia类别层次结构

以下是文件内容的摘录,显示了数据的全局结构:

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix mediawiki: <https://www.mediawiki.org/ontology#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix schema: <http://schema.org/> .
@prefix cc: <http://creativecommons.org/ns#> .

<https://en.wikipedia.org/wiki/Category:1148_establishments_in_France> a mediawiki:Category ;
    rdfs:label "1148 establishments in France" ;
    mediawiki:pages "2"^^xsd:integer ;
    mediawiki:subcategories "0"^^xsd:integer .

<https://en.wikipedia.org/wiki/Category:1148_establishments_in_France> mediawiki:isInCategory <https://en.wikipedia.org/wiki/Category:1140s_establishments_in_France>,
        <https://en.wikipedia.org/wiki/Category:1148_establishments_by_country>,
        <https://en.wikipedia.org/wiki/Category:1148_establishments_in_Europe>,
        <https://en.wikipedia.org/wiki/Category:1148_in_France>,
        <https://en.wikipedia.org/wiki/Category:Establishments_in_France_by_year> .
RDF Turtle文件的大小远远超过850 MB,使用前面显示的代码加载模型会导致内存不足错误。 我需要一种查询RDF文件的方法,而不必在内存中加载完整的RDF数据库

--

有没有办法使用ApacheJena或其他库来实现这一点


如果没有,是否有更快的方法使用本地数据从Wikipedia中的给定类别检索所有父类别?

是的,您可以使用Jena进行查询。这正是耶拿的初衷。但是,我建议您将该文件导入RDF数据存储,然后使用Jena对RDF数据存储执行SPARQL查询


您可能希望看到我对a的回答,因此我在其中提供了一些RDF数据存储的参考。

是的,您可以使用Jena进行查询。这正是耶拿的初衷。但是,我建议您将该文件导入RDF数据存储,然后使用Jena对RDF数据存储执行SPARQL查询


您可能希望看到我对a的回答,因此我在这里提供了一些关于RDF数据存储的参考。

您打算做的事情被称为“更广泛的概念”

它在SKOS中正式化(SKOS:更广泛)。以下是指向文档的链接:

SKO的定义是:

简单知识组织系统(SKOS)是企业的一种常用数据模型 通过网络共享和链接知识组织系统


例如,树木的广义概念是植物。树是松树或橡树的广义概念。。。它在SKOS(SKOS:更广泛)中正式化。

您打算做的事被称为“更广泛的概念”

它在SKOS中正式化(SKOS:更广泛)。以下是指向文档的链接:

SKO的定义是:

简单知识组织系统(SKOS)是企业的一种常用数据模型 通过网络共享和链接知识组织系统


例如,树木的广义概念是植物。树是松树或橡树的广义概念。。。它在SKOS中正式化(SKOS:更广泛)。

当您拥有高效的SPARQL端点时,为什么需要本地存储Wikidata?端点的URL:{SPARQL}这是一个好问题:我构建了一个解析器,成功地从500万篇wikipedia文章中提取了术语,但是创建的数据集太大了。我现在正在寻找一种按父类别选择检索到的数据的方法。例如,如果我选择父类别“Science”,当解析器在一篇文章中找到类别“哺乳动物分类法”时,它应该能够爬回层次结构树以找到根“Science”,并由此推断文章必须被选择。使用API会给每篇文章增加200毫秒的延迟:我不能这样做。@Gilles Antoineys如果你对如何做得更好有任何想法,这会对我有很大帮助,我现在有点卡住了!你打算做的被称为“更广泛的概念”。例如,树木的广义概念是植物。树是松树或橡树的广义概念。。。它在SKOS(SKOS:更广泛)中正式化。问题是我不知道Wikidata是否像DBPedia那样实现SKOS。当您有高效的SPARQL端点时,为什么需要本地存储Wikidata?端点的URL:{SPARQL}这是一个好问题:我构建了一个解析器,成功地从500万篇wikipedia文章中提取了术语,但是创建的数据集太大了。我现在正在寻找一种按父类别选择检索到的数据的方法。例如,如果我选择父类别“Science”,当解析器在一篇文章中找到类别“哺乳动物分类法”时,它应该能够爬回层次结构树以找到根“Science”,并由此推断文章必须被选择。使用API会给每篇文章增加200毫秒的延迟:我不能这样做。@Gilles Antoineys如果你对如何做得更好有任何想法,这会对我有很大帮助,我现在有点卡住了!你打算做的被称为“更广泛的概念”。例如,树木的广义概念是植物。树是松树或橡树的广义概念。。。它在SKOS中正式化(SKOS:更广泛)。问题是我不知道Wikidata是否像DBPedia那样实现了SKOS。我对复制Wikidata的目的感到困惑,因为Wikidata已经通过其SPARQL端点完全开放。拥有一个本地副本可以带来各种好处。也就是说,您可以更好地控制Wikidata中超过5000万页的连接、查询计划访问、特定查询的索引优化等。你需要有一个强大的体系结构。我对复制Wikidata的目的感到困惑,Wikidata已经通过其SPARQL端点很好地打开了。拥有一个本地副本有很多好处。也就是说,您可以更好地控制Wikidata中超过5000万页的连接、查询计划访问、特定查询的索引优化等。你需要有一个强大的架构。
LogCtl.setCmdLogging();
Model model = ModelFactory.createDefaultModel();
model.read("enwiki-categories.ttl");