Преобразование файлов / онтологий (черепаха, N3, JSON, RDF-XML) и т. Д. В файлы .ttl в java

Я хотел спросить, есть ли в Java способ чтения, в основном любой формат файла (N3, JSON, RDF-XML) и т. Д., А затем преобразовать его в черепаху (.ttl). Я искал в Google, чтобы получить некоторое представление, но они в основном просто объясняют определенные типы файлов и то, как тип файла может быть преобразован в RDF, тогда как я хочу, чтобы это было наоборот.

ИЗМЕНИТЬ (следуя примеру кода, приведенному в ответе):

if(FilePath.getText().equals("")){
FilePath.setText("Cannot be empty");

}else{

try {
    // get the inputFile from file chooser and setting a text field with
    // the path (FilePath is the variable name fo the textField in which the 
    // path to the selected file from file chooser is done earlier)
    FileInputStream fis = new FileInputStream(FilePath.getText());
    // guess the format of the input file (default set to RDF/XML)
    // when clicking on the error I get take to this line.
    RDFFormat inputFormat = Rio.getParserFormatForFileName(fis.toString()).orElse(RDFFormat.RDFXML);
    //create a parser for the input file and a writer for Turtle
    RDFParser rdfParser = Rio.createParser(inputFormat);
    RDFWriter rdfWriter = Rio.createWriter(RDFFormat.TURTLE, 
            new FileOutputStream("./" + fileName + ".ttl"));

    //link parser to the writer
    rdfParser.setRDFHandler(rdfWriter);
    //start the conversion
    InputStream inputStream = fis;
    rdfParser.parse(inputStream, fis.toString());

    //exception handling
} catch (FileNotFoundException ex) {
    Logger.getLogger(FileConverter.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
    Logger.getLogger(FileConverter.class.getName()).log(Level.SEVERE, null, ex);
 }
}

Я добавил «eclipse-rdf4j-3.0.3-onejar.jar» в папку «Библиотеки» в NetBeans, и теперь, когда я запускаю программу, я продолжаю получать эту ошибку:

Исключение в потоке «AWT-EventQueue-0» java.lang.NoClassDefFoundError: org / slf4j / LoggerFactory в org.eclipse.rdf4j.common.lang.service.ServiceRegistry. (ServiceRegistry.java:31)

Любая помощь или совет будут очень признательны. Спасибо.


person Pratham Patel    schedule 28.12.2019    source источник


Ответы (2)


Да, это возможно. Один из вариантов - использовать для этой цели Eclipse RDF4J или, более конкретно, его Инструментарий синтаксического анализатора / писателя Rio.

Вот пример кода с использованием RDF4J Rio. Он определяет формат синтаксиса входного файла на основе расширения файла и напрямую записывает данные в новый файл в синтаксисе Turtle:

// the input file
java.net.URL url = new URL(“http://example.org/example.rdf”);

// guess the format of the input file (default to RDF/XML)
RDFFormat inputFormat = Rio.getParserFormatForFileName(url.toString()).orElse(RDFFormat.RDFXML);

// create a parser for the input file and a writer for Turtle format
RDFParser rdfParser = Rio.createParser(inputFormat);
RDFWriter rdfWriter = Rio.createWriter(RDFFormat.TURTLE,
               new FileOutputStream("/path/to/example-output.ttl"));

// link the parser to the writer
rdfParser.setRDFHandler(rdfWriter);

// start the conversion
try(InputStream inputStream = url.openStream()) {
   rdfParser.parse(inputStream, url.toString());
}
catch (IOException | RDFParseException | RDFHandlerException e) { ... }

Дополнительные примеры см. В документации RDF4J.

изменить Что касается вашего NoClassDefFoundError: вам не хватает необходимой сторонней библиотеки в вашем пути к классам (в данном конкретном случае библиотеки журналов).

Вместо использования onejar, вероятно, лучше использовать Maven (или Gradle) для настройки вашего проекта. См. Примечания к настройке среды разработки или более подробные инструкции см. В этот учебник (в учебном руководстве используется Eclipse, а не Netbeans, но пункты о том, как настроить ваш проект maven будет очень похож на Netbeans).

Если вы действительно не хотите использовать Maven, вы также можете просто загрузить RDF4J SDK, который представляет собой ZIP-файл. Распакуйте его и просто добавьте все файлы jar из каталога lib/ в Netbeans.

person Jeen Broekstra    schedule 29.12.2019
comment
@JeenBroekstra, хорошо, понятно. Но, возможно, подсказка на странице загрузки поможет избежать путаницы. Людям также необходимо знать, какие сторонние JAR-файлы необходимо добавить в путь к классам. Не то чтобы я когда-либо предлагал не использовать Maven или Gradle в настоящее время ... - person UninformedUser; 30.12.2019
comment
@AKSW это упоминается в документации, но вы правы, что это не сразу видно со страницы загрузки. Также: см. github.com/eclipse/rdf4j/issues/1791. - person Jeen Broekstra; 30.12.2019

Другой вариант - использовать Apache Jena.

person hoijui    schedule 22.02.2020