intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Ngôn ngữ truy vấn ngữ nghĩa SPARQL - Lê Thanh Hương

Chia sẻ: Minh Vũ | Ngày: | Loại File: PDF | Số trang:14

284
lượt xem
40
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Ngôn ngữ truy vấn ngữ nghĩa SPARQL - Lê Thanh Hương

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2