티스토리 뷰

J:::SemanticWeb

J_14. 온톨로지 언어

joyHong 2022. 5. 6. 14:37

온톨로지 언어

온톨로지 언어는 구문별 분류와 구조별 분류로 구분할 수 있다.

그중 구문에 따라 전통적인 구문 온톨로지 언어와 마크업 온톨로지 언어로 분류가 된다. 이번 글에서 이야기 하고자하는 내용은 마크업 온톨로지 언어이다. 이는 1990년 후반부터 마크업 언어를 사용하여 지식을 표현하는데 이 중 가장 대표적인 것으로는 RDF, RDFS, OWL 이 있다. 이들은 컴퓨터가 처리할 수 있는 마크업 언어로 지식을 표현하는 지식 표현 방법들이다.

XML을 기반으로 RDF, RDF를 기반으로 RDFS, RDFS를 기반으로 OIL, DAML, OWL이 파생되어 나온 것을 위 그림을 통해 알 수 있다.

 

1. RDF

자원 기술 프레임워크(Resource Description Framework, RDF)는 웹상의 자원의 정보를 표현하기 위한 규격이다. 상이한 메타데이터 간의 어의, 구문 및 구조에 대한 공통적인 규칙을 지원한다. 웹상에 존재하는 기계 해독형(machine-understandable)정보를 교환하기 위하여 월드 와이드 웹 컨소시엄에서 제안한 것으로, 메타데이터간의 효율적인 교환 및 상호호환을 목적으로 한다. 메타 데이터 교환을 위해서 명확하고 구조화된 의미표현을 제공해 주는 공통의 기술언어로 XML(eXtensible Markup Language)을 사용하기도 한다. RDF는 데이터 모형, 데이터의 상호교환을 위한 구문, 스키마 모형, 기계 해독형 스키마를 위한 구문, 질문과 프로파일 프로토콜과 같은 요소로 구성된다.

RDF에 대해서 장황하게 설명을 하였지만 사실 한마디로 요약하자면 그래프 형태로 데이터를 표현(생성)하는 방법이다. 실세계의 사물과 웹상의 자원을 연결시키기 위한 데이터 모델로 RDF가 사용되는 것이다.

RDF는 웹 상의 자원을 기술하는데, 자원이라는 것은 URI로 표현할 수 있는 모든 것이 된다. 이는 사람이 만들어 내어 실재하거나 물리적인 실체는 없으나 개념적으로 존재하는 모든 것이 포함된다.

 

2. RDF Schema (RDFS)

RDF Schema(RDFS)는 특정 메타데이터에서 정의하고 있는 어휘들을 선언하기 위해서 사용된다. 어휘(Vocaburaries)란 속성집합으로 자원을 기술하기 위해 각 메타데이터 형식들에서 정의하고 있는 메타데이터 요소집합을 말한다. 인간이 읽을 수 있고(human-readable) 기계처리가 가능한(machine-processable) 어휘들을 정형화 하는 것은 상이한 메타데이터 형식들간의 어휘 확장과 재사용, 상호교환을 가능하게 해 주는 것이며, 이러한 정형화를 위한 것이 바로 RDF 스키마이다. RDF 스키마는 RDF의 데이터 모형과 구문 명세에 의해서 표현된다.

RDFS는 RDF 데이터의 의미적인 특성을 정의할 수 있게 해준다. 자원의 타입(type) 정보를 통해 클래스를 명시하고, 클래스의 계층 구조, 프로퍼티의 계층 구조 등을 생성할 수 있다. 또한 domain, range 제약(restrictions)을 통해 주어와 목적어에 대한 타입 제약도 정의할 수 있다.

 

3. OWL

OWL (Web Ontology Language)은 사물, 사물들의 집합, 사물들 간의 관계들에 대하여 풍부하고 복잡한 지식을 표현하기 위해 고안되었으며 Description Logic 기반의 언어이다. RDF 스키마를 사용하면 기본적인 관계를 표현할 수 있으며 제한적인 추론 기능을 사용할 수 있다. OWL은 RDF 스키마보다 훨씬 더 풍부한 관계를 표현할 수 있으므로 향상된 추론 기능을 얻을 수 있다. 즉, RDF, RDFS 보다 더욱 향상된 표현력과 추론 기능을 사용할 수 있다는 것이다.

