Tải bản đầy đủ (.doc) (53 trang)

NGÔN NGỮ TRUY VẤN ONTOLOGY COKB

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.21 MB, 53 trang )

MỤC LỤC
LỜI MỞ ĐẦU i
Chương 1. TỔNG QUAN VỀ ONTOLOGY 2
Chương 2. NGÔN NGỮ ĐẶT TẢ ONTOLOGY COKB 8
Chương 3. NGÔN NGỮ TRUY VẤN ONTOLOGY COKB 21
Chương 4. TÌM HIỂU HỆ THỐNG HỎI-ĐÁP TRI THỨC DẠNG COKB THEO
HƯỚNG AGENT 31
Chương 5. VÍ DỤ MINH HỌA CÁC THUẬT TOÁN VỀ MA TRẬN 43
Chương 6. KẾT LUẬN 50
TÀI LIỆU THAM KHẢO 51
DANH MỤC CÁC CHỮ VIẾT TẮT
Ký hiệu Mô tả
COKB Computational Objects Knowledge Base
COQL COKB Ontology Query Language
ECOKB
Extended Computational Objects Knowledge Base
ECOL Extended COKB Ontology Language
ECOQL Extended COKB Ontology Query Language
MAS Multi-Agent System
DAI Distributed Artificial Intelligence
AOP Agent Oriented Programming
PDT Prometheus Design Tool
JDE JACK Developer Environment
DB DataBase
KB Knowledge Base
PTTT Hệ phương trình tuyết tính
CSTT Cơ sở tri thức
- i -
LỜI MỞ ĐẦU
Trong những năm gần đây, sự phát triển nhanh chóng các ứng dụng công
nghệ thông tin và Internet vào nhiều lĩnh vực đời sống xã hội như: quản


lý kinh tế, y học, giáo dục học, khoa học kỹ thuật, ngân hàng, thương mại
điện tử, Trước sự hình thành và phát triển mạnh mẽ đó, việc tìm kiếm
và trao đổi thông tin là một nhu cầu thiết yếu không thể thiếu trong cuộc
sống hàng ngày, nhất là những thông tin liên quan đến từng lĩnh vực tri
thức cụ thể.
Do đó, để biểu diễn thông tin sao cho có thể tìm được thông tin nhanh chóng
và chính xác là một vấn quan trọng, luôn thu hút nhiều sự quan tâm của các nhà
khoa học. Đặc biệt, là việc nghiên cứu và phát triển các mô hình biểu diễn tri thức
và suy diễn tự động trên tri thức chiếm một vị trí rất quan trọng trong ngành khoa
học máy tính nói riêng và công nghệ thông tin nói chung, nhất là đối với các hệ trí
tuệ nhân tạo.
Bên cạnh việc đưa ra các mô hình biểu diễn tri thức, của mỗi lĩnh vực đều
phát triển một tập các khái niệm riêng cho mình, dưới dạng các Ontology. Trên cơ
sở đó, đã có nhiều ngôn ngữ Ontology ra đời, như một tiếng nói chung để thể hiện
và trao đổi thông tin, tri thức. Tùy theo đặc thù của từng lĩnh vực mà mỗi ontology
sẽ biểu diễn thích ứng với một ngôn ngữ đặc tả tri thức khác nhau.
Với một ngôn ngữ chung, các hệ thống hỏi đáp tri thức đã ra đời và không
ngừng cải tiến và phát triển. Gần đây công nghệ phần mềm agent (agent software
technology) là một công nghệ đang thu hút nhiều sự quan tâm của các kỹ sư tri thức,
bởi vì nó đáp ứng được các nhu cầu của một hệ thống thông tin tri thức có tính mở
và phân tán, điển hình là Internet.
Mỗi agent trong hệ thống sẽ hoạt động dựa trên tri thức lĩnh vực của mình.
Các agents có liên quan với nhau nhưng không gắn chặt nhau và hoạt động của
agent mang tính chất phân tán. Chính vì vậy mô hình hệ thống multi-agent đặc biệt
thích hợp trong việc thiết kế các hệ thống tri thức phân tán (distributed artificial
intelligence) và phương pháp lập trình hướng agent (agent oriented programming)
là một tiếp cận hiện đại cho việc cài đặt hệ thống này.
Trên cơ sở đó, trong nội dung báo cáo tìm hiểu, xây dựng và phát triển ngôn
ngữ ontology cho việc truy vấn tri thức dạng COKB. Đồng thời áp dụng một
phương pháp luận và công cụ hiện thực để thiết kế và cài đặt hệ thống hỏi đáp tri

thức dạng COKB theo hướng agent; ứng dụng cho bài toán ma trận dựa trên cơ sở
lý thuyết, các định nghĩa định lý, các phép toán cũng như quan hệ, là một phần của
đại số tuyến tính.
Tôi xin chân thành cảm ơn PGS. TS. Đỗ Văn Nhơn, Giảng viên môn học
“Biểu diễn Tri thức và Ứng dụng”, Thầy đã truyền đạt những kiến thức quý báu về
cơ sở tri thức, cách biểu diễn tri thức và ứng dụng, cũng như những hướng nghiên
cứu chính trên thế giới hiện nay của nó. Tôi xin chân thành cảm ơn ban cố vấn học
tập và ban quản trị Chương trình đào tạo thạc sĩ Công nghệ thông tin của Đại Học
Công nghệ thông tin – Đại học Quốc Gia Thành phố Hồ Chí Minh đã tạo điều kiện
về tài liệu học tập và tham khảo.
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng
Chương 1. TỔNG QUAN VỀ ONTOLOGY
1.1 Ontology là gì ?
Ontology là một thuật ngữ được dùng trong trí tuệ nhân tạo có nguồn gốc từ
triết học và mang nhiều ý nghĩa khác nhau.
1.1.1 Ontology trong triết học:
Ontology là một nhánh của triết học, nghiên cứu về sự tồn tại, về sự phân
loại và cấu trúc của các đối tượng, các thuộc tính, biến cố, quy trình và các quan hệ
trong mọi lĩnh vực. Các nhà triết học dùng ‘ontology’ như là một từ đồng nghĩa với
‘siêu hình học’. Ontology gốc Latin là ‘ontologia’. Thuật ngữ ‘ontologia’ có từ năm
1613, do hai nhà triết học Rudolf Göcke (trong Lexicon philosophicum) và Jacob
Lorhard (trong Theatrum philosophicum) đưa ra. Từ tiếng Anh ‘ontology” xuất hiện
lần đầu trong An Universal Etymological English Dictionary (năm 1721).
Ontology phân loại các thực thể trong mọi lĩnh vực. Các trường phái triết học
khác nhau đưa ra các tiếp cận khác nhau để phân loại: vật chất và hiện tượng, đầy
đủ và rút gọn.
1.1.2 Ontology trong khoa học máy tính:
Trong những năm gần đây, thuật ngữ ‘ontology’ được sử dụng nhiều trong
các lĩnh vực của khoa học máy tính và thông tin. Nó nảy sinh từ vấn đề “tháp
Babel”. Nhóm các nhà thiết kế hệ cơ sở dữ liệu và tri thức đều có thuật ngữ và khái

