소식 : 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/
Semantic Web은 과연 어떤 분야에 적용할 수 있을까요? 개인적인 생각으로는 Semantic Web은 구조화된 웹이라는 변화속에서 거의 모든 다양한 분야에 스며들어갈 것이라고 생각합니다. 요즘 이러한 Semantic Web이 실제로 많은 도움을 줄 수 있는 분야를 찾던 차에, 마침 '검색'이라는 분야에 관심이 생겨, 관련내용을 잠시 살펴보았습니다. 그래서 이번 글에서는 검색이라는 분야에 Semantic Web이 적용될때의 가능성에 대해서 알아보겠습니다. (개인적으로 검색에 대해서는 기초적인 수준의 이해조차 부족합니다 ^^; 부족한 점, 틀린 점이 있으면 따끔히 지적해주세요)
현재의 정보검색은 근본적으로, 구조화되지 않은 데이터(Unstructured Data)속에서 정보를 효율적으로 찾는데 초점을 맞추고 있습니다. 본질적으로 현재의 웹이 비구조적인 형태를 띄고 있기 때문에 당연한 접근방법이기도 합니다. 웹 문서(Document)들의 구조를 한번 살펴보세요. 우리가 찾고자 하는 정보에 비하면, 문서 자체에 대해 기술하는 정보는 정말 미약한 수준입니다. 따라서, 현재까지의 정보검색도 기본적으로 빈도-정확도 중심의 접근법을 벗어나지 못하고 있는 것일테구요.
아래는, 하니가모님이 만드신 Text Retrieval and Mining이란 자료에 나온, 정보 검색의 아키텍쳐 다이어그램입니다.
이 다이어그램을 기반으로 이해해보면, 정보검색은 아래의 4가지 요소로 나눠볼 수 있습니다. 하나씩 살펴보며, 각각이 지닌 한계를 알아보겠습니다.
여기서는 문서를 대표하는 단어인 '색인(Index)'이 중심이 됩니다. 하니가모님이 지적하신대로 현재의 색인 모델은, 동음이의어,상위어,연관어등의 개념관계를 반영하지 못합니다. 필요하면 별도의 후처리 작업을 거치게 됩니다.
이 과정에서는 문서와 단어간의 유사도를 계산해 가중치를 매기고, 이를 바탕으로 랭킹을 만들게 됩니다. (여기서 주로 사용되는 TF-IDF 모델에 대한 설명은 이 글을 참조하세요) TF-IDF 모델의 단점이라면, 이 글에서 언급된 것처럼 '문서에 사용자가 언급한 단어가 직접 명시되어 있지 않으면 무용지물'이라는 점이겠지요. 구글의 Page Rank모델등이, 웹 문서 링크간에 나타나는 네트워크적인 속성을 활용했지만(Link Structure) 이런 근본적인 문제를 모두 해결해주지는 못합니다.
사용자는 기본적으로 자신이 원하는 의도를 자세히 표현하지 못합니다. 그러기엔 연상비용의 너무 크기 때문이죠. 따라서 상당히 함축된 형태로 의도를 표현하는 사용자 질의에 대해, 여러가지 접근법이 필요해집니다. 질의를 사전 데이터와 비교해 확장하는 Query Expansion같은것이 좋은 대안 중 하나라고 하겠지요 (하지만, 구축된 DB에 의존하기에, DB구축비용이나 선별이 만만치 않겠지요)
결과 표현은 사실, 조금 다른 문제이긴 합니다. 랭킹을 어떻게 표현할것인가를 넘어서는 다양한 가능성이 존재하는 부분이기도 합니다. 1) 결과를 어떻게 조직하고, 2) 어떻게 표현할것인가를 복합해서 생각해야 하겠지요. 국내에서의 흐름만 보아도 단순히 '통합검색'이라고만 보기에는 더 많은 Factor들이 작용하고 있는 것 같습니다. 일단, 이해를 넓히기 위해서는, 시루님이 공개해주신 웹에서의 정보시각화 현황 - 검색분석 서비스 관점이라는 문서를 참고하시면 좋을것 같네요.
Semantic Web이 과연 무엇이길래, 이러한 정보 검색(Information Retrieval) 분야에 대한 해결책을 제시한다는 걸까요?
이 글에서 언급했던 것 처럼, Semantic Web은 크게 아래의
이라는 두 가지 관점에서 볼 수 있겠습니다. 1은 여태까지의 Web은 거의 구조적이지 못했기에, 기본이 되는 문서와 데이터에 구조를 심자는 것이고 , 2는 그 구조화된 데이터간의 연결을 통한 가능성에 초점을 맞춘 것이지요. 자세한 내용은 이 팀블로그를 통해 계속 접하시게 될겁니다 ^^
자, 그럼 이 글에서는 이런 Semantic Web이 검색 아키텍쳐에서 어떻게 적용가능할까?를 살펴보겠습니다. 다시 한번 정보검색의 4가지 요소를 들여다봐야겠군요
구조화되지 않은 문서 안에서, 최대한 구조라고 할 수 있는 요소들을 추출하고 분석하는 것. 이것이 여태까지 IR(정보검색)이 집중했던 방향이라고 할 수 있겠습니다. 반면, 웹에 조금씩 구조화된 데이터들이 늘어난다면 어떨까요? 그 가능성을 한번 활용해봐야하지 않을까요? 얼마 전 Yahoo가 발표한 Semantic Web을 검색에 도입하겠다는 발표가 바로 이 맥락에서 이해될 수 있습니다. 여태까지는 메타데이터가 황폐하다시피 없어서 웹 문서를 쥐어짜야(!)했지만, 이제는 곳곳에 퍼지고 있는 메타 데이터를 한번 활용해보자는 것이지요. 따라서, 검색의 관점에서는 이런 사용자의 질의 의도에 맞는 메타 데이터군을 선택해서, 좀 더 유의미한 결과들을 찾아낼 수 있게 됩니다.
이런 구조화된 데이터가 언제 쌓이겠느냐구요? Tim Berners Lee가 말한것처럼 일반 웹 페이지로부터 메타데이터를 추출하는 식의 Top Down Approach가 대세일수도 있구요. 컨텐츠 자체에 메타 데이터를 심거나 , 추가하는 RDFa나 Microformat 같은 시도들이 대세가 될 수도 있습니다. 분명한건 변화는 지금 양쪽에서 모두 일어나고 있고, Major Vendor들이 촉각을 세울만큼 진전되어 가고 있다는 점이지요.
빈도에 따른 가중치에, 문서 연결관계 속의 구조라는 양념을 더한 것이 여태까지의 접근 방법이었다면, 여기서 한 걸음 더 나아가면 어떨까요? 1) 문서와 문서 , 문서와 단어, 단어와 단어 사이의 유사도를 파악해 이용해 보는 겁니다. 2) 그리고 이런 유사도 비교에는 기존에 구축해놓은 온톨로지가 상당 부분 이용될 수도 있겠구요. 3) 구조화된 데이터를 이용할 수도 있습니다. 구글의 Social Graph와 같이, 연결관계를 규정해놓은 API들로 인해, 데이터간의 관계가 쉽게 확보된다면, 굳이 문서 차원의 비교가 아니라, 메타데이터에서 유도된 문서들을 찾아도 될테니까요
물론, 이 부분에도 다른 부분처럼 많은 분야의 연구가 있어왔습니다. Data Clustering이나 Document Classification과 같은것은 여러 분야에서 논의되어온 고전적인 주제이니까요. 다만, Semantic Web은 여기에서도 작은 부분 - 온톨로지와 구조화된 데이터-을 통해 새로운 가능성을 제공합니다.
사실, Semantic Web이 많은 가능성을 보이는 부분은 이 부분입니다. 사용자가 '무엇'을 궁금해 한다고 질의를 던질때. 그 '무엇'이 담긴 '의도(Intention)'을 우리는 잘 잡아내지 못하기 때문입니다. 가장 기초적인 동의어, 동음이의어와 같은 문제도 아직 제대로 해결되었다고 볼수는 없는 상황이구요. 질의를 온톨로지와 비교하고, 확장해나가면서, 사용자의 진짜 의도를 찾아내는 것. 어쩌면 이 부분이 검색이 새로운 가능성을 무궁무진하게 펼칠 수 있는 부분이 아니겠냐는 생각을 해봅니다.
얼마전에 서점에 들렸다가 우연히 발견한, 노영희 교수님의 '개념 기반 정보검색 기법(Concept-based Information Retrieval Techniques)'란 책에서는, 사용의 질의를 온톨로지 기반의 지식 베이스(Knowledge Base)와 비교해, 질의 확장(Query Expansion)하는 방법을 제안하고 있습니다. 책을 마저 읽어보아야 겠지만 무척 재미있습니다. 이러한 지식베이스는 어떻게 만드느냐구요? 문헌 정보학이나 자연어처리쪽에서 논의되어온 학습이나 통계에 기반한 다양한 기법이 있다고 하네요. (구글에서 '동적 시소러스'로 검색해보시면 관련된 재밌는 연구들이 여럿 나옵니다) 이래저래 재밌고, 가능성이 숨겨진 부분입니다.
결과를 어떻게 보여주느냐의 문제는 사실, 특정 기술에 국한된 것은 아닙니다. 가장 사용자에게 맞닿아있는 부분이며, 기술이 아닌 사용자 경험이 중요시되는 부분이기도 합니다. 태그 클라우드도, 결과 클러스터링도, 요즘 선보이고 있는 많은 검색 솔루션들이 실험적으로 구축하고 있는 인터페이스들이 어필하는데 실패하는 이유는 '사용자'라는 가장 복잡한 존재와 닿아있기 때문입니다. 그래서, 단순 Text + Ranking List 식의 사용자 경험이 오랫동안 검색 서비스의 (어쩔수 없는)대안이 되어왔는지도 모르겠습니다.
이 부분에 대해서는 정보의 '관계'와 '구조'에 가능성이 있다는 얘기를 거듭할 수 밖에 없겠네요. 일단 야후가 보여주었던 것처럼, 메타 데이터의 종류에 따라, 각기 다른 표현 방법을 사용하는 것도 대안이 될 수도 있겠구요. 파란의 Stars처럼, 정보의 관계에 집중해서, 사용자가 미처 떠올리지 못했던 의도를 '펼쳐'보여줄 수도 있겠습니다. 좀 더 진득한 논의를 기대하셨다면, 실망하셨겠네요. 대신, 정보 시각화쪽으로는 일단 Ben Fry의 Computerational Information Design의 일독을 추천해드립니다.
물론, 아직 두 분야간에는 많은 이견이 존재합니다. IR and SW communities라는 글의 내용처럼, 정보검색분야는 이미 구축한 정형화된 방법론의 틀안에서 개선을 원합니다. IR의 기본 토대는 그대로 두면서, 다른 분야의 성과들을 따져서 하나 둘 도입해보려는 입장이지요. 반면에 Semantic Web과 관련 분야의 연구는, 대체적으로 IR의 작은 분야 하나하나를 겨냥한것이 대부분입니다. 하지만, 점차 연구의 폭을 넓혀가면서 굳이 IR의 기존 방법론에 구애받지 않는 다양한 시도들을 시험해보려고 하고 있는 것이지요.
사실, 학문적인 성과가 아닌, 실제 세상에 얼마나 기여를 할 수 있느냐, 즉 어떤 방향이 더 성공할 수 있느냐? 라고 묻는다면, 딱히 정답은 없는 것 같습니다. 다만, 그만큼 Semantic Web이 바라보고 있는 가능성들이, 다른 분야들의 성과와 맞물려 새로운 가능성을 창출할 수 도 있겠다는 생각을 해보는 것이지요.
분명한 것은 그러한 가능성이 점차 구체화되고, 실현되고 있고, '검색'이라는 분야도 그 흐름을 비껴가지는 않을것이라는 것입니다. 변화의 흐름은 이미 시작되었으니까요.
이 글은 스프링노트에서 작성되었습니다.
얼마전에 재밌는 자료를 하나 접했습니다.
2번째 페이지에 아래와 같은 내용이 나옵니다.
맙소사! 이런 관점이야 말로, 우리가 피해야할 전형적인 오류라고 할 수 있습니다. 왜 그런지를 이제부터 논해보죠XML customised tags, like:
<dog>Nena</dog>
+ RDF relations, in triples, like:
(Nena) (is_dog_of) (Kimiko/Stefan) RDF는 이런 관계를 나타내고
+ Ontologies / hierarchies of concepts, like:
mammal -> canine -> Cotton de Tulear -> Nena 온톨로지는, 개념들간의 계층관계를 나타내며
+ Inference rules like:
If (person) (owns) (dog), then (person) (cares_for) (dog) 추론이라는 건, 결국 이렇게 작동한다라는..
= Semantic Web
즉, 핵심은 무엇일까요? Tim Berners Lee가 처음에 말했던, Linked Data가 그 해답이라고 할 수있습니다. 정보를 '문서 뭉치(Documents)'가 아니라, 의미있는 URI로 잘게 나누어서 공개하세요. 그리고 그 URI가 가리키는 데이터들이 자유롭게 연결될 수 있도록 하세요. 그런 데이터의 연결. 그것이 바로 Semantic Web으로 가는 열쇠라는 얘기입니다. Semantic 과 Web을 따로 보는 것이 아니라, Web이라는 특수한 환경에서 Semantic을 바라봐야 하는 것이죠.
그럼 이런 Linked Data의 관점에서 Semantic Web을 구축하려면 어떤 규칙을 따라야 할까요? Semantic Web .. in a Nutshell이라는, 이번 글의 화두가 된 글에서는 다음과 같은 지침을 알려주고 있습니다.
모든 사물을 표현할 수 있는 일관된 작명 방법 (A uniform naming scheme)
이런 사물간의 관계를 표현할 수 있는 데이터 모델
이 데이터 모델을 통해 정보를 표현할수있는 포맷
이런 데이터들간의 관계를 찾을 수 있는 프로토콜
위 조건들을 만족시키위한 도구
이 글은 스프링노트에서 작성되었습니다.
앞선 글과 관련해서, 이런 저런 자료를 뒤져보다가 좋은 글을 하나 발견해서 짤막히 소개해보려 합니다^^ (잠못드는 새벽의 막간 포스팅? ^^)
폭소노미(Folksonomy)와, 온톨로지(Ontology)에 대해, 지식표현(Knowledge Representation , KR)의 관점에서 살펴본 글입니다.
웹 2.0에서 가장 많이 인용되는 것중의 하나가 바로, 태그로 대변되는 폭소노미 입니다. 사용자의 참여(User Involvement)와 협업 (Collaboration)의 측면에서 강점을 가지고 있구요.
반면, 어휘를 제어하는 기준(Vocabulary Control)이 없기때문에 동의-유의-다의어등의 많은 문제에 무방비일수밖에 없습니다
사람의 참여가 주가 되기 때문에, 유연합니다.
반면에, 온톨로지는 문서 또는 사물의 의미를 명시적이고 모호하지 않은 방법으로 정의합니다. 그리고 사람만이 알아 볼 수 있는 것이 아니라, 사람과 기계 , 기계와 기계가 모두 이해할 수 있는 방식으로, 지식 도메인을 정형화된 개념으로 표현하는 것이죠. 하지만, 이런 방식은 일견 오해를 불러오기도 했습니다. 복잡한 정형화 과정을 거친것만이 온톨로지가 아닌가라는 오해를요.
물론 사실이 아닙니다. 사실, 지식 표현의 관점에서 보면, 폭소노미와 온톨로지는 지식을 표현하고, 구체화하는 수준이 조금 다른 것 뿐입니다. 아래 그림을 한번 보시죠.
가장 왼편에 있는 것이, 지식 표현력이 가장 낮은 제어기준이 없는 키워드가 되겠습니다. 그 오른편에 폭소노미가 보이구요. 우리가 일반적으로 많이 사용하는, 계층적인 택소노미가 중간 쯔음에 있네요. 온톨로지도 그 수준에 따라 점차 오른편으로 발전해나갑니다.
한 가지 이해를 더 도울 수 있는 그림을 더 살펴보겠습니다. 이번에는 구조의 복잡성에 따라 좌표공간에 배열해보죠.
그 다음에 나오는 것이, 지식 표현의 전통적인 방법 3가지인데요
위 방법들에 비해, 온톨로지는 자신이 정의한 모델링 방식에 따라, 자유롭게 관계를 기술할 수 있습니다. 물론, 위 세 가지 개념을 다 포함하는 방식으로 정제화 시켜 나갈 수도 있구요.
사실, 위 글에서도 언급되고, 개인적으로도 강조하고 싶은 내용은 폭소노미와 온톨로지의 공존에 관한 내용입니다.
즉, 이 문서의 결론처럼, 폭소노미와 온톨로지는 라이벌 관계가 아니라는 점을 알아야할 것 같습니다. 지식 표현에 있어 양 극단에 위치한듯 하지만, 실제로는 서로 상호보완관계에 있을 수 있는 매개들이라고 볼 수 있다는 것이지요. 그 조합은 충분히 고민이 필요한 부분이겠지만, 적절히 둘을 조합해서 보완할 수만 있다면 그 가능성은 무궁무진하다고 봅니다.
사실 짧은 문서지만 앞서 제가 말씀드리지 못한 많은 내용들을 많이 담고 있습니다. 중간중간 자세한 논의가 필요한 부분에 대해서는 충분히 참조할만한 자료들을 나열하고 있구요. 언제 시간이 나실때 차근히 한번 살펴보시길 추천해드립니다.
이 글은 스프링노트에서 작성되었습니다.
앞서, 희철님이 말씀하신 주제를 다시 이어봅니다. (이렇게 다양한 생각이 서로 얽히고 섥혀, 자라날 수 있다는 것이 팀 블로그의 가장 큰 장점이 아닌가 싶네요^^ ) 앞서, 시맨틱 웹을 풀어나가는 방법론적인 흐름을, 크게 '의미'와 '관계'로 나눌 수 있다고 논해주신 바 있죠.
거기에 덧붙여 시맨틱 웹의 전개를 단계적으로 나누어 보면, '약한 시맨틱' -> '강한 시맨틱'으로 나아간다고 볼 수 있을 것 같습니다. 정보의 의미타입, 엄밀한 계층,상하관계들을 모두 담아내는 것이 강한 시맨틱(Stronger Semantic)이라면, 그 중에서 일부만이라도 우선 담아내는 '약한 시맨틱(Weaker Semantic)'을 먼저 구현하는 접근방식이 먼저 흐름을 주도해나갈 것이라는 것이죠.
즉, 구체적으로는 이렇게 볼 수 있을것 같습니다.
그리고, 앞 글의 인터뷰내용처럼 이런 약한 시맨틱을 부여하는데, 텍스트 마이닝(Text Mining)이나, 자연어 처리 기술(Natural Language Processing)을 활용할 수 있는 것이지요. 간단히 예를 들어볼까요? 언어의 '의미'는 다양한 관계를 가질 수 있는데, 이런 관계 속성중 일부는 마이닝과 같은 기술들을 통해서 쉽게(?) 풀어낼 수 있습니다.
'사과'와 '배' , '수박'사이에 무슨 관계가 있는지 엄밀히 기술하기는 다소 어렵더라도, '연관이 있다'라고 말하기는 쉽습니다. 이럴때 이런 가정을 하나 적용해보는 거죠. 같이 사용된, 같은 문맥에서 사용된 단어 사이에는 연관관계가 존재한다고. 제가 del.icio.us에서 A라는 포스트에 B,C,D라는 태그를 붙였다면, 적어도 B,C,D간에는 최소한의 연관관계가 존재할 것이라는 가정을 해보는 것입니다. 그리고 그런 연관관계를 나타내는 수치 데이터를 모아, 유의미한 군집 분포(Cluster)가 발견되면 그런 연관관계가 더욱 확실히 존재한다고 말할 수 있겠구요
데이터에서 사과는 과일이다(is A)를 정확히 추론해내기는 어렵습니다. 하지만, '사과'가 '과일'보다 더 좁은 개념이라거나, 적어도 '사과'는 '먹을 것'보다 좁은 개념이다라는 정도의 추측을 하는건 훨씬 쉬운 문제이겠지요. 이런 추측은 문서에 사용된 어휘 패턴을 활용하거나, 간단한 규칙 기반(Rule Based) 추출방식을 활용하는 방식으로 가능해집니다. 통계적인 방법을 사용할 수도 있구요.
물론, 이런 방법들은 신뢰성에 있어서 문제를 지닐 수도 있습니다. 하지만, 그만큼 '느슨한' 의미관계를, 그것도 자동으로 뽑아내는 것이기에 노력에 비한 가치는 충분하겠지요.
이 밖에도, 사용자의 행동 패턴을 분석하거나, 사용자들의 직접적인 개입(추천,평가)를 활용하는 방식도 논의되고 있습니다. 기계 학습(Machine Learning)과 같은 방법을 통해, 점차 도메인에 최적화된 방향으로 오차를 줄여나가는 방식도 제안되고 있구요. (시간이 지날수록 해당 도메인에 대해서는 정확성이 높아지는 온톨로지가 되어가겠지요) 무엇보다 분명한것은 모두가 거대한 온톨로지를 쉽게 구축하기는 어렵다는데 동의하고 있다는 점이 아닐까 합니다.
의미가 없던 무질서한 곳에, 의미가 뚝딱하고 튀어나올 수 는 없는 노릇이지요. 온톨로지도 마찬가지입니다. 불완전하고 부족하더라도, 앞서 말한 방법을 통해 점진적으로 온톨로지를 구축해 갈 수 있습니다. 또 학습과 분석, 사용자 개입을 통해서, 그런 약한 시맨틱을 점차 도메인에 최적화된 강한 시맨틱으로 진화시켜나갈 수 있는 것이겠구요(Evolving Ontology). 그리고 그런 크고 작은 온톨로지들이 (하지만 도메인에 최적화된) 링크를 통해 묶여서, 결국에는 커다란 Data Space를 구성하는 것. 그것이 바로 앞으로의 온톨로지가, 시맨틱웹이 추구할 방향이 아닌 가 싶습니다. 처음부터 세상의 모든 정보에 대한 지식을 담아내는 국어대사전을 구축하기는 어려울지라도, 여러 소책자들을 한데 엮고, 계속 개정해나가는 방식이 되겠지요. 그것이 소위 요즈음 논의되는 Linked Data , Web of Data의 모습이 아닌가 생각해봅니다.
글을 풀어나가다보니, 구체적인 예가 부족한, 약간은 추상적인 내용이 되고 말았네요. 구체적인 이야기는 앞으로 예제등과 함께 풀어나가보겠습니다. 개인적으로 강조하고 싶은것은, 분명 시맨틱웹에 다가가는 방법이 다양해졌고, 그에 따라 우리의 관점도 달라질 필요가 있다는 점입니다. Bottom-Up / Top-Down Approach. 시맨틱웹은 이제서야 바야흐르 두 방향에서 발전해나가고 있으니까요. 그래서 지금 우리는 그 두 흐름에 모두 주목할 필요가 있을것 같습니다.
이 글은 스프링노트에서 작성되었습니다.
이전 글에서, 희철님이 말씀하신 것처럼, 시맨틱 웹을 가능하게 하는데는 두 가지 흐름이 중요합니다.
이번 시간에는 우선, 그 개념에 대한 이야기를 해보겠습니다. 온톨로지라는 말은 이제 많이들 들어보셨을겁니다. Pim Borst라는 사람은, 온톨로지의 정의를 이렇게 내립니다.
온톨로지는 공유된 개념의 정형화된 명세이다.
Ontologies are defined as a formal specification of a shared conceptualization.
좀 더 자세한 논의는 온톨로지란 무엇인가라는 글이 좀 더 도움이 되실것 같네요.
각설하고, 그럼 과연 온톨로지는 어떻게 정의할 수 있을까요? 방법은 다양합니다. 웹의 표준을 만들어가고 있는 W3C에서도 다양한 표준을 정의하고 있습니다. RDF , OWL... 하지만, 간단히 말해 RDF는 정보의 가장 기본적인 속성만을 표현하는 기본 요소에 불과합니다. 그리고 이런 RDF에 구체화된 타입이나 관계속성을 부여하는 RDF Schema나, OWL 같은 메타데이터로 온톨로지를 만드는 것은(모델링이라고 부릅니다) 너무 어려운 일입니다.
하지만, 대안은 있습니다. 누군가 미리 만들어 놓은 것을 사용하면 되지요. 그런것들을 Vocabulary라고 부릅니다. 이런 Vocabulary는 RDF, RDF-S , OWL 등을 사용해서 학계나, 표준단체에서 이미 만들어놓은 것들을 말합니다. (대부분 RDF를 기반으로 정의되기에, RDF의 Application이라고도 부릅니다.) 이런 Vocabulary들은, 대부분 실제 적용할 수 있는 구체적이고, 높은 추상화 수준의 개념을 미리 정의해놓았기에, 상황에 맞게 가져다 쓰면 되는것이지요.
즉, 왜 Vocabulary를 알고, 써야 하느냐고 묻는다면
라고 답할 수 있겠네요.
이런 Vocabulary에는 여러 종류가 있습니다. 이 글에서는 간략히 무엇이 있는지, 대표적인 것들만 간단히 그 특징을 살펴보겠습니다.
요즘 Social Network Service들에 대한 관심이 커지면서, 각광을 받고 잇는 Vocabulary입니다. Identity와 Social Relationship , 쉽게 말해 '나와 내 친구들'에 대한 정보를 기술한다고 보면 되겠네요. 구글의 Open Social API와 같은 흐름은, 각각의 SNS가 FOAF기반으로 정의해 공개하는 데이터들을 자유롭게 엮어냄으로써 주목을 받고 있습니다. FOAF가 다루는 범위는 꽤 자세합니다. 이름,메일주소,홈페이지 같은 간단한 정보부터, 관심사, 직장, 메신저 주소같은 개인정보들을 자세히 다루고 있지요. 그리고 그 가운데서, 각각의 Identity를 기반으로 데이터가 이합집산하는 흐름도 눈여겨볼만 합니다.
싸이월드와 미투데이 , 트위터의 사용자들이 서비스의 경계를 넘어 '친구'가 되는 세상. 그리고 그 가운데, 사용자의 Identity가 정보의 주도권을 가지는것 (Open Identity). 바로 FOAF가 꿈꾸는 네트워크이겠지요?
SIOC은 커뮤니티를 위한 Vocabulary입니다. 흔히 말해, 게시판이나 포럼 , 카페와 같은 서비스들(블로그도요!)을 연상하시면 될것 같네요. 이런 커뮤니티 서비스를 이루는 축인, 사용자, 글 , 공간을 정의해놓았습니다. 사용자 부분은 FOAF와 연동이 되며, 컨텐츠 부분은 ATOM-OWL 이나 RSS 1.0과 같은 데이터 포맷으로 정의될 수 있지요. 이런 SIOC을 통해, 웹에 널리 퍼져있는 커뮤니티들은 이제 서비스나, 도메인이라는 경계를 넘어서, 자유롭게 연결됩니다.
다음 카페, 내 블로그 , 루비 사용자 포럼 등의 여러 커뮤니티가 주제에 따라 하나로 연결된다면 어떨까요? SIOC이 꿈꾸는 것은 그렇게 사용자와 정보 , 그 공간이 엮이고 섞이는 연결고리인것입니다.
SKOS는 좀 더 추상적인 단위를 다룹니다. 바로, 정보에 대한 속성들, 주제-분류-폭소노미-계층 구조등을 모델링하게 되지요. 사실, 직접 자신의 도메인에 적합한 온톨로지를 정의하다 보면, 이러한 추상화단위를 위한 속성을 제각기 정의할 수 밖에 없습니다. 개념과 개념과의 관계를 정의할 필요가 반드시 생기기 때문이지요. 그럴 경우에 SKOS는 구원 투수가 되어줍니다. 그리고 이런 광범위한 용도때문에 다른 Vocabulary들과도 찰떡궁합처럼 맞아떨어지지요.
정보의 적확한 의미를 정의하기는 어려워도, 일단 그 느슨한 '구조'만이라도 담아내고자 하는 것이 SKOS가 지닌 목적이 아닌가 싶습니다.
더블린 코어 메타데이터 (Dublin Core Metadata , 이하 DC)는 사실, 유래가 깊은 Vocabulary입니다. 기존에도 정보자원에 대한 메타 데이터를 정의하고자 하는 시도들이 많았는데, 그 중 하나로 1995년 OCLC와 NCSA라는 단체들이 더블린에서 워크샵을 가지고 제정한 것이 DC라고 하네요. 때문에 현재도 많이 사용되는 DC는 기본 데이터의 경우, 컨텐츠의 저작에 관련된 기초적인 요소들을 정의하고 있습니다. 그런 특성때문에, 다른 Vocabulary들에서도 심심치 않게 불려다니고 있구요^^;
마이크로 포맷은 그야말로, 가장 단순한 방법에서부터 메타데이터를 정의해나가자는 움직입니니다. 그들 스스로도, 메타 데이터 포맷을 위한 설계 원칙(design principles for formats)라고 명시하고 있구요. 가장 간단한 형태로 개방된 데이터 포맷 표준들을 점차 늘려나가자는 목표에서 실용적인 움직임을 계속하고 있습니다.
따라서, 메타데이터들이 다루는 범위도 상당히 한정적이고, 때문에 무척 실용적입니다. hCard , hCal, XFN, rel-tag등 다양한 표준들이 생겨나고 도입도 적극적인편이지요. 이렇게 HTML안에 단순한 온톨로지를 심어넣는 움직임은, 그간의 접근방식과는 다르다고 할 수 있겠는데요. 때문에 2006년경부터 W3C에서도 다른 방법들(GRDDL,RDFa등의)을 제시하고 있습니다.
그럼, 각 Vocabulary에 대해서는, 여러개의 글로 나누어 자세히 다루어보도록 하겠습니다. 그전에, 다음 글에서는 RDFa , GRDDL , SPARQL과 같은 시맨틱웹의 새로운 변화를 견인하고 있는 기술들에 대해 한번 다루어 봐야 겠습니다^^
이 글은 스프링노트에서 작성되었습니다.