Archive for the ‘Semantic Web’ Category

OPO : Online Presence Ontology

OPO : Online Presence Ontology를 소개해보려고 합니다.

eab7b8eba6bc-2

OPO : The Online Presence Ontology는 온라인상에서 사용자들의 존재(presence)에 대한 정보를 서술하기 위한 Concepts과 Properties를 제공합니다. 즉, 온라인상에서 사용자의 존재(presence)와 관련되어 있는 모든 데이터들에 대한 의미적인 설명과 어플리케이션간의 상호교환이 가능하게끔 해주는데 그 목적이 있습니다.

예를들어, Instant Messaging Tool을 생각해보면,

eab7b8eba6bc-5

온라인 상에서의 나의 상태 정보(Online Status), 나의 연락처(contacts), 나의 activity(노래를 듣고 있군요), 내가 메세지를 수신할지 말지, 그리고 나를 나타내고 있는 이미지(아바타)등이 나타나고 있는데, OPO는 이러한 정보를 의미적으로 표현해주게 됩니다. – OPO의 구조는 FOAF와 SIOC와 결합되어 사용할 수 있습니다.

OPO의 핵심 Classes 들은 아래의 그림과 같이 설명될 수 있습니다.

eab7b8eba6bc-1
(클릭하시면, 크게 보실 수 있습니다.)

상세한 classes와 properties는 OPO Specification을 참조하시면 됩니다.

이제 간단한 예제를 살펴보도록 하겠습니다.

eab7b8eba6bc-6

이 예제는 milstan이 자신의 online presence를 나타내고 있습니다.

이 예제의 Online Presence는,

foaf:Agent로 정의된 리소스 – 여기서는 간단하게 milstan 이라 하죠 – milstan은 어플리케이션으로 부터 notifications을 받을 수 있으며(ALLNotificationsPass), 웹상의 누구라도 contact정보를 찾을 수 있습니다.(PubliclyFindable).

그리고 “singing in the rain”라고 자신의 StatusMessage를 표현하고 있으며, 이 agent는 시스템에서 활동하고 있으며(Active), 웹상의 누구라도 연락할 수 있으며(FreelyContactable), 다른 agent와도 contact할 수 있고(Available), agent의 온라인 상태가 다른 agent에 보이게 됩니다.(Visible). 이와 같이 정의함으로써 이 예제의 온라인 상태는 – SkypeMe mode에 해당하는 – IM status에 사용될 수 있습니다.

OPO Project의 다른 예제 – 예를들면, fb나 tweet등의 status에 대한 표현등. – 는 여기서 확인하실 수 있습니다.

사용자의 온라인 상태를 어떤 어플리케이션을 사용하던간에 동일하게 보여줄 수 있을 것 같다는 생각이 들어 매우 재미있어 보이는 Project 입니다. 예를들어, 내가 어떤 노래를 들고 있는데, 이 상태가 메신저뿐만 아니라, twitter, facebook에도 나타나게 되면, 나름대로 재미있지 않을까요?

The Semantic Web VoCamp Seoul 2009 : RDF Vocabularies

지난 금요일(5월29일)에 The Semantic Web VoCamp Seoul 2009 : Summer에 참석해서 RDF Vocabularies에 대해서 발표한 내용입니다.


개인적으로 무척 즐겁고 재미있는 시간이었지요.  간단하게 발표 내용을 summary 해봅니다.

The Social Web은 공유된 매개체를 통해 연결된 사람들에 대한 이야기입니다. 흔히들 현재 SNS platform을 구성하는 세가지 block을 Identity, Friends, and Feed 라고 이야기 하고 있습니다.(Facebook을 생각해보면, 그 의미를 이해하실 수 있을 것이라 생각됩니다. – 나와 친구들의 이야기(온라인상에서의 활동)를 news feed를 통해 살펴보고 이야기 할 수 있는 것이죠. – ).

이러한 Social Web을 구성하는 major building blocks을 Semantic Web의 측면에서 – RDF Vocabularies(FOAF, SIOC, SKOS…)를 통해 – 접근해 보려고 합니다.

the Web은 리소스(사람, 문서, 데이터..)로 연결된 사회적인 연결망이라고 보았을 때, 이러한 리소스들간의 관계에 의미를 부여하고자 하는 노력이 Semantic Web이라 할 수 있습니다.