niệm của riêng họ. Dựa trên các thuật ngữ, khái niệm đó, họ biểu diễn thông tin.
Các cơ sở dữ liệu khác nhau có thể dùng cùng một tên gọi nhưng với ý nghĩa khác
nhau. Ngược lại, cùng một ý nghĩa, nhưng có thể được diễn tả bằng các tên gọi khác
nhau. Khi các nhóm cần chia sẻ thông tin thì nảy sinh vấn đề: làm thế nào gom tất
cả các thông tin đa dạng này trong cùng một hệ thống. Cần phải tìm ra phương pháp
để giải quyết tính xung khắc của các thuật ngữ và khái niệm.
Ban đầu sự xung khắc được giải quyết từng trường hợp một. Dần dần người
ta nhận thấy có thể đưa ra một ontology tham khảo chung – phân loại các thực thể.
Cách này có lợi hơn so với giải quyết từng trường hợp, và thuật ngữ ‘ontology’
được các nhà khoa học máy tính sử dụng để mô tả việc xây dựng các phân loại.
Theo ngữ nghĩa này thì ontology là một từ điển các thuật ngữ tạo nên cú pháp và từ
vựng để biểu diễn tri thức nhằm chia sẻ tri thức giữa các hệ thống thông tin khác
nhau.
Có thể điểm qua một số định nghĩa về ontology như sau:
Một trong những định nghĩa đầu tiên về ontology là định nghĩa của Neches
và các cộng sự (1991): Ontology là sự đặc tả tường minh, hình thức của khái niệm -
An ontology is an explicit specification of a conceptualization (Thomas R. Gruber-
1993). Định nghĩa này cho thấy ontology là đặc tả các khái niệm trong một lĩnh vực
và đặc tả các quan hệ giữa các khái niệm đó.
Năm 1997, Swartout đề xuất xây dựng ontology từ một ontoloy lớn hơn:–
“Ontology là một tập hợp thuật ngữ có cấu trúc phân cấp, dùng để mô tả một lĩnh
vực, nó được dùng như bộ khung cho một cơ sở tri thức”. Theo định nghĩa này thì
có thể dùng một ontology để xây dựng nhiều CSTT khác nhau có cùng một bộ
khung. Đối với từng lĩnh vực cụ thể thì thêm vào các khái niệm con. Nếu các hệ
2
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng
thống được xây dựng dựa trên cùng một ontology thì các hệ thống đó có thể chia sẻ
một cấu trúc chung, và vì vậy cơ chế suy luận sẽ dễ dàng hơn.
Theo L. Stojanovic et al. (2004): Ontology cung cấp mô hình khái niệm
trong một lĩnh vực, có thể được chia sẻ (được con người và hệ thống sử dụng để

trao đổi và tích hợp thông tin) và xử lý trên máy tính.
Theo Ehrig et al. (2005), Ontology được định nghĩa như sau: Ontology O là
một bộ gồm các thành phần (C, H
C
, R
C
, H
R
, I, R
I
, A). Các khái niệm C được phân
cấp theo H
C
, R
C
là quan hệ giữa các khái niệm, theo phân cấp H
R
, I là thể hiện của
khái niệm, R
I
là quan hệ giữa các thể hiện, A là tiên đề được dùng để suy luận tri
thức từ tri thức đã có.
Khác với triết học, mục đích của ontology theo khoa học máy tính là không
chỉ đặc tả sự tồn tại, mà còn tạo ra một cơ sở dữ liệu chứa các khái niệm, dùng các
khái niệm này để thực hiện các loại tính toán.
Từ những định nghĩa trên cho thấy Ontology định nghĩa các khái niệm
(concepts) dùng để mô tả và biểu diễn một lĩnh vực của tri thức. Các loại khái niệm
được mô tả gồm:
- Lớp đối tượng trong lĩnh vực (classes)
- Đối tượng cụ thể (instance)

- Mối quan hệ giữa các đối tượng (relationships)
- Thuộc tính, tính chất của các đối tượng (properties)
- Hàm (functions) và quy trình (processes) liên quan đến các đối tượng.
- Ràng buộc (constraints) và luật (rules) liên quan đến các đối tượng.
1.2 Mô hình tri thức các đối tượng tính toán - Ontology COKB
Các phương pháp biểu diễn tri thức truyền thống đã được ứng dụng nhiều.
Tuy nhiên, các phương pháp đó chưa đủ mạnh để xây dựng các chương trình tự
động hay biểu diễn cơ sở tri thức thuộc các lĩnh vực tri thức khác nhau. Mô hình tri
thức các đối tượng tính toán được xây dựng theo cách tiếp cận hướng đối tượng kết
hợp với các kỹ thuật lập trình tính toán hình thức. Theo hướng này sẽ cho phép mô
hình được các bài toán cũng như thiết kế các giải thuật.
Mô hình tri thức các đối tượng tính toán, viết tắt là COKB (Computational
Objects Knowledge Base) đề xuất trong [1], là một hệ thống gồm 6 thành phần: (C,
H, R, Ops, Funcs, Rules ) trong đó mỗi thành phần được mô tả như sau:
1.2.1 Tập các khái niệm về các đối tượng tính toán (C-Objects) C
Khái niệm được mô tả bởi một tên duy nhất. Các khái niệm được tổ chức
theo phân loại, áp dụng cơ chế kế thừa. Có các loại khái niệm sau:
- Khái niệm nền: kiểu boolean, số tự nhiên, số nguyên, số hữu tỉ, số thực,
tập hợp, danh sách.
- Khái niệm cơ bản: có cấu trúc rỗng hoặc có một số thuộc tính có kiểu
khái niệm nền (ví dụ khái niệm DIEM trong hình học phẳng). Các khái
niệm này làm nền cho các khái niệm cấp cao hơn.
- Khái niệm cấp 1: có một thuộc tính là khái niệm nền và có thể thiết lập từ
danh sách các khái niệm cơ bản.
- Khái niệm cấp 2: có các thuộc tính là khái niệm nền và khái niệm cấp 1,
có thể được thiết lập từ danh sách các khái niệm nền hoặc cơ bản. Mỗi
khái niệm cấp 2 là một đối tượng tính toán gồm các thành phần: (Name,
Constructs, Isa, Attrs, Constraints, F, Facts, Rules)
3
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng

