如何在Protege中为类声明数据属性?

时间:2017-04-28 15:15:36

标签: owl semantic-web protege4

我想对Person类进行建模,该类采用类型为givenName的数据属性xsd:string。如何指定仅适用于maxLength=50类的此属性的长度限制(例如Person)?例如,我想允许其他类使用相同的属性并为限制选择不同的值。

1 个答案:

答案 0 :(得分:0)

首先,OWL不是约束语言。更倾向于基于限制来定义类,而不是为类设置限制。

但是,可以定义匿名的“基于限制”的类,并将另一个类声明为此匿名类的子类。

在曼彻斯特语法中,你可以这样写:

Class: Person
    SubClassOf: givenName only xsd:string[maxLength 5]

在功能语法中:

SubClassOf(
    :Person
    DataAllValuesFrom(
        :givenName
        DatatypeRestriction(
            xsd:string
            xsd:maxLength "5"^^xsd:string
        )
    )
)

在Turtle语法中:

:Person rdfs:subClassOf
    [ rdf:type owl:Restriction ;
      owl:onProperty :givenName ;
      owl:allValuesFrom
      [ rdf:type rdfs:Datatype ;
        owl:onDatatype xsd:string ;
        owl:withRestrictions ( [ xsd:maxLength "5"^^xsd:string ] )
      ]
    ] .

下图是Protégé中的“Class description”视图:

Class description view

现在假设您声明

Individual: He
    Types: Person
    Facts: givenName  "Alexander"^^xsd:string

然后推理者(例如HermiT)必须说你的本体论是不一致的:

Inconsistent ontology explanation