RDF(Resource Description Framework)는 리소스에 대한 정보를 의미적으로 표현해주는 언어입니다. RDF의 강력함 중의 하나는 바로 ‘웹상에 이미 정의된 다양한 classes and properties’를 REUSING할 수 있다는 것입니다.

RDF Vocabulaires란 ‘웹상에 이미 정의된 Classes와 Properties의 집합’이라고 볼 수 있습니다.  다양한 vocabularies들이 존재하지만, 여기에서는 다음의 세가지를 다루어 보려고 합니다.

  • FOAF – Friend of a Friend
  • SIOC – Semantically-Interlinked Online Community
  • SKOS – Simple Knowledge Organization System

FOAF(Friend of a Friend)는 온라인상에서의 자신(사람들의)의 identity와 그것에 기반한 사회적인 관계(social graph)를 표현해주는 vocabulary 입니다. 즉, 사람(People) – 이름, 생년월일, 취미, 조직, 이메일주소,… – , 사람간의 관계(Relationships) – a network of friends – 를 machine readable하게 표현해줍니다.

즉, Social Web의 Identity와 Friends는 FOAF를 통해서 의미적으로 표현할 수 있습니다.

온라인상에서 나의 identity는 매우 다양하게 표현이 됩니다.

vocamp

FOAF는 이렇게 분산되어 있는 사용자의 Identityd와 friends를 통합할 수 있습니다.

vocamp1

또한 다양한 network of friends를 의미적으로 상호연결할 수 있습니다.

vocamp2

그리고 FOAF를 통해 분산되어 있는 자신만의 Social Graph를 통합할 수 있습니다.

vocamp3

FOAF가 ‘Who I am’으로 말할 수 있는 ‘identity’와 ‘Who I know’라고 말할 수 있는 ‘friends’를 의미적으로 표현해 줄 수 있다는 것을 살펴봤습니다.

SIOC(Semantically-Interlinked Online Communities)은 온라인 커뮤니티의 콘텐츠와 그 구조를 의미있게 표현해주는 온톨로지 입니다. FOAF와 함께 사용함으로써 이를 통해 온라인상에서의 나와 친구들의 다양한 activities를 의미적으로 표현해줄 수 있습니다.

  1. 사용자들은 콘텐츠를 포스팅, 태깅, 공유합니다.
  2. 태그를 통해(또는 social graph)를 콘텐츠를 살펴봅니다.
  3. 코멘트를 통해 논의를 하고
  4. 이렇게 포스팅된 콘텐츠를 통해 서로 연결이 됩니다.

이런 일반적인 시나리오를 생각해봤을 때,  SIOC은 이러한 사용자들과 커뮤니티간의 액션, 사용자들과 사용자들간의 액션을 의미적으로 표현할 수 있게 해줍니다. 즉, 온라인 커뮤니티에서의 사회적인 활동을 표현해주는 온톨로지라고 할 수 있습니다.

vocamp4

이 그림은 twitter에서의 두 사람의 활동을 FOAF와 SIOC을 통해 표현한 내용입니다.

여기서 앞에서 전제로 말씀드렸던, Identity, Friends, and Feed를 다시 한번 고려해보면,

다음과 같은 paradigm을 생각해볼 수 있을 것 같습니다.

Archiving/Displaying your Social Activities

Browsing/Navigating your friends Social Activities

이러한 패러다임을 Semantic Web의 기술(RDF Vocabularies)을 통해서 적용해보는 것은 매우 재미있고, 의미있는 시도가 될 수 있을 것 같습니다.

SKOS는 Knowledge Organization Systems을 연결하고 공유하기 위한 일반적인 데이터 모델입니다.  이를 통해 사용자들의 activities에 대한 실제 내용을 의미적으로 연결할 수 있습니다.

vocamp5

‘Concept’을 통해 semantic relation을 표현해줍니다.

마지막으로 즐거운 시간을 마련해주신 sonagi님과 참석하신 모든 분들께 수고하셨다는 말을 드리고 싶네요.

다음번엔 더 재미있는 시간들로 다가와주길 기대해보면서 말이죠….. ^^)b

Zigtag & MOAT

