Problème dans déduisant cas qui ont entière contrainte de cardinalité
Question
J'ai créé un fichier RDF / OWL en utilisant Protege 4.1 alpha. J'ai aussi créé une classe définie dans Protege appelé CheapPhone. Cette classe a une restriction qui est indiqué ci-dessous:
(hasPrice some integer[< 350])
Chaque fois, un prix d'un téléphone est inférieur à 350, on en déduit que CheapPhone. Il n'y a pas de problème pour ce inférant dans Protege 4.1 alpha. Cependant, je ne peux pas conclure cela en utilisant Jena.
J'ai aussi créé une classe définie appelée SmartPhone. Cette classe a aussi une restriction qui est indiqué ci-dessous:
(has3G value true) and (hasInternet value true)
Chaque fois, un téléphone 3G et dispose d'Internet, il est déduit que SmartPhone. Dans cette situation, il n'y a pas de problème déduisant ce dans les deux Protege et Jena.
J'ai commencé à penser qu'il ya un problème dans le moteur d'inférence par défaut d'Iéna. Le code que j'utilise Java est ci-dessous:
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());
}
Ce code fonctionne parfaitement et me retourne les instances de, mais quand je change le code ci-dessous et qu'il est approprié pour CheapPhone, il ne retourne rien.
OntClass sPhone = model.getOntClass(ns + "CheapPhone");
Ai-je fait quelque chose de mal?
La solution
plages de données (le bit de [< 350]
) est une caractéristique de OWL 2. Jena ne prend pas en charge OWL 2. Voir W3C de OWL 2 page de Implémentations pour une liste d'outils avec OWL 2 support doivent utiliser, VOUS un. (Certains travaux en cours d'expérimentation pour Jena est listé ici, mais cela n'a certainement pas fait dans une version encore Jena.)