전에 RDFa에 대해 살짝 소개했었지요. RDFa in XHML이 Candidate Recommendation되었습니다.

소식 : http://www.w3.org/News/2008#item114

RDFa Primer
http://www.w3.org/TR/2008/WD-xhtml-rdfa-primer-20080620/
RDFa in XHTML: Syntax and Processing
http://www.w3.org/TR/2008/CR-rdfa-syntax-20080620/
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by kwangsub

오늘은 RDFa에 대해 소개합니다.

시맨틱웹을 만드는데 필요한 것들이 무엇이 있을까 생각해본적이 있습니다. 이 팀블로그가 만들어지면서 이런저런 개념, 기술들을 나열해 봤습니다. 시맨틱웹을 저장, 표현, 검색이라는 큰 카테고리로 만들수 있다면 이번에 소개할 RDFa는 "표현"에 포함되는 내용입니다


#. RDF? RDFa?

- RDF

그럼 RDF는 뭐지? RDFa는? (저 알파벳a는 머리를 긁고 있는 RDF의 모습이네요. ^^a;; 뭐지?a)

이 글을 읽는 분들은 RDF에 대한 기본 지식은 가지고 계실줄 믿습니다.

저는 RDF를 "웹상에서 활동하는/되어지는 객체들의 표현"이라고 말하고 싶습니다. 또 뜬구름잡는 고질병이 돋았나 하시는 분도 계시겠네요. 그럼 좀더 자세한 설명을 해보도록 하겠습니다. 예를 들어보죠! 요새 글에 태그다는 연습? 많이 해보셨죠? 블로그를 생각하면 뭐가 생각나나요? 헤어진 여자친구, 떼인 돈 이런거 말고, "블로그" 자체 속성을 보면 제목, 글쓴이, 배포날짜, 내용 이런것들을 나열할 수 있습니다. 이런 공통적인 것을 뽑아서 스팩으로 만들어 놓은것이 RSS입니다. RSS스팩을 보면 <item>,<title>,<link>,<category>,<author>,<pubDate>,<description>등의 항목들이 명시화되어 있습니다.

그럼 두번째 예제는 "친구"를 상상해 보세요...와~ 모두들 "이 사람 FOAF얘기할려고하는 구나!" 라고 생각하고 계시죠? 네 맞아요. FOAF은 "친구와 친구관계"를, SIOC은 "포럼"에 대한 표현을 RDF를 이용해 명세화 한 것들입니다. 지웅님께서 올린 "Semantic Vocabulary. 웹에 (쉽게) 의미를 부여하기."를 보시면 RDF를 이용한 Semantic Vocabulary들의 소개를 보실 수 있습니다.


- RDFa

RDFa는 XHTML에서 FOAF, Dublin Core, Creative Commons등과 같은 Structured Data(Semantic Vocabulary)를 표현(연결)하기 위해 만들어진 스팩입니다.

주로 표현계층에서 사용되던 HTML의 엘리먼트에 Semantic Vocabulary엘리먼트들을 속성값으로 추가해줌으로서 브라우저에서 보는 <span>, <div>같은 엘리먼트에 의미정보가 연결되는 것이죠. 이런 점에서 SHOE가 뷰-데이터간의 연결이 결여된 점을 보완하고 있습니다. 눈에 보이는 문자와 의미정보가 그대로 연결되어 있는 셈입니다.


그럼 전통적인? HTML페이지를 보시죠.

[code.1]

   <html>
       <head><title>Semantic Team Blog Beer Party</title></head>
       <body>
       <p>
           2011년 3월 20일, 오후 5시에 시맨틱 팀 블로그에서 맥주파티를 엽니다.
       </p>
       <p class="contactinfo">
           행사의 정보는 <a href="http://example.org">이곳</a>을 통해 확인하실 수 있어요!
           문의 사항이 있으시면 <a href="mailto:jo@example.org">email</a>을 통해 연락을 주세요!
       </p>
       </body>
   </html>
   이 예제는 http://www.w3.org/TR/xhtml-rdfa-primer/ 에 나온 예제를 각색했습니다.

