Java n-triple RDF解析

我想解析一个n-tripleforms的RDF文件。

我可以编写自己的解析器,但我宁愿使用一个库,Jena似乎为此目的而复杂化(或者至少我看不到他们的文档解释如何以合理的方式读取n-triples)。

你可以请我指出任何有用的图书馆,或者如果你了解芝麻或耶拿,你可能知道如何解决这个问题。

对Jena来说并不是那么困难:

给定一个文件rdfexample.ntriple其中包含N-TRIPLEforms的以下RDF(示例取自此处 ):

   "1988" .   "9.90" .   "CBS Records" .   "UK" .   "Bonnie Tyler" .   "1985" .   "10.90" .   "Columbia" .   "USA" .   "Bob Dylan" . 

以下代码

 public static void main(String[] args) { String fileNameOrUri = "src/a/rdfexample.ntriple"; Model model = ModelFactory.createDefaultModel(); InputStream is = FileManager.get().open(fileNameOrUri); if (is != null) { model.read(is, null, "N-TRIPLE"); model.write(System.out, "TURTLE"); } else { System.err.println("cannot read " + fileNameOrUri);; } } 

读取文件,并以TURTLEforms打印出来:

   "Bonnie Tyler" ;  "CBS Records" ;  "UK" ;  "9.90" ;  "1988" .   "Bob Dylan" ;  "Columbia" ;  "USA" ;  "10.90" ;  "1985" . 

因此,使用Jena,您可以轻松地将RDF(以任何forms)解析为com.hp.hpl.jena.rdf.model.Model对象,该对象允许您以编程方式对其进行操作。

老问题,但是既然你明确询问了不同的库,我想我会展示如何使用Eclipse RDF4J的Rio解析器进行简单的RDF解析(披露:我是RDF4J开发人员之一)。

例如,要解析文件并将所有三元组放在Model ,只需执行以下操作:

 FileInputStream in = new FileInputStream("/path/to/file.nt"); Model m = Rio.parse(in, RDFFormat.NTRIPLES); 

如果要立即将解析器输出打印到stdout(例如以Turtle格式),请执行以下操作:

 FileInputStream in = new FileInputStream("/path/to/file.nt"); RDFParser parser = Rio.createParser(RDFFormat.NTRIPLES); parser.parse(in, "", Rio.createWriter(RDFFormat.TURTLE, System.out)); 

当然,有更多方法可以使用这些基本工具,请查看工具包文档以获取详细信息。

里约解析器可以作为单独的maven工件提供,所以如果你只想使用解析器,而不使用其余的RDF4J工具,你可以这样做。