2014-10-31 4 views
0

.csv의 데이터를 인제 스트 (ingests)하는 Java 프로그램을 작성하여 해당 데이터를 RDFXML로 변환합니다. 나는이 프로그램을 작성할 때 sesame's 프레임 워크를 사용했고, 프로그램은 그것이 작성된 것을 성공적으로 처리한다.rdfxml을 거북이 세 개로 변환

그러나이 프로그램은 jUnit을 사용하여 단위 테스트를하고 RDF 트리플 (터틀 형식)을 RDFXML로 변환하는 메서드를 테스트해야합니다. 메서드가 제대로 작동하는지 확인하려면 RDFXML을 다시 트리플로 변환하고 메서드에 전달 된 원래의 트리플과 비교하여이 작업을 수행하고 싶습니다. 지금까지 아무 것도 발견하지 못했습니다 sesame's 설명서가이 작업을 수행합니다. 어떤 제안?

+0

RDF/XML이 아닌 TTL로 데이터를 쓰고 싶습니까? RDF/XML (코드, 제발 :)에서 데이터를 어떻게 써야합니까?) –

+0

나는 실제로 그것을 알아 냈다. TTL에서 다시 작성할 필요가 없다는 것이 밝혀졌습니다. 방금 RDFXML 파서로 RDFXML 파일을 구문 분석 할 필요가 있었으며 문제없이 문을 처리합니다. 아래에 내 솔루션을 게시합니다. – DivDiff

+0

나중에 참조 할 수 있도록 Sesame의 Rio 파서/작성기 툴킷은 문서화되어 있습니다 (http://rdf4j.org/sesame/2.7/docs/users.docbook?view#Parsing_and_Writing_RDF_with_Rio). 실제로 한 형식에서 다른 형식으로 변환하는 방법을 보여주는 코드 예제가 포함되어 있습니다. –

답변

1

몇 분 전에 문제가 해결되었습니다. 여기 내 해결책이 있습니다 :

@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와 비교할 수 있습니다. 이것은 즉시 명백하지는 않았지만 그것을 찾은 후에 정말 유용합니다!

+0

잘 작동하지만 팁으로 다음과 같이하면 더 짧고 편리하게 처리 할 수 ​​있습니다 :'Model processedStmts = Rio.parse (reader, baseURI, RDFFormat.RDFXML);' –

+0

두 개의 RDF 모델을 비교하는'Model.equals'는 항상 예상되는 결과를 제공하지는 않을 것입니다 : RDF 모델에 공백 노드가 포함되어있는 경우 모델이 본질적으로 동일 함에도 불구하고 실패합니다. 대신 [ModelUtil.equals] (http://rdf4j.org/sesame/2.7/apidocs/index.html?org/openrdf/model/util/ModelUtil.html)을 사용해야합니다. –