2011-03-25 2 views
2

저는 Jena을 처음 사용하기 때문에 다음과 같은 문제가 있습니다. 는 기본적으로 나는 예를 들어, 중첩 된 요소를 갖는 RDF를 만들어야합니다 Jena를 사용하여 RDF 파일에 중첩 태그 만들기

<rdf:description about="http://www.acme.com"> 
    <dc:country> 
     <dc:capital>London</dc:capital> 
     <dc:language>English</dc:language> 
    <dc:country> 
</rdf:description> 

어쩌면이 사소한, 그러나 나는 그렇게 할 수 없습니다. 나는 몇 가지 튜토리얼을 읽었지만 이런 종류의 요소에 대한 예제는 존재하지 않았다. 일부 출력 파일을 생성 할 수있는 Java에서 실제 예제를 제공 할 수 있습니까?

미리 감사드립니다.

답변

3

출력을 어떻게 생성하는지는 알 수 없지만 가장 일반적인 이유는 기본 출력 형식 RDF/XML을 사용하고 있다는 것입니다. 대신, 당신은

yourModel.write(outStream, "RDF/XML-ABBREV"); 

를 호출 할 경우 당신은 당신의 예에 따라 중첩 된 요소를 대부분 포함됩니다 좀 더 컴팩트 한 구조를 얻을 것이다.

그러나 '단'이 있습니다.

왜 "중첩 된 요소가있는 RDF를 만들어야하는지"에 대해서는 말하지 않습니다. Jena에 의해 생성 된 모든 출력은 RDF 트리플 레벨에서 의미 상으로 동일합니다. 순응하는 RDF 프로세서는 RDF/XML, 축약 형, 거북이 형, n-triples 형 등의 직렬화 된 모델을 구문 분석하여 동일한 모델을 생성합니다. 따라서 출력을 다른 RDF 프로세스로 넘기는 경우 출력물에 중첩 구조가 있는지 여부.

그러나 출력을 XML 도구 체인에 공급하려면 더 어려울 수 있습니다. RDF XML 인코딩은 악명 높게 복잡합니다. 게다가, Jena XML 작가는 특정 순서로 엘리먼트를 직렬화한다고 보장하지 않는다. Model의 내용에 따라 작성하는 XML 구조가 매우 다르게 나타날 수 있습니다. 예를 들어, XSLT 스타일 시트 작성이 까다로울 수 있습니다.

RDF XML을 XML 툴체인으로 파이프 할 계획이라면 XML 도구가 신뢰할 수있는 형식으로 신뢰할 수있는 출력을 생성하는 사용자 정의 작성기를 만들거나 SPARQL을 사용하여 모델을 쿼리하고 XML을 사용하는 것이 좋습니다 XML 파이프 라인에 대한 입력으로 SPARQL 결과 집합의 인코딩. SPARQL의 XML encoding은 완전한 RDF/XML보다 규칙적이며 후속 XML 처리를위한 더 나은 기반을 제공합니다.

+0

(+1) 위대한 설명 이안. 추가 설명 인 Lorenzo에서 Jena로 RDF를 작성하는 방법을 배우려면 http://jena.sourceforge.net/tutorial/RDF_API/index.html#ch-Writing%20RDF를 초기 포인터로 사용하는 것이 좋습니다. –