메뉴 건너뛰기

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를 나타내고 있습니다. 





번호 제목 글쓴이 날짜 조회 수
» protege 설명및 사용법 file 총관리자 2017.04.04 2740
78 Jena 2.3를 Hadoop 2.7.2의 NFS로 mount하고 fuseki를 이용하여 start할때 오류 메세지 총관리자 2016.12.02 1557
77 거침없이 배우는 Drools 책의 샘플소스 file 총관리자 2016.07.22 1232
76 update를 많이 하면 heap memory가 많이 소진되고 최종적으로 OOM가 발생하는데 이에 대한 설명 총관리자 2017.04.10 717
75 fuseki용 config-examples.ttl 예시 내용 총관리자 2017.05.17 646
74 Halyard - RDF4J와 Apache HBase를 이용하여 구현된 TripleStore이며 SPARQL 1.1쿼리를 지원한다. 총관리자 2016.12.29 630
73 동시에 많은 요청이 endpoint로 몰려서java.net.NoRouteToHostException가 발생하는 경우의 처리방법 총관리자 2016.10.17 508
72 DataSetCreator실행시 "Illegal character in fragment at index"오류가 나는 경우 조치방안 총관리자 2016.06.17 480
71 Drools 6.0 - 비즈니스 룰 기반으로 간단한 룰 애플리케이션 만들기 file 총관리자 2016.07.18 440
70 ontology, jena, sparql등 전반에 대한 설명및 예제를 제공하는 사이트 총관리자 2015.12.08 427
69 S2RDF를 실행부분만 추출하여 1건의 triple data를 HDFS에 등록, sparql을 sql로 변환, sql실행하는 방법및 S2RDF소스 컴파일 방법 총관리자 2016.06.15 410
68 sparql 문법구조 설명 file 총관리자 2015.12.09 378
67 특정문자열이나 URI를 임의로 select 절에 지정하여 사용할때 사용하는 sparql 문장 총관리자 2016.08.25 376
66 System Properties Comparison Elasticsearch vs. Hive vs. Jena file 총관리자 2016.03.10 285
65 룰에 매칭되면 발생되는 엑티베이션 객체에 대한 작업(이전값 혹은 현재값)을 처리하는 클래스 파일 총관리자 2016.07.21 285
64 SPARQL의 유형, SPARQL 만들기등에 대한 설명 총관리자 2016.02.18 274
63 fuseki에 update하는 방법(java api이용)및 주의 사항 총관리자 2015.12.30 258
62 sparql 1.1 BIND(if() as ?bind변수) 버그로 추정되는 문제점및 해결방안 -> select 문에 (if(,,) as ?bind변수) file 총관리자 2016.01.21 257
61 ?a는 모두 표시하면서 ?b와 비교하여 ?a=?b는 표시하고 ?a!=?b 인경우는 ""로 구성된 결과 집합을 구하는 경우 file 총관리자 2016.01.29 255
60 How-to: Build a Complex Event Processing App on Apache Spark and Drools file 총관리자 2016.10.31 253

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.

위로