Sparql 关于DBPedia访问

Sparql 关于DBPedia访问,sparql,jena,dbpedia,Sparql,Jena,Dbpedia,我对DBPedia非常陌生,我不知道如何从哪里开始。我对此做了一些研究,从中我了解到我们可以使用SPARQL查询语言(ApacheJena)访问数据。所以我开始下载.ttl文件。在那之后,我提取了这个文件,它几乎是2GB。我的问题从这里开始,没有一个编辑器无法打开此文件。我访问此文件的示例程序在这里 public class OntologyExample { public static void main(String[] args) { FileManager.get().addLo

我对DBPedia非常陌生,我不知道如何从哪里开始。我对此做了一些研究,从中我了解到我们可以使用SPARQL查询语言(ApacheJena)访问数据。所以我开始下载.ttl文件。在那之后,我提取了这个文件,它几乎是2GB。我的问题从这里开始,没有一个编辑器无法打开此文件。我访问此文件的示例程序在这里

public class OntologyExample {
public static void main(String[] args) {
    FileManager.get().addLocatorClassLoader(
            OntologyExample.class.getClassLoader());
    Model model = FileManager
            .get()
            .loadModel("D:\\Dell XPS\\DBPEDIA\\instance_types_en.ttl\\instance_types_en.ttl");


    String q = "SELECT * WHERE { "
            + "?e <http://dbpedia.org/ontology/series> <http://dbpedia.org/resource/The_Sopranos>  ."
            + "?e <http://dbpedia.org/ontology/releaseDate> ?date"
            + "?e <http://dbpedia.org/ontology/episodeNumber>  ?number   "
            + "?e <http://dbpedia.org/ontology/seasonNumber>   ?season"
            + " }" + "ORDER BY DESC(?date)";

    Query query = QueryFactory.create(q);
    QueryExecution queryExecution = QueryExecutionFactory.create(query,
            model);
    ResultSet resultSet = queryExecution.execSelect();
    ResultSetFormatter.out(System.out, resultSet, query);
    queryExecution.close();
}
}
所以我的问题是

  • 如何访问此类大型文件
  • 如何正确使用DBPedia

  • 所以请帮帮我,我被困在这里了。我正在DBpedia上做一个项目。

    您可以使用Jena的ARQ对DBpedia数据运行SPARQL查询,如果您要进行大量查询和数据处理,下载数据并在本地使用它是很有用的。要做到这一点,尤其是对于像DBpedia这样大的数据,您可能不应该尝试将其加载到内存中的模型中,而是使用TDB和Fuseki来设置SPARQL端点,您可以对其运行查询。这已在中针对不同的数据集进行了讨论

    然而,因为您才刚刚开始,所以使用它可能更容易。在那里,您可以键入SPARQL查询并以各种格式检索结果。你问题中的查询有点格式错误,但很容易清理;下面是已清理和正在工作的查询

    SELECT * WHERE {
        ?e <http://dbpedia.org/ontology/series> <http://dbpedia.org/resource/The_Sopranos>  .
        ?e <http://dbpedia.org/ontology/releaseDate> ?date .
        ?e <http://dbpedia.org/ontology/episodeNumber> ?number .
        ?e <http://dbpedia.org/ontology/seasonNumber> ?season .
    }
    ORDER BY DESC(?date)
    
    选择*WHERE{
    E
    日期。
    ?e?编号。
    ?e?季节。
    }
    按描述订购(?日期)
    

    dbpediawiki实际上有一个关于在线访问DBpedia的完整页面,这将让您了解如何访问数据。wiki上的另一个页面将告诉您更多关于可用数据的信息。

    我正在使用的是一些命令行工具,它们易于使用,比Eclipse快得多。您可以从他们的网站下载最新版本。您可以使用
    tdbloader2
    .ttl
    文件加载到存储中,然后在命令行或Eclipse中使用
    tdbquery
    查询它,就像您现在所做的那样:

    Dataset-Dataset=TDBFactory.createDataset(“路径”);
    Query=QueryFactory.create(“选择*WHERE{”
    +“?e。”
    +“?e?日期。”
    +“?e?编号。”
    +“e?季节。”
    +“}”+“按描述的顺序(?日期)”);
    QueryExecution qexec=QueryExecutionFactory.create(查询,数据集);
    ResultSet results=qexec.execSelect();
    
    据我所知,您应该在每个SPARQL三元组之后创建一个
    ,只有最后一个是可选的。 可能是命令行工具耗尽了堆空间。只需使用文本编辑器打开
    tdbloader2
    tdbquery
    应用程序,并将
    -Xmx
    标记更改为您喜欢的大小,例如:

    JVM_ARGS=${JVM_ARGS:--Xmx4096M}
    

    还要确保按照链接中的说明设置
    JENAROOT

    是否检查了查询的语法是否正确?例如,通过DBPedia在或提供的公共SPARQL点进行尝试?除此之外,您似乎正在尝试查询元数据,而不是DBpedia数据本身(其中包含有关电视剧的信息;我认为DBpedia数据要比2GB大得多)。
    SELECT * WHERE {
        ?e <http://dbpedia.org/ontology/series> <http://dbpedia.org/resource/The_Sopranos>  .
        ?e <http://dbpedia.org/ontology/releaseDate> ?date .
        ?e <http://dbpedia.org/ontology/episodeNumber> ?number .
        ?e <http://dbpedia.org/ontology/seasonNumber> ?season .
    }
    ORDER BY DESC(?date)
    
    JVM_ARGS=${JVM_ARGS:--Xmx4096M}