Cellfie-本体转换领域专用语言(MappingMaster DSL)概述

笔者在进行本体建模的过程中需要批量导入数据到protege,其内置模块Cellfie可以帮助我们实现这一过程,期间需要用到Transformation Rules,其语法规则需要遵循MappingMaster DSL。在对Cellfie官方文档[1]进行整理后对其进行总结和整理如下。

MappingMaster使用领域特定语言(DSL)定义从电子表格内容到OWL本体的映射。该语言基于曼彻斯特OWL语法,改语法的本身就是用来描述OWL本体的领域特定语言。

以下为实验过程截图。引用规范:@A3、@'sheet1'!A3

1、将指定位置的数据导入为类或个体:

Class: @A1(指定一个位置)、@A*(指定一列)、@*1(指定一行)

2、将指定位置的数据导入个体的同时指定该数据为某一个特定类型:

Individual: @A* Types: movieid、Individual: @A* Types: @A1

3、将指定位置的数据导入为某一存在类的父类:

Class: id SubClassOf: @A1 //需要注意的是id类必须存在原来的本体中。

4、将指定位置的数据导入为另一指定位置的父类:

Class: @B2 SubClassOf: @A1

5、将指定位置的数据导入为某一存在类的相同类:

 Class: id 
 EquivalentTo: @B4

6、将指定位置的数据导入为另一指定位置的相同类:

Class:@A1
EquivalentTo: @B4

7、将指定位置的数据导入作为实例并利用事实分句具有数据属性hastitle取值为m:

Individual:@D2
Facts: hastitle "m"//这里的hastitle在本体中必须存在

8、将指定位置的数据导入作为实例并利用事实分句具有数据属性hastitle取值为m、具有声明属性hasSource取值为22/02/2020:

Individual:@D2
Facts: hastitle "m"
Annotations: hasSource "22/02/2020"

9、在插入数据中可以用类表达式进行规则描述:

Class: title
SubClassOf:(hastype Value @A2)//hastpye是一个对象属性
或
Class: @A1
SubClassOf:(hastype Value @A2)//hastpye是一个对象属性

10、在引用的过程中可能会出现类型不明显的情况,而且不能明确推断出来,那么我们需要将该数据进行实体类型指定。具体就是用圆括号指定,指定类型范围是MappingMaster关键词:Class、ObjectProperty、DataProperty、AnnotationProperty、Individual、xsd:xxx。

Class: movieid
SubClassOf:(@F2(Objectproperty) value @D4)

11、在引用数据创建新的实体的过程中,共有三种方法:

Class: @B4(rdf:ID) //第一种利用rdf:ID表达实体
SubClassOf: movieid
Class: @B4(mm:Location) //第二种忽略单元格内容利用单元格位置表达实体
SubClassOf: movieid
Class: @B4(rdfs:label) //第三种利用rdfs:label表达并表示实体
SubClassOf: movieid

12、在表达的过程中可以直接引用annotation值,其父类将同通过annotation的值解析,例如:

Class:@B4
SubClassOf:'A television program'

13、在运用过程中,可以直接引用也可以用过自定义指定语句将内容进行修改,例如:

Class: @A5(rdfs:label=("Sale:",@A5))//在指定的单元格内容前加入指定字符
或
Class: @A5(rdf:ID=@B5  rdfs:label=("Sale:",@A5))//不同的标识和标签值可以生成一个特殊的实体

14、在处理数据的过程中可能会用到内置的文本处理方法,具体包括:

mm:replace//替换字符
mm:replaceAll//替换字符
mm:replaceFirst//替换字符
mm:prepend//前追加字符
mm:append//后追加字符
mm:toLowerCase//小写转换
mm:toUpperCase//大写转换 
mm:trim//排序
mm:reverse//顺序转换
mm:printf//文字编码
mm:decimalFormat//数字编码

 15、本特定领域专用语言支持操作的数据类型:

xsd:string
xsd:boolean
xsd:byte
xsd:short
xsd:int
xsd:long
xsd:float
xsd:double
xsd:integer
xsd:decimal
xsd:dateTime
xsd:date
xsd:time
xsd:Duration
rdf:PlainLiteral
rdf:XMLLiteral

16、在导入数据的过程中可能需要指定命名空间:

Individual: @A2(mm:prefix="clinical")
Individual: @A2(mm:namespace="http://clinical.stanford.edu/Clinical.owl#")
相似的指定语法包括:
mm:defaultPrefix
mm:defaultNamespace
mm:defaultLanguage
mm:ResolveIfOWLEntityExists
mm:SkipIfOWLEntityExists
mm:WarningIfOWLEntityExists
mm:ErrorIfOWLEntityExists
mm:CreateIfOWLEntityDoesNotExist
mm:SkipIfOWLEntityDoesNotExist
mm:WarningIfOWLEntityDoesNotExist
mm:ErrorIfOWLEntityDoesNotExist
mm:ProcessIfEmptyLabel
mm:ErrorIfEmptyLabel
mm:WarningIfEmptyLabel
mm:SkipIfEmptyLabel

