"SPARQL Tutorial"의 두 판 사이의 차이
hiblue
(→참고자료) |
|||
| 1번째 줄: | 1번째 줄: | ||
| − | ==RDF | + | ==RDF Triplestore와 LOD(Linked Open Data) 서비스== |
| − | |||
| − | |||
| − | |||
주어(Subject) --서술어(Predicate/Verb)--> 목적어(Object) | 주어(Subject) --서술어(Predicate/Verb)--> 목적어(Object) | ||
| + | ::웹 상의 시맨틱 정보를 저장하는 그래프 데이터베이스의 형태로, 스키마 모델 - 온톨로지를 이용한다. | ||
| + | ::LOD는 RDF의 형식으로 이루어진, 누구나 사용할 수 있도록 공개된 데이터베이스를 제공하는 서비스를 말한다. | ||
| − | == | + | ==온톨로지== |
| − | * | + | *Data Propery : 특정 값으로 표현되는 속성 |
| − | * | + | *Object Propery : 특정 개체로 연결되는 속성 |
| − | + | *rdfs:label / rdf:type | |
| − | * | ||
| − | |||
| − | |||
| − | |||
==RDF 표현형식== | ==RDF 표현형식== | ||
*Turtle | *Turtle | ||
| − | + | <pre> | |
| − | + | @base <http://example.org/> . | |
| − | + | @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . | |
| − | + | @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . | |
| − | + | @prefix foaf: <http://xmlns.com/foaf/0.1/> . | |
| − | + | @prefix rel: <http://www.perceive.net/schemas/relationship/> . | |
| − | + | ||
| − | + | <#green-goblin> | |
| − | + | rel:enemyOf <#spiderman> ; | |
| + | a foaf:Person ; | ||
| + | foaf:name "Green Goblin" . | ||
| + | </pre> | ||
| + | *[http://dh.aks.ac.kr:8890/sparql?default-graph-uri=&query=PREFIX+ekc%3A+%3Chttp%3A%2F%2Fdh.aks.ac.kr%2Fontologies%2Fekc%23%3E%0D%0APREFIX+ekci%3A+%3Chttp%3A%2F%2Fdh.aks.ac.kr%2Firi%2Fekc%23%3E%0D%0APREFIX+owl%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2002%2F07%2Fowl%23%3E%0D%0APREFIX+rdf%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23%3E%0D%0APREFIX+xsd%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema%23%3E%0D%0APREFIX+xml%3A+%3Chttp%3A%2F%2Fwww.w3.org%2FXML%2F1998%2Fnamespace%3E%0D%0APREFIX+rdfs%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0D%0APREFIX+dcterms%3A+%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Fterms%23%3E%0D%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E+%0D%0APREFIX+dc%3A+%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%23%3E%0D%0APREFIX+edm%3A+%3Chttp%3A%2F%2Fwww.europeana.eu%2Fschemas%2Fedm%23%3E%0D%0A%0D%0Aselect+ekci%3A%EC%A1%B0%EC%84%A0_%EC%84%B8%EC%A2%85+%3Frel+%3FB+where%7B+ekci%3A%EC%A1%B0%EC%84%A0_%EC%84%B8%EC%A2%85+%3Frel+%3FB%7D&should-sponge=&format=text%2Fplain&timeout=0&debug=on N-Triples] | ||
| + | *[http://dh.aks.ac.kr/~hiblue/sparql.xml RDF/XML] | ||
| + | *[http://dh.aks.ac.kr:8890/sparql?default-graph-uri=&query=PREFIX+ekc%3A+%3Chttp%3A%2F%2Fdh.aks.ac.kr%2Fontologies%2Fekc%23%3E%0D%0APREFIX+ekci%3A+%3Chttp%3A%2F%2Fdh.aks.ac.kr%2Firi%2Fekc%23%3E%0D%0APREFIX+owl%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2002%2F07%2Fowl%23%3E%0D%0APREFIX+rdf%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23%3E%0D%0APREFIX+xsd%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema%23%3E%0D%0APREFIX+xml%3A+%3Chttp%3A%2F%2Fwww.w3.org%2FXML%2F1998%2Fnamespace%3E%0D%0APREFIX+rdfs%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0D%0APREFIX+dcterms%3A+%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Fterms%23%3E%0D%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E+%0D%0APREFIX+dc%3A+%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%23%3E%0D%0APREFIX+edm%3A+%3Chttp%3A%2F%2Fwww.europeana.eu%2Fschemas%2Fedm%23%3E%0D%0A%0D%0Aselect+ekci%3A%EC%A1%B0%EC%84%A0_%EC%84%B8%EC%A2%85+%3Frel+%3FB+where%7B+ekci%3A%EC%A1%B0%EC%84%A0_%EC%84%B8%EC%A2%85+%3Frel+%3FB%7D&should-sponge=&format=text%2Fhtml&timeout=0&debug=on HTML] | ||
==SPARQL== | ==SPARQL== | ||
===Prefix=== | ===Prefix=== | ||
| 108번째 줄: | 109번째 줄: | ||
*[https://www.w3.org/2001/sw/DataAccess/rq23/ W3C SPARQL Query Language for RDF] | *[https://www.w3.org/2001/sw/DataAccess/rq23/ W3C SPARQL Query Language for RDF] | ||
*[http://www.iro.umontreal.ca/~lapalme/ift6281/sparql-1_1-cheat-sheet.pdf SPARQL Cheat Sheet by LeeFeigenbaum] | *[http://www.iro.umontreal.ca/~lapalme/ift6281/sparql-1_1-cheat-sheet.pdf SPARQL Cheat Sheet by LeeFeigenbaum] | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
2018년 3월 1일 (목) 23:06 판
목차
RDF Triplestore와 LOD(Linked Open Data) 서비스
주어(Subject) --서술어(Predicate/Verb)--> 목적어(Object)
- 웹 상의 시맨틱 정보를 저장하는 그래프 데이터베이스의 형태로, 스키마 모델 - 온톨로지를 이용한다.
- LOD는 RDF의 형식으로 이루어진, 누구나 사용할 수 있도록 공개된 데이터베이스를 제공하는 서비스를 말한다.
온톨로지
- Data Propery : 특정 값으로 표현되는 속성
- Object Propery : 특정 개체로 연결되는 속성
- rdfs:label / rdf:type
RDF 표현형식
- Turtle
@base <http://example.org/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rel: <http://www.perceive.net/schemas/relationship/> .
<#green-goblin>
rel:enemyOf <#spiderman> ;
a foaf:Person ;
foaf:name "Green Goblin" .
SPARQL
Prefix
데이터들이 어떤 층위에 속해 있는지를 지정해놓는 공간. 이름이 같은 데이터라도 층위에 따라 다른 의미를 가질 수 있다.
- DC : Dublin Core, 서지정보 메타데이터[1]
- FOAF : Friend of A Friend, 현대 사람들의 관계 기술 [2]
- BIBO : Bibliographic Ontology, 책이나 잡지 등의 서지정보 [3]
- SKOS : Simple Knowledge Organization System, 지식 어휘 체계*시소러스 [4]
- EDM : Europeana Data Model, 유로피아나(유럽 박물관/미술관 통합 아카이브) [5]
- RDFS : Resource Description Framework, RDF 구조를 표현하기 위한 지식표현 모델(클래스, 속성 정의)[6]
기본형태
SELECT ?A(변수), ?B(변수)
WHERE
{ ?A(변수) Prefix:relation ?B(변수)
}
- ? : 변수의 앞에 붙임.(변수임을 표시)
- ; : 특정 변수에 조건을 추가할 때 (and)
- . : 기존에 선언된 변수와 관계 없이 새로운 개체나 조건을 명시할 때(end)
- && : and
- || : or
- # : comment (주석)
Filter
- 조건문, Where 대괄호 안에 넣어 검색할 개체가 가질 특정 조건을 부여
WHERE { FILTER( ?A >300; ?B = "title" ) }
- 정규표현식 사용
WHERE { FILTER REGEX( ?A, "정규표현식") }
filter regex( ?A, "(BBB)+") : 특정문구(BBB)가 포함된 A
filter regex( ?A, "^(BBB)") : 특정문구(BBB)로 시작하는 A
filter regex( ?A, "(BBB)$") : 특정문구(BBB)로 끝나는 A
Optional
- 추가사항, Where 대괄호 안에 넣어 검색할 개체를 보여주되, 특정 속성을 가진 경우 그 특정 속성을 보여줌
WHERE { OPTIONAL( ?A prefix:title_ZH ?title_ZH)}
- filer와 함께 사용 가능 : OPTIONAL { ?x ns:price ?price . FILTER (?price < 30) }
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
Distintct / Count
- sql에서의 기능과 같음 / 특정 조건을 가진 개체의 갯수
select distinct ?rel count(*)
where { ?a ?rel ?b. }
ASK
- 특정 조건에 해당하는 값이 있는지 없는지를 yes/no의 값으로 보여줌.
ASK { ?x foaf:name "Alice" }
Update
- INSERT DATA { ?A rel ?B }
- DELETE DATA { ?A rel ?B }
- [DELETE { template }] [INSERT {template}] where {pattern}
- CLEAR GRAPH <uri>
- CREATE GRAPH <uri>
- DROP GRAPH <uri>
Filter와 함께 쓰는 기타 기능들
| 명칭 | 기능 | 사용예시 |
|---|---|---|
| bound | 값이 있는 경우 is not null 특정 값이 없는 경우 is null : !bound |
FILTER(bound(?date)) |
| isLiteral | 값이 문자인 경우 | FILTER(isLiteral(?date)) |
| str | 값을 문자형태로 변환 | FILTER regex(str(?mbox), "@work.example") |
| lang | 값이 어느 언어를 사용하지를 명시(Languagage 태그) 한국어 KO / 영어 EN / 일본어 JA / 중국-간체 ZH-HANS / 중국-번체 ZH-HANT |
FILTER ( lang(?name) = "ES" ) |