如何使用 Jena 获取资源的 EXPLICIT listProperties(而非推断属性)
How to get EXPLICIT listProperties (not Infered properties) of a Resource with Jena
我正在使用这个家庭 ontology (www.cs.man.ac.uk/~stevensr/ontology/family.rdf.owl),我删除了所有现有的个人。
通过使用 Jena,我向 class Person 添加了 02 个 "paul" 和 "sara" 实例,并声明 sara 是 paul 的姐妹。
String u = "http://www.co-ode.org/roberts/family-tree.owl#";
String path = "src/main/resources/family.rdf.owl" ;
OntModel model = ModelFactory.createOntologyModel();
model.read(path);
OntClass c = model.getOntClass(u + "Person");
Individual s = c.createIndividual(u + "Sara");
Individual p = c.createIndividual(u+"Paul");
model.add(s, model.getObjectProperty(u+"isSisterOf"), p);
StmtIterator stmtIterator = s.listProperties();
stmtIterator.forEachRemaining(System.out::println);
s.listProperties()
returns 声明 sara isSisterOf paul
还有,sara isDirectSiblingOf paul
, sara isSiblingOf paul
, sara isBloodRelationOf paul
, sara isRelationOf paul
似乎 Resource.listProperties()
也是 returns INDIRECT 属性,因为 isSisterOf 是其他属性的子属性。我只想要我明确声明的关系 sara isSisterOf paul
,而不是包含的关系。
终于如我所料,是一个蕴涵问题。问题在于用于创建 OntModel 的 OntModelSpec。
我正在使用:OntModel model = ModelFactory.createOntologyModel();
根据 Jena 文档,它回答
a new ontology model which will process in-memory models of ontologies
expressed the default ontology language (OWL)
我已经改成了OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM);
耶拿医生说的
uses a specification for OWL DL models that are stored in memory and
do no additional entailment reasoning
现在,Resource#listProperties
只有直接关系 isSisterOf
是 return
@ssz 感谢您的回复,让我用新的眼光看待我的问题。
我正在使用这个家庭 ontology (www.cs.man.ac.uk/~stevensr/ontology/family.rdf.owl),我删除了所有现有的个人。 通过使用 Jena,我向 class Person 添加了 02 个 "paul" 和 "sara" 实例,并声明 sara 是 paul 的姐妹。
String u = "http://www.co-ode.org/roberts/family-tree.owl#";
String path = "src/main/resources/family.rdf.owl" ;
OntModel model = ModelFactory.createOntologyModel();
model.read(path);
OntClass c = model.getOntClass(u + "Person");
Individual s = c.createIndividual(u + "Sara");
Individual p = c.createIndividual(u+"Paul");
model.add(s, model.getObjectProperty(u+"isSisterOf"), p);
StmtIterator stmtIterator = s.listProperties();
stmtIterator.forEachRemaining(System.out::println);
s.listProperties()
returns 声明 sara isSisterOf paul
还有,sara isDirectSiblingOf paul
, sara isSiblingOf paul
, sara isBloodRelationOf paul
, sara isRelationOf paul
似乎 Resource.listProperties()
也是 returns INDIRECT 属性,因为 isSisterOf 是其他属性的子属性。我只想要我明确声明的关系 sara isSisterOf paul
,而不是包含的关系。
终于如我所料,是一个蕴涵问题。问题在于用于创建 OntModel 的 OntModelSpec。
我正在使用:OntModel model = ModelFactory.createOntologyModel();
根据 Jena 文档,它回答
a new ontology model which will process in-memory models of ontologies expressed the default ontology language (OWL)
我已经改成了OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM);
耶拿医生说的
uses a specification for OWL DL models that are stored in memory and do no additional entailment reasoning
现在,Resource#listProperties
isSisterOf
是 return
@ssz 感谢您的回复,让我用新的眼光看待我的问题。