RDF의 특수한 모델
1. 특별한 모델
RDF에는, 리소스를 한 개의 그룹으로 묶어서 다루는 방법과 유한 리스트를 나타내는 방법, 그리고 트리플 자체에 대해서 메타정보를 기술하는 방법, 데이터를 구조화하거나 그 중에서 주요한 값을 나타내는 방법 등과 같은 특별한 모델을 표현하는 기법이 제공되고 있다.
2. 컨테이너 모델
몇 가지 기소스들을 모아서 한개의 그룹으로서 기술하면 편리한 경우가 있다. RDF에서는 이와 같은 그룹을 컨테이너라고 부르고, 각각의 값을 해당 컨테이너의 멤버로서 기술할 수 있다.
RDF는, 리소스를 그룹화하는 컨테이너로서, rdf:Bag, rdf:Seq, rdf:Alt와 같은 3가지 타입을 제공하고 있다.
1) rdf:Bag
멤버의 순서가 의미를 갖지 않는 경우의 그룹화에 사용한다.
2) rdf:Seq
멤버의 순서에 중요한 의미가 있는 경우의 그룹화에 사용한다.
3) rdf:Alt
대체표현 리스트를 그룹으로서 나타낼 경우에 사용한다. 맨처음에 기술된 멤버는 일반적으로 디폴트로 취급한다.
컨테이너 역할을 하는 리소스는, rdf:type속성에서 위에 열거한 타입을 갖도록 나타낸다. 컨테이너 자신은 그룹전체를 나타내는 리소스이다. 이와 같은 리소스는 다른 타입(클래스)을 가질 수도 있고, URI참조로 명명할 수도 있다. 그룹화된 멤버들은 특별한 속성 rdf:_1, rdf:_2, rdf:_3 …에 의해 컨테이너 리소스에 연결된다.
1) rdfs:Container
RDF의 컨테이너를 나타내는 클래스로서, 서브클래스로서 rdf:Bag, rdf:Seq, rdf:Alt가 있다.
2)rdfs:member
RDF컨테이너와 멤버를 연결하는 속성. 실제 모델에서는 서브속성인 rdf:_1, rdf:_2 등이 각각의 멤버를 나타내며, rdfs:member를 그대로 사용하는 경우는 없다.
3) rdf:_1, rdf:_2 …
RDF컨테이너와 각각의 멤버를 연결하는 속성으로서, rdfs:member의 서브속성, RDF/XML에서는, 컨테이너요소의 내용으로서 rdf:li요소를 기술할 경우, 파서가 rdf:_1, rdf:_2 …로 치환하여 해석한다.
2. 컬렉션(Collection)
RDF에는 유한개의 멤버들을 모두 열거하는 수단으로서 컬렉션(Collection)이 제공되고 있다.
RDF의 컨테이너 모델은, 열겨되는 멤버들이 해당 그룹의 모든 멤버임을 보증하지 않는다. RDF에서는 닫힌 그룹(Closed Group)을 표현하는 것으로서 컬렉션(Collection)이라고 부르는 리스트구조가 제공되고 있다.
RDF의 컬렉션은, 리스트를 나타내는 공백노드와 해당 멤버를 나타내는 rdf:first속성, 그리고, 더 이상 리스트가 계속되지 않음을 나타내는 종점리소스 rdf:nil에 의해 구성된다.
1) rdf:List
RDF의 리스트 정점이 되는 노드를 나타내는 클래스. 컬렉션을 나타내는 그래프에서, 이와 같은 공백노드가 되며 일반적으로 rdf:List의 형은 명시적으로 표시하지않는다.
이와 같은 노드는, rdf:first와 rdf:rest와 같은 2가지 속성을 갖는다(이러한 속성들의 정의에 의해, 묵시적으로 rdf:List클래스임이 표현된다).
2) rdf:first
리스트의 맨 처음 요소가 되는 속성으로서, 멤버의 값을 나타낸다.
3) rdf:rest
리스트의 또 다른 요소가 되는 속성으로서, 리스트의 공백노드와 다음번 리스트 노드(공백노드 또는 rdf:nil)를 연결한다.
4) rdf:nil
리스트의 멤버가 더 이상 존재하지 않음을 나타내는 종단 노드러소, rdf:List의 인스턴스 이다.
3. 구체화(Reification)
RDF의 서술문에 대한 정보, 즉, RDF트리플의 메타정보가 필요한 경우가 있다. 이런 경우를 위해서, 서술만 자체를 기술대상으로 하는, 구체화(Reification)라는 기법을 이용한다.
RDF의 기본은 트리플을 기술하는 서술문(Statement = 문장)으로서, 때로는 이러한 서술문에 관한 메타정보를 표현할 필요가 발생하기도 한다. 메타적인 표현을 위해서, 어떤 문장이 서술하고 있는 사항을 “표명”하는 것이 아니라, 해당 문장 자체를 “참조”할 수 있도록 하는 것을 구체화(Reification)리고 부른다.
RDF에서의 문장의 구체화는, 우선 해당 문장의 모델을 나타내는 노드를 생각하고, 어떤 주어, 술어, 목적어를 갖는지를 기술함으로써 “문장을 간접적으로 나타내는 그래프”를 준비한다. 노드가 “문장”임을 나타내기 위해서 rdf:Statement클래스를 사용하고, 주어와 술어 그리고 목적어를 나타내기 위해서, 각각 rdf:subject, rdf:predicate, rdf:object와 같은 속성을 사용한다.
1) rdf:Statement
트리플로부터 만들어지는 문장(Statement)의 모델을 나타내는 클래스
2) rdf:subject
RDF의 문장을 나타내는 rdf:Statement타입의 리소스와, 해당 문장의 주어가 되고 있는 리소스를 연결하는 속성
3) rdf:predicate
rdf:statement타입의 리소스와, 해당 문장의 술어가 되고 있는 리소스를 연결하는 속성
4) rdf:object
rdf:Statement타입의 리소스와, 해당 문장의 목적어가 되고 있는 리소스를 연결하는 속성
[출처 및 참고]
- 시맨틱 웹을 위한 RDF/OWL 입문