Bonsoir tout le monde.
J'ai créé une ontologie avec protege, et j'aimerais la manipuler à partir de java. J'ai trouvé un exemple de code sur internet, mais quand je l'exécute, Netbeans m'affiche les erreurs suivantes, sachant que j'utilise pellet comme raisonneur. Je ne comprends pas ce que ça veut dire, pouvez vous m'aider svp ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
 import com.clarkparsia.owlapi.explanation.DefaultExplanationGenerator;
import com.clarkparsia.owlapi.explanation.util.SilentExplanationProgressMonitor;
import com.clarkparsia.pellet.owlapiv3.PelletReasonerFactory;
import com.clarkparsia.pellet.owlapiv3.PelletReasoner;
import java.io.File;
import org.semanticweb.owlapi.apibinding.OWLManager;
import org.semanticweb.owlapi.io.OWLObjectRenderer;
import org.semanticweb.owlapi.model.*;
import org.semanticweb.owlapi.reasoner.OWLReasoner;
import org.semanticweb.owlapi.reasoner.OWLReasonerFactory;
import org.semanticweb.owlapi.reasoner.SimpleConfiguration;
import org.semanticweb.owlapi.vocab.OWLRDFVocabulary;
import org.semanticweb.owlapi.vocab.PrefixOWLOntologyFormat;
import uk.ac.manchester.cs.owl.explanation.ordering.ExplanationOrderer;
import uk.ac.manchester.cs.bhig.util.Tree;
import uk.ac.manchester.cs.owl.explanation.ordering.ExplanationOrdererImpl;
import uk.ac.manchester.cs.owl.explanation.ordering.ExplanationTree;
import uk.ac.manchester.cs.owlapi.dlsyntax.DLSyntaxObjectRenderer;
 
import java.util.*;
 
// Exemple : comment utilisier une ontology OWL avec un raisonneur
 
 
/**
 *
 * @author DELL
 */
public class Ontologie {
 
    private static final File file = new File("C:\\Users\\DELL\\ontologies\\Ontology1436875909396\\Ontology1436875909396.owl");
    //private static final String ontologie_URL = "TunisieOntologie.owl";
    private static OWLObjectRenderer renderer = new DLSyntaxObjectRenderer();
 
    public static void main (String args[])throws OWLOntologyCreationException {
 
        // Préparer l'ontologie et le raisonneur
        OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
        //OWLOntology ontology = manager.loadOntologyFromOntologyDocument(IRI.create(ontologie_URL));
        OWLOntology ontology = manager.loadOntologyFromOntologyDocument(IRI.create(file));
        OWLReasonerFactory reasonerFactory = PelletReasonerFactory.getInstance();
        OWLReasoner reasoner = reasonerFactory.createReasoner(ontology, new SimpleConfiguration());
        OWLDataFactory factory = manager.getOWLDataFactory();
        PrefixOWLOntologyFormat pm = (PrefixOWLOntologyFormat)manager.getOntologyFormat(ontology);
        pm.setDefaultPrefix(file + "#");
        //pm.setDefaultPrefix(ontologie_URL + "#");
 
        // Récupération des classes et leurs instances
        OWLClass classeProduit = factory.getOWLClass(":Produit", pm);
        for(OWLNamedIndividual produit : reasoner.getInstances(classeProduit, false).getFlattened()) {
            System.out.println("Produit : " + renderer.render(produit));
        }
 
        // Get a given individual
        OWLNamedIndividual oignon = factory.getOWLNamedIndividual(":Oignon", pm);
 
        // Get values of selected properties on the individual
        OWLDataProperty proprieteQuantite = factory.getOWLDataProperty(":aUneQuantiteDe", pm);
 
        OWLObjectProperty proprieteProvenance = factory.getOWLObjectProperty(":provientDe", pm);
 
        for(OWLLiteral quantite : reasoner.getDataPropertyValues(oignon, proprieteQuantite)) {
            System.out.println("La quantité produite d'oignons est : " + quantite.getLiteral());
        }
 
        for(OWLNamedIndividual indiv : reasoner.getObjectPropertyValues(oignon, proprieteProvenance).getFlattened()) {
            System.out.println("Les oignons proviennent des villes de : " + renderer.render(indiv));
        }
 
        // Get labels
        LocalizedAnnotationSelector as = new LocalizedAnnotationSelector(ontology, factory, "en", "as");
        for(OWLNamedIndividual indiv : reasoner.getObjectPropertyValues(oignon, proprieteProvenance).getFlattened()) {
            System.out.println("Les oignons proviennent des villes de : '" + as.getLabel(indiv) + "'");
        }
 
        // Get inverse of a property, i.e. which individuals are in relationn with a given individual
        // Je passe cette partie pour le moment 
 
        // Find to which classes the individuals belongs
        Set<OWLClassExpression> assertedClasses = oignon.getTypes(ontology);
        for(OWLClass c : reasoner.getTypes(oignon, false).getFlattened()) {
            boolean asserted = assertedClasses.contains(c);
            System.out.println((asserted ? "asserted" : "inferred") + " Oignon appartient à la classe : " + renderer.render(c));
        }
 
        // Lister toutes les propriétés objet pour un individu
        Map<OWLObjectPropertyExpression, Set<OWLIndividual>> assertedValues = oignon.getObjectPropertyValues(ontology);
        for(OWLObjectProperty objProp : ontology.getObjectPropertiesInSignature(true)) {
            for(OWLNamedIndividual indiv : reasoner.getObjectPropertyValues(oignon, objProp).getFlattened()) {
                boolean asserted = assertedValues.get(objProp).contains(indiv);
                System.out.println((asserted ? "asserted" : "inferred") + " object property de oignon : " + renderer.render(objProp) + "--> " + renderer.render(indiv));
            }
        }
 
        // Lister toutes les instances pareilles (same as)
 
        // Vérifier si la règle SWRL est utilisée
        OWLNamedIndividual nabeul = factory.getOWLNamedIndividual(":Nabeul", pm);
        OWLClass classeVilleImp = factory.getOWLClass(":Ville Importante", pm);
        OWLClassAssertionAxiom axiomeAExpliquer = factory.getOWLClassAssertionAxiom(classeVilleImp, nabeul);
        System.out.println( "Nabeul est-elle une ville importante ? " + reasoner.isEntailed(axiomeAExpliquer));
 
        // Expliquer pourquoi Nabeul est une ville importante
        DefaultExplanationGenerator explanationGenerator = new DefaultExplanationGenerator
                (manager, reasonerFactory, ontology, reasoner, new SilentExplanationProgressMonitor());
        Set<OWLAxiom> explanation = explanationGenerator.getExplanation(axiomeAExpliquer);
        ExplanationOrderer deo = new ExplanationOrdererImpl(manager);
        ExplanationTree explanationTree = deo.getOrderedExplanation(axiomeAExpliquer, explanation);
        System.out.println();
        System.out.println("-- explication de pourquoi Nabeul est dans la classe Ville Importante --");
        printIndented(explanationTree, "");
 
    }
 
