이번에 더 배울 것
owl:sameAs는 두 이름이 같은 개체를 가리킨다는 주장입니다. OWL 2 Primer는 James와 Jim이 같은 개체라고 선언하면 James에 대한 모든 정보가 Jim에도 성립한다고 설명합니다. 이 관계는 대칭이고 이행적이어서 A=B, B=C이면 A=C입니다. 그래서 하나의 sameAs가 두 IRI에 붙은 모든 진술을 한데 모으고, 연결이 이어지면 더 큰 덩어리를 만듭니다.
실제 데이터에서는 ‘같다’보다 약한 뜻으로 sameAs를 쓰는 경우가 문제입니다. Halpin 등(2010)은 Web of Data에서 무작위로 고른 owl:sameAs 진술을 조사해 이 속성이 어떻게 쓰이고 또 오용되는지 분석했습니다. 도시와 그 도시의 시청처럼 관련된 다른 대상을 잇거나, 비슷한 개념을 잇는 경우 속성이 섞여 모순이 생깁니다. SKOS Primer도 개념 매핑에 owl:sameAs를 쓰면 두 개념의 대표 표기가 하나로 합쳐져 비일관해진다고 경고합니다.
대안은 확신의 정도에 맞는 관계를 쓰는 것입니다. 개념 체계끼리는 skos:exactMatch나 skos:closeMatch를 쓰고, 엔티티 해소의 후보 쌍은 추론 의미가 없는 자체 속성(예: :possibleMatch)에 점수와 함께 기록해 두었다가 사람이 확인한 뒤 sameAs로 올립니다. 이미 sameAs를 쓰고 있다면 같은 군집에 묶인 IRI 수를 감시하고, 생년처럼 값이 하나여야 하는 속성을 owl:FunctionalProperty로 선언해 두면 잘못된 병합이 비일관으로 드러납니다.
작은 예제로 따라가기
:p1 :name "김민수" ; :birthYear 1990 .과 :p2 :name "Kim Minsu" ; :birthYear 1990 .에 :p1 owl:sameAs :p2를 더하면 한 개체가 이름 두 개와 생년 하나를 가져 일관됩니다.
여기에 :p2 owl:sameAs :p3가 잘못 추가되고 :p3 :birthYear 1985이면, 이행에 따라 p1=p3가 되어 한 사람에게 생년 1990과 1985가 함께 붙습니다.
birthYear를 owl:FunctionalProperty로 선언해 두었다면 서로 다른 두 값 때문에 비일관이 보고되지만, 선언이 없으면 두 값이 조용히 공존합니다.
sameAs 한 줄의 파급
아래 링크를 추가했을 때 p1에게 붙는 생년 값이 몇 개가 될지 먼저 예상하세요.
두 IRI의 진술이 합쳐지지만 생년 값이 같아 충돌이 없습니다.
학습을 시작하면 새 문제를 직접 풀고 확인 퀴즈를 마친 뒤 선택한 본과정 회차로 돌아갑니다.