gpt4 book ai didi

sparql - 关于 DBPedia 访问

转载 作者:行者123 更新时间:2023-12-02 01:59:00 24 4
gpt4 key购买 nike

我对 DBPedia 非常陌生,我不知道如何开始以及从哪里开始。我对此做了一些研究,据我了解,我们可以使用 SPARQL 查询语言 (Apache Jena) 访问数据。所以我开始下载Ontology Infobox Properties的.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();
}
}

所以这个程序的输入是那个 2GB 文件。所以我只是运行这个示例程序,它抛出异常,例如

Exception in thread "main" com.hp.hpl.jena.n3.turtle.TurtleParseException: GC overhead limit exceeded
at com.hp.hpl.jena.n3.turtle.ParserTurtle.parse(ParserTurtle.java:63)
at com.hp.hpl.jena.n3.turtle.TurtleReader.readWorker(TurtleReader.java:33)
at com.hp.hpl.jena.n3.JenaReaderBase.readImpl(JenaReaderBase.java:119)
at com.hp.hpl.jena.n3.JenaReaderBase.read(JenaReaderBase.java:84)
at com.hp.hpl.jena.rdf.model.impl.ModelCom.read(ModelCom.java:268)
at com.hp.hpl.jena.util.FileManager.readModelWorker(FileManager.java:403)
at com.hp.hpl.jena.util.FileManager.loadModelWorker(FileManager.java:306)
at com.hp.hpl.jena.util.FileManager.loadModel(FileManager.java:258)
at jena.tutorial.OntologyExample.main(OntologyExample.java:18)

Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.Arrays.copyOfRange(Unknown Source)
at java.lang.String.<init>(Unknown Source)
at org.apache.jena.iri.impl.LexerPath.yytext(LexerPath.java:420)
at org.apache.jena.iri.impl.AbsLexer.rule(AbsLexer.java:81)
at org.apache.jena.iri.impl.LexerPath.yylex(LexerPath.java:711)
at org.apache.jena.iri.impl.AbsLexer.analyse(AbsLexer.java:52)
at org.apache.jena.iri.impl.Parser.<init>(Parser.java:108)
at org.apache.jena.iri.impl.IRIImpl.<init>(IRIImpl.java:65)
at org.apache.jena.iri.impl.AbsIRIImpl.create(AbsIRIImpl.java:692)
at org.apache.jena.iri.IRI.resolve(IRI.java:432)
at com.hp.hpl.jena.n3.IRIResolver.resolve(IRIResolver.java:167)
at com.hp.hpl.jena.n3.turtle.ParserBase._resolveIRI(ParserBase.java:198)
at com.hp.hpl.jena.n3.turtle.ParserBase.resolveIRI(ParserBase.java:192)
at com.hp.hpl.jena.n3.turtle.ParserBase.resolveQuotedIRI(ParserBase.java:183)
at com.hp.hpl.jena.n3.turtle.parser.TurtleParser.IRI_REF(TurtleParser.java:737)
at com.hp.hpl.jena.n3.turtle.parser.TurtleParser.IRIref(TurtleParser.java:680)
at com.hp.hpl.jena.n3.turtle.parser.TurtleParser.GraphTerm(TurtleParser.java:496)
at com.hp.hpl.jena.n3.turtle.parser.TurtleParser.VarOrTerm(TurtleParser.java:420)
at com.hp.hpl.jena.n3.turtle.parser.TurtleParser.TriplesSameSubject(TurtleParser.java:150)
at com.hp.hpl.jena.n3.turtle.parser.TurtleParser.Statement(TurtleParser.java:97)
at com.hp.hpl.jena.n3.turtle.parser.TurtleParser.parse(TurtleParser.java:67)
at com.hp.hpl.jena.n3.turtle.ParserTurtle.parse(ParserTurtle.java:49)
... 8 more

我正在从 Eclipse 中运行此代码,以下是我的 Eclipse .ini 首选项。

org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
512M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms1024m
-Xmx2048m

所以我的问题是

  1. 如何访问这种大文件。
  2. 如何正确使用 DBPedia。

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

最佳答案

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

但是,由于您才刚刚开始,因此使用 public DBpedia SPARQL endpoint 可能会更容易。您可以在其中输入 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)

SPARQL results

DBpedia wiki 实际上有一整页关于在线访问 DBpedia Accessing the DBpedia Data Set over the Web ,这将使您了解如何访问数据。维基上的另一个页面,The DBpedia Data Set将告诉您有关可用数据的更多信息。

关于sparql - 关于 DBPedia 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14712092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com