What is Mini-ME?

Due to architectural and performance reasons, it is currently unfeasible or impractical to use available Semantic Web reasoners in the Semantic Web of Things. Therefore we are developing a prototypical mobile reasoner for the SWoT named Mini-ME.

Mini-ME supports standard Semantic Web technologies through the OWL API and implements both standard reasoning tasks for knowledge base (KB) management (subsumption, classification, satisfiability) and non-standard inference services for semantic-based matchmaking and resource ranking (abduction, contraction and covering). Mini-ME is developed in Java, adopting Android as the current target computing platform, but running also on Java SE.

CURIOSITY

Mini-Me is a character played by Verne Troyer in the second and third Austin Powers movies: "Austin Powers: The Spy Who Shagged Me" and "Austin Powers in Goldmember".

Despite his small size, Mini-Me is a powerful and effective fighter, once giving Austin Powers a considerable thrashing, until the spy took advantage of his small size, and flushed him out into space through a toilet. Despite being a clone of Dr. Evil, Mini-Me is shown to be far stronger and tougher than his larger counterpart, as seen in Goldmember when they are lifting weights in prison.

Cit. http://en.wikipedia.org/wiki/Mini-Me


Download

You can download the new multiplatform implementation called Tiny-ME from here.

The current Mini-ME beta version is distributed only for the purpose of academic review and evaluation. Any other use is not allowed.

Previous releases:


Using Mini-ME

Try Mini-ME exploiting the reference source code and ontology dataset (see Download section).

Usage: Download the most recent version of Mini-ME from download section. Add minime-beta-2.0.0.jar file in the directory lib to your Java class path. You will also need the OWL API 3.2.4 or more recent, which can be downloaded from here, and the Colt 1.2.0 API, available here.

Mini-ME as OWLLink Server

To run Mini-ME as OWLlink server download the Mini-Me OWLLink package and run the start-minime script (start-minime.bat for Windows users or start-minime.sh for Linux users) stored into the folder "minime-server". The OWLLink server component will start at localhost:8080 by default. To change the listening port you can modify the value of -port argument of the java command within the script.

Mini-ME (2.0.0) with the OWL API 3.0

Load and classify an ontology - Shows how to interact with the Mini-ME reasoner

OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLDataFactory owlDataFactory = OWLManager.getOWLDataFactory();
File onto_path = new File(ONTO_DIR);
//Load ontology from an input file
OWLOntology onto = manager.loadOntologyFromOntologyDocument(onto_path); 
//Create the factory
MicroReasonerFactory reasonerFactory = new MicroReasonerFactory();
//Return an instance of OWLReasoner class that represents our Mini-ME reasoner
reasoner = reasonerFactory.createMicroReasoner(onto);

Class Satisfiability - Shows how to check the satisfiability of a class

OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLDataFactory owlDataFactory = OWLManager.getOWLDataFactory();
File onto_path = new File(ONTO_DIR);
//Load ontology from an input file
OWLOntology onto = manager.loadOntologyFromOntologyDocument(onto_path); 
//An instance of the class of which to verify the satisfiability
OWLClass class2check = owlDataFactory.getOWLClass(IRI.create(CLASS_IRI));
//Create the factory
MicroReasonerFactory reasonerFactory = new MicroReasonerFactory();
//Return an instance of OWLReasoner class that represents our Mini-ME reasoner
reasoner = reasonerFactory.createMicroReasoner(onto);
//The returned value is a boolean
boolean result = reasoner.isSatisfiable(class2check);
if(result){
    System.out.println("The class "+CLASS_IRI+" is satisfiable.");
}else {
    System.out.println("The class "+CLASS_IRI+" is not satisfiable.");
}

Onology consistency - Shows how to check the satisfiability of an ontology

OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
File onto_path = new File(ONTO_DIR);
//Load ontology from an input file
OWLOntology onto = manager.loadOntologyFromOntologyDocument(onto_path); 
//Create the factory
MicroReasonerFactory reasonerFactory = new MicroReasonerFactory();
//Return an instance of OWLReasoner class that represents our Mini-ME reasoner
reasoner = reasonerFactory.createMicroReasoner(onto);
//The returned value is a boolean
boolean result = reasoner.isConsistent();
if(result){
    System.out.println("The TBox of the ontology is consistent.");
}else {
    System.out.println("The TBox of the ontology is not consistent.");
}

Mini-ME for non-standard inference services

Concept Abduction and Contraction - Shows how to use Abduction and Contraction non-standard inference services

OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
File file = new File(ONTO_DIR);
File request = new File(REQUEST_DIR);
                                     
