如何在 OWL API 中获取 Dataype 的 EquivalentClass?
How Do I Get A Dataype's EquivalentClass in OWL API?
在 OWL API 中,我无法找到一种方法来检索定义有效值枚举的数据类型的等效 class。当我手头有一个 OWL 数据类型时,我如何获得一组允许的值?
[我尝试将 RDF/XML 作为代码块粘贴到此处,但它不起作用。我什至看了降价帮助。请告诉我该怎么做。]
ontology 正在使用以下构造:
- rdfs:数据类型
- owl:等效类
- rdfs:数据类型
- owl:oneOf
- rdf:描述
- rdf:类型rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#List"
如果理解正确,你有一个特定的 class "c" 被定义为等同于 oneOf many individuals,那么我认为这是获得那些 "allowed values" 的一种方法:
Set<OWLClassAxiom> allAx=localOntology.getAxioms(c);
for(OWLClassAxiom ax: allAx){
if(ax.getAxiomType()==AxiomType.EQUIVALENT_CLASSES)
for(OWLClassExpression nce :ax.getNestedClassExpressions())
if(nce.getClassExpressionType()==ClassExpressionType.OBJECT_ONE_OF)
for(OWLNamedIndividual temp: nce.getIndividualsInSignature())
System.out.println(temp);
}
这是我想出的:
for (OWLDatatype dt : o.getDatatypesInSignature(Imports.INCLUDED)) {
logger.info("found datatype {} labeled '{}'", dt, getOWLEntityLabel(dt));
Set<OWLDatatypeDefinitionAxiom> datatypeDefinitions = o.getDatatypeDefinitions(dt);
for (OWLDatatypeDefinitionAxiom definitionAxiom : datatypeDefinitions) {
logger.info("found datatype definition '{}'", definitionAxiom);
OWLDataRange dataRange = definitionAxiom.getDataRange();
if ( ! dataRange.isDatatype()) {
logger.info("looks like an enumeration");
OWLDataOneOf owlDataOneOf = (OWLDataOneOf) dataRange;
Set<OWLLiteral> values = owlDataOneOf.getValues();
for (OWLLiteral value : values) {
logger.info("Found literal value '{}'", value.getLiteral());
}
}
}
}
我真的不喜欢 OWLDataOneOf
的演员阵容。一定有更好的办法。
在 OWL API 中,我无法找到一种方法来检索定义有效值枚举的数据类型的等效 class。当我手头有一个 OWL 数据类型时,我如何获得一组允许的值?
[我尝试将 RDF/XML 作为代码块粘贴到此处,但它不起作用。我什至看了降价帮助。请告诉我该怎么做。]
ontology 正在使用以下构造:
- rdfs:数据类型
- owl:等效类
- rdfs:数据类型
- owl:oneOf
- rdf:描述
- rdf:类型rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#List"
- rdf:描述
- owl:oneOf
- rdfs:数据类型
- owl:等效类
如果理解正确,你有一个特定的 class "c" 被定义为等同于 oneOf many individuals,那么我认为这是获得那些 "allowed values" 的一种方法:
Set<OWLClassAxiom> allAx=localOntology.getAxioms(c);
for(OWLClassAxiom ax: allAx){
if(ax.getAxiomType()==AxiomType.EQUIVALENT_CLASSES)
for(OWLClassExpression nce :ax.getNestedClassExpressions())
if(nce.getClassExpressionType()==ClassExpressionType.OBJECT_ONE_OF)
for(OWLNamedIndividual temp: nce.getIndividualsInSignature())
System.out.println(temp);
}
这是我想出的:
for (OWLDatatype dt : o.getDatatypesInSignature(Imports.INCLUDED)) {
logger.info("found datatype {} labeled '{}'", dt, getOWLEntityLabel(dt));
Set<OWLDatatypeDefinitionAxiom> datatypeDefinitions = o.getDatatypeDefinitions(dt);
for (OWLDatatypeDefinitionAxiom definitionAxiom : datatypeDefinitions) {
logger.info("found datatype definition '{}'", definitionAxiom);
OWLDataRange dataRange = definitionAxiom.getDataRange();
if ( ! dataRange.isDatatype()) {
logger.info("looks like an enumeration");
OWLDataOneOf owlDataOneOf = (OWLDataOneOf) dataRange;
Set<OWLLiteral> values = owlDataOneOf.getValues();
for (OWLLiteral value : values) {
logger.info("Found literal value '{}'", value.getLiteral());
}
}
}
}
我真的不喜欢 OWLDataOneOf
的演员阵容。一定有更好的办法。