2006년 9월 21일 목요일

microformat에 대해 배워봅시다. (1)

마이크로포맷에 관해 정리할 일이 있어 겸사겸사.

1) 마이크로포맷이 뭔가요?
시맨틱웹이라는 말은 많이 들어봤을 겁니다. “의미가 통하는 웹”이라는 뜻이죠.
오잉? 지금까지의 웹은 의미가 안통하나요?
네, 앞에다 몇자를 더 추가해야겠군요. “사람에게도, 기계에게도 의미가 통하는 웹”이라는 뜻입니다.

어느 블로거 주인이 오늘 본 영화에 대해 주절주절 리뷰를 썼습니다.
방문객들은 그 리뷰를 보고, 호, 이 주인장이 “괴물”에 대해 쓴 리뷰구나… 라고 생각하겠지요.
허나, 기계는?(여기서 기계란.. 프로그램 혹은 기타 디바이스들을 통틀어 가리킵니다.)
기계에게도 이 글이 “괴물”에 대한 리뷰임을 알려줄 방법이 있어야겠지요. 그것이 마이크로포맷의 목적입니다. 물론, 사람들이 볼 때에도 의미가 통하는 것은 기본이구요.

2) 지금까지는 이러한 시도가 없었나요?
왠걸요. 시맨틱웹 및 온톨로지를 위한 시도는 매우 다양합니다. 그 중 가장 대표적인 것은 RDF라 할 수 있겠죠. Resource Description Framework이라는 매우 훌륭하고도 적절한 도구가 있습니다. W3C에서 정식으로 채택하고 있구요.
문제는, RDF는 XML로써, HTML이나 XHTML에 사용하는 데에는 큰 문제는 없으나, 아무래도 웹에서는 덜 인간친화적이라는 점이죠. 기계에게는 더할나위없이 좋은 포맷이지만, 인간이 그 의미를 정확히 잡아내기가 힘들고, 무엇보다도, 웹상에서는 인간의 눈으로는 볼 수 없다는 점이죠. (XML 및 XSL기술이 발달하여, XML로 웹을 만드는 가까운 미래에는 또 달라지겠습니다만.)
마이크로포맷의 가장 큰 장점은 같은 코드로 인간과 기계가 같이 사용할 수 있다는 점입니다. 물론 쉽기도 하구요.

일단, 이런 잡상식을 베이스로 깔아두고, 오늘 이야기할 것은 개인프로필에 해당하는 hCard에 대해서입니다.

그 전에 먼저, vCard를 알아둬야죠. 이바닥이 이렇습니다. 뭔가를 알려면 그 전에 알아둬야 하는게 꼭 있죠. 선행학습이 없이 말단기술만 익혀봤자 왜 사용하는지, 어떻게 써야 효과적이고 올바르게 쓰는지 틀리기 쉽거든요.

vCard(대소문자 주의.)는 인적정보를 기술하는 표준포맷(RFC2426)입니다. MS Outlook을 쓰시는 분은, 연락처의 메뉴중에 보면 “vCard로 내보내기” 같은 메뉴를 보실 수 있습니다. Outlook 데이터를 표준포맷으로 바꿔서 다른 프로그램에서도 활용할 수 있도록 하는 것이지요.
메일 보낼 때, 메일 하단부에 이름, 주소, 전화번호, 직장, 직위… 이런 것들을 적어 보내잖아요. 실은 그냥 vCard만 첨부파일로 붙여 보내면 간단합니다. vCard를 다운받아 더블클릭하면 자동으로 Outlook에 해당 정보가 입력되거든요. 일종의 전자명함이라고 생각하면 됩니다. Outlook외에도 대부분의 PIMS 소프트웨어는 vCard를 지원합니다. 물론 그 외에도 다른 용도는 많이 있지요.

vCard의 샘플포맷은 다음과 같습니다.

BEGIN:VCARD
VERSION:2.1
N:eouia, Yi
FN:eouia
ORG:eouia Company;research institute
TITLE:Programmer
TEL;CELL;VOICE:016-9447-8022
URL;WORK:http://dnzin.com/cunningweb
BDAY:19740819
EMAIL;PREF;INTERNET:eouia0819@gmail.com
REV:20060921T030301Z
END:VCARD

hCard는 이런 vCard를 어떻게 웹상에서 구현할까에 대해 나온 해답입니다. 물론, RDF를 이용한 XML vCard라는 방법도 있습니다.

참고로, 위의 내용을 RDF로 구현하면 대충 다음과 같습니다.

