Protocol And RDF Query Language (SPARQL) để truy cập dữ liệu RDF
Như chúng ta đã biết RDF là một cách để mô tả thông tin về các tài nguyên Web một cách linh động . Nó được sử dụng để mô tả nhiều loại thông tin ví dụ như thông tin về cá nhân, về hệ thống mạng toàn cầu, meta-data về multimedia như music và hình ảnh cũng như là cung cấp một phương tiện để tích hợp các nguồn tài nguyên khác. Với một lượng thông tin quá lớn như vậy, làm thế nào dữ liệu có thể được truy vấn nhanh chóng và chính xác? Tổ chức W3C đã phát triển một ngôn ngữ chuẩn để truy vấn dữ liệu RDF với việc cung cấp nhiều chức năng cho các developer và end users cách để viết và thực thi một câu truy vấn . Kỳ này mô tả ngôn ngữ truy vấn Protocol And RDF Query Language (SPARQL) để truy cập dữ liệu RDF được phát triển bởi nhóm RDF Data Access Working Group-một phần trong hoạt động của Semantic Web.
Một RDF Graph là một tập các triple, mỗi triple bao gồm bộ ba subject, predicate và object. Những triple này có thể đến từ nhiều tài nguyên khác nhau. Ví dụ như: chúng có thể đến từ một tài liệu RDF, chúng có thể được suy ra từ các RDF triple khác hoặc là chúng có thể là sự mô tả RDF của các dữ liệu được lưu trữ từ các định dạng khác như XML hay là từ một cơ sở dữ liệu quan hệ.
SPARQL là một ngôn ngữ để truy cập thông tin từ các đồ thị RDF. Nó cung cấp các tính năng sau:
-Trích thông tin trong các dạng của URI, các blank node và các plain hay typed literals. -Trích thông tin từ các đồ thị con.
-Xây dựng một đồ thị RDF mới dựa trên thông tin trong đồ thị truy vấn
9.1. Tạo một câu truy vấn đơn giản
Một câu truy vấn bao gồm 2 mệnh đề, mệnh đề SELECT và mệnh đề WHERE. Mệnh đề SELECT định danh các biến mà ứng dụng quan tâm và mệnh đề WHERE bao gồm các triple pattern.
Một triple pattern là một RDF triple nhưng mỗi thành phần (subject, predicate hay object) đều có thể là một biến truy vấn.
Một basic graph pattern là một tập các triple pattern.
Ngôn ngữ SPARQL dựa trên nền tảng so sánh các graph pattern. Graph pattern đơn giản nhất là các triple pattern. Kết quả của câu truy vấn là tất cả các giải pháp mà một câu truy vấn có thể phù hợp với đồ thị được truy vấn. Một câu truy vấn có thể có không,một hay nhiều kết quả.
Sử dụng câu truy vấn sau tại trang web: http://dbpedia.org/sparql để tìm các quốc gia trong thềm lục địa có dân số lớn hơn 15 triệu dân.
PREFIX type: <http://dbpedia.org/class/yago/> PREFIX prop: <http://dbpedia.org/property/> SELECT ?country_name ?population
WHERE {
?country a type:LandlockedCountries ; rdfs:label ?country_name ;
prop:populationEstimate ?population .
FILTER (?population > 15000000 && langMatches(lang(?country_name), "EN")) . } ORDER BY DESC(?population)
Ngôn ngữ SPAQL ta có thể chọn lựa kiểu biến trả về dưới dạng XML hay là RDF. Kết quả của phép truy vấn trên là:
9.2. Cú pháp của câu truy vấn
Các giá trị được đặt trong dấu ‘<>’ dùng để chỉ một định danh URI. Các giá trị được đặt trong dấu (“ “) là các giá trị literal.
Biến trong ngôn ngữ truy vấn có giá trị toàn cục. Biến thường bắt đầu với kí tự ‘?’ hay
kí tự ‘$’ để chỉ một biến.
SPARQL cung cấp một cơ chế viết tắt. Tiếp đầu ngữ (prefix) có thể được định nghĩa
và một QName sẽ cung cấp một dạng viết làm cho URI có thể ngắn gọn.
Sau đây là một cách viết tắt cho triple pattern
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?title
WHERE {<http://example. org/book/book1> dc:title ?title } Ta có thể sử dụng một cách viết tắt :
PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX : <http://example.org/book/>
SELECT $title
WHERE { :book1 dc:title $title }
Blank node
Blank node có thể xuất hiện trong một mẫu truy vấn. Nó giữ vai trò như một biến, dù không được đề cập trong kết quả của câu truy vấn hay bất kỳ nơi nào ở trong graph pattern.
Blank node trong các câu truy vấn khác với với các blank node trong dữ liệu, do đó
blank node trong một graph pattern không tương ứng với một blank node trong dữ liệu thông qua một nhãn blank node.
Ví dụ:
- Dữ liệu
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Chuong Nguyen" .
_:a foaf:mbox <mailto:nvchuong2.0@gmail.com> .
- Truy vấn
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?mbox
WHERE
{ ?x foaf:name "Chuong Nguyen" . ?x foaf:mbox ?mbox }
- Kết quả
mbox mailto:nvchuong2.0@gmail.com
Danh sách predicate-Object
Các triple pattern với một subject chung có thể được viết sao cho subject đó chỉ được viết 1 lần, mỗi triple pattern sẽ được cách nhau bởi dấu ‘;’
?x foaf:name ?name ; foaf:mbox ?mbox .
Cách viết trên tương tự với cách viết:
?x foaf:name ?name . ?x foaf:mbox ?mbox .