java - 使用 APACHE JENA 自动检测文件扩展名

标签 java rdf jena

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

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

最佳答案

有一些功能可以使用扩展名来确定语法来处理从文件中的读取:

RDFDataMgr.read(model, fileName);

它还可以处理压缩文件,例如“文件.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

关于java - 使用 APACHE JENA 自动检测文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59682791/

相关文章:

java - 面向对象设计 - 法术

java - 大型数据集的三重存储

java - 耶拿 - 如何将资源链接到属性?

rdf - 使用 SPARQL 和 Jena 检索 OWL 类层次结构中的所有路径

jena - 使用 Jena 在 owl 文件中添加个人

java - 在 Java 中的 JTable 中添加 JCombobox 时出现问题?

java - 如何将http请求发送到另一个servlet

JAVA 机器人输入挪威字符

rdf - 如何从 SPARQL 查询访问土地注册处住宅类型

rdf - 非分层分面 Sparql 查询