一种基于概念分解的政策精化方法Word文档格式.docx
《一种基于概念分解的政策精化方法Word文档格式.docx》由会员分享,可在线阅读,更多相关《一种基于概念分解的政策精化方法Word文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
c)验证低层政策是否满足高层政策的要求。
目前,政策精化方法越来越受到研究人员的重视,采用基于本体的政策精化方法是一个研究趋势。
随着本体语言OWL[4]的日渐流行,它也被用于作为政策的描述语言,使得基于政策的系统管理能够利用本体在语义方面的优势更好地对系统进行管理。
因为在政策精化过程中,利用本体中概念之间的语义关系,可以很容易地对一些抽象的概念进行细化分解。
本文提出了一种基于概念分解的政策精化方法,其实质就是利用本体中蕴涵的一些语义关系,将抽象政策中表达抽象约束或规则的概念细化为具体的、语义单一的约束或规则的
集合,从而实现政策的精化。
1基于概念分解的政策精化算法
政策精化就是将抽象的、不可执行的政策转换为具体的、可执行的政策。
一般来说,政策由政策主体、政策客体、触发事件、条件约束和政策动作等部分组成。
其中,政策主体是政策的执行者;
政策客体是政策执行对象;
触发事件是触发政策执行的事件;
条件约束是政策动作的约束条件。
政策的各个部分均可以采用抽象概念来表示,政策精化的过程就是将表示政策各部分的抽象概念细化为语义上单一的概念集合的过程,从而使由抽象概念表示的抽象政策变为具体、不可再分的概念表示的具体政策。
本体由概念和概念之间的关系构成,利用本体中蕴涵的概念之间的语义关系,通过适当的推理来进行概念之间的细化,可以实现政策的精化。
在进行政策精化之前,需要采用规范的格式对政策进行描述。
在这里,采用本体语言OWL来表示政策,可以直接引用本体中的概念来定义政策,每个政策都作为政策这个概念的一个实例形式而存在于本体文件中,每个政策包含了政策的主/客体、政策的触发事件和触发条件以及政策的动作等属性,这些属性都是对相应本体中的某个概念或概念实例的一个引用。
在本体中,一个概念可以包含针对某些在本体中定义的属性的约束。
这样,可以将政策中的条件约束定义在本体的某个概念中,对该政策的条件约束的细化就归结为对该概念的细化。
本体中定义了一些不同抽象层次的属性,所以针对高层属性的约束可以通过语义关系推理转换为低层属性约束。
本文抽象政策中定义的条件约束大多是针对高层属性而定义的,所以对政策的条件属性进行精化其实质就是将这些针对高层属性定义的约束转换为针对相应的低层属性而定义的约束。
对政策的其他属性也可以通过概念分解进行细化。
一个政策包含以下几个属性:
主体、客体、触发事件、条件约束以及动作。
用OWL形式描述如下:
〈Policyrdf:
ID="
policyID"
〉
〈hasSubjectrdf:
resource="
#subject"
/〉
〈hasObjectrdf:
#object"
〈hasTriggerrdf:
#triggerEvent"
〈hasConditionrdf:
#P_Condition"
〈hasActionrdf:
#P_Action"
〈/Policy〉
其中:
政策的主体、客体、触发事件、约束条件、动作都为本体中相应概念或实例的一个引用。
概念分解是指将定义在本体中的一个概念(包括类、属性等)分解成一些子概念的集合。
政策精化算法是基于概念分解的,主要根据本体中的语义包含关系来进行概念分解。
当一个抽象的政策输入到政策精化程序后,它首先解析政策的相关属性,如政策的主体、客体、政策的触发事件、政策的约束条件以及政策的行为;
然后针对它们分别进行精化(如果需要的话)。
例如,当精化政策的约束条件时,首先在相关本体中查找与它相对应的概念,然后对这些概念进行相应的细化。
在下面描述的政策精化算法中主要是针对政策的条件以及动作相关概念进行细化分解,找出每个概念中可能包含的一些针对某些属性的约束,最后得出低层的属性约束集合,该约束集合中的约束构成了政策执行的条件集合。
设C为精化后条件约束的集合,abstract_C为抽象条件约束的集合,S_C为条件概念的集合。
基于概念分解的政策精化步骤如下:
a)构建相关的领域本体和政策本体,利用其中的概念将一个商务目标表示为一个抽象政策作为政策精化程序的输入。
b)从抽象的政策中提取相关的信息,得出政策的主体、客体、触发事件、政策约束条件以及动作。
这些都是本体中的概念或概念实例。
c)初始化集合C,abstract_C,S_C分别为空。
?
オ?
d)将政策中引用的条件概念加入到集合S_C中。
e)如果S_C为空,转f);
否则,从S_C中取出一个条件概念,得出它的约束(集),如果约束集为空,将该条件概念的子概念(如果有的话)添加到集合S_C中,转e);
否则,将该条件概念的约束添加到约束集abstract_C中。
f)如果abstract_C为空,转h);
否则,从abstract_C中取出一个约束(集合的元素),如果该约束是针对某个对象属性的一个基数限定型的一个约束,转g);
否则,将该约束添加到集合C中,转e)。
g)针对基数限定型的对象属性约束O_C,首先得出它的取值范围,这个取值范围对应本体中的一个概念P_concept。
如果P_concept及其子概念均不存在约束,则将O_C添加到集合C中;
否则,将P_concept或其子概念添加到S_C中,转e)。
h)对于主体、客体、触发事件等,如果为概念而非概念实例,可将它们视同条件概念,加入到S_C中,转e);
否则转i)。
i)对于一个动作概念,得出它的约束(一般为动作的前置条件或后置条件),将其加入到约束集C中去。
j)根据约束集C中的约束,向政策本体中添加一个概念P,该概念包含了约束集C中的所有约束,并将生成的精化后的政策输出到相应的政策文件中。
上述给出了政策精化算法的执行步骤,其基本思路就是政策中所引用的条件概念为起点,将其视为概念分解树的一个根,将其约束作为其子节点,针对每个约束,如果是基数限定型的对象约束,则以它为根继续分解。
最后,将处于概念树中叶子处的约束存入结果集中。
基于概念分解的政策精化方法以概念分解为手段,其实质就是设法找出政策执行时所需要的一些指标参数,这些参数有些是执行动作本身所需的输入参数,有些则是政策外加的。
在具体执行政策时,根据赋值情况来决定政策是否执行以及执行的结果。
2原型实现与案例分析
下面通过一个例子来说明本文的政策精化方法,本例子只对政策约束条件进行精化,同理也可完成对政策其他部分的精化。
定义这样一条抽象政策“如果收到开会请求,请安排一次会议”,通过对这条政策进行精化后,要得出开会的相关信息(开会的一些条件)。
首先需要进行语义信息建模,即建立相关的本体;
然后要将政策表示为OWL语言的形式;
通过对政策精化实例分析,描述了算法流程,并讨论其原型实现以及算法的性能。
2.1本体建立
本体相当于一个信息模型,它以一种平台无关的方式描述了不同受管对象的特征、行为以及领域相关的一个概念,包括类、属性、关系以及约束等。
建立一个非常简单的本体,它表示了一个会议所包含的一些概念,包括11个概念、4个对象属性以及1个数据类型属性。
它们之间的关系如图1所示。
此外,笔者也制定了政策本体,包含了政策概念以及相关属性。
由图2可知,政策主要包含以下信息:
政策主体、政策客体、政策触发条件、政策的约束条件以及动作。
2.2政策及其相关概念表示
政策表达必须严格遵循本体中描述的术语(概念),以便精化过程的进行。
在采取的政策表示方法中,精化前的政策表示形式与精化后的政策表示形式是一致的,不同之处就是政策的相关属性所引用的概念(实例)有所不同。
这里表达一个政策“一旦收到开会请求,就安排开会”。
在定义政策之前,定义一个对象属性hasMeeting添加到本体库。
这样该条政策的OWL形式描述如下:
p1"
#agent1"
#agent2"
#requestEvent"
#P_Cond1"
#scheduleAMeeting"
其中,条件P_Cond1的具体定义如下:
〈owl:
Classrdf:
about="
〈rdfs:
subClassOfrdf:
Condition"
subClassOf〉
onPropertyrdf:
#hasMeeting"
cardinalityrdf:
datatype="
&
xsd:
nonNegativeInteger"
〉1〈/owl:
cardinality〉
〈/rdfs:
〈/owl:
Class〉
动作scheduleAMeeting的定义如下:
#scheduleAMeeting"
subClassOfrdf:
#Action"
Restriction〉
#hasMeetingTime"
hasValuerdf:
#time1"
〈Timerdf:
〈from〉9〈/from〉
〈to〉12〈/to〉
〈/time〉
2.3政策精化实例分析
下面以上述的算法为基础,逐步地演示政策精化的过程。
a)根据2.2节定义了政策,从中提取抽象政策的条件概念为P_Cond1,将其添加到S_C中。
此时S_C={P_Cond1}。
b)从S_C中取出一个元素P_Cond1,得出它的约束集添加到集合abstract_C。
此时,abstract_C={(hasMeetingexactly1)}。
c)从abstrac_C中取出约束(hasMeetingexactly1),这个约束属于基数限定型的约束。
本文首先得出属性hasMeeting的取值范围为meeting;
然后根据本体中定义的信息,得出概念meeting的约束有{(hasLocationexactly1)(hasMeetingDateexactly1)(hasParticipantexactly1),(hasNumberOfParticipantsmin10)}。
此时,abstract_C={(hasLocationexactly1)(hasMeetingDateexactly1)(hasNumberOfParticipantsmin10),(hasParticipantexactly1)}。
d)从abstract_C中取出一个约束(hasLocationexactly1),属性hasLocation的取值范围为location,因为本体中location及其子概念均没有定义针对属性的约束,则将其添加到集合C中。
此时C={(hasLocationexactly1)}。
e)从abstract_C中取出一个约束(hasMeetingDateexactly1),因概念date不存在约束且无子概?
┠睿?
则将其添加到集合C中。
f)从abstract_C中取出一个约束(hasNumberOfParticipantsmin10),为数值类型属性约束,故直接将其添加到C中。
此时,C={(hasLocationexactly1),(hasMeetingDateexactly1)(hasNumberOfParticipantsmin10)}。
g)从abstract_C中取出约束(hasParticipantexactly1),因概念participant的子概念student有约束(hasStudentTypeonlyGraduate)故将其添加到C中,此时abstract_C为空。
h)得出动作概念scheduleAMeeting的约束(hasMeetingTimehastime1)。
因为time1已经是一个概念实例,将其添加到C中。
i)最后得到的结果集C={(hasLocationexactly1),(hasMeetingDateexactly1)(hasNumberOfParticipantsmin10),(hasStudentTypeonlygraduate),(hasMeetingTimehastime1)}。
最后得到的结果集就是政策执行的一些条件,生成概念PP_Cond1,如下所示:
#PP_Cond1"
#Condition"
#hasMeetingDate"
xsd;
〈/owl:
〈/rdfs:
〈rdfs:
〈owl:
#hasLocation"
#hasNumberOfParticipants"
minCardinalityrdf:
〉10〈/owl:
minCardinality〉
hasStudentType"
allValuesFromrdf:
#Graduate"
#hasMeetingTime"
所以,得到最后的精化政策表示为:
pp1"
〈/policy〉
2.4原型实现
利用agent来扮演政策的控制方和执行方,为此,采用JADE[5]作为agent的运行平台。
采用Proté
gé
OWLAPI[6]和Pollet[7]语义推理工具来操纵和分析本体,进而执行概念细化分解的过程。
图3为政策定义界面,用于定义政策。
保存政策到相应的政策文件后,就可以从中读取相应的政策进行精化操作。
运行情况如图4所示。
2.5性能分析
本文的政策精化方法依赖于本体概念之间的语义构建,将低层概念的约束作为高层概念约束的子节点。
算法采用深度优先的顺序构建概念分解树。
本体中语义关系越复杂,所需花费的时间越多。
假设本体中涉及的概念数为m,政策精化过程中涉及的概念数为n,显然m≥n。
m越大,表明本体越复杂,这样在对本体进行分析时所需要的时间越多。
在政策精化过程中,同步建立了一棵概念分解树,树的节点数与n成倍数关系,故时间复杂度为O(n)。
在进行概念分解的过程,建立的概念树的层次越高,算法所耗时间越多,同时从概念之间的语义相关度方面来考虑,层次太深,得到的低层约束集与最初的高层约束集的语义相关度降低,影响精化后的结果与原始目标的一致性,所以为了保证算法所耗时间适当,同时保证高层约束集与低层约束集语义之间的高相关性,在制定本体时会控制概念语义关系的层次,以使概念树的深度不至于太深,同时使得精化结果合理。
3相关研究
目前,政策精化方法的研究仍是一个比较开放的课题,有基于静态规则转换的、有基于目标分解的、有基于本体的等一些政策精化方法,它们大都从不同的应用背景和角度来设计。
基于静态规则的方法[8,9]是预先定义一组规则或规划模块把政策中的高级目标映射到系统可理解的配置参数,这些规则由熟悉系统细节的专家定义,然后政策转换模块依据这些规则或规划模块直接把高级目标映射为底层配置参数。
显然,这种基于规则或规划模板的方法自动化程度高,实现比较简单。
不足之处是政策精化依赖于事先定义的静态规则或处方,不适用于需求和应用环境是动态的情况。
本文提出的基于概念分解的政策精化方法,概念之间的语义关系蕴涵在本体中,通过语义推理等手段进行概念分解,从而得到一个约束集。
事实上,只要本体的语义足够丰富,该方法也可以实现精化过程的自动化,并且,可以通过修改或更换本体以适应不同的应用环境。
在本文方法中,对某个概念进行分解实际上可视为遍历蕴涵在本体中的以该概念为根的一棵语义分解树。
这与事先定义的规划模板有点类似,不过相对于规划模板,此更改更容易、更简单一些,即只需要在相应的本体中添加相关的概念或修改某些概念,这个操作均有非常方便的图形界面工具支持,同时,通过在本体中添加或修改相应的本体可以适应更多的情况。
基于目标分解的方法[10~12]采用对需求进行细化分解,得到一些低层的目标,通过实现这些低层的目标来满足高层目标。
该方法利用了一种通过对低级动作的推理来满足高级目标的政策精化方法,利用了基于目标的需求描述和事件演算等已有的技术,即先将抽象目标逐步转变为具体的可操作目标,然后确定满足这些需求的具体操作。
在本文方法中,在政策定义阶段已经指定了相关动作,政策精化的主要任务就是找出动作执行的条件,包括动作本身的前置条件和后置条件,以及政策所规定的一些条件,这个过程会涉及到概念的语义分解。
与目标分解相比,由于具有语义方面的支持,分解过程要容易些。
利用本体的语义等方面的优势进行政策精化在最近得到重视。
通过基于本体上的语义推理,将高层政策转换为低层政策[13],该方法将较高抽象层指定的行为与网络层预期的行为绑定起来,这样本体推理器就可以在运行时动态地执行从高层政策到低层政策的精化过程。
该方法建立在本体以及SWRL规则库的基础之上,本体描述了低层本体与高层本体之间的关系,SWRL规则库描述了怎样通过低层本体信息设置高层本体信息。
当然,通过将本体与其他技术相结合来进行政策精化过程也是一种研究方法[14]。
该方法将低层设备提供的