类的对象属性

问题描述 投票:0回答:1

如何确定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)

谢谢

java api jena
1个回答
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的语义略有不同。)因此,如果你问“哪些属性将C类作为域”,你将会获取具有C的子类作为域的属性,以及将C作为域的属性。

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

listDeclaredProperties

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

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

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

Parameters:

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

Returns:

通过其域与此类关联的属性的迭代。

© www.soinside.com 2019 - 2024. All rights reserved.