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