Zigtag(http://www.zigtag.com/)은 Social bookmarking Tool 입니다.

Tag를 통해 웹사이트들을 저장하고, 검색할 수 있으며, 다른 사람들과 공유할 수 있다는 측면에서는 여타의 social bookmarking sites 들과는 다를 것이 없습니다.

하지만, 다른 social bookmarking sites들과 구별되는 가장 큰 특징은, Zigtag의 tags들은 의미를 가지고 있다는 것이죠. 즉, Tag에 의미를 부여할 수 있다는 것이죠. : Meaning of a Tag

 

Tag는 다양한 리소스들을 연결시켜주는 매우 효율적인 방식입니다. 하지만, 몇가지 문제점을 가지고 있지요.

첫번째는, 동일한 의미를 가지지만 다양하게 표현될 수 있는 keyword들에 대한 selection problem입니다.

예를들어, 서울, 서울시, 서울특별시, Seoul 등은 동일한 의미를 가지지만, 그것의 표현은 매우 다양합니다. 하지만, tag 자체는 이것이 동일한 의미를 가지고 있다는 것을 알지 못하지요. ‘서울’이라는 tag로 검색했을 때, ’seoul’이라는 tag를 가진 리소스들을 찾을 수 없는 문제를 가지고 있습니다.

두번째는, tag definition problem 입니다.  ’광주’라는 tag를 달았을 때, 이것이 ‘경기도의 광주’인지, ‘광주광역시’를 의미하는 것인지 알 수 없습니다.

 

Zigtag은 이러한 tag problem들을 해결하는 시스템을 제공하고 있습니다.

Tag의 사용시에 이미 정의된 tag의 의미를 리스팅해줍니다. 이를 통해 사용자들은 정확한 표현과 정확한 의미의 Tag를 사용할 수 있습니다.

현재 zigtag는 220만개의 defined tags를 가지고 있다고 합니다. – 사실 맨 처음 zigtag를 살펴볼 때, 사용자들이 어떻게 tag의 의미를 정의할까?를 살펴보고 싶었는데, 사용자들이 tag의 의미를 정의하지는 않고 zigtag 자체에서 꾸준히 정의된 태그를 업데이트 하고 있더군요. -.-)b

 

MOAT(Meaning of A Tag)은 사용자의 Tag에 의미를 주기위한 Semantic Web Framework입니다.

Moat 역시 사용자들이 문맥에 따라 다른 의미를 가질 수 있는 tags 또는 같은 의미이지만 다른형태로 표현되는 언어를 사용하는 문제를 해결하기 위하여 Tag에 의미를 정의하고자 하는 목적을 가지고 있습니다.

 

Moat의 Scenario는 다음과 같습니다.

  1. 사용자는 컨텐츠를 생성하고 그것에 태그를 단다.
  2. Moat client는 각 태그에 대하여 moat server에 쿼리를 날린다.
  3. 각각의 태그에 대해서 moat server는 태그의 의미를 정의한 URI 리스트를 리턴한다.
  4. 사용자는 각 태그에 대한 의미있는 URI를 선택한다.
  5. 사용자가 컨텐츠를 저장한다.
  6. 컨텐츠는 semantic web에 발을 담군다.

입니다. ^^

MOAT은 tag의 정확한 의미 지정을 위해 semantic web resources(dbpedia, geonames… or any knowledge base)의 URIs를 사용합니다.

또한 사용자가 직접 새로운 의미를 지정할수도 있습니다.

 

MOAT에 대해서는 좀 더 살펴봐야 하겠지만, 실제로 적용해보려는 시도에서 몇가지 문제점이 있더군요.

첫번째는 역시 한글로 표현되는 태그들에 대한 문제입니다. – 영어를 주로 사용하는 사람들을 위한 기획자들은 참 좋을 것 같아요. -.-)b

정확한 의미를 가지고 있는 URI의 지정과 의미의 확장이라는 두가지 핵심의 문제에 있어서 실제로 한글로 구성된 Tag의 적용이 상당히 어렵게 느껴지고 있습니다.

ko.wikipedia, 포털들의 백과사전등을 고려해보고 있지만, 의미를 지정할 수는 있겠지만, 각 의미간의 연관성의 문제를 해결해줄 수는 없을 것 같네요. 의미간의 연관성의 문제는 별도로 고려해봐야 할 듯 합니다.

또한 한글/영어간의 표현에 있어서도 똑같이 tag problems이 존재합니다.

 

역시 노가다가 필요한걸까요? ^^

Return top

Sangwon Yang

현명한 사람이 되고 싶은 두 아이의 아빠