AI VIDEO BRIEFING

온톨로지와 OWL 입문 정리 — RDF에서 지식그래프까지, 파이썬 실습으로 보는 개념과 추론

서울대 DSBA 연구실 스터디에서 다룬 온톨로지 설계 실습을 정리했다. RDF와 RDFS의 한계, OWL이 더하는 논리 규칙, 그리고 파이썬 라이브러리로 클래스와 관계를 정의해 추론까지 돌려 보는 과정을 담았다.

AI 에이전트 시대에 온톨로지가 다시 불려 나온 이유, 그리고 OWL 실습 정리 영상 대표 이미지

핵심 메시지

  • 온톨로지는 데이터를 저장하는 방식이 아니라 개념과 개념 사이의 관계, 그리고 지켜야 할 규칙을 기계가 이해할 수 있게 적어 둔 설계도다
  • AI 에이전트 맥락에서 온톨로지는 언어모델의 환각을 잡아 주는 안전장치이자, 여러 에이전트가 같은 단어를 쓰게 하는 공통 어휘 역할을 한다
  • RDF는 지식을 주어·서술어·목적어 세 조각으로 표현하고, RDFS는 클래스 계층과 도메인·레인지를 더해 기본 추론을 가능하게 한다
  • OWL은 여기에 조건으로 클래스를 정의하고 존재·전칭 제약과 배타성을 선언하는 문법을 더해 복잡한 논리 추론을 가능하게 한다
  • 실습에서는 파이썬 라이브러리로 클래스와 속성을 정의하고 추론기를 실행해 인스턴스가 자동으로 재분류되는 과정까지 확인한다

쉽게 이해하기

발표는 온톨로지가 무엇인지에서 출발한다. '어떤 사람이 특정 교수의 지도 학생이고, 그가 쓴 논문은 어떤 프로젝트에서 나왔다'는 문장을 사람은 읽는 즉시 이해한다. 사람은 연구자이고, 논문에는 저자가 있고, 프로젝트와 관련이 있다는 사실을 자연스럽게 채워 넣기 때문이다. 반면 기계는 같은 문장에서 개념도 관계도 규칙도 읽어 내지 못한다. 인물·논문·프로젝트라는 개념과 그 사이의 관계, 그리고 '지도 학생에게는 지도 교수가 있어야 한다' 같은 규칙을 기계가 이해할 언어로 정의해 두면, 비로소 기계가 관계를 따라 추론할 수 있게 된다.

왜 하필 AI 에이전트 시대에 이 오래된 키워드가 다시 나오는지도 짚는다. 첫째, 온톨로지는 환각에 대한 안전장치가 된다. '특정 교수가 지도하는 학생이 쓴 논문 목록을 달라'는 요청에 언어모델 혼자서는 그럴듯하지만 틀린 답을 만들 수 있지만, 뒤에 잘 구축된 온톨로지가 있으면 추측 대신 정의된 관계를 따라 사실을 조회한다. 둘째, 에이전트가 도구를 부르고 여러 단계를 계획하려면 세상의 구조를 알아야 한다. 셋째, 한쪽 에이전트가 '연구자 ID'라 부르는 것을 다른 쪽이 다른 이름으로 부르면 협업이 어려워지는데, 온톨로지가 그 공통 어휘가 되어 준다.

기술 계보는 RDF에서 시작한다. RDF는 모든 지식을 주어·서술어·목적어 세 조각의 문장으로 쪼개 표현하는 가장 기본적인 데이터 모델이다. 'A는 B의 지도를 받는다', 'C는 D와 같은 프로젝트를 진행한다' 같은 관계를 트리플로 적을 수 있다. 다만 관계를 적어 둘 수만 있을 뿐, 그 관계가 어떤 의미를 갖고 어떤 제약을 받는지는 표현할 수 없다는 한계가 있다. 그래서 RDFS가 클래스 계층과 속성의 도메인·레인지를 더한다. 도메인은 주어 자리에, 레인지는 목적어 자리에 어떤 클래스가 와야 하는지를 정하는 문법이고, 이 규칙 덕분에 '이 자리에 온 것은 논문 클래스겠구나' 같은 기본 추론이 가능해진다.

