Blog FOSS by Lê Trung Nghĩa

https://letrungnghia.mangvn.org


SPARQL là gì?

What is SPARQL?

Theo: http://ontotext.com/knowledgehub/fundamentals/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 để:

  1. 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;

  2. 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);

  3. 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

  4. 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’‘John’ → ‘có con’ → ‘Michael’ sẽ là các giải pháp cho truy vấn SPARQL.

The power of 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.

Union of two patterns

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’ → YY → ‘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.

Group Graph Pattern

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‘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.

Joined third part of patterns

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:

  1. ASK whether there is at least one match of the query pattern in the RDF graph data;

  2. SELECT  all or some of those matches in tabular form (including aggregation, sampling and pagination through OFFSET and LIMIT);

  3. CONSTRUCT an RDF graph by substituting the variables in those matches in a set of triple templates; or

  4. 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

letrungnghia.foss@gmail.com

Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây