Как разобрать большой rdf файл в rdf4j - PullRequest
0 голосов
/ 24 января 2020

Я хочу проанализировать огромный файл в 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

любая помощь, пожалуйста

1 Ответ

0 голосов
/ 02 февраля 2020

Ошибка связана с синтаксическим анализатором Apache Xerces XML, а не с анализатором JDK XML по умолчанию. Так что просто удалите папку Xerces XML из вашего хранилища .m2, и код работает нормально.

...