Пример #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]
        istring = "http://phenomebrowser.net/#" + s
    return factory.getOWLObjectProperty(IRI.create(istring))
    
def create_class(s):
    return factory.getOWLClass(IRI.create(s))
    
def add_anno(resource, prop, cont):
    anno = factory.getOWLAnnotation(factory.getOWLAnnotationProperty(prop.getIRI()), factory.getOWLLiteral(cont))
    axiom = factory.getOWLAnnotationAssertionAxiom(resource.getIRI(), anno)
    manager.addAxiom(ontology, axiom)
    
# Subclasses of 'cellular location'
print "Finding subclasses of cellular location..."
progressMonitor = ConsoleProgressMonitor();
config = SimpleConfiguration(progressMonitor);
reasoner = ElkReasonerFactory().createReasoner(ontology, config);
loc_cls = create_class("http://purl.obolibrary.org/obo/GO_0005575")
loc_nodeset = reasoner.getSubClasses(loc_cls, False).getFlattened()
print loc_nodeset
print "... done."
    
genericProteinNames = dict()
proteinCounter = 0

# Initiate a queue of all ttl files to be read.
queue = Queue()
for tfile in os.listdir(input_directory):
    queue.put(tfile)
print "Queue built. There are %d files to be read from %s." % (queue._qsize(), input_directory)

def readFiles(i, q):
stats['logicalAxiomCount'] = ontology.getLogicalAxiomCount()

for anno in ontology.getAnnotations():
    try:
        prop = anno.getProperty().toString().replaceAll("<","").replaceAll(">","")
        prop = prefixUrls(prop)
        val = anno.getValue().getLiteral().toString()
        stats['annotations'][prop] = val
    except:
        traceback.print_exc()

print stats

progressMonitor = ConsoleProgressMonitor()
config = SimpleConfiguration(progressMonitor)
reasoner = ElkReasonerFactory().createReasoner(ontology)
thing = factory.getOWLThing()

# Measure classification time
total_time = 0
repeats = 10
for i in range(repeats):
    start = time.clock()
    print "Start timer..."
    reasoner = ElkReasonerFactory().createReasoner(ontology)
    reasoner.precomputeInferences(InferenceType.CLASS_HIERARCHY)
    end = time.clock()
    total_time += (end - start)
    print "Classification time: %d seconds." % (end - start)
print "Average classification time: %d seconds" % (total_time / repeats)