java OWL API:如何将域分配给OWLObjectProperty上的范围
事实上,我想创建一个基于概念列表(字符串)和概念之间关系(映射)的本体。我有两种类型的关系“kind of”和“sub Topic of”。所以我尝试通过owl api创建这个本体。为了在两个owl类之间创建关系,我使用了OWLObjectPreprityDomain和OWLObjectProprerTerrange,并通过OWLObjectProperty指定了一个关系。 我的问题是,当我创建一个具有多个域和多个范围的关系时,我没有找到将每个域分配给每个范围的方式。 我想找到一个解决办法。谁能给我一个主意吗
例如,我有一个映射:Map<String, String> relation = new HashMap<String, String>;
,它包含两个概念以及彼此之间的关系。
LinkedList<Map<String, String>> listRelation = new LikedList<Map<String,String>>;
此列表包含概念之间的关系列表。
relation("concept1")="AUTHETICATION";
realtion("relation")="kind of";
relation("concept2")="VALIDATION";
listRelation.add(relation);
relation = new HashMap<String, String>;
relation("concept1")="ENCRYPTION";
realtion("relation")="kind of";
relation("concept2")="CRYPTHOGRAPHY";
listRelation.add(relation);
我创建了另一个包含概念和他的实例的地图,如:
Map<String,String> inst;
inst("concept")="authentication";
inst("instance")="topNet";
我如何在猫头鹰中创建这个。概念是OWLClass或OWLNamedIndividual。如果它们是OWLNamedIndividual,那么实例是什么。此外,如果概念是OWLClass,如何声明它们之间的关系
# 1 楼答案
从您的示例中,我得到的印象是
Authentication
和Validation
不是类而是个体,您拥有的是断言,而不是域和范围声明然而,声明多个域相当于声明列出的所有类的交集并将其指定为域;范围也一样。没有特定范围的首选域
您可以做的是,例如,编写一个C类的身份验证子类和
all kind_of Validation
的子类,在任何情况下,它将断言kind_of
的域和范围等价# 2 楼答案
类=概念, 个体=实例(对于一个类,您实例化一个类以获得个体)
我将继续假设你考虑这些类/概念。如果你只是想说加密是一种密码学,那么你只需要声明Ecryption子类密码学。完全不需要对象属性
如果你想使用其他类型的关系,可以说“HasRelationTo”,然后写下公理,比如
正如伊格纳齐奥所说
属性(=关系=函数)的范围和域是通用的,用于防止错误。这意味着您不能指定
Domain1-propA-Range1(但不是说Domain2-propA-Range1)
域2-propA-Range2
对象属性声明只允许像{Domain1 U Domain2}-propA-{Range1 U Range2}这样的声明。如果你真的需要像上面那样做,你必须使用两种不同的对象属性propA和propB。通常情况并非如此,将多个域和范围放在一起就足够了
下面是建模的OWL文件
“认证”是一种“验证”
“加密”是一种“加密”
此外,你可能想看看protege pizza教程,更好地了解猫头鹰。如果我记得清楚的话,只需要大约20分钟
]>