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

BIỂU DIỄN NGỮ NGHĨA BẰNG RDF VÀ ỨNG DỤNG VÀO LẬP TRÌNH SEMATIC WEB

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.4 MB, 72 trang )




 !
"#
$%&'
! ()*+,
-,
./012.30#+4+45 67
892.30# : ;0<01
=>?# @AA@AAB
(CD# <EF89GHFI<J
FK01@L0;MLA@B
$%&'
! ()*+,
-,

N

Ngày nay, với sự bùng nổ thông tin, nhất là thông tin trên internet đang được rất
nhiều nhà nghiên cứu quan tâm. Thế nhưng máy tính hiện nay chỉ làm được những công
việc mà con người chỉ đã rõ ràng ra (hay nói cách khác là lập trình từ trước) nhằm mục
đích để trao đổi và xử lý thông tin với con người và thế giới. Thậm chí một hệ thống tìm
kiếm cực kì nổi tiếng như như google hiện nay, cũng chỉ căn cứ vào nội dung của đơn vị
đơn giản nhất của câu là từ (word) để tìm ra kết quả và nó hoàn toàn không hiểu từ đó
trong câu văn mà nó tìm ra có nghĩa là gì. Như vậy vấn đề được đặt ra ở đây là làm sao
máy có thể hiểu được một số tri thức cần quan tâm để nó có thể xử lý thông minh hơn.
Đó chính là vấn đề của biểu diễn tri thức trong lĩnh vực trí tuệ nhân tạo mà các nhà khoa
học đã và đang nghiên cứu.
Có rất nhiều phương pháp để biểu diễn tri thức từ những phương pháp truyền thống
như logic vị từ, mạng ngữa nghĩa, hệ luật dẫn, frames(classes), scripts cho đến các mô


hình cải tiến như mô hình mạng tính toán, mạng các đối tượng tính toán, mô hình cơ sở
tri thức các đối tượng tính toán (COKB) , COKB-ONT.
Trong phạm vi bài tiểu luận nhỏ này em muốn tìm hiểu và đề cập đến vấn đề “BIỂU
DIỄN NGỮ NGHĨA BẰNG RDF VÀ ỨNG DỤNG VÀO LẬP TRÌNH SEMATIC
WEB” đây là một phương pháp biểu diễn tri thức gần giống với bộ 3 đối tượng – thuộc
tính – giá trị. Tuy nhiên nó thể hiện rộng hơn để biểu diễn ngữ nghĩa, nó mô tả 3 thành
phần gần như cú pháp của một câu đơn ngôn ngữ.
Em rất chân thành cám ơn thầy Đỗ Văn Nhơn, dạy môn học này đã cho em hiểu sâu
hơn về các phương pháp biểu diễn tri thức, các mô hình biểu diễn mới như mạng đối
tượng tính toán, mô hình COKB, Ontology giúp em có thể hoàn thành bài nghiên cứu
này.
TP. HCM, Ngày 06 tháng 01 năm 2012
Đỗ Văn Cang



 !"#$%&'(&)*'+,
-./#$%&"012,
-1./#$%&3&%4
-.56'$7'($89:;&'(<#0$ =
-".>?'@A&B6')@C$D
-E.F&%
($#E9:*'2
-.'($E(1$8&"$G H';&'(<@I'J!K
-1.L:$@M' H'@I'J@$2'C3&'
-.NO"PBL"P#&'(Q1:$'Q 0' $=
>$8&"$G"#$%&1RS/T
S/T#:U
"#$%&/ST
-.SB

-1.>#VQ"EBW
-.X$'E(#9#&EBY$'(J@E
@J"0#&'(/ST
-.Y($#EB,
-1.4
-.S/TZ[X\
W $8&9*'9$%/STX$1D
'(&)9;5]SFX
-.5^X^T_S
-1.$K$03&E()
-.__]X9:(:1&H'TX^S
-".`7'a$*&V7'3&2
-E._5SF&E()TQ( ,
-b.]5`"/^5S>^F&E()TQ( B,
-.5]SFXF&E($EB$S/TX$1,
,_'Q#Q)4
-.$K$'$%& "#$%&\
-1.cE1_'Q#Q)X&E-_cX.WW
-.5L"P(Q'ddWW
e"PS/T9:Q#f'(BE '$gE1
5L"P5EB EP#&'(9:'(&)9;S/T
-.:$@M'h"PgE15EB E
-1.0Q K$VQ"#$%&
-.XQ""#$%&''0Q@I'JW
-".ij)"#$%&'k@I'J#lBEB E-3&@J"0S/TZ[X.,
0Qh"PgE1\
-.E(())gE1BE(9E(Q)'Q\
-1.VQ+$a9K$Q"E)'Q'Q'$Q"$%=
:&,D
Wm(H'f"#$%&'k&IH,

0Q :'EQhn,,
,(63&!$Q"$%,4
N`7'#&f4
W
O4 PFQ0F01R01FS<
%'+ 0'Q:A&@o'(ml(HV?'3& H'#Q0''$l&
&j@a'$7'#f(H(o$9:@2 12Q@a':Am h@H
V&$Q'hZ@2 12Q(R<'V2$#Q#?9*9$%
&)8'k1$'"#$%&'3&%'+ 0'69f)p
9:X@o&;'$l&1$8&@8!'8f''$9:'("$G
':$#$%&B$l&9n12
&)$lp! H'V+$#aVC#I':$&)l'(lcE1p@$*&:)
#: 2)B$9;@*$l '(q#:#: '7:Q@8' V$7 Or':$
&)l  Q &+/#$%&'(Qb$#EX&O'(Q H'9:$
29@+$9K$2Vl 9:Q@!XV
'8 '29*"#$%&@!!$'(Q!
NO"Pp<'1$7' o9s-QB'Q"E.9: &+' @Jtu!N v$
3&+$!'l%'+ o9sV1$%'9:9cE1V1$8&"$G@a +$
#$l%:)pl<'Vf@a@$*&<' Q@a$($#0$p
@+$9K$5E '$cE1p<'!'8t(V$8&u +$#$l%:)w9O"Ppx$
Q"E'@9K$QB'Q"E
N9f)p7&':AO)7&u"#$%&'(QcE1'(1:)
'EQ"0'h''yp''f'V!BL"P"#$%&:) H'C
1$7H''$7&B!'ucE1$%)#:'$7&;&$%&3&2@8$Bz"#$%&
V$h"P@a''($8 H'@H#f/Q"!A2$ m(HcE1@8
)!'8$8&p'Oa"#$%&p{'$BL"P"#$%&'3&
h"PV&
7%gE1@A&'$l1?'@A&9K$'(X'up'7%'h
$@o'0Ql H'1KQ )'6$%9:'y#:'(X@H
'7%gE1:) |QQy$'Q''(6'$7-@qp

"&)%'p@$*9:Q }&.7%gE1'h1@aq$#:~5E '$cE1•p 
P@O#:''$B€"Q )rL#|i$*&:)'(sVK9K$3&@$8 u
$ >E(E(BYXEE@o '2'(Q&+BA@•);'u~cE9$'E
cE1•‚>E(E(BYXEEp===ƒ
5E '$cE1B€#: Q"J9P' $9O"P $$K$'
'$p'•' V$7 p1H#q''$99"J9P' $'(l%

'+gE1$:&B€'7?„B€9a''(H$$l
12B…!$%'0$u"J9P:)p :t$K$09*hn
  !"#$%&'(&)*'+
!$*&@8 !"#$%&p H'B+@o@a$lh&9:h
"P'(Q'6'$G(;'':(Q'$8&#&f:):)E t' $8&9*
H' K$9* "#$%&!$*&@8B&)9*"#$%&p9:@$*&
3&'(q#:2$! H'#Q0'P!B…@810!'8q H'
'(Q'+';'Q9$% H'"G":9:'+';'
(QA:)p<'B€rE rd'C1$7 :<'@o!
'8M2$9:3&'• @7@$8  0p@$8 )7&V$!$@7'Oa"#$%&
3&gE1p;'#:V$@+$"$%9K$)l&A&')@C$!
T<U RV.WXYZ01[/01
X:#Q0$@$2;'u'f"#$%& :A&';'2 q$y$@*&3&E
'&H>2"#$%&#:1;'V†"#$%&#&'(Q H'12p„0 H'
12'O^rE#QM H'12X>2"#$%&!'&f#a$#:(;'@$2
@8@q9:'Q''(l@!
<'o)rE rd'"#$%&SEB'&('@a'8$%'(Q>2Y
Bảng 1-1. Bảng dữ liệu restaurants
/#$%&@a#&$'(Q H'12!$&#:"G":@8$8'JpB?r7p
$;p9:tBL(Q'6'7p10'f O‡V@8|(Ru"
#$%&'(Q H'12'O^rE##:ˆ ˆp9J'(Ou"#$%&'(Q
,
:9:H'9}'8$%|($%1$%'`$+

 <'B€' $8&mAB&p"#$%&"012 V'8
$%@a$*&V&y$''y!$(RA&7'ˆ
Bm"#$%&ˆ@aBL"P'(Q' 0$t@$2#:12'O
H''$%'<9J#:'(Q"#$%&"012!'$* jh
'(Q  @!  '  3&  'k  "‡  9:  H' NO  "Pp H' !  nu:
:$2$'OQV:|u!6'7#:$EBE-(&F&+.
'(Q"‡EV$9:H'&$B$E-j '6.Q')#f'h1$7'(R‰ˆ
EV$#:'6j u(&F&+ˆ>01$7'@$*&:)1m$910@o1$7'
@q''$'(Q H'12-@o'k';)9:@q$8&''$'(l
12.i$*&:)!9z(;'1'yp@$*&3&'(q@8<'
V V&@8B&)9*"#$%&
/#$%&@a#&'('EQV$8&:)(Š(:#:1J$K$0p9O"&'(Q
'(ya12!'l H'_E-'h#:$y mL.h';'2$y9:Q
H'H'7&t@8'8$%'V':9;@*7&p H'#<:Q@!
<'A1CB&'l $yQM1CB&'l ''$#QBE@!L'
#<@!'f'$*hN*#|'&)7'!'8#&<':@J"0'(Q H'
&v$Bảng 1.2B&
Bảng 1-2. Có quá nhiều trong một bảng
&)$lp7&V$!&A&' V$7 'EQ$y mL'BQUN;@*:)
:h'0V$ :<'!$l&129f)'(Q #&
'(
‹l&A&A2$! H' $2$3&)7'9;@*'(l H'@$2
9:!
T[U RV.WX\X<0FW
A&';'2#f'(9$lV$ :V3&E'&H9K$Bm"
#$%&3&%p@aBL"P'(Q';'2#Q0$h"P'(Q q$#96
B2j />_(#Ep)5FXp55FXpQB'(E5FX#:(;'Q:2Q9:
#:V7'3&2u$*&n $lh&9:''($8Bm"#$%&3&%(;'
4
9:v'(aP 0 €@8#&'('f"#$%&6V#K H'

  '&)%'  9y$  N*    12p H'  Bm  "  #$%&3&  %Q  d$*&
12@aV7'  +$  9K$  &  'EQ  H'  &j  :Q  @!i8#&  '(  "
#$%&(EB'&('m'(lp<'!'8@J H'B@I H''(Q
'8$%'(QHình 1-1i$*&:)Qd"#$%&(EB'&('@a
'8$%'(Q H'&O9:#$Q0'p'8$%'(Qhình 1-2.
Hình 1.1 sơ đồ restaurant đơn giản
Hình 1.2 dữ liệu quan hệ restaurant
>•)$yp')9•#Q0$QM#q'(l H'H'"&);'p<'!'8
#:  H'•&'(&)9;h'0H''(&)9;@8' ';'2::B€
@a m'0$D 9:Q:)'h5&!'8@a'8$%1RBL"P
5FX'7:)‰
SELECT Restaurant.Name, Cuisine.Name, Hours.Open, Hours.Close
FROM Restaurant, Cuisine, Hours
WHERE Restaurant.CuisineID=Cuisine.ID
AND Restaurant.ID=Hours.RestaurantID
\
AND Hours.Day="Fri"
AND Hours.Open<22
AND Hours.Close>22
<|(R'(Q "#$%&3&%u<'pu"#$%&
@o@a#: (ŠŒu$'(J'6B6@a'8$%'(QB@I‰ H'
y$:Q@!9:Q12)#f'h!'8';)$*&"0u 
'6'8-E'$'$EB.•SEB'&('p&$B$EpQ&(B9: +$3&%u
<p M"sBm"#$%&V'6B6$8&@aSEB'&('#:
p<s H'! 9:??! H' +$3&%9K$
! VŽ';'#:'(Q0 9$! 
T9U +]^._0^`.a02b9cX^`d9VZ.MPFQ0F
@o@*fpBm"#$%&3&%(;'Q:2Q@+$9K$1H"#$%& :
'(Q@! "#$%&@a1$7''(K9*;&'(<9:<@aBL"P
'(QA&7'#&'("#$%&:))

&)$lp<'@o@a'2Q#&fp'Oa"#$%&'(lcE1@a@M
'(1m$B6')@C$!#Q0$"#$%&p9:#f'(9$l!'8
V1Q$y1$7'B€!9:#: '7:Q q$y$!'8BL"P!
 H'9O"P@$2po)$2BL<'!Bm"#$%&(EB'&('@
0)p9:B&@!<'f@a H'Bm"#$%& K$u3&1(9K$
''$1CB&hV2$'(QB@I(EB'&(''(K@•)p
'8$%'(QBảng 1-3.
Bảng 1-3 tập dữ liệu phát sinh
9:Q;&'(<:)<'!'8';) H'B+''$@o!9:
''$ K$p"sBQ@$'%'+{{V'8Q0'@H
7&VtBL#0$ 
=
<'A@$*&t#0$Q@<&j!hình 1-2B&
Hình 1-3. lượt đồ thay đổi và chuẩn hóa theo địa điểm (Venue)
&)$l q$9$%9}V"k#0$m@!p%'+$%'0$9}@BL"P
"Q@!"s!')@C$'<'9}A2$@2 12Q"#$%&{'l%'+
K$V ;'@$iI'y$';'2 o-Q"E.A * {2$')@C$
'EQ :'y$$ff'{2$!9%'+@Q0'@H
i•)#: H'9;@*Vh@A&N::VuV$7#:9$%1CB&')
@C$ :)r2)(#$l'P9O"P:))l&A& m'l H$'(y•
0p:'p$'ChB6V$%
TYU e^fgX>]^F<hfi.
i$*&:)@<'@7•&•$#$%&!!'8@J H'B@I@8!@u
#$Q0'@8rL#|$*&#Q0$"#$%&#&')@C$p'(QV$9}"&)'( H' h
@H"G@q!#€B@I!'8@a'$7'V7@8@a mLQ P@O
@J@$8  K$9:&;'s)t#96Qqp H'$@!hình
1-4!@o ;'Q:'Q:V$$% 9*3&1(9:::p1•)$yt
h H'"B@J@$8 9:'&H'O's)tQq
D
Hình 1-4. lượt đồ địa điểm với các thuộc tính linh động

:)!'8#:  ;'@$'O&j!9:#: $2 $%&B&;''(&)9;"
#$%&p'&)$l!!'8Qd<(1CB&'l #Q0$@J@$8  K$
H'"G":NO"P'(Qhình 1-5
Hình 1-5 Dữ liệu địa điểm biểu diễn mềm dẽo hơn
Bảng Venue :t@J@$8 &&
Bảng Field :'8$%|''$9*;&'(<p')'72'1#E9:b$E#"'(Q
"#$%&3&%
Bảng Propertues :$'(J'8$%
<'!'8'0Q(b$#E" K$'(Q12T$E#"p9:B&@!'l '&H'O
Q1;'V†'(Q@J@$8 $%!Hình 1-6Q';) H'9O"P :<
'@o'l ''$ :$$!'l '8#Q0$~X$9E&B$U•"~&B$
E(E•

Hình 1-6 bổ sung địa điểm và thể loại mà không thay đổi sơ đồ
•B@I:)<'@o';)1?'@A&!B6r&;'$%uM' B+'EQV$8&
jkhl2<VXk-7&1Š@$u'8#:@J@$8 .
TkU X<0FW01R01FS<
<'o)'$7'P9K$9K$3&'(9:rE B€r2)(0$BQ
V"$&)8';'2 +$3&%@a'8$%'(Q:'(Q
12:)':jkhl2<VXkUk3&@$8 :)p'l@J@$8 9:@Jtt
#:'&H'Ou@J@$8 -<B€@a'((.p99f)o)"$&)8
H''(Q12 k0Xk':VE)Z9#&E:'(Q12(QE('$EBBảng 1-4Q
';)@$*&:)B€'7:Q

Bảng 1-4 bảng lưu trữ toàn bộ dữ liệu mô hình dạng key/value
>•)$y"V$l

@a '2s9K$'&H'O-(QE('$EB.@J!
i8#: @a@$*&:)p<'@o'6$% +$3&%01R01FS<
-BE '$. :'(K@•)@o@aB&)('k129:H' :':;&'(<

"#$%&'(Q12
i•)#:12;'u ‰H'B@I#$Q0'@7 h';'2
3&%@a '2O1l'(Q!
 ($#E9:*'2
T<U PFQ0F^`.DDk`[.aXY.m0Mn^9cX^`d9fo^Fp9IFqC014
(QA'(Kp<'@o@*f@7 H';&'(<#'(VE)Z9#&E
6V@$2'C3&'9:"G":')@C$V"k#0$m
9$%t#&'(rQ)3&Q''$iJ@$8 p3&1(p• 0NK$
;&'(<:)<'!'8#&'(1;'h H'''$"#$%&i8#: (Š
<'o)' $8&9* H'V$$% 12'(Q($#E

($#E@a@JI ':AT+rrU'(Q@!
+s+X[tk9^‰`$$% 9* H''hP'8H'@+$'aP'8(Q 
"#$%&!'8$% H''6'8-E'$').NO"P'8$%9*@J
@$8 pQy$9:@+$'aP'8V'hP'8'y$
$p|'m9*$@!
G`kY.9<^k‰#: +$3&%u@+$'ap!@a'8$%3&
'&H'O-(QE(').u'6'8'(Q5(E"$'E!|(;'(H!!
'81$8&"$G q$3&%'(l';'2"0''$
G[tk9^‰'&H'(Q#Q0$
’@+$'ap'6'85R '(Q'($#EV
’$'(J@$2-#$'E(#.&v$-B'($.pQMB+-& 1E(.
9f)<'!'8"&'f'($#E:)B€': H'
"0"#$%&V$8&@I'J!K-.`k9^kY`<DF. :'(Q@!59:_@!
9$'(‡@t-Q"E.9:(E"$'E@!9$'(‡&-E"E.+$
@tV$N:9f)9* M';&'(<12;'V8'k@•)<'B€BL"P
:)9K$'lq$($#Ep1$8&"$G"0@I'J!K@81$8&"$G';'
#Q0$"#$%&V&
<'o)' $8&3&9O"P'(Q12YW'(K@•)p'(K'$l
<'o)&)8!B"0($#EV$$% '(lpV$@!H'@A&'$l

#:1;''h H'$'8$% H''6'8pH''h'8$% H''hV9:H'
'h#:3&%uH'9K$H'
Bảng 1-5 : Object được thể hiện giá trị đơn giản nhất là chuỗi kí tự
W
Bảng 1-6 : Objecst là một đối tượng bên trong triple khác thể hiện mối quan hệ lân cận
Hình 1-8#: H'B@Iu H'B+($#EBu<'!;&'(< H'@I'J!
Kp9K$B&1“E'9:Q1“E'#:<'9:(E"$'E&+$
Hình 1-8: Đồ thị có hướng của mô hình triple.
T[U Fu9b.fv^Mn^fo^Fpfw01./0^i01\XK^
i8!'8$8&(Š9* '($#E'(Q(p<'o)'L:$@M'
H'@I'J@$2;''(KV$BL"PP!B„'(Q
AB&
<'B€qh^FE0#: :$@M'p9!#: H'
(;'@$2?q"G$8&9:A9K$'6$l-' $8&t
'(Q9‡@7W:)@8!'8BL"P'+'./Q@!#f'(9$l!'8
"G":&)8@C$B'O
(K'$l<'o)@J12BBL"PQ1H:)p@8!
'8"G":' ('k':AV'(Q -5pp_.<'o)
#&<':12BV&
class SimpleGraph:
def __init__(self):

self._spo = {}
self._pos = {}
self._osp = {}
’l '($#E
def add(self, (sub, pred, obj)):
"""
Adds a triple to the graph.
"""

self._addToIndex(self._spo, sub, pred, obj)
self._addToIndex(self._pos, pred, obj, sub)
self._addToIndex(self._osp, obj, sub, pred)
def _addToIndex(self, index, a, b, c):
"""
Adds a triple to a specified index.
"""
if a not in index: index[a] = {b:set([c])}
else:
if b not in index[a]: index[a][b] = set([c])
else: index[a][b].add(c)
’[!'($#E
def remove(self, (sub, pred, obj)):
"""
Remove a triple pattern from the graph.
"""
triples = list(self.triples((sub, pred, obj)))
for (delSub, delPred, delObj) in triples:
self._removeFromIndex(self._spo, delSub, delPred, delObj)
self._removeFromIndex(self._pos, delPred, delObj, delSub)
self._removeFromIndex(self._osp, delObj, delSub, delPred)
’XQ"'kB9
def load(self, filename):
f = open(filename, "rb")
reader = csv.reader(f)
for sub, pred, obj in reader:
sub = unicode(sub, "UTF-8")
pred = unicode(pred, "UTF-8")
obj = unicode(obj, "UTF-8")
self.add((sub, pred, obj))

,
f.close()
’X&9:QB9
def save(self, filename):
f = open(filename, "wb")
writer = csv.writer(f)
for sub, pred, obj in self.triples((None, None, None)):
writer.writerow([sub.encode("UTF-8"), pred.encode("UTF-8"), obj.encode("UTF-
8")])
f.close()
’: "&)%'9:#$%'Vl';'2'($#E#q'EQ1H
iA&9:Q#:'lB&1“E'p(E"$'E9:Q1“E'p7&1Š3& H''(QB+' B+
'(l-$'(JQE.!B€"&)%'';'2V7'3&2VK9K$' B+@!
def triples(self, (sub, pred, obj)):
"""
Generator over the triple store.
Returns triples that match the given triple pattern.
"""
# check which terms are present in order to use the correct index:
try:
if sub != None:
if pred != None:
# sub pred obj
if obj != None:
if obj in self._spo[sub][pred]: yield (sub, pred, obj)
# sub pred None
else:
for retObj in self._spo[sub][pred]: yield (sub, pred, retObj)
else:
# sub None obj

if obj != None:
for retPred in self._osp[obj][sub]: yield (sub, retPred, obj)
# sub None None
else:
for retPred, objSet in self._spo[sub].items():
for retObj in objSet:
yield (sub, retPred, retObj)
else:
if pred != None:
# None pred obj
4
if obj != None:
for retSub in self._pos[pred][obj]:
yield (retSub, pred, obj)
# None pred None
else:
for retObj, subSet in self._pos[pred].items():
for retSub in subSet:
yield (retSub, pred, retObj)
else:
# None None obj
if obj != None:
for retSub, predSet in self._osp[obj].items():
for retPred in predSet:
yield (retSub, retPred, obj)
# None None None
else:
for retSub, predSet in self._spo.items():
for retPred, objSet in predSet.items():
for retObj in objSet:

yield (retSub, retPred, retObj)
# KeyErrors occur if a query term wasn't in the index, so we yield nothing:
except KeyError:
pass
’: '(29*$'(J@@A&'$l
def value(self, sub=None, pred=None, obj=None):
for retSub, retPred, retObj in self.triples((sub, pred, obj)):
if sub is None: return retSub
if pred is None: return retPred
if obj is None: return retObj
break
return None
\
T9U xYy>uYy01VqX^`R9FE[b.^EK0MZ0101R01FS<^<M1.K9
Hình 1-9: Đồ thị có hướng bài toán tam giác
!$*&@8'8$%<'(Q@I'Jp'&)$l@8!'8 m(H'
$'(J'(Q1:$'Q' $BL"P 0p''ChBQQ
Q"E'(‡9:9&#:5&1“E'Z_1“E'‡(E"$'E'#&': +$
3&%'8$%&+$$#&"E‰hp9#&E‰$'(J”
7&"P'l'h-W.9K$!]p>p'!'($#EB&
(4) include A
(4) include B
(4) include C
Q"E'l 9:'(&)9;('($#E'k@$*&V$%#q
9f)7&"P#l1:$'Q:)p#: BQ1$7'$'(Ju]@o!)
'#: BQU<'!'8"PV$8& :)@8#&'("#$%& H'
V$ H'!!$'(JB&
=
9f)@8' $'(J!#:!p'<'A'(&)(rE !
:)$#&"E'(Q'h:QU9:'h@!h1Q$l&!U@o!

@uY!h$'(J)U7&@o!'<'o)'&'f';'
2''$:)H9K$H$"&'h-W.'$B€'O($'(JA' 
&)$lp<'V'8:Q"&)%''EQV$8&"‡' '7:)@8' (
''$A' '(Q@I'J/Q@!A2$! H''(&)9;'(l
@!
H''h'(&)9;!'8'6$%#:#$lV7'$'(JA' 9K$ H'$'(J
1$7p3&'(:)q$#:N($1#E>$"$
+<XfzhVb9EYk^F]9F.W0
def query(self,clauses):
bindings=None

for clause in clauses:
bpos={}
qc=[]
for x,pos in zip(clause,range(3)):
if x.startswith('?'):
qc.append(None)
bpos[x[1:]]=pos
else:
qc.append(x)
rows=list(self.triples((qc[0],qc[1],qc[2])))

if bindings==None:
bindings=[]
for row in rows:
binding={}
for var,pos in bpos.items():
binding[var]=row[pos]
bindings.append(binding)
else:

newb=[]
for binding in bindings:
for row in rows:
validmatch=True
tempbinding=binding.copy()
for var,pos in bpos.items():
if var in tempbinding:
if tempbinding[var]!=row[pos]:
validmatch=False
D
else:
tempbinding[var]=row[pos]
if validmatch: newb.append(tempbinding)
bindings=newb


return bindings
9V<X>k#: H'"B %@*@8'(&)9;($'(JA' ph9K$ H'$
'(J1$7A' <'2$@M''l1?'@A&1R;&U$'(J'(29*#:'fY<0F
>K9FF<>F9F{<jkhl2<VXk
 "B@t#$l3&@7'h-W.

 "@t9I1.K^`p#$l3&@7'h-W.
9f)ptA1CB&'l (E"$'Eq$#:|E`MXV<Q@+$'a-W.'
<'!'8#$lV7'<9K$&@8' ($'(J!A' 
NK$1:$'Q' $p<'o)1?'@A&@$*@A)@u';'2'h
1R"&)%'3&';'2'h@8' 9:@$*$'(J9:Qp3&'(
:)#MQ'K$V$' @a$'(JA' 
NK$ :)<'!(;'$*&'h@8!'8'6@H1CB&
'l '($'h'($#E1R#$lV7'9K$';'2'($'hB„!H9K$ H'

#&f' K$iI'y$9@•)#: H' @I'Jl<'!'8"P';'
2'&f''Q9*–]('$b$$#'E##$EE—'(l@!/Q$K$00 9Jl
<'B€V@:QB•&9:Q9:'&f''Q9*]:)@8!'8
'$7'P9K$V$$%  K$"6'(l&jB„!9* 

O4 .aXY.m0YRV.WX[}01'
>•)$y10@o$8&9*"#$%&9:@8r•)"6 H' 
@$21R#&'('(Q1HK1R)'Q
i8'$7'V$% 'y$$9:Bhp<'B€' $8&9* H'@J"0&j
9* 
 S/T#:U
)9q(Rp#<:)10@o';)(R9$%&)8B "#$%&@I'J
#:V"G":p9:#: H'|'m'+'9K$"#$%&@o@a09:Q@I'Jp
#: '7:Q@8$B€"#$%&@!Qy$VU
i!O#:#|"QuB6r&;'$%SEBQ&(E/EB($'$QT( EgQ(V-S/T.u
cS/T&; H'1$8&"$G&ju@I'JpQd$B€
<9K$y$Vp9:3&'(q#:9K$ )'O>m$9!#: H'&j
:c~V&)7VOˆp H''f#KP9:"J9P@or&;'$%3&
V$$% 9*S/T
S/T-SEBQ&(E/EB($'$QT( EgQ(V.#: H'~1HV&•@aBL"P@8 
'2&I':$&)l'(l'E(E'S/T&; H' "#$%&p9: H'
<@$2BQQ%'+@H#f!'8'(Q@C$9:BL"P!
S/T@a'$7'V7BQQ%'+ )'O!'8$8&@a9:!'8
@q @a''$p hV 2$ @8'(1:)  "#$%& Q y$"s
X: H'':Au5E '$cE1p@a@M''(l[XpS/TBL"P<
u[X@81$8&"$G''$p@$*&:)!#:':$#$%&S/T@a
9$7'1R[X[X"s@81$8&"$G''$'(QS/T@aq$
#:S/TZ[X3&@J"0:)p''$'(QS/T!'8@a
'(Q@C$"G":$%'+ )'O{%@$*&:)
#f'(h"PV&

S/T '2B$l&"#$%&9*':$&)l'(lcE1S/T"6'(l<[X
'&)$l[Xt '2"#$%&pS/T‡!V2n1$8&"$G$
<'3&':$&)l@a@J"1RS•V†:)<'
B€! H'$P'89:1Q3&'9*S/T

EQc$V$E"$p"#$%&#$lV7'-X$VE"/'.#: H'AugE1p
! '2$%&3&2@8'(&)r&;'p$B€9:V7'+$ 2"#$%&p'
'$  9:  '($  'h  '(l  gE1      BL  "P  #$l  V7'  SB  9:  S/T
$+gE1u9n12pgE1u"#$%&@ar•)"6"6'(l':$
#$%&'(lgE1&)$lpV$+gE1u9n12p#$lV7'#$l3&
'(l9n121$8&"$G"K$"0XpgE1u"#$%&#$lV7'~'6'8
@a@M''l•'3&S/TSBr@J#Q0$@+$'a9:V$$% 
S/TO#:*'2'(&'• ugE1(QV$[X&;<
@8 o!"#$%&'S/T '2B$l&"#$%&9*':$&)l'(lcE1
S/T"6'(l<[X'&)$l[Xt '2"#$%&pS/T‡!V2
n1$8&"$G$<'3&':$&)l@J"1R
S
 "#$%&/ST
$8& H'6V†@$2"69:QV$$% 9* 
:<'@o' $8&'(QA'(KpS/T„3&#: H'chuẩn
hóa mô hình ngữ nghĩa bằng triplep#: H';&'(<I ':AO
-5&1“E'Y(E"$'EY_1“E'.i$8 V1$%'"&);'O#:#$l3&@7tài
nguyên (resource) BL"P'8$%'(Q'($#E9:các định dạng lưu trữu
<
T<U >
$9E(B#SEBQ&(E"E'$b$E(-S.‰'h#:@J"':$&)l"&);'(Q
@!SX#:'fQuSt9J'(O':$&)l"&);' :<'@o3&
3&E'&H'V$BL"PgE1
/STBL"PS':$&)lQ';'2':A'(Q 
'kB&1“E'p(E"$'E@7Q1“E'R @2 12Q'O"&);'9:@I'y$

{#:$'(J@8'(&)r&;'@7''$!'6B6
i$*&3&'(q#:A#&|(RSV2$#:SX- M"s v$SX#:
H'S.H''6'7p@$*&:)!#:10VlQ(RSB€
'0Q(1;'V†''$:Q7&10Š9:Q H''("&)%'gE1:!!

(Rp+?#: :$*&''$':$&)lB…!'0$@Jt#: H'
'+'<'B€' $8&B•&9*~X$VE"/'•7&@u'y$$
H'BL"PC1$79:?quS'(QS/T#:t(V$$%
 EBE-V$BL"P&.@8@JABmuS
-1BE.9:t'8$%1R'l EBEH9K$':A•1$%'‡
#0$uSNO"Pp("b#:'yBL"P H' EBEt@JtBm
''‰ZZggggQ(Z===ZDZY("bYB)'rYB˜ 9:  Q  d 1$8& "$G  (E"$'E
 ''‰ZZggggQ(Z===ZDZY("bYB)'rYB˜')E ':?$q rdf:
type
T[U V<0jEYk>
(Q'(ya10V1$7'S10A1$8&"$GpQM<V'I
'0$i$*&@!V!#:<V'I'0$p'(Q'(ya:)S/T
@(V$$% q$#:~anonymous•QM~blank nodes•>#VQ"E#: H'
Q"E1;'Vp<V!S
Hình 2-1: blank nodes trong mạng xã hội thể hiện thành viên
(Q1$8&"$G'($#Ep>#VQ"E@a'8$%1R3&)'?@M''l™‰$"p'(Q
@!$"#:'s)|2$B&);''(Q0 9$@I'$
NO"Pp1$8&'h@J"0'($#EQ mhình 2-1B&
(_:ax1, "weblog", "")
(_:ax1, "surName", "Segaran")
(_:ax1, "givenName", "Toby")
(_:ax1, "knows", _:zb7)
(_:zb7, "surName", "Taylor")
(_:zb7, "givenName", "Jamie")
(_:zb7, "email", "")

W
Q:$(>#VQ"E#: H'Q"E!|1QI B6V7'au$*&
':AV :V$$% SuQ"E@!V'I'0$QM2$#:B6
V7'au$*&Q"EBV$NO"P'(Q hình 2-2 #:@$8Q! 
':A;&':1#VQ"E
Hình 2-2: blank node mô hình hóa một địa chỉ liên lạc
T9U (.^k`<V2<VXk>s.K^`p01FS<fk0
/STBL"P#$'E(#9#&EB''6 :9O"P9*(@o#: p!'8$%
V$8&12;'9*B&1“E'9:Q1“E'H'#$'E(#9#&EB!'8!$'(J
's)  q  9*      QM  V$8&  "  #$%&  9O  "Pp
''‰ZZggggQ(ZDDZ[X5E ˜$' ')Q$'(JB+&)lo5_
,=@aBL"P@8t@JwNO"PpenQ'$7]QMjaQ
f'>2
 @J"0#&'(/ST
BL"PS/T'"yV@$2;&'(<#&'(<
'Vh'0p'&)$l<'V#Q#?9*@$*&:)9S/T@o!B„
&j@J"0#&'(V'+'
<'B€' $8&1+@J"0'&A'6!m@•)‰N-Triplesp '2@$2
;'wN3p$l12?quY($#EwRDF / XMLp H''(Q@J
"0BL"P'yr&)l;'9:&+$spˆRDF in attributesˆ-S/T.p
@a<9:QbQ( 'V[X


×