【问题标题】:Retrieving Super property of a object property in OWL Api 4在OWL Api 4中检索对象属性的超级属性
【发布时间】:2015-11-16 13:16:59
【问题描述】:

我有一个对象属性 Car 及其子属性为 Ferrari。我想获得超级财产,即带有 owl api 4 的法拉利汽车。我可以获得财产的子财产,但不能获得超级财产。有没有我遗漏的api?

【问题讨论】:

  • 请记住,给定的属性可以有多个超级属性(这可能会或可能不会影响您的用例)。
  • getSuperProperties 工作吗?
  • 能否展示获取子属性的代码?
  • @JoshuaTaylor 我发布的答案给了我直接的超级属性,这就是我正在寻找的......但我不喜欢我迭代所有对象属性并检查其子属性是否匹配的方式使用当前子属性并将给定属性作为超级属性。
  • @Ignazio 我已经发布了答案..您可以检查该代码...请提出您可能知道的任何其他更好的方法....因为我不喜欢迭代的想法所有对象属性。

标签: rdf owl protege


【解决方案1】:

如果直接断言子属性关系,可以使用OWLOntology::getObjectSubPropertyAxiomsForSubProperty方法。

例子:

OWLOntology o = ...
OWLObjectProperty p = ...
o.getObjectSubPropertyAxiomsForSubProperty(p);

【讨论】:

    【解决方案2】:

    我可以通过以下方式做到这一点:-

    Set<OWLObjectProperty> props = ont.getObjectPropertiesInSignature();
                for (OWLObjectProperty p : props) {
                    HashSet<OWLSubObjectPropertyOfAxiom> subPropertySet =   (HashSet)ont.getObjectSubPropertyAxiomsForSuperProperty(p);
                    for (OWLSubObjectPropertyOfAxiom subPropAxiom : subPropertySet) {
                        OWLObjectPropertyExpression subObjectProperty = subPropAxiom.getSubProperty();
                        if (subObjectProperty.getNamedProperty().getIRI().equals(relationIRI)) {
                            d.setDerivedFrom(p.getIRI().getShortForm());
    
                        }
                    }
                }
    

    如果有更好的方法,请告诉我。

    【讨论】:

    • Simon 下面的回答利用了内部索引,所以会更快。
    • @Ignazio 我不是在寻找一个属性的子属性...我正在为一个给定属性请求超级属性。
    • 是的 - 在西蒙的回答中,方法参考说“bySubProperty”。生成的公理将输入属性作为子属性。要获得超属性,请遍历公理并收集每个公理的超属性。我将扩展示例。
    • @Ignazio 我正忙于做其他代码...所以无法回复..感谢您的帮助...我已将扩展代码作为完整答案发布。
    【解决方案3】:
    Iterator<OWLSubObjectPropertyOfAxiom> subItr = ont.getObjectSubPropertyAxiomsForSubProperty(factory.getOWLObjectProperty(relationIRI)).iterator();
                while (subItr.hasNext()) {
                    OWLSubObjectPropertyOfAxiom subPropAxiom = subItr.next();
                    d.setDerivedFrom(subPropAxiom.getSuperProperty().getNamedProperty().getIRI().getShortForm());
                }
    

    只是添加到西蒙的答案...这对我来说很好....

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-23
      • 2018-12-09
      • 2015-12-10
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多