我试图使用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 。
任何解决此问题的建议将不胜感激。