반응형

NameSpace란 무엇인가?

우선 이것이 무엇인지부터 알기전에 Namespace라는 개념이 왜 생겨났는지에 대해 알아보도록 하자.

[1] NameSpace가 생기게 된 계기

 흔히 HTML, WML 등등 MarkUp Language들은 많이있다. 이들 마크업 언어들의 특징은 무엇인가? 그렇다 바로 단일화된 표현방법이다. 즉, HTML은 HTML로 , WML은 WML로 작성한다. 그럼 XML의 경우는 어떠한가? XML은 다수의 마크업 언어로 작성이 가능하다. 아래 예를 보도록 하자.

[ 고객정보 XML 표현] => CML
<?xml version="1.0" encoding="euc-kr">
<정보>
<주민번호>852255-1512555</주민번호>
<이름>홍길동</이름>
<이메일>aaaa@gmail.com</이메일>
</정보>

[ 제품 XML 표현] => PML
<?xml version="1.0" encoding="euc-kr">
<정보>
<제품코드>AD333D</제품코드>
<제품명>멋진냉장고</제품명>
<소비전력>250W</소비전력>
</정보>

위의 정보를 보라. 위 처럼 ,CML과 PML 두가지 마크업 언어로 작성된 코드가 있다. XML에서 이 두가지를 병합한다고 가정해 보자.

[ 주문 XML 표현] => OML
<?xml version="1.0" encoding="euc-kr">
<주문정보>
<정보>
<주민번호>852255-1512555</주민번호>
<이름>홍길동</이름>
<이메일>aaaa@gmail.com</이메일>
</정보>
<정보>
<제품코드>AD333D</제품코드>
<제품명>멋진냉장고</제품명>
<소비전력>250W</소비전력>
</정보>
</주문정보>

위 코드를 보라 하나의 XML로 두가지 마크업 언어를 병합하였을때 문제가 생기게 된다. 즉, 동일한 이름을 가지는 엘리먼트가 발생시 일반 어플리케이션이 두 "정보" 라는 단어에 대해서 정확한 Parsing 과정을 할 수 없게 된다.

즉 어떤정보가 유저가 원하는 정보인지를 찾을 수가 없다.

이런 문제를 해결하기 위해 [NameSpace] 가 존재하게 된것이다.

즉 NameSpace가 왜 존재하느냐에 대한 답은 각 Element간의 충돌을 방지 하기 위해서이다.

[2] NameSpace의 해결 방안.

W3C 에서는 위와 같은 충돌을 방지하기 위해 각 Element와 속성 이름을 전 세계적으로 유일하게 구분 할 수 있도록 새로운 메커니즘을 고안하여 Open 하게 된다.

그것이 바로 오늘 설명하고자 하는 Namespace in XML 이며 현재 W3C의 권고안으로 표준화 되어있는 상태이다.

[3] NameSpace의 형태

NameSpace는 URI로 표현이 된다. URI란 Uniform Resource Identifier 의 약어로 서 각 엘리먼트를 리소스 라는 명칭을 사용해 표현시, 리소스를 구분할 수 있는 문자열 이란 의미이다.

흔히들 URL과 많이 햇갈리는 사람이 있을 것이지만, 우리가 현재 웹상에서 많이 사용하고 있는 URL은 URI의 한 부분임을 잊지 말도록 하자.

XML에서는 이 Namespace를 결정짓는 이름으로 URL사용을 많이 한다.왜 URL로 많이 사용하는 것인가? 바로 도메인은 세계에서 유일하게 보장해주는 값이기 때문이다.

[3] URI 표현방법

이제 URI란 것이 무엇인지도 알았다 . 그럼 이걸 어떻게 표현하는지를 한번 살펴 보도록 하자.
URI를 표현하기위해 URL을 이용한다는 것은 앞에서도 언급했던 부분이다. 그럼 모든 엘리먼트 마다 URL을 다 적어 준다면, 과연, XML문서를 읽기가 쉬울것인가? 아니다. 분명 더 난감해질것이다. 그래서 생긴것이 "접두어" 이다.