시맨틱웹팀블로그에서 2011년에 맥주파티를 벌인다고 하네요. (그때까지 이 블로그가 건재하다면 정말 맥주한잔 해야겠는데요^^).

맥주 파티를 공지하기 위해 팀블로그를 통해 위와 같은 모임 정보를 올렸습니다.

우리들(사람들)이 위의 정보를 모니터를 통해 받아 보면 어떠한 정보들을 얻어 낼 수 있을까요?

먼저 이벤트에 대한 정보(이름, 장소, 시간)와 시맨틱웹팀블로그에 대한 정보(연락처, 사이트주소)를 얻을수 있습니다. 어떻게요? 우린 글자를 읽어 그 뜻(Semantic)과 문맥(Context)를 이해 하기 때문이지요.


여기서 잠깐! 시맨틱웹이 뭐죠? 많고 많은 정의중에 데이터링크에 초점을 맞춘 정의는 이렇습니다. 이씨 아저씨(^^)가 말하길...

"The Semantic Web isn't just about putting data on the web. It is about making links, so that a person or machine can explore the web of data. With linked data, when you have some of it, you can find other, related, data." @Tim-Berners Lee
보시면 사람, 기계가 웹에 내포되어 있는 데이터를 찾아(explore)낼 수 있게 하는 링크된 것들이라고 얘기하네요.

기존의 표현(Presentation)에 초점을 맞춘 HTML을 통해서도 사람들은 내포되어 있는 데이터, 행사 - 이름, 행사 - 위치, 행사 - 행위자등의 관계(link)를 찾아 낼 수 있습니다. 하지만 머신에서는 그러한 데이터를 찾아내려하거나 재사용을 하려면 뭔다 다른 다듬질을 필요로 하겠지요.


다시 예제로 돌아가서, 이벤트, 팀블로그에 대한 정보를 RDFa를 이용해 추가적인 다듬질이 필요없이, 데이터간의 연결 링크가 유지되도록 만들어진 XHTML을 살펴봅시다.

[code.2]

<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
    <html xmlns:cal="http://www.w3.org/2002/12/cal/ical#"
          xmlns:contact="http://www.w3.org/2001/vcard-rdf/3.0#">
      <head>   <title>맥주파티</title>  </head>
      <body>
      <p instanceof="cal:Vevent">
     <span property="cal:dtstart" content="20110320T1700-0500">
       2011년 3월 20일 오후 5시!!
        </span>
    시맨틱 블로그 팀에서
        <span property="cal:summary">
    "맥주파티"
        </span>
      로 여러분을 초대합니다.
      </p>

    <p class="contactinfo" about="http://semantic.tistory.com/fest/info">
   행사의 정보는 <a rel="contact:org" href="http://semantic.tistory.com">이곳</a>을 통해 확인하실 수 있어요!   
   문의 사항이 있으시면  <a rel="contact:email" href="mailto:kwangsub.kim@gmail.com">email</a>을 통해 연락을 주세요!
 
   <span property="contact:title">Semantic Team Blogger</span>
   <span property="contact:fn">김광섭</span> 올림
   </p>
  </body>
  </html>

상단 <html>엘리먼트의 속성값에 이 페이지에서 사용될 Semantic Vocabulary를 선언하고 있습니다.

<html xmlns:cal="http://www.w3.org/2002/12/cal/ical"
       xmlns:contact="http://www.w3.org/2001/vcard-rdf/3.0#">

이제 본문에서 CURIE형식으로 특정 <p>, <span>등과 같은 엘리먼트에 Semantic Vocabulary를 연결할 수 있습니다.


실제 View와 의미정보를 연결하는 예제입니다. "2011년 3월 20일 오후 5시!!"라는 것은 "cal:dtstart"라는 속성과 연결이 되어 있습니다. 그리고, 그 "cal:dtstart"라는 속성은 "20110320T1700-0500"란 실제 과 연결이 되어 있습니다.

<span property="cal:dtstart" content="20110320T1700-0500">
  2011년 3월 20일 오후 5시!!
</span>

[code.1]의 HTML가 내포하고 있는 의미정보를 RDFa를 이용해 [code.2]와 같이 명시적으로 의미정보를 연결해 이씨 아저씨가 얘기했던 It is about making links, so that a person or machine can explore the web of data 이 서서히 보여지는게 아닐까 생각해봅니다.


