메뉴 건너뛰기

Cloudera, BigData, Semantic IoT, Hadoop, NoSQL

Cloudera CDH/CDP 및 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를 나타내고 있습니다. 





번호 제목 날짜 조회 수
58 update를 많이 하면 heap memory가 많이 소진되고 최종적으로 OOM가 발생하는데 이에 대한 설명 2017.04.10 965
57 LUBM 개수별 hadoop HDFS data사이즈 정리 2017.04.06 281
» protege 설명및 사용법 file 2017.04.04 3324
55 fuseki가 제공하는 web ui를 통해서 dataset를 remove->create할 경우 동일한 동일한 이름으로 지정했을때 fuseki-server.jar가 뜨지 않는 현상 2017.02.03 817
54 https://github.com/Merck/Halyard프로젝트 컴파일및 배포/테스트 2017.01.24 246
53 federated query 예제 2017.01.19 925
52 Halyard - RDF4J와 Apache HBase를 이용하여 구현된 TripleStore이며 SPARQL 1.1쿼리를 지원한다. 2016.12.29 811
51 jena의 data폴더를 hadoop nfs를 이용하여 HDFS상의 폴더에 마운트 시키고 fuseki를 통하여 inert를 시도했을때 transaction 오류 발생 2016.12.02 249
50 Jena 2.3를 Hadoop 2.7.2의 NFS로 mount하고 fuseki를 이용하여 start할때 오류 메세지 2016.12.02 1715
49 S2RDF를 이용한 다른 버젼의 github링크 2016.12.02 451
48 데이타 분석및 머신러닝에 도움이 도움이 되는 사이트 2016.11.04 764
47 How-to: Build a Complex Event Processing App on Apache Spark and Drools file 2016.10.31 546
46 동시에 많은 요청이 endpoint로 몰려서java.net.NoRouteToHostException가 발생하는 경우의 처리방법 2016.10.17 776
45 프로그래밍 언어별 딥러닝 라이브러리 정리 file 2016.10.05 683
44 모두를 위한 머신러닝과 딥러닝의 강의 file 2016.09.27 667
43 특정문자열이나 URI를 임의로 select 절에 지정하여 사용할때 사용하는 sparql 문장 2016.08.25 619
42 jena jar파일실행시 org.apache.jena.tdb.TDB.init에서 java.lang.NullPointerException발생시 조치사항 2016.08.19 708
41 Jena는 기본적으로 multi thread환경을 지원하지 않는다. 2016.08.16 567
40 [Elephas] Jena Elephas를 이용하여 Spark에서 rdfTriples의 RDD를 만들고 RDD관련 작업하는 샘플소스 2016.08.10 531
39 슬라이딩 윈도우 예제 2016.07.28 274
위로