아래 코드를 보도록 하자.

[ 네임스페이스 선언 방법 ]
<Element 명 xmlns:접두어="네임스페이스이름">
     <접두어:엘리먼트명> </접두어:엘리먼트명>
</Element 명>

네임스페이스선언이라함은 이제 알게 될것이다.바로 접두어를 선언하는 것과같은 것이다. 접두어란 긴~~~ NameSpace를 짧은 Alias로 변환해 준다고생각하면 좀 더 쉬울 것이다.

아래 코드를 보자 위 [1]번에 언급되었던 중복된 엘리먼트 간의 관계를 접두어로 표현한 것이다.

[ 주문 XML 표현] => OML
<?xml version="1.0" encoding="euc-kr">
<주문정보 xmlns:고객= "http://pedora.co.kr/11/aaaML" xmlns:제품="http://pedora.co.kr/11/bbbML">
<고객:정보>
<고객:주민번호>852255-1512555</고객:주민번호>
<고객:이름>홍길동</고객:이름>
<고객:이메일>aaaa@gmail.com</고객:이메일>
</고객:정보>
<제품:정보>
<제품:제품코드>AD333D</제품:제품코드>
<제품:제품명>멋진냉장고</제품:제품명>
<제품:소비전력>250W</제품:소비전력>
</제품:정보>
</주문정보>

위 코드를 보면 확실히 어플리케이션이 Parsing시 어떠한 정보를 Parsing 해야하는지

감이잡히게 된다.



[정리]

지금까지 XML를 기준으로 NameSpace란 무엇인가에 대해 한번 알아보는 시간을 가졌다. 이 개념을 공부하게 된 계기는 RDF 즉, 온톨로지 모델링에 있어서 NameSpace는 중요한 역할을 하기 때문이다.

위의 관점에서 다음 에 오는 어떠한 MarkUp 랭귀지도 XML에서는 표현 가능하다는 것을 알 수 있다.

                                                               - 2010.09.14 랑이씀 -

반응형

'Semantic Web > 용어정리' 카테고리의 다른 글

[RDFWeb] FOAF 란?  (0) 2010.09.13
[ Semantic Web 이란 ? ] => 업데이트중  (0) 2010.08.25
반응형
온톨로지의 RDF 문서를 제작 하다보면 FOAF란 용어를 가끔 보게 된다.

오늘은 이 용어에 대해 조금 알아보도록 하겠다.

FOAF는  Wiki 에서 찾아보면 아래와 약어가 같다.

[ FOAF(Friend Of A Friend) 의 정의 ]

이 용어는 어떤것을 명세화 라는 과정을 거칠때 사용하는 것으로, 시맨틱 웹 기술을 이용해
사람을 기술하고 기계가 이를 자동으로 통합하고 처리 할 수 있도록 포맷을 정형화 한 것이다.
FOAF는 각각의 사람을 기술하는 문서만 작성하면, 그를 기반으로 기계가 자동으로 SNS 를 형성 할수 있다는데 강점이 있다.

출처 : http://ids.snu.ac.kr/wiki/%ED%9A%A8%EC%9C%A8%EC%A0%81%EC%9D%B8_FOAF_%EB%AC%B8%EC%84%9C_%ED%81%AC%EB%A1%A4%EB%A7%81_%EC%8B%9C%EC%8A%A4%ED%85%9C_%EA%B5%AC%ED%98%84
반응형

'Semantic Web > 용어정리' 카테고리의 다른 글

NameSpace란?  (5) 2010.09.14
[ Semantic Web 이란 ? ] => 업데이트중  (0) 2010.08.25
반응형
[ 서론 ]

