[Knowledge Graph] 3. RDF Schema

이 글은 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)의 Inferring and Discovering Relationships using RDF Schemas의 내용을 담고 있습니다.

1. From RDF to RDF Schema

Question.
RDF에서 부족한 것이 무엇일까? 왜 RDF Schema가 필요할까?

Answer.
RDF에서는 student라는 의미가 무엇인지 정의할 수 없기 때문이다! 기계가 이해할 수 있기 위해서는 studentPerson이라는 의미를 부여해주어야 하는데, RDF에서는 이러한 의미를 부여해 줄 수 없다. 따라서 RDF Schema를 활용해 RDF에서 사용하는 모든 어휘들의 관계와 의미를 정의해주는 것이다.(RDF Schema로부터 ontology라 부른다.)

  • 그렇다면 knowledge graph는 무엇일까? 일반적으로 지식그래프는 Schema 정보(ontology) + 데이터가 합쳐진 것을 의미한다. 따라서 지식그래프를 구축하기 위해서는 1) 온톨로지 모델링 2) 모델을 데이터에 입혀 graph data로 만드는 과정을 거친다.

2. RDF Schema

  • RDF Schema를 사용하는 주요한 목적은 XML 어휘에 아래 항목을 제공하는 것이다.
    • classes와 그 관계를 표현하는 것
    • properties를 정의하고 classesproperties를 연관시키는 것
  • RDF Schema를 사용함으로써 내가 가진 데이터로 추론하거나(inferencing) 검색을 향상시킬 수 있다.

💡 NOTE
아주 복잡한 도메인 온톨로지를 만들지 않는 한, 추론의 기능을 강하게 정의하지 않는 추세다. General한 모델로 많이 만든다는 것인데, 이는 추론보다 데이터를 검색하거나 발견하는데 중심을 두고 있다는 의미이다.

3. RDF Schema와 Taxonomies

foo
Roger L. Costello, David B. Jacobs. ⓒ 2003 The MITRE Corporation.

RDF Schema는 Taxonomies를 만드는 것에 관한 것이다! NaturallyOccurringWaterSource 하위에 Stream이 있고, 그 아래에 Brook, River, Tributary가 하위로 들어가며, 또한 Brook 아래에 Rivulet이 속한다.

4. 무엇이 추론될까?

위의 rdf 파일과 Water의 텍소노미를 함께 생각해보자. 3가지를 추론할 수 있다.

  • 양쯔강은 River이므로, `River`위의 `Classes`인 `Stream`, `NaturallyOccurringWaterSource`에 포함된다고 추론할 수 있다.
    • Yangtze is a Stream.
    • Yangtze is an NaturallyOccurringWaterSource.
  • emptiesInto라는 속성의 공역에 BodyOfWater를 적어야하고, 양쯔강의 rdf에 emptiesIntoEastChinaSea가 적혀있다면, 아래와 같이 추론할 수 있다.
    • httmp://www.china.org/geography#EastChinaSea is a BodyOfWater

5. 어떻게 taxonomy가 검색을 용이하게 할까?

💁🏻‍♀️ “Stream에 관한 정보를 포함하고 있는 정보에 대해 모두 보여줘!”

이렇게 사용자가 검색 엔진에 명령하면, 양쯔강의 rdf 문서에 따르면 양쯔강이 River이므로 검색엔진이Stream의 하위 클라스와 연관된다는 것을 인식한다. 따라서 쿼리 결과로 Yangtze is a Stream이 도출되는 것이다.

6. RDF Schema란 taxonomy를 정의하는 것!

따라서 RDF Schemas는 텍소노미들(class의 위계구조)을 정의하는 것에 대한 것이다. 위에서 보았듯, 텍소노미는 추론을 하고, 검색을 용이하게 하는데 사용될 수 있다.

7. Classes/properties를 RDF/XML로 정의하기

  • RDF Schema는 classes와 properties를 정의하는데 아래의 RDF/XML 디자인 패턴을 사용한다.

8. 클라스 정의하기

따라서 위의 문서는 아래와 같이 읽힌다.

  • “나는 여기서 River 클라스를 정의한다. River는 Stream의 하위 클라스이다.”
  • “나는 여기서 Stream 클라스를 정의한다. Stream은 NaturallyOccurringWaterSource의 하위 클라스이다.”

9. rdfs:Class

<rdfs:Class rdf:ID="River">
  <rdfs:subClassOf rdf:resource="#Stream"/>
<rdfs:Class>
  • rdfs:Class는 클라스를 정의하기 위한 것이다.
  • rdf:ID는 클라스에 대한 이름을 제공한다. 여기에서는 “River”가 이 클라스의 이름이다.
  • rdfs:subClassOf는 속성으로 정의된 것이다.
  • 가지고 있는 속성에 따라 Class가 달라질 수 있으므로 속성이 general해야 한다. 즉, 속성은 Class들을 구분하기위한 기준점이 되어야 한다는 것!
  • 지난 rdf 포스팅에서 보았듯, rdf:Description + rdf:type으로도 표현할 수 있다.

10. rdfs:subClassOf

  • StreamRiver에 속한다. 즉, set(River) ⊂ set(Stream)
  • 이러한 부분집합 관계를 Brook rdfs:subClassOf Stream으로 표현할 수 있다.

10.1 multiple rdfs:subClassOf properties

  • 위와 같이 하위 클라스를 multi 상속할 수 있다. (2개 이상)
  • 위의 의미는 River = Stream & SedimentContainer
  • 그러나 모델 안의 관계들을 설명할 때 subClassOf를 2번 이상 사용하게 되면 복잡해질 수 있다.

10.2 전이적인(transitive)

  • rdfs:subClassOf는 전이적이다(transitive)
    • 즉, transitive는 하위 클라스를 설정해 놓으면 자동으로 상위 클라스까지 연결되게 하는 관계를 만들어놓았다는 것이다.
    • Rivulet이면 Brook > Stream > NaturallyOccurringWaterSource 까지 따라가게 된다.
    • 명시적으로 표현해주어야 transitive 할 수 있다.
  • 따라서 transitive한 동시에 위계구조를 가지는데, tree 형태를 ontology에서 만들어주는 기준이 subClassOf가 된다.

11. 속성 정의하기

위의 문서는 아래와 같이 읽을 수 있다.

  • “나는 여기서 emptiesInto 속성을 정의한다. 이 속성의 정의역(domain) 클라스는 River이고, 치역(range)는 BodyOfWater의 인스턴스(instances)이다.”
  • 즉, emptiesInto 속성은 River에서 BodyOfWater까지 연관되어 있다.

12. 직접 모델링 해보기

💁🏻‍♀️ John, Student, StaffMember, Person의 관계를 모델링 해보아라!

model

  • RDF Layer 위에 RDF Schema가 있고, 그 위에 Vocabulary Layer가 쌓이게 되는 것!
    • 따라서 RDFS Layer가 비게 되면, RDF에서 쓴 모델들의 의미를 전혀 이해할 수 없게 됨. XML에 불과한 것.
  • rdf:type은 인스턴스를 설명해주기 위한 것.
    • 예를 들어, 승용차의 인스턴스가 그랜져, 소나타인 것처럼 John은 Student와 StaffMember의 인스턴스가 되는 것.

Leave a comment