0

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

4

1 回答 1

3

首先,OWL 不是一种约束语言。它的目的是基于限制来定义类,而不是为类设置限制。

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

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

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

在函数式语法中:

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

在海龟语法中:

: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é中的“类描述”视图:

类描述视图

现在假设你声明

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

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

不一致的本体解释

于 2017-05-03T14:44:48.070 回答