Chương 4 TRUY VẤN DỮ LIỆU TRONG RDF
4.3 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ự ‘?’. Đôi khi người ta cũng sử dụng kí tự ‘$’ để chỉ một biến, để chỉ rằng nơi mà hệ thống sử dụng ‘?’ như một ký tự thay thế. Trong một câu truy vấn, $abc và ?abc đều là biến.
Bởi vì các URI có thể được viết rất dài, 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
Một blank node có thể xuất hiện trong một query pattern. Nó giữ vai trò như một biến, mặc dù nó 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 thì phân biệt với các blank node trong dữ liệu. Một 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 blank node label.
Luận văn tốt nghiệp: Nghiên cứu, tìm hiểu và xây dựng ứng dụng với
78
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Johnny Lee Outlaw" .
_:a foaf:mbox <mailto:jlow@example.com> .
Truy vấn:
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?mbox
WHERE
{ ?x foaf:name "Johnny Lee Outlaw" . ?x foaf:mbox ?mbox }
Kết quả:
mbox
<mailto:jlow@example.com> Truy vấn với nhiều blank node
Data:
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Johnny Lee Outlaw" .
_:a foaf:mbox <mailtos:jlow@example.com> . _:b foaf:name "Peter Goodguy" .
_:b foaf:mbox <mailto:peter@example.org> . Truy vấn:
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?mbox
WHERE
{ ?x foaf:name ?name . ?x foaf:mbox ?mbox } Kết quả:
name mbox
"Johnny Lee Outlaw" <mailto:jlow@example.com> "Peter Goodguy" <mailto:peter@example.org>
Luận văn tốt nghiệp: Nghiên cứu, tìm hiểu và xây dựng ứng dụng với
79