如何在 Protege 中为 类 断言数据 属性?

How assert data property for classes in Protege?

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

首先,OWL不是约束语言。它的目的是根据限制定义 classes,而不是为 classes 设置限制。

但是,可以定义匿名“restriction-based”class 并声明另一个 class 是这个匿名 class 的子class。

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

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”视图:

现在假设您声明

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

然后推理者(例如 HermiT)不得不说你的 ontology 不一致: