사용자:EsCrafter/연습장 2/SPARQL

위키백과, 우리 모두의 백과사전.
SPARQL
패러다임질의어
개발자W3C
발표일2008년(16년 전)(2008)
최근 버전1.1
최근 버전 출시일2013년 3월 21일(11년 전)(2013-03-21)
웹사이트www.w3.org/TR/sparql11-query/
주요 구현체
Jena,[1] OpenLink Virtuoso[1]

SPARQL (발음: "sparkle", SPARQL Protocol and RDF Query Language)은 RDF 질의어로, RDF 포맷의 데이터 스토어를 검색하고 제어할 수 있는 데이터베이스를 위한 시맨틱 질의어이다.[2][3] It was made a standard by the RDF Data Access Working Group (DAWG) of the World Wide Web Consortium, and is recognized as one of the key technologies of the semantic web.[출처 필요] On 15 January 2008, SPARQL 1.0 became an official W3C Recommendation,[4][5] and SPARQL 1.1 in March, 2013.[6]

SPARQL allows for a query to consist of triple patterns, conjunctions, disjunctions, and optional patterns.[7]

Implementations for multiple programming languages exist.[8] There exist tools that allow one to connect and semi-automatically construct a SPARQL query for a SPARQL endpoint, for example ViziQuer.[9] In addition, there exist tools that translate SPARQL queries to other query languages, for example to SQL[10] and to XQuery.[11]

Advantages[편집]

SPARQL allows users to write queries against what can loosely be called "key-value" data or, more specifically, data that follow the RDF specification of the W3C. The entire database is thus a set of "subject-predicate-object" triples. This is analogous to some NoSQL databases' usage of the term "document-key-value", such as MongoDB.

RDF data can also be considered in SQL relational database terms as a table with three columns – the subject column, the predicate column, and the object column. The subject in RDF is analogous to an entity in a SQL database, where the different data elements (or fields) for a given business object would be placed in multiple columns, sometimes spread across more than one table, and identified by a unique key. In RDF, those fields would instead be encoded as separate predicate/object rows sharing the same subject, often the same unique key, with the predicate being analogous to the column name and the object the actual data. Unlike relational databases, the object column is heterogeneous: the per-cell data type is usually implied (or specified in the ontology) by the predicate value. Another key difference between SQL and RDF is that RDF can have multiple entries for a single predicate; for instance, one could have multiple "child" entries for a single "person", and can return collections of such objects, like "children".

SPARQL thus provides a full set of analytic query operations such as JOIN, SORT, AGGREGATE for data whose schema is intrinsically part of the data rather than requiring a separate schema definition. Schema information (the ontology) is often provided externally, though, to allow different datasets to be joined in an unambiguous manner. In addition, SPARQL provides specific graph traversal syntax for data that can be thought of as a graph.

The example below demonstrates a simple query that leverages the ontology definition "foaf", often called the "friend-of-a-friend" ontology.

Specifically, the following query returns names and emails of every person in the dataset:

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name
       ?email
WHERE
  {
    ?person  a          foaf:Person .
    ?person  foaf:name  ?name .
    ?person  foaf:mbox  ?email .
  }

This query joins together all of the triples with a matching subject, where the type predicate, "a", is a person (foaf:Person), and the person has one or more names (foaf:name) and mailboxes (foaf:mbox).

The author of this query chose to reference the subject using the variable name "?person" for readable clarity. Since the first element of the triple is always the subject, the author could have just as easily used any variable name, such as "?subj" or "?x". Whatever name is chosen, it must be the same on each line of the query to signify that the query engine is to join triples with the same subject.

The result of the join is a set of rows – ?person, ?name, ?email. This query returns the ?name and ?email because ?person is often a complex URI rather than a human-friendly string. Note that any ?person may have multiple mailboxes, so in the returned set, a ?name row may appear multiple times, once for each mailbox.

This query can be distributed to multiple SPARQL endpoints (services that accept SPARQL queries and return results), computed, and results gathered, a procedure known as federated query.

Whether in a federated manner or locally, additional triple definitions in the query could allow joins to different subject types, such as automobiles, to allow simple queries, for example, to return a list of names and emails for people who drive automobiles with a high fuel efficiency.

