我们有一个OWL本体,其中包含旨在仅在OWL中使用的属性someValuesFrom限制(我们没有实例级别),例如以下内容(RDF Turtle语法):
:isResponsibleFor a owl:ObjectProperty;
rdfs:domain :Role;
rdfs:range :Task.
:SystemAdministrator rdfs:subClassOf :Role;
rdfs:subClassOf
[ a owl:Restriction ;
owl:onProperty :isResponsibleFor ;
owl:someValuesFrom :ServerAdministration].
虽然OWL限制在功能样式语法或Protégé中可能很好,但它们会给基于RDF的工具链带来一系列问题,例如:
由于这些问题,我们想像这样对这些语句建模:
:SystemAdministrator :isResponsibleFor :ServerAdministration.
我们不使用推理程序,因此限制类表达式的OWL配置文件没有问题,但这在语义上仍然是错误的。另外,将来有人可能会实际添加一个实例层,因此我们希望找到一个折衷方案。是否可以通过某种方式将限制的语义建模到属性本身或属性的派生中?这个定义可能很混乱,因为它只有一次定义,而我们有数千个限制。
例如,可能有一个属性:isResponsibleForSome:
:isResponsibleForSome a owl:ObjectProperty;
rdfs:domain [rdfs:subClassOf :Role];
rdfs:range [rdfs:subClassOf :Task].
每当在两个C类和D类之间有一个声明:“ C:isResponsibleForSome D”时,这应暗示:
C rdfs:subClassOf
[ a owl:Restriction ;
owl:onProperty :isResponsibleFor ;
owl:someValuesFrom D].
但是,这里的blanknodes使用不正确,因为它们引用的是特定的子类,而不是任何子类。是否可以在OWL中正确编码此含义?如果是,怎么办?