如何在 rdf4j 中解析一个大的 rdf 文件
How to parse a big rdf file in rdf4j
我想使用以下代码在 RDF4J 中解析一个大文件,但由于解析器限制我得到一个异常;
public class ConvertOntology {
public static void main(String[] args) throws RDFParseException, RDFHandlerException, IOException {
String file = "swetodblp_april_2008.rdf";
File initialFile = new File(file);
InputStream input = new FileInputStream(initialFile);
RDFParser parser = Rio.createParser(RDFFormat.RDFXML);
parser.setPreserveBNodeIDs(true);
Model model = new LinkedHashModel();
parser.setRDFHandler(new StatementCollector(model));
parser.parse(input, initialFile.getAbsolutePath());
FileOutputStream out = new FileOutputStream("swetodblp_april_2008.nt");
RDFWriter writer = Rio.createWriter(RDFFormat.TURTLE, out);
try {
writer.startRDF();
for (Statement st: model) {
writer.handleStatement(st);
}
writer.endRDF();
}
catch (RDFHandlerException e) {
}
finally {
out.close();
}
}
解析器在此文档中遇到超过“100,000”个实体扩展;这是应用程序施加的限制。
我按照 RDF4J 网站上的建议执行我的代码以设置两个参数(如以下命令所示)
mvn -Djdk.xml.totalEntitySizeLimit=0 -DentityExpansionLimit=0 exec:java
请帮忙
错误是由于 Apache Xerces XML 解析器造成的,而不是默认的 JDK XML 解析器造成的。
所以只需从 .m2 存储库中删除 Xerces XML 文件夹,代码就可以正常工作。
我想使用以下代码在 RDF4J 中解析一个大文件,但由于解析器限制我得到一个异常;
public class ConvertOntology {
public static void main(String[] args) throws RDFParseException, RDFHandlerException, IOException {
String file = "swetodblp_april_2008.rdf";
File initialFile = new File(file);
InputStream input = new FileInputStream(initialFile);
RDFParser parser = Rio.createParser(RDFFormat.RDFXML);
parser.setPreserveBNodeIDs(true);
Model model = new LinkedHashModel();
parser.setRDFHandler(new StatementCollector(model));
parser.parse(input, initialFile.getAbsolutePath());
FileOutputStream out = new FileOutputStream("swetodblp_april_2008.nt");
RDFWriter writer = Rio.createWriter(RDFFormat.TURTLE, out);
try {
writer.startRDF();
for (Statement st: model) {
writer.handleStatement(st);
}
writer.endRDF();
}
catch (RDFHandlerException e) {
}
finally {
out.close();
}
}
解析器在此文档中遇到超过“100,000”个实体扩展;这是应用程序施加的限制。
我按照 RDF4J 网站上的建议执行我的代码以设置两个参数(如以下命令所示)
mvn -Djdk.xml.totalEntitySizeLimit=0 -DentityExpansionLimit=0 exec:java
请帮忙
错误是由于 Apache Xerces XML 解析器造成的,而不是默认的 JDK XML 解析器造成的。 所以只需从 .m2 存储库中删除 Xerces XML 文件夹,代码就可以正常工作。