Автоматическое определение расширения файла с APACHE JENA - PullRequest
0 голосов
/ 10 января 2020

Я хочу преобразовать любое расширение файла в .ttl (TURTLE), и мне нужно использовать Apache Jena, я знаю, как это можно сделать с помощью RDFJ4, но вывод не такой точный, как при использовании Jena , Я хочу знать, как я могу автоматически определить расширение или, скорее, тип файла, если я не знаю расширение при чтении файла из каталога. Это мой код, когда я жестко кодирую имя файла, он работает, мне просто нужна помощь в автоматическом определении типа файла. Мой код выглядит следующим образом:

public class Converter {

public static void main(String[] args) throws FileNotFoundException {

    String fileName = "./abc.rdf";
    Model model = ModelFactory.createDefaultModel();

    //I know this is how it is done with RDF4J but I need to use Apache Jena.
/* RDFParser rdfParser = Rio.createParser(Rio.getWriterFormatForFileName(fileName).orElse(RDFFormat.RDFXML));
       RDFWriter rdfWriter = Rio.createWriter(RDFFormat.TURTLE,
               new FileOutputStream("./"+stripExtension(fileName)+".ttl"));*/

    InputStream is = FileManager.get().open(fileName);
    if (is != null) {
        model.read(is, null, "RDF/XML");
        model.write(new FileOutputStream("./converted.ttl"), "TURTLE");

    } else {
        System.err.println("cannot read " + fileName);
    }
  }
}

Любая помощь и советы будут высоко оценены.

1 Ответ

1 голос
/ 10 января 2020

Существует функция, которая обрабатывает чтение из файла с использованием расширения для определения синтаксиса:

RDFDataMgr.read(model, fileName);

Также обрабатывает сжатые файлы, например, "file.ttl.gz".

Там это реестр языков:

RDFLanguages.fileExtToLang(...)
RDFLanguages.filenameToLang(...)

Для получения дополнительной информации см. RDFParser:

RDFParser.create().
  source(FileName)
  ... many options including forcing the language ...
  .parse(model);

https://jena.apache.org/documentation/io/rdf-input.html

...