Cú pháp của câu truy vấn

Một phần của tài liệu Tìm hiểu và xây dựng ứng dụng với Sematic web (Nguyên Thúc Anh Duy vs Nguyễn Thị Khánh Hòa) - 2 docx (Trang 30 - 32)

Chương 4 TRUY VẤN DỮ LIỆU TRONG RDF

4.3Cú 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ả: (adsbygoogle = window.adsbygoogle || []).push({});

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

Một phần của tài liệu Tìm hiểu và xây dựng ứng dụng với Sematic web (Nguyên Thúc Anh Duy vs Nguyễn Thị Khánh Hòa) - 2 docx (Trang 30 - 32)