Name: tên của khái niệm.
Constructs: các thuộc tính xác định khái niệm.
Isa: phân cấp của khái niệm.
Attrs: tập hợp các thuộc tính của khái niệm.
Constraints: tập hợp các điều kiện ràng buộc trên các thuộc tính.
F: tập hợp các quan hệ suy diễn tính toán.
Facts: tập hợp các tính chất hay các sự kiện vốn có của khái niệm
Rules: tập hợp các luật suy diễn trên các sự kiện liên quan đến các thuộc tính
cũng như liên quan đến bản thân khái niệm.
Ví dụ 1.1: Tri thức về tam giác gồm các yếu tố như : 3 cạnh a, b, c; 3 góc
tương ứng với 3 cạnh: A, B, C; 3 đường cao tương ứng: ha, hb, hc; diện tích S của
tam giác; nửa chu vi p của tam giác; bán kính đường tròn ngoại tiếp R của tam giác,
v.v . cùng với các công thức liên hệ giữa chúng như định lý góc trong tam giác, định
lý sin, định lý cosin, các công thức tính diện tích. Ta có một đối tượng tam giác biểu
diễn theo mô hình trên như sau:
Name: TAMGIAC
Construct: A, B, C
Isa: {}
Attrs: {GocA, GocB, GocC, a, b, c, ha, hb, hc, ma,
mb,mc, pa, pb, pc, S, p, r, R, ra, rb, rc}
Constraints: {a>0, b>0, c>0, ha>0, hb>0, hc>0, s.0, p>0,
R>0, }
F: {GocA + GocB + GocC = Pi,
a*sin(GocB)=b*sin(GocA),a^2 = b^2 + c^2 – *b*c*cos(GocA),…}
Facts: {}
Rules: {{GocA = GocB} => {a = b}, {a = b} => {GocA=GocB},
{a^2 = b^2 + c^2} => {GocA =pi/2},
{GocA = pi/2} =>{a^2 = b^2 + c^2, b c}, …}⊥
Ví dụ 1.2: Tri thức cho đối tượng hệ phương trình tuyến tính gồm các yếu tố:
ma trận hệ số A, ma trận cột cho hệ số tự do B, ma trận cột các biến X; cùng với

công thức liên hệ giữa chúng AX=B. Đối tượng hệ phương trình tuyến tính được
biểu diễn qua các tập hợp như sau:
Name: HE_PTTT
Construct: { A, X, B }
Isa: {}
Attrs: {}
F: {AX=B}
Facts: {}
Rules: {}
Sự kiện là phát biểu được mô tả bằng các biểu thức, đẳng thức, quan hệ giữa
các đối tượng, thuộc tính, hoặc các hàm mà có thể cho giá trị đúng hoặc sai. Sự kiện
còn mô tả thông tin về đối tượng. Có 11 loại sự kiện sau:
1. Sự kiện thông tin về loại đối tượng.
Ví dụ: A là một ma trận vuông.
4
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng
2. Sự kiện về tính xác định của đối tượng hay thuộc tính, được biểu diễn bởi
tên của đối tượng hay tên của thuộc tính.
Ví dụ: Phần tử dòng i cột j của ma trận A.
3. Sự kiện về sự xác định của đối tượng hay thuộc tính thông qua một biểu
thức hằng.
Ví dụ: Phần tử tại dòng i cột j trong ma trận A là 1.
4. Sự kiện về sự bằng nhau của hai đối tượng hay hai thuộc tính.
Ví dụ: Ma trận A = ma trận B.
5. Sự kiện về sự phụ thuộc của đối tượng vào các đối tượng khác thông qua
biểu thức tính toán.
Ví dụ: Phần tử dòng i cột j của ma trận C bằng tổng phần tử dòng i cột j của
ma trận A và phần tử dòng i cột j của ma trận B.
6. Sự kiện về quan hệ giữa các đối tượng hay thuộc tính các đối tượng. Ví
dụ: Ma trận A giao hoán với ma trận B.

7. Sự kiện về biểu thức hàm cơ bản.
Ví dụ: Hàm cho biết tính khả nghịch của ma trận A.
8. Sự kiện về sự bằng nhau của một biểu thức hàm cơ bản với một giá trị
hoặc biểu thức hằng.
Ví dụ: Định thức của ma trận A là 0.
9. Sự kiện về sự bằng nhau giữa một đối tượng với một biểu thức hàm cơ
bản.
Ví dụ: Ma trận B là ma trận nghịch đảo của A.
10. Sự kiện về sự bằng nhau của một biểu thức hàm với một biểu thức hàm
khác.
Ví dụ: Hạng của ma trận A bằng hạng của ma trận B cộng 1.
11. Sự kiện về sự phụ thuộc của một biểu thức hàm cơ bản vào các biểu thức
hàm cơ bản hoặc đối tượng khác thông qua phương trình.
Ví dụ: Hạng của ma trận A bằng hạng của ma trận B + 1.
1.2.2 Tập các quan hệ phân cấp H:
Trên tập C ta có một quan hệ phân cấp, theo đó, một số khái niệm là sự đặc
biệt hóa của các khái niệm khác. Ví dụ tam giác cân cũng là một tam giác. Nếu xem
quan hệ phân cấp này là quan hệ có thứ tự trên C thì H chính là một biểu đồ Hasse.
5
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng
Hình 1.1 Biểu đồ Hasse thể hiện phân cấp của các khái niệm tam giác
1.2.3 Tập các quan hệ giữa các loại khái niệm R:
Mỗi quan hệ được xác định bởi: (Name, Args, Facts)
Name: tên của quan hệ.
Args: các đối tượng (thuộc kiểu khái niệm) của quan hệ.
Facts: các sự kiện định nghĩa quan hệ.
Quan hệ có các tính chất: phản xạ, đối xứng, phản xứng và bắc cầu.
Ví dụ 1.3: Quan hệ vuông góc giữa 2 đường thẳng được mô tả như sau:
Name: VUONG
Args: a, b: DUONGTHANG

