当前位置: 首页 > 知识库问答 >
问题:

文件/本体(turtle、N3、JSON、RDF-XML)等。java中的ttl文件转换

廖绍辉
2023-03-14

我想问Java中是否有一种方法可以读取,基本上是任何文件格式(N3,JSON,RDF-XML)等,然后将其转换为海龟(. ttl)。我在谷歌上搜索了一些想法,但他们主要只是解释特定的文件类型以及如何将文件类型转换为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中的Libraries文件夹中,现在当我运行该程序时,我不断收到以下错误:

异常线程"AWT-EventQueue-0"java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory在org.eclipse.rdf4j.common.lang.service.Service注册表。(服务egistry.java:31)

任何帮助或建议都将不胜感激。非常感谢。

共有2个答案

闻枫
2023-03-14

另一种选择是使用ApacheJena。

沈弘盛
2023-03-14

是的,这是可能的。一种选择是为此目的使用EclipseRDF4J,或者更具体地说,使用其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而不是Netbean,但是关于如何设置maven项目的要点在Netbean中非常相似)。

如果你真的不想使用Maven,你也可以下载RDF4JSDK,这是一个ZIP文件。解压缩它,只需将lib/目录中的所有jar文件添加到Netbeans。

 类似资料:
  • 目前有许多用于RDF文件类型转换的工具。R中的RDF2RDF、EasyRDF和rrdf具有一些转换功能。然而,这些转换工具中没有一个包括将. nq文件转换为其他文件类型(. nt、. ttl、. rdf、. xml等)。 我知道N-QUAD是一个N-TRIPLE文件,只有第4列,是图形的IRI;但是,在从转换时,还有许多其他注意事项需要更改。nq至。新界。 最终,我想将我的. nq文件转换为. t

  • 我已经试过几种不同的方法了。 > 使用Apache Jena 这似乎是目前“最好的”工作。我最终得到一个包含JSON-LD数据的字符串,它是一个树状表示。但是类关系是颠倒的: 我注意到JSON-LD有一个所谓的“框架”特性,它基本上允许您将数据重新放入定义的框架中。 我将JSON-LD的关键字与结合起来进行了修改,希望从本质上颠倒关系。但是,我也不能让它起作用,而且我对JSON-LD也不是很有经验

  • 不检测OWLAPI5库中turtle格式(.ttl文件扩展名)的本体。 在下面的代码中,ontologyIRIs变量不包含任何文件扩展名为.ttl的本体。它只包含.owl本体。

  • 问题内容: 我需要帮助来理解使用java将XML文件转换为CSV文件所涉及的步骤。这是XML文件的示例 这是生成的CSV文件。 我当时正在考虑使用DOM解析器读取xml文件。我遇到的问题是,我需要按名称指定要编码的特定元素,但我希望它能够解析它而不这样做。 Java中是否有任何工具或库可以帮助我实现这一目标。 如果我下面有这种格式的XML文件,并且想在与MSgId相同的行中添加InitgPty的值

  • 问题内容: 我有一个巨大的XML文件(15 GB)。我想将XML文件中的“文本”标签转换为单个页面。 样本XML文件: 我最初使用DOM解析器,但它使JAVA OUT OF MEMORY(Valid)不足。现在,我已经使用STAX编写了JAVA代码。它运作良好,但是性能确实很慢。 这是我编写的代码: 这段代码运行良好。(忽略任何小错误)。根据我的理解,XMLStreamConstants.CHAR

  • 我需要从XML文件中生成一个HTML文件,以便在默认的android浏览器中打开它。(JavaAndroid Studio)。程序应该获得任何通用的XML文件。 请协助。TNX!