메뉴 건너뛰기

Bigdata, Semantic IoT, Hadoop, NoSQL

Bigdata, Hadoop ecosystem, Semantic IoT등의 프로젝트를 진행중에 습득한 내용을 정리하는 곳입니다.
필요한 분을 위해서 공개하고 있습니다. 문의사항은 gooper@gooper.com로 메일을 보내주세요.


*출처: http://wiblee.tistory.com/entry/Protege-튜토리얼-01-프로테제-개요-설치 [Wiblee Note]

*출처: http://wiblee.tistory.com/entry/Protege-튜토리얼-02-프로테제-메뉴-살펴보기 [Wiblee Note]

*출처: http://wiblee.tistory.com/entry/Protege-튜토리얼-03-프로테제와-OWL-Ontology [Wiblee Note]


Protege 튜토리얼 01: 프로테제 개요 & 설치

Wiblee 2015.01.08 17:20

프로테제란?


Protégé(프로테제)는 온톨로지 에디터입니다. 즉 이클립스 같이 개발 환경 지원 툴인데 그 대상이 온톨로지인 것입니다. 


온톨로지란 지식을 표현하는 것으로, 개념들과 개념 사이 관계들을 지정하여 논리 추론 등에 이용하게 됩니다. 


프로테제를 사용해서 온톨로지를 구축하고 온톨로지용 XML 기반 언어인 OWL 형태의 문서로 바꿀 수 있습니다.


프로테제는 현재 4.3 버전이 정식으로 최신 버전이고, 5 beta 버전도 나와 있습니다.


Protégé의 뜻과 의미가 궁금하다면 여기를 참고하세요!






다운로드하여 시작하기


그럼 다운로드하여 켜볼까요?


1. http://protege.stanford.edu/ 에 접속합니다. 

2. 아래로 내려보면 Downloads for Windows 버튼이 있습니다.  우리는 앞으로 5.0 beta 버전을 써볼 겁니다! 클릭하면 다운로드가 시작됩니다.




3. 다운로드가 끝나면 압축을 풉니다.

4.  run.bat을 더블클릭하면 도스창이 켜지고 조금 더 기다리면 아래와 같이 프로테제가 켜집니다.





Protege 튜토리얼 02: 프로테제 메뉴 살펴보기

Wiblee 2015.01.08 17:23



메뉴 구성


Protégé 메뉴를 하나 하나 살펴 보면서 무슨 기능을 하는지 알아봅시다.


먼저 큰 메뉴는 다음과 같습니다.





File : 주로 파일을 열고 저장하는 기능이 모여 있습니다.

Edit : 복사 붙여넣기 같은 기능들이 있습니다.

View : 온톨로지 파일을 보여주는 방식을 바꿉니다.

Reasoner : Reasoner[리즈너]는 reasoning, 즉 추론을 해주는 것입니다. Protege 4.3 버전 부터는 HermiT         Reasoner라는 리즈너가 미리 플러그인 형태로 설치되어 있습니다. 물론 다른 리즈너가 있다면 설치된 폴더 중 plugins 폴더에 복사해서 HermiT 대신 쓸 수도 있습니다. Reasoner 메뉴에서는 리즈너를 선택하고 사용/중지를 할 수 있는 옵션이 있습니다.

Tools : 온톨로지에 관한 도구들...

Refactor : 리팩터 관련...

Window : 창과 탭을 열고 닫는 메뉴

Help : 도움말




그 아래에는 가로로 쭉 나열된 탭들이 있습니다.






Active Ontology 탭은 현재 열려 있는 온톨로지가 무엇인지 보여줍니다. 한 번 웹상에 존재하는 온톨로지 하나를 열어서 살펴볼까요?


1. File > Open from URI를 클릭합니다.

2. http://130.88.198.11/co-ode-files/ontologies/pizza.owl 를 입력하고 확인을 누릅니다.


아래에 나오는 Annotations를 보면 owl 파일의 버전과 코멘트 등을 볼 수 있습니다.