    private static void printIndented(Tree<OWLAxiom> node, String indent) {
        OWLAxiom axiome = node.getUserObject();
        System.out.println(indent + renderer.render(axiome));
        if(!node.isLeaf()) {
            for(Tree<OWLAxiom> child : node.getChildren()) {
                printIndented(child, indent + "    ");
            }
        }
    }
 
    // Classe utile pour extraire les labels, les commentaires et d'autres annotations dans les langues voulues
    //
    public static class LocalizedAnnotationSelector {
        private final List<String> langs;
        private final OWLOntology ontology;
        private final OWLDataFactory factory;
 
        // Constructeur
        public LocalizedAnnotationSelector(OWLOntology ontology, OWLDataFactory factory, String... langs) {
            this.langs = (langs == null) ? Arrays.asList(Locale.getDefault().toString()) : Arrays.asList(langs);
            this.ontology = ontology;
            this.factory = factory;
        }
 
        // Fournir le premier label dans le premier matching language
        public String getLabel(OWLNamedIndividual indiv) {
            return getAnnotationString(indiv, OWLRDFVocabulary.RDFS_LABEL.getIRI());
        }
 
        public String getComment(OWLNamedIndividual indiv) {
            return getAnnotationString(indiv, OWLRDFVocabulary.RDFS_COMMENT.getIRI());
        }
 
        public String getAnnotationString(OWLNamedIndividual indiv, IRI annotationIRI) {
            return getLocalizedString(indiv.getAnnotations(ontology, factory.getOWLAnnotationProperty(annotationIRI)));
        }
 
        private String getLocalizedString(Set<OWLAnnotation> annotations) {
            List<OWLLiteral> literalLabels = new ArrayList<OWLLiteral> (annotations.size());
            for(OWLAnnotation label : annotations) {
                if(label.getValue() instanceof OWLLiteral) {
                    literalLabels.add((OWLLiteral) label.getValue());
                }
            }
            for(String lang : langs) {
                for(OWLLiteral literal : literalLabels) {
                    if(literal.hasLang(lang)) return literal.getLiteral();
                }
            }
            for(OWLLiteral literal : literalLabels) {
                if(!literal.hasLang()) return literal.getLiteral();
            }
            return null;
        }
    }
 
}
Voici les erreurs affichées
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 Exception in thread "main" java.lang.NoSuchMethodError: org.mindswap.pellet.utils.VersionInfo.getInstance()Lorg/mindswap/pellet/utils/VersionInfo;
	at com.clarkparsia.pellet.owlapiv3.PelletReasoner.createVersion(PelletReasoner.java:86)
	at com.clarkparsia.pellet.owlapiv3.PelletReasoner.<clinit>(PelletReasoner.java:83)
	at com.clarkparsia.pellet.owlapiv3.PelletReasonerFactory.createReasoner(PelletReasonerFactory.java:69)
	at com.clarkparsia.pellet.owlapiv3.PelletReasonerFactory.createReasoner(PelletReasonerFactory.java:33)
	at sara.Ontologie.main(Ontologie.java:48)
Cordialement,
Tchaksou.