OWLontology是否可以实现?
Is it possible to implement it by OWL ontology?
能否请您告诉我,是否可以仅通过 OWL ontology 定义来实现这种情况?或者我需要为其创建自定义规则?
IF
?doc rdf:type :document
AND ?doc :state :completed
AND not exists { ?other-doc :replaces+ ?doc AND ?other-doc :state :completed }
THEN
?doc rdf:type :latest-document
因此,我们的想法是将推断的 :latest-document
类型分配给具有 rdf:type :document
且具有 :state = :completed
的所有实体,并且没有任何具有 :state = :completed
的新实体。
我想知道,这种情况是否太复杂而无法仅通过 OWL 定义来实现。
好的!复杂的部分可能是如何最好地描述被替换的关系:
@prefix owl: <http://www.w3.org/2002/07/owl#> .
_:completed-thing a owl:Restriction ;
owl:onProperty :state ;
owl:hasValue :completed .
_:replaced-by a owl:TransitiveProperty ;
owl:inverseOf :replaces .
_:replaced-thing a owl:Restriction ;
owl:onProperty _:replaced-by ;
owl:someValuesFrom :completed-thing .
_:latest-thing owl:complementOf _:replaced-thing .
这首先通过owl:hasValue
确定了所有已完成事物的class,然后将_:replaced-by
定义为:replaces
的倒数。 属性 是可传递的(因此通过扩展 :replaces
也是可传递的)。
接下来我们定义一个被替换的东西,这是被上面定义的至少一个完成的东西所替换的任何东西。最新的东西就是任何没有被取代的东西。
我没有包含您指定的与 :document
的交集,因为它会使答案的核心部分复杂化。但是,如果 :replaces
和 :state
已经仅在文档上有效,则不需要它,无论如何使用 owl:intersectionOf
是一件简单的事情。
能否请您告诉我,是否可以仅通过 OWL ontology 定义来实现这种情况?或者我需要为其创建自定义规则?
IF
?doc rdf:type :document
AND ?doc :state :completed
AND not exists { ?other-doc :replaces+ ?doc AND ?other-doc :state :completed }
THEN
?doc rdf:type :latest-document
因此,我们的想法是将推断的 :latest-document
类型分配给具有 rdf:type :document
且具有 :state = :completed
的所有实体,并且没有任何具有 :state = :completed
的新实体。
我想知道,这种情况是否太复杂而无法仅通过 OWL 定义来实现。
好的!复杂的部分可能是如何最好地描述被替换的关系:
@prefix owl: <http://www.w3.org/2002/07/owl#> .
_:completed-thing a owl:Restriction ;
owl:onProperty :state ;
owl:hasValue :completed .
_:replaced-by a owl:TransitiveProperty ;
owl:inverseOf :replaces .
_:replaced-thing a owl:Restriction ;
owl:onProperty _:replaced-by ;
owl:someValuesFrom :completed-thing .
_:latest-thing owl:complementOf _:replaced-thing .
这首先通过owl:hasValue
确定了所有已完成事物的class,然后将_:replaced-by
定义为:replaces
的倒数。 属性 是可传递的(因此通过扩展 :replaces
也是可传递的)。
接下来我们定义一个被替换的东西,这是被上面定义的至少一个完成的东西所替换的任何东西。最新的东西就是任何没有被取代的东西。
我没有包含您指定的与 :document
的交集,因为它会使答案的核心部分复杂化。但是,如果 :replaces
和 :state
已经仅在文档上有效,则不需要它,无论如何使用 owl:intersectionOf
是一件简单的事情。