"20180208 회의록"의 두 판 사이의 차이

khw
이동: 둘러보기, 검색
(추가 논의 사항)
87번째 줄: 87번째 줄:
 
#* 데이터 내용 검토해보고 우리 데이터 형태로 전환할 방안에 대해 논의해봅시다.
 
#* 데이터 내용 검토해보고 우리 데이터 형태로 전환할 방안에 대해 논의해봅시다.
  
==SPARQL==
 
==RDF Triplestore==
 
RDF triplestore는 W3C에서 정의한 시맨틱 정보를 저장하는 그래프 데이터베이스의 형태 중 하나이다. 온톨로지라는 스키마 모델을 이용하며, 개체와 관계간의 계층 구조를 보여줄 수도 있다.
 
데이터와 아래와 같이 각 개체와 개체관의 관계를 보여주는, 3형식(Triple, Statement)으로 저장되기 때문에 Triple Store라 불린다.
 
  
주어(Subject) --서술어(Predicate/Verb)--> 목적어(Object)
 
 
==LOD(Linked Open Data)==
 
*W3C에서 명시한 방법으로 구조화된, 서로 연결된, 웹(Web)상의 데이터로 RDF triple 형식을 이용한다.
 
*개체(노드)의 ID으로 URL를 사용
 
**<small>클래스 정의용 관계어 : rdf:type / rdfs:subClassOf</small>
 
**<small>개체 네이밍 관계어 : rdfs:label </small>
 
 
==Data Protery / Object Property==
 
*Data Propery : 특정 값으로 표현되는 속성 ex) Label
 
*Object Propery : 특정 개체로 연결되는 속성 -> ex) Creator
 
==RDF 표현형식==
 
*Turtle
 
  ekc:조선_세종 dc:creator ekc:훈민정음
 
<nowiki><http://dh.aks.ac.kr/Encyves/resource/joseon_Sejong> rdfs:label "조선 세종"@kor</nowiki>
 
*RDF/XML 
 
<nowiki><ekc:joseon_Sejong rdfs:about="http://dh.aks.ac.kr/Encyves/resource/joseon_Sejong"/> <dc:creator rdf:resource="http://dh.aks.ac.kr/Encyves/resource/hunminjeongeum"/></nowiki></span>
 
<nowiki><ekc:joseon_Sejong rdfs:about="http://dh.aks.ac.kr/Encyves/resource/joseon_Sejong"> <rdfs:label xml:lang="kor">조선 세종</rdfs:label></ekc:joseon_Sejong></nowiki>
 
*N-Triples
 
<nowiki><http://www.w3.org/2001/sw/RDFCore/ntriples/> <http://purl.org/dc/terms/title> "N-Triples"@en-US .</nowiki>
 
<nowiki><http://example.org/show/218> <http://www.w3.org/2000/01/rdf-schema#label> "That Seventies Show"^^<http://www.w3.org/2001/XMLSchema#string></nowiki>
 
<nowiki><http://example.org/#spiderman> <http://www.perceive.net/schemas/relationship/enemyOf> <http://example.org/#green-goblin></nowiki>
 
 
==SPARQL==
 
===Prefix===
 
데이터들이 어떤 층위에 속해 있는지를 지정해놓는 공간. 이름이 같은 데이터라도 층위에 따라 다른 의미를 가질 수 있다.
 
