logo

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 온톨로지에 도메인 규칙을 추가하는 언어입니다. 조건과 결론 형태로 지식을 표현할 수 있으며, 추천, 분류, 파생 관계 생성에 사용할 수 있습니다. 다만 규칙이 복잡해질수록 추론 성능과 안정성을 신중하게 관리해야 합니다.

Previous
추론
Next
SHACL