본문 바로가기 주메뉴 바로가기

SPARQL Endpoint

홈 LOD SPARQL Endpoint

한국관광공사의 데이터셋은 SPARQL Endpoint (http://data.visitkorea.or.kr/sparql) 을 통해서 탐색하거나
접근, 다운로드(JSON, RDF)할 수 있습니다.

SPARQL Endpoint 이용하기

시작하기 전에 알아야 할 기본 개념

관광공사의 데이터는 트리플(Triple)로 표현되어 있습니다.

<subject> <predicate> <object>

예를 들어, 치악산은 다음과 같이 표현됩니다.

SPARQL 질의하기

네임스페이스 선택

네임스페이스는 자원(resources)을 식별하기 위한 것으로 “PREFIX kto: <http://data.visitkorea.or.kr/ontology/>”와 같이 표현합니다.
K-TDM 모델에서 클래스와 속성은 http://data.visitkorea.or.kr/ontology/,http://data.visitkorea.or.kr/property/, 데이터는 http://data.visitkorea.or.kr/resource/ 로 표현하고 있습니다.
따라서, SPARQL질의 작성 시 PREFIX는 다음과 같이 작성합니다.

PREFIX kto: <http://data.visitkorea.or.kr/ontology/>
PREFIX ktop: <http://data.visitkorea.or.kr/property/>
PREFIX ids: <http://data.visitkorea.or.kr/resource/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
변수 정의

변수(variables)는 질의 패턴 중 얻고자 하는 것(things)으로 다음과 같이 작성 합니다.

SELECT ?place_name ?categoryName
WHERE {
      ?resource rdf:type kto:Place ;
            foaf:name ?place_name ;
            kto:category ?category.
      ?category skos:prefLabel ?categoryName.
}

WHERE에서 모든 변수에 대한 값을 가져오고 싶을 경우는 SELECT 절에 다음과 같이 정의합니다.

SELECT *

만약, 원하는 변수의 값만 가져오고 싶을 경우는 WHERE절 내에 정의된 특정 변수명을 적어줍니다.

SELECT ?place_name ?categoryName

여기서, WHERE 내에 정의된 “?resource rdf:type kto:Place“는 리소스(resouces)에 대한 결과를 Place(장소)로 제약하는 예입니다.

LIMIT 정의

LIMIT는 질의 결과에 대한 반환을 제약하는 것으로 다음과 같이 정의합니다.

SELECT ?place_name ?categoryName
WHERE {
      ?resource rdf:type kto:Place ;
            foaf:name ?place_name ;
            kto:category ?category.
      ?category skos:prefLabel ?categoryName.
} LIMIT 100
좀더 복잡한 질의 정의

SPARQL1.1에는 다양한 질의함수를 제공합니다. 질의결과에 대한 개수, 그룹, 정렬, 문자열 처리 등 목적에 맞게 이용할 수 있습니다. (COUNT, GORUP BY, ORDER BY, BIND, FILTER) 다음은 장소의 이름으로 결과를 정렬하기 위한 예입니다.

SELECT ?place_name ?categoryName
WHERE {
      ?resource rdf:type kto:Place ;
            foaf:name ?place_name ;
            kto:category ?category.
      ?category skos:prefLabel ?categoryName.
}
ORDER BY asc(?place_name)
LIMIT 100

SPARQL 더 알아보기

SPARQL 구문에 대한 자세한 사항은 아래 사이트를 방문하시면 많은 정보를 얻을 수 있습니다.