java - 使用 OWL API JAVA 从类中获取数据属性
问题描述
我正在尝试使用 java ( http://owlapi.sourceforge.net ) 的 OWL API 获取类的数据属性,但我无法得到它。
例如“person”类有一个数据属性“hasGender”,其范围是:{“F”^^xsd:string,“M”^^xsd:string}
<owl:DatatypeProperty rdf:about="&lico;hasGender">
<rdfs:domain rdf:resource="&lico;Patient"/>
<rdfs:range>
<rdfs:Datatype>
<owl:oneOf>
<rdf:Description>
<rdf:type rdf:resource="&rdf;List"/>
<rdf:first rdf:datatype="&xsd;string">F</rdf:first>
<rdf:rest>
<rdf:Description>
<rdf:type rdf:resource="&rdf;List"/>
<rdf:first rdf:datatype="&xsd;string">M</rdf:first>
<rdf:rest rdf:resource="&rdf;nil"/>
</rdf:Description>
</rdf:rest>
</rdf:Description>
</owl:oneOf>
</rdfs:Datatype>
</rdfs:range>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="&lico;hasName">
<rdfs:domain rdf:resource="&lico;Patient"/>
<rdfs:range rdf:resource="&xsd;string"/>
</owl:DatatypeProperty>
我正在尝试获取如下数据类型:
OWLOntologyManager man = OWLManager.createOWLOntologyManager();
OWLOntology ont;
OWLDataFactory df = null;
ont = man.loadOntologyFromOntologyDocument(file);
df = ont.getOWLOntologyManager().getOWLDataFactory();
OWLClass clase = df.getOWLClass(Class);
Set<OWLDatatype> dataType = clase.getDatatypesInSignature();
我怎样才能提取这个属性和范围?
提前致谢!
解决方案
类在 OWL 中没有属性 - 您所尝试的将在对象的签名中获得数据类型 IRI,因为该对象是一个实体,它的签名仅包含一个类 IRI。
您真正看到的是将类作为其域的一部分的数据属性,因此您需要从本体中获取所有数据属性域公理(可能包括导入)并检查域是否包含类 - 即类出现在公理的签名中,或者如果您正在使用推理器,则该类是否具有域作为超类。
推荐阅读
- wordpress - 如何使用两个值在 Post 循环上过滤和排序 WP Query?
- javascript - 处理未从“加载”页面加载的对象
- javascript - 为什么我的函数返回这个奇怪的输出?
- android - 如何使用自定义运算符构建 TensorFlow Lite 本机?
- jquery - 无法加载 JQGrid 中的所有记录
- python - python - 如何使进程在python中的父级退出后不死?
- python - 计算 Pandas DataFrame 中每一行的最小值
- javascript - 当我关闭 cmd 时,Heroku 中的 Node.js 应用程序崩溃
- html - 日期的默认值未显示
- java - 对 BigDecimal 的结果感到困惑