Semantic Web 이란... W3C 즉 World Wide Web의 창시자인 팀버너스리 가 창안한 Web 3.0 에서의 패러다임이다. Web2.0 이니 , Web3.0 이니 하는것들은 특정 기술이 아니며, 그 시대적 배경에 맞게 필요한 기술들의 동향을 가리키는 패러다임 인것을 명심하도록 하자. 아무튼, Web3.0 패러다임의 모토가 되는 개념이 바로 Semantic Web이다.

과거 Web2.0이 대두되었던 시절 Ajax Flex등등과 같은 RIA 관련 기술들이 많이 나왔고 지금 현재 현업에서 많이 사용중에 있다. 그렇다면, Web3.0 기반의 모토인 Semantic 에서의 주된 기술은 무엇이며, 또한 Semantic Web이 지향 하고자 하는 패러다임은 어떤것들인지 아래 글을 통해 한번 적어보도록 하겠다.


[ 본론 ]

(1) Semantic Web의 정의

W3C의 창시자인 팀버너스리는 Web3.0에 대해 아래와 같이 말했다.


 "The Semantic Web is an extension of the current web in which information is given well-defined meaning, better enabling computers and people to work in cooperation."

-- Tim Berners-Lee, James Hendler, Ora Lassila, The Semantic Web, Scientific American, May 2001

위 글을 해석해 보면 이렇다 ( 뭐 맞는지 안맞는지는 모르지만, 내가 이해하기론 이렇다는 것이다. )
" 시멘틱 웹이란, 각각의 정보에 의미를 주어 컴퓨터와 사람간의 의사소통에 더 낳은 조화를 이룰 수 있도록 현재 웹을 확장한 것이다."

음.. 얼추 맞는듯하다. 위 말이 정의 이다. 위 정의를 보고 이해하겠는가? ㅋㅋㅋ 아마 못하는 사람들이 많은 것이다.

제대로 된 정의를 한국어로 표현하면  아래와 같다.

[ 시맨틱 웹 의 정의 ]
 Semantic Web은 (Semanteme + Web)을 합친 용어로 말그래로 의미론적 웹이다. 즉, 분산환경 시스템에서 리소스가 되는, 정보와 정보 사이의  association(관계) 와 의미정보(Semanteme) 를 컴퓨터가 처리할 수 있는 온토롤지 형태로 표현하고, 이를 자동화 기기가 처리하도록 하는 프레임워크 이자 기술이다.
여기서 자동화 기기가 처리한다는 것은 (추론)을 의미한다.


나도 물론 그랬기 때문이다. 우선 정의는 여기까지 하고 아래 예제 및 필요성 등등에 대해 적은걸 보면서 이해하길 바란다.

(2) Semantic Web 의 예시 및 필요성

위 정의에서 말했듯이 Semantic Web의 Key가 되는 정의는 "정보에 의미를 준다." 라는 말이다. 즉,  이 말이 무엇인가.? Web2.0 시대 이전부터 계속적인 발전을 거듭해온것이 검색엔진 이다. 비단 검색엔진 뿐만 아니라 시맨틱 웹은 여러 분야에서 적용가능하지만, 단편적인 예로 검색엔진을 예시로 들겠다.

예를 들어 우리가 google에서 "테스트" 라는 단어를 검색했다고 가정하자. 우선 "테스트" 라는 단어가 우리 생활에서 사용되는 의미가 몇가지가 있는지 알아보자.

1) 시험 의 의미 ex) 연합고사, 학기말 고사 , 모의고사 등등
2) 어떤한 사물을 개발 후 , 품질 테스트 의 의미.
등 등등

여러 의미가 있다. 그렇다면 혹자는 "테스트" 라는 단어를 검색시 2) 의 품질테스트 에 대한 정보를 얻고 싶다. 하지만, 혹자 입장에서는 원치않는 1) 검색의 결과또한 가지게 된다. 이것이 현재 Web 검색의단점이다. 만약 각각의 정보에 의미를 두어 , 각 정보들 간의 연관관계를 표현 후 , 그 관계를 통해 검색이 되어진다면,  인공지능적인 즉 과거 Turing Test 와 같은 기계가 의미론적인 검색이 가능해 질것이다.

