Tải bản đầy đủ (.docx) (29 trang)

Tiểu luận môn biểu diễn tri thức và suy luận TÌM HIỂU NGÔN NGỮ ĐẶC TẢ 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 (368.79 KB, 29 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KHOA HỌC MÁY TÍNH
Bài thu hoạch môn học Biểu diễn tri thức và suy luận
Đề tài
TÌM HIỂU NGÔN NGỮ ĐẶC TẢ ONTOLOGY COKB
Giảng viên giảng dạy: PGS.TS. Đỗ Văn Nhơn
Họ tên học viên: Lê Hoàng Vân
Mã số học viên: CH1301071
Thành phố Hồ Chí Minh – 2014
MỤC LỤC
Bài thu hoạch môn BDTT&SL
LỜI NÓI ĐẦU
Hiện nay có nhiều mô hình và phương pháp biễu diễn tri thức cho các hệ thống cơ
sở tri thức khác nhau đã được đưa ra và có nhiều ứng dụng trong nhiều lĩnh vực khác
nhau. Trong đó, ontology là một phương pháp hiện đại đã và đang được phát triển do
khả năng ứng dụng của nó trong việc biểu diễn tri thức, đặc biệt là việc xây dựng các
hệ trí tuệ nhân tạo phân tán.
Một trong những ontology đã được hình thành và được xây dựng từ quá trình
nghiên cứu những phương pháp cho việc biểu diễn tri thức và thiết kế các hệ cơ sở tri
thức ứng dụng thực tế cũng như các hệ giải toán dựa trên tri thức là ontology COKB -
Computational Object Knowledge Base Ontology (gọi tắt là COKB-ONT). Nó bao
gồm mô hình, ngôn ngữ đặc tả, ngôn ngữ truy vấn và kỹ thuật xử lý hay suy diễn.
Trong bài tiểu luận này sẽ tìm hiểu về ngôn ngữ đặc tả Ontology COKB.
Lê Hoàng Vân – CH1301071 Trang 2
Ngôn ngữ đặc tả
COKB-ONT
Object-based system:
Thiết kế các thành phần của mô hình
Ontology COKB-ONT:
Tuân thủ các quy định


Các ngôn ngữ:
Maple, Descrip!on logic
Full Order Logic:
Ngữ nghĩa và suy luận
Bài thu hoạch môn BDTT&SL
1. Giới thiệu
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. Cấu
trúc được minh họa như sau:
2. Các quy ước mô tả cú pháp COL
X::=Y
cú pháp của X (non-keyword) đượ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ữ (keyword)
Lê Hoàng Vân – CH1301071 Trang 3
Bài thu hoạch môn BDTT&SL
/* */
ghi chú

chữ thường
non-keyword
3. Các thành phần của COL (elements language)
3.1. Tập ký tự (characters set)
Tập ký tự gồm các ký tự chữ, ký tự số và một số ký tự đặc biệt.
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
up
per-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
digit
::
=
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
sp
ecial-
characters
::
=
; | : | + | – | * | / | ^ | ! | = | < | > | @ | . | , | ( | ) | [ | ] | { | }

| ‘ | ’ | “ | & | _ | % | \ | # | ? | space
3.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ố.
3.2.1.
Từ khóa (keyword)
Từ khoá Ý nghĩa
COBJECT
Khai báo đối tượng.
ENDCOBJECT
Kết thúc khai báo đối tượng
ATTRIBUTE
Khai báo thuộc tính của đối tượng
ENDATTRIBUTE
Kết thúc khai báo thuộc tính
Lê Hoàng Vân – CH1301071 Trang 4
Bài thu hoạch môn BDTT&SL
HIERARCHY
Khai báo sự phân cấp
ENDHIERARCHY
Kết thúc khai báo phân cấp
ARGUMENT
Khai báo đối số
ENDARGUMENT
Kết thúc khai báo đối số
CONSTRAINT
Khai báo ràng buộc
ENDCONSTRAINT
Kết thúc khai báo ràng buộc
CONSTRUCT
Khai báo thuộc tính điều kiện

ENDCONSTRUCT
Kết thúc khai báo thuộc tính điều kiện
PROPERTY
Khai báo thuộc tính
ENDPROPERTY
Kết thúc khai báo thuộc tính
CRELATION
Khai báo quan hệ tính toán
ENDCRELATION
Kết thúc khai báo quan hệ tính toán
FACT
Khai báo sự kiện
ENDFACT
Kết thúc khai báo sự kiện
RULE
Khai báo một luật
ENDRULE
Kết thúc khai báo một luật
RULES
Khai báo luật
ENDRULES
Kết thúc khai báo luật
RELATION
Khai báo quan hệ.
ENDRELATION
Kết thúc khai báo quan hệ
OPERATOR
Khai báo toán tử.
ENDOPERATOR
Kết thúc khai báo toán tử

Lê Hoàng Vân – CH1301071 Trang 5
Bài thu hoạch môn BDTT&SL
FUNCTION
Khai báo hàm
ENDFUNCTION
Kết thúc khai báo hàm
PROC
Khai báo thủ tục tính toán.
ENDPROC
Kết thúc khai báo thủ tục tính toán
DEFINE
Định nghĩa
ENDDEFINE
Kết thúc khai báo định nghĩa
RETURN
Giá trị trả về của hàm
KINDRULE
Khai báo loại luật
NAMERULE
Tên luật
HYPOTHESIS
Giả thiết của luật
ENDHYPOTHESIS
Kết thúc khai báo giả thiết
GOAL
Kết luận của luật
ENDGOAL
Kết thúc khai báo luật
AND
Phép “and” trong logic

OR
Phép “or” trong logic
XOR
Phép “XOR” trong logic
NOT
Phép “not” trong logic
IMPLIES
Phép “suy ra” trong logic
EQUIVALENT
Phép “tương đương” trong logic
3.2.2.
Tên (name)
Lê Hoàng Vân – CH1301071 Trang 6
Bài thu hoạch môn BDTT&SL
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 (đối tượng, quan hệ, thuộc tính, toán tử, hàm, thủ tục, luật…). 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 ]
constant
::
=
TRUE | FALSE | PI | NULL
TRUE
::
=
1
FALSE
::
=
0
PI
::
=
3.1416…
NULL
::
=
<giá trị rỗng>
Ví dụ:
my_name_1
MA_TRAN, CHUYEN_VI, MA_TRAN_KHA_NGHICH A[1, 2]
3.2.3.
Phép toán
arith-operator
::
=
+ | – | * | /| ^ | ^-1 | ^T