try{
    onto = manager.loadOntologyFromOntologyDocument(file);
    //Create the factory
    MicroReasonerFactory reasonerFactory = new MicroReasonerFactory();
    //Return an instance of OWLReasoner class that represents our Mini-ME reasoner
    reasoner = reasonerFactory.createMicroReasoner(onto);
    onto_request = manager.loadOntologyFromOntologyDocument(request);
    Set requests_name = reasoner.loadRequest(onto_request);       
    String requestInd = null;
    Iterator iter_requests = requests_name.iterator();
    while(iter_requests.hasNext()){
        requestInd = (String) iter_requests.next();
    }
                                     
    Set list = reasoner.getSupplyIndividuals(); 
    Iterator iter = list.iterator();
    while(iter.hasNext()){
        String resourceInd = (String) iter.next();
        if(reasoner.checkCompatibility(resourceInd, requestInd) == true){
            IRI resourceIRI = IRI.create(resourceInd);
            IRI requestIRI = IRI.create(requestInd);
            System.out.println("Compute abduction between "+resourceIRI.getFragment()+" e "+requestIRI.getFragment());
            Abduction h = reasoner.abduction(resourceInd, requestInd); 
            System.out.println("H: "+h.H.toString());
        }else {
            IRI resourceIRI = IRI.create(resourceInd);
            IRI requestIRI = IRI.create(requestInd);
            System.out.println("Compute contraction between "+resourceIRI.getFragment()+" e "+requestIRI.getFragment());
            Contraction result = reasoner.contraction(resourceInd, requestInd); 
            System.out.println("Keep: "+result.K.toString());
            System.out.println("Give-up: "+result.G.toString());
        }           
    }
                                     
}catch(Exception e){
    e.printStackTrace();
}

Concept Covering - Shows how to use Concept Covering non-standard inference service

OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
File file = new File(ONTO_DIR);
File request = new File(REQUEST_DIR);
                                     
try{
    onto = manager.loadOntologyFromOntologyDocument(file);
    //Create the factory
    MicroReasonerFactory reasonerFactory = new MicroReasonerFactory();
    //Return an instance of OWLReasoner class that represents our Mini-ME reasoner
    reasoner = reasonerFactory.createMicroReasoner(onto);
    onto_request = manager.loadOntologyFromOntologyDocument(request);
    Set requests_name = reasoner.loadRequest(onto_request);       
    String requestInd = null;
    Iterator iter_requests = requests_name.iterator();
    while(iter_requests.hasNext()){
        requestInd = (String) iter_requests.next();
    }
                                     
    System.out.println("Compute covering...");
    Composition result = reasoner.composition(requestInd); 
    System.out.print("Set: ");
    Vector set = (Vector)result.Rc;
    for(int i=0; i<set.size(); i++){
        System.out.print(((Item)set.get(i)).name+", ");
    }
    System.out.println("");
    System.out.println("Uncovered-part: "+((Item)result.Du).description.toString());
                                     
}catch(Exception e){
    e.printStackTrace();
}


Publications

Scientific publications about Mini-ME



  1. Michele Ruta, Floriano Scioscia, Eugenio Di Sciascio, Filippo Gramegna, Giuseppe Loseto. Mini-ME: the Mini Matchmaking Engine. OWL Reasoner Evaluation Workshop (ORE 2012), Volume 858, page 52--63 - 2012.

  2. Michele Ruta, Floriano Scioscia, Giuseppe Loseto, Filippo Gramegna, Eugenio Di Sciascio. A Mobile Reasoner for Semantic-based Matchmaking. The 6th International Conference on Web Reasoning and Rule Systems (RR 2012), Volume 7497, page 254--257 - 2012.

  3. Filippo Gramegna, Saverio Ieva, Giuseppe Loseto, Michele Ruta, Floriano Scioscia, Eugenio Di Sciascio. A Lightweight Matchmaking Engine for the Semantic Web of Things. 21th Italian Symposium on Advanced Database Systems (SEBD 2013), page 103--114 - jun 2013.

  4. Michele Ruta, Floriano Scioscia, Giuseppe Loseto, Filippo Gramegna, Saverio Ieva, Eugenio Di Sciascio. Mini-ME 2.0: powering the Semantic Web of Things. 3rd OWL Reasoner Evaluation Workshop (ORE 2014) - jul 2014.

  5. Floriano Scioscia, Michele Ruta, Giuseppe Loseto, Filippo Gramegna, Saverio Ieva, Agnese Pinto, Eugenio Di Sciascio. A mobile matchmaker for the Ubiquitous Semantic Web. International Journal on Semantic Web and Information Systems, Volume 10, Number 4 - 2014. [Core Publication]

  6. Michele Ruta, Floriano Scioscia, Eugenio Di Sciascio. A mobile matchmaker for resource discovery in the Ubiquitous Semantic Web. 4th IEEE International Conference on Mobile Services (MS 2015) - Special Track on Services for the Ubiquitous Web - 2015

  7. Floriano Scioscia, Michele Ruta, Eugenio Di Sciascio. A swarm of Mini-MEs: reasoning and information aggregation in ubiquitous multi-agent contexts. 4th OWL Reasoner Evaluation Workshop (ORE 2015) - 2015

  8. Michele Ruta, Floriano Scioscia, Eugenio Di Sciascio, Ivano Bilenchi. OWL API for iOS: early implementation and results. 13th OWL: Experiences and Directions Workshop and 5th OWL reasoner evaluation workshop (OWLED - ORE 2016), Volume 10161, page 141-152 - nov 2016

  9. Floriano Scioscia, Michele Ruta, Giuseppe Loseto, Filippo Gramegna, Saverio Ieva, Agnese Pinto, Eugenio Di Sciascio. Mini-ME matchmaker and reasoner for the Semantic Web of Things. Innovations, Developments, and Applications of Semantic Web and Information Systems, IGI Global, page 262-294 - 2018

Developed By
Logo SisInfLab Logo Poliba Logo SWoT