一种基于领域本体的语义工作流索引构造及检索方法转让专利
申请号 : CN201910754733.7
文献号 : CN110457490B
文献日 : 2021-06-18
发明人 : 孙晋永 , 赵响
申请人 : 桂林电子科技大学
摘要 :
权利要求 :
1.一种基于领域本体的语义工作流索引构造及检索方法,其特征在于,包括如下步骤:
1)建立语义工作流的领域任务本体和领域数据本体;
2)构造语义工作流的结构特征索引SWStructIndex及其检索方法,索引SWStructIndex包括一步路径索引Path1Index、数据‑工作流索引DataIndex、数据‑任务索引DataTaskIndex和两步路径索引Path2Index;
3)构造语义工作流的行为特征索引SWBebavIndex及其检索方法,索引SWBebavIndex包括任务因果关系索引CasualIndex、任务互斥关系索引ExclusiveIndex、任务并行关系索引ParalellIndex和任务循环关系索引LoopIndex;
4)当与控制流、数据流相关的多个查询条件组合时,检索方法为:首先,执行满足控制流或数据流相关的每个查询条件的语义工作流或任务集合检索任务;然后,计算所有查询结果集的交集作为最终结果集返回;
5)更新语义工作流的结构和行为特征索引:当一个新语义工作流加入语义工作流库时,结构特征索引SWStructIndex和行为特征索引SWBebavIndex均可以增量构造;当从语义工作流库中删除语义工作流时,先记录该工作流,待被删除的语义工作流达到设定数量后,一次将它们涉及的索引项删除或更新;
步骤2)中,所述的一步路径索引Path1Index,索引项的形式为(task,S1),其中task为任务节点,S1为包含task的语义工作流集合;
一步路径索引Path1Index的构造方法为:首先,获取语义工作流库SWC中某语义工作流SW的任务节点集合TS;然后,若某任务节点task∈TS在索引Path1Index中不存在,则先新建一个索引项(task,S1),将SW的ID加入集合S1中;若task已存在,则直接将SW的ID加入task对应索引项的集合S1中;遍历SW的任务节点集合TS、语义工作流库SWC,建立索引Path1Index;
将索引Path1Index存储为(task.hashcode,S1.pointer),其中task.hashcode为一步路径或任务节点task的语义描述的哈希值,S1.pointer指向语义工作流集合S1的存储位置;
一步路径索引Path1Index的检索方法为:对于给定的查询任务节点qtask,若qtask在索引Path1Index中已存在,则直接返回qtask对应索引项的集合S1;若qtask在索引中不存在,说明在语义工作流库SWC中不存在包含qtask的语义工作流,则基于本体中父子概念间的较高语义相似性,使用子概念代替父概念;先在领域任务本体中查询qtask的语义描述对应概念C的直接子概念C1,然后获取包含C1对应任务节点的语义工作流集合,遍历概念C的所有直接子概念得到多个这样的集合,最后计算这些集合的并集作为S1返回;
所述的数据‑工作流索引DataIndex,包括输入数据‑工作流索引DataInIndex和输出数据‑工作流索引DataOutIndex两种;
i)输入数据‑工作流索引DataInIndex的索引项形式为(dataIn,S2),其中dataIn为语义工作流的输入数据对象,S2为输入数据对象集合包含dataIn的语义工作流集合;
输入数据‑工作流索引DataInIndex的构造方法为:首先,获取语义工作流库SWC中某语义工作流SW的输入数据对象集合DSIn;然后,若dataIn∈DSIn在索引DataInIndex中不存在,则新建一个索引项(dataIn,S2),将SW的ID加入集合S2中,若dataIn已存在,则直接将SW的ID加入S2,遍历SW的输入数据对象集合DSIn、语义工作流库SWC,建立索引DataInIndex;将索引DataInIndex存储为(dataIn.hashcode,S2.pointer),其中dataIn.hashcode为数据对象dataIn的语义描述的哈希值,S2.pointer指向语义工作流集合S2的存储位置;
输入数据‑工作流索引DataInIndex的检索方法为:对于给定的查询数据节点qdataIn,若qdataIn在索引DataInIndex中已存在,则直接返回qdataIn对应索引项的集合S2;若qdataIn在索引中不存在,说明SWC中不存在输入数据对象集合包含qdataIn的语义工作流,则基于本体中父子概念间的较高语义相似性,使用子概念代替父概念;先在领域数据本体中查询qdataIn的语义描述对应概念C的直接子概念C1,然后获取输入数据对象集合包含C1对应任务节点的语义工作流集合,遍历概念C的所有直接子概念得到多个这样的集合,最后计算这些集合的并集作为S2返回;
ii)输出数据‑工作流索引DataOutIndex的索引项形式为(dataOut,S3),其中dataOut为语义工作流的输出数据对象,S3为输出数据对象集合包含dataOut的语义工作流集合;
输出数据‑工作流索引DataOutIndex的构造方法为:首先,获取语义工作流库SWC中某语义工作流SW的输出数据对象节点集合DSOut;然后,若dataOut∈DSOut在索引DataOutIndex中不存在,则新建一个索引项(dataOut,S3),将SW的ID加入集合S3中,若dataOut已存在,则直接将SW的ID加入S3;遍历集合DSOut、语义工作流库SWC,建立索引DataOutIndex;将索引DataOutIndex存储为(dataOut.hashcode,S3.pointer),其中dataOut.hashcode为数据对象dataOut的语义描述的哈希值,S3.pointer指向语义工作流集合S3的存储位置;
输出数据‑工作流索引DataOutIndex的检索方法为:对于给定的查询数据节点qdataOut,若qdataOut在索引DataOutIndex中已存在,则直接返回qdataOut对应索引项的集合S3;若qdataOut在索引中不存在,说明SWC中不存在输出数据对象集合包含qdataOut的语义工作流,则基于本体中父子概念间的较高语义相似性,使用子概念代替父概念;先在领域数据本体中查询qdataOut的语义描述对应概念C的直接子概念C1,获取输出数据对象集合包含C1对应任务节点的语义工作流集合;遍历概念C的所有直接子概念得到多个这样的集合,最后计算这些集合的并集作为S3返回;
所述的数据‑任务索引DataTaskIndex,包括输入数据‑任务索引DataInTaskIndex和输出数据‑任务索引DataOutTaskIndex两种;
i)索引DataInTaskIndex的索引项形式为(dataIn,TS1),其中dataIn为语义工作流的输入数据对象,TS1的形式为{(task,SW)},为输入数据对象集合包含dataIn的任务节点task及其所属语义工作流SW的集合;
数据‑任务索引DataTaskIndex的构造方法为:首先,获取语义工作流库SWC中某语义工作流SW的输入数据对象集合DSIn;然后,若dataIn∈DSIn在索引DataInTaskIndex中不存在,则新建一个索引项(dataIn,TS1),将SW中消耗dataIn的每个任务节点task的ID标识taskID加入集合TS1中,若dataIn已存在,则直接SW中消耗dataIn的每个任务节点task的ID标识taskID加入TS1;遍历SW的输入数据对象集合DSIn、语义工作流库SWC,建立索引DataInTaskIndex;将索引DataInTaskIndex存储为(dataIn.hashcode,TS1.pointer),其中dataIn.hashcode为数据对象dataIn的语义描述的哈希值,TS1.pointer指向任务节点集合TS1的存储位置;
数据‑任务索引DataTaskIndex的检索方法为:对于查询数据对象qdataIn,若qdataIn在索引DataInTaskIndex中已存在,则直接返回qdataIn对应索引项的任务节点集合TS1;若qdataIn在索引中不存在,说明SWC中不存在输入数据对象集合包含qdataIn的任务节点,则基于本体中父子概念间的较高语义相似性,使用子概念代替父概念;先在领域数据本体中查询qdataIn的语义描述对应概念C的直接子概念C1,然后获取输入数据对象集合包含C1所指代数据对象的任务节点集合;遍历概念C的所有直接子概念得到多个这样的集合,最后计算这些集合的并集作为TS1返回;
ii)索引DataOutTaskIndex的索引项形式为(dataOut,TS2),其中dataOut为语义工作流的输出数据对象,TS2的形式为{(task,SW)},为输出数据对象集包含dataOut的任务节点task及其所属语义工作流SW的集合;
索引DataOutTaskIndex的构造方法为:首先,获取语义工作流库SWC中某语义工作流SW的输出数据对象节点集合DSOut;然后,若dataOut∈DSOut在索引DataOutTaskIndex中不存在,则新建一个索引项(dataOut,TS2),将SW中生成dataOut的任务节点task的ID标识taskID加入集合TS2中,若dataOut已存在,则直接将SW中生成dataOut的任务节点task的ID标识taskID加入TS2;遍历集合DSOut、语义工作流库SWC,建立索引DataOutTaskIndex;将索引DataOutTaskIndex存储为(dataOut.hashcode,TS2.pointer),其中dataOut.hashcode为数据对象dataOut的语义描述的哈希值,TS2.pointer指向任务节点集合TS2的存储位置;
索引DataOutTaskIndex的检索方法为:对于给定的查询数据对象qdataOut,若qdataOut在索引DataOutTaskIndex中已存在,则直接返回qdataOut对应索引项的任务节点集合TS2;若qdataOut在索引中不存在,说明SWC中不存在输出数据对象集合包含qdataOut的任务节点,则基于本体中父子概念间的较高语义相似性,使用子概念代替父概念;先在领域数据本体中查询qdataOut的语义描述对应概念C的直接子概念C1,然后获取输出数据对象集合包含C1所指代数据对象的任务节点集合;遍历概念C的所有直接子概念得到多个这样的集合,最后计算这些集合的并集作为TS2返回;
所述的两步路径索引Path2Index,索引项形式为(
两步路径索引Path2Index的构造方法为:首先,获取语义工作流库SWC中某语义工作流SW对应语义标注图中的所有相邻任务节点对集合TA,然后,若ta∈TA在索引Path2Index中不存在,则先新建一个索引项(
将索引Path2Index存储为(
两步路径索引Path2Index的检索方法为:对于查询相邻任务节点对
步骤3)中,所述的任务因果关系索引CasualIndex,索引项的形式为(
任务因果关系索引CasualIndex的构造方法:首先,对于语义工作流库SWC中的某语义工作流SW,使用完全前缀展开法和最近公共前驱法计算SW的任务因果关系序偶集合TC,然后,若tc∈TC在索引CasualIndex中不存在,则先新建一个索引项(
任务因果关系索引CasualIndex的检索方法为:对于查询任务因果关系
所述的任务并行关系索引ParalellIndex,索引项的形式为(
任务并行关系索引ParalellIndex的构造方法为:首先,对于语义工作流库SWC中的语义工作流SW,使用完全前缀展开法和最近公共前驱法计算SW的任务并行关系集合TP;然后,若tp∈TP在索引ParalellIndex中不存在,则先新建一个索引项(
任务并行关系索引ParalellIndex的检索方法为:对于查询任务并行关系
所述的任务互斥关系索引ExclusiveIndex,索引项的形式为(
任务互斥关系索引ExclusiveIndex的构造方法为:首先,对于语义工作流库SWC中的某语义工作流SW,使用完全前缀展开法和最近公共前驱法计算SW的任务互斥关系集合TE;然后,若te∈TE在索引ExclusiveIndex中不存在,则先新建一个索引项(
任务互斥关系索引ExclusiveIndex的检索方法为:对于查询任务互斥关系
所述的任务循环关系索引LoopIndex,索引项的形式为(
任务循环关系索引LoopIndex的构造方法为:首先,对于语义工作流库SWC中的语义工作流SW,使用完全前缀展开法、最近公共前驱法和循环结构判断法计算SW的任务循环关系集合TL;然后,若tl∈TL在索引LoopIndex中不存在,则先新建一个索引项(
任务循环关系索引LoopIndex的检索方法为:对于查询任务循环关系
2.根据权利要求1所述的一种基于领域本体的语义工作流索引构造及检索方法,其特征在于,步骤1)中,具体是将语义工作流库中的语义工作流任务节点的语义描述看作与任务相关的概念,利用概念间的包含关系,构建任务本体的层次结构,建立领域任务本体;将语义工作流的数据对象节点的语义描述看作与数据对象相关的概念,利用概念间的包含关系,构建数据本体的层次结构,建立领域数据本体。
说明书 :
一种基于领域本体的语义工作流索引构造及检索方法
技术领域
背景技术
分析、控制与改进,以提高业务处理效率,改进产品质量,提高服务水平。而业务过程管理技
术可以被用于快速构建和更新过程感知信息系统,是现代企业和组织的信息系统的共性基
础性技术。
据流,适于建模以控制流为中心,且兼顾数据流的业务过程。与传统工作流相比,语义工作
流更适合建模工业环境中的生成制造过程,可以为工业大数据系统软件的开发及运行提供
一定的基础支持。目前,语义工作流的应用已经涵盖了业务过程、电子商务、医疗、软件开
发、科学分析和工业生产制造等领域。
效率是必须要解决的问题。
库,该方法可以得出满意的检索性能,对于规模较大的语义工作流库,实际上是不可行的。
Forbus等人提出一种用于相似性检索的MAC/FAC(Many are called but few are chosen)
模型。该模型由两个阶段构成:MAC阶段使用计算量较小的非结构匹配算法从项目池中过滤
出候选项目集;FAC阶段使用结构匹配算法从候选项目集中找出最匹配的项目。近年来,许
多系统都使用了这种两阶段检索方法。在图数据库领域应用这种方法成为一个趋势,比如
Graphgrep,G‑Hash,Periscope/GQ和gIndex,Fg‑Index等。但语义工作流所对应的语义标注
有向图是稀疏图,其中的频繁子图并不多,并且频繁子图不能覆盖所有的工作流模型。从而
图索引的检索技术不能直接用于相似语义工作流检索。
相似语义工作流检索方法。MAC阶段基于语义工作流的语义特征和语法特征进行过滤,FAC
阶段使用图检索方法选出最匹配的语义工作流。接着,Kendall‑Morwick等人在MAC阶段建
立路径索引:Path‑k(k为路径长度)进行语义工作流过滤。Müller等人使用聚类方法建立索
引结构,提出了基于排队的检索算法。Müller等人提出了用于POCBR的相似语义工作流检索
语言POQL,可以表达泛化的检索项目。以上检索方法仅关注业务过程模型或语义工作流的
结构特征,没有考虑它们的执行行为,因而检索结果集的准确性有待提高。
环和顺序结构。Weidlich等人指出在过程模型检索的一致性检查中应该考虑业务过程的数
据和资源。由于标签Petri网不含数据流并引入领域知识,故针对标签Petri网的过程模型
检索方法不能直接用于相似语义工作流检索。
索匹配科学工作流的方法。该方法基于包含关系确定数据、组件等属性间的匹配,进而获得
匹配工作流;提高了匹配科学工作流的检索准确性。
于是针对提高语义工作流检索效率这一需求,本发明提出了一种基于领域本体语义工作流
的索引构造及检索方法。
发明内容
作流的重用质量。
体的层次结构,建立领域任务本体;将语义工作流的数据对象节点的语义描述看作与数据
对象相关的概念,利用概念间的包含关系,构建数据本体的层次结构,建立领域数据本体;
引DataTaskIndex和两步路径索引Path2Index;
语义工作流集合;
新建一个索引项(task,S1),将SW的ID加入集合S1中;若task已存在,则直接将SW的ID加入
task对应索引项的集合S1中;遍历SW的任务节点集合TS、语义工作流库SWC,建立索引
Path1Index;在保存索引Path1Index时,不直接存储(task,S1),而是将Path1Index存储为
(task.hashcode,S1.pointer),其中task.hashcode为一步路径或任务节点task的语义描
述的哈希值,S1.pointer指向语义工作流集合S1的存储位置;
中不存在,说明在语义工作流库SWC中不存在包含qtask的语义工作流,则基于本体中父子
概念间的较高语义相似性,使用子概念代替父概念;先在领域任务本体中查询qtask的语义
描述对应概念C的直接子概念C1,然后获取包含C1对应任务节点的语义工作流集合,遍历概
念C的所有直接子概念得到多个这样的集合,最后计算这些集合的并集作为S1返回;
又因被另一任务节点消耗而不再被生成的数据对象),S2为输入数据对象集合包含dataIn的
语义工作流集合;
在,则新建一个索引项(dataIn,S2),将SW的ID加入集合S2中,若dataIn已存在,则直接将SW的
ID加入S2,遍历SW的输入数据对象集合DSIn、语义工作流库SWC,建立索引DataInIndex;在保
存索引DataInIndex时,不直接存储(dataIn,S2),而是将DataInIndex存储为
(dataIn.hashcode,S2.pointer),其中dataIn.hashcode为数据对象dataIn的语义描述的哈
希值,S2.pointer指向语义工作流集合S2的存储位置;
若qdataIn在索引中不存在,说明SWC中不存在输入数据对象集合包含qdataIn的语义工作
流,则基于本体中父子概念间的较高语义相似性,使用子概念代替父概念;先在领域数据本
体中查询qdataIn的语义描述对应概念C的直接子概念C1,然后获取输入数据对象集合包含
C1对应任务节点的语义工作流集合,遍历概念C的所有直接子概念得到多个这样的集合,最
后计算这些集合的并集作为S2返回;
义工作流集合;
中不存在,则新建一个索引项(dataOut,S3),将SW的ID加入集合S2中,若dataOut已存在,则直
接将SW的ID加入S3;遍历集合DSOut、语义工作流库SWC,建立索引DataOutIndex;在保存索引
DataOutIndex时,不直接存储(dataOut,S3),而是将索引DataOutIndex存储为
(dataOut.hashcode,S3.pointer),其中dataOut.hashcode为数据对象dataOut的语义描述的
哈希值,S3.pointer指向语义工作流集合S3的存储位置;
S3;若qdataOut在索引中不存在,说明SWC中不存在输出数据对象集合包含qdataOut的语义工
作流,则基于本体中父子概念间的较高语义相似性,使用子概念代替父概念;先在领域数据
本体中查询qdataOut的语义描述对应概念C的直接子概念C1,获取输出数据对象集合包含C1
对应任务节点的语义工作流集合;遍历概念C的所有直接子概念得到多个这样的集合,最后
计算这些集合的并集作为S3返回;
dataIn的任务节点task及其所属语义工作流SW的集合;
在,则新建一个索引项(dataIn,TS1),将SW中消耗dataIn的每个任务节点task的ID标识
taskID加入集合TS1中,若dataIn已存在,则直接SW中消耗dataIn的每个任务节点task的ID标
识taskID加入TS1;遍历SW的输入数据对象集合DSIn、语义工作流库SWC,建立索引
DataInTaskIndex;在保存索引DataInTaskIndex时,不直接存储(dataIn,TS1),而是将索引
DataInTaskIndex存储为(dataIn.hashcode,TS1.pointer),其中dataIn.hashcode为数据对
象dataIn的语义描述的哈希值,TS1.pointer指向任务节点集合TS1的存储位置;
qdataIn在索引中不存在,说明SWC中不存在输入数据对象集合包含qdataIn的任务节点,则
基于本体中父子概念间的较高语义相似性,使用子概念代替父概念;先在领域数据本体中
查询qdataIn的语义描述对应概念C的直接子概念C1,然后输入数据对象集合包含C1所指代
数据对象的任务节点集合;遍历概念C的所有直接子概念得到多个这样的集合,最后计算这
些集合的并集作为TS1返回;
dataOut的任务节点task及其所属语义工作流SW的集合;
在,则新建一个索引项(dataOut,TS2),将SW中生成dataOut的任务节点task的ID标识taskID
加入集合TS2中,若dataOut已存在,则直接将SW中生成dataOut的任务节点task的ID标识
taskID加入TS2;遍历集合DSOut、语义工作流库SWC,建立索引DataOutTaskIndex;在保存索引
DataOutTaskIndex时,不直接存储(dataOut,S3),而是将DataOutTaskIndex存储为
(dataOut.hashcode,TS2.pointer),其中dataOut.hashcode为数据对象dataOut的语义描述的
哈希值,TS2.pointer指向任务节点集合TS2的存储位置;
qdataOut在索引中不存在,说明SWC中不存在输出数据对象集合包含qdataOut的任务节点,则
基于本体中父子概念间的较高语义相似性,使用子概念代替父概念;先在领域数据本体中
查询qdataOut的语义描述对应概念C的直接子概念C1,然后获取输出数据对象集合包含C1所
指代数据对象的任务节点集合;遍历概念C的所有直接子概念得到多个这样的集合,最后计
算这些集合的并集作为TS2返回;
流对应的语义标注图的某一路径上包含此路径“task1→task2”的语义工作流集合;
TA在索引Path2Index中不存在,则先新建一个索引项(
合S4,若ta已存在,则直接将SW的ID加入S4;遍历SW的集合TA,以及SWC中的所有语义工作流
构建,构建索引Path2Index;在保存索引Path2Index时,在索引中不直接存储(
作流S4的存储位置;
对应索引项的集合S4;若路径
qtask1,qtask2>的语义工作流,则基于本体中父子概念间的较高语义相似性,使用子概念代
替父概念;先在领域任务本体中分别获取qtask1、qtask2的语义描述C1、C2的直接子概念的
集合CS1、CS2,然后获取包含笛卡尔积CS1×CS2中的每个概念序偶(C3,C4)指代的任务节点两
步路径的语义工作流集合,最后计算这些集合的并集作为S4返回;
务并行关系索引ParalellIndex和任务循环关系索引LoopIndex;
工作流集合;
TC,然后,若tc∈TC在索引CasualIndex中不存在,则先新建一个索引项(
S5),将SW的ID加入集合S5中;若tc已存在,则直接将SW的ID加入S5;遍历SW的集合TC,语义工
作流库SWC,建立索引CasualIndex,在保存索引CasualIndex时,在索引中不直接存储(<
task1,task2>,S5),而是将索引CasualIndex存储为(
S5.pointer),其中
希值,S5.pointer指向语义工作流集合S5的存储位置;
应索引项的集合S5,若
点对
概念代替父概念;先在领域任务本体中分别获取qtask1、qtask2的语义描述C1、C2的直接子
概念的集合CS1、CS2,然后获取包含笛卡尔积CS1×CS2中的每个概念序偶(C3,C4)指代的任务
因果关系的语义工作流集合,最后计算这些集合的并集作为S5返回;
义工作流集合;
然后,若tp∈TP在索引ParalellIndex中不存在,则先新建一个索引项(
将SW的ID加入集合S6中;若tp已存在,则直接将SW的ID加入S6;遍历SW的集合TP,语义工作流
库SWC,建立索引ParalellIndex;在保存索引ParalellIndex时,不直接存储(
task1,task2>.hashcode为任务并行关系
向语义工作流集合S6的存储位置;
并行任务节点对
性,使用子概念代替父概念;先在领域任务本体中分别获取qtask1、qtask2的语义描述C1、C2
的直接子概念的集合CS1、CS2,然后获取包含笛卡尔积CS1×CS2中的每个概念序偶(C3,C4)指
代的任务并行关系的语义工作流集合,最后计算这些集合的并集作为S6返回;
义工作流集合;
TE;然后,若te∈TE在索引ExclusiveIndex中不存在,则先新建一个索引项(
S7),将SW的ID加入集合S7中,若te已存在,则直接将SW的ID加入S7;遍历SW的集合TE,语义工
作流库SWC,建立索引ExclusiveIndex;在保存索引ExclusiveIndex时,不直接存储(<
task1,task2>,S7),而是将索引ExclusiveIndex存储为(
S7.pointer),其中
希值,S7.pointer指向语义工作流集合S7的存储位置;
互斥任务节点对
性,使用子概念代替父概念;先在领域任务本体中分别获取qtask1、qtask2的语义描述C1、C2
的直接子概念的集合CS1、CS2,然后获取包含笛卡尔积CS1×CS2中的每个概念序偶(C3,C4)指
代的任务互斥关系的语义工作流集合,最后计算这些集合的并集作为S7返回;
工作流集合;
关系集合TL;然后,若tl∈TL在索引LoopIndex中不存在,则先新建一个索引项(
TL,语义工作流库SWC,建立索引LoopIndex;在保存索引LoopIndex时,不直接存储(
task1,task2>.hashcode为任务循环关系
向语义工作流集合S8的存储位置;
索引项的集合S8;若
对
念代替父概念;先在领域任务本体中分别获取qtask1、qtask2的语义描述C1、C2的直接子概
念的集合CS1、CS2,然后获取包含笛卡尔积CS1×CS2中的每个概念序偶(C3,C4)指代的任务循
环关系的语义工作流集合,最后计算这些集合的并集作为S8返回;
查询结果集的交集作为最终结果集返回;
从语义工作流库中删除某语义工作流时,可以先记录该工作流,待被删除的语义工作流达
到设定数量后,一次性将它们涉及的索引项删除,并更新。
附图说明
具体实施方式
构建和检索方法,如图1所示,语义工作流索引SWIndex的结构如图2所示,包括如下步骤:
的语义描述来自于DataOnto中的概念;在说明书中,暂以任务节点的语义描述指代该节点,
数据对象节点的语义描述指代该节点;
SW4});再以语义工作流SW1中的任务节点“Sprinkle”为例,显然SW1,SW2,SW3,SW4,SW5均包含
任务节点“Sprinkle”,则建立索引项:(“Sprinkle”,{SW1,SW2,SW3,SW4,SW5}),使用同样的方
法建立其他索引项。
含任务节点“Fry”的语义工作流,由于在Path1Index中不存在“Fry”的索引项,则可以返回
“Fry”在任务本体中的子节点“Saute”的索引项中的语义工作流集合{SW1,SW4},作为近似结
果集提供给用户。
象,则建立DataInIndex的索引项:(“Salt”,{SW2,SW5}),使用同样的方法可建立其他索引
项;然后构造DataOutIndex,以语义工作流SW1中的数据对象“Fettuccine_pasta”为例,显然
只有SW1包含此数据对象,则建立DataOutIndex的索引项:(“Fettuccine_pasta”,{SW1}),使
用同样的方法可建立其他索引项。
含输入数据对象“Oil”的语义工作流,由于在DataInIndex中不存在“Oil”的索引项,则可以
返回“Oil”在领域数据本体中的子节点“Salad_oil”的索引项中的集合{SW2,SW5},作为近似
结果集。
{SW2,SW5}。
节点“Toss”,SW5中的任务节点“Toss”包含数据对象“Salt”。则建立DataInTaskIndex的索引
项:(“Salt”,{(“Toss”,SW2),(“Toss”,SW5)}),使用同样的方法可建立其他索引项;然后构
造DataOutTaskIndex,以语义工作流SW1中的数据对象“Fettuccine_pasta”为例,显然只有
SW1的任务节点“Toss”和“Sprinkle”包含此数据对象。则DataOutIndex的索引项:
(“Fettuccine_pasta”,{(“Toss”,SW1),(“Sprinkle”,SW1)}),使用同样的方法可建立其他
索引项。
(“Toss”,SW5)},再从中抽取出语义工作流集合{SW2,SW5}。
>,{SW1}),使用同样的方法可建立其他索引项;以语义工作流SW2中的路径“Sprinkle”→
“Bake”为例,显然SW2,SW3,SW4,SW5包含此路径,则Path2Index的索引项:(<“Sprinkle”,
“Bake”>,{SW2,SW3,SW4,SW5})。
SW3,SW4,SW5}。如果要在SWC1中检索包含路径“Saute”→“Gather”的语义工作流,由于在
Path2Index中不存在“Saute”→“Gather”的索引项,则可以用“Gather”在领域任务本体中
的子节点“Add”来代替“Gather”,返回“Saute”→“Add”的索引项中的集合{SW1,SW4},作为近
似结果集。
“Grate”,“Mix”>,{SW4})。使用同样的方法建立其他索引项。
项中的集合{SW4}。如果要在SWC1中检索包含任务因果关系<“Saute”,“Gather”>的语义工作
流,由于在CasualIndex中不存在<“Saute”,“Gather”>的索引项,则可以用“Gather”在任务
本体中的子节点“Add”来代替“Gather”。返回<“Saute”,“Add”>的索引项中的集合{SW1,
SW4},作为近似结果集。
的索引项:(<“Grate”,“Cook”>,{SW2});使用同样的方法建立其他索引项。
{SW4}。
的索引项:(<“Boil”,“Heat”>,{SW3})。使用同样的方法建立其他索引项。
{SW3}。
的索引项:(<“Arrange”,“Top”>,{SW5})。使用同样的方法建立其他索引项。
{SW5}。
SW4,SW5}),易得包含任务节点“Sprinkle”的语义工作流集合A1={SW1,SW2,SW3,SW4,SW5};由
于DataInInde x存在索引项:(“Spaghetti”,{SW4}),易得包含输入数据对象“Spaghetti”的
语义工作流集合A2={SW4};由以上可得满足原检索要求的语义工作流集合A3=A1∩A2=
{SW1,SW2,SW3,SW4,SW5}∩{SW4}={SW4}。
的索引项,则可用“Gather”在任务本体中的子节点“Add”来代替“Gather”,于是返回包含任
务因果关系<“Saute”,“Add”>的索引项中的语义工作流集合A4={SW1,SW4}作为近似结果
集。由于DataInIndex中存在索引项:(“Fettuccine”,{SW1}),易得包含输入数据对象
“Fettuccine”的语义工作流集合A5={SW1};由以上可得满足原检索要求的语义工作流的近
似集合A6=A4∩A5={SW1,SW4}∩{SW1}={SW1}。