Entities 탭을 눌러 봅시다. 여기에서는 온톨로지의 모든 것을 볼 수 있습니다. 온톨로지는 기본적으로 Class들, Property들, Individual들로 구성됩니다. 


왼쪽의 Class hierarchy 탭에 있는 삼각형들을 눌러보면 클래스들이 계층을 이루고 있는 것을 볼 수 있습니다. 이 피자 온톨로지는 피자의 종류를 분류해 놓은 것입니다. 피자베이스와 피자토핑에 무엇이 있는지를 적으면 나중에 reasoner를 사용해서 피자 토핑이 ㅇㅇ인 피자는 무엇이 있는지 추론할 수 있게 됩니다. 






왼쪽 탭에서 하나 누르면 오른쪽 탭에 Annotations와 Description이 나오게 됩니다. Annotations는 이 클래스의 정보를 적어놓은 것이고, Description은 이 클래스와 다른 클래스와의 관계들을 나타낸 것입니다. 


왼쪽 아래에는 여러 개의 탭이 함께 있는데, 이 중에 Object property hierarchy를 눌러봅시다.





Property는 이렇게 클래스와 클래스 사이 관계를 나타내는 것입니다. 예를 들어 isToppingOf는 '~의 토핑'이라는 뜻이고, Topping 클래스와 Pizza 클래스 사이의 관계입니다. 이렇게 관계를 정해 놓으면 나중에 reasoning을 할 수 있게 됩니다.


왼쪽 아래 탭 중에 Individuals by type을 누르면 Individual이 나옵니다. Individual은 클래스에 속하는 것입니다. 객체지향 컨셉에서의 인스턴스와 비슷한 것으로 볼 수 있습니다.

 



 

이 피자 온톨로지에는 Country 클래스에 속하는 다섯 개의 나라 Individual이 들어있는 것을 볼 수 있습니다. 



이 강좌는 맨체스터 대학의 Protégé OWL Tutorial를 참고로 작성되었습니다.


 

OWL 온톨로지란


온톨로지는 특정 도메인의 지식을 표현하기 위한 것입니다. 온톨로지는 도메인의 개념들을 묘사해야 하는데, 이를 위하여 여러 온톨로지 언어들이 존재합니다. 그 중 온톨로지의 표준 언어는 W3C가 제정한 OWL입니다. 


OWL 온톨로지는 Protege 기반 온톨로지와 비슷한 구성요소를 갖지만, 몇몇 용어들은 조금 다르기 때문에 이를 숙지하고 있어야 합니다. 가령, 아래 표에서 OWL 온톨로지에서의 Individual이라는 용어는 Protege 기반 온톨로지에서 Instance라는 용어와 같은 의미라는 것을 알 수 있습니다.


OWL 온톨로지와 Protege 기반 온톨로지에서 서로 상응하는 용어

 OWL 온톨로지

 Protege 기반 온톨로지 

 Individual

 Instance

 Property

 Slot

 Class

 Class



그러면, 온톨로지의 개념을 확고하게 머릿속에 정립하기 위해 Individual, Property, Class에 대하여 각각 알아보겠습니다.



Individual


Individual은 특정 도메인의 '객체'를 의미합니다. OWL 온톨로지의 Individual은 서로 다른 두 이름이 같은 객체를 가리킬 수도 있지만, Protege 기반 온톨로지에서는 Unique Name Assumption(UNA)를 따르므로, 이름이 다르면 반드시 다른 객체여야 합니다.


Protege 온톨로지의 시각화에서 Individual은 보통 '◇'와 같은 다이아몬드 표시로 나타냅니다. Protege에서 Individual은 Instance라고 불린다는 것을 기억해주세요.



Property


 Property는 Individual과 Individual 사이의 관계(relation)입니다. 둘 사이의 관계이므로 Property는 binary relation입니다.


예) "Mathew has sibling Gemma" 라는 문장에서, 

"Mathew"와 "Gemma"는 각 사람을 나타내는 Individual,

