SPARQL

SPARQL
SPARQL
패러다임쿼리 언어
개발자W3C
처음 등장한2008년, 14년 전(2008년)
안정된 릴리스
2013년 3월 21일, 9년 전(2013-03-21)
웹 사이트www.w3.org/TR/sparql11-query/
주요 구현
Jena,[1] OpenLink Virtuoso[1]

SPARQL(SPARQL Protocol 및 RDF Query Language의 재귀[2] 약어 "sparkle" /"sp"k"l/"로 발음)은 RDF 쿼리 언어입니다.즉, 데이터베이스의 의미 쿼리 언어로 Resource Description Framework(RDF) 형식으로 [3][4]저장된 데이터를 가져오거나 조작할 수 있습니다.World Wide Web Consortium의 DAWG(RDF Data Access Working Group)에 의해 표준으로 제정되었으며, 시맨틱 웹의 핵심 기술 중 하나로 인정받고 있습니다.2008년 1월 15일 SPARQL 1.0은 W3C에 의해 공식 [5][6]권장사항으로 인정되었으며 SPARQL 1.1은 2013년 [7]3월에 승인되었습니다.

SPARQL을 사용하면 쿼리는 트리플 패턴, 결합, 분리옵션 [8]패턴으로 구성됩니다.

여러 프로그래밍 언어에 대한 구현이 존재합니다.[9]ViziQuer와 같이 SPARQL 엔드포인트에 대한 SPARQL 쿼리를 연결하고 반자동으로 구성할 수 있는 도구가 있습니다.[10]또한 SPARQL 쿼리를 SQL이나[11] XQuery [12]등 다른 쿼리 언어로 변환하는 툴도 있습니다.

이점

SPARQL을 통해 사용자는 대략적으로 "키 값" 데이터, 특히 W3CRDF 사양을 따르는 데이터에 대한 쿼리를 작성할 수 있습니다.따라서 데이터베이스 전체는 "subject-predicate-object" 트리플 집합입니다.이는 일부 NoSQL 데이터베이스가 MongoDB와 같은 "document-key-value"라는 용어를 사용하는 것과 유사합니다.

SQL 관계형 데이터베이스 용어로 RDF 데이터는 제목 열, 술어 열 및 개체 열이라는 세 개의 열이 있는 테이블로 간주할 수도 있습니다.RDF의 서브젝트는 SQL 데이터베이스의 엔티티와 비슷합니다.SQL 데이터베이스에서는 특정 비즈니스 객체의 데이터 요소(또는 필드)가 여러 열에 배치되어 여러 테이블에 분산되어 있으며 고유한 키로 식별될 수 있습니다.RDF에서 이러한 필드는 동일한 제목(종종 동일한 고유 키)을 공유하는 개별 술어/객체 행으로 표현되며, 술어는 열 이름 및 실제 데이터와 유사합니다.관계형 데이터베이스와 달리 오브젝트 열은 이기종입니다.셀 단위의 데이터 유형은 보통 술어 값에 의해 암시(또는 온톨로지 내에서 지정)됩니다.또한 SQL과 달리 RDF는 술어당 여러 개의 엔트리를 가질 수 있습니다.예를 들어, 1개의 "개인"에 대해 여러 개의 "자녀" 엔트리를 가질 수 있으며 "자녀"와 같은 개체의 컬렉션을 반환할 수 있습니다.

따라서 SPARQL은 다음과 같은 완전한 분석 쿼리 조작 세트를 제공합니다.JOIN,SORT,AGGREGATE스키마가 본질적으로 데이터의 일부인 데이터의 경우 별도의 스키마 정의가 필요하지 않습니다.그러나 스키마 정보(온톨로지)는 서로 다른 데이터셋을 명확하게 결합할 수 있도록 외부에서 제공되는 경우가 많습니다.또한 SPARQL은 그래프로 간주할 수 있는 특정 그래프 트래버설 구문을 제공합니다.

