类的对象属性

如何确定Jena中类的对象属性。 我可以获取所有对象属性,但我想获取特定类的对象属性。

获取所有objectProperties的代码:

ExtendedIterator objects = m.listObjectProperties(); while (objects.hasNext()) { Property essaProperty = (Property) objects.next(); System.out.println("Propiedad: " + essaProperty.getLocalName()); } 

另外,我如何获取对象属性的相关类,我的意思是,知道A如何获取对象属性“—->”以及如何获得“B”

  has (A---------->B) 

谢谢

您可以在使用Jena解析 问题的Parsing schema.org ttl / owl文件的 答案中找到足够的信息,但如果没有,则可以进行一些讨论。

首先,请注意OWL中的属性与面向对象编程语言中的“属性”不同。 这意味着我们说属性P具有域D是当我们看到一个属性为P的语句时,我们可以推断出该主题是D类型。通常,这是:

 x P y P rdfs:domain D -------------------------- x rdf:type D 

但请考虑这意味着什么。 如果D是C的子类,那么我们可以从x rdf:type D推断x rdf:type D x rdf:type C 这意味着C 也是 P的域(在OWL中就是这种情况,但纯RDF的语义略有不同。)因此,如果你问“哪些属性将C类作为域”,你就会获取具有C的子类作为域的属性,以及将C作为域的类。

如果你想要一种类和属性的“面向对象”视图,你可以使用Jena方法OntClass#listDeclaredProperties。

listDeclaredProperties

 com.hp.hpl.jena.util.iterator.ExtendedIterator listDeclaredProperties(boolean direct) 

在与此类的类似框架的视图关联的属性上返回迭代器。 这捕获了类的属性的直观概念。 这在用户界面中呈现本体类时非常有用,例如通过自动构造表单来实例化类的实例。 通过比较此类的OntModel中的属性域与类本身来确定类的类似框架视图中的属性。 有关详细信息,请参阅:[将RDF显示为帧] [2]。

请注意,确定属性是否与类关联的许多情况取决于RDFS或OWL推理。 因此,此方法可能仅在具有附加推理器的模型中返回完整结果。

参数:

  • direct – 如果为true,则将返回的属性限制为与此类直接关联的属性。 如果为false,则此类的超类的属性将不会在此类的声明属性中列出。

返回:

对其属性与此类关联的属性的迭代。