[Knowledge Graph] 2. From XML to RDF (XML에서 RDF로)

이 글은 2021년 대학원 수업 지식 표현 연구를 중심으로 작성된 포스트이다. 수업시간에 이해한 내용을 복습하는 차원에서 적는 글이니 언제든 댓글은 환영한다🙌

  • 지식 표현 연구 시리즈
  1. What is RDF? RDF란 무엇인가?
  2. 🤚 From XML to RDF (XML에서 RDF로)
  3. RDF Schema
  4. SPARQL
  5. RDFa란?

이 포스팅은 2003년 Roger L. Costello, David B. Jacobs(The MITRE Corporation)의 XML Design Tutorial을 한글로 번역한 것입니다. 정확한 번역은 아니니 참고하시되, 정확한 내용은 원문을 참고해주세요.

1. RDF의 목적이란?

  • RDF의 목적은 무엇인가를 설명하는 데이터를 명시하는 standard한 방식을 제공하기 위한 것이다.
  • 아래 XML 문서는 중국의 양쯔강에 대한 데이터를 구체적으로 명시하고 있다.

아래 XML 문서는 양쯔강에 대한 데이터이다. 6300 킬로미터의 길이를 가지고, 양쯔강이 시작되는 위치(startingLocation)는 서부 중국의 Qinghai-Tibet 고원이며, 끝나는 위치(endingLocation)는 동쪽 중국해라는 것을 명시하고 있다.

👇 XML에서 RDF로

2. RDF Format

  • <River rdf:ID="Yangtze": RDF는 자원(resource)가 기술될 수 있도록 확인하는 ID 특성(attribute)를 제공한다. 또한 River의 인스턴스(instance)를 의미한다.

  • xmls:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#": RDF의 namespace 안에 ID의 특성이 존재한다.

  • xmls="http://www.geodesy.org/river#": #을 부여함으로써 “fragment identifier symbol”을 namespace에 추가한다.

  • <length>6300 kilometers</length>: 태그는 properties ro attirubutes를 의미하며, 태그 속의 내용은 value이다.

따라서 최종적인 RDF Format은 아래와 같다.

3. Namespace Convention

Question.
왜 “#”이 namespace의 끝에 놓일까? E.g., xmls="http://www.geodesy.org/river#"

Answer.
RDF는 유일하게 things를 정의하는 것이 중요하다 - 유일한 유형(type), 유일한 속성처럼 말이다.1 만약 namespaceunique identifier 타입을 연관시키고 싶다면, 아래와 같이 unique identifier 타입을 설정할 수 있다.

http://www.geodesy.org/river#River

만약 namespace에 속성을 연관시키고 싶다면, 아래와 같이 속성에 대한 unique identifier를 얻을 수 있다.

http://www.geodesy.org/river#length
http://www.geodesy.org/river#startingLocation
http://www.geodesy.org/river#endingLocation

4. RDF 포맷 사용의 장점

Question.
XML을 RDF 포맷으로 굳이 만들어야 하는 이유는 무엇일까?

Answer.
여기에는 여러가지 장점들이 있다.

  • RDF 포맷이 광범위하게 사용되면XML을 더 상호운용 가능(interoperable)하도록 만들어 줄 것이다.
  • RDF 포멧은 XML 문서를 디자인할 수 있는 구조화된 접근을 제공한다. RDF 형태는 일정하며(regular) 반복되는(recurring) 패턴이다.
  • RDF로 호환되지 않는 XML 디자인의 단점과 비일관성(inconsistencies)을 더 빠르게 확인할 수 있도록 한다.
  • 아래의 세계에 대한 장점을 반복할 수 있다.
    • 당신의 XML을 만들고, 수정하고, 검증하기 위한 표준화된 XML 데이터와 유효성 검증을 사용할 수 있다.
    • 데이터로 추론하는데 적용하는 RDF 도구들을 사용할 수 있다.
  • 당신의 데이터를 Semantic Web 속으로 넣을 수 있다!

5. RDF 포맷 사용의 단점

  • 제약: RDF 포멧은 당신이 어떻게 XML을 디자인할지 제약한다.
  • RDF는 유형, 속성, 자원을 유일하게 표현하기 위해 namespace를 사용한다.
  • 다른 XML 어휘를 배워야 한다: RDF 포맷을 사용하기 위해서는 RDF 어휘를 반드시 배워야 한다.

