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

java中的文件/本体(turtle、N3、JSON、RDF-XML)等到.ttl文件的转换,java,file,rdf,converters,turtle-rdf,Java,File,Rdf,Converters,Turtle Rdf,我想问一下,在Java中是否有一种方法可以读入基本上任何文件格式(N3、JSON、RDF-XML)等,然后将其转换为turtle(.ttl)。我在谷歌上搜索了一些想法,但他们主要是解释特定的文件类型,以及如何将文件类型转换为RDF,而我想用另一种方式 编辑(按照答案中给出的代码示例): 我已将“eclipse-rdf4j-3.0.3-onejar.jar”添加到NetBeans中的Libraries文件夹中,现在当我运行该程序时,我不断收到以下错误: 线程“AWT-EventQueue-0”ja

我想问一下,在Java中是否有一种方法可以读入基本上任何文件格式(N3、JSON、RDF-XML)等,然后将其转换为turtle(.ttl)。我在谷歌上搜索了一些想法,但他们主要是解释特定的文件类型,以及如何将文件类型转换为RDF,而我想用另一种方式

编辑(按照答案中给出的代码示例):

我已将“eclipse-rdf4j-3.0.3-onejar.jar”添加到NetBeans中的Libraries文件夹中,现在当我运行该程序时,我不断收到以下错误:

线程“AWT-EventQueue-0”java.lang.NoClassDefFoundError中出现异常:org/slf4j/LoggerFactory 位于org.eclipse.rdf4j.common.lang.service.ServiceRegistry。(ServiceRegistry.java:31)


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

是的,这是可能的。一种选择是为此目的使用,或者更具体地说,使用其

下面是一个使用RDF4J Rio的代码示例。它根据文件扩展名检测输入文件的语法格式,并以以下语法将数据直接写入新文件:

//输入文件
java.net.URL URL=新URL(“http://example.org/example.rdf”);
//猜测输入文件的格式(默认为RDF/XML)
RDFFormat inputFormat=Rio.getParserFormatForFileName(url.toString()).orElse(RDFFormat.RDFXML);
//为输入文件创建一个解析器,为海龟格式创建一个编写器
RDFParser RDFParser=Rio.createParser(inputFormat);
RDFWriter RDFWriter=Rio.createWriter(RDFFormat.TURTLE,
新的FileOutputStream(“/path/to/example output.ttl”);
//将解析器链接到编写器
rdfParser.setRDFHandler(rdfWriter);
//开始转换
试试(InputStream InputStream=url.openStream()){
parse(inputStream,url.toString());
}
捕获(IOException | RDFParseException | RDFHandlerException){…}
有关更多示例,请参见

编辑您的
NoClassDefFoundError
:您的类路径上缺少必要的第三方库(在本例中,是日志库)

与其使用onejar,不如使用Maven(或Gradle)来设置项目。请参阅注释,或者参阅(本教程使用Eclipse而不是Netbeans,但是关于如何在Netbeans中设置maven项目的要点非常相似)以获得更详细的分步指南


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

另一个选择是使用。

@JeenBroekstra好的,我明白了。但也许下载页面上的提示可以避免混淆。人们还需要知道哪些第三方JAR必须添加到类路径中。并不是说我曾经建议现在不要使用Maven或Gradle…@AKSW文档中提到了这一点,但你是对的,下载页面上没有立即清楚这一点。另外:见
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);
 }
}