1.一种基于领域本体的语义工作流索引构造及检索方法,其特征在于,包括如下步骤:
1)建立语义工作流的领域任务本体和领域数据本体;
2)构造语义工作流的结构特征索引SWStructIndex及其检索方法,索引SWStructIndex包括一步路径索引Path1Index、数据-工作流索引DataIndex、数据-任务索引DataTaskIndex和两步路径索引Path2Index;
3)构造语义工作流的行为特征索引SWBebavIndex及其检索方法,索引SWBebavIndex包括任务因果关系索引CasualIndex、任务互斥关系索引ExclusiveIndex、任务并行关系索引ParalellIndex和循环关系索引LoopIndex;
4)当与控制流、数据流相关的多个查询条件组合时,检索方法为:首先,执行满足控制流或数据流相关的每个查询条件的语义工作流或任务集合检索任务;然后,计算所有查询结果集的交集作为最终结果集返回;
5)更新语义工作流的结构和行为特征索引:当一个新语义工作流加入语义工作流库时,结构特征索引SWStructIndex和行为特征索引SWBebavIndex均可以增量构造;当从语义工作流库中删除语义工作流时,先记录该工作流,待被删除的语义工作流达到设定数量后,一次将它们涉及的索引项删除或更新。
2.根据权利要求1所述的一种基于领域本体的语义工作流索引构造及检索方法,其特征在于,步骤1)中,具体是将语义工作流库中的语义工作流任务节点的语义描述看作与任务相关的概念,利用概念间的包含关系,构建任务本体的层次结构,建立领域任务本体;将语义工作流的数据对象节点的语义描述看作与数据对象相关的概念,利用概念间的包含关系,构建数据本体的层次结构,建立领域数据本体。
3.根据权利要求1所述的一种基于领域本体的语义工作流索引构造及检索方法,其特征在于,步骤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两种;
) 输入数据-工作流索引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返回;
)输出数据-工作流索引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两种;
)索引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返回;
)索引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的检索方法为:对于查询相邻任务节点对
4.根据权利要求1所述的一种基于领域本体的语义工作流索引构造及检索方法,其特征在于,步骤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的检索方法为:对于查询任务循环关系