Tbox语言
(1) 定义:引入概念及关系的名称,如 Mother、Person、has_child
(2) 包含:声明包含关系的公理,例如 M o t h e r ⊑ ∃ h a s _ c h i l d . P e r s o n \mathrm{Mother} \sqsubseteq \exists \mathrm{has\_child}.\mathrm{Person} Mother⊑∃has_child.Person
描述逻辑的知识库 K : = ⟨ T , A ⟩ K:=\langle{T,A}\rangle K:=⟨T,A⟩, T T T 即 TBOx , A A A即ABOx。
(2)描述逻辑的语义
描述逻辑的语义:
解释Ⅰ是知识库 K K K 的模型,当且仅当Ⅰ是 K K K 中每个断言的模型。若一个知识库 K K K 有一个模型,则称 K K K 是可满足的。若断言σ对于 K K K 的每个模型都是满足的,则称 K K K 逻辑蕴含 σ \sigma σ,记为 K ⊨ σ K⊨\sigma K⊨σ。对概念 C C C,若 K K K 有一个模型Ⅰ使得 C Ⅰ ≠ ϕ C^Ⅰ\neq\phi CⅠ̸=ϕ 则称 C C C 是可满足的。
以第一个为例进行说明。第一个是说如果 C C C 和 D D D 的 ( x ) (x) (x) 的合取是 ϕ \phi ϕ,且 C ( x ) C(x) C(x) 和 D ( x ) D(x) D(x) 不在 ϕ \phi ϕ 里,则 ϕ \phi ϕ 有可能只包含了部分 C C C,而 C ( x ) C(x) C(x) 不在里面,那么我们就把它们添加到 ϕ \phi ϕ 里。下面我们举个实际的例子:
(2)示例
示例:检测实例 Allen 是否在 Woman中? 即:检测 W o m a n ( A l l e n ) \mathrm{Woman(Allen)} Woman(Allen) ?
M a n ⊓ W o m a n ⊑ ⊥ \mathrm{Man}\sqcap\mathrm{Woman}\sqsubseteq\bot Man⊓Woman⊑⊥
M a n ( A l l e n ) \mathrm{Man(Allen)} Man(Allen)
其解决流程为:
首先加入带反驳的结论:
M a n ⊓ W o m a n ⊑ ⊥ \mathrm{Man}\sqcap\mathrm{Woman}\sqsubseteq\bot Man⊓Woman⊑⊥
M a n ( A l l e n ) \mathrm{Man(Allen)} Man(Allen)
W o m a n ( A l l e n ) \mathrm{Woman(Allen)} Woman(Allen)
初始Abox,记为 ϕ \phi ϕ,其内包含 M a n ( A l l e n ) \mathrm{Man(Allen)} Man(Allen)、 W o m a n ( A l l e n ) \mathrm{Woman(Allen)} Woman(Allen)。
运用 ⊓ − \sqcap^- ⊓− 规则,得到 M a n ⊓ W o m e n ( A l l e n ) \mathrm{Man}\sqcap \mathrm{Women(Allen)} Man⊓Women(Allen)。将其加入到 ϕ \phi ϕ 中,
现在的 ϕ \phi ϕ 为 M a n ( A l l e n ) W o m a n ( A l l e n ) M a n ⊓ W o m e n ( A l l e n ) \mathrm{Man(Allen)} \ \ \ \mathrm{Woman(Allen)} \ \ \ \ \mathrm{Man}\sqcap \mathrm{Women(Allen)} Man(Allen) Woman(Allen) Man⊓Women(Allen)。
运用 ⊑ \sqsubseteq ⊑ 规则到 M a n ⊓ W o m e n ( A l l e n ) \mathrm{Man}\sqcap \mathrm{Women(Allen)} Man⊓Women(Allen) 与 M a n ⊓ W o m e n ⊑ ⊥ \mathrm{Man}\sqcap \mathrm{Women}\sqsubseteq\bot Man⊓Women⊑⊥ 上,得到 ⊥ A l l e n \bot\mathrm{Allen} ⊥Allen。
此时的 ϕ \phi ϕ 包含 M a n ( A l l e n ) W o m a n ( A l l e n ) M a n ⊓ W o m e n ( A l l e n ) ⊥ A l l e n \mathrm{Man(Allen)} \ \ \ \mathrm{Woman(Allen)} \ \ \ \ \mathrm{Man}\sqcap \mathrm{Women(Allen)}\ \ \ \ \bot\mathrm{Allen} Man(Allen) Woman(Allen) Man⊓Women(Allen) ⊥Allen。
运用 ⊥ \bot ⊥ 规则,拒绝现在的 ϕ \phi ϕ 。
得出 Allen 不在 Woman 的结论。如果 W o m a n ( A l l e n ) \mathrm{Woman(Allen)} Woman(Allen) 在初始情况已存在于原始本体,那么推导出该本体不可满足!
形式: p ( t 1 , t 2 , . . . , t n ) p(t_1,t_2,…,t_n) p(t1,t2,...,tn),其中 p p p 是谓词, n n n 是目数, t i t_i ti 是项 (变量或常量),
例如: h a s _ c h i l d ( X , Y ) \mathrm{has\_child(X, Y)} has_child(X,Y);
规则(Rule)
形式: H : − B 1 , B 2 , … , B m . H:−B_1,B_2,…,B_m. H:−B1,B2,…,Bm.,由原子构建,其中 H H H 是头部原子, B 1 , B 2 , … , B m B_1,B_2,…,B_m B1,B2,…,Bm 是体部原子。
例如: h a s _ c h i l d ( X , Y ) : − h a s _ s o n ( X , Y ) . \mathrm{has\_child(X,Y):−has\_son(X, Y).} has_child(X,Y):−has_son(X,Y).
事实(Fact):
形式: F ( c 1 , c 2 , … , c n ) : − F ( c 1 , c 2 , … , c n ) : − F(c_1,c_2,…,c_n):−F(c_1,c_2,…,c_n):− F(c1,c2,…,cn):−F(c1,c2,…,cn):−,它是没有体部且没有变量的规则,
例如: h a s _ c h i l d ( A l i c e , B o b ) : − \mathrm{has\_child(Alice,Bob):−} has_child(Alice,Bob):−
Datalog程序是规则的集合
示例:
h a s _ c h i l d ( X , Y ) : − h a s _ s o n ( X , Y ) . h a s _ c h i l d ( A l i c e , B o b ) : − \mathrm{has\_child(X,Y):−has\_son(X, Y).} \\ \mathrm{has\_child(Alice,Bob):−} has_child(X,Y):−has_son(X,Y).has_child(Alice,Bob):−
可以以 Datalog 为中间语言,首先重写 SPARQL 语言为 Datalog ,再将 Datalog 重写为 SQL。
S P A R Q L → D a t a l o g → S Q L \mathrm{SPARQL→Datalog→SQL} SPARQL→Datalog→SQL
基本流程:
给定Datalog 规则如下:
C o o r d i n a t o r ⊑ R e s e a r c h e r ∃ w o r k F o r ⊑ R e s e a r c h e r ∃ w o r k F o r − ⊑ P r o j e c t R e s e a r c h e r ⊑ ∃ w o r k F o r P r o j e c t ⊑ ∃ w o r k F o r − ∃ n a m e − ⊑ x s d : S t r i n g R e s e a r c h e r ⊑ ∃ n a m e P r o j e c t ⊑ ∃ n a m e \begin{aligned} \mathrm{Coordinator} \sqsubseteq & \mathrm{Researcher} \\ \exists\mathrm{workFor} \sqsubseteq & \mathrm{Researcher} \\ \exists\mathrm{workFor-} \sqsubseteq & \mathrm{Project} \\ \mathrm{Researcher} \sqsubseteq & \exists\mathrm{workFor} \\ \mathrm{Project} \sqsubseteq & \exists\mathrm{workFor-} \\ \exists\mathrm{name-} \sqsubseteq &\mathrm{xsd:String} \\ \mathrm{Researcher} \sqsubseteq & \exists\mathrm{name} \\ \mathrm{Project} \sqsubseteq & \exists\mathrm{name} \end{aligned} Coordinator⊑∃workFor⊑∃workFor−⊑Researcher⊑Project⊑∃name−⊑Researcher⊑Project⊑ResearcherResearcherProject∃workFor∃workFor−xsd:String∃name∃name
底层数据具体为某数据库中为下图中的两张表:
步骤一: 重写为 Datalog 查询
过滤不需要的公理 (通过语法层过滤)
生成所有相关的 Datalog 查询
q ( x ) ← w o r k s F o r ( x , y ) , P r o j e c t ( y ) q ( x ) ← w o r k s F o r ( x , y ) , w o r k s F o r ( , y ) q ( x ) ← w o r k s F o r ( x , _ ) q ( x ) ← R e s e a r c h e r ( x ) q ( x ) ← C o o r d i n a t o r ( x ) \begin{aligned} \mathrm{q(x)} \leftarrow & \mathrm{worksFor(x,y),Project(y)} \\ \mathrm{q(x)} \leftarrow & \mathrm{worksFor(x,y),worksFor(_,y)} \\ \mathrm{q(x)} \leftarrow & \mathrm{worksFor(x,\_)} \\ \mathrm{q(x)} \leftarrow & \mathrm{Researcher(x)} \\ \mathrm{q(x)} \leftarrow & \mathrm{Coordinator(x)} \end{aligned} q(x)←q(x)←q(x)←q(x)←q(x)←worksFor(x,y),Project(y)worksFor(x,y),worksFor(,y)worksFor(x,_)Researcher(x)Coordinator(x)
步骤二: 将数据库关系表达式映射成 Datalog 原子
形如: ( t y p e a t t r 1 : v a l 1 a t t r 2 : v a l 2 . . . a t t r n : v a l n ) \mathrm{(type\ attr_1:val_1\ attr_2:val_2…attr_n:val_n)} (type attr1:val1 attr2:val2...attrn:valn),其中 t y p e a t t r i v a l i \mathrm{type\ attr_i\ val_i} type attri vali 均为原子 (常量);
示例:(student name:Alice age:24)。
描述关系(Refication):
例如: ( b a s i c F a c t r e l a t i o n : o l d e r T h a n f i r s t A r g : J o h n s e c o n d A r g : A l i c e ) \mathrm{(basicFact\ relation:olderThan\ firstArg:John\ secondArg:Alice)} (basicFact relation:olderThan firstArg:John secondArg:Alice) 简记为 ( o l d e r T h a n J o h n A l i c e ) \mathrm{(olderThan John Alice)} (olderThanJohnAlice)。
2. 产生式集合(Production Memory, PM)
定义:产生式的集合。
产生式:
I F c o n d i t i o n s T H E N a c t i o n s \mathrm{IF} \ \ \color{red}{conditions} \ \ \color{black}{\mathrm{THEN}} \ \ \color{red}{actions} IF conditions THEN actions
条件的形式为: ( t y p e a t t r 1 : s p e c 1 a t t r 2 : s p e c 2 . . . a t t r n : s p e c n ) \mathrm{(type\ \ attr_1:spec_1\ \ attr_2:spec_2…attr_n:spec_n)} (type attr1:spec1 attr2:spec2...attrn:specn)
其中 s p e c i \mathrm{spec_i} speci 表示对 a t t r i \mathrm{attr_i} attri 的约束,形式可取如下的一种:
原子,如:Alice ( p e r s o n n a m e : A l i c e ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\mathrm{person\ name:Alice}) (person name:Alice)
变量,如: x x x ( p e r s o n n a m e : x ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\mathrm{person\ name:}x) (person name:x)
表达式,如: [ n + 4 ] [n+4] [n+4] ( p e r s o n a g e : [ n + 4 ] ) \ \ \ \ \ \ \ \ \ \ \ (\mathrm{person\ age:}[n+4]) (person age:[n+4])
布尔测试,如: { > 10 } \{>10\} {
>10} ( p e r s o n a g e : [ > 10 ] ) \ \ \ \ \ \ \ \ (\mathrm{person\ age:}[>10]) (person age:[>10])
约束的 与、或、非 操作
RHS
定义:动作序列,即执行时的顺序,是依次执行的;
动作的种类包含:
A D D p a t t e r n \mathrm{ADD}\ \ pattern ADD pattern:向WM中加入形如pattern的WME。
R E M O V E i \mathrm{REMOVE}\ \ i REMOVE i:从WM中移除当前规则第 i i i 个条件匹配的 WME。
M O D I F Y i ( a t t r s p e c ) \mathrm{MODIFY }\ \ i\ \ (attr\ spec) MODIFY i (attr spec):对于当前规则第 i i i 个条件匹配的 WME,将其对应于 a t t r attr attr 属性的值改为 s p e c spec spec。
示例:若有一个学生名为 ? x ?x ?x,则向事实集中加入一个事实,表示有一个名为 ? x ?x ?x 的人。
I F ( S t u d e n t n a m e : x ) T h e n A D D ( P e r s o n n a m e : x ) \mathrm{IF\ (Student\ name:}x) \mathrm{\ Then\ ADD\ (Person\ name:}x) IF (Student name:x) Then ADD (Person name:x) 也可写作 ( S t u d e n t n a m e : x ) ⇒ A D D ( P e r s o n n a m e : x ) \mathrm{(Student\ name:}x) \Rightarrow \mathrm{ADD\ (Person\ name:}x) (Student name:x)⇒ADD (Person name:x)
示例:
( S t u d e n t n a m e : x ) ⇒ . . . (\mathrm{Student\ name:}x) \Rightarrow … (Student name:x)⇒...
( S t u d e n t n a m e : x a g e : 20 ) ⇒ . . . (\mathrm{Student\ name:}x\ \mathrm{age}:20) \Rightarrow … (Student name:x age:20)⇒...
存在上述两条规则时,若根据具体性,则选择第二条
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。