RDF4j .ttl文件过滤器IF语句

时间:2019-03-17 13:45:20

标签: java rdf ttl rdf4j

我在编译期间遇到问题。您能帮忙解决问题吗?

`

public static void main(String[] args) throws IOException {

    File dir = new File("C:data\\test");

    String[] fileNames = dir.list();
    FileWriter outFile = new FileWriter("out.ttl");

    RDFWriter writer = org.eclipse.rdf4j.rio.Rio.createWriter(RDFFormat.TURTLE, outFile );

        writer.startRDF();
    for (String fileName : fileNames) {
        System.out.println("Reading from " + fileName);

        File f = new File(dir, fileName);

        Model data = Rio.parse(new FileInputStream(f), "", RDFFormat.TURTLE);
        for (Statement st: data) {
            if ( "efrbroo:F22_Self-Contained_Expression" != null ) { 
                        writer.handleStatement(st);
            }

        }
    }

    writer.endRDF();

}

`

这个问题的最初问题是在这里:RDF4J data merge

1 个答案:

答案 0 :(得分:0)

您正在遍历Statement对象,这些对象是RDF语句或“三元组”的Java表示形式。它有一个主语(可通过Statement.getSubject()获得),一个谓词(Statement.getPredicate())和一个宾语(Statement.getObject())。有关更详细的介绍,请参见http://docs.rdf4j.org/rdf-tutorial/

例如,如果您要删除所有以IRI http://example.org/F22_Self-Contained_Expression为对象的三元组,则可以执行以下操作:

 IRI f22SelfContainedExpression = SimpleValueFactory.getInstance().createIRI("http://example.org/F22_Self-Contained_Expression"); 

 ... 

 if (!st.getObject().equals(f22SelfContainedExpression)) {
      writer.handleStatement(st);
 }