# 어떤 장점?

메타데이터의 재사용

-"Semantic Vocabulary. 웹에 (쉽게) 의미를 부여하기."에 있듯이 많은 스팩들이 만들어지고 있습니다. 이런 스팩들이 나오는 이유가 무었일까요? 제 생각엔 대부분의 사람들이 인정하는 Vocabulary를 만들고 그 의미를 다시 사용할수 있게 하는데 있는것 같습니다. "contact"란 의미를 다른 곳에서 (재)사용해도 언제나 동일하다는 것이죠.


기기나 어플리케이션간의 데이터 교환 가능

iMail을 통해 들어오는 메일중에 시간정보를 담고 있는 메일을 받아 보게 됩니다. 아래 스크린처럼 메일의 시간을  바로 iCal로 저장하면서  event를 만들수 있습니다.

사용자 삽입 이미지

현재 iCal에서 제공하는 이 기능은 본문의 날짜데이터를 파싱해서 이벤트를 만들어주는 간단한 로직입니다. (한글날짜도 locale만 처리된다면 가능하겠죠) 이제 웹에서 이런 구조화된 데이터를 내 PC에 설치된 어플리케이션과 웹에서 혼용해 사용할 수 있을겁니다.


메타데이터를 이용한 검색 가능

요즘 블로그나 여타의 사이트에서도 "태그 검색"이란 기능을 거의 제공하고 있습니다. <tag>의 메타정보를 추출한것이지만 <contact:fn>, <contact:email>를 이용해 AAA@mail.com을 사용하는 AAA가 등록한 글들을 검색할 수 있을것입니다.


그 밖에 많은 서비스들이 만들어질 수 있겠지요.

RDFa Use Cases에 보시면 몇개의 시나리오를 더 보실 수 있습니다.


ps. Yahoo의 소식을 듣고 가능한 서비스들을 머리속에 떠오르니 마냥 기분이 좋아졌습니다. 한편으로 팀블로거들도 자극을 받고 있답니다.~ 아자!


-http://www.w3.org/TR/xhtml-rdfa-primer/
-http://www.w3.org/MarkUp/2008/ED-rdfa-syntax-20080125/
-http://www.w3.org/TR/xhtml-rdfa-scenarios/

--YouTube에 있는 RDFa Intro추가

이 글은 스프링노트에서 작성되었습니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by kwangsub semantic

HTML에 대한 정보를 어노테이션하거나 확장하기 위해 만들어졌던 SHOE(Simple HTML Ontology Extensions)를 기억하십니까?

HTML에 추가정보(SHOE Ontology)를 연결하기 위해 연구되었습니다.

SHOE에 대한 자세한 스팩은 해당 사이트에서 보시고, 어떻게 생긴물건인지만 보여주는 예제를 살펴보도록하겠습니다.

http://www.cs.umd.edu/projects/plus/SHOE/html-pages.html

<HTML>
<HEAD>
<META HTTP-EQUIV="SHOE" CONTENT="VERSION=1.0">
<TITLE> My Page </TITLE>
</HEAD>
<BODY>
<P> Hi, this is my web page.
    I am a graduate student and a research assistant.
<P> Also, I'm 52 years old.
<P> My name is George Stephanopolous.
<P> Here is a pointer to my <A
  HREF="http://www.cs.umd.edu/smith"> graduate advisor.</A>
<P> And <A HREF="http://www.cs.umd.edu/papers/paper.ps">
  is a paper I recently wrote.
<h3> Brun Hilda </h3>
Brun Hilda is a visiting lecturer here from Germany who doesn't have her
own web page.  However, because I am such a nice person, I have agreed
to let part of my web page space belong to her.  She is 23.