assign-operator
::
=
:=
range-operator
::
=

rel-operator
::
=
< | <= | > | >= | <> | =
set-operator
::
=
UNION | MINUS | INTERSECT | SUBSET
Lê Hoàng Vân – CH1301071 Trang 7
Bài thu hoạch môn BDTT&SL
logical-operator
::
=
NOT | AND | OR | XOR | IMPLIES |
EQUIVALENT
3.2.4.
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>*”

3.2.5.
Số
number
::
=
integer | real
integer
::
=
digit-sequence
real
::
=
digit-sequence.digit-
sequence
digit-sequence
::
=
digit<digit>*
3.3. Kiểu dữ liệu
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.
3.3.1.
Kiểu cơ bản
base-
type
:
:
=
NATURAL | INTEGER | REAL |

BOOLEAN | RATIONAL |
STRING
Lê Hoàng Vân – CH1301071 Trang 8
Bài thu hoạch môn BDTT&SL
3.3.2.
Kiểu dữ liệu có cấu trúc
3.3.2.1.
Dãy (sequence)
Kiểu dãy 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 (function calls).
expr<, expr>*
Ví dụ:
1, 2, “hi world”, abc, Pi, 2
3.3.2.2.
Danh sách (list)
Danh sách là dãy 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 ::=
[ expr <, expr>* ]|[list <,list>*]
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à [].
3.3.2.3.
Tập hợp (set)
Kiểu tập hợp biểu diễn tập hợp trong toán học, gồm một dãy 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 ::=
{ expr <, expr>* }

Ví dụ:
{1, 2, “hi world”, abc, Pi}
Lưu ý: tập rỗng được biểu diễn là {}.
3.3.2.4.
Mảng (array)
Lê Hoàng Vân – CH1301071 Trang 9
Bài thu hoạch môn BDTT&SL
Mảng là mở rộng của danh sách, dùng để biểu diễn dãy dữ liệu theo một
hoặc nhiều chiều.
arra
y
::=
ARRAY (
range <, range>* <, list>*
)
rang
e
::=
INTEGER range-operator INTEGER
Ví dụ:
ARRAY(1 5)
ARRAY(1 3, 1 4)
ARRAY(1 3, [1, 4, 5])
3.3.3.
Kiểu đối tượng tính toán
cobject-type ::=
name
Ví dụ:
MA_TRAN
MA_TRAN_VUONG