OWL은 2004년에 OWL1이 발표된 후 2009년에 OWL2가 발표가 되었다.

표현력에 따라서 OWL도 종류가 구분되어 진다.

 

직렬화

RDF 로 기술된 데이터는 텍스트 형식으로 표현이 가능하다. 이를 RDF 직렬화라고 한다. 여러 가지 구문을 제공하는데 이는 편의성, 용도에 따라 적합한 구문을 사용하기 위함이다.

 

1. RDF/XML

RDF/XML은 RDF를 위한 XML 구문으로 RDF가 처음 개발된 1990년대 후반에는 이 구문이 유일한 구문이였다. 2001년에 Turtle의 전신인 N3가 제안되고 이후 아래에 열거한 다른 구문들이 점차적으로 표준으로 채택되었다.

<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
	xmlns:foaf="http://xmlns.com/foaf/0.1/"
	xmlns:ns3="http://test.com/" >
  <rdf:Description rdf:about="http://test.com/person/joyhong">
    <rdf:type rdf:resource="http://test.com/ontology/Ontologist" />
    <foaf:name>joyhong</foaf:name>
  </rdf:Description>
  <rdf:Description rdf:about="http://joyhong.tisotry.com">
    <rdf:type rdf:resource="http://test.com/ontology/WebBlog" />
    <ns3:administrator rdf:resource="http://test.com/person/joyhong" />
  </rdf:Description>
</rdf:RDF>

 

2. N-Triples

N-Triples는 가장 간단한 구문으로 라인 기반의 텍스트로 표현한다.

<http://joyhong.tisotry.com>	<http://test.com/administrator>	<http://test.com/person/joyhong> .
<http://test.com/person/joyhong>	<http://xmlns.com/foaf/0.1/name>	"joyhong" .
<http://joyhong.tisotry.com>	<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>	<http://test.com/ontology/WebBlog> .
<http://test.com/person/joyhong>	<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>	<http://test.com/ontology/Ontologist> .

 

3. Turtle

Turtle 은 N-Triples의 확장으로서 가독성을 향상시키기 위한 구문 형식이다.

@prefix rdf:	<http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ns1:	<http://test.com/person/> .
@prefix ns2:	<http://test.com/ontology/> .
@prefix foaf:	<http://xmlns.com/foaf/0.1/> .
@prefix ns4:	<http://test.com/> .

ns1:joyhong
	rdf:type	ns2:Ontologist ;
	foaf:name	"joyhong" .
<http://joyhong.tisotry.com>
	rdf:type	ns2:WebBlog ;
	ns4:administrator	ns1:joyhong .

 

4. TriG

TriG 구문은 Turtle을 확장한 구문으로 여러 그래프를 인코딩할 수 있도록 확장한 것이다. Turtle와 N-Triples는 단일 그래프만 지원했었는데 TriG와 아래에서 설명하는 N-Quads를 통해 다중 그래프를 다룰 수 있게 되었다.

@prefix rdf:	<http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ns1:	<http://test.com/person/> .
@prefix ns2:	<http://test.com/ontology/> .
@prefix foaf:	<http://xmlns.com/foaf/0.1/> .
@prefix ns4:	<http://test.com/> .
<http://test.com/graph>
{
ns1:joyhong	rdf:type	ns2:Ontologist ;
	foaf:name	"joyhong" .
<http://joyhong.tisotry.com>	rdf:type	ns2:WebBlog ;
	ns4:administrator	ns1:joyhong .
}

 

5. N-Quads

N-Quads 구문은 N-Triples을 각각 확장한 구문으로 TriG 와 마찬가지로 다중 그래프를 지원한다.

