我想对Person
采用类型数据属性givenName
的类进行建模xsd:string
。maxLength=50
如何指定仅适用于类的此属性(例如)的长度限制Person
?例如,我想允许其他类使用相同的属性并选择不同的值进行限制。
问问题
2354 次
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 回答