SPARQL
SPARQL패러다임 | 쿼리 언어 |
---|---|
개발자 | W3C |
처음 등장한 | 전( |
안정된 릴리스 | 2013년 3월 , 전( |
웹 사이트 | www |
주요 구현 | |
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을 통해 사용자는 대략적으로 "키 값" 데이터, 특히 W3C의 RDF 사양을 따르는 데이터에 대한 쿼리를 작성할 수 있습니다.따라서 데이터베이스 전체는 "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:Person
1명 또는 여러 명의 이름을 가진 경우)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 그래프를 추출하기 위해 사용합니다.이 그래프의 내용은 유지관리자가 유용한 정보로 간주하는 정보에 따라 엔드포인트에 남겨집니다.
이러한 쿼리 폼은 각각은WHERE
block을 사용하여 쿼리를 제한합니다(단,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
방법들.
XSPARQL은 XQuery와 SPARQL을 결합하여 XML 및 RDF 데이터 소스를 [14]동시에 쿼리하는 통합 쿼리 언어입니다.
실장
오픈 소스 레퍼런스 SPARQL 구현
SPARQL 표준을 구현한 트리플스토어, API 및 기타 스토리지 등 보다 포괄적인 적용범위는 SPARQL 구현 목록을 참조하십시오.
「 」를 참조해 주세요.
레퍼런스
- ^ 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.
- ^ Beckett, Dave (6 October 2011). "What does SPARQL stand for?". semantic-web@w3.org.
- ^ Jim Rapoza (2 May 2006). "SPARQL Will Make the Web Shine". eWeek. Retrieved 17 January 2007.
- ^ 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.
- ^ "W3C Semantic Web Activity News – SPARQL is a Recommendation". W3.org. 15 January 2008. Retrieved 1 October 2009.
- ^ "XML and Semantic Web W3C Standards Timeline" (PDF). 4 February 2012. Retrieved 27 November 2013.
- ^ "Eleven SPARQL 1.1 Specifications are W3C Recommendations". w3.org. 21 March 2013. Retrieved 25 April 2013.
- ^ "XML and Web Services in the News". xml.org. 6 October 2006. Retrieved 17 January 2007.
- ^ "SparqlImplementations – ESW Wiki". Esw.w3.org. Retrieved 1 October 2009.
- ^ "ViziQuer a tool to construct SPARQL queries automatically". lumii.lv. Retrieved 25 February 2011.
- ^ "D2R Server". Retrieved 4 February 2012.
- ^ "SPARQL2XQuery Framework". Retrieved 4 February 2012.
- ^ Yu, Liyang (2014). A Developer’s Guide to the Semantic Web. Springer. p. 308. ISBN 9783662437964.
- ^ "XSPARQL published as a W3C Submission". W3.org. 23 June 2009. Retrieved 22 May 2022.
외부 링크
- W3C 데이터 액티비티 블로그
- W3C SPARQL 1.1 워킹 그룹 - 비공개 메일링 리스트 및 아카이브, RDF 데이터 액세스 워킹 그룹
- SPARQL 1.1 권장 사항
- SPARQL 1.0 쿼리 언어(레거시)
- SPARQL 1.0 프로토콜(레거시)
- SPARQL 1.0 쿼리 XML 결과 형식(레거시)
- OWL-RDF/S 및 XML 스키마와 OWL 변환 간의 SPARQL2XQuery 매핑
- ARQ 쿼리 엔진에서의 SPARQL 구문식
- DAWG 테스트 스위트의 SPARQL 구문 표현 변환
- 위키데이터
- Wikidata 쿼리 서비스 튜토리얼
- DB페디아