OWL 2 词汇全貌
首先介绍4个OWL 2词汇需要用到的预定义命名空间
- rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
- rdfs: http://www.w3.org/2000/01/rdf-schema#
- owl: http://www.w3.org/2002/07/owl#
- xsd: http://www.w3.org/2001/XMLSchema#
定义类,有以下几种方式:
1.直接取名字,这是用的最多的方法
用RDF/XML-ABBREV语法表达如下:
<owl:Class rdf:about=”#crab”/>
2.集合类,通过几种类组合创造出一个新的类
比如:有一个类,它是“女人”和“有孩子的”这2个类取交集,所得到的类(这个类可以等价于“母亲”)
用RDF/XML-ABBREV语法表达如下:
<owl:Class rdf:about=”#母亲”>
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType=”Collection”>
<rdf:Description rdf:about=”#女人” />
<owl:Restriction>
<owl:onProperty rdf:resource=”#有孩子” />
<owl:someValuesFrom rdf:resource=”#人” />
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
上面介绍的是owl:intersectionOf,它代表交集,所有的集合表达方式如下:
_:x owl:intersectionOf ( C1 … Cn ). 交集 protege中使用“and”
_:x owl:unionOf ( C1 … Cn ). 并集 protege中使用“or”
_:x owl:complementOf C. 补集 并集 protege中使用“not”
3.枚举类,通过一系列的个体(individual)所描绘的一种类
比如:“文一美食店”这个类,是由很多在文一路的美食店所组成的一个类
<owl:Class rdf:about=”#饭店”/>
<owl:Class rdf:about=”#文一美食店”>
<owl:oneOf rdf:parseType=”Collection”>
<j.0:饭店 rdf:about=”#半亩地”/>
<j.0:饭店 rdf:about=”#一席地”/>
<j.0:饭店 rdf:about=”#老山东牛杂”/>
</owl:oneOf>
</owl:Class>
需要注意的是,该类并非由其他类所构成,而是由一系列的个体(individual)构成,语法如下:
_:x owl:oneOf ( a1 … an ). protege中使用 {}
4.限制类,这个翻译来源于Object(Datatype) Property Restrictions,这种定义类的方式听起来很别扭,但在现实生活中确实需要如此去表达,比如:很富有的人、有2个孩子的父亲,这些都是可以表达成类的。看一个用RDF/XML-ABBREV语法表达的例子:
<owl:Class rdf:about=”#奶茶店”>
<owl:equivalentClass>
<owl:Restriction>
<owl:someValuesFrom>
<owl:Class rdf:about=”#奶茶”/>
</owl:someValuesFrom>
<owl:onProperty rdf:resource=”#出售”/>
</owl:Restriction>
</owl:equivalentClass>
</owl:Class>
上面需要表达的意思:奶茶店等价于这样的一个类,这个类叫“出售一些奶茶的”。对于现实中的例子就是,奶茶店是卖奶茶的。在这里,我们发现,“出售一些奶茶的”这本身就是一种类,这种类就是所谓的限制类。限制类的定义方法有很多,在JENA中,我们会发现OntClass有一个子接口Restriction,而Restriction接口下面又衍生出
- SomeValuesFromRestriction
- AllValuesFromRestriction
- HasValueRestriction
- MaxCardinalityQRestriction
- MinCardinalityQRestriction
- CardinalityQRestriction
- MaxCardinalityRestriction
- MinCardinalityRestriction
- CardinalityRestriction
我们逐一解释:
1、已经介绍了
2、这家奶茶店只卖奶茶,出售这个属性所跟的所有个体全部属于奶茶(AllValuesFrom)
关于SomeValuesFrom和AllValuesFrom有很多话题可以聊,具体看其他文章
3、这个和前面2者不同,前面2者属性后面需要跟类,而这个属性后面必须跟个体,出售拿破仑戒指的古董店,拿破仑戒指是戒指一个个体,不是一个类,这里把有出售拿破仑戒指的这些古董店合起来称为一个类
4、最多出售一种品牌的店叫专卖店
5、最少有两家分店的店可以叫做连锁店
6、精确的定义到数字
7、8、9和4、5、6非常类似,区别在于,属性后面可以不跟类,4、5、6是OWL 2新增的内容
另外,OWL 2又多了一种限制类,叫做ObjectHasSelf,具有自反性质,比如:爱自己的人可以称为自恋的人,这个在protege和jena里面都还没有实现。上面9个方式可以基于Object Property来描述的,同样也可以基于Data Property来描述。不过OWL-API分的跟细致,将Object Property Restrictions和Data Property Restrictions分开实现了,有新兴趣的朋友可以去比较比较。