在OWL中定义数据属性的基数

时间:2014-06-12 15:46:48

标签: rdf owl ontology

是否可以在OWL中定义数据属性的基数? 例如,考虑具有数据属性“Age”的类“Person”,是否有办法声明数据属性“Age”必须具有单个值?

1 个答案:

答案 0 :(得分:3)

你使用对象属性(DL和曼彻斯特语法)的公理:

  

人⊑= 1.hasAge
  人 subClassOf hasAge 完全 1

这是一个只有这样公理的小本体论:

@prefix :      <http://stackoverflow.com/q/24188632/1281433/people-have-exactly-one-age#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .

:Person  a               owl:Class ;
        rdfs:subClassOf  [ a                owl:Restriction ;
                           owl:cardinality  "1"^^xsd:nonNegativeInteger ;
                           owl:onProperty   :hasAge
                         ] .

<http://stackoverflow.com/q/24188632/1281433/people-have-exactly-one-age>
        a       owl:Ontology .

:hasAge  a      owl:DatatypeProperty .

在某些情况下,使用数据类型属性的精确基数限制实际上比使用对象属性更方便,因为reasoners(应该能够)识别文字之间的不等式(例如,2≠3和“foo”≠ “bar”)自动,而个人可以有多个名字。

相关问题