我编写了一个Java程序,该程序从.csv提取数据,并将这些数据转换为RDFXML。编写此程序时,我使用了sesame's框架,该程序成功完成了编写的工作。

但是,我试图使用jUnit对该程序进行单元测试,并且我需要测试一种将RDF三元组(乌龟格式)转换为RDFXML的方法。为了证明该方法正确工作,我想通过将RDFXML转换回三元组并将它们与传递给该方法的原始三元组进行比较来做到这一点。到目前为止,我还没有在sesame's文档中找到任何实现此目的的方法。有什么建议么?

最佳答案

几分钟前我刚刚解决了这个问题。这是我的解决方案:

@Test
public void testWriteStmtToRDFPos(){
    RDFParser parser = new RDFXMLParser();
    String baseURI = "";
    Model origStmts = new LinkedHashModel();
    Model processedStmts = new LinkedHashModel();
    StatementCollector collector = new StatementCollector(processedStmts);
    parser.setRDFHandler(collector);
    origStmts.add(sexOffend,predicate,object);

    try{

        converter.writeStmtToRDF(origStmts, rdfFile);

        FileReader reader = new FileReader(rdfFile);
        parser.parse(reader, baseURI);
        if(origStmts.equals(processedStmts)){
            assert(true);
        }

    }catch(FileNotFoundException e){
        e.printStackTrace();
        fail();
    }catch(Exception e){
        e.printStackTrace();
        fail();
    }
}


当您为上面的解析器设置收集器时,它只是收集解析器提取的所有语句。完成此操作后,您可以将收集器与origStmts进行比较。这不是立即显而易见的,但是在找到它之后确实很有用!

08-25 14:05