*<span style="color:DarkCyan">DC : Dublin Core, 서지정보 메타데이터[http://www.dublincore.org/]</span>
 
*<span style="color:DarkCyan">FOAF : Friend of A Friend, 현대 사람들의 관계 기술 [http://xmlns.com/foaf/spec/]</span>
 
*<span style="color:DarkCyan">BIBO : Bibliographic Ontology, 책이나 잡지 등의 서지정보  [http://bibliontology.com/]</span>
 
*<span style="color:DarkCyan">SKOS : Simple Knowledge Organization System, 지식 어휘 체계*시소러스 [https://www.w3.org/2004/02/skos/]</span>
 
*<span style="color:DarkCyan">EDM : Europeana Data Model, 유로피아나(유럽 박물관/미술관 통합 아카이브) [https://pro.europeana.eu/files/Europeana_Professional/Share_your_data/Technical_requirements/EDM_Documentation//EDM_Definition_v5.2.8_102017.pdf]</span>
 
*<span style="color:DarkCyan">RDFS : Resource Description Framework,  RDF 구조를 표현하기 위한 지식표현 모델(클래스, 속성 정의)[https://en.wikipedia.org/wiki/RDF_Schema]</span>
 
 
===기본형태===
 
SELECT ?A(변수), ?B(변수)
 
WHERE
 
{ ?A(변수) Prefix:relation ?B(변수)
 
}
 
*'''?''' : 변수의 앞에 붙임.(변수임을 표시)
 
*''';''' : 특정 변수에 조건을 추가할 때 (and)
 
*'''.''' : 기존에 선언된 변수와 관계 없이 새로운 개체나 조건을 명시할 때(end)
 
*'''&&''' : and
 
*'''||''' : or
 
 
===Filter===
 
*조건문, Where 대괄호 안에 넣어 검색할 개체가 가질 특정 조건을 부여
 
WHERE { FILTER( ?A >300; ?B = "title" ) }
 
*[https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D 정규표현식] 사용
 
WHERE { FILTER REGEX( ?A, "정규표현식") }
 
<span style="color:DarkCyan"> filter regex( ?A, "(BBB)+") : 특정문구(BBB)가 포함된 A</span><br/>
 
<span style="color:DarkCyan"> filter regex( ?A, "^(BBB)") : 특정문구(BBB)로 시작하는 A</span><br/>
 
<span style="color:DarkCyan"> filter regex( ?A, "(BBB)$") : 특정문구(BBB)로 끝나는 A</span>
 
 
===Optional===
 
*추가사항, Where 대괄호 안에 넣어 검색할 개체를 보여주되, 특정 속성을 가진 경우 그 특정 속성을 보여줌
 
WHERE { OPTIONAL( ?A prefix:title_ZH ?title_ZH)}
 
*filer와 함께 사용 가능 : <span style="color:darkcyan">OPTIONAL { ?x ns:price ?price . FILTER (?price < 30) }</span>
 
===UNION===
 
*합집합, 값을 나란한 열이 아닌, 여러 행으로 보여줌
 
WHERE  { { ?book dc10:title  ?title } UNION { ?book dc11:title  ?title } }
 
===GRAPH / FROM ===
 
*특정 개체의 주소(DB)을 나타낼 때
 
WHERE { GRAPH ?src { ?A rdfs:label ?name} }
 
*특정 DB로 제한할 때
 
SELECT  ?name
 
FROM    <http://example.org/foaf/aliceFoaf>
 
WHERE  { ?x foaf:name ?name }
 
===Order By / Limit / Offset===
 
*Order by : 정렬 / Limit : 값의 갯수 제한 / Offset: 값 중 몇개의 값을 제외
 
WHERE {?x rdfs:label ?title}
 
order by desc(?title)
 
limit 100
 
offset 50
 
===ASK===
 
*특정 조건에 해당하는 값이 있는지 없는지를 yes/no의 값으로 보여줌.
 
ASK  { ?x foaf:name  "Alice" }
 
===Filter와 함께 쓰는 기타 기능들===
 
{|class="wikitable
 
!명칭 !! 기능!!사용예시
 
|-
 
|bound || 값이 있는 경우 is not null<br/>특정 값이 없는 경우 is null : !bound || FILTER(bound(?date))
 
|-
 
|isLiteral || 값이 문자인 경우 || FILTER(isLiteral(?date))
 
|-
 
|str || 값을 문자형태로 변환 ||  FILTER regex(str(?mbox), "@work.example") 
 
|-
 
|lang || 값이 어느 언어를 사용하지를 명시(Languagage 태그)<br/>한국어 KO / 영어 EN / 일본어 JA / 중국-간체 ZH-HANS / 중국-번체 ZH-HANT  ||  FILTER ( lang(?name) = "ES" )
 
|}
 
===기타 추가사항===
 
*[https://www.w3.org/2001/sw/DataAccess/rq23/ W3C SPARQL Query Language for RDF]
 
 
==사용예시==
 
*부산문화관광LOD : 역린[http://lod.busan.go.kr/Page/Movie_%EC%97%AD%EB%A6%B0]
 
*부산문화관광LOD EndPoint : [http://lod.busan.go.kr/sparqlEndpoint.do]
 
*부산문화관광LOD 기본 PREFIX :
 
PREFIX ns: <http://lod.busan.go.kr/ontology/>
 
PREFIX resource: <http://lod.busan.go.kr/resource/>
 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
 
PREFIX xsd:  <http://www.w3.org/2001/XMLSchema#>
 
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
 
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
 
PREFIX schema: <http://schema.org/>
 
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
 
 
*영화의 이름, 영문이름, 제작년도
 
select ?movie_title ?movie_title_en ?make_year
 
where{
 
?movie rdf:type ns:Movie;
 
rdfs:label ?movie_title;
 
ns:title_en ?movie_title_en;
 
ns:makeYear ?make_year
 
} limit 50
 
 
*국제시장에 출연한 배우들은?
 
select *
 
where{
 
?movie ns:hasActor ?actor;
 
rdfs:label ?movie_name.
 
?actor rdfs:label ?actor_name
 
filter(?movie_name="국제시장")
 
}
 
 
*개체의 이름과 해당 DB주소
 
select ?src ?name
 
where{ graph ?src {
 
?some rdfs:label ?name
 
}} limit 100
 
 
*개채의 이름을 가나다순으로 정렬했을 때 상위 50위부터 100위까지 보여라
 
select ?name
 
where{ ?some rdfs:label ?name}
 
order by ?name
 
limit 50 offset 51
 
  
  
 
[[분류: 전통문화 융복합 자원 시맨틱 데이터 개발 연구]]
 
[[분류: 전통문화 융복합 자원 시맨틱 데이터 개발 연구]]

2018년 2월 8일 (목) 14:52 판

← Previous 회의록
20180206 회의록 20180208 회의록


온톨로지 및 데이터 정제

온톨로지

  1. Class는 상위 7개만 유지. (Heritage, Actor, Place, Event, Object, Concept, Text)
  2. 기존의 클래스는 ekc:hasType을 통해서 데이터타입처리
    • 예) 현재=각성 hasClass 승려
      ==> 변경 = 각성 hasClass 인물 / 각성 hasType 승려
  3. 프로퍼티는 서브프로퍼티 허용
    • dcterms:creator 하위에 3가지 - ekc:writer / ekc:calligrapher /ekc:inscriber
  4. 기본 prefix에 ekci http://dh.aks.ac.kr/iri/ekc 추가
  5. 네임스페이스 목록
Prefix Value
ekc http://dh.aks.ac.kr/ontologies/ekc
ekci http://dh.aks.ac.kr/iri/ekci
foaf http://xmlns.com/foaf/0.1
dc http://purl.org/dc/elements/1.1
dcterms http://purl.org/dc/terms
edm http://www.europeana.eu/schemas/edm
owl http://www.w3.org/2002/07/owl
geo http://www.w3.org/2003/01/geo/wgs84_pos

RDF

ID의 class 정의

select distinct '<http://dh.aks.ac.kr/iri/ekc#'+a.node_id+'>'+' '+
            '<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>'+' '+
            '<http://dh.aks.ac.kr/iri/ekc#'+b.class+'>'+' .'
from u_nodelist as a, nodelist as b
where a.node_id=b.node_id

ID의 type 정의

select distinct '<http://dh.aks.ac.kr/iri/ekc#'+a.node_id+'>'+' '+
            '<http://dh.aks.ac.kr/ontologies/ekc#hasType>'+' '+
            '"'+b.type+'"@ko .'
from u_nodelist as a, nodelist as b
where a.node_id=b.node_id

ID의 label 정의

select distinct '<http://dh.aks.ac.kr/iri/ekc#'+a.node_id+'>'+' '+
            '<http://www.w3.org/2000/01/rdf-schema#label>'+' '+
            '"'+b.node_label+'"@ko .'
from u_nodelist as a, nodelist as b
where a.node_id=b.node_id

ID와 ID 관계 정의

select '<http://dh.aks.ac.kr/iri/ekc#'+source+'>'+' '+
      '<'+b.fullname+'#'+ b.relationname+ '> '+
      '<http://dh.aks.ac.kr/iri/ekc#'+target+'>'+' .'
from u_linklist as a, name_space_full as b
where a.relation = b.relation

데이터 업로드

  1. owl 파일을 ttl 형식으로 변환
  2. 전체 소스 데이터를 nt 형식으로 변환
  3. 변환된 ttl 파일 아래에 nt 형식의 소스 데이터 추가
  4. 전체 파일을 nt 형식으로 변환
  5. 업로드

추가 논의 사항

  1. gephi 분석 중 발견된 degree=0 노드들
    • 실제로는 링크 데이터 있음. LST 파일 대상으로 수작업으로 추가할 필요 있음.
  2. 한국문화정보원 데이터
    • 데이터 내용 검토해보고 우리 데이터 형태로 전환할 방안에 대해 논의해봅시다.