类的对象属性
如何确定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,则此类的超类的属性将不会在此类的声明属性中列出。
返回:
对其属性与此类关联的属性的迭代。