[Semantic Web] RDFS

etc... 2017. 2. 6. 07:57

RDFS 개념은 Object-Oriented Programming 개념과 거의 같다고 보면 된다. OOP에 대해서는 아래의 Link에 포스팅을 해두었으니 OOP에 대해서 전혀 모르는 분들은 참고하길 바란다.

Link : http://operatingsystems.tistory.com/entry/Programming-OOP

 

RDFS는 이전 포스팅에서 이야기했듯이, 세상의 모든 사물과 개념들을 표현하기 위한 기본 틀이 필요하다. 예를 들어, 사람을 표현할 때는 나이, , 몸무게, 시력 등등의 개념들이 필요하다. 따라서 사람을 표현하기 위한 기본 틀은 위와 같은 요소들을 가지고 있어야 한다. 우리가 앞으로 이 기본 틀을 Class라고 부를 것이다. OOP에서도 Class라고 부른다. Java로는 아래와 같이 표현할 수 있다.

 

Class를 이용해서 우리는 각각의 객체들을 생성해낼 수 있다. 위의 Person Class를 가지고 우리는 무수히 많은 사람들을(객체들을) 생성해낼 수 있다.

 

이와 같은 원리를 똑같이 RDF를 통해 살펴보자.

 

왼쪽의 코드가 오른쪽의 그래프로 표현이 가능하다는 말이다. (엄밀히 말하면 뭔가 하나가 추가되어야 하는데 개념을 이해하는데는 위의 그래프로도 무방하다. 무시해도 좋다.) 위의 그래프는 Class만 표현이 되어있는데 한번 person 객체 john을 추가해보자.


animal, person, horseclass이고 john은 객체이기 때문에 모양을 다르게 그려놨다.

 

RDF에서 데이터를 문장처럼 하나하나씩 설명을 하고 있다면, RDFS에서는 Class라는 개념을 통해서 데이터가 실제 세계와 비슷하게 그려질 수 있도록 관계를 나타내주고 있다. 이와 같이 Class의 구조를 설명하는 것 이외에 RDFS가 할 수 있는 것은 각 Class의 특징들을 명시해줄 수 있다는 것이다. 예를 들어 RDFS에서 subClassOf을 통해 어떤 Class가 어떤 Class 밑에 있는 것인지 명시해줄 수 있다. 사실 위에서 이미 적어뒀는데, person Classanimal ClasssubClass가 되기 때문에 RDFS를 작성할 때 반드시 아래와 rdfs:subClassOf로 명시를 해줘야 한다.

이와 같이 특정 Class의 특징들을 명시해주는 것이 아래와 같이 여러 개 있다.


위의 것들은 지금 설명하지 않고 다음 포스팅에서 설명할 OWL을 설명하면서 이야기하려고 한다.

 

지금 이 시점에서 Linked Data의 개념을 다시 생각해보자. Linked Data는 결국 데이터가 어떻게 이어져 있는지를 설명해주는 것이다. 그것이 결국 RDFS와 같이 구조적으로 Class들이 서로 이어져 있는 형태로 존재한다는 것이다.

 

다음 포스팅에서는 조금 더 OWL을 설명하려고 한다. OWLWeb Ontology Language의 약자이고, 이것을 통해 진정 Ontology 개념을 설명할 수 있다.

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

[High Performance Computing] MPI  (1) 2018.02.19
[Semantic Web] OWL (Web Ontology Language)  (2) 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 빛나유
,

이번 포스팅에서는 Linked DataRDF를 설명하려고 한다.

 

Linked Data는 말 그대로 연결된 Data를 의미하며 그 이외의 뜻은 없다.

보통 데이터들을 생각하면 그냥 무작정 쌓여있는 데이터를 생각한다. 1GB만큼 쌓여있는 web log 데이터. 10TB 정도 되는 어느 큰 도서 정보. 이것들은 그냥 무작정 쌓여있는 데이터이다. Linked Data는 각각의 데이터들이 이어져 있는 것이다. 아래와 같이 연결된 Data Linked Data라고 한다.

출처 : https://virtuoso.openlinksw.com/presentations/Creating_Deploying_Exploiting_Linked_Data2/Creating_Deploying_Exploiting_Linked_Data2.html

 

이전 포스팅에서 잠깐 Linked Data에 대해서 “Ontology에서 데이터가 표현되는 기본적인 방식이라고 설명을 했었다. Ontology에서 데이터는 위와 같이 이어져있다. 아직 구체적으로 이해가 되지 않겠지만, 그냥 데이터가 이어져 있다정도로만 이해하고 넘어가도 큰 무리는 없다. 나중에 RDFS까지 설명이 되면 그 때는 Linked Data의 의미가 확실하게 이해될 것이다.

 

다음에 RDF를 설명해보자. 이전 포스팅에서 RDFOntology에서 존재하는 가장 작은 단위의 데이터 집합이라고 말을 했었다. 문장 같은 것이라고 말을 했다. 우선 예를 먼저 봐보자.

문장1 : Apple is founded by Steve Jobs


 “Apple”이라는 회사와 “Steve Jobs”라는 사람이 “is founded by” 관계로 이어져 있다. 그리고 또 다른 문장을 봐보자.