다음 예에서는 온톨로지 정의를 활용하는 단순한 쿼리를 보여 줍니다.foaf("친구의 친구")

특히 다음 쿼리는 데이터 세트에 포함된 모든 사용자의 이름과 이메일을 반환합니다.

프리픽스 동작하지 않다: <http://xmlns.com/foaf/0.1/> 선택한다. 이름         이메일 어디에   {     ?사람  a          동작하지 않다:사람인 .     ?사람  동작하지 않다:이름.  이름 .     ?사람  동작하지 않다:박스  이메일 .   } 

이 쿼리는 일치하는 서브젝트를 가진 모든 트리플을 결합합니다.여기서 형식 술어는 " "입니다.a"는 사람(foaf:Person1명 또는 여러 명의 이름을 가진 경우)foaf:name및 우편함(foaf:mbox).

이 쿼리의 작성자는 변수 이름 "을 사용하여 제목을 참조하도록 선택했습니다.?person알기 쉽게 하기 위해서.트리플의 첫 번째 요소는 항상 주어이기 때문에, 저자는 "와 같은 변수 이름을 쉽게 사용할 수 있었다.?subj" 또는?x". 어떤 이름을 선택하든 쿼리 엔진이 동일한 서브젝트와 트리플을 결합하는 것을 나타내려면 쿼리의 각 행에서 동일해야 합니다.

조인 결과는 일련의 행이 됩니다.?person,?name,?email이 쿼리는 다음 명령을 반환합니다.?name그리고.?email왜냐면?person는 보통 인간 친화적인 문자열이 아니라 복잡한 URI입니다.주의:?person여러 개의 우편함이 있을 수 있으므로 반환된 세트에서는?name행은 각 우편함에 대해 1회씩 여러 번 표시될 수 있습니다.

이 쿼리는 여러 SPARQL 엔드포인트(SPARQL 쿼리를 받아들여 결과를 반환하는 서비스)에 분산할 수 있습니다.계산 및 수집된 결과는 페더레이션쿼리라고 불립니다.

연합 방식으로든 국지적으로든 쿼리에서 추가 트리플 정의를 사용하면 자동차와 같은 다양한 주제 유형에 가입할 수 있으며, 예를 들어, 높은 연비로 자동차를 운전하는 사람들의 이름과 이메일 목록을 반환할 수 있습니다.

양식 조회

데이터베이스에서 데이터를 읽는 쿼리의 경우 SPARQL 언어는 다른 목적으로 4가지 다른 쿼리 변형을 지정합니다.

SELECT질문하다
SPARQL 엔드포인트에서 원시 값을 추출하는 데 사용되며 결과는 표 형식으로 반환됩니다.
CONSTRUCT질문하다
SPARQL 엔드포인트에서 정보를 추출하여 결과를 유효한 RDF로 변환하기 위해 사용합니다.
ASK질문하다
SPARQL 엔드포인트에 대한 쿼리의 간단한 True/False 결과를 제공하기 위해 사용됩니다.
DESCRIBE질문하다
SPARQL 엔드포인트에서 RDF 그래프를 추출하기 위해 사용합니다.이 그래프의 내용은 유지관리자가 유용한 정보로 간주하는 정보에 따라 엔드포인트에 남겨집니다.

