2010-01-09 2 views
1

XMI에서 Java로 작성된 OWL (XML/RDF 직렬화)로 변환해야하므로 본질적으로 XML에서 XML 로의 변환이며, 아마도 정규 표현식을 사용하여 replaceAll을 사용할 수 있습니다. ,하지만 그렇게하는 것이 매우 지저분 해 보입니다. 나중에 쉽게 사용자 정의 할 수 있도록 (OWL 모델이 약간 변경 될 수 있습니다) 향후 제안 할 내용은 무엇입니까?XML에서 XML 로의 XML 번역

내 생각은 XMI를 생성 된 클래스 계층 구조 (내 OWL 모델에 따라)로 읽은 다음 일부 템플릿 엔진을 사용하여 OWL (XML)로 출력하는 것이 었습니다. 쉽게 사용자 정의 할 수있는 쉬운 방법을 알고 있습니까?

답변

4

XSL Transformations 그것이 zvon reference와 튜토리얼을 살펴 가지고, XSLT와 함께 시작하려면

:-) 그것을 위해 설계된 사실, 작업의 종류에 적합합니다.

2

XSLT를 사용하여 XML을 XML로 변환 할 수 있습니다.

OReilly 문서는 시작하기 좋은 장소입니다.

0

XSLT가 작업 도구 인 rsp와 cb160에 동의합니다.

UNIX 플랫폼을 사용하는 경우 xsltproc을 사용하면 명령 줄에서 변형을 테스트 할 수 있습니다. 제 경험으로 볼 때 실제로 XSL을 사용하지 않는다면 개발 시간을 단축시킬 수 있습니다.

1

XMI는 OWL로 직접 변환에 대한 아주 좋은 포맷되지 않습니다 - 나는 강력 2 차원을 사용하여 조언 - (@stereotype="foo", stereotype/@name="foo"stereotype/@xmi:id="{id of the foo stereotype}" 모두 같은 의미) 같은 의미를 가지고 XMI 많은 다른 구조가 XMI는 먼저 그러한 참조가 해석되고 OWL에 매핑하지 않으려는 모든 정보가 제거 된 표준 형식으로 변환됩니다.

익숙하지 않은 경우 XSLT key function and element이 유용 할 것입니다. XSLT1에서이 작업을 수행 할 수 있지만 (다른 작업이 없을 때 수행 했음) Saxon과 같은 XSLT2 프로세서로 작업하면 변환이 훨씬 간결 해집니다. XSLT 질문을하는 가장 좋은 장소는 Mulberry list입니다.

GUI를 통해이 작업을 수행 한 도구가 sourceforge에 있었지만 찾을 수없는 것 같습니다. 내 중간 변형은 이전 고용주가 소유합니다. 코드 생성 또는 XMI to XML의 경우 XSLT를 직접 사용하고 2 단계 접근 방식을 사용합니다.

0

XSLT는 XML 노드의 트리를 처리하기 위해 설계되었습니다. XML 노드 (RDF/XML 및 RDF/XML-Abbrev)의 "트리"인 RDF 직렬화가 있지만 기본 RDF 데이터 모델은 그래프입니다.

결과 RDF 그래프가 tree가 아닌 경우 참조를 트래버스하기 위해 XSLT에서 더러운 작업을 수행해야하며 성능/유지 보수성/정당성이 저하 될 수 있습니다. OWL 형식을 수정 한 다음 다시 RDF가 아닌 XML로 변환하려는 경우이 점을 알아 두십시오. 당신이 가장 기본적인 RDF/XML 양식을 사용하는 경우

다시 비 RDF의 XML로 변환에
## Foo has two types 
@prefix e: <uri://example#>. 
e:Foo a e:Bar. 
e:Foo a e:Baz. # Second statement about e:Foo 

, 당신이 바로 아래에 RDF 문장의 목록을 얻을 것이다 다음과 같이

간단한 (트리) 예입니다 최상위 수준은 rdf:RDF입니다. 이것들을 변환하는 것은 반복적으로 문장의 전체 목록을 검색하는 것을 포함 할 수있다.

<rdf:RDF xmlns:e="uri://example#" 
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> 
    <rdf:Description rdf:about="uri://example#Foo"> 
    <rdf:type rdf:resource="uri://example#Baz"/> 
    </rdf:Description> 
    <rdf:Description rdf:about="uri://example#Foo"> 
    <rdf:type rdf:resource="uri://example#Bar"/> 
    </rdf:Description> 
</rdf:RDF> 

당신은 읽기 쉽게 RDF/XML-약칭 형식을 찾을 수 있지만,이 (당신의 XSLT에 있지만 호환되지 않는) RDF 데이터 모델은 정렬되지 않은이며, 하나의 그래프는 많은 동등한를 가질 수 있기 때문에 XSLT로 처리하는 것은 쉽지 않다 XML 양식. 위의 예는 다음 중 하나로서 직렬화 할 수 있습니다

<!-- Bar is the containing element --> 
<rdf:RDF xmlns:e="uri://example#" 
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> 
    <e:Bar rdf:about="uri://example#Foo"> 
    <rdf:type rdf:resource="uri://example#Baz"/> 
    </e:Bar> 
</rdf:RDF> 

<!-- Baz is the containing element --> 
<rdf:RDF xmlns:e="uri://example#" 
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> 
    <e:Baz rdf:about="uri://example#Foo"> 
    <rdf:type rdf:resource="uri://example#Bar"/> 
    </e:Bar> 
</rdf:RDF> 

쓰기있는 XSLT에서 직렬화 의지 보좌관을위한 표준 양식을 작성 피트 Kirkham의 제안. 대부분의 경우 RDF 라이브러리는 매번 똑같은 입력이 주어지면 매번 같은 형식으로 문장을 직렬화 할 것이지만, RDF 그래프의 데이터가 순서가 정해지지 않기 때문에 결국에는 의존하지 않을 것입니다.