Page 269 - 《软件学报》2025年第12期
P. 269

5650                                                      软件学报  2025  年第  36  卷第  12  期



                 算法  1. 对象属性定义域、值域复杂概念语义映射算法.

                 输入: 本体  O 中的对象属性集合       R o ⊏ R;
                 输出: 映射后的三元组集合        P.
                 1.   P ← Initialize(·); //初始化一个空集合
                 2.  for  r o ∈ R o  do //循环处理对象属性
                 3.    C domain ,C range ← 分别执行  SPARQL  查询语句获取对象属性  r o  的复杂定义域和复杂值域概念语义声明
                 4.   if  len(C domain ) , 0 and   len(C range ) = 0 do //若  C range  集合为空则表明其为简单值域语义声明
                 5.     C range ← 基于  r o  的简单值域  SPARQL  查询语句更新  C range  概念集合
                 6.   end if
                 7.   if  len(C domain ) = 0 and   len(C range ) , 0 do //若  C domain  集合为空则表明其为简单定义域语义声明
                 8.     C domain ← 基于  r o  的简单定义域  SPARQL  查询语句更新  C domain  集合
                 9.   end if
                 10.  for  c domain ∈ C domain  do
                 11.   for  c range ∈ C range  do
                 12.     P.add((c domain ,r o ,c range )); //循环添加结果至三元组集合
                 13.   end for
                 14.  end for
                 15. end for
                 16. return  P


                 代码  1. 复杂定义域   SPARQL  查询示例.
                 1. SELECT DISTINCT  ?d
                 2. WHERE


                                                                   ∗
                                             [
                 3. {{  helis : hasNutrient rdfs : domain owl : intersectionOf rdf : rest  [  rdf : first ?d ]]]}
                                                             [
                 4. UNION


                                                              ∗
                 5. {   helis : hasNutrient rdfs : domain owl : unionOf rdf : rest  [  rdf : first ?d ]]]}
                                                        [
                                            [
                 6. FILTER (isIRI( ?d)) }
                 代码  2. 简单值域  SPARQL  查询示例.
                 1. SELECT DISTINCT  ?r
                 2. WHERE


                 3. {  helis : hasNutrient rdfs : range ?r
                 4. FILTER (isIRI( ?r)) }
                    在算法   1  中, 初始化一个空集合     P, 用于存储映射后生成的对象属性相关三元组, 并对输入图谱中的所有对象
                 属性循环执行以下操作. 首先, 分别执行            SPARQL  语句获取   r o  的复杂定义域和复杂值域概念声明集合            C domain  和
                                                                                                  C range  集
                 C range , 即获取定义域或值域声明中包含两个或两个以上概念的交并等语义声明. 其次, 判断                      C domain  集合与
                 合是否为简单定义域或值域声明, 若是则重新通过简单定义域或值域                       SPARQL  查询语句进行更新; 最后将        C domain
                 和  C range  中的每一个元素通过当前对象属性      r o  进行链接构成三元组.

                                        Domain(helis : hasNutrient) = helis : Food ∪helis : Meal      (1)
   264   265   266   267   268   269   270   271   272   273   274