6. 자원을 고유하게 식별하기(Uniquely Identify the Resource)

RDF는 자원을 고유하게 식별하는 것을 매우 중요하게 생각한다. 즉, 표현하고자 하는 자원이 전역 고유 식별자(Globally Unique Identifier)인지 고려해야 한다. 앞선 rdf 문서에서 “Yangtze”라는 자원이 전역 고유 식별자가 되어야 한다.

7. rdf:ID

  • rdf:ID의 값은 “상대 URI(relative URI)”이다.
  • “전체 URI”는 XML 문서의 URL(http://www.geodesy.org/river)와 “#”, rdf:ID 값(Yangtze)을 붙여 사용한다. 따라서 최종적으로 http://www.geodesy.org/river#Yangtze로 표현된다.

8. xml:base

  • 문서의 위치에 따라 URI는 쉽게 깨질 수 있다: 문서가 옮겨지거나 다른 위치로 복사된다면 깨질 것이다.
  • 강력한 해법은 문서에 base URL를 명시해놓는 것이다.

Resource URI
= xml:base, ‘#’, rdf:ID의 연속
= “http://www.china.org/geography/rivers”, ‘#’, “Yangtze”의 연속
= http://www.china.org/geography/rivers#Yangtze

9. rdf:about

  • 상대 URI로 자원을 식별하는 대신에 자원에 대한 전체 식별자(complete identifier)를 제공할 수 있다. 그 때에는 rdf:ID보다는 rdf:about을 사용한다.

10. Triples > resource/property/value

  • http://www.china.org/geography/rivers#Yangtze has a http://www.geodesy.org/river#length of 6300 kilometers
  • http://www.china.org/geography/rivers#Yangtze has a http://www.geodesy.org/river#startingLocation of Western China’s Qinghai-Tibet Plateau
  • http://www.china.org/geography/rivers#Yangtze has a http://www.geodesy.org/river#endingLocation of East China Sea

위의 3문장을 resource, property, value로 표현된 triple로 분석하면 아래와 같다.

resource property value
http://www.china.org/geography/rivers#Yangtze http://www.geodesy.org/river#length 6300 kilometers
http://www.china.org/geography/rivers#Yangtze http://www.geodesy.org/river#startingLocation Western China’s Qinghai-Tibet Plateau
http://www.china.org/geography/rivers#Yangtze http://www.geodesy.org/river#endingLocation East China Sea

11. RDF 포맷 = triples!

  • RDF의 기본구조는 XML 데이터를 자원(resource), 속성(property), 값(value)라는 triples로 구조화된다.
<?xml version="1.0"?>
<Resource-A>
  <property-A>
    <Resource-B>
      <property-B>
        <Resource-C>
          <property-C>
            Value-C
          </property-C>
        </Resource-C>
      </property-B>
    </Resource-B>  
  </property-A>
</Resource-A>
  • RDF 디자인 패턴은 자원-속성의 순서로 번갈아간다. 이 패턴을 “striping”이라고 부른다.
  • 속성은 literal로 표시가 되고, 속성 값은 자원이 될 수 있다.

12. Naming Convention

  • 보통 이름은 유형(Class) 이름에 대문자를 쓰고, 속성(property) 이름은 소문자로 시작한다.
  • 이렇게 적으면 striping 패턴인지 쉽게 파악할 수 있다.

13. rdf:Description + rdf:type

  • 이 방식은 무언가를 기술하는데 매우 명확한 방식을 제공하며, 기술하고자 하는 어떤 것에 대한 유형(type, class) 또한 명확하게 제시한다.2

아래와 같이 읽을 수 있다. “이것은 자원 http://www.china.org/geography/rivers#Yangtze을 기술한다. 이 자원은 River 유형에 대한 instance이며, http://www.china.org/geography/rivers#Yangtze 자원은 6300 킬로미터의 길이와, 중국 Qinghai-Tibet 고원의 서부에서 시작해 동부 중국해로 끝난다.”

14. 대안적 방식

  • 아래와 같이 rdf:about 대신 rdf:ID로 표현할 수 있다.
  1. ”#”은 단순히 namespace로부터 유형(type)과 속성(property) 이름을 구분하기 위한 방식이다. 

  2. 이와 같이 기술하는 형태를 “long form”이라고 한다. 이전에 설명한 방식은 이 long form의 축약버전이다. RDF 파서는 long form일 때 축약 형태로 해석한다. 

Leave a comment