SWRL
SWRL이란 무엇입니까
SWRL(Semantic Web Rule Language)은 OWL 온톨로지에 규칙을 추가하기 위한 언어입니다. 클래스와 속성만으로 표현하기 어려운 도메인 규칙을 조건과 결론 형태로 적을 수 있습니다.
기본 구조는 "조건이 참이면 결론도 참입니다"라는 규칙입니다.
조건 -> 결론
기본 규칙 구조
예를 들어 어떤 사람이 부모 관계를 가지고 있으면 부모 클래스에 속한다고 정의할 수 있습니다.
Person(?x) ^ parentOf(?x, ?y) -> Parent(?x)
이 규칙은 ?x가 사람이고 ?x가 ?y의 부모이면 ?x는 부모라는 뜻입니다.
지식 그래프 추천 규칙
구매 이력을 바탕으로 관심 카테고리를 추론하는 규칙은 다음처럼 표현할 수 있습니다.
Customer(?c) ^ bought(?c, ?p) ^ belongsTo(?p, ?cat)
-> interestedIn(?c, ?cat)
이 규칙은 고객이 어떤 상품을 구입했고 그 상품이 어떤 카테고리에 속하면, 고객은 그 카테고리에 관심이 있다고 추론합니다.
SWRL 규칙은 여러 조건이 동시에 만족될 때 결론 트리플을 추가하는 방식으로 이해할 수 있습니다.
flowchart LR
customer["Customer(?c)"]
bought["bought(?c, ?p)"]
category["belongsTo(?p, ?cat)"]
rule["SWRL 규칙"]
inferred["interestedIn(?c, ?cat)"]
customer --> rule
bought --> rule
category --> rule
rule --> inferred
비교 조건
SWRL은 일부 내장 함수(built-in)를 사용해 숫자나 문자열 조건을 표현할 수 있습니다. 예를 들어 가격이 높은 상품을 고가 상품으로 분류할 수 있습니다.
Product(?p) ^ price(?p, ?price) ^ swrlb:greaterThan(?price, 100000)
-> ExpensiveProduct(?p)
이 규칙은 가격이 100000보다 큰 상품을 고가 상품으로 분류합니다.
OWL과 함께 사용하는 이유
OWL은 클래스, 속성, 관계의 논리적 의미를 표현하는 데 강합니다. 그러나 "구매한 상품의 카테고리를 고객의 관심사로 본다" 같은 업무 규칙은 OWL만으로 자연스럽게 표현하기 어렵습니다.
SWRL은 이런 규칙을 온톨로지 위에 추가합니다. 따라서 표준 온톨로지 추론과 도메인별 규칙 추론을 함께 사용할 수 있습니다.
주의할 점
SWRL은 표현력이 강하지만, 모든 규칙을 마음대로 추가하면 추론이 매우 느려지거나 결정 가능성이 깨질 수 있습니다. 결정 가능성은 추론이 유한한 시간 안에 끝나는지를 뜻합니다.
실무에서는 다음 원칙을 지키는 것이 좋습니다.
- 규칙을 작고 명확하게 작성합니다.
- 규칙이 어떤 새 사실을 만드는지 테스트 데이터로 확인합니다.
- 반복적으로 자기 자신을 확장하는 규칙을 피합니다.
- 데이터 검증 목적이면 SHACL 규칙이나 제약을 우선 검토합니다.
SWRL과 SHACL 규칙
SWRL은 논리 추론 중심입니다. SHACL 규칙은 데이터 모양 검증과 함께 파생 값을 만들 때 사용됩니다. 온톨로지 기반 지식 확장이 목적이면 SWRL이 적합하고, 데이터 품질 검사와 운영 검증이 목적이면 SHACL이 더 적합한 경우가 많습니다.
정리
SWRL은 OWL 온톨로지에 도메인 규칙을 추가하는 언어입니다. 조건과 결론 형태로 지식을 표현할 수 있으며, 추천, 분류, 파생 관계 생성에 사용할 수 있습니다. 다만 규칙이 복잡해질수록 추론 성능과 안정성을 신중하게 관리해야 합니다.