4. Cú pháp và ngữ nghĩa
Phần này sẽ mô tả cú pháp định nghĩa các thành phần của COKB-ONT (C, H,
Relations, Funs, Ops, Rules) theo ký pháp EBNF.
4.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, sự kiện và
các câu truy vấn. Có các dạng biểu thức sau: biểu thức tính toán, biểu thức quan hệ, biểu
thức hàm cơ bản, biểu thức logic, biểu thức vị từ. 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).
Lê Hoàng Vân – CH1301071 Trang 10
Bài thu hoạch môn BDTT&SL
expr ::=
com-expr | logic-expr | rel-expr |func-expr | pre-expr
4.1.1.
Biểu thức tính toán (computation expression)
com-expr
::=
element arith-operator element
el
ement
::=
(
expr )|name|number|attribute
Ví dụ:
cho A, B, C: MA_TRAN_VUONG

expr1 = A + B
expr2 = expr1 * C
expr3 = expr2^2
4.1.2.

Biểu thức logic (logic expression)
Biểu thức logic được tạo bởi các phép toán logic, có giá trị là hằng
TRUE hoặc FALSE.
logic-expr
::=
logic- primary logic-operator logic-
primary
lo
gic-primary
::=
ex
pr | rel-expr | function-call | pre-expr
| TRUE | FALSE
4.1.3.
Biểu thức quan hệ (relation expression)
Biểu thức quan hệ được tạo bởi các phép toán quan hệ, có giá trị là hằng
TRUE hoặc FALSE.
rel-expr
::=
element rel-operator element
el
ement
::=
(
expr )|name|number|attribute
Ví dụ:
Lê Hoàng Vân – CH1301071 Trang 11
Bài thu hoạch môn BDTT&SL
AT = BT;
x < y;

p <> 0;
4.1.4.
Biểu thức hàm cơ bản (basic function expression)
Biểu thức hàm cơ bản được tạo bởi lời gọi hàm.
func-expr ::=
name (sequence)
Ví dụ:
HANG(A); KHA_NGHICH(A);
(A = B) AND KHA_NGHICH(A);
4.1.5.
Biểu thức vị từ (predicate expression)
Biểu thức vị từ được tạo bởi các lượng từ, cho phép ta lượng hóa đủ tổng
quát để diễn tả ngôn ngữ tự nhiên ở mức đơn giản.
pre-expr ::=
FORALL(name <, name>*), logic-expr |
EXISTS(name), logic-expr
Ví dụ:
EXISTS k, A^k = A
4.2. Câu lệnh (statement)
Gồm ba loại câu lệnh sau
statement
s
::=
if-stmt | for-stmt | return-stmt
4.2.1.
Câu lệnh điều kiện
if-stmt ::=
IF logic-expr THEN statements+ |expr
ENDIF; |
IF logic-expr THEN statements+ |expr

Lê Hoàng Vân – CH1301071 Trang 12
Bài thu hoạch môn BDTT&SL
ELSE statements+
ENDIF;
4.2.2.
Câu lệnh điều khiển
for-stmt ::=
FOR name IN [range] DO
Statements+ | expr
ENDFOR;
4.2.3.
Câu lệnh trả về giá trị trong hàm (return)
return-stmt
::=
RETURN:
name:cobject-type;
4.3. Định nghĩa C-Object
Khái niệm C-Object được định nghĩa trong cặp từ khóa COBJECT,
ENDCOBJECT. 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]

[attributes]
[constructs]
[constraints]
[crelations]
[facts]
[rules]
ENDCOBJECT
4.3.1.
Mô tả khái niệm
Lê Hoàng Vân – CH1301071 Trang 13
Bài thu hoạch môn BDTT&SL
description ::=
DESCRIPTION: string;
4.3.2.
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+
at
tribute-def
::=
name <, name >*: type;
4.3.3.

Thuộc tính thiết lập
Thuộc tính thiết lập là tính chất đặc trưng tạo nên một khái niệm
mới trên cơ sở kế thừa một khái niệm nào đó, được khai báo sau từ khóa
CONSTRUCT
.
constructs ::=
CONSTRUCT: construct-def+
construct-def ::= name <, name >*: type
4.3.4.
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 | rel-expr;
Lê Hoàng Vân – CH1301071 Trang 14
Bài thu hoạch môn BDTT&SL





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
:
CONSTRUCT
:
ENDCONSTRUCT
ATTRIBUTE
:
m, n: INTEGER;
a: ARRAY(1 m, 1 n);
ROW: ARRAY(1 m);
COL: ARRAY(1 n);
ENDATTRIBUTE

CONSTRAINT
:
m > 0;

n > 0;
ENDCONSTRAINT

