【问题标题】:How assert data property for classes in Protege?如何在 Protege 中为类断言数据属性?
【发布时间】:2023-04-03 02:37:01
【问题描述】:

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

【问题讨论】:

  • 尝试对类和调用类本身建模,然后在此处包含代码。

标签: owl semantic-web protege4


【解决方案1】:

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

现在假设你声明

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

那么推理者(例如 HermiT)不得不说你的本体不一致:

【讨论】:

  • 太棒了。这很有帮助。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-21
  • 1970-01-01
  • 2016-06-21
  • 2021-12-16
  • 1970-01-01
相关资源
最近更新 更多