Facts: A và B là 2 điểm;A thuộc a và A không thuộc b;
B thuộc b và B không thuộc a; Góc tạo bởi A, B và giao điểm của a, b là góc
vuông.
1.2.4 Tập các hàm Funcs:
Hàm thể hiện các quy tắc tính toán trên các loại khái niệm. Có hai loại:
- Hàm cơ bản: các hàm trên số tự nhiên, số nguyên, số hữu tỉ, số thực, số
phức.
- Hàm cấp n (n>0): được mô tả bằng tập các sự kiện và trong cấu trúc mô
tả
gồm có khái niệm, quan hệ, hàm, toán tử. Trong cấu trúc mô tả phải xuất hiện ít
nhất các khái niệm, quan hệ, hàm, toán tử có cấp n.
Mỗi hàm gồm các thành phần:(Name, Args, Return, Facts)
Name: tên hàm
Args: đối số của hàm là các đối tượng thuộc kiểu khái niệm
Return: khái niệm trả về của hàm
Facts: tập các sự kiện định nghĩa hàm
Ví dụ 1.4: Hàm xác định giao điểm của 2 đường thẳng:
Name: GIAODIEM
Args: a, b: DUONGTHANG
Return: X: DIEM
Facts: x thuộc a và x thuộc b
1.2.5 Tập các toán tử Ops:
Gồm các phép toán trên các biến thuộc các loại khái niệm. Có 2 loại:
6
TAM_GIAC_VUONG_CAN TAM_GIAC_DEU
TAM_GIAC_VUONG TAM_GIAC_CAN
TAM_GIAC
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng
- Toán tử nền: các phép toán trên các kiểu boolean, số tự nhiên, số nguyên,
số

hữu tỉ, số thực, tập hợp, danh sách.
- Toán tử cấp n: các phép toán số học và tính toán trên các đối tượng, các
thuộc tính của đối tượng tương tự như với các biến thực.
Một toán tử gồm thành phần: (Name, Args, Return, Facts)
Name: tên toán tử.
Args: danh sách các toán hạng.
Return: kiểu trả về của toán tử.
Facts: các sự kiện định nghĩa toán tử.
Ví dụ 1.5: Phép toán trừ hai góc được mô tả như sau:
Name: “–”
Agrs: g1, g2: GOC
Return: x: real
Facts: x = op1.sd – op2.sd
1.2.6 Tập các luật Rules:
Các luật thể hiện tri thức. Mỗi luật cho ta một quy tắc suy luận để đi đến các
sự kiện mới (kết luận) từ sự kiện nào đó (giả thiết) dưới dạng các luật dẫn. Mỗi luật
gồm các thành phần: (Name, Kind, Vars, Hypothesis, Goal)
Name: tên của luật
Kind: chuỗi mô tả loại luật
Vars: các đối tượng thuộc kiểu khái niệm
Hypothesis: tập các sự kiện giả thiết của luật
Goal: tập các sự kiện kết luận của luật
Ví dụ 1.6: Luật hai tam giác bằng nhau:
Kind: “TAMGIAC = TAMGIAC”
Name: “”
Vars: tg1, tg2: TAMGIAC
Hypothesis: 3 cạnh của tg1 bằng với 3 cạnh tương ứng của tg2
Goal: tg1 = tg2
7
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng

Chương 2. NGÔN NGỮ ĐẶT TẢ ONTOLOGY COKB
Ngôn ngữ Ontology COKB (COKB Ontology Language), viết tắt là COL là
ký pháp đặc tả cho Ontology COKB được mô tả theo ký pháp EBNF. COL bao gồm
các thành phần chính của một ngôn ngữ như tập ký tự, từ vựng, các kiểu dữ liệu, cú
pháp ngôn ngữ và cú pháp mô tả các thành phần trong mô hình COKB.
2.1 Các quy ước mô tả cú pháp:
X::=Y cú pháp của X (non-terminal) được định nghĩa bởi Y
X | Y X hoặc Y
[X] phần tùy chọn, 0 hoặc 1 X
X* 0 hoặc nhiều X
X+ 1 hoặc nhiều X
<X> nhóm các phần để mô tả phạm vi của phép toán
CHỮ IN ĐẬM từ khóa của ngôn ngữ (terminal)
/* */ ghi chú
chữ thường non-terminal
2.2 Các thành phần của COL
2.2.1 Tập ký tự (Character set):
Tập ký tự gồm các ký tự chữ, ký tự số và một số ký tự đặc biệt.
 Ký tự chữ:
lower-letter ::= a | b | c | d | e | f | g | h | i | j |
k | l | m | n | o | p | q | r | s | t |
u | v | w | x | y | z
upper-letter ::= A | B | C | D | E | F | G | H | I | J |
K | L | M | N | O | P | Q | R | S | T |
U | V | W | X | Y | Z
letter ::= lower-letter | upper-letter
 Ký tự số
digit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
 Một số ký tự đặc biệt
special-characters ::= ; | : | + | – | * | / | ^ | ! | = | < |

> | @ | . | , | ( | ) | [ | ] | { | } |
‘ | ’ | “ | & | _ | % | \ | # | ? | space
2.2.2 Từ vựng (Tokens):
Từ vựng gồm các từ khóa, tên, các phép toán, các chuỗi và các con số.
 Từ khóa (keyword):
ARGUMENT ENDCR FUNCTION MFEXP
ARRAY ENDFOR GOAL NATURAL
8
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng
ATTRIBUTE ENDFUNCTION GOAL OPERATOR
BOOLEAN ENDHIERARCHY HIERARCHY RATIONAL
COBJECT ENDIF HYPOTHESIS REAL
CONSTANT ENDOPERATOR HYPOTHESIS RELATION
CONSTRAINT ENDRELATION IF RETURN
COS ENDRULE IMPLIES RULE
COTG EQUIVALENT INTEGER SET
CR EXIST ISA SIN
CRELATION EXP KINDRULE TAN
DEFINE FACT LIST THEN
ELSE FOR LN VARIABLE
ENDCOJBECT FORALL MF
 Tên (name):
Tên là một chuỗi gồm một hoặc nhiều ký tự. Tên dùng để chỉ một loại khái
niệm (lớp, đối tượng, quan hệ, thuộc tính…). Các tên không được trùng nhau. Có
hai loại tên: name (symbols) và indexed names.
Dạng tên đơn giản nhất là một chuỗi ký tự, số và dấu gạch dưới.
name ::= letter<letter>*<digit>*<under-score>*
under-score ::= _
index-name ::= name [ sequence ]
Ví dụ:

my_name_1
A[1, 2]
MA_TRAN, CHUYEN_VI, MA_TRAN_KHA_NGHICH
Ngoài ra còn có các tên được định nghĩa trước, gọi là hằng (constant).
Constant ::= TRUE | FALSE | PI | NULL
TRUE ::= 1
FALSE ::= 0
PI ::= 3.1416…
 NULL ::= <giá trị rỗng>Phép toán
add-operator ::= + | –
mul-operator ::= * | /
arith-operator ::= add-operator | mul-operator | ^
assign-operator ::= :=
range-operator ::=
rel-operator ::= < | <= | > | >= | <> | =
set-operator ::= UNION | MINUS | INTERSECT | SUBSET
logical-operator ::= NOT | AND | OR | XOR | IMPLIES
 Chuỗi (string)
Chuỗi gồm dãy các ký tự đặt giữa hai dấu nháy kép “ ”.
string ::= “<letter>*”
9
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng
 Số
