OWL을 설명해보자. OWL Web Ontology Language의 약자로 WOL이라고 하면 뭔가 읽기도 이상해서 OWL이라고 살짝 순서를 바꿔서 약자를 지었다고 한다. 지금까지 이전 포스팅에서 설명한 RDFS까지의 내용을 보면 확실히 뭔가 세상의 물체의 개념은 설명이 가능할 것 같다. 그렇지만 아직 관계는 그렇게 확실하게 설명하지 못한다.

 

예를 들어, 지금까지 RDFS를 통해서 person Classanimal Classsubclass라는 것을 명시할 수 있다고 했다. 그런데 이 정도 수준이 전부이다. RDFSDateOfBirth ClassBirthDay Class가 같은 Class라는 것을 알 수 있나? 모른다. RDFS에서는 이 두 Class는 그저 서로 다른 Class일 뿐이다. , RDFS로는 컴퓨터가 DateOfBirthBirthDay가 같은 것을 의미한다는 것을 모른다. 또 다른 예를 들어보자.

- John is a Father of Michael.

- Marry is a John’s sister.


이 두 문장으로 예를 들어보자. JohnMichael의 아버지고 MarryJohn의 여동생이니까, 우리는 굳이 말하지 않아도 Michael의 이모는 Marry라는 것을 안다. 그런데 컴퓨터는


Marry is an aunt of Michael


이라고 명시해주지 않는 이상 모른다. 이것을 어떻게 컴퓨터도 알 수 있게 할까? 컴퓨터가 Class간의 관계를 이해하고 추론할 수 있게 하기 위해서 우리는 Ontology를 이용하는 것이다. 이제 본격적으로 Ontology를 이용해서 구체적으로 어떤 방법으로 Class간의 관계를 명시하는지를 설명해보자.

 

대학교를 설명하는 Ontology를 만든다고 할 때, 기본적으로 몇몇 Class가 있을 것이다.

- Student

- Professor

- Course

- Lab


Class들 사이에는 당연히 아래와 같은 관계들이 존재한다.

- Professor Teach Student

- Student BelongsTo Lab

- Lab IsOwnedBy Professor

- Student Take several Course


더 많이 만들 수 있지만 예제로 간단하게 만드는 것이니 이 정도만 하기로 하자. 살짝 부연 설명을 하면, “모든 교수들은 학생들을 가르친다는 당연한 이야기이다. “마찬가지로 학생들이 Lab에 속한다역시 당연한 것이다. (그렇다고 하자) 위의 네 문장을 OWL로 표현을 하면 이와 같이 표현할 수 있다.

 

위와 같이 정의를 해두면 가령 누군가가 StudentProfessorTeach한다라고 썼을 경우 오류가 나게 된다. “Student Teach Professor”가 잘못된 문장이라는 것을 컴퓨터가 이해할 수 있게 된다. Ontology에서 이와 같은 것을 Object Property라고 한다. 객체들이 가져야 되는 속성이라는 것이다. Teach라는 것은 반드시 주어 부분에 Professor가 와야 하고 목적어 부분에는 Student가 와야 된다는 속성이라는 말이다.

 

DataType Property라는 것도 있다. 이것도 어려운 내용은 아니다. 예를 들어 모든 학생은 나이가 있다. 그래서 아래와 같이 정수(Integer)형으로 ageDataTypeStudent에 대하여 정의해준다.


age라는 것은 반드시 그 범위가 음수가 아닌 정수여야 한다는 것을 명시적으로 정의해준 것이다. 이렇게 해두면 누군가가 학생 John의 나이는 -10살이다라고 했을 때 컴퓨터가 그것이 틀렸다는 것을 알 수 있게 된다.

이제 OWL이 어떤 면에서 Class들간의 관계를 설명한다는 것인지 어느 정도 감이 올 것이다. 추가적으로 몇 개를 더 해보자. 가령 이런 것도 가능하다. “생일태어난 날이라는 Class가 같다는 것은 아래와 같이 정의할 수 있다.


equivalentClass 구문을 이용해서 BirthDayDateOfBirth가 같은 Class라는 것을 명시해줬다. 반대 관계도 표현할 수 있다.


TeachIsToughtBy는 반대말이라는 것을 추가적으로 명시해줬다. 따라서 Teach는 주어 부분에 Professor를 두고 목적어 부분에는 Student를 두며 IsToughtBy와는 반대관계라는 것을 정의할 수 있다.

 

지금까지 설명한 내용들은 OWL을 이해하기 위함이지 그것의 전부가 아니다. OWL에서 관계를 표현할 수 있는 방법은 무수히 많고 지금까지 설명한 것은 빙산의 일각에 불과하다. 실제로 구현된 OntologyGoogleKnowledge GraphFacebook Graph Search를 보자.

 

# Google’s Knowledge Graph

http://searchengineland.com/laymans-visual-guide-googles-knowledge-graph-search-api-241935


# Facebook’s Graph Search

https://neo4j.com/blog/why-the-most-important-part-of-facebook-graph-search-is-graph/

 

이것으로 Ontology에 대한 설명은 마치려고 한다. 다음 포스팅은 뭐가 될지 모르겠지만 뭔가 비슷한 분야가 되지 않을까 싶다.

'etc...' 카테고리의 다른 글

[High Performance Computing] MPI  (1) 2018.02.19
[Semantic Web] RDFS  (0) 2017.02.06
[Semantic Web] Linked Data and RDF  (0) 2017.02.06
[Semantic Web] Basic of Semantic Web  (2) 2017.02.06
[Tensorflow] Multi linear Regreassion  (1) 2016.11.27
Posted by 빛나유
,