<INSTANCE KEY="http://www.cs.umd.edu/users/george/">

        <USE-ONTOLOGY
                  ID="cs-dept-ontology"
                  URL="http://www.cs.umd.edu/projects/plus/SHOE/onts/cs.html"
                  VERSION="1.0"
                  PREFIX="cs">

        <CATEGORY NAME="cs.GraduateStudent">
        <CATEGORY NAME="cs.ResearchAssistant">

        <RELATION NAME="cs.name">
                <ARG POS=TO VALUE="George Stephanopolous">
        </RELATION>
        <RELATION NAME="cs.age">
                <ARG POS=TO VALUE="52">
        </RELATION>
        <RELATION NAME="cs.advisor">
                <ARG POS=TO VALUE="http://www.cs.umd.edu/users/smith">
        </RELATION>

        <INSTANCE KEY="http://www.cs.umd.edu/users/george/#BRUNHILDA">

                <CATEGORY NAME="cs.Lecturer">

                <RELATION NAME= "cs.name">
                        <ARG POS=TO VALUE="Brun Hilda">
                </RELATION>
                <RELATION NAME="cs.age">
                        <ARG POS=TO VALUE="23">
                </RELATION>

        </INSTANCE>
</INSTANCE>

</BODY>
</HTML>

상단의 코드를 보면 흔히 볼수 있는 HTML을 이용하여 George Stephanopolous 자신을 소개하고 Bun Hilda란 사람을 소개하고 있습니다. 여기까지는 흔히 볼수 있는 HTML문법입니다. 그 다음 하단에는  SHOE(Simple HTML Ontology Extensions)를 이용하여 George Stephanopolous과 Bun Hilda에 대한 정보와 관계를 표현하고 있습니다.

이것이 바로 제가 알고있는 최초 HTML어노테이션표현 기술이었습니다. 기존 마크업언어에 추가정보를 표현하기 위한 개념들을 온톨로지로 만들었고, 그러한 개념들을 SHOE를 이용해 삽입하였던 것이지요. HTML내의 SHOE검색을 통해 의미검색을 수행할수 있는 구조입니다.

데모페이지를 보시면 다음과 같은 어플리케이션을 제공하고 있는데요.  이런 어플리케이션을 통해 의미정보를 표현하고, 검색하게 됩니다.

* Semantic Search
* The Knowledge Annotator
* Exposé
* PIQ (Parka Interface for Queries)
* SHOE Search

위의 어플리케이션을 보면 정말 시맨틱한 질의가 가능하고 검색이 가능할거라 생각됩니다.

하지만, 센스 있는 여러 분들은 위의 결과를 보시면 어떠한 문제가 발생될지 예상하실겁니다. 페이지에 여러 정보들이 있다면 그 정보를 표현하기 위한 자체 SHOE표현 부분이 꽤나 복잡해지고 그 양도 많아지겠지요. 이러한 문제를 접어두고서라도 더 큰문제는 실제 표현하고 있는 마크업데이터(ex. <P> My name is George Stephanopolous.</P>)와 SHOE온톨로지 정보간의  연결(Link)가 결여되어 있다는것이지요. 이 시대(?)에 SHOE Search Engine이 잘 발달해 사용되어 왔다면(실제 SHOE페이지에서 SHOE Search Applet을 제공했으나 현재는 작동하지 않습니다.), HTML페이지가 많은 양의 SHOE개념들을 포함하고 있다면 사용자들은 검색된 결과가 어디에 있는지 찾아봐야 할겁니다. 검색이 되긴 되었는데 어디에 이런 정보들이 표현되고(Markup)있는지 찾아야 하는 것이지요.

그래도 이 시대(?)의 선행자들로 인해 어노테이션 기술이 발전된게 아닐까 생각합니다. 최근 어노테이션에 대한 포스팅을 하나 했었습니다. 오픈마루의 레몬펜과 구글의 노트를 언급했었는데요. 조금 더 바라는 점이 있다면 어노테이션된 정보의 대한 검색이 "일반적"검색을 통해서 이루어 졌으면 하는 바램입니다. 다시 말하면, 오픈마루, 구글을 검색플랫폼(문자열 검색만이 아닌)만을 위한 Structured Data(어노테이션데이터)가 아닌 모든 엔진이 통용할 수 있는 스팩이 제공되었으면 하는 바램이지요. (힘들겠지요. 그래도 OpenSearch.org과 같은 단체들이 조금씩 영향력을 행사할때가 오지 않을까 합니다.)

