Пример #1
0
    def getReasoner(self, reasoner_name):
        """
        Returns an instance of a reasoner matching the value of the string
        "reasoner_name".  Supported values are "ELK", "HermiT", "Pellet", or
        "JFact" (the strings are not case sensitive).  ReasonerManager ensures
        that reasoner instances are effectively singletons (that is, subsequent
        requests for the same reasoner type return the same reasoner instance).

        reasoner_name: A string specifying the type of reasoner to instantiate.
        """
        reasoner_name = reasoner_name.lower().strip()

        if reasoner_name not in self.reasoners:
            owlont = self.getOntology().getOWLOntology()

            rfact = None
            if reasoner_name == 'elk':
                logger.info('Creating ELK reasoner...')
                rfact = ElkReasonerFactory()
            elif reasoner_name == 'hermit':
                logger.info('Creating HermiT reasoner...')
                rfact = HermiTReasonerFactory()
            elif reasoner_name == 'pellet':
                logger.info('Creating Pellet reasoner...')
                rfact = PelletReasonerFactory()
            elif reasoner_name == 'jfact':
                logger.info('Creating JFact reasoner...')
                rfact = JFactFactory()

            if rfact is not None:
                self.reasoners[
                    reasoner_name] = rfact.createNonBufferingReasoner(owlont)
            else:
                raise RuntimeError('Unrecognized DL reasoner name: ' +
                                   reasoner_name + '.')

        return self.reasoners[reasoner_name]