온톨로지 배타 클래스 검수에서 OWL과 SHACL을 나누는 법
장비가 가동과 폐기에 함께 속하거나 현재 상태가 비어 있을 때 OWL과 SHACL의 판정을 비교합니다. 기준 시점과 검수 대상을 고정해 충돌·누락을 가르는 인수표를 살펴보세요.
이 글을 쓴 알파카랩스카카오·네이버·쿠팡 출신, 재하청 0%, 대기업·공공기관 등 18개사+ 레퍼런스
2026-11-04 기준, 현재 장비가 가동·폐기 양쪽에 속하면 OWL 배타 선언과 SHACL 제약에서 모두 걸립니다. 상태 누락은 이 SHACL 제약만 검출합니다.
장비 목록에는 ‘가동 중’, 폐기 원장에는 ‘폐기 완료’로 표시된 장비를 가정해 보겠습니다. 두 표기가 같은 장비와 같은 기준 시점을 가리킨다면 그대로 운영 조회에 올리기 어렵습니다. 양쪽 표기가 모두 빠진 장비도 따로 잡아야 인수할 수 있습니다. 아래 비교와 예시는 2026년 11월 4일 확인한 W3C 문서를 기준으로 합니다.
규칙을 어디에 둘지 어떻게 정하나요?#
같은 장비가 두 분류에 함께 속할 수 없다는 뜻은 OWL에 선언할 수 있습니다. 현재 그래프에서 상태 분류가 하나여야 한다면 SHACL에서 그 장비를 검수 대상으로 지정하고 만족한 상태 shape의 수를 셉니다. 상태가 언제 바뀌었는지 조회하려면 먼저 온톨로지의 기준 시점 설계로 어느 시점의 데이터를 검사할지 정합니다.
| 확인할 계약 | 쓰는 규칙 | 통과 조건 |
|---|---|---|
| 두 클래스의 동시 소속 금지 | OWL DisjointClasses | 배타 관계와 입력 사실을 함께 만족하는 해석이 있음 |
| 현재 그래프의 단일 상태 | SHACL sh:xone | 대상 노드가 정해진 상태 shape 가운데 정확히 하나에 적합 |
| 다른 시점의 상태 보존 | 스냅샷 선택 규칙 | 기준 시점별로 유효한 상태만 검수에 포함 |
가동과 폐기를 어떻게 표현하나요?#
OWL 예시는 장비 상태를 나타내는 두 클래스의 교집합을 비우는 선언입니다. 같은 개체가 두 클래스에 속한다는 사실까지 주어지면 전체를 만족하는 해석이 없습니다. 상태가 적혀 있지 않은 장비는 이 선언만으로 모순을 일으키지 않습니다. 다른 제약은 없다고 가정합니다. W3C OWL 2 Direct Semantics, 2012년 12월 11일 권고.
DisjointClasses(:RunningAsset :RetiredAsset)SHACL 예시는 이미 추출한 현재 스냅샷의 장비를 검수합니다. 장비 목록의 모든 노드에는 상태와 독립적으로 장비 유형이 기록돼 있다고 가정합니다. 두 상태 shape는 각각 해당 클래스의 소속을 검사합니다. W3C SHACL, 2017년 7월 20일 권고.
@prefix ex: <https://example.org/assets/> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
ex:CurrentStatusShape a sh:NodeShape ;
sh:targetClass ex:Asset ;
sh:xone (
[ sh:class ex:RunningAsset ]
[ sh:class ex:RetiredAsset ]
) .검증 그래프에서 상태 분류 하나가 확인되어야 한다는 계약이라서 xone을 썼습니다. 점검 대기처럼 별도의 상태를 허용하는 업무에서는 목록과 규칙부터 바꿔야 합니다. W3C의 2026년 11월 2일 SHACL 1.2 Core 작업 초안에도 정확히 하나라는 판정이 이어집니다. 예시는 2017년 권고의 문법을 사용합니다.
인수 표본은 무엇을 넣나요?#
가동만 있는 장비, 폐기만 있는 장비, 둘 다 있는 장비와 둘 다 없는 장비를 넣습니다. 각 행은 다른 장비의 모순에 영향을 받지 않도록 독립 스냅샷으로 검수합니다. OWL 쪽에는 배타 선언을, SHACL 쪽에는 위 shape를 적용합니다. 가상 표본 전체의 기대 판정은 다음과 같습니다.
| 한 장비의 현재 스냅샷 | OWL 판정 | SHACL 판정 | 운영에서 확인할 일 |
|---|---|---|---|
| 가동만 명시 | 정합 | 적합 | 가동 목록에 포함 |
| 폐기만 명시 | 정합 | 적합 | 가동 목록에서 제외 |
| 가동과 폐기 모두 명시 | 비정합 | 위반 | 두 원천과 유효 시점을 대조한 뒤 재검수 |
| 장비 유형만 있고 상태 누락 | 정합 | 위반 | 현재 상태 원천을 확인할 때까지 보류 |
| 과거 가동과 현재 폐기 | 현재 스냅샷에서 정합 | 현재 스냅샷에서 적합 | 과거 가동을 이력으로 유지 |
검수 결과에는 공통 장비 ID, 원천 레코드와 상태의 유효 시점, 투입한 그래프와 규칙 버전을 남깁니다. 충돌한 장비를 에이전트가 바로 답에 쓰지 않도록 보류하는 것은 별도로 합의할 운영 정책입니다. 수정 후 같은 장비로 판정을 다시 돌려 보류 해제 조건을 확인합니다.
판정이 틀어지는 조건은 무엇인가요?#
검수 목록을 가동·폐기 클래스에서 뽑으면 상태가 누락된 장비는 대상에서 사라집니다. 장비 목록은 원천 대장이나 상태와 독립된 장비 유형에서 가져오고, 실제 검수 대상의 장비 ID 목록을 대장과 대조합니다. 위반이 나면 보고서의 포커스 노드가 기대한 장비인지 확인합니다. SHACL 검수 대상 누락 확인법에 대상 집합을 별도로 대조하는 방법을 정리했습니다.
원천 그래프에 명시된 유형과 추론으로 추가된 유형도 구분합니다. 예를 들어 OWL이 관계의 도메인 선언에서 가동 유형을 유도할 수 있습니다. 그 유형이 SHACL 입력에 들어가는지는 검증 엔진의 추론 설정과 전처리에 따라 달라집니다. SHACL은 하위 클래스 관계로 확인하는 클래스 소속도 있으므로, 그 관계를 데이터 그래프에 제공할지 함께 적습니다. 원천이 상태를 명시해서 보내야 한다면 정규화나 추론 전에 원천 레코드의 상태 필드 또는 원천 그래프의 명시 유형을 따로 검사합니다. 추론된 소속으로 위 shape를 통과하더라도 원천 입력이 있었다는 근거는 별도로 필요합니다. W3C SHACL의 데이터 그래프와 추론 조건.
서로 배타인 두 클래스의 공통 하위 클래스에는 어떤 개체도 속할 수 없습니다. 그 클래스가 비어 있을 수 있다면 온톨로지 전체는 여전히 정합할 수 있습니다. 그 하위 클래스의 개체를 입력에 추가하면 온톨로지 전체도 비정합이 됩니다. W3C OWL 2의 클래스 충족 가능성과 온톨로지 정합성 정의.
가동 여부가 한 원장의 상태 코드로 확정되고 다른 개념으로 유형을 추론할 필요가 없다면, 원장의 필수값·허용값 제약과 적재 대사부터 비교하세요. 알파카랩스는 공개 온톨로지 구축·개발 서비스에서 업무 개념과 제약, 원천 매핑, 사람 검수의 범위를 협의한다고 설명합니다. 제공 범위의 자기표기이며 2026년 11월 4일 확인했습니다.
온톨로지 배타 클래스 검수 FAQ#
OWL에서 두 클래스가 배타적이면 모든 장비가 둘 중 하나인가요?
배타 선언은 두 클래스에 동시에 속하는 해석을 금지합니다. 모든 장비가 두 클래스 중 하나에 속한다는 조건은 별도입니다. 현재 검증 그래프에서 분류 하나를 확인하는 요구는 SHACL 같은 적재 검수로 다룹니다. 원천의 명시 제출 여부는 원천 데이터에서 따로 검사합니다.
sh:xone과 sh:or는 언제 다른 결과를 내나요?
두 상태 shape가 모두 맞을 때 sh:or는 통과할 수 있고 sh:xone은 위반을 냅니다. 둘 다 맞지 않으면 두 제약 모두 위반을 냅니다. 상태를 정확히 하나 요구하는 계약에는 sh:xone이 맞습니다.
가동과 폐기의 기록이 모두 있으면 항상 오류인가요?
서로 다른 시점의 이력이라면 두 기록을 보존할 수 있습니다. 현재 상태 검수는 유효 시점을 고정해 선택한 그래프에 적용합니다. 같은 시점에 양립할 수 없는 두 기록이 들어온 경우를 충돌로 봅니다.
SHACL 위반이 나오면 OWL도 비정합인가요?
현재 상태가 비어 있으면 이 예시의 SHACL 제약은 위반입니다. OWL 배타 선언은 누락만으로 모순을 만들지 않습니다. 두 검수의 입력과 통과 조건을 따로 기록합니다.
SHACL의 sh:disjoint로도 같은 규칙을 표현할 수 있나요?
sh:disjoint는 shape의 경로가 찾은 값과 비교 속성의 값이 겹치는지 검사할 때 씁니다. 같은 장비의 클래스 소속을 두 shape로 비교하고 정확히 하나를 요구하는 예시에서는 sh:xone을 씁니다.
분류 규칙과 인수표 협의#
장비 유형을 확인할 비식별 표본과 두 상태가 충돌한 기록, 검수 기준 시점을 준비하면 상태 누락과 동시 소속의 기대 판정을 한 표로 맞출 수 있습니다. 자료를 확인한 뒤 모델·적재 기준과 인수표 초안의 범위와 소요 시간을 협의합니다.
장비 상태의 충돌과 누락을 가르는 인수표를 만듭니다
비식별 장비 표본을 바탕으로 충돌·누락 인수표의 항목을 협의합니다. 자료 확인 뒤 소요 시간을 정합니다.
배타 클래스 인수 범위 협의