具有APACHE JENA的自动检测文件扩展名

问题描述 投票:0回答:1

我想将任何文件扩展名转换为.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);
    }
  }
}

将非常感谢所有帮助和建议。

java rdf jena
1个回答
0
投票

[具有使用扩展名来处理文件读取以确定语法的功能:

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

© www.soinside.com 2019 - 2024. All rights reserved.