ENDCOBJ
4.3.5.
Quan hệ tính toán
Các quan hệ tính toán thể hiện mối liên hệ giữa các thuộc tính của khái
niệm đang định nghĩa. Có thể đặt trong khai báo khái niệm COBJECT
hoặc định nghĩa thành một tập riêng. Nếu đặt trong COBJECT thì đặt sau từ
khóa CRELATION:
Cú pháp khai báo như sau:
Lê Hoàng Vân – CH1301071 Trang 15
Bài thu hoạch môn BDTT&SL
crelati
ons
:
:
=
CRELATION:
crelation-
def+
ENDCRELATION;
crelati
on-def
:
:
=
CR name;
MF: name
<, name>*;

MFEXP:
equation;
ENDCR;
equatio
n
:
:
=
ex
pr = 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;
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;
4.4. 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
.
isa ::=
ISA: name <, name>*;
Các quan hệ phân cấp trong tập hợp H cũng có thể


được mô

tả trong cặp từ
khóa
HIERARCHY
,
ENDHIERARCHY
theo cú pháp sau:
Lê Hoàng Vân – CH1301071 Trang 16
Bài thu hoạch môn BDTT&SL
hierarchy-def
::=
HIEARARCHY
name ISA name;
ENDHIERARCHY
V í



dụ :
Phân cấp các khái niệm
MA_TRAN
trong đại số tuyến tính
MA_TRAN_VUONG ISA MA_TRAN;
MA_TRAN_TAM_GIAC_TREN ISA
MA_TRAN_VUONG;
4.5. Sự kiện
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 như sau:
facts
::=
FACT: fact-def+
fact-def
::=
object-type |
attribute |
name |
equation |
relation |
function
object-type
::=
cobject-type (name <,
name>* )
Relation
::=
name relation name
fu
nction
::=
fu
nction ( name <,
name>* )
V í




dụ :

1. Sự kiện thông tin về loại đối tượng:
MA_TRAN_VUONG(A)
: A là một ma trận vuông
2. Xác định đối tượng/thuộc tính thông qua tên của đối tượng/thuộc tính:
Lê Hoàng Vân – CH1301071 Trang 17
Bài thu hoạch môn BDTT&SL
A
: ma trận A
A.a[i,j]
: phần tử dòng i cột j của ma trận A
3. 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
4. Hai đối tượng/thuộc tính bằng nhau:
A = B


: ma trận A = ma trận B (quan hệ bằng nhau)
A.m = B.m


: số dòng của hai ma trận bằng nhau
5. 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]
A^T = B^T
(A*B)^k=

A^k

*

B^k
6. Sự kiện về quan hệ giữa các đối tượng/thuộc tính:
A GIAO_HOAN B


:

ma

trận A giao hoán với ma

trận

B (quan hệ
giao hoán)
7. Sự kiện về biểu thức hàm cơ bản:
KHA_NGHICH(A):
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:
DINH_THUC(A) = 0:


định thức của ma trận A là 0
KHA_NGHICH(A)= TRUE //TRUE là hằng 1, FALSE là hằng 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:
B = MT_NGHICH_DAO(A):
ma trận B là ma trận nghịch đảo của A
Lê Hoàng Vân – CH1301071 Trang 18
Bài thu hoạch môn BDTT&SL
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:
HANG(A) = HANG(B)
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 khác thông qua phương trình:
HANG(A) = HANG(B) + 1
DINH_THUC(A) = DINH_THUC(B) + DINH_THUC(C)
4.6. 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+
DEFINE: rel-def+
FACT:
[facts]
ENDRELATION;
argument-
def
::=
name <, name>*: type;
re
l-def
::=
eq
uation
Ví dụ: Quan hệ giao hoán giữa hai ma trận A và B.

RELATION GIAO_HOAN;
ARGUMENT:
A, B: MA_TRAN;
DEFINE:
A*B = B*A;

FACT:
ENDRELATION;
Lê Hoàng Vân – CH1301071 Trang 19
Bài thu hoạch môn BDTT&SL
4.7. 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 trong
cặp từ khóa RULE, ENDRULE; ngược lại các luật được khai báo trong cặp
từ khóa RULES, ENDRULES.
Cú pháp khai báo luật như sau:
rules
::= RULE: rule-def+
rules-def
::=
RULE name;
KINDRULE: name;
[VARIABLE: variables-def;]
HYPOTHESIS: fact-def+
ENDHYPOTHESIS
GOAL: fact-def+
ENDGOAL
ENDRULE
va
riable-
def
::=
name <, name >*: type;
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;
ENDHYPOTHESIS
GOAL:
a = b;
ENDGOAL
ENDRULE;
Lê Hoàng Vân – CH1301071 Trang 20
Bài thu hoạch môn BDTT&SL
4.8. Hàm
Mỗi
hàm có