number ::= integer | real
integer ::= digit-sequence
real ::= digit-sequence.digit-sequence
digit-sequence ::= digit<digit>*
2.2.3 Kiểu dữ liệu nền:
Ngoài các C-Object, COL còn sử dụng các dữ liệu kiểu cơ bản và kiểu có
cấu trúc, tương tự các kiểu dữ liệu của Maple.

Type ::= basic-type|structured-type| cobject-type
 Kiểu cơ bản:
base-type ::= NATURAL|INTEGER|REAL|BOOLEAN|RATIONAL | STRING
 Kiểu dữ liệu có cấu trúc:
structured-type ::= sequence | list | set | array
 Chuỗi (sequence): gồm các biểu thức phân cách bởi dấu phẩy (,). Đây là
thành phần cơ bản tạo nên kiểu tập hợp, danh sách và lời gọi hàm.
sequence ::= expression <, expression>*
Ví dụ:
1, 2, “hi world”, abc, Pi, 2
 Danh sách (list): là chuỗi biểu thức có thứ tự, được đặt giữa 2 dấu ngoặc
vuông []. Các phần tử của danh sách có thể là một danh sách khác.
list ::= list | [ expression <, expression>* ]
Ví dụ:
[1, 2, “hi world”, abc, Pi, 2]
[[1, 2, 3], [4, 5, 6]]
Lưu ý: danh sách rỗng được biểu diễn là [].
 Tập hợp (set): biểu diễn tập hợp trong toán học, gồm một chuỗi biểu thức đặt
giữa hai dấu ngoặc nhọn {}. Không quan tâm đến thứ tự các phần tử và không
có phần tử trùng lắp.
set ::= { expression <, expression>* }
Ví dụ:
{1, 2, “hi world”, abc, Pi}
Lưu ý: tập rỗng được biểu diễn là {}.
 Mảng (array): là mở rộng của danh sách, dùng để biểu diễn chuỗi dữ liệu
theo một hoặc nhiều chiều.
Array ::= ARRAY ( range <, range>* <, list>* )
Range ::= integer range-operator integer
Ví dụ:
10

Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng
ARRAY(1 5)
ARRAY(1 3, 1 4)
ARRAY(1 3, [1, 4, 5])
2.2.4 Câu (Statement):
Gồm các loại câu sau:
- Biểu thức
- Khai báo biến
- Câu lệnh điều kiện
- Câu lệnh điều khiển
- Câu lệnh trả về giá trị trong hàm (return)
2.3 Cú pháp và ngữ nghĩa
Phần này sẽ mô tả cách định nghĩa các thành phần của COKB-Ontology (C,
H, R, F, O, Rules) theo ký pháp EBNF.
2.3.1 Biểu thức (expression):
Trong mô hình tri thức các đối tượng tính toán COKB, biểu thức là thành
phần quan trọng nhất. Biểu thức thường xuất hiện trong các luật, các ràng buộc và
sự kiện. Có các dạng biểu thức sau: biểu thức quan hệ, biểu thức logic, biểu thức
toán học. Trong biểu thức có thể chứa các hàm cơ bản (như sin, cos…), hàm được
định nghĩa (hàm cấp n).
expr ::= expr | rel-expr logic-expr
• Biểu thức tính toán (computation expression)
expr ::= expr add-operator term| term
term ::= term mul-operator factor | factor
factor ::= – factor | element ^ factor | element
element ::= ( expr ) | name | number | function-call
• Biểu thức logic
Biểu thức logic được tạo bởi các phép toán quan hệ, phép toán logic và các
lượng từ. Biểu thức boolean có giá trị là hằng true hoặc false.
rel-expr ::= expr rel-operator expr

logic-expr ::= logic-expr OR logic-term |
logic-expr IMPLIES logic-term |
NOT logic-term |
logic-term |
logic-term ::= logic-term AND logic-primary |
logic-primary |
logic-primary ::= expr | rel-expr | function-call |
quantify-expr | TRUE | FALSE
quantify-expr ::= FORALL(name <, name>*), logic-expr |
EXISTS(name), logic-expr
11
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng
2.3.2 Định nghĩa C-Object:
Khái niệm C-Object được định nghĩa bằng từ khóa COBJECT. Mỗi khái niệm
có một tên duy nhất, tên này được dùng như là một định danh của khái niệm. Khi
định nghĩa một khái niệm C-Object mới, có thể định nghĩa phân cấp của khái niệm
đó (qua từ khóa ISA).
cobject-type ::= COBJECT name;
[description]
[isa]
[hasa]
[constructs]
[attributes]
[constraints]
[crelations]
[facts]
[rules]
ENDCOBJECT;
• Mô tả khái niệm:
description ::= DESCRIPTION: string;

• Thuộc tính:
Hầu hết khái niệm đều có thuộc tính. Các giá trị của thuộc tính có kiểu cơ
bản (số nguyên, số thực…) hoặc kiểu đối tượng C-Object. Khai báo thuộc tính của
khái niệm bắt đầu bằng từ khóa ATTRIBUTE và nằm trong phần định nghĩa khái
niệm.
attributes ::= ATTRIBUTE: attribute-def+
attribute-def ::= name <, name >*: type;
• Thuộc tính thiết lập:
Thuộc tính thiết lập được khai báo tương tự như khai báo thuộc tính nhưng
được đặt sau từ khóa CONSTRUCT.
constructs ::= CONSTRUCT: construct-def+
construct-def ::= name <, name >*: type;
• Ràng buộc:
Các điều kiện ràng buộc liên quan đến thuộc tính được thể hiện qua các biểu
thức logic. Cú pháp biểu thức logic được định nghĩa bên dưới.
constraints ::= CONSTRAINT: condition+
condition ::= logic-expr;
Ví dụ: định nghĩa khái niệm ma trận.
COBJECT MATRAN
DESCRIPTION:
“Ma tran tren truong K la bang chu nhat gom m x n phan tu
trong K duoc viet thanh m dong va n cot.";
ISA:
HASA:
CONSTRUCT:
ATTRIBUTE:
12
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng
m, n: INTEGER;
a: ARRAY(1 m, 1 n, []);

CONSTRAINT:
m > 0;
n > 0;

ENDCOBJECT
• Khai báo đối tượng là một C-Object:
Mỗi thể hiện của một khái niệm C-Object được khai báo như sau:
object-def ::= name <, name>* : cobject-type;
Ví dụ: khai báo đối tượng là một ma trận.
A: MATRAN;
• Truy xuất đến một thuộc tính của đối tượng:
Để truy xuất đến một thuộc tính của đối tượng thuộc một kiểu khái niệm, ta
sử dụng ký pháp dấu chấm . như sau:
attribute ::= name.name
Ví dụ: truy xuất đến thuộc tính số dòng m của ma trận A: A.m
• Biến:
Biến có kiểu cơ bản hoặc kiểu khái niệm, được khai báo trong các luật, hàm.
variables ::= VARIABLE: variables-def+
variable-def ::= name <, name >*: type;
• Hằng:
constants ::= CONSTANT: constant-def+
constant-def ::= name: type;
Ví dụ khai báo hằng số PI:
CONSTANT:
PI: 3.14;
• Quan hệ suy diễn – tính toán:
crelations ::= CRELATION:
crelation-def+
ENDCRELATION;
crelation-def ::= CR name;

