국가서지LOD 홈페이지는 크롬 브라우저와 IE10 이상의 버전에 최적화 되어 있습니다. 오늘하루 열지 않음

SPARQL Syntax

01 SPARQL 질의 형식
  • SPARQL 질의 형식은 개략적으로 아래와 같다.
  • 질의에서 사용되는 변수는 ‘?변수명’ 또는 ‘$변수명’와 같은 형태로 사용한다.
PREFIX
SELECT / CONSTRUCT / ASK / DESCRIBE
	(DISTINCT / REDUCED)
FROM (NAMED)
WHERE
	Graph Pattern / OPTIONAL / FILTER / UNION / GRAPH
ORDER BY
LIMIT
OFFSET
 
1. PREFIX

질의에서 사용되는 Prefix를 정의한다.

사용 예
  • PREFIX nlon: <http://lod.nl.go.kr/ontology/>
  • prefix bibo: <http://purl.org/ontology/bibo/>
국립중앙도서관 LOD 사용 예

아래 그림의 빨간색 점선 안쪽에 해당하는 [Prefixes] 선택을 통해 Prefix 사용

 
2. ORDER BY
  • 결과를 sort 한다.
  • 뒤에 sort할 변수가 오며, ASC(변수) 또는 DESC(변수)를 사용하여 정렬 순서를 정할 수 있다. 디폴트는 ASC이며 다중 정렬도 가능하다.
  • CONSTRUCT 나 DESCRIBE 에서는 Order By의 사용이 가능하지만 그 결과에는 아무런 영향을 끼치지 않는다.
  • ASK 에서는 Order By 를 사용할 수 없다.
  • 정렬 순서는 특정 Term들 사이에서 Fixed 되어 있다.
  • 주의 : order by는 대용량 트리플의 경우 시스템 성능 저하를 초래할 수 있습니다.
Query
select ?s ?p ?o where {
?s rdf:type <http://lod.nl.go.kr/ontology/Author> . 
?s ?p ?o . 
} order by ?s limit 50
Query
select ?s ?p ?o where { 
?s rdf:type <http://lod.nl.go.kr/ontology/Author> . 
?s ?p ?o . 
} order by desc(?s) limit 50
 
3. LIMIT

결과 개수를 제한한다.

Query
select ?s ?p ?o where { 
?s rdf:type <http://lod.nl.go.kr/ontology/Author> . 
?s ?p ?o . 
} limit 50 
 
4. OFFSET

결과를 가져올 시작 번호를 정할 수 있다.

Query
select ?s ?p ?o where { 
?s rdf:type <http://lod.nl.go.kr/ontology/Author> . 
?s ?p ?o . 
} limit 5 offset 10 
 
5. WHERET
  • 쿼리의 조건을 명시한다.
  • Graph Pattern / OPTIONAL / FILTER / UNION / GRAPH 등을 사용하여 조건 생성이 가능하다.
 
6. OPTIONAL

Optional은 다음과 같은 형식으로 사용 가능하다.

  • pattern OPTIONAL { pattern }
  • { OPTIONAL { pattern } }
  • { { } OPTIONAL { pattern } }
  • pattern OPTIONAL { pattern } OPTIONAL { pattern }
  • { pattern OPTIONAL { pattern } } OPTIONAL { pattern }
  • 2번과 3번은 동일
    4번과 5번은 동일(왼쪽부터 연산된다.)
Query
prefix nlon:  
select * where { 
?s rdf:type <http: //lod.nl.go.kr/ontology/Author> . 
OPTIONAL { ?s nlon:deathYear ?deathYear }
} limit 50

공통 변수를 가지고 있지 않은 경우에는 Full Join 연산을 한다.

 
7. FILTER

Filter는 아래에 설명된 표와 같이 다양한 연산을 사용하여 조건에 대한 제한이 가능하며 이를 위해 다양한 연산방법을 제공한다.

Query
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
select * where { 
?s rdf:type <http://lod.nl.go.kr/ontology/Concept> . 
?s rdfs:label ?label . 
filter regex(?label, "^love") 
} limit 50 
 
8. UNION

Union 의 예제는 다음과 같다.

Query
prefix bibo: <http://purl.org/ontology/bibo/> 
prefix owl: <http://www.w3.org/2002/07/owl#> 
SELECT ?book ?title ?sameas WHERE { 
{ 
?book rdfs:label ?title . 
?book rdf:type bibo:Book .
} 
UNION 
{ 
?book owl:sameAs ?sameas . 
?book rdf:type bibo:Book .
} }
 
9. SELECT
  • 변수들과 그 변수들의 값을 return 한다.
  • select 뒤에는 가져올 변수를 선언해야 한다.
  • 여러 개의 변수들은 공백으로 구분한다.
  • 쿼리에서 사용된 모든 변수를 SELECT 하기 위해서 ‘*’ 문자를 사용할 수 있다.
  • 저는 LODi입니다.
  • LODi에게 물어보세요.
  • 좋은 하루 되세요.
대화창버튼 대화창버튼 대화창버튼 대화창버튼