이러한 쿼리 폼은 각각은WHEREblock을 사용하여 쿼리를 제한합니다(단,DESCRIBE쿼리,WHERE는 옵션입니다.

SPARQL 1.1은 몇 가지 새로운 쿼리 [13]폼으로 데이터베이스를 갱신하기 위한 언어를 지정합니다.

또 다른 SPARQL 쿼리 예시는 "아프리카의 모든 국가의 수도는 무엇입니까?":

프리픽스 ex: <http://example.com/exampleOntology#> 선택한다. ?대문자        ?나라 어디에   {     ?x  ex:시명       ?대문자   ;         ex:is Capital Of    ?y         .     ?y  ex:국가명    ?나라   ;         ex:isIncontince  ex:아프리카  .   } 

변수는 A로 표시됩니다.?또는$프레픽스의 바인딩?capital및 그?country반환됩니다.트리플이 세미콜론으로 끝나는 경우, 이 트리플의 서브젝트는 암묵적으로 다음 쌍을 전체 트리플로 완성합니다.예를 들면ex:isCapitalOf ?y의 줄임말이다?x ex:isCapitalOf ?y.

SPARQL 쿼리 프로세서는 이들 4개의 트리플 패턴에 일치하는 트리플 세트를 검색하여 쿼리의 변수를 각 트리플의 대응하는 부분에 바인딩합니다.여기서 주의할 점은 "속성 방향"입니다(클래스 매치는 클래스 속성 또는 속성을 통해서만 수행할 수 있습니다. 덕 타이핑 참조).

쿼리를 간결하게 하기 위해 SPARQL에서는 Turtle과 같은 방법으로 프리픽스와 기본 URI를 정의할 수 있습니다.이 쿼리에서 접두사 "는ex"는 "http://example.com/exampleOntology#"을 나타냅니다.

내선번호

GeoSPARQL은 잘 알려진 OGC 표준(GML, WKT 등)을 사용하여 지리정보시스템(GIS) 쿼리에 대한 필터 기능을 정의합니다.

SPARUL은 SPARQL의 또 다른 확장입니다.RDF 스토어를 이 선언형 쿼리 언어로 업데이트할 수 있습니다.INSERT그리고.DELETE방법들.

XSPARQLXQuery와 SPARQL을 결합하여 XML 및 RDF 데이터 소스를 [14]동시에 쿼리하는 통합 쿼리 언어입니다.

실장

오픈 소스 레퍼런스 SPARQL 구현

SPARQL 표준을 구현한 트리플스토어, API 및 기타 스토리지 등 보다 포괄적인 적용범위는 SPARQL 구현 목록을 참조하십시오.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b Hebeler, John; Fisher, Matthew; Blace, Ryan; Perez-Lopez, Andrew (2009). Semantic Web Programming. Indianapolis, Indiana: John Wiley & Sons. p. 406. ISBN 978-0-470-41801-7.
  2. ^ Beckett, Dave (6 October 2011). "What does SPARQL stand for?". semantic-web@w3.org.
  3. ^ Jim Rapoza (2 May 2006). "SPARQL Will Make the Web Shine". eWeek. Retrieved 17 January 2007.
  4. ^ Segaran, Toby; Evans, Colin; Taylor, Jamie (2009). Programming the Semantic Web. O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. p. 84. ISBN 978-0-596-15381-6.
  5. ^ "W3C Semantic Web Activity News – SPARQL is a Recommendation". W3.org. 15 January 2008. Retrieved 1 October 2009.
  6. ^ "XML and Semantic Web W3C Standards Timeline" (PDF). 4 February 2012. Retrieved 27 November 2013.
  7. ^ "Eleven SPARQL 1.1 Specifications are W3C Recommendations". w3.org. 21 March 2013. Retrieved 25 April 2013.
  8. ^ "XML and Web Services in the News". xml.org. 6 October 2006. Retrieved 17 January 2007.
  9. ^ "SparqlImplementations – ESW Wiki". Esw.w3.org. Retrieved 1 October 2009.
  10. ^ "ViziQuer a tool to construct SPARQL queries automatically". lumii.lv. Retrieved 25 February 2011.
  11. ^ "D2R Server". Retrieved 4 February 2012.
  12. ^ "SPARQL2XQuery Framework". Retrieved 4 February 2012.
  13. ^ Yu, Liyang (2014). A Developer’s Guide to the Semantic Web. Springer. p. 308. ISBN 9783662437964.
  14. ^ "XSPARQL published as a W3C Submission". W3.org. 23 June 2009. Retrieved 22 May 2022.

외부 링크