MF: name <, name>*;
MFEXP: equation;
ENDCR;
equation ::= expr = expr
Ví dụ khai báo các quan hệ suy diễn tính toán trong khái niệm tam giác của
hình học phẳng:
CRELATION:
CR r1;
MF: GocA, GocB, GocC;
13
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng
MFEXP: GocA + GocB + GocC = Pi;
ENDCR;
CR r2;
MF: a, b, c, GocA;
MFEXP: a^2 = b^2 + c^2 - 2*b*c*cos(GocA);
ENDCR;
ENDCRELATION;
2.3.3 Các phân cấp:
Quan hệ phân cấp giữa các C-Object được thể hiện qua từ khóa ISA và
HASA. Các sự kiện (cú pháp khai báo sự kiện được định nghĩa bên dưới).
isa ::= ISA: name <, name>*;
hasa ::= HASA:
[fact-def]
Các quan hệ phân cấp cũng có thể được mô tả riêng theo cú pháp sau:
hierarchy-def ::= name ISA name;
Ví dụ: phân cấp các khái niệm MATRAN trong đại số tuyến tính
MATRAN_VUONG ISA MATRAN;
MATRAN_TAM_GIAC_TREN ISA MATRAN_VUONG;
2.3.4 Sự kiện:

Sự kiện được mô tả bằng các biểu thức, đẳng thức, mối quan hệ giữa các đối
tượng, thuộc tính, hoặc các hàm. Sự kiện còn mô tả thông tin về đối tượng (đối
tượng thuộc khái niệm nào và các thuộc tính tạo nên đối tượng). Nếu tập các sự
kiện được khai báo bên trong phần định nghĩa khái niệm thì đặt sau từ khóa FACT.
facts ::= FACT: fact-def+
fact-def ::= object-type |
attribute |
name |
equation |
relation |
expression
object-type ::= cobject-type (name) |
cobject-type (name <, name>* )
relation ::= relation ( name <, name>+ )
Ví dụ: Sự kiện thông tin về loại đối tượng:
MATRAN(A) : A là một ma trận
Xác định đối tượng/thuộc tính thông qua tên của đối tượng/thuộc tính:
A : ma trận A
A.r[i] : dòng i của ma trận A
Xác định đối tượng/thuộc tính thông qua biểu thức hằng:
A.a[i,j] = 1 : phần tử tại dòng i cột j trong ma trận A là 1
Hai đối tượng/thuộc tính bằng nhau:
A = B: ma trận A = ma trận B
A.m = B.m : số dòng của hai ma trận bằng nhau
Biểu thức đối tượng/thuộc tính thể hiện sự phụ thuộc của đối tượng/thuộc
tính vào đối tượng/thuộc tính khác:
C.a[i, j] = A.a[i, j] + B.a[i, j]
14
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng
Sự kiện về quan hệ giữa các đối tượng/thuộc tính:

BANG(A, B) : ma trận A = ma trận B
2.3.5 Quan hệ:
Quan hệ giữa các đối tượng và thuộc tính được mô tả bằng các sự kiện.
relation-def ::= RELATION name;
ARGUMENT: argument-def+
[facts]
ENDRELATION;
argument-def ::= name <, name>*: type;
Ví dụ quan hệ bằng nhau giữa hai ma trận A và B.
RELATION BANG;
ARGUMENT:
A, B: MATRAN;
FACT:
A.m = B.m;
A.n = B.n;
FORALL(i, j), A.a[i,j] = B.a[i, j];
ENDRELATION;
2.3.6 Hàm:
Mỗi hàm có một tên và một chuỗi các đối số. Hàm thực hiện các tính toán
trên các loại khái niệm (đối tượng, thuộc tính, quan hệ…) và trả về giá trị. Có 2 loại
hàm: hàm cơ bản và hàm được định nghĩa.
function ::= basic-funcion | function-def
• Hàm cơ bản:
build-in-func ::= SIN | COS | TAN | COTG | LN | EXP | SUM
• Hàm được định nghĩa:
Có thể định nghĩa hàm theo hai cách:
- + Mô tả dưới dạng các sự kiện
- + Mô tả dưới dạng một thủ tục (gồm nhiều phát biểu)
Trong định nghĩa hàm có thể mô tả ràng buộc giữa các đối số nếu có.
• Dạng 1:

function-def ::= FUNCTION name;
ARGUMENT: argument-def+
RETURN: return-def;
[constraint]
[facts]
ENDFUNCTION;
return-def ::= name: type;
15
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng
• Dạng 2:
function-def ::= FUNCTION name;
ARGUMENT: argument-def+
RETURN: return-def;
[constraint]
[variables]
[statements]
ENDFUNCTION;
statements ::= statement-def+
statement-def ::= assign-stmt | if-stmt | for-stmt
asign-stmt ::= name := expr;
if-stmt ::= IF logic-expr THEN statements+
ENDIF; |
IF logic-expr THEN statements+
ELSE statements+
ENDIF;
for-stmt ::= FOR name IN [range] DO
statements+
ENDFOR;
2.3.7 Phép toán:
Phép toán được định nghĩa qua từ khóa OPERATOR. Có 2 loại phép toán:

phép toán một ngôi và hai ngôi, được phân biệt qua số lượng đối số (argument).
operator-def ::= OPERATOR name;
ARGUMENT: argument-def+
RETURN: return-def;
[constraint]
[statements]
ENDOPERATOR
Ví dụ phép toán cộng hai ma trận.
OPERATOR "+";
ARGUMENT:
A, B: MATRAN;
RETURN:
C: MATRAN;
CONSTRAINT:
A.m = B.m;
A.n = B.n;
DEFINE:
FORALL(i, j), C.a[i, j] := A.a[i, j] + B.a[i, j];
ENDOPERATOR;
16
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng
2.3.8 Luật:
Các luật có thể được khai báo bên trong phần định nghĩa COBJECT hoặc
trong một tập luật riêng. Nếu khai báo bên trong định nghĩa COBJECT thì đặt sau
từ khóa RULE:
Cú pháp khai báo luật như sau:
rules ::= RULE: rule-def+
rule-def ::= RULE name;
KINDRULE: name;
[varialbes]

