Bài giảng Ngôn ngữ truy vấn ngữ nghĩa SPARQL - Lê Thanh Hương
lượt xem 40
download
Bài giảng "Ngôn ngữ truy vấn ngữ nghĩa SPARQL" do Lê Thanh Hương biên soạn cung cấp cho người đọc các kiến thức: Cơ bản về SPARQL, truy vấn dữ liệu, cú pháp Turtle, cú pháp SPARQL, nút trắng,... Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Ngôn ngữ truy vấn ngữ nghĩa SPARQL - Lê Thanh Hương
- 9/28/2011 Truy vấn dữ liệu Tối quan trọng – trong việc sử dụng dữ liệu RDF Ngôn ngữ truy vấn ấ Cho phép tổng hợp dữ liệu trong các kho chứa khác nhau ngữ nghĩa SPARQL Cho phép các dữ liệu được lựa chọn có thể được sử dụng lại biểu diễn lại XML và SPARQL 2 Cơ bản về SPARQL Cú pháp Turtle Thực hiện các truy vấn phức tạp trên dữ Turtle = Terse RDF Triple Language liệu RDF phân tán Hỗ trợ namespace W3C recommendation 2008 Cho phép gom nhóm các bộ ba theo Subject Ví dụ: “Tìm cặp tài nguyên (a,b), sao cho Ký pháp tắt cho tập nhiều phần tử tồn tại x là cha của a và b là anh của x" Kết quả mong đợi: cặp bác – cháu Cú pháp Turtle (N-triples) 3 4 1
- 9/28/2011 Cú pháp SPARQL: Triple prefixes Triple đơn Cú pháp: subject bj t predicate di t object bj t . @ @prefix fi abbr: bb :john rdf:label "John" . @prefix rdf: http://www.w3.org/1999/02/22- Triple ghép rdf-syntax-ns# subject predicate object ; predicate object … :john rdf:label "John" ; rdf:type ex:Person ; ex:homePage http://example.org/johnspage/ . 5 6 Định danh Biến URI ?x ?name ?test http://www.w3.org/1999/02/22-rdf- p g syntax-ns# Qname (Qualified name) namespace-abbr? :localname Literal PREFIX foaf: "John" SELECT ?mbox WHERE true "Hello"@en-GB { ?x foaf:name "Johnny Lee Outlaw" . "1.4"^^xsd:decimal ?x foaf:mbox ?mbox } 7 8 2
- 9/28/2011 Nút trắng Nút trắng Đơn: _:b c:speed ?v [] hoặc _:x :x :john ex:hasFather [] . :john ex:hasFather _:x . làm subject: ?x c:speed [] [ predicate object ; predicate object ... ] . [ ex:hasName "John"] . Nút trắng ắ tương đương với một biếnế [ ex:authorOf :lotr ; không được thể hiện trong kết quả truy ex:hasName "Tolkien"] . vấn 9 10 Nút trắng Tập nhiều đối tượng ?x c:speed [ rdf:value ?val ; ( object1… objectn ) c:unit 'km/h' km/h ] :doc1 ex:hasAuthor (:john :mary) . Tương đương : Tương đương với :doc1 ex:hasAuthor [ rdf:first :john; j ?x c:speed _:b:b df T ‘R ’ 100 rdf:rest [ rdf:first :mary; _:b rdf:value ?val km/h rdf:rest rdf:nil ] ]. _:b c:unit 'km/h' 11 12 3
- 9/28/2011 Bộ ba Cú pháp SPARQL subject property object ?x c:firstName ?y . ? c:lastName ?x l tN ? ?z. foaf:name ?name ֞ ?x foaf:name 'Dung' ?x c:firstName ?y ; ?x ?p 'Dung' c:lastName ?z _:b1 foaf:age 33 13 14 Cú pháp SPARQL Cú pháp SELECT ?x c:name “Hoang” . Ấn định số thể hiện liên quan đến một ? c:name “Mi ?x “Minh” h” . thuộc tín cơ chế Prefix – viết tắt URI PREFIX dc: http://purl.org/dc/elements/1.1/ ֞ SELECT ?title WHERE { dc:title ?title } } ?x c:name “Hoang” , “Minh” Các biến trả về Mẫu truy vấn 15 16 4
- 9/28/2011 SELECT WHERE Lựa chọn các biến Mẫu đồ thị đối sánh Tập Tậ các á bộ b ba Biến: ?x ?title ?name { (subject predicate object .)* } Subject: URI, Qname, nút trắng, Literal, Cú pháp Biến SELECT var1, var2,… var3 Predicate: URI URI, QName, QName nút trắng trắng, biến SELECT ?name Object: như Subject SELECT ?x,?title 17 18 Mẫu đồ thị (truy vấn) Ví dụ Thông qua kết nối ký hiệu Æ truy vấn đồ thị con RDF SELECT ?p ?o VD: WHERE {subject ?p ?o} Kết quả: trả về các cặp p. o thỏa mãn SELECT ?cat ?val WHERE { ?x rdf:value ?val. ?x category g y ?cat } [["Total Members",100],["Total Members",200],…, ["Full Members",10],…] 19 20 5
- 9/28/2011 Ví dụ Ví dụ SELECT ?cat ?val SELECT ?cat ?val ?uri WHERE { ?x rdf:value ?val. { WHERE { ?x rdf:value ?val. ?x category ?cat. ?x category ?cat. FILTER(?val>=200). } ?al contains ?x. ?al linkTo ?uri } [["Total Members", 200],… ] [["Total Members", 100, http:// ],… ] 21 22 Ví dụ OPTIONAL SELECT * WHERE { ?x :hasCreated ?doc . OPTIONAL { SELECT ?cat ?val ?uri ?x :isMemberOf ?org WHERE { ?x rdf:value ?val. } ?x category ?cat. OPTIONAL ?al contains ?x. } ?al linkTo ?uri } hasCreated: Bắt buộc isMemberOf: tùy chọn [["Total Members",100,http://...], …, ["Full Members",20, ],…,] 23 24 6
- 9/28/2011 OPTIONAL OPTIONAL lồng nhau :John :hasCreated :d1 SELECT * WHERE { :John :hasCreated :d2 ?x :hasCreated ?doc . :Jack :hasCreated :d3 OPTIONAL { :Jack :isMemberOf :club ?x :isMemberOf ?org OPTIONAL {?org :name ?name} Kết quả } (1) x = :John ; doc = :d1 ; org = unbound } (2) x = :John ; doc = :d2 ; org = unbound (3) x = :Jack ; doc = :d3 ; org = :club 25 26 OPTIONAL lồng nhau OPTIONAL lồng nhau :John :hasCreated :d1 SELECT * WHERE { :John :hasCreated :d2 SELECT * WHERE { :John :hasCreated :d1 ?x :hasCreated ?doc . :Jack :hasCreated :d3 ?x :hasCreated ?doc . :John :hasCreated :d2 OPTIONAL { :Jack :isMemberOf :club :Jack :isMemberOf :assoc OPTIONAL { :Jack :hasCreated :d3 ?x :isMemberOf ?org :assoc :name ‘ASPTT’ :Jack :isMemberOf :club OPTIONAL {?org :name ?name} ?x :age ?age . :Jim :hasCreated :d4 } ?x :isMemberOf ?org :Jim :isMemberOf :assoc } } :Jim :age 45 Kết quả: } (1) x = :John J h ;d doc = :d1 d1 ; org = unbound b d ; name = unbound b d (2) x = :John ; doc = :d2 ; org = unbound ; name = unbound (3) x = :Jack ; doc = :d3 ; org = :club ; name = unbound age và isMemberOf phải cùng xuất hiện trong kết quả nếu (4) x = :Jack ; doc = :d3 ; org = :assoc ; name = ‘ASPTT’ có mặt. 27 28 7
- 9/28/2011 OPTIONAL lồng nhau OPTIONAL lồng nhau SELECT * WHERE { :John :hasCreated :d1 SELECT * WHERE { :John :hasCreated :d1 ?x :hasCreated ?doc . :John :hasCreated :d2 ?x :hasCreated ?doc . :John :hasCreated :d2 :Jack :hasCreated :d3 OPTIONAL { :Jack :hasCreated :d3 OPTIONAL { ?x :age ?age } :Jack :isMemberOf :club ?x :age ?age . :Jack :isMemberOf :club OPTIONAL{ ?x :isMemberOf ?org} :Jim :hasCreated :d4 ?x :isMemberOf ?org :Jim :hasCreated :d4 } :Jim :isMemberOf :assoc :Jim :age 45 } :Jim :isMemberOf :assoc } } :Jim :age 45 Kết quả: Kết quả: ((1)) x = :John ; doc = :d1 ; org g = unbound ; age g = unbound (1) x = :John J h ;d doc = :d1 d1 ; org = unbound b d ; age = unbound b d (2) x = :John ; doc = :d2 ; org = unbound ; age = unbound (2) x = :John ; doc = :d2 ; org = unbound ; age = unbound (3) x = :Jack ; doc = :d3 ; org = club ; age = unbound (3) x = :Jack ; doc = :d3 ; org = unbound ; age = unbound (4) x = :Jim ; doc = :d4 ; org = :assoc ; age = 45 (4) x = :Jim ; doc = :d4 ; org = :assoc ; age = 45 29 30 Lọc kết quả Cú pháp lọc FILTER (?age >= 7 && ?age = > ! != TERM ::= VAR | CST | FUN Toán tử : + * / - CST ::= URI | Literal OPER ::= < = > + - * / && || ! Logic : && (and) || (or) ! (not) FUN ::= NAME( EXP*) Hàm : isBlank(?x) my:fun(?y) 31 32 8
- 9/28/2011 Kiểu dữ liệu - hàm Hàm 1 = 1.0 isURI(?x) ‘1’^^xsd:integer ‘1’^^ d i t = isLiteral(?y) i Lit l(? ) ‘1.0’^^xsd:decimal isBlank(?z) bound(?t) “engineer” != “engineer”@en “engineer” “ i ” = str(“engineer”@en) t (“ i ”@ ) 33 34 Kiểm tra điều kiện Xử lý kết quả lang(?x) = ‘en’ SELECT * WHERE engineer@en i @ -> > t true SELECT DISTINCT ? ?x ? ?y WHERE kỹ sư@vn -> false ORDER BY ?x DESC(?y) LIMIT 10 datatype(?y)= xsd:string OFFSET 10 ! (?x || ?y && ?z) 35 36 9
- 9/28/2011 DISTINCT DISTINCT select distinct ?x ?z select distinct ?x ?z where { :Jules :friend :Jim where h { ?x :friend ?y :Jim :friend :Jack :Jules :friend :James ?x :friend ?y ?y :friend ?z :James :friend :Jack ?y :friend ?z } } Kết quả (1) x = :Jules ; z = :Jack Không trả về ề 2 lần ầ giá trị của x, z như nhau 37 38 Không DISTINCT ORDER BY Select ?x ?z select ?pers ?date :Jim :author :d2 where { :Jules :friend :Jim where { :Jack :author :d1 ?x :friend ?y :Jim :friend :Jack :d2 :date 2008-01-01 ?pers :author ?doc :Jules :friend :James :d1 :date 2007-12-31 ?y :friend ?z ?doc :date ?date :James :friend :Jack } } Kết quả order by ?date (1) x = :Jules ; z = :Jack Kết ế quả: (2) x = :Jules ; z = :Jack (1) pers = :Jim ; date = 2007-12-31 (2) pers = :Jack ; date = 2008-01-01 39 40 10
- 9/28/2011 ORDER BY LIMIT/OFFSET select ?doc ?date :Jim :author :d2 select * where { where { :Jack :author :d1 ?pers :author ?doc :Jack :author :d3 PATTERN :d2 :date 2008-01-01 ?doc :date ?date :d1 :date 2007-12-31 } } :d3 :date 2007-12-31 LIMIT 20 order by ?date desc(?doc) Chỉ hiện tối ố đa 20 kết ế quả Kết quả: 1) doc = :d3 ; date = 2007-12-31 (2) doc = :d1 ; date = 2007-12-31 (3) doc = :d2 ; date = 2008-01-01 41 42 LIMIT/OFFSET Một số bài tập select * where { Viết query chuyển đổi ngôn ngữ nhãn cuả PATTERN khái niệm person từ tiếng Anh sang tiếng } Pháp – nếu có. LIMIT 20 select ?label where OFFSET 10 @ ?x rdfs:label ?l@en ?l = "person" Chỉ hiện tối đa 20 kết quả, sau 10 kết quả ?x rdfs:label ?label@fr đầu (Các kết quả từ 11-30) 43 44 11
- 9/28/2011 Lấy lớp cha của 1 tài nguyên Thực hành truy vấn SPARQL Cho 1 resource – xác định lớp cha của lớp Sparqler tương ứng với resource đó http://sparql.org/sparql.html htt // l / l ht l OpenLink's Virtuoso select ?class where http://lod.openlinksw.com/sparql ?x rdf:type ?c Chọn "Retrieve remote RDF data for all ?c rdfs:subClassOf ?class missing g source ggraphs" p 45 46 SPARQL OpenLink Virtuoso 47 48 12
- 9/28/2011 Dữ liệu RDF Truy vấn 1 Tự tạo ontology – up lên một địa chỉ URI Truy vấn 1: Tìm tất cả tên người Ontology O t l FOAF củaủ Ti Tim BBerners L Lee: trong contact FOAF trên http://www.w3.org/People/Berners-Lee/card PREFIX foaf: SELECT ?name WHERE { ?person foaf:name ?name . } 49 50 Truy vấn 2 Truy vấn 3 Tìm tất cả những người trong contact của Tìm các homepage của những người mà foaf có tên và địa chỉ mail TBL (http://www.w3.org/People/Berners- (http://www w3 org/People/Berners Sử dụng * Lee/card) biết PREFIX foaf: SELECT * WHERE { ?person foaf:name ?name . ?person foaf:mbox ?email . } 51 52 13
- 9/28/2011 Bài tập PREFIX foaf: Cho dữ liệu sau PREFIX card: http://www.w3.org/People/Berners Lee/card# SELECT ?homepage FROM WHERE { card:i foaf:knows ?known . Cho biết kết quả trả về bởi câu SPARQL ?known foaf:homepage ?homepage . } 53 54 Bài tập Bài tập Cho dữ liệu sau Cho CSDL RDF sau Vẽ đồ thị RDF. Cho biết kết quả trả về bởi câu SPARQL Cho biết kết quả trả về bởi câu SPARQL 55 56 14
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cơ sở dữ liệu - Nguyễn Quỳnh Chi
189 p | 267 | 51
-
Bài giảng Cơ sở dữ liệu: Bài 5 - ĐH CNTT
41 p | 112 | 17
-
Bài giảng Ngôn ngữ lập trình Python - Chương 4.2: Các thư viện phổ biến (tiếp theo)
65 p | 19 | 13
-
Bài giảng Cơ sở dữ liệu: Chương 5 - Ngôn ngữ truy vấn SQL
0 p | 131 | 13
-
Bài giảng Cơ sở dữ liệu (Databases) - Chương 3: Ngôn ngữ truy vấn SQL
85 p | 55 | 11
-
Bài giảng môn Cơ sở dữ liệu - Bài 5: Ngôn ngữ SQL (ĐH Công nghệ Thông tin)
41 p | 127 | 11
-
Bài giảng Cơ sở dữ liệu: Chương 5 - ThS. Nguyễn Thị Khiêm Hòa (ĐH Ngân hàng TP.HCM)
28 p | 131 | 8
-
Bài giảng môn học Cơ sở dữ liệu - Chương 5: Ngôn ngữ truy vấn SQL
48 p | 100 | 7
-
Bài giảng Công nghệ XML và WEB ngữ nghĩa - Bài 8
13 p | 76 | 7
-
Bài giảng Cơ sở dữ liệu - Chương 4: Ngôn ngữ truy vấn có cấu trúc
48 p | 62 | 5
-
Bài giảng Ngôn ngữ lập trình Java: Chương 4 - TS. Phan Nguyên Hải
56 p | 6 | 5
-
Bài giảng Ngôn ngữ truy vấn
30 p | 14 | 5
-
Bài giảng Cơ sở dữ liệu: Chương 3 - ThS. Trần Quang Hải Bằng
43 p | 90 | 4
-
Bài giảng Ngôn ngữ lập trình Java: Chương 3 - ĐH Giao thông Vận tải
24 p | 84 | 4
-
Bài giảng Ngôn ngữ truy vấn dữ liệu
9 p | 107 | 3
-
Bài giảng Cơ sở dữ liệu: Ngôn ngữ truy vấn có cấu trúc - ThS. Trịnh Hoàng Nam (2018)
8 p | 54 | 2
-
Bài giảng Cơ sở dữ liệu: Ngôn ngữ truy vấn có cấu trúc - ThS. Trịnh Hoàng Nam
8 p | 69 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn