logo

RDFS

RDFS란 무엇입니까

RDFS(RDF Schema)는 RDF 데이터에 기본적인 의미 구조를 부여하기 위한 어휘입니다. RDF는 개별 사실을 표현하고, RDFS는 클래스, 속성, 상하 관계 같은 기본 스키마를 표현합니다.

예를 들어 "고객은 사람의 한 종류입니다"라는 지식을 정의하면, 어떤 개체가 고객이라는 사실만으로 그 개체가 사람이라는 사실을 추론할 수 있습니다.

클래스 정의

클래스는 비슷한 개체들을 묶는 종류입니다. RDF에서는 어떤 자원이 특정 클래스에 속한다는 사실을 rdf:type으로 표현합니다.

@prefix ex: <http://example.org/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

ex:Person a rdfs:Class .
ex:Customer a rdfs:Class .
ex:Alice rdf:type ex:Customer .

터틀 문법에서 ardf:type을 줄여 쓴 표현입니다.

클래스 계층

rdfs:subClassOf는 한 클래스가 다른 클래스의 하위 클래스임을 나타냅니다.

ex:Customer rdfs:subClassOf ex:Person .
ex:Alice a ex:Customer .

이 정의가 있으면 앨리스가 고객이라는 사실에서 앨리스가 사람이라는 사실을 추론할 수 있습니다.

ex:Alice a ex:Person .

이처럼 RDFS는 그래프에 직접 저장되지 않은 암묵적 지식을 만들어 냅니다.

클래스 계층 추론은 다음처럼 하위 클래스의 타입을 상위 클래스로 올려 줍니다.

flowchart TB
    alice["ex:Alice"]
    customer["ex:Customer"]
    person["ex:Person"]

    customer -- "rdfs:subClassOf" --> person
    alice -- "rdf:type" --> customer
    alice -. "추론된 rdf:type" .-> person

속성 계층

rdfs:subPropertyOf는 한 속성이 다른 속성의 하위 속성임을 나타냅니다. 예를 들어 "구입했습니다"가 "관련이 있습니다"의 더 구체적인 관계라면 다음과 같이 표현할 수 있습니다.

ex:bought rdfs:subPropertyOf ex:relatedTo .
ex:Alice ex:bought ex:Book001 .

이 경우 다음 관계를 추론할 수 있습니다.

ex:Alice ex:relatedTo ex:Book001 .

정의역과 치역

정의역(domain)은 어떤 속성을 사용하는 주어의 클래스를 의미합니다. 치역(range)은 그 속성의 목적어가 속하는 클래스를 의미합니다.

ex:bought rdfs:domain ex:Customer .
ex:bought rdfs:range ex:Product .
ex:Alice ex:bought ex:Book001 .

이 정의에 따르면 앨리스는 고객이고 책001은 상품이라고 추론할 수 있습니다.

ex:Alice a ex:Customer .
ex:Book001 a ex:Product .

정의역과 치역은 검증 규칙이라기보다 추론 규칙에 가깝습니다. 따라서 잘못된 데이터가 있을 때 오류를 막기보다는 추가 타입을 만들어 낼 수 있습니다.

라벨과 주석

RDFS는 사람이 읽기 위한 설명도 제공합니다.

ex:Customer rdfs:label "고객"@ko .
ex:Customer rdfs:comment "상품이나 서비스를 구입하는 사람입니다."@ko .

rdfs:label은 화면에 표시할 이름이고, rdfs:comment는 설명입니다. 식별자와 표시 이름을 분리하면 다국어 표현과 이름 변경에 대응하기 쉽습니다.

RDFS의 한계

RDFS는 기본적인 계층과 타입 추론에는 적합하지만 복잡한 제약을 표현하기에는 부족합니다. 예를 들어 "한 사람의 생년월일은 하나만 있어야 합니다" 또는 "부모 관계는 사람과 사람 사이에서만 가능합니다" 같은 강한 제약은 SHACL이나 OWL을 함께 사용해야 합니다.

정리

RDFS는 RDF 그래프에 클래스, 속성, 계층, 라벨 같은 기본 의미 구조를 더하는 표준입니다. 핵심은 데이터를 검증하기보다는 타입과 관계를 추론할 수 있게 만드는 데 있습니다.

Previous
RDF
Next
SKOS