在我的本体论中,我有两个abc:Invention
类型的人:
abc:InventionA rdf:type abc:Invention .
abc:InventionB rdf:type abc:Invention .
和2个类型abc:MarketSector
的个人,与对象属性abc:includedIn
相关联:
abc:MrktSctrA rdf:type abc:MarketSector .
abc:MrktSctrB rdf:type abc:MarketSector .
abc:MrktSctrB abc:includedIn MrktSctrA .
目前,InventionA和InventionB分别通过对象属性abc:targets
与MrktSctrA和MrktSctrB链接:
abc:InventionA abc:targets abc:MrktSctrA .
abc:InventionB abc:targets abc:MrktSctrB .
是否可以创建与以下语句等效的对象属性abc:commonObjectivesWith
?
如果发明针对的是MarketSector ,还有其他发明 目标是另一个MarketSector ,任何这些MarketSectors都是 包含在另一个MarketSector 中,然后这两个发明有 共同目标。
然后,如果我在这个本体论上启动我的推理器,它可以推断出
abc:InventionA abc:commonObjectivesWith abc:InventionB
这可能吗?谢谢你的建议
答案 0 :(得分:1)
好的,我知道如何: 在Protégé4上,我点击了Window - >意见 - >本体视图 - >规则。 在“规则”窗格中,我添加了规则:
includesClassification(?mA, ?mB), targets(?invA, ?mA), targets(?invB, ?mB) -> commonObjectives(?invA, ?invB)
答案 1 :(得分:1)
您可以使用SWRL规则执行此操作,如your answer所示,但这需要一个可以使用SWRL规则的推理器。您也可以使用子属性链在OWL 2 DL中执行此操作。你有这种情况,实线箭头是数据中的关系,虚线箭头是你想要推断的:
您可以使用表格的OWL 2 DL子属性链公理来表示这一点(第一个摘要,然后是Protégé中的结果本体):
目标 o 包括 o 反向(目标) SubPropertyOf 常见
@prefix : <https://stackoverflow.com/q/24569317/1281433/paths#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
<https://stackoverflow.com/q/24569317/1281433/paths> aowl:Ontology .
:includesClassification a owl:ObjectProperty .
:targets a owl:ObjectProperty .
:commonObjectivesWith
a owl:ObjectProperty ;
owl:propertyChainAxiom ( :targets :includesClassification [ owl:inverseOf :targets ] ) .