Query forms[편집]

In the case of queries that read data from the database, the SPARQL language specifies four different query variations for different purposes.

SELECT query
Used to extract raw values from a SPARQL endpoint, the results are returned in a table format.
CONSTRUCT query
Used to extract information from the SPARQL endpoint and transform the results into valid RDF.
ASK query
Used to provide a simple True/False result for a query on a SPARQL endpoint.
DESCRIBE query
Used to extract an RDF graph from the SPARQL endpoint, the content of which is left to the endpoint to decide based on what the maintainer deems as useful information.

Each of these query forms takes a WHERE block to restrict the query, although, in the case of the DESCRIBE query, the WHERE is optional.

SPARQL 1.1 specifies a language for updating the database with several new query forms.

Example[편집]

Another SPARQL query example that models the question "What are all the country capitals in Africa?":

PREFIX ex: <http://example.com/exampleOntology#>
SELECT ?capital
       ?country
WHERE
  {
    ?x  ex:cityname       ?capital   ;
        ex:isCapitalOf    ?y         .
    ?y  ex:countryname    ?country   ;
        ex:isInContinent  ex:Africa  .
  }

Variables are indicated by a "?" or "$" prefix. Bindings for ?capital and the ?country will be returned.

The SPARQL query processor will search for sets of triples that match these four triple patterns, binding the variables in the query to the corresponding parts of each triple. Important to note here is the "property orientation" (class matches can be conducted solely through class-attributes or properties – see Duck typing)

To make queries concise, SPARQL allows the definition of prefixes and base URIs in a fashion similar to Turtle. In this query, the prefix "ex" stands for “http://example.com/exampleOntology#”.

Extensions[편집]

GeoSPARQL defines filter functions for geographic information system (GIS) queries using well-understood OGC standards (GML, WKT, etc.).

SPARUL is another extension to SPARQL. It enables the RDF store to be updated with this declarative query language, by adding INSERT and DELETE methods.

Implementations[편집]

Open source, reference SPARQL implementations

See List of SPARQL implementations for more comprehensive coverage, including triplestore, APIs, and other storages that have implemented the SPARQL standard.

References[편집]

  1. Hebeler, John; Fisher, Matthew; Blace, Ryan; Perez-Lopez, Andrew (2009). 《Semantic Web Programming》. Indianapolis, Indiana: John Wiley & Sons. 406쪽. ISBN 978-0-470-41801-7. 
  2. Jim Rapoza (2006년 5월 2일). “SPARQL Will Make the Web Shine”. 《eWeek. 2007년 1월 17일에 확인함. 
  3. Segaran, Toby; Evans, Colin; Taylor, Jamie (2009). 《Programming the Semantic Web》. O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. 84쪽. ISBN 978-0-596-15381-6. 
  4. “W3C Semantic Web Activity News – SPARQL is a Recommendation”. W3.org. 2008년 1월 15일. 2009년 10월 1일에 확인함. 
  5. “XML and Semantic Web W3C Standards Timeline” (PDF). 2012년 2월 4일. 2013년 11월 27일에 확인함. 
  6. “Eleven SPARQL 1.1 Specifications are W3C Recommendations”. w3.org. 2013년 3월 21일. 2013년 4월 25일에 확인함. 
  7. “XML and Web Services In The News”. 《xml.org》. 2006년 10월 6일. 2007년 1월 17일에 확인함. 
  8. “SparqlImplementations – ESW Wiki”. Esw.w3.org. 2009년 10월 1일에 확인함. 
  9. “ViziQuer a tool to construct SPARQL queries automatically”. lumii.lv. 2011년 2월 25일에 확인함. 
  10. “D2R Server”. 2012년 2월 4일에 확인함. 
  11. “SPARQL2XQuery Framework”. 2012년 2월 4일에 확인함. 

External links[편집]

SPARQL Syntax Expressions (alternatively, SPARQL S-Expressions) is the RDF–centric syntax.

Open SPARQL web services


틀:Semantic Web 틀:Query languages

틀:Use dmy dates