다음에 소개할 RDFa는 이러한 문제를 보완할수 있는 훌륭한 스팩이라고 생각합니다. (개인적으로 RDFa이 시맨틱웹에 많은 기여를 할것 같은 느낌이 팍팍 오거든요! ^^)


[1] http://www.cs.umd.edu/projects/plus/SHOE/

[2] http://www.opensearch.org







이 글은 스프링노트에서 작성되었습니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by kwangsub semantic

이전 글에서, 희철님이 말씀하신 것처럼, 시맨틱 웹을 가능하게 하는데는 두 가지 흐름이 중요합니다.

  • 정보의 개념
  • 정보간의 관계

이번 시간에는 우선, 그 개념에 대한 이야기를 해보겠습니다. 온톨로지라는 말은 이제 많이들 들어보셨을겁니다. Pim Borst라는 사람은, 온톨로지의 정의를 이렇게 내립니다.

         온톨로지는 공유된 개념의 정형화된 명세이다.
        Ontologies are defined as a formal specification of a shared conceptualization.

좀 더 자세한 논의는 온톨로지란 무엇인가라는 글이 좀 더 도움이 되실것 같네요.

온톨로지를 조금 더 쉽게 정의하는 방법, Semantic Vocabulary

각설하고, 그럼 과연 온톨로지는 어떻게 정의할 수 있을까요? 방법은 다양합니다. 웹의 표준을 만들어가고 있는 W3C에서도 다양한 표준을 정의하고 있습니다. RDF , OWL... 하지만, 간단히 말해 RDF는 정보의 가장 기본적인 속성만을 표현하는 기본 요소에 불과합니다. 그리고 이런 RDF에 구체화된 타입이나 관계속성을 부여하는 RDF Schema나, OWL 같은 메타데이터로 온톨로지를 만드는 것은(모델링이라고 부릅니다) 너무 어려운 일입니다.

하지만, 대안은 있습니다. 누군가 미리 만들어 놓은 것을 사용하면 되지요. 그런것들을 Vocabulary라고 부릅니다. 이런 Vocabulary는 RDF, RDF-S , OWL 등을 사용해서 학계나, 표준단체에서 이미 만들어놓은 것들을 말합니다. (대부분 RDF를 기반으로 정의되기에, RDF의 Application이라고도 부릅니다.) 이런 Vocabulary들은, 대부분 실제 적용할 수 있는 구체적이고, 높은 추상화 수준의 개념을 미리 정의해놓았기에, 상황에 맞게 가져다 쓰면 되는것이지요.

즉, 왜 Vocabulary를 알고, 써야 하느냐고 묻는다면

  • 독자적으로 온톨로지를 정의하기 어려우므로
  • 합의된 표준이므로 Meaning을 Share할 수 있으므로

라고 답할 수 있겠네요.

이런 Vocabulary에는 여러 종류가 있습니다. 이 글에서는 간략히 무엇이 있는지, 대표적인 것들만 간단히 그 특징을 살펴보겠습니다.

FOAF

요즘 Social Network Service들에 대한 관심이 커지면서, 각광을 받고 잇는 Vocabulary입니다. Identity와 Social Relationship , 쉽게 말해 '나와 내 친구들'에 대한 정보를 기술한다고 보면 되겠네요. 구글의 Open Social API와 같은 흐름은, 각각의 SNS가 FOAF기반으로 정의해 공개하는 데이터들을 자유롭게 엮어냄으로써 주목을 받고 있습니다. FOAF가 다루는 범위는 꽤 자세합니다. 이름,메일주소,홈페이지 같은 간단한 정보부터, 관심사, 직장, 메신저 주소같은 개인정보들을 자세히 다루고 있지요. 그리고 그 가운데서, 각각의 Identity를 기반으로 데이터가 이합집산하는 흐름도 눈여겨볼만 합니다.

싸이월드와 미투데이 , 트위터의 사용자들이 서비스의 경계를 넘어 '친구'가 되는 세상. 그리고 그 가운데, 사용자의 Identity가 정보의 주도권을 가지는것 (Open Identity). 바로 FOAF가 꿈꾸는 네트워크이겠지요?