HYPOTHESIS: fact-def+
GOAL: fact-def+
ENDRULE
Ví dụ khai báo các luật trong khái niệm tam giác của hình học phẳng:
RULE R1;
KINDRULE: “”;
HYPOTHESIS:
GocA = GocB;
GOAL:
a = b;
ENDRULE;
Ví dụ cho hai ma trận A và B. Nếu ma trận chuyển vị của A = ma trận
chuyển vị của B thì A = B.
RULE R1;
KINDRULE: TINH_CHAT;
VARIABLE:
A, B: MATRAN;
HYPOTHESIS:
BANG(CHUYEN_VI(A), CHUYEN_VI(B));
GOAL:
BANG(A, B);
ENDRULE;
2.4 Tổ chức cơ sở tri thức theo COL
Cơ sở tri thức K gồm các thành phần (C, H, R, Func, Ops, Rules) được lưu
trữ trong một folder với cấu trúc sau:
 K
 K_cobject.col
 K_hierarchy.col
 K_relation.col
 K_function.col

 K_operator.col
 K_rule.col
17
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng
File K _x.col là file dạng text, lưu trữ tập các khái niệm thuộc thành phần x
(C, H, R, Func, Ops, Rules) và được mô tả theo ngôn ngữ COL.
Ví dụ cơ sở tri thức đại số tuyến tính được lưu trữ như sau:
 LinearAlgebra
 LinearAlgebra_cobject.col
 LinearAlgebra_hierarchy.col
 LinearAlgebra_relation.col
 LinearAlgebra_function.col
 LinearAlgebra_operator.col
 LinearAlgebra_rule.col
File K _x.col là file dạng text, lưu trữ tập các khái niệm thuộc thành phần x
(C, H, R, Func, Ops, Rules) và được mô tả theo ngôn ngữ COL.
Ví dụ cơ sở tri thức đại số tuyến tính được lưu trữ như sau:
 LinearAlgebra
 LinearAlgebra_cobject.col
 LinearAlgebra_hierarchy.col
 LinearAlgebra_relation.col
 LinearAlgebra_function.col
 LinearAlgebra_operator.col
 LinearAlgebra_rule.col
Các cấu trúc các tập tin lưu trữ CSTT như sau:
1) Cấu trúc file LinearAlgebra_cobject.col:
COBJECT MATRAN;
DESCRIPTION:
"Ma tran tren truong K la bang chu nhat gom m x n phan tu
trong K duoc viet thanh m dong va n cot.";

ISA:
CONSTRUCT:
ATTRIBUTE:
m, n: INTEGER;
a: ARRAY(1 m, 1 n, []);
CONSTRAINT:
m > 0;
n > 0;
CREALATION:
FACT:
RULE:
ENDCOBJECT;
COBJECT MATRAN;

18
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng
ENDCOBJECT;
2) Cấu trúc file LinearAlgebra_hierarchy.col:
MATRAN_DONG ISA MATRAN;
MATRAN_COT ISA MATRAN;

3) Cấu trúc file LinearAlgebra_relation.col:
RELATION BANG;
ARGUMENT:
A, B: MATRAN;
FACT:
A.m = B.m;
A.n = B.n;
FORALL(i, j), A.a[i, j] = B.a[i, j];
ENDRELATION;

RELATION TUONG_DUONG_DONG;

ENDRELATION;
4) Cấu trúc file LinearAlgebra_function.col:
FUNCTION LUY_THUA;
ARGUMENT:
A: MATRAN_VUONG;
k: INTEGER;
RETURN:
B: MATRAN_VUONG;
CONSTRAINT:
k > 0;
DEFINE:
B := A;
FOR i IN [2 k] DO
B := B * A;
ENDFOR
ENDFUNTION;
FUNCTION BIEN_DOI_SO_CAP_1;

ENDFUNCTION;
5) Cấu trúc file LinearAlgebra_operator.col:
OPERATOR "+";
ARGUMENT:
A, B: MATRAN;
RETURN:
C: MATRAN;
CONSTRAINT:
A.m = B.m;
A.n = B.n;

DEFINE:
C.m := A.m;
C.n := A.n;
FOR i IN [1 A.m] DO
FOR j IN [1 A.n] DO
C.a[i, j] := A.a[i, j] + B.a[i, j];
ENDFOR;
ENDFOR;
19
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng
ENDOPERATOR;
OPERATOR "-";

ENDOPERATOR;
6) Cấu trúc file LinearAlgebra_rule.col:
RULE RULE1;
KINDRULE:
KHAI_NIEM;
VARIABLE:
A: MATRAN;
HYPOTHESIS:
FORALL (i, j), A.a[i, j] = 0;
GOAL:
MATRAN_KHONG(A);
ENDRULE;
RULE RULE2;

ENDRULE;
20
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng

Chương 3. NGÔN NGỮ TRUY VẤN ONTOLOGY COKB
3.1 Định nghĩa:
COQL (COKB Ontology Query Language) là ngôn ngữ truy vấn Ontology
được thiết kế để truy vấn các cơ sở tri thức theo mô hình COKB. COQL là ngôn
ngữ truy vấn dễ sử dụng, được miêu tả theo ký pháp EBNF.
COQL hướng đến các tiêu chí sau:
- Cấu trúc truy vấn đơn giản, dễ hiểu, dễ dùng: câu truy vấn là để người
dùng sử dụng nên càng dễ hiểu, dễ dùng càng tốt.
- Cú pháp mềm dẻo, linh hoạt để đáp ứng được nhiều dạng câu hỏi.
- Tương thích tốt với nhiều lĩnh vực tri thức.
- Truy vấn thông tin nhanh.
3.2 Quy ước về cú pháp câu truy vấn:
- Nhằm phân biệt với các từ khóa của COL, từ khóa ngôn ngữ truy vấn
COQL bắt đầu bằng dấu chấm hỏi (?) và kết thúc bằng dấu chấm phẩy
(;).
- Ngay sau ? là từ khóa, không có khoảng trắng.
- Khai báo kiểu dữ liệu sau từ khóa WHERE và trước WITH, khai báo
từng đối tượng phân cách với nhau bởi dấu phẩy và một khoảng trắng;
không có khoảng trắng sau dấu hai chấm trong khi khai báo đối số.
Ví dụ 3.1: ?WHAT GOAL RELATED NGHICH_DAO(A*B) WHERE
A:MA_TRAN_VUONG, B:MA_TRAN_VUONG WITH
{KHA_NGHICH(A),
KHA_NGHICH(B)};
-
- Viết chỉ số không có khoảng trắng.
Ví dụ 3.2: A[2,3]
-
- Có khoảng trắng giữa các đối số và phép toán, quan hệ.
Ví dụ 3.3: A = B, A GIAO_HOAN B.
-

