使用Jena查找所有子属性

时间:2019-05-24 09:28:21

标签: java jena

我试图使用Java中的Jena API查找给定属性的所有子属性(1级和更高级别)。以下是架构文件的一部分。

架构文件

<!-- http://www.inmindcloud.com/application/schema.owl#calculation -->

<owl:DatatypeProperty rdf:about="&as;calculation">
    <rdfs:label rdf:datatype="&xsd;string">calculation</rdfs:label>
    <rdfs:comment rdf:datatype="&xsd;string">This is comment</rdfs:comment>
    <rdfs:subPropertyOf rdf:resource="&as;businessData"/>
</owl:DatatypeProperty>

Java代码

private static OntModel enhanceCalculableProperties(final OntModel model)
{
        final OntProperty businessDataProperty = model.getOntProperty(Schema.businessData.getURI());
        final OntProperty calculationProperty = model.getOntProperty(Schema.calculation.getURI());

        final List<? extends OntProperty> businessDataSubProperties = businessDataProperty.listSubProperties(false)
            .toList();
        final List<? extends OntProperty> calculationSubProperties = calculationProperty.listSubProperties().toList();

        final boolean containsCalculationProperty = businessDataSubProperties.contains(calculationProperty);
        final boolean containsSubProperties = businessDataSubProperties.containsAll(calculationSubProperties);

        System.out.println(containsCalculationProperty); // true
        System.out.println(containsSubProperties); // false

    return model;
}

根据文档,它应该返回所有子属性,情况并非如此。

您可以从上面的代码中看到,包含SubProperties false

任何解决此问题的建议将不胜感激。

0 个答案:

没有答案