【发布时间】:2014-06-16 18:48:15
【问题描述】:
我有 OWL 文件,我可以浏览它并浏览类和属性,但我无法检索正确的 ObjectProperty 范围。 这是我的 OWL 文件的一部分:
<owl:ObjectProperty rdf:about="&aat;aat2209_located_in">
<rdfs:label xml:lang="en">located in</rdfs:label>
<rdfs:label xml:lang="it">si trova in</rdfs:label>
<rdfs:comment xml:lang="en">The property defines a relationship between places or places and things</rdfs:comment>
<rdfs:comment xml:lang="it">La proprietà definisce la relazione tra luoghi o tra luoghi e cose</rdfs:comment>
<rdfs:domain>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<rdf:Description rdf:about="&dbpedia-owl;Artwork"/>
<rdf:Description rdf:about="&dbpedia-owl;Cave"/>
</owl:unionOf>
</owl:Class>
</rdfs:domain>
<rdfs:range>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<rdf:Description rdf:about="&lodmt;ArchaeologicalSite"/>
<rdf:Description rdf:about="&dbpedia-owl;Building"/>
</owl:unionOf>
</owl:Class>
</rdfs:range>
</owl:ObjectProperty>
这是我探索 OWL 文件的代码的一部分
...
OntModel inf = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM_RULE_INF);
InputStream in =getClass().getResourceAsStream("/"+DATA_IRI);
inf.read(in, "");
OntClass obj = inf.getOntClass(uri);
ExtendedIterator<OntProperty> propIter = obj.listDeclaredProperties(false);
if(propIter.hasNext()){
while (propIter.hasNext()) {
Set<PropertyModel> properties = new HashSet<PropertyModel>();
final OntProperty ontProperty = (OntProperty) propIter.next();
ExtendedIterator<? extends OntProperty> eqProp = ontProperty.listEquivalentProperties();
if(eqProp.hasNext()){
while (eqProp.hasNext()) {
OntProperty property = (OntProperty) eqProp.next();
PropertyModel propModel = new PropertyModel();
propModel.setLabel(property.getLocalName());
propModel.setUri(property.getURI());
propModel.setRange(property.getRange().getLocalName());
properties.add(propModel);
}
}
...
每次我打电话给property.getRange() 我都会得到这个结果:http://www.w3.org/2002/07/owl#Thing。
有人帮帮我吗?
【问题讨论】:
-
属性可以有多个范围,
owl:Thing肯定会成为每个对象属性的其中之一。那么,这不是一个错误的答案,只是没有你想要的那么具体。不过,您可能会得到更具体的答案.. -
您的 OWL 文件不完整。您不需要向我们提供所有数据,但您需要向我们提供足够完整的信息,以便我们 可以在 Jena 中加载它。您没有封闭的
rdf:RDF元素、命名空间声明、实体声明。它也不是最小的;我们不需要 rdfs:label 等,只需要 rdfs:range。 -
这是我的 OWL 文件的一部分!
-
我没有说它不是您的 OWL 文件的一部分。我说它不是完整(us加载到耶拿是不够的),它不是minimal(它有更多的信息,什么我们需要解决这个问题)。见How to create a Minimal, Complete, and Verifiable example。