"hasSibling"은 sibling이라는 관계에 있음을 나타내는 Property로 볼 수 있습니다.



Property는 inverse property를 가질 수 있습니다. 예를 들어 hasOwner의 inverse는 isOwnedBy가 됩니다. 이와 유사하게 property는 경우에 따라 transitive일 수도 있고, symmetric일 수도 있습니다. 


Transitive는 어떤 관계에 대하여 a->b이고, b->c이면 a->c라는 것입니다.

Symmetric은 어떤 관계에 대하여 a->b이면, b->a라는 것입니다.


Property는 보통 화살표로 나타내며, Protege에서 Slot이라고 불립니다.



Class


Class는 Individual을 분류하는 일종의 묶음입니다. Class는 Superclass와 Subclass의 계층 구조를 가지고 있습니다. 예를 들어, Animal은 Cat이라는 subclass를 포함하여, Cat의 입장에서는 Animal은 Superclass입니다.


Class는 Protege에서도 Class라 불리며, 보통 Individual들을 동그라미로 묶어서 표현합니다.







위 그림은 맨체스터 대학 자료의 그림을 가져온 것으로, Individual, Property, Class를 나타내고 있습니다. 





번호 제목 글쓴이 날짜 조회 수
379 Caused by: java.lang.ClassNotFoundException: org.apache.spark.Logging 발생시 조치사항 총관리자 2017.04.19 284
378 [Jsoup]특정페이지를 jsoup을 이용하여 파싱하는 샘플소스 총관리자 2017.04.18 205
377 [jsoup]Jsoup Tutorial 총관리자 2017.04.11 146
376 update를 많이 하면 heap memory가 많이 소진되고 최종적으로 OOM가 발생하는데 이에 대한 설명 총관리자 2017.04.10 717
375 LUBM 개수별 hadoop HDFS data사이즈 정리 총관리자 2017.04.06 142
374 Container killed by the ApplicationMaster. Container killed on request. Exit code is 143 Container exited with a non-zero exit code 143 TaskAttempt killed because it ran on unusable node 오류시 조치방법 총관리자 2017.04.06 324
» protege 설명및 사용법 file 총관리자 2017.04.04 2731
372 streaming작업시 입력된 값에 대한 사본을 만들게 되는데 이것이 실패했을때 발생하는 경고메세지 총관리자 2017.04.03 126
371 [메모리 덤프파일 분석] 총관리자 2017.03.31 198
370 JavaStreamingContext를 이용하여 스트림으로 들어오는 문자열 카운트 소스 총관리자 2017.03.30 125
369 nc -l 7777 : 7777포트에서 입력을 받는다. 총관리자 2017.03.23 278
368 kafka-manager 1.3.3.4 설정및 실행하기 총관리자 2017.03.20 617
367 spark 2.0.0의 api를 이용하는 예제 프로그램 총관리자 2017.03.15 199
366 It is indirectly referenced from required .class files 오류 발생시 조치방법 총관리자 2017.03.09 93
365 spark2.0.0에서 hive 2.0.1 table을 읽어 출력하는 예제 소스(HiveContext, SparkSession, SQLContext) 총관리자 2017.03.09 163
364 spark에서 hive table을 읽어 출력하는 예제 소스 총관리자 2017.03.09 37
363 spark에서 hive table을 읽어 출력하는 예제 소스 총관리자 2017.03.09 35
362 [shell script]test.txt에 space로 분리된 내용을 일어들이는 예제 총관리자 2017.02.21 198
361 [shell script] 파일을 한줄씩 읽어서 파일내용으로 명령문 만들고 실행하는 shell script예제 총관리자 2017.02.21 224
360 [vi]블럭 및 문서내 복사등에 관련된 명령어 총관리자 2017.02.17 27

A personal place to organize information learned during the development of such Hadoop, Hive, Hbase, Semantic IoT, etc.
We are open to the required minutes. Please send inquiries to gooper@gooper.com.

위로