(3) 시맨틱 웹을 구현하기 위한 기술

1) RDF (Resource Discription Framework) 
   => 정의
   RDF란 웹 상에서 존재하는 리소스를 묘사하기 위한, 기술, 메타데이터, 어의, 구문 및 강조에 대한 공통규칙을 지원하
   는 기법을 통해 웹 상에 존재하는 기계가 이해하도록 정보를 교환하기 위해 W3C에서 제안, 메타 데이터간의 효율적인
   교환 및 상호호환을 목적으로 한다.

   => XML VS RDF
   XML 은 문서의 문법은 구성하고 있지만, 그 문서가 가지고 있는 의미를 Process가 처리하도록 만드는데 한계가
   있기 때문에 의미를 정해줄 새로운 구문이 필요했으며, 그걸 RDF가 해주고 있다.
   즉 특정 메터데이터를 의미론적으로 표현시 문법은 XML을 따르되 , 의미론적 정의는 RDF를 따른다고 할 수 있다.
   
   => 우리는 왜 RDF에 관심을 가지는지 이해
   RDF가 기본적으로 가지고 있는 기능을 이해해야, 왜 RDF에 관심을 가지는지 파악 가능하다.
   (기능)
   . 메타데이터를 Process가 이해할 수 있는 의미를 지닌다. => 요기능이 젤 중요하다.
   . 단순 문자 검색보다 정확히 리소스를 찾을 수 있다. => 즉 의미론적 검색이 가능하다는 것이다.
   . 스키마를 발전 시킴으로서 차후의 APP 업그레이드가 가능하다.
   
   (RDF 적용분야)
   . 검색엔진 : 메타 데이터 기반의 검색을 통해 , 의미론적으로 보다 정확한 검색이 가능하다.
   . 카다로그 & 분석 : 온톨로지의 중요 기능중 하나인 관계(Association)을 통해 데이터 간의 상호 관계를 기술 
     가능하다.
   
    
    (현재 HTML에 RDF를 부여하는 방법)
    . <HEAD></HEAD> 사이에 아래 내용을 추가한다.
       
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#3" xmlns:dc="http://purl.org/dc/elements/1.1/">
 <rdf:Description rdf:about="http://doc" dc:creator="Joe Smith" dc:title="My document" dc:description="Joe's ramblings about this summer vacation." dc:date="1999-09-10" />
</rdf:RDF>
    
     . about : 문서 자체의 Web주소를 가르킨다. (변경가능)
     . creator : 문서 제작자의 이름을 기술한다.
     . xmlns : 속성의 값은 수정불가하다.

    (RDF 기본 데이터 모델)
    RDF는 3가지 구성요소로 이루어져있따.(리소스(Resource), 특성(Property), 구문(statement))
    Resource : RDF로 기술되는 모든 사물이다. ( 항상 URI + ID 의 결합으로 명명된다)
    Property : 리소스를 기술하는데 사용된 특수한 관점이나, 성질, 관계를 말한다.
                  특정한 의미를 가지고, 리소스가 가질수 있는 값을 정의하고, 다른 특성과의 관계를 가진다.
    Object or Literal : 리소스의 특성과 특성값을 의미한다.

    요건 바로 예제를 보도록 하겠다. 우선 아래와 같은 문장이 있다.
    "성랑이는 컴퓨터를 산다" 이런 문장이 있다고 가정하자. 그럼 아래와 같은 결과를 얻을 수 있다.

   Resource  => 성랑이는
   Property  => 산다
   Object or Literal => 컴퓨터
   이렇게 묵이게 된다. 이렇게 한 묶음을 Triple 또는 RDF모델 이라고 한다.


2) OWL (Web Ontology Language)






[ 참고문헌 ]
반응형

'Semantic Web > 용어정리' 카테고리의 다른 글

NameSpace란?  (5) 2010.09.14
[RDFWeb] FOAF 란?  (0) 2010.09.13

+ Recent posts