master informatique 1 semantic technologies part 7sparql 1.1 werner nutt
TRANSCRIPT
![Page 1: Master Informatique 1 Semantic Technologies Part 7SPARQL 1.1 Werner Nutt](https://reader035.vdocument.in/reader035/viewer/2022072016/56649eef5503460f94bff49a/html5/thumbnails/1.jpg)
Master Informatique 1Semantic Technologies
Part 7 SPARQL 1.1
SPARQL 1.1
Werner Nutt
![Page 2: Master Informatique 1 Semantic Technologies Part 7SPARQL 1.1 Werner Nutt](https://reader035.vdocument.in/reader035/viewer/2022072016/56649eef5503460f94bff49a/html5/thumbnails/2.jpg)
Master Informatique 2Semantic Technologies
Part 7 SPARQL 1.1
Acknowledgment
These slides are essentially identical with those by Sebastian Rudolph for his course on Semantic Web Technologies at TU Dresden
![Page 3: Master Informatique 1 Semantic Technologies Part 7SPARQL 1.1 Werner Nutt](https://reader035.vdocument.in/reader035/viewer/2022072016/56649eef5503460f94bff49a/html5/thumbnails/3.jpg)
Master Informatique 3Semantic Technologies
Part 7 SPARQL 1.1
Expressions in the Selection and BindingsSolutions can be extended by evaluated expressions with
(expression AS ?var)used for the assignment:• in the SELECT clause• in the GROUP BY clause• within BIND in a group graph pattern
Solutions from a group can further be joined with solutions given via a VALUES pattern
![Page 4: Master Informatique 1 Semantic Technologies Part 7SPARQL 1.1 Werner Nutt](https://reader035.vdocument.in/reader035/viewer/2022072016/56649eef5503460f94bff49a/html5/thumbnails/4.jpg)
Master Informatique 4Semantic Technologies
Part 7 SPARQL 1.1
Example BIND (without Prefix Declarations)
ex:Book ex:title "SPARQL Tutorial" ; ex:price 42 ;ex:discount 10 .
SELECT ?title ?price WHERE{ ?b ex:title ?title;
ex:price ?p ; ex:discount ?r
BIND ((?p-?r) AS ?price) }
Data
Query
?title → "SPARQL Tutorial", ?price → 32Result
Algebra: Extend(Bgp(...), ?price, (?p-?r))
![Page 5: Master Informatique 1 Semantic Technologies Part 7SPARQL 1.1 Werner Nutt](https://reader035.vdocument.in/reader035/viewer/2022072016/56649eef5503460f94bff49a/html5/thumbnails/5.jpg)
Master Informatique 5Semantic Technologies
Part 7 SPARQL 1.1
Algebra: Extend(Bgp(...), ?price, (?p-?r))
Example SELECT Expressions(without Prefix Declarations)
ex:Book ex:title "SPARQL Tutorial" ; ex:price 42 ;ex:discount 10 .
SELECT ?title ((?p-?r) AS ?price WHERE{ ?b ex:title ?title;
ex:price ?p ; ex:discount ?r
}
Data
Query
?title → "SPARQL Tutorial", ?price → 32Result
![Page 6: Master Informatique 1 Semantic Technologies Part 7SPARQL 1.1 Werner Nutt](https://reader035.vdocument.in/reader035/viewer/2022072016/56649eef5503460f94bff49a/html5/thumbnails/6.jpg)
Master Informatique 6Semantic Technologies
Part 7 SPARQL 1.1
Bindings are conjunctively joined
Example VALUESex:Book1 ex:title "SPARQL Tutorial". ex:Book2 ex:title "SemWeb".
SELECT ?title WHERE { ?b ex:title ?title VALUES ?b { ex:Book1 }}
Data
Query
?title → "SPARQL Tutorial”Result
![Page 7: Master Informatique 1 Semantic Technologies Part 7SPARQL 1.1 Werner Nutt](https://reader035.vdocument.in/reader035/viewer/2022072016/56649eef5503460f94bff49a/html5/thumbnails/7.jpg)
Master Informatique 7Semantic Technologies
Part 7 SPARQL 1.1
Aggregates
Aggregates allow for • the grouping of solutions and • the computation of values over the groups
• GROUP BY groups the solutions (here into students who attend the same lecture)
• COUNT is an aggregate function that counts the solutions within a group (here the number of students in the lecture)
• HAVING filters aggregated values
SELECT ?lecture (COUNT(?student) AS ?c) WHERE { ?student ex:attends ?lecture } GROUP BY ?lecture HAVING COUNT(?student) > 5
Example Query
![Page 8: Master Informatique 1 Semantic Technologies Part 7SPARQL 1.1 Werner Nutt](https://reader035.vdocument.in/reader035/viewer/2022072016/56649eef5503460f94bff49a/html5/thumbnails/8.jpg)
Master Informatique 8Semantic Technologies
Part 7 SPARQL 1.1
Aggregates in SPARQL 1.1
SPARQL 1.1 supports the following aggregate functions, which are evaluated over the values in a group:
• COUNT – counts the solutions• MIN – finds the minimal value• MAX – finds the maximal value• SUM – sums up the values• AVG – computes the average• SAMPLE – picks a random value• GROUP_CONCAT – string concatenation,
Example: GROUP_CONCAT(?x ; separator = ",")
Note: Most SPARQL 1.1 implementations only concatenate strings!
![Page 9: Master Informatique 1 Semantic Technologies Part 7SPARQL 1.1 Werner Nutt](https://reader035.vdocument.in/reader035/viewer/2022072016/56649eef5503460f94bff49a/html5/thumbnails/9.jpg)
Master Informatique 9Semantic Technologies
Part 7 SPARQL 1.1
Exercise Aggregates
• Return those students (with their average marks)that have an average mark > 25.
• Return the subgraph of the data consisting of students with an average mark > 25 and their marks.
• Return those that have an average mark > 25 together with a list of their marks, separated by “|”.
Show also what you expect to be the solution.
ex:Paul ex:hasMark 28.0 .ex:Paul ex:hasMark 24.0 .ex:Mary ex:hasMark 25.0 .ex:Peter ex:hasMark 22.0 .
Data
![Page 10: Master Informatique 1 Semantic Technologies Part 7SPARQL 1.1 Werner Nutt](https://reader035.vdocument.in/reader035/viewer/2022072016/56649eef5503460f94bff49a/html5/thumbnails/10.jpg)
Master Informatique 10Semantic Technologies
Part 7 SPARQL 1.1
Subqueries
• Results for the inner query are conjunctively joined with the results of the outer query
SELECT ?name WHERE { ?x foaf:name ?name . { SELECT ?x (COUNT(*) AS ?count) WHERE { ?x foaf:knows ?y . } GROUP BY ?x HAVING (?count >= 3) } }
Example Query
![Page 11: Master Informatique 1 Semantic Technologies Part 7SPARQL 1.1 Werner Nutt](https://reader035.vdocument.in/reader035/viewer/2022072016/56649eef5503460f94bff49a/html5/thumbnails/11.jpg)
Master Informatique 11Semantic Technologies
Part 7 SPARQL 1.1
Negation in Queries
Two forms of negation with conceptual and small semantic differences
① Test for non-matches for a pattern
② Removal of matching solutions
What are the corresponding constructs in SQL? What is the difference between them in SQL?
SELECT ?x WHERE { ?x rdf:type foaf:Person . FILTER NOT EXISTS { ?x foaf:name ?name } }
Filter
SELECT ?x WHERE { ?x rdf:type foaf:Person . MINUS { ?x foaf:name ?name } }
Minus
![Page 12: Master Informatique 1 Semantic Technologies Part 7SPARQL 1.1 Werner Nutt](https://reader035.vdocument.in/reader035/viewer/2022072016/56649eef5503460f94bff49a/html5/thumbnails/12.jpg)
Master Informatique 12Semantic Technologies
Part 7 SPARQL 1.1
Evaluation of Negation via Filter
① [[ Bgp(1st Pattern) ]]G : μ1: ?x → _:x, μ2: ?x → _:y
② For each solution, we instantiate the second pattern
– Solution is removed if the instantiated pattern matches (μ1)
– otherwise we keep the solution (μ2)
_:x rdf:type foaf:Person ._:x foaf:name "Peter" ._:y rdf:type foaf:Person .
{ ?x rdf:type foaf:Person . FILTER NOT EXISTS { ?x foaf:name ?name } }
Data
Query Pattern
![Page 13: Master Informatique 1 Semantic Technologies Part 7SPARQL 1.1 Werner Nutt](https://reader035.vdocument.in/reader035/viewer/2022072016/56649eef5503460f94bff49a/html5/thumbnails/13.jpg)
Master Informatique 13Semantic Technologies
Part 7 SPARQL 1.1
Evaluation of Negation via Minus
[[ Bgp(1st Pattern) ]]G : Ω1 = { μ1: ?x → _:x, μ2: ?x → _:y }
[[ Bgp(2nd Pattern) ]]G : Ω2 = { μ3: ?x → _:x, ?name → "Peter” }
Minus(Ω1, Ω2) = {μ | μ ∈ Ω1 and ∀μ′∈Ω2 : μ and μ′ incompatible or dom(μ) ∩ dom(μ′) = }∅
μ1 ! Ω: ∈ μ1 compatible with μ3 and has non-disjoint domain
μ2 Ω: ∈ μ2 incompatible with μ3
_:x rdf:type foaf:Person ._:x foaf:name "Peter" ._:y rdf:type foaf:Person .
{ ?x rdf:type foaf:Person . MINUS { ?x foaf:name ?name } }
Data
Query Pattern
![Page 14: Master Informatique 1 Semantic Technologies Part 7SPARQL 1.1 Werner Nutt](https://reader035.vdocument.in/reader035/viewer/2022072016/56649eef5503460f94bff49a/html5/thumbnails/14.jpg)
Master Informatique 14Semantic Technologies
Part 7 SPARQL 1.1
Minus and Filter Negation: Differences
• Filter pattern matches always (variables disjoint) every solution is removed
• Minus does not remove any solutions since the domain of the solutions is disjoint
ex:a ex:b ex:c .
{ ?s ?p ?o FILTER NOT EXISTS { ?x ?y ?z } }
Data
Query Pattern
{ ?s ?p ?o MINUS { ?x ?y ?z } }Query Pattern
![Page 15: Master Informatique 1 Semantic Technologies Part 7SPARQL 1.1 Werner Nutt](https://reader035.vdocument.in/reader035/viewer/2022072016/56649eef5503460f94bff49a/html5/thumbnails/15.jpg)
Master Informatique 15Semantic Technologies
Part 7 SPARQL 1.1
Regular Expressions in Patterns
Property paths are constructed using regular expressions over predicates
• Sequence of paths: ?s ex:p1/ex:p2 ?o• Optional path: ?s ex:p? ?o• Paths with arbitrary length: ?s ex:p+ ?o, ?s ex:p* ?o• Alternative paths: ?s (ex:p1|ex:p2) ?o• Inverse paths: ?s ˆex:p ?o
same as ?o ex:p ?s • Negation of paths: ?s !ex:p ?o
A negation of path expression !ex:p matches a path that does not have predicate ex:p
![Page 16: Master Informatique 1 Semantic Technologies Part 7SPARQL 1.1 Werner Nutt](https://reader035.vdocument.in/reader035/viewer/2022072016/56649eef5503460f94bff49a/html5/thumbnails/16.jpg)
Master Informatique 16Semantic Technologies
Part 7 SPARQL 1.1
Regular Expressions in Patterns
• Property paths are, where possible, translated into standard SPARQL constructs
Examples?
• Some new operators are still necessary
![Page 17: Master Informatique 1 Semantic Technologies Part 7SPARQL 1.1 Werner Nutt](https://reader035.vdocument.in/reader035/viewer/2022072016/56649eef5503460f94bff49a/html5/thumbnails/17.jpg)
Master Informatique 17Semantic Technologies
Part 7 SPARQL 1.1
Property Path Examples
PREFIX ... SELECT ?xName WHERE { ?x rdf:type foaf:Person . ?x foaf:name ?xName ?x foaf:knows/foaf:knows/foaf:name "Bill Gates" . }
Example Query 1
PREFIX ... SELECT ?s WHERE { ?s rdf:type ?type . ?type rdfs:subClassOf* ex:SomeClass .}
Example Query 2