그래도 남는 한계가 있다. RDFS로는 기본 추론까지만 가능하고 논리 연산이 얽힌 복잡한 추론은 어렵다. 여기서 OWL이 등장한다. 발표는 OWL에서 새로 쓸 수 있게 되는 문법을 세 갈래로 소개한다. 조건을 걸어 새로운 클래스를 정의하는 방식, 어떤 관계로 연결되는 대상이 최소 하나는 있어야 한다는 존재 제약과 연결되는 모든 대상이 특정 클래스여야 한다는 전칭 제약, 그리고 두 클래스가 동시에 성립할 수 없음을 선언하는 배타성이다. 예를 들어 '부모라면 최소한 한 명의 자녀가 있어야 하고, 자녀 관계로 연결되는 대상은 모두 사람이어야 한다'는 조건을 이 문법으로 적을 수 있다.

실습은 파이썬 라이브러리 owlready2로 진행된다. 온톨로지 컨테이너를 만들고, 최상위 조상 클래스를 상속해 논문·연구자 같은 개념 클래스를 선언하고, 개체와 개체를 잇는 오브젝트 프로퍼티와 개체와 값을 잇는 데이터 프로퍼티를 정의한다. 한 개체가 해당 속성 값을 하나만 갖도록 강제하는 옵션도 걸 수 있는데, 값이 둘 들어오면 추론기가 두 값을 같은 것으로 보거나 명시적으로 다르다는 조건이 있으면 오류를 낸다. 조건부 클래스를 정의해 두고 추론기를 실행하면 조건을 만족하는 기존 인스턴스가 자동으로 그 클래스에 추가되는 것까지 확인한다. 마지막으로 NetworkX로 전체 구조를 그려 클래스 계층과 인스턴스, 인스턴스 사이의 관계를 한눈에 본다.

주요 인사이트

  • 온톨로지의 가치는 데이터를 더 많이 담는 데 있지 않고, 데이터에 담긴 의미와 제약을 기계가 검증 가능한 형태로 못 박아 두는 데 있다
  • 언어모델이 답을 지어내는 문제를 프롬프트로만 막으려 하지 않고, 조회할 수 있는 구조를 뒤에 깔아 두는 접근으로 볼 수 있다
  • 여러 에이전트가 서로 다른 시스템을 다룰 때 가장 먼저 깨지는 것은 용어의 합의인데, 온톨로지는 그 합의를 코드 수준에서 강제한다
  • RDF에서 RDFS, OWL로 이어지는 계보는 표현력을 늘려 가는 과정인 동시에 '무엇을 추론할 수 있는가'를 늘려 가는 과정이다
  • 조건부 클래스 정의는 데이터가 나중에 추가되거나 바뀌어도 추론기를 다시 돌리면 분류가 최신 상태로 유지된다는 실용적 장점을 갖는다

자주 묻는 질문

RDF와 OWL은 어떻게 다른가요?

RDF는 지식을 주어·서술어·목적어 트리플로 표현하는 기본 데이터 모델입니다. 관계를 적을 수는 있지만 그 관계의 의미나 제약은 담지 못합니다. RDFS가 클래스 계층과 도메인·레인지를 더해 기본 추론을 가능하게 하고, OWL은 조건에 의한 클래스 정의와 존재·전칭 제약, 배타성 선언까지 더해 복잡한 논리 추론을 가능하게 합니다.

실습에는 어떤 도구가 쓰였나요?

파이썬 라이브러리 owlready2로 온톨로지를 만들고 클래스·속성·인스턴스를 정의한 뒤 추론기를 실행했고, 완성된 온톨로지 전체 구조는 NetworkX로 그래프 시각화해 확인했습니다.

속성 값을 하나만 갖도록 강제하면 어떤 일이 벌어지나요?

그 속성에 값을 두 개 넣으면 모순이 발생합니다. 추론기가 두 값을 같은 개체로 추론하는 경우가 있고, 두 값이 명시적으로 다르다는 조건이 걸려 있었다면 오류를 발생시킵니다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식