- Viết chỉ số không có khoảng trắng.
Ví dụ 3.2: A[2,3]
-
- Có khoảng trắng giữa các đối số và phép toán, quan hệ.
Ví dụ 3.3: A = B, A GIAO_HOAN B.
3.3 Từ khóa truy vấn:
Dạng 1
IS, WHERE, WITH
Dạng 2
CONCEPTS, COBJECTS, HIERARCHIES, RELATIONS,
FUNCTIONS, OPERATORS, RULES, KINDRULES
WHAT CONCEPT, WHAT RELATION, WHAT OPERATOR,
WHAT ATTRIBUTE, WHAT CONSTRAINT, WHAT
21
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng
CRELATION, WHAT
HIERARCHY, WHAT FUNCTION, WHAT RULE, RELATED.
WHAT PROPERTY, WHAT PROPERTY RELATION, WHAT
PROPERTY OPERATOR.
WHAT HYPOTHESIS, WHAT GOAL
3.4 Cú pháp
3.4.1 Truy vấn tính đúng sai của phát biểu:
Dạng câu hỏi này nhằm xác định tính đúng hoặc sai của một phát biểu.
Chẳng hạn như: ma trận A có phải là ma trận khả nghịch không? Cho biết ma trận
A và ma trận B, hỏi ma trận A có bằng ma trận B không? Phát biểu trong câu truy
vấn là một sự kiện hay một biểu thức.
Cú pháp:
truefalse-qry ::= ?IS <bieu_thuc_kiem_tra> WHERE
<khai_bao_kieu_doi_tuong> WITH
{<bieu_thuc_dieu_kien>};

trong đó:
+ bieu_thuc_kiem_tra: là sự kiện hay biểu thức cần kiểm tra đúng sai.
+khai_bao_kieu_doi_tuong: khai báo kiểu các đối tượng của câu.
+ bieu_thuc_dieu_kien: là các đối tượng, sự kiện hay điều kiện cho trước
để kiểm tra bieu_thuc_kiem_tra.
Nếu bieu_thuc_kiem_tra hay bieu_thuc_dieu_kien có chứa các phép toán logic
thì sẽ được biểu diễn: <logical-operator>(x1,x2,…, xn). Chẳng hạn: AND(x1, x2,
…, xn)
+ bieu_thuc_kiem_tra, bieu_thuc_dieu_kien được định nghĩa:
bieu_thuc_kiem_tra ::= dieu_kien
bieu_thuc_dieu_kien ::= dieu_kien
dieu_kien ::= qfact | qrel-expr | qlogic-expr
qfact ::= object-type |relation |function-call
object-type ::= cobject-type|cobject-type (name <,name>*)
relation ::= name rel-name name
function-call ::= function (sequence)
qrel-expr ::= rel-expr
qlogic-expr ::= logic-expr
- Câu truy vấn trả về kết quả TRUE hoặc FALSE sau khi kiểm tra
bieu_thuc_kiem_tra với những điều kiện được cho sau từ khóa WHERE
và WITH.
Ví dụ 3.4:
Cho ma trận A[2,2] có giá trị A.a[1,1]=2, A.a[1,2]=-1, A.a[2,1]=0,
A.a[2,2]=-2. Hãy cho biết ma trận A[2,2] có phải là ma trận đường chéo không?
?IS MA_TRAN_DUONG_CHEO(A) WHERE A:MA_TRAN_VUONG WITH
22
Khóa luận môn học: Biểu diễn Tri thức và Ứng dụng
{A.a[1,1]=2, A.a[1,2]=-1, A.a[2,1]=0, A.a[2,2]=-2};
Phân tích:
Trong câu trên, MA_TRAN_DUONG_CHEO(A) là bieu_thuc_kiem_tra (sự

kiện loại object-type) có nghĩa là ma trận A có phải là ma trận khả nghịch không
với những điều kiện cho trước trong bieu_thuc_dieu_kien được biểu diễn sau từ
khóa WITH gồm có {A.a[1,1]=2, A.a[1,2]=-1, A.a[2,1]=0, A.a[2,2]=-2}.
Ví dụ 3.5:
Với mọi ma trận vuông A, B, tích AB có bằng BA không ?
?IS A*B = B*A WHERE A:MA_TRAN_VUONG, B: MA_TRAN_VUONG
WITH {};
Phân tích:
Trường hợp này, bieu_thuc_kiem_tra là: A*B = B*A là quan hệ so sánh với
A và B là ma trận vuông là kiểu dữ liệu được đặt sau từ khóa WHERE, biểu thức
điều kiện là rỗng được biểu diễn sau từ khóa WITH là {}.
- Nếu bieu_thuc_ kiem_tra là một sự kiện qfact thì câu truy vấn có nghĩa
là: xác định xem sự kiện đó là đúng hay sai với các điều kiện cho trước
được mô tả trong bieu_thuc_dieu_kien.
Ví dụ 3.6:
Cho ma trận A[2,2] có giá trị A.a[1,1]=2, A.a[1,2]=-1, A.a[2,1]=0,
A.a[2,2]=-2. Hãy cho biết ma trận A có phải là ma trận lũy linh không?
?IS LUY_LINH(A) WHERE A:MA_TRAN_VUONG WITH
{A.a[1,1]=2, A.a[1,2]=-1, A.a[2,1]=0, A.a[2,2]=-2};
Phân tích:
LUY_LINH(A)là sự kiện cần kiểm tra (sự kiện loại function-call). Câu truy
vấn này có nghĩa là kiểm tra sự kiện ma trận A có phải là ma trận lũy linh không,
với những điều kiện được mô tả trong biểu thức điều kiện {A.a[1,1]=2, A.a[1,2]=-1,
A.a[2,1]=0, A.a[2,2]=-2}.
Ví dụ 3.7:
Nếu hai ma trận mở rộng của hai hệ PTTT AX=B, A.X=B. tương đương
nhau thì hai hệ đó có tương đương không ?
?IS he1 TUONG_DUONG he2 WHERE he1: HE_PTTT, he2:
HE_PTTT WITH { MA_TRAN_MO_RONG(he1) TUONG_DUONG
MA_TRAN_MO_RONG(he2)};

Phân tích:
Sự kiện cần kiểm tra he1 TUONG_DUONG he2 là sự kiện loại relation. Câu
truy vấn này nhằm kiểm tra xem hệ he1 có tương đương với hệ he2 hay không, với
điều kiện cho trước là ma trận mở rộng của hai hệ trên tương đương nhau
MA_TRAN_MO_RONG(he1) TUONG_DUONG
MA_TRAN_MO_RONG(he2).
- Nếu bieu_thuc_ kiem_tra có dạng qfact ::= function-call thì function đó
là các hàm trả về giá trị BOOLEAN.
Ví dụ 3.8:
23

×