<rdf:RDF xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:vCard = "http://www.w3.org/2001/vcard-rdf/3.0#">
<rdf: Description rdf:about = "http://dnzin.com/cunningweb/about" >
<vcard:FN> eouia </vcard:FN>
<vcard:N rdf:parseType="Resource">
<vcard:Family> Yil </vcard:Family>
<vcard:Given> eouia </vcard:Given>
</vcard:N>
<vcard:BDAY> 1974-08-19 </vcard:BDAY>
<vcard:TITLE> eouia Company, research institute </vcard:TITLE>
<vcard:ROLE> Programmer </vcard:ROLE>
<vcard:TEL rdf:parseType="Resource">
<rdf:value> +016 9447 8022 </rdf:value>
<rdf:type rdf:resource="http://www.w3.org/2001/vcard-rdf/3.0#work"/>
<rdf:type rdf:resource="http://www.w3.org/2001/vcard-rdf/3.0#voice"/>
</vcard:TEL>
<vcard :EMAIL rdf:parseType="Resource">
<rdf :value> eouia0819@gmail.com </rdf:value>
<rdf :type rdf:resource="http://www.w3.org/2001/vcard-rdf/3.0#internet"/>
</vcard:EMAIL>
</rdf: Description>
<rdf:RDF>

미리 해석하는 방법이 정의되어있는 XML답게 조금 복잡해보이긴 해도 기계가 해석하기에는 괜찮은 구조죠.
허나, 웹상에서 RDF를 바로 사용하면 기계에게는 보기좋아도, 인간에게는 안보이는 게 문제.
실은, 반대로 생각하면, 인간에게는 보기 편하도록 마음대로 아무렇게나 써주고, 대신 인간에게 안보이는 RDF만 명확하고 규격에 맞게 기술해주면 되니까 자유도는 높은 편입니다.

어쨌거나, 이를 hCard 마이크로포맷을 이용하면 다음과 같습니다.

[html]

eouia Yi
eouia Company, research Institute

016-9447-8022

[/html]

음. 민망할 정도로 단순하군요. 이게 끝입니다.
핵심은, class 이름이 vCard 속성값을 그대로 쓴다는 점. 태그는 어떤 태그가 쓰였는지는 중요하지 않습니다.
필요에 따라서 hCard 스펙에 없는 장식요소들을 더 넣어도 되구요.
물론 당연히, 디자인은 CSS로 나중에 입히면 됩니다. 얼마든지 원하는 대로.

더 완벽한 온톨로지를 위해서는, hCard 마이크로포맷과 RDF를 같이 써주고, 덤으로 vCard를 다운받을 수 있는 링크도 제공하면 퍼펙트.

오잉, 그런데 도대체 그래서 이걸 뭐에 쓴다냐…
여러가지 활용법이 있겠죠.

예를 들어 블로그 한 귀퉁이에 hCard를 적어놓아봅니다. 검색엔진이 와서 읽고는, 아, 이 블로그 주인이 누구구나.. 알릴 수 있겠죠. (꼭 검색엔진이 아니더라도 비슷한 요구는 많이 있습니다.) 보안이라는 문제는 차치하고, 이런 것이 검색엔진에서 구현된다면 예를 들어 “dnzin.com 주인장의 메일주소는?” 같은 자연어 검색이 가능하다는 것.

싸이월드 1촌 리스트를 좀 어케 뽑아서 주소록을 만들고 싶은데 일일이 손으로 치기는 싫다? 만약 싸이월드가 hCard(를 비롯한 RDF나 vCard등등)을 지원한다면 그 일을 자동으로 해주는 프로그램을 만들 수도 있겠죠. (이런 것도 안하면서 싸이월드가 어째서 플랫폼 기반의 소셜 네트워크라고 불리는지 당췌 이해가… -_-a)

지금도 있나 모르겠는데, 한때 명함 OCR 리더기가 있었답니다. 명함을 기계에 집어넣으면 자동으로 이름, 전화번호 등등을 추출해서 내 PIMS(Outlook 같은..)에 저장해주는 기계지요. 그러나 100%인식은 힘들다는 점.
만약 어느 누군가가 개인의 프로필을 관리해주는 서비스를 만들고, 가입자에게 고유한 일련번호를 준 뒤, 그 일련번호를 명함에 새겨가지고 다닌다면, 받은 이는 그 번호를 프로그램에 입력만 해도 해당인의 정보를 전달받을 수 있도록 하는 서비스도 가능하지 않겠어요? “내 메일 주소는 xxx입니다”와 마찬가지로 “내 hCard 고유번호는 xxx입니다.”가 통용될 수도 있겠죠. (한때 이런 서비스를 SKT에 제안했었는데 뭔 소리인지 당췌 못알아들으시더라는… -_-a)

뭐, 그런겁니다.
앞으로 웹상에 누군가의 신상정보를 적어야 할 일이 있다면, hCard 마이크로포맷을 이용해주십사라는 점. 누군가는 그 정보를 유용하고 고맙게 쓸 지도 모르니까요. (스패머가 수집해간다면 그건 낭패.)

다음은 hCalendar에 대해… (아마도.)

댓글 없음:

댓글 쓰기