我想对Person
类进行建模,该类采用类型为givenName
的数据属性xsd:string
。如何指定仅适用于maxLength=50
类的此属性的长度限制(例如Person
)?例如,我想允许其他类使用相同的属性并为限制选择不同的值。
答案 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”视图:
现在假设您声明
Individual: He
Types: Person
Facts: givenName "Alexander"^^xsd:string
然后推理者(例如HermiT)必须说你的本体论是不一致的: