我正在尝试使用Stanford OWL API,但我发现文档有点不清楚。使用Java,我通过Protégé加载一个用户准备好的本体,得到一个DefaultowLobjectProperty
。该属性的值是本体论中某个类中的个体。我怎么才能找到班级?下面的代码段:
OWLNamedClass cls = (OWLNamedClass) it.next();
Collection instances = cls.getInstances(false);
for (Iterator jt = instances.iterator(); jt.hasNext();) {
OWLIndividual individual = (OWLIndividual) jt.next();
Collection props = individual.getRDFProperties();
for (Object prop : props) {
DefaultOWLObjectProperty obj = (DefaultOWLObjectProperty) prop;
Object val = individual.getPropertyValue(obj);
DefaultRDFIndividual valInd = (DefaultRDFIndividual) val;
…
}
我想获得valind
的类。
在OWLIndividual中有两种方法可以使您更容易地实现这一点。让我们假设您已经将OWLOntology作为ontology
。然后,使用getObjectPropertyValues(OWLOntology)可以获得一个映射,该映射将属性表达式映射到通过该属性与Indiversity
相关的个体集。您可以迭代该映射的条目,然后迭代个体集。然后,对于其中的每个个体,您可以使用getTypes(OWLOntology)获取作为其类型的OWLClassExpressions集。(您得到了一组这些类型,而不是一个类型,因为OWL个体可以并且通常会有多个类型。)
如果您只是对某些属性的值感兴趣,那么您可以使用更专门的getObjectPropertyValues(OWLObjectPropertyExpression,OWLOntology)来获取个人的特定属性的值。
一般来说,我建议至少浏览一下OWLIndividual接口提供的所有方法,以便对您可以使用它做什么有一个大致的了解。你不需要记住所有的细节,但是当你接近一个问题时,你至少会有一个模糊的想法,“我认为界面有类似的东西……”,你就知道该去哪里看了。这对于任何API或工具都是很好的实践,而不仅仅是OWL API。
GreatNewUpperOntology正确导入,但显示的名称如下: Untitle-Ontology-93(http://www.semanticweb.org/myname/ontologies/2014/9/Untitle-Ontology-93) 问题:有没有一种方法让我把我的本体保存到SemanticWeb.org站点,使用我在自己的计算机上给文件起的描述性名称,例如“GreatNew
有没有“简单”的方法从中获取某个本体?我用管理器加载了一个本体和依赖关系,并且可以使用访问一个HasSet,在这里我可以看到所有导入的本体。 有什么想法吗?
我在Protege创建了一个onology。我使用Eclipse加载了本体。我试图使用以下代码从ontology中删除一个特定的个体: 你能告诉我如何才能从Eclipse中删除个人,以免出现在Protege中吗?
我刚刚在protege(类、属性和个人)中构建了一个新的OWL本体。我的问题是:如何在Eclipse下用Java编写的程序中访问(查询)个体以使用它。 我尝试了以下方法: 生成本体java代码,并尝试在Eclipse中使用Jena加载它,但这需要使用Jena编程,我不确定是否需要。 在Eclipse中添加protege插件,并尝试访问OWL文件以读取该文件,但这也不起作用。 因此,在Eclipse
完整本体如下:- 我想为DS1检索对象WS1,为DS2检索对象WS2,即在提供字符串“1”、“2”等时,我的代码应该分别检索“1”、“2”。我在网上没有遇到过任何这类的相关代码,如果有任何帮助,我将不胜感激。提前道谢。
我使用的是Protege OWL API 4.3(OWL API 3.4.2)。它安装了HermiT Reasoner插件。 我的问题是,无论我对推理器有什么查询,都没有输出,它没有提供任何实例。 这就是我的本体的样子: 干杯,S。