SIOC

SIOC은 커뮤니티를 위한 Vocabulary입니다. 흔히 말해, 게시판이나 포럼 , 카페와 같은 서비스들(블로그도요!)을 연상하시면 될것 같네요. 이런 커뮤니티 서비스를 이루는 축인, 사용자, 글 , 공간을 정의해놓았습니다. 사용자 부분은 FOAF와 연동이 되며, 컨텐츠 부분은 ATOM-OWL 이나 RSS 1.0과 같은 데이터 포맷으로 정의될 수 있지요. 이런 SIOC을 통해, 웹에 널리 퍼져있는 커뮤니티들은 이제 서비스나, 도메인이라는 경계를 넘어서, 자유롭게 연결됩니다.

다음 카페, 내 블로그 , 루비 사용자 포럼 등의 여러 커뮤니티가 주제에 따라 하나로 연결된다면 어떨까요? SIOC이 꿈꾸는 것은 그렇게 사용자와 정보 , 그 공간이 엮이고 섞이는 연결고리인것입니다.

SKOS

SKOS는 좀 더 추상적인 단위를 다룹니다. 바로, 정보에 대한 속성들, 주제-분류-폭소노미-계층 구조등을 모델링하게 되지요. 사실, 직접 자신의 도메인에 적합한 온톨로지를 정의하다 보면, 이러한 추상화단위를 위한 속성을 제각기 정의할 수 밖에 없습니다. 개념과 개념과의 관계를 정의할 필요가 반드시 생기기 때문이지요. 그럴 경우에 SKOS는 구원 투수가 되어줍니다. 그리고 이런 광범위한 용도때문에 다른 Vocabulary들과도 찰떡궁합처럼 맞아떨어지지요.

정보의 적확한 의미를 정의하기는 어려워도, 일단 그 느슨한 '구조'만이라도 담아내고자 하는 것이 SKOS가 지닌 목적이 아닌가 싶습니다.

DC

더블린 코어 메타데이터 (Dublin Core Metadata , 이하 DC)는 사실, 유래가 깊은 Vocabulary입니다. 기존에도 정보자원에 대한 메타 데이터를 정의하고자 하는 시도들이 많았는데, 그 중 하나로 1995년 OCLC와 NCSA라는 단체들이 더블린에서 워크샵을 가지고 제정한 것이 DC라고 하네요. 때문에 현재도 많이 사용되는 DC는 기본 데이터의 경우,  컨텐츠의 저작에 관련된 기초적인 요소들을 정의하고 있습니다. 그런 특성때문에, 다른 Vocabulary들에서도 심심치 않게 불려다니고 있구요^^;

Microformat

마이크로 포맷은 그야말로, 가장 단순한 방법에서부터 메타데이터를 정의해나가자는 움직입니니다. 그들 스스로도, 메타 데이터 포맷을 위한 설계 원칙(design principles for formats)라고 명시하고 있구요. 가장 간단한 형태로 개방된 데이터 포맷 표준들을 점차 늘려나가자는 목표에서 실용적인 움직임을 계속하고 있습니다.

따라서, 메타데이터들이 다루는 범위도 상당히 한정적이고, 때문에 무척 실용적입니다. hCard , hCal, XFN, rel-tag등 다양한 표준들이 생겨나고 도입도 적극적인편이지요. 이렇게 HTML안에 단순한 온톨로지를 심어넣는 움직임은, 그간의 접근방식과는 다르다고 할 수 있겠는데요. 때문에 2006년경부터 W3C에서도 다른 방법들(GRDDL,RDFa등의)을 제시하고 있습니다.

  • Microformat.org

    • About 페이지에 그들이 지향하고자 하는 바가 잘 나와있습니다^^


그럼, 각 Vocabulary에 대해서는, 여러개의 글로 나누어 자세히 다루어보도록 하겠습니다. 그전에, 다음 글에서는 RDFa , GRDDL , SPARQL과 같은  시맨틱웹의 새로운 변화를 견인하고 있는 기술들에 대해 한번 다루어 봐야 겠습니다^^

이 글은 스프링노트에서 작성되었습니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 정지웅