370 likes | 581 Views
SPARQL Query Language for RDF. 임형준 ( hyungjun25@cnu.ac.kr ) 충남대학교 컴퓨터공학과 데이터베이스 시스템 연구실 2014년 9월 11일 목요일. Contents. SPARQL Status SPARQL Overview SPARQL Feature Summary References Appendix. SPARQL Status. SPARQL Query Language for RDF
E N D
SPARQLQuery Language for RDF 임형준(hyungjun25@cnu.ac.kr) 충남대학교 컴퓨터공학과 데이터베이스 시스템 연구실 2014년 9월 11일 목요일
Contents • SPARQL Status • SPARQL Overview • SPARQL Feature • Summary • References • Appendix
SPARQL Status • SPARQL Query Language for RDF • W3C, http://www.w3.org/TR/2007/WD-rdf-sparql-query-20070326/ • Published W3C Working Draft 26 March 2007 • SPARQL Protocol for RDF • W3C, http://www.w3.org/TR/2006/CR-rdf-sparql-protocol-20060406/ • Published W3C Candidate Recommendation 6 April 2006 • SPARQL Query Results XML Format • W3C,http://www.w3.org/TR/2006/CR-rdf-sparql-XMLres-20060406/ • Published W3C Candidate Recommendation 6 April 2006
SPARQL Overview • RDF • Resource Description Framework • Flexible and extensible way to represent information about WWW resources • SPARQL • SPARQL Protocol And RDF Query Language • Query Language + Protocol + XML Results Format • Product of the RDF Data Access Working Group • A query language for access and query RDF graphs • A protocol for issuing queries via HTTP GET, HTTP POST, or SOAP • Perfect for mashing up disparate data sources representable as RDF
SPARQL Overview • It provides facilities to: • Extract information in the form of URIs, blank nodes, plain and typed literals • Extract RDF subgraphs • Construct new RDF graphs based on information in the queried graphs • Feature • Matching graph patterns • Variables – global scope; indicated by ‘?‘ or ‘$‘ • Query terms – based on Turtle syntax • Terms delimited by "<>" are relative URI references • Data description format - Turtle
SPARQL Query Example Find the URL of the blog by the person named Jon Foobar Figure 1. Basic graph structure for a single contributor in bloggers.rdf Result “http://foobar.xx/blog”
SPARQL Features Graph Patterns RDF Dataset Result Forms Testing Values Inference Data Virtualization Access Multiple Sources SPARQL Protocol Walkthrough
Graph Patterns • Set of Triple Patterns • Triple Pattern – similar to an RDF Triple (subject, predicate, object), but any component can be a query variable; literal subjects are allowed • Matching a triple pattern to a graph: bindings between variables and RDF Terms
Graph Pattern - Multiple Matches Data Query Group Graph Pattern (set of graph patterns) also! Query Result
RDF Dataset • The RDF data model expresses information as a graph • Many RDF data stores hold a multiple RDF graphs • There is one graph which does not have a name, called the background graph, and zero or more named graphs, identified by URI reference # Default graph @prefix dc: <http://purl.org/dc/elements/1.1/> . <http://example.org/bob> dc:publisher "Bob" . <http://example.org/alice> dc:publisher "Alice". # Named graph: http://example.org/bob @prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Bob" . _:a foaf:mbox <mailto:bob@oldcorp.example.org> .
Querying the Dataset # Graph: http://example.org/foaf/aliceFoaf @prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice" . _:a foaf:mbox <mailto:alice@work.example> . _:a foaf:knows _:b . _:b foaf:name "Bob" . _:b foaf:mbox <mailto:bob@work.example> . _:b foaf:age 32 . _:b foaf:PersonalProfileDocument <http://example.org/foaf/bobFoaf> . # Graph: http://example.org/foaf/bobFoaf @prefix foaf: <http://xmlns.com/foaf/0.1/> . _:1 foaf:mbox <mailto:bob@work.example> . _:1 foaf:PersonalProfileDocument <http://example.org/foaf/bobFoaf>. _:1 foaf:age 35 .
Accessing Graph Labels PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX data: <http://example.org/foaf/> SELECT ?src ?age WHERE GRAPH ?src { ( ?x foaf:mbox <mailto:bob@work.example> ) ( ?x foaf:age ?age ) } PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX data: <http://example.org/foaf/> SELECT ?age WHERE GRAPH data:bobFoaf { ( ?x foaf:mbox <mailto:bob@work.example> ) ( ?x foaf:age ?age ) }
Result Forms • SPARQL has a number of query forms for returning results • SELECT • Returns all, or a subset of the variables bound in a query pattern match • Formats : XML or RDF/XML • CONSTRUCT • Returns an RDF graph constructed by substituting variables in a set of triple templates • DESCRIBE • Returns an RDF graph that describes the resources found • ASK • Returns whether a query pattern matches or not
Testing Values • Named functions and syntactically constructed operations: • Operands: subset of XML Schema DataTypes {xsd:string, xsd:decimal, xsd:double, xsd:dateTime} and types derived from xsd:decimal. • Subset of XQuery 1.0 and XPath 2.0 functions and operators • Operands: xs:string, xs:double, xs:float, xs:decimal, xs:integer, xs:dateTime • Additional operators: sop:RDFterm-equal, sop:bound, sop:isURI, sop:isBlank, sop:isLiteral, sop:str , sop:lang, sop:datatype, sop:logical-or, sop:logical-and • Type Promotion : xs:double, xs:float, xs:decimal • Each of the numeric types is promoted to any type higher in the above list when used as an argument to function expecting that higher type
Inference • An RDF graph may be backed by inference • OWL, RDFS, application, rules :x rdf:type :C .:C rdfs:subClassOf :D . PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> SELECT ?type WHERE { ?x rdf:type ?type . } -------- | type | ===== | :C | | :D | --------
Data Virtualization • SPARQL as integrator • Data remains where it is • Existing applications untouched • Data appears as RDF, query to native form • SPARQL to SQL • Direct mapping of tables • Semi-automatic generation of mapping • SquirrelRDF (also does LDAP) • Modelled: D2RQ • High-quality mapping, manually developed
SPARQL Query SPARQL Query SPARQL Query Federated QuerySingle Point of Access • Inputs: • Service Description • Information Directory • Request • Outputs: • Unified results Query BrokerSPARQL => SPARQL SPARQL Query RDF DocDB CorpLDAP
Access Multiple Sources • “Find the name and email addresses of authors of a paper” • Query tech reports first, then go to LDAP for more information. • SQL database; LDAP server PREFIX dc: <http://purl.org/dc/elements/1.1/>PREFIX ldap: <http://ldap.hp.com/people#> PREFIX foaf: SELECT ?name ?email { ?doc dc:title ?title . FILTER regex(?title, “SPARQL”) . ?doc dc:creator ?reseacher . ?researcher ldap:email ?email . ?researcher ldap:name ?name }
Access Multiple Sources • “Find the reports written by the person with email address andy.seaborne@hp.com • Go to LDAP first, then the reports database PREFIX dc: <http://purl.org/dc/elements/1.1/>PREFIX ldap: <http://ldap.hp.com/people#> PREFIX foaf: SELECT ?name { ?doc dc:title ?title . ?doc dc:creator ?reseacher . ?researcher ldap:email <mailto:andy.seaborne@hp.com> . }
SPARQL as a Protocol • A way of communication between parties that run SPARQL queries • Defining a way of invoking the service • Bindings of a transport protocol
SPARQL Protocol(1) • WSDL description file: • Description of the protocol • Not for human understanding • HTTP binding: • Specify how to encode SPARQL queries in URLs with GET and POST methods • SOAP binding: • Specify the SOAP message format (XML message exchange format for queries)
SPARQL Protocol(2) • Interface SparqlQuery • Only one operation: query • For transferring string query • Data types: via XML schema • Bindings: HTTP / SOAP binding for invokable operations • A service must support SparqlQuery interface • Support the bindings as described in the WSDL
HTTP Binding Example • HTTP Binding Get methods GET /sparql/?query=EncodedQuery&default-graph-uri=http://my.example/publishers&named-graph-uri=http://my.example/bob&named-graph-uri=http://my.example/aliceHTTP/1.1Host: my.exampleUser-agent: sparql-client/0.1
WSDLDescription File Example WSDL description file: (HTTP binding part) <binding name="queryHttp" interface="tns:SparqlQuery“ … > <fault name="MalformedQuery" whttp:zode="400"/> <!-- the GET binding for query operation --> <operation ref="tns:query" whttp:method="GET" whttp:inputSerialization=“…" /> </binding>
SOAP Binding Example HTTP/1.1 200 OK Date: Wed, 27Dec 2005 12:48:25 GMT Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3 Connection: closeContent-Type: application/sparql-results+xml; charset=utf-8 <?xml version="1.0"?> <sparql xmlns=“…"> … … </sparql>
Walkthrough Example(1) • XML File <Person> <name>Henry Story</name><mbox>hs@bblfish.net</mbox><knows><Person><name>Tim Bray</name> <mbox>tb@eg.com</mbox> </Person><Person><name>Jonathan Story</name> <mbox>js@eg.edu</mbox> </Person> </knows> </Person>
Walkthrough Example(1) • SPARQL [ a :Person; :name "Henry Story"; :mbox <mailto:hs@insead.edu>; :knows [ a :Person; :name "Tim Bray"; :mbox <mailto:tb@eg.com]; :knows [ a :Person; :name "Jonathan Story"; :mbox <mailto:js@eg.edu> ]; ] .
Walkthrough Example(2) • XML File <AddressBook> <Person> <name>Jonathan Story</name> <mbox>Jonathan.Story@eg.edu</mbox> <address> <Country>France</Country> </address> </Person> <Person> <name>Tim Bray</name> <mbox>Tim.Bray@eg.Com</mbox> <address> <Country>Canada</Country> </address> </Person> </AddressBook>
Walkthrough Example(2) • SPARQL [ a :Person; :name "Tim Bray"; :mbox <mailto:Tim.Bray@eg.com> :address [ a :Address; :country "Canada"@en ] ]. [ a :Person; :name "Jonathan Story"; :mbox <mailto:Jonathan.Story@eg.edu> :address [ a :Address; :country "France"@en ] ].
Summary • SPARQL (SPARQL Protocol And RDF Query Language) is a query language for getting information from RDF graphs • It provides facilities to: • Extract information in the form of URIs, bNodes, Plain and typed literals • Extract RDF subgraphs • Construct new RDF graphs based on information in the queried graphs
References • W3C, “SPARQL Query Language for RDF” http://www.w3.org/TR/2007/WD-rdf-sparql-query-20070326/, 26, March. 2007 • IBM Developerworks, “Search RDF data with SPARQL” http://www-128.ibm.com/developerworks/java/library/j-sparql/, 10, May. 2005 • Oreillynet, “SPARQL: Web 2.0 Meet the Semantic Web” http://www.oreillynet.com/xml/blog/2005/09/sparql_web_20_meet_the_semanti.html, 16, September. 2005
Appendix-01 • SPARQL Update • Future HP proposal to W3C INSERT{ book:newBook dc:title “More about SPARQL” . book:newBook dc:creator [ foaf:mbox <mailto:alex@example> ; foaf:name “Alex Author” ] } DELETE { ?book dc:title ?title ; dc:creator ?c }WHERE{ ?book dc:title ?title ; dc:creator ?c FILTER regex(?title, “first edition”)}
Appendix-02 • SPARQL: Web 2.0 Meet the Semantic Web • RDF is pretty foundational to the Semantic Web • Most Web 2.0 applications and services involve a REST protocol or interface • REST offers a standard set of operations • GET, PUT, POST, DELETE • No standard way to execute an arbitrary query • A Web 2.0 app or service’s dataset • Get back a representation of that resource
Appendix-02 • SW and Web 2.0 need a data access protocol • Using WSDL 2.0, SPARQL Protocol for RDF describes a very simple web service with one operation, query • Available with both HTTP and SOAP bindings • The way you send SPARQL queries to other sites • The way you get back the results • Imagine having one query language, and one client, which lets you arbitrarily slice the data ofWeb 2.0 sites, all FOAF files, all of the RSS 1.0 feeds • A good SPARQL client implementation in Javascript, along with some conventions for building and moving queries around in an AJAX-friendly way • SPARQL over AJAX just by itself is so cool it gives me a headache!