<http://joyhong.tisotry.com>	<http://test.com/administrator>	<http://test.com/person/joyhong> <http://test.com/graph> .
<http://test.com/person/joyhong>	<http://xmlns.com/foaf/0.1/name>	"joyhong" <http://test.com/graph> .
<http://joyhong.tisotry.com>	<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>	<http://test.com/ontology/WebBlog> <http://test.com/graph> .
<http://test.com/person/joyhong>	<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>	<http://test.com/ontology/Ontologist> <http://test.com/graph> .

 

6. JSON-LD

JSON-LD는 JSON 기반 RDF 구문으로 JSON 형식으로 RDF 그래프와 데이터셋을 표현한다.

{
  "@context": {
    "name": {
      "@id": "http://xmlns.com/foaf/0.1/name"
    },
    "administrator": {
      "@id": "http://test.com/administrator",
      "@type": "@id"
    }
  },
  "@graph": [
    {
      "@id": "http://test.com/person/joyhong",
      "@type": "http://test.com/ontology/Ontologist",
      "name": "joyhong"
    },
    {
      "@id": "http://joyhong.tisotry.com",
      "@type": "http://test.com/ontology/WebBlog",
      "administrator": "http://test.com/person/joyhong"
    }
  ]
}

 

 

그렇다면 시맨틱웹을 구현 혹은 정보의 구조화를 위해 RDF 데이터를 HTML 웹페이지에 어떻게 넣는 것일까?

웹 페이지에 구조화된 요소들을 마크업하기 위하여 microdata, RDFa, JSON-LD 등의 인코딩 방식이 사용될 수 있다.

RDFa는 HTML 속성에 RDF를 임베딩하기 위한 구문 및 처리 규칙이다.

JSON-LD 같은 경우는 SEO를 위해 사용하는 구문이기도 하다.

 

1. Microdata

<div itemscope itemtype="https://schema.org/SoftwareApplication">
  <span itemprop="name">Angry Birds</span> -

  REQUIRES <span itemprop="operatingSystem">ANDROID</span><br>
  <link itemprop="applicationCategory" href="https://schema.org/GameApplication"/>

  <div itemprop="aggregateRating" itemscope itemtype="https://schema.org/AggregateRating">
    RATING:
    <span itemprop="ratingValue">4.6</span> (
    <span itemprop="ratingCount">8864</span> ratings )
  </div>

  <div itemprop="offers" itemscope itemtype="https://schema.org/Offer">
    Price: $<span itemprop="price">1.00</span>
    <meta itemprop="priceCurrency" content="USD" />
  </div>
</div>

 

2. RDFa

<div xmlns:dc="http://purl.org/dc/elements/1.1/"
  about="http://www.example.com/books/wikinomics">
  <span property="dc:title">Wikinomics</span>
  <span property="dc:creator">Don Tapscott</span>
  <span property="dc:date">2006-10-01</span>
</div>

 

3. JSON-LD

<html>
  <head>
    <title>Party Coffee Cake</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org/",
      "@type": "Recipe",
      "name": "Party Coffee Cake",
      "author": {
        "@type": "Person",
        "name": "Mary Stone"
      },
      "datePublished": "2018-03-10",
      "description": "This coffee cake is awesome and perfect for parties.",
      "prepTime": "PT20M"
    }
    </script>
  </head>
  <body>
    <h2>Party coffee cake recipe</h2>
    <p>
      <i>by Mary Stone, 2018-03-10</i>
    </p>
    <p>
      This coffee cake is awesome and perfect for parties.
    </p>
    <p>
      Preparation time: 20 minutes
    </p>
  </body>
</html>

 

이상으로 온톨로지 언어에 대한 간략한 설명과 RDF 구문에 대해 살펴보았다.

다음 글에서는 RDFa로 기술된 정보를 획득하여 뭔가를 해보는 것을 적어보겠다.

끝.

'J:::SemanticWeb' 카테고리의 다른 글

J_15.웹페이지로부터 지식그래프 생성  (0) 2022.05.06
J_13. 시맨틱 웹과 온톨로지  (0) 2022.02.27
J_12. 지식표현과 온톨로지  (0) 2022.02.07
J_11. RDF 1.1 Primer  (0) 2014.11.26
J_10. SPARQL Endpoint 상태  (0) 2013.12.27
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함