2010-06-13 11 views
1

Я создал файл 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"); 

Я что-то не так?

ответ

1

Диапазон данных ([< 350] бит) является функцией OWL 2. Jena не поддерживает OWL 2. См. Страницу W3C OWL 2 Implementations для списка инструментов с поддержкой OWL 2 - вам придется использовать один из них. (Некоторые экспериментальные текущие работы для Jena перечислены там, но это определенно еще не дошло до релиза Jena.)