17、到入数据过程中还可能遇到数据文本包含共同的冗余前缀的情况,可以采取正则表达式对其进行处理,例如:

Class: @A5(rdfs:label=[":(\S+)"]) 

Individual: @A2 
Types: Person 
Facts: hasForename @A2(["(\S+)"]), 
       hasInitial @A2(["\S+\s(\S+)"]), 
       hasSurname @A2(["\S+\s\S+\s(\S+)"]) 

18、处理过程中如果发生缺失单元格的值,可以在语言规则中设定默认值:

Class:@A5(rdfs:label mm:DefaultLabel="Unkown")
其他四种方式:
mm:ErrorIfEmptyLocation
mm:SkipIfEmptyLocation
mm:WarningIfEmptyLocation
mm:ProcessIfEmptyLocation

19、处理过程中可能会用到错位的情况,可以使用关键词进行位置处理,例如:

Class: @A5(mm:ShiftUp)//如果A5不包含一个值声明类的名称然后行号必须向上转移,直到找到一个值。
其他方法包括:
mm:ShiftDown
mm:ShiftLeft
mm:ShiftRight

20、处理大量数据难免会用到遍历的方法,下面举两个实用的例子:

  Individual: @** 
  Types: movieid //为电影id创建实例
  Individual: @A* 
  Types: movieid 
  Facts: hastitile @B*, 
         hasyear @C*, 
         haslength @D* 

21、部分字句默认返回以及默认值:

mm:DefaultReferenceType的默认值为Class,其他可能的值包括NamedIndividual,ObjectProperty,DataProperty,AnnotationProperty和任何XSD数据类型。
mm:DefaultPropertyType的默认值为ObjectProperty,其他可能的值是DataProperty和AnnotationProperty。
mm:DefaultPropertyValueType的默认值为xsd:string如果我们期望(数据或注释)属性值,请使用xsd:string
mm:DefaultDataPropertyValueType的默认值为xsd:string。其他可能的值包括任何XSD数据类型。
mm:DefaultValueEncoding的默认值为rdf:ID。其他可能的值是rdfs:Label,mm:Literal和rdfs:Location。
mm:DefaultIRIEncoding的默认值为mm:CamelCaseEncoding,其他可能的值是mm:NoEncode,mm:NoSnakeCaseEncode,mm:UUIDEncode和mm:HashEncode。
mm:DefaultShiftSetting的默认值为mm:NoShift,其他可能的值是mm:ShiftUp,mm:ShiftDown,mm:ShiftLeft和mm:ShiftRight。
mm:DefaultEmptyLocationSetting的默认值为mm:WarningIfEmptyLocation。
mm:DefaultEmptyLiteralSetting的默认值为mm:WarningIfEmptyLiteral。
mm:DefaultEmptyRDFIDSetting的默认值为mm:WarningIfEmptyRDFID。
mm:DefaultEmptyRDFSLabelSetting的默认值为mm:WarningIfEmptyRDFSLabel。
mm:DefaultIfOWLEntityExistsSetting的默认值为mm:ResolveIfOWLEntityExists。
mm:DefaultIfOWLEntityDoesNotExistSetting的默认值为mm:CreateIfOWLEntityDoesNotExist。
mm:DefaultLocationValue的默认值为“”。
mm:DefaultLiteralValue的默认值为“”。
mm:DefaultRDFID的默认值为“”。
mm:DefaultRDFSLabel的默认值为“”。
mm:DefaultLanguage的默认值为“”。
mm:DefaultPrefix的默认值为“”。
mm:DefaultNamespace的默认值为“”。

22、该领域专用语言并不能支持所有的字句,包括:

OWL object property declarations
OWL data property declarations
OWL annotation property declarations
OWL datatype declarations
OWL literal type qualification
OWL disjoint classes
OWL equivalent and disjoint properties
OWL negative property assertions
OWL has key

参考文献

[1]https://github.com/protegeproject/mapping-master/wiki/MappingMasterDSL

[2]https://github.com/protegeproject/mapping-master/wiki/Transformation-Rule-Language

[3]https://github.com/protegeproject/mapping-master/wiki/MappingMasterGUI

发布了6 篇原创文章 · 获赞 6 · 访问量 425

猜你喜欢

转载自blog.csdn.net/weixin_40469691/article/details/104436365
DSL