C ƢƠN 3 PHÁT TRIỂN HỆ THỐNG TRUY VẤN DỮ LIỆU TÙY
3.2.3. Chuyển đổi câu truy vấn UPDATE
a. Chuyển từ ngôn ngữ tự nhiên sang SQL
Quá trình chuyển đổi câu truy vấn NNTN trƣờng hợp Truy vấn UPDATE sang câu truy vấn SQL dựa vào việc phân tích ngữ nghĩa ở mức độ ngữ nghĩa từ vựng, biểu hiện các ý nghĩa của những từ thành phần.
Bƣớc 1: Xác định thành phần của câu truy vấn Update bằng NNTN có cấu trúc tƣơng ứng với cấu trúc câu truy vấn SQL
Bƣớc 2: Xác định thành phần của câu truy vấn bằng NNTN có cấu trúc tƣơng ứng với cấu trúc câu truy vấn SQL
Dựa vào tìm hiểu về cấu trúc, thành phần của câu truy vấn SELECT ở chƣơng I, có thể thấy thành phần chính của câu gồm:
Update: phía sau từ khóa Update là xác định tên của bảng muốn cập nhật.
Set: sau từ khóa Set là một hoặc nhiều mệnh đề đƣợc gán giá trị mới cho các cột
trong bảng.
Where: sau từ khóa Where là biểu thức tìm kiếm dùng để lọc các hàng dữ liệu trả
về.
Để xác đinh các thành phần của câu UPDATE, mô hình cũng sử dụng kỹ thuật ánh xạ các từ vào bộ từ điển để tìm ra vị trí của từng thành phần của câu UPDATE trong truy vấn bằng NNTN. Bộ từ điển đƣợc xây dựng nhƣ Bảng 3.2.
ảng Danh sách từ và giá trị tương trong thành phần câu SELECT
Từ khóa Từ khóa tương ứng trong SQL
“update”, “amend”, “modernize”, “refresh”, “refurbish”, “rejuvenate”, “renew”, “renovate”, “restore”, “revise”
Update
“set”, “values”, “funtion”, “column reference” Set “filter”, “for”, “during”, “with”, “where” Where
Sau từ khóa Where là các biểu thức tìm kiếm, thông thƣờng là các biểu thức so sánh và biểu thức logic. Xác định các toán tử so sánh và logic ở mệnh đề Where
cũng dựa vào kỹ thuật ánh xạ vào bộ từ điển đƣợc xây dựng nhƣ bảng 3.3.
ảng Danh sách từ và kết quả tương ứng của toán tử so sánh và logic
Từ khóa Giá trị tương ứng trong SQL
“equal to”, “is”, “=” =
“difference” <>
“less than” <
“greater than” >
“less than or equal to”, “<=”, “=<” <= “greater than or equal to”, “>=”, =>” >=
“and” AND
“or” OR
“like”, “contain”, “include” LIKE
Ví dụ với cụm từ “Last Name” include “t” sẽ đƣợc chuyển đổi thành “Last Name” LIKE “t”
Bƣớc 3: Sau khi xác định đƣợc các thành phần của câu truy vấn, sử dụng kỹ thuật ánh xạ các thuộc tính, bảng có tên gọi bằng NNTN với bộ từ điển đƣợc xây dựng để xác định tên đƣợc quy định trong CSDL. Cuối cùng tiến hành tổng hợp các thành phần xác định đƣợc của câu truy vấn để tạo thành câu truy vấn SQL hoàn chỉnh.
Ví dụ:
Sau khi xác định các thành phần, ta đƣợc câu nhƣ sau: UPDATE “Last Name”, “First Name” SET “Contact” WHERE “Last Name” LIKE “t”
Tiến hành ánh xạ để tạo thành câu truy vấn SQL hoàn chỉnh:
UPDATE name, prename SET contact WHERE name LIKE „t‟
b. Chuyển đổi sang câu truy vấn SPARQL
Ví dụ với câu truy vấn SQL: UPDATE name, prename SET contact WHERE
name LIKE „t‟ đã tạo đƣợc ở bƣớc chuyển đổi câu truy vấn bằng NNTN sang câu
truy vấn SQL. Các bƣớc chuyển đổi sang câu truy vấn SPARQL nhƣ sau:
liệu, và mệnh đề WHERE và GROUP BY nếu có.
SELECT name, prename: thuộc tính name, prename. FROM contact: bảng contact.
WHERE name LIKE „t‟: mệnh đề name LIKE „t‟
Bƣớc 2: Xác định các tiền tố PREFIX của SPARQL dựa vào các bảng đã xác định đƣợc trong Bƣớc 1 và URI tƣơng ứng đã đƣợc khai báo.
Ví dụ với bảng contact sẽ có PREFIX là:
PREFIX contact: <http://www.semanticweb.org/itc/ontologies/2016/3/contact#>
Nếu không tìm thấy URI của bảng, hệ thống gán một URI ảo cho bảng đó.
Bƣớc 3: Mệnh đề SELECT SPARQL đƣợc tạo ra bằng cách mỗi “thuộc_tính” sẽ đƣợc định dạng là “?thuộc_tính”.
Ví dụ: UPDATE name, prename đƣợc biến đổi thành UPDATE ?name ?prename
Bƣớc 4: Thành phần đầu tiên của mệnh đề WHERE SPARQL là kết quả của quá trình tạo các mẫu bộ ba từ các thuộc tính trong mệnh đề UPDATE SQL, đƣợc tạo ra bằng cách thêm một biến cho mọi thuộc tính dữ liệu (bao gồm các thuộc tính tập hợp và các thuộc tính trong mệnh đề WHERE của SQL) trong danh sách UPDATE SQL. Cấu trúc tổng quan nhƣ sau:
?biến bảng:thuộc_tính ?thuộc_tính.
Ví dụ: thuộc tính name, prename trong bảng contact đƣợc tạo với cấu trúc nhƣ sau:
?x contact:name ?name.
?x contact:prename ?prename.
Nếu câu UPDATE có nhiều bảng, thì hệ thống sẽ tự gán mỗi bảng có giá trị
?biến khác nhau. Ví dụ có thêm thuộc tính salary của bảng contract thì câu đƣợc tạo nhƣ sau:
?x contact:name ?name.
?x contact:prename ?prename. ?y contract:salary ?salary.
Thành phần tiếp theo là các mệnh đề tìm kiếm, có các thuộc tính cũng đƣợc tạo ra tƣơng tự nhƣ ở mệnh đề UPDATE.
Ví dụ:
WHERE prename = “Nguyễn”
Đƣợc chuyển đổi thành
FILTER (?prename = “Nguyễn”) WHERE name = prename
Đƣợc chuyển đổi thành
FILTER (?name = ?prename)
Toán tử AND và OR đƣợc sử dụng để lọc các bản ghi dựa trên nhiều điều kiện, sẽ đƣợc thay thế bằng “&&” và “| |” trong SPARQL.
WHERE name = „Hoa‟ AND prename = „Nguyễn Thị‟ OR homeaddress = „Nghệ An‟
Đƣợc chuyển đổi thành
FILTER (?name = "Hoa" && ?prename = "Nguyễn Thị" || ?homeaddress = "Nghệ An")
Nếu câu truy vấn có sử dụng toán tử LIKE, cần tạo biểu thức regex:
WHERE name LIKE „t‟
Đƣợc chuyển đổi thành
FILTER regex(?name, “t”)
Bƣớc 5: Tích hợp các kết quả từ bƣớc 2 đến bƣớc 5 để tạo thành câu truy vấn SPARQL hoàn chỉnh.
Với ví dụ trên, câu truy vấn SPARQL hoàn chỉnh nhƣ sau:
PREFIX contact: <http://www.semanticweb.org/itc/ontologies/2016/3/contact#> UPDATE ?prename ?name
SET {
?x contact:prename ?prename. ?x contact:name ?name.
WHERE (regex (?name, “t”, “i”)) }
3.3. GIỚI THIỆU VỀ FRAMEWORK APACHE OPENNLP VÀ GENERAL SQL PARSER