Я создал файл RDF/OWL с использованием Protege 4.1 alpha. Я также создал определенный класс в Protege под названием CheapPhone. Этот класс имеет ограничение, которое показано ниже:Проблема в выводе экземпляров с ограничением целочисленной мощности
(hasPrice some integer[< 350])
Всякий раз, когда цена на телефон находится ниже 350, то выведенный в CheapPhone. Нет никакой проблемы в том, чтобы вывести это в Protege 4.1 alpha. Однако я не могу это сделать, используя Йену.
Я также создал определенный класс под названием SmartPhone. Этот класс также имеет ограничение, которое показано ниже:
(has3G value true) and (hasInternet value true)
Всякий раз, когда телефон имеет 3G и Интернет, это выведенное в смартфоне. В этой ситуации нет никаких проблем, чтобы определить это как в Protege, так и в Jena.
Я начал думать, что есть проблема с механизмом вывода по умолчанию в Jena. код, который я использую в Java ниже:
Reasoner reasoner = ReasonerRegistry.getOWLReasoner();
reasoner = reasoner.bindSchema(ontModel);
OntModelSpec ontModelSpec = OntModelSpec.OWL_MEM_MINI_RULE_INF;
ontModelSpec.setReasoner(reasoner);
// Create ontology model with reasoner support
// ontModel was created and read before, so I don't share the code in order
// not to create garbage here
OntModel model = ModelFactory.createOntologyModel(ontModelSpec, ontModel);
OntClass sPhone = model.getOntClass(ns + "SmartPhone");
ExtendedIterator s = sPhone.listInstances();
while(s.hasNext()) {
OntResource mp = (OntResource)s.next();
System.out.println(mp.getURI());
}
Этот код прекрасно работает и возвращает мне экземпляры, но когда я изменить код ниже и сделать его пригодным для CheapPhone, он не возвращает ничего.
OntClass sPhone = model.getOntClass(ns + "CheapPhone");
Я что-то не так?