2010-06-13 44 views
1

我已经使用Protege 4.1 alpha创建了RDF/OWL文件。 我还在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的工具列表 - 您必须使用其中的一个。 (耶拿的一些实验性工作已经在那里上市,但这绝对没有成为耶拿的一个版本。)