H_3. SPARQL 1.1 working draft
SPARQL 1.1 working draft
W3C에서 SPARQL에 대한
따끈따근한 드래프트 버전이 올라온 다음날..
SPARQL 1.1 버전인데 뭐가 달라졌나 싶어 읽어보았다.
대략 정리를 해보면
1. 쿼리문 자체를 좀더 복합적으로 생성할 수 있도록 기능을 추가함
1.0에서는 union, optional, filter 등으로 쿼리를 만들었는데
1.1에서는 value aggregation, path expressions, nested queries 등이 추가되었다고 한다.
좀더 자세히 어떤 것인지는 깊게 살펴봐야 할듯한다.
참고 : http://www.w3.org/TR/sparql11-query/
2. 쿼리 결과 형식을 제공함
쿼리 결과에 대한 변수값으로 제공하던 형식에서
XML, JSON, CSV, TSV 4가지 형식으로 쿼리 결과를 제공한다.
물론 http 프로토콜을 통해 sparql endpoint 에서 제공하는 것인거 같다.
참고 : http://www.w3.org/TR/rdf-sparql-XMLres/
http://www.w3.org/TR/sparql11-results-json/
http://www.w3.org/TR/sparql11-results-csv-tsv/
3. federated query 지원
이 부분은 예전에 공개(?) 되어서 알고 있었던 부분인데
SERVICE 라는 키워드를 통해
다른 endpoint와의 결합하여 변수를 바인딩하여
서로 다른 공간의 트리플 데이터들을 사용할 수 있도록 해준다.
예:
PREFIX foaf: http://xmlns.com/foaf/0.1/
SELECT ?name
WHERE {
foaf:knows [ foaf:name ?name ] .
SERVICE {
foaf:name ?name }
}
참고 : http://www.w3.org/TR/sparql11-federated-query/
4. 스키마나 axiom의 정보를 활용하여 쿼리 결과를 반환 (entailment regimes)
예시로 보는 것이 설명이 빠를것 같다.
foaf:name rdfs:subPropertyOf rdfs:label .
이라는 트리플이 있을때
SELECT ?label WHERE { ?person rdfs:label ?label }
쿼리를 날리면
foaf:name 이 rdfs:label 의 하위 프로퍼티기 때문에
?person foaf:name ?label 과 같은 쿼리의 값이 도출된다.
참고: http://www.w3.org/TR/sparql11-entailment/
5. update language
트리플저장소에 있는 내용에 대해 쿼리를 통해
update, create, remove 할 수 있도록 지원해준다고 한다.
참고: http://www.w3.org/TR/sparql11-update/
6. 그외
HTTP를 통한 sparql service에 대한 요청을 하기 위한 프로토콜에 대한 것, service description, graph store HTTP 프로토콜 등이 올라왔다..
대략적인 내용이라 세부적으로 좀 더 살펴봐야겠다..