ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹 온톨로지 모델링 - 삼촌 관계 표현하기
    카테고리 없음 2004. 3. 10. 16:33

    웹 온톨로지 언어를 이용하여 지식을 표현하다 보면 표현하기가 매우 까다롭거나 불가능한 것들이 종종 있다. 원인은 여러가지 있을 수 있으나 웹 온톨로지 언어의 표현력의 한계가 원인이 되는 경우가 많다. 웹 온톨로지로 표현하기 어려운 관계 중 하나는 삼촌 관계다. 삼촌 관계는 다음과 같이 기술될 수 있다.

    삼촌 관계는 어떤 사람의 자식이 그 사람의 형제와 가지는 관계이다.

    이 관계는 이행 관계(Transitive Relation)와 유사한데, 그 구조 상 특이한 점은 서로 다른 두 개의 속성이 이행에 개입한다는 점이다. 삼촌 관계에는 '자식' 관계와 '형제' 관계가 포함된다. 또 한가지 주목할 점은 이 두 관계가 중간에 하나의 개체를 매개로 연결된다는 점이다. 즉, 하나의 매개 개체를 중심으로 그 매개 개체와 각각 '자식'과 '형제' 관계를 갖는 개체들간의 관계가 '삼촌' 관계인 것이다. 이와 같은 관계를 웹 온톨로지 언어로 표현하는 것은 원칙적으로 불가능하다. 왜냐 하면, 삼촌 관계는 클래스 간의 관계로 표현될 수 없기 때문이다.

    물론, 어떤 A라는 개체의 자식들의 클래스와 A의 형제들의 클래스를 선언할 수는 있을 것이다. 각각 '부모' 속성의 값으로 A를 갖는 제약(Restriction) R1과 '형제' 속성의 값으로 A를 갖는 제약 R2로 모델링할 수 있다. 그러면, '삼촌'은 정의역(domain)을 R1으로 갖고 공역을 R2로 갖는 속성으로 정의될 수 있다. 그러나, 이는 개체 A를 명시하고 있으므로, A와 다른 개체에 대해서 '삼촌' 관계를 정의하려면 별도의 클래스 정의와 속성 정의를 필요로 하게 된다. 이를 일반화하여 다음과 같이 "자식(Child)" 클래스와 "형제(Brother)" 클래스를 정의해 보자.

    :Child
    rdfs:subClassOf
    [rdf:type owl:Restriction; owl:onProperty :hasParent; owl:allValuesFrom :Person]
    [rdf:type owl:Restriction; owl:onProperty :hasParent; owl:maxCardinality "2"].
    :Brother rdfs:type :Male;
    rdfs:subClassOf
    [rdf:type owl:Restriction; owl:onProperty :hasSibling; owl:allValuesFrom :Person];
    rdfs:subClassOf
    [rdf:type owl:Restriction; owl:onProperty :hasSibling; owl:minCardinality "1"].

    이제 "삼촌" 관계는 다음과 같이 정의될 수 있다.

    :uncle rdf:type owl:ObjectProperty;
    rdfs:domain :Child;
    rdfs:range :Brother.

    이 때, 만약 다음과 같은 개체 정의가 주어졌다고 해 보자.

    :Bob a :Male.
    :John a :Male; :hasSibling :Bob.
    :Sam :hasParent :Bob.
    :Jack a :Male.
    :Nil a :Male; :hasSibling :Jack.
    :Jim :hasParent :Jack;

    위의 정의는 다음과 같이 전개될 수 있다.

    Sam ---[hasParent]--- *Bob*
    John ---[hasSibling]--- *Bob*
    Jim ---[hasParent]--- *Jack*
    Nil ---[hasSibling]--- *Jack*

    Sam과 Jim은 위에 정의한 Child 클래스에 속하고, John과 Nil은 Brother 클래스에 속한다. 그렇다면 여기서 "삼촌" 관계는 어떻게 도출될 수 있는가? 앞서 기술한 uncle 속성 정의를 따르면 다음과 같은 사실들을 유도해 낼 수 있다.

    :Sam :uncle :John.
    :Jim :uncle :Jack.
    :Sam :uncle :Jack.
    :Jim :uncle :John.

    지금까지 정의한 웹 온톨로지를 비추어 보면 위의 네 문장은 모두 함의(entail)된다. 하지만, 실제 '삼촌'의 의미를 따져 보면 마지막 두 문장은 참이 될 수 없다. 즉, 지금까지 시도한 "삼촌" 정의는 빈 구멍이 있는 것이다. 여기서 빈 구멍은 이렇다. 두 개체 사이에 "삼촌" 관계가 성립되려면 중간 매개 역할을 하는 매개 개체가 동일해야 하는데 이 제약 사항이 기술되지 않았다는 점이다. 이와 같은 제약 사항을 기술하려면 중간 매개 개체를 "형제" 및 "부모" 각 관계에 대하여 각각 변수로 표현하고 변수가 서로 동일하다는 사실을 표현할 수 있어야 한다. 그러나,웹 온톨로지 언어는 변수를 기술할 수 없다. 웹 온톨로지 언어가 기반하고 있는 기술 논리(description logics)는 변수를 포함하지 않는 명제논리(propositional logic)에 기반하고 있기 때문이다.

    그렇다면, "삼촌" 관계를 표현할 수 있는 적절한 방법은 무엇일까? 정답은 "웹 규칙 언어(web rules language)"이다. 다음의 예에서 보듯이 "삼촌" 관계는 규칙을 이용하면 손쉽게 기술할 수 있다.

    rule Uncle is
    if :hasParent(?x,?y) and :hasSibling(?y,?z) and :Male(?z)
    then :hasUncle(?x,?z);

    [1]을 보면 "삼촌" 관계와 같이 서로 다른 여러 속성으로 연결된 개체들간의 관계는 기술논리로 표현할 수 없다는 사실이 언급되어 있다. [1]의 참고 문헌들을 통해 이와 같은 제약에 대한 보다 형식적인 근거를 찾아볼 수 있을 것이다.

    [1] Wonderweb Deliverable 2: Rule Language (pdf)
    [2] 여기서는 온톨로지 구조를 기술하기 위해 N3를 이용했다. N3에 대해서는 여기를 보시길.

Designed by Tistory.