javan-triplerdf解析

javan-triplerdf解析,java,parsing,rdf,n-triples,Java,Parsing,Rdf,N Triples,我想解析一个RDF文件,它是n-triple格式的 我可以编写自己的解析器,但我更愿意使用库,而Jena在这方面似乎非常复杂(或者至少我看不到他们的文档以合理的方式解释如何读取n-triples) 请你给我指出一些有用的库,或者如果你熟悉Sesame或Jena,你可能知道他们如何解决这个问题。如果你只想解析NTriples,不需要做基本处理和查询以外的任何事情,那么你可以试试。这是一段非常简单的Java代码,它将传递任何NTriples格式(例如nqADS等),这将为您提供文件中语句的迭代器。如

我想解析一个RDF文件,它是n-triple格式的

我可以编写自己的解析器,但我更愿意使用库,而Jena在这方面似乎非常复杂(或者至少我看不到他们的文档以合理的方式解释如何读取n-triples)


请你给我指出一些有用的库,或者如果你熟悉Sesame或Jena,你可能知道他们如何解决这个问题。

如果你只想解析NTriples,不需要做基本处理和查询以外的任何事情,那么你可以试试。这是一段非常简单的Java代码,它将传递任何NTriples格式(例如nqADS等),这将为您提供文件中语句的迭代器。如果只需要NTriples,则可以轻松忽略包含少于/多于3项的语句

调整链接页面上的示例将得到以下简单代码:

NxParser nxp = new NxParser(new FileInputStream("filetoparse.nq"),false);

while (nxp.hasNext()) 
{
  Node[] ns = nxp.next();
  if (ns.length == 3)
  {
    //Only Process Triples  
    //Replace the print statements with whatever you want
    for (Node n: ns) 
    {
      System.out.print(n.toN3());
      System.out.print(" ");
    }
    System.out.println(".");
  }
}

对于耶拿来说,这并不难:

给定一个文件
rdfexample.ntriple
,其中包含以下N-TRIPLE形式的RDF(示例取自):

读取该文件,并以海龟格式打印出来:

<http://www.recshop.fake/cd/Hide your heart>
      <http://www.recshop.fake/cd#artist>
              "Bonnie Tyler" ;
      <http://www.recshop.fake/cd#company>
              "CBS Records" ;
      <http://www.recshop.fake/cd#country>
              "UK" ;
      <http://www.recshop.fake/cd#price>
              "9.90" ;
      <http://www.recshop.fake/cd#year>
              "1988" .

<http://www.recshop.fake/cd/Empire Burlesque>
      <http://www.recshop.fake/cd#artist>
              "Bob Dylan" ;
      <http://www.recshop.fake/cd#company>
              "Columbia" ;
      <http://www.recshop.fake/cd#country>
              "USA" ;
      <http://www.recshop.fake/cd#price>
              "10.90" ;
      <http://www.recshop.fake/cd#year>
              "1985" .

“邦妮·泰勒”;
“哥伦比亚广播公司唱片”;
“英国”;
"9.90" ;
"1988" .
“鲍勃·迪伦”;
“哥伦比亚”;
“美国”;
"10.90" ;
"1985" .

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

这是一个老问题,但由于您明确询问了不同的库,我认为我应该展示如何使用的进行简单的RDF解析(披露:我是RDF4J开发人员之一)

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

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));
当然,还有更多的方法可以使用这些基本工具,请查看工具包文档以了解详细信息


顺便说一句,Rio解析器作为单独的maven工件提供,因此如果您希望只使用解析器,而不使用其余的RDF4J工具,您可以这样做

感谢MarcoS,更改格式的功能在将来可能会派上用场。指向NxParser库的链接似乎不起作用。图书馆的新位置在哪里?
FileInputStream in = new FileInputStream("/path/to/file.nt");

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

RDFParser parser = Rio.createParser(RDFFormat.NTRIPLES);
parser.parse(in, "", Rio.createWriter(RDFFormat.TURTLE, System.out));