một

tên và một dãy 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 | def-function
4.8.1.
Hàm cơ bản
basic-func ::=
SIN | COS | TAN | COTG | LN | EXP | SUM
4.8.2.
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:
def-function ::=
FUNCTION name;
ARGUMENT: argument-def+
RETURN: return-def;
[CONSTRAINT: facts]
DEFINE: [facts]
ENDFUNCTION;
argument-def ::= name <,name>: type;
return-def ::= name: type;
Dạng 2:
Lê Hoàng Vân – CH1301071 Trang 21
Bài thu hoạch môn BDTT&SL
def-function ::=
FUNCTION name;
ARGUMENT: argument-def+
RETURN: return-def;

DEFINE:
[constraint]
[variables]
[statements]
ENDFUNCTION;
statements
::=
statement-def+
statements
-def
::=
assign-stmt | if-stmt | for-stmt
asign-stmt
::=
name := expr;
if
-stmt
::=
IF logic-expr THEN statements+ |expr
ENDIF; |
IF logic-expr THEN statements+ |expr
ELSE statements+
ENDIF;
for-stmt ::=
FOR name IN [range] DO
statements+ |expr
ENDFOR;
Ví dụ: Hàm biến đổi dòng k trong ma trận A thành c * dòng k + dòng l.
FUNCTION BIEN_DOI_SO_CAP_2;
ARGURMENT:

A: MA_TRAN;
c: REAL;
k, l: INTEGER;
RETURN:
A: MA_TRAN;
CONSTRAINT:
k > 0 AND k <= A.m;
Lê Hoàng Vân – CH1301071 Trang 22
Bài thu hoạch môn BDTT&SL
l > 0 AND l <= A.m;
k <> l;
DEFINE:
A.ROW[k] := c * A.ROW[k] + A.ROW[l];
ENDFUNCTION;
Gọi hàm:
function-call ::=
name ( sequence );
L ư u

ý : các đối số được truyền cho hàm

dưới dạng dãy biểu thức và phải
theo đúng thứ tự với khai báo.
V í



dụ :

BIEN_DOI_SO_CAP_2(A, 3, 1, 4);


4.9. Phép toán
Phép
toán được định nghĩa trong cặp từ khóa
OPERATOR, ENDOPERATOR
.
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]
DEFINE:
[statements]
FACT:
[facts]
ENDOPERATOR;





dụ:
Phép toán cộng hai ma trận.
OPERATOR ‘+’;
ARGUMENT:
A, B: MA_TRAN;
RETURN:
Lê Hoàng Vân – CH1301071 Trang 23
Bài thu hoạch môn BDTT&SL
C: MA_TRAN;
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;
4.10. Cú pháp khai báo
4.10.1.
Khai báo kiểu dữ liệu
variable-def ::=
name <, name>* : type
Ví dụ:

x: INTEGER;
lst: LIST;
4.10.2.
Khai báo kiểu dữ liệu là một đối tượng tính toán 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[sequence]| name <, name>*:
cobject-type;

Ví dụ: Khai báo đối tượng là một ma trận.

A: MA_TRAN[m,n,a];
B: MA_TRAN ;
4.10.3.
Gọi một quan hệ
rel-call ::=
name rel-name name;
V í



dụ

:
Lê Hoàng Vân – CH1301071 Trang 24
Bài thu hoạch môn BDTT&SL
Quan hệ bằng nhau của hai ma trận A, B
A = B;
Quan hệ tương đương dòng của hai ma trận A, B
A TUONG_DUONG_DONG B
4.10.4.
Gọi một phép toán
ops-call
::=
name operator | name operator name;
op
erator
::=
+ | - | . | ^ | ^T | ^-1

V í



dụ :

Phép chuyển vị của ma trận A (phép toán một ngôi) : A^T
Phép cộng hai ma trận (phép toán hai ngôi): A + B
4.10.5.
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ụ

2 .

27 :
truy xuất đến thuộc tính số dòng m của ma trận A:
A.m

L ư


u

ý : dấu chấm . được hiểu là phép toán khi có dạng: số thực.đối
tượng (ví dụ: c.A), ngược lại sẽ được hiểu là phép truy xuất khi có
dạng: đối tượng.thuộc tính đối tượng (ví dụ: A.m,
A.a[i,

j]).
4.10.6.
Khai báo hằng
Constants
::=
CONSTANT: constant-def+
Constants-def
::=
name: number | TRUE | FALSE;
Lê Hoàng Vân – CH1301071 Trang 25

×