What is SPARQL?
Xem
thêm: Dữ
liệu Mở liên kết - Linked Open Data.
SPARQL,
phát âm là ‘sparkle’, là ngôn
ngữ và giao thức truy vấn tiêu chuẩn cho Dữ liệu Mở
Liên kết (Linked
Open Data) trên web hoặc trong cơ
sở dữ liệu đồ họa ngữ nghĩa
(còn được gọi là RDF triplestore - bộ
3 RDF).
SPARQL,
là viết tắt của Giao thức SPARQL và Ngôn ngữ Truy vấn
RDF bằng tiếng Anh, “SPARQL
Protocol And
RDF Query
Language”, cho phép những
người sử
dụng truy vấn thông tin từ các cơ
sở dữ liệu hoặc bất kỳ nguồn dữ liệu nào có
thể được ánh xạ tới RDF.
Tiêu
chuẩn SPARQL
được W3C
thiết kế và phê chuẩn và giúp những người
sử dụng và những người phát triển tập trung vào
những gì họ muốn biết thay vì cách mà cơ
sở dữ liệu được tổ
chức.
SPARQL
so với SQL
Hệt
như SQL cho phép người
sử dụng truy xuất và sửa đổi dữ liệu
trong cơ
sở dữ liệu quan
hệ, SPARQL cung cấp chức năng y hệt cho các
cơ sở dữ liệu đồ họa NoSQL
như GraphDB.
Hơn
nữa, một truy vấn SPARQL cũng có thể được thực thi
trong bất kỳ cơ
sở dữ liệu nào mà có thể được xem như
RDF thông qua phần mềm trung gian (middleware). Ví dụ, cơ
sở dữ liệu quan hệ có thể được yêu cầu
truy vấn với SPARQL bằng việc sử dụng phần mềm ánh
xạ cơ
sở dữ liệu quan hệ sang RDF - RDB2RDF
(Relational Database to RDF).
Đây là những gì làm cho SPARQL trở thành ngôn ngữ mạnh
mạnh để tính toán, lọc, tổng hợp và có chức năng
truy vấn tiếp (subquery).
Tương
phản với SQL, các truy vấn SPARQL không bị ràng buộc
phải làm việc bên trong một cơ
sở dữ liệu: Các truy vấn liên đoàn
(Federated queries) có thể truy cập nhiều kho dữ liệu (các
điểm cuối). Hệ quả là, SPARQL vượt qua được các
ràng buộc do sự tìm kiếm cục bộ đặt ra.
Sức
mạnh của SPARQL cùng với sự mềm dẻo của RDF có thể
dẫn tới các chi phí phát triển thấp hơn khi mà việc
pha trộn các kết quả từ nhiều nguồn dữ liệu là dễ
dàng hơn.
Các
lựa chọn thiết kế đó - xúc tác cho các truy vấn đối
với các nguồn phân tán về dữ liệu không thống nhất,
là không ngẫu nhiên. SPARQL được thiết kế để xúc tác
cho Dữ liệu Liên kết (Linked
Data) cho Web Ngữ nghĩa (Semantic
Web). Mục tiêu của nó là để hỗ trợ cho mọi người
làm giàu dữ liệu của họ bằng việc liên kết nó với
các tài nguyên ngữ nghĩa toàn cầu khác, cũng như việc
chia sẻ, pha trộn, và sử dụng lại dữ liệu theo một
cách thức có ý nghĩa hơn.
SPARQL
từ bên trong
SPARQL coi dữ liệu của bạn như là đồ
họa (graph)
có định hướng, được gắn nhãn, điều đó được
trình bày nội bộ bên trong như là bộ 3 gồm chủ ngữ,
vị ngữ và bổ ngữ (subject, predicate and object).
Một
cách tương ứng, truy vấn SPARQL gồm một tập hợp 3 mẫu
theo đó từng yếu tố (chủ ngữ, vị ngữ và bổ ngữ)
có thể là một biến (wildcard). Các giải pháp với các
biến sau đó được thấy bằng việc khớp các mẫu trong
truy vấn đó với bộ 3 trong tập hợp dữ liệu.
SPARQL
có 4 dạng truy vấn. Nó có thể được sử dụng để:
-
ASK (Hỏi) liệu có ít nhất 1 sự trùng khớp mẫu truy vấn trong dữ liệu đồ họa RDF hay không;
-
SELECT (Chọn) tất cả hoặc vài sự trùng khớp đó ở dạng bảng (bao gồm sự tổng hợp, làm mẫu và phân trang qua OFFSET và LIMIT);
-
CONSTRUCT (Xây dựng) đồ họa RDF bằng việc thay thế các biến trong các trùng khớp đó trong một tập hợp các mẫu template bộ 3 đó; hoặc
-
DESCRIBE (Mô tả) các trùng khớp được tìm thấy đó bằng việc xây dựng đồ học RDF thích hợp.
Các
cơ
sở dữ liệu đồ họa
ngữ nghĩa hàng đầu có hỗ trợ SPARQL,
gồm GraphDB
Free, đặc trưng cho các trình soạn thảo SPARQL trực
quan với các tính năng tự động hoàn chỉnh, trình khai
phá (explorer) và nhiều chức năng hơn, chúng chỉ dẫn cho
các nhà khoa
học về dữ liệu trong việc xây dựng các truy vấn
SPARQL mạnh.
Sức
mạnh của SPARQL trong ví dụ
Điểm
mạnh nhất của SPARQL là điều hướng các mối quan hệ
(navigating relations) trong dữ liệu đồ họa RDF thông qua
việc khớp mẫu đồ họa, nơi mà các mẫu đơn giản có
thể được kết hợp trong các mẫu đồ họa phức tạp
hơn mà khai thác các mối quan hệ tỉ mỉ hơn trong các dữ
liệu đó.
Các
mối quan hệ như vậy có thể được khai thác bằng việc
sử dụng các mẫu cơ bản, các kết nối mẫu, các liên
minh, bằng việc thêm vào các mẫu tùy chọn mà có thể
mở rộng thông tin về các giải pháp được tìm thấy, …
Hơn nữa, các con đường đúng đắn cho phép sự kết hợp
tuần tự (xếp chuỗi), sự kết hợp song song (xen kẽ),
sự lặp đi lặp lại (Kleene
star), sự nghịch đảo, …
Mẫu
đồ họa cơ bản gồm bộ 3 theo đó từng yếu tố (chủ
ngữ, vị ngữ và bổ ngữ) có thể là một biến
(wildcard).
Ví
dụ, mẫu ‘John’ (chủ ngữ) → ‘có con’ (vị ngữ)
→ X (bổ ngữ wilcard - ký tự đại diện) sẽ như là
giải pháp cho từng bộ 3 trong đồ họa RDF mà khớp với
chủ ngữ, khớp với vị ngữ và có bất kỳ bổ ngữ
nào.
Vì
thế nếu John có 2 con trai – Bob và Michael, thì bộ ba
‘John’ → ‘có con’ → ‘Bob’ và ‘John’ →
‘có con’ → ‘Michael’ sẽ là các giải pháp cho
truy vấn SPARQL.
Truy
vấn SPARQL cũng có thể trình bày một liên minh các mẫu
đồ họa đan xen nhau. Bất kỳ giải pháp nào cho ít nhất
1 trong số các mẫu là một giải pháp của liên minh đó.
Ví
dụ liên minh các mẫu ‘John’ → ‘có con trai’ → X
và ‘John’ → ‘có con gái’ → X sẽ như là những
giải pháp cho tất cả các con trai của John và tất cả
các con gái của John.
Mẫu
đồ họa nhóm là sự kết hợp của 2 (hoặc nhiều hơn)
mẫu đồ họa cơ bản. Không giống như liên minh, nó đòi
hỏi rằng cả 2 (hoặc tất cả) các mẫu sẽ khớp nhau.
Vì thế sự kết hợp của ‘John’ → ‘có con trai’
→ Y và Y → ‘có con trai’ → Z sẽ như là các
giải pháp trùng khớp cho các con trai của các con trai của
John.
Tuy
nhiên, các con trai của các con gái của John sẽ không được
trả về vì mẫu cơ bản đầu tiên trong truy vấn, ấy là
‘John’ → ‘có con trai’ → Y, sẽ không khớp
với bộ 3 trong dữ liệu như ‘John’ → ‘có con gái’
→ ‘Anna’.
Vì
thế thậm chí nếu, ‘Anna’ → ‘có con trai’ →
‘Timmy’, thì Timmy sẽ không được hiển thị như là
giải pháp của sự liên kết ở trên. May thay, mẫu đồ
họa đan xen và mẫu đồ họa nhóm có thể dễ dàng kết
hợp được với nhau. Vì thế liên minh của ‘John’ →
‘có con trai’ → Y và ‘John’ → ‘có con gái’
→ Y được nhóm với Y → ‘có con trai’ → Z
sẽ tìm thấy tất cả các cháu của John.
Các
mở rộng của SPARQL
SPARQL
không chỉ là ngôn ngữ truy vấn, mà còn là tập hợp
toàn diện các đặc tả. SPARQL UPDATE bao gồm các truy vấn
để xóa các dữ liệu, chèn các dữ liệu và thao tác các
đồ họa. Nói chung, SPARQL Protocol (Giao thức SPARQL) định
nghĩa cách để truy cập các điểm cuối SPARQL và các
định dạng kết quả và có thể được mở rộng tiếp
để tận dụng được tính độc nhất của các dạng dữ
liệu khác nhau.
Các
mở rộng được tiêu chuẩn hóa bao gồm GeoSPARQL
để truy vấn các dữ liệu không gian địa lý (geospatial
data). Ccác mở rộng tùy biến được GraphDB
hỗ trợ bao gồm tìm kiếm toàn văn, tạo các truy vấn
đối với các máy tìm kiếm toàn văn và giao diện bên
ngoài (Lucene, SOLR,
ElasticSearch),
RDFRank để sắp xếp, SPARQL MM cho đa phương tiện và
những điều khác.
Vì
sao sử dụng SPARQL?
Sự
đa dạng rộng lớn các mẫu đồ họa có thể trùng khớp
thông qua các truy vấn SPARQL phản ánh sự đa dạng rộng
lớn trong dữ liệu mà SPARQL đã được thiết kế - cho
dữ liệu của Web Ngữ nghĩa (Semantic Web).
Bằng
việc đưa vào các giá trị tùy chọn sao cho các giải
pháp không bị từ chối vì vài phần của mẫu không
trùng khớp hoặc bằng việc kết hợp các mẫu đồ họa
sao cho một trong số vài lựa chọn xen kẽ có thể trùng
khớp, SPARQL có thể được sử dụng có hiệu quả và
hiệu lực để trích xuất các thông tin cần thiết bị
ẩn dấu trong các dữ liệu không thống nhất được lưu
trữ trong các định dạng và các nguồn khác nhau.
Như
nhà phát minh ra World Wide Web, nhà sáng tạo và bảo vệ
Web Ngữ nghĩa và Giám đốc của W3C, Ngài Tim Berners-Lee,
đã chỉ ra:
“Việc cố sử dụng Web Ngữ nghĩa mà
không có SPARQL là giống như việc cố sử dụng cơ
sở dữ liệu quan hệ mà không có SQL. SPARQL làm cho
có khả năng để truy vấn thông tin từ các cơ
sở dữ liệu và các nguồn đa dạng khác trong tự
nhiên, xuyên khắp Web”.
SPARQL,
pronounced ‘sparkle’, is the standard query language and protocol
for Linked
Open Data on the web or in a semantic
graph database (also called RDF triplestore).
SPARQL,
short for “SPARQL Protocol and RDF Query Language”, enables users
to query information from databases or any data source that can be
mapped to RDF.
The
SPARQL standard
is designed and endorsed by the W3C
and helps users and developers focus on what they would like to know
instead of how a database is organized.
SPARQL vs SQL
Just
like SQL allows the user to retrieve and modify data in a relational
database, SPARQL provides the same functionality for NoSQL
graph databases like GraphDB.
In
addition, a SPARQL query can also be executed on any database that
can be viewed as RDF via middleware. For example, a relational
database can be queried with SPARQL by using a Relational Database to
RDF (RDB2RDF)
mapping software.
This is what makes SPARQL such a powerful language for computation, filtering, aggregation and subquery functionality.
In
contrast to SQL, SPARQL queries are not constrained to work within
one database: Federated queries can access multiple data stores
(endpoints). Consequently, SPARQL overcomes the constraints posed by
local search.
The
power of SPARQL together with the flexibility of RDF can lead to
lower development costs as merging results from multiple data sources
is easier.
These
design choices – enabling queries over distributed sources on
non-uniform data, are not accidental. SPARQL is designed to enable
Linked
Data for the Semantic
Web. Its goal is to assist people to enrich their data by linking
it to other global semantic resources, thus sharing, merging, and
reusing data in a more meaningful way.
SPARQL from within
SPARQL sees your data as a directed, labeled graph, that is internally expressed as triples consisting of subject, predicate and object.
Correspondingly,
a SPARQL query consists of a set of triple patterns in which each
element (the subject, predicate and object) can be a variable
(wildcard). Solutions to the variables are then found by matching the
patterns in the query to triples in the dataset.
SPARQL
has four types of queries. It can be used to:
-
ASK whether there is at least one match of the query pattern in the RDF graph data;
-
SELECT all or some of those matches in tabular form (including aggregation, sampling and pagination through OFFSET and LIMIT);
-
CONSTRUCT an RDF graph by substituting the variables in those matches in a set of triple templates; or
-
DESCRIBE the matches found by constructing a relevant RDF graph.
The
top semantic graph databases that support SPARQL, including
GraphDB
Free, feature intuitive SPARQL editors with autocomplete,
explorer and more that guide data scientists through their path
of building powerful SPARQL queries.
The Power of SPARQL in an Example
The
biggest strength of SPARQL is navigating relations in RDF graph data
through graph pattern matching, where simple patterns can be combined
into more complex ones that explore more elaborate relations in the
data.
Such
relations can be explored by using basic patterns, pattern joins,
unions, by adding optional patterns that may extend the information
about the found solutions, etc. Furthermore, property paths allow
sequential composition (sequencing), parallel composition
(alternatives), iterations (Kleene
star), inversion, etc.
A
basic graph pattern consists of a triple in which each element (the
subject, predicate and object) can be a variable (wildcard).
For
example, the pattern ‘John’
(a subject)->‘has son’ (a predicate)->X (a wildcard object)
will have as a solution each triple in the RDF graph that matches the
subject, matches the predicate, and has any object.
So
if John has two sons – Bob and Michael, the triples ‘John’->‘has
son’->‘Bob’ and ‘John’->‘has
son’->‘Michael’ will be the solutions to the SPARQL
query.
A
SPARQL query can also express an union of alternative graph patterns.
Any solution to at least one of the patterns is a solution of the
union.
For
example the union of patterns ‘John’->‘has son’->X
and ‘John’->‘has daughter’->X will have as
solutions all of John’s sons and all of John’s daughters.
A
group graph pattern is a join of two (or more) basic graph patterns.
Unlike the union, it requires that both (or all) patterns are
matched. So a join of ‘John’->‘has son’->Y and
Y->‘has son’->Z will have as matching solutions
the sons of John’s sons.
The
sons of John’s daughters, however, will not be returned because the
first basic pattern in the query, namely ‘John’->‘has
son’->Y, will not be matched by a triple in the data such
as ‘John’->‘has daughter’->‘Anna’.
So
even if, ‘Anna’->‘has son’->‘Timmy’, Timmy
will not show up as a solution of the above join. Luckily, an
alternative graph pattern and a group graph pattern can easily be
combined. So a union of ‘John’->‘has son’->Y
and ‘John’->‘has daughter’->Y grouped with
Y->‘has son’->Z will find all of John’s grandsons.
Extensions of SPARQL
SPARQL
is not just a query language, but a comprehensive set of
specifications. SPARQL UPDATE includes queries to delete data, insert
data and manipulate graphs. In general, SPARQL Protocol defines how
to access SPARQL endpoints and result formats and can be further
extended to leverage the uniqueness of various data types.
Standardized
extensions include GeoSPARQL
for querying geospatial data. Custom extensions supported by GraphDB
include full-text search, making queries against external full-text
and faceting engines (Lucene,
SOLR, ElasticSearch),
RDFRank for ordering, SPARQL MM for multimedia and others.
Why using SPARQL?
The
wide variety of graph patterns that can be matched through SPARQL
queries reflects the wide variety in the data that SPARQL was
designed for – the data of the Semantic Web.
Whether
it is by including optional values so that solutions are not rejected
because some part of the pattern doesn’t match or by combining
graph patterns so that one of several alternatives may match, SPARQL
can be used efficiently and effectively to extract the necessary
information hidden in non-uniform data stored in various formats and
sources.
As
the inventor of the World Wide Web, creator and advocate of the
Semantic Web and W3C Director, Sir Tim Berners-Lee, puts it:
“Trying to use the Semantic Web without SPARQL is like trying to use a relational database without SQL. SPARQL makes it possible to query information from databases and other diverse sources in the wild, across the Web.”
Dịch:
Lê Trung Nghĩa
Không có nhận xét nào:
Đăng nhận xét
Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.