문장2 : Steve Jobs died on 2011/10/05


문장1과 문장2는 아래와 같이 서로 이어질 수 있다.


 

자 그러면 아래와 같은 문장을 더 추가해서 위의 그림에 한번 추가해보자.

문장3 : Apple is a competitor of Microsoft

문장4 : Microsoft is founded by Bill Gates

문장5 : Bill Gates is a friend of Steve Jobs

 

자 이런 식으로 세계의 모든 관계들을 표현한다고 해보자. 음 가능할 것 같기는 한데 뭔가 굉장히 무식한 방법이라는 생각이 든다. 왜냐하면 위의 그림에서(그래프) 봤을 때 Steve JobsBill Gates는 사람이고 2011/10/05는 날짜이고 MicrosoftApple은 회사인데, 그러한 구분이 전혀 없다. 이렇게만 놓으면 컴퓨터는 Microsoft-Bill Gates와의 관계가 Apple-SteveJobs와의 관계와 같다까지만 알지 SteveJobs가 사람인지 사물인지는 알 수 없다. 이것을 알게 해주기 위해서 우리는 Class라는 것을 만든다. OOP에서 설명하는 그 Class이다. 그리고 그 Class개념이 들어간 RDFRDFS이다.

 

이번 포스팅은 여기서 마무리 하고 다음 포스팅에서 RDFS에 대해서 설명해보자.

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

[Semantic Web] OWL (Web Ontology Language)  (2) 2017.02.06
[Semantic Web] RDFS  (0) 2017.02.06
[Semantic Web] Basic of Semantic Web  (2) 2017.02.06
[Tensorflow] Multi linear Regreassion  (1) 2016.11.27
[Tensorflow] Basic of Tensorflow  (0) 2016.11.27
Posted by 빛나유
,

최종적으로 Ontology를 설명하기 위해서 Semantic Web에 대해 살짝 이야기해보고 넘어가자.

 

1999Tim Berners-Lee라는 사람은 이런 말을 했다.

컴퓨터가 웹에 있는 데이터의 관계를 마치 사람처럼 이해했으면 한다는 것이 포인트이다. 데이터를 이해한다가 무엇인지 한번 개념적으로 이야기를 해보자.

 

문장1 : “내가 태어난 날은 828일이다.”

문장2 : “내 생일은 828일이다.”

 

문장1과 문장2는 같은 문장이다. 그런데 컴퓨터는 이 두 개를 같은 문장이라고 이해하지 않는다. 생일과 태어난 날이 같다는 개념을 모른다. 컴퓨터 입장에서는 “828을 그냥 어떠한 관계로 엮어버렸을 뿐이다. 위의 문장1과 문장2를 데이터를 표현하기 위해서 많이 사용하는 XML 파일로 쓰자면 이렇게 쓸 수 있다.

 

문장1.xml을 내가 썼고, 문장2.xml을 다른 사람이 썼을 경우, 원래 컴퓨터는 이 두 개가 같은 뜻이라는 것을 모른다. 또 다른 문제를 이야기해보자. Apple이라고 했을 때, 누구는 스티브잡스의 Apple을 생각하고 또 다른 사람은 과일 Apple을 생각한다. 이런 문제들을 어떻게 해결할까? 두 문제는 모두 컴퓨터가 실제로 데이터의 속성을 파악하지 못 해서 발생한다. 그것을 가능하게 하기 위해서 Ontology를 사용한다.

 

Ontology는 원래 철학쪽에서 존재와 같은 개념으로 쓰이는 것 같다. 그런데 컴퓨터 쪽에서 Ontology는 세상의 모든 사물들 간의 관계를 나타내는 것으로 쓰인다. 마치 Object-Oriented Programming(객체지향언어)과 같이 말이다.

 

최종적으로 Ontology를 알기 위해서 어떤 것을 공부해야 하는지 알아보자.

Linked Data : Ontology에서 데이터가 표현되는 기본적인 방식이다.

RDF : Ontology에 존재하는 가장 작은 단위의 데이터 집합이다. 우리가 보통, 책에 챕터가 있고 챕터 안에 문단이 있고 문단 안에 문장이 있는데, RDF는 문장이라고 생각하면 된다. 즉 데이터를 표현하는 문장이라고 생각하면 된다.

RDFS : 여러 개의 RDF를 이어서 만들어진 Class들의 집합. OOP에서 Class라고 생각하면 쉽다.

OWL : 여기서부터 실제로 RDFS에서 만들어진 Class간의 관계를 정의할 수 있다.

 

위의 설명은 어렵게 되어있다. 나도 안다. 그래서 앞으로 2~3개의 포스팅에 걸쳐서 위의 개념들을 쉽게 설명할 것이고 그러면 Ontology에 대한 개념은 어느 정도 마무리가 되지 않을까 싶다.

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

[Semantic Web] RDFS  (0) 2017.02.06
[Semantic Web] Linked Data and RDF  (0) 2017.02.06
[Tensorflow] Multi linear Regreassion  (1) 2016.11.27
[Tensorflow] Basic of Tensorflow  (0) 2016.11.27
[Programming] OOP  (0) 2015.12.18
Posted by 빛나유
,