如何在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)
由于
答案 0 :(得分:2)
您可以在this answer到Parsing schema.org ttl/owl file using Jena找到足够的信息来解决您的问题,但如果没有,则可以进行一些讨论。
首先,请注意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 C
。这意味着C
也是P的域。(在OWL中就是这种情况,但纯RDF的语义略有不同。)因此,如果您要求& #34;哪些属性将C类作为域",除了将C作为域的属性之外,您还将获得具有C的子类作为域的属性。
如果你确实想要一种面向对象的"查看类和属性,可以使用Jena方法OntClass #listDeclaredProperties。
listDeclaredProperties
com.hp.hpl.jena.util.iterator.ExtendedIterator<OntProperty> listDeclaredProperties(boolean direct)
在与框架相关联的属性上返回迭代器 这个班级的看法。这捕获了一个直观的概念 一个类的属性。这在呈现本体时很有用 用户界面中的类,例如通过自动构造一个 用于实例化类实例的表单。中的属性 类的框架式视图是通过比较域的确定的 这个类中的属性是具有类本身的OntModel。看到: [将RDF显示为帧] [2]以获取更多详细信息。
请注意,许多确定属性是否相关的情况 一个类取决于RDFS或OWL推理。这种方法可以 因此,仅在附加的模型中返回完整的结果 推理。
参数:
- direct - 如果为true,则将返回的属性限制为与此类直接关联的属性。如果为false,则为超类的属性 此类的声明属性中不会列出此类 类。
返回:
通过其域与此类关联的属性的迭代。