LocalityChecker.java revision dce96e21854cb10f053930d02167eb3a67ccc18c
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiupackage de.unibremen.informatik.locality;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiuimport com.clarkparsia.owlapi.modularity.locality.LocalityClass;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiuimport com.clarkparsia.owlapi.modularity.locality.LocalityEvaluator;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiuimport com.clarkparsia.owlapi.modularity.locality.SyntacticLocalityEvaluator;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiuimport org.semanticweb.owlapi.apibinding.OWLManager;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiuimport org.semanticweb.owlapi.io.OWLXMLOntologyFormat;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiuimport org.semanticweb.owlapi.model.*;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiuimport java.net.URI;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiuimport java.util.Set;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiuimport java.util.Iterator;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiuimport org.semanticweb.owlapi.io.ToStringRenderer;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiupublic class LocalityChecker {
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu private static Set<OWLEntity> sign;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu private static Set<OWLAxiom> axioms;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu private static ToStringRenderer out;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu public static void main(String[] args)
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu {
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu if (args.length != 3)
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu {
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu System.out.println("Usage: LocalityChecker <URI> " +
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu "<SignatureURI> <LocalityType>");
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu System.exit(1);
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu }
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu LocalityClass cl = com.clarkparsia.owlapi.modularity.locality.LocalityClass.BOTTOM_BOTTOM;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu if (args[2].equals("TOP_BOTTOM"))
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu {
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu cl = com.clarkparsia.owlapi.modularity.locality.LocalityClass.TOP_BOTTOM;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu }
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu else if (args[2].equals("TOP_TOP"))
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu {
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu cl = com.clarkparsia.owlapi.modularity.locality.LocalityClass.TOP_TOP;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu }
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu else
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu {
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu cl = com.clarkparsia.owlapi.modularity.locality.LocalityClass.BOTTOM_BOTTOM;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu }
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu try
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu {
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu loader(args[0], args[1]);
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu //print();
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu boolean local = checker(cl);
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu System.out.print("Result: ");
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu if (local)
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu {
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu System.out.println("LOCAL");
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu System.exit(10);
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu }
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu else
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu {
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu System.out.println("NON-LOCAL");
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu System.exit(20);
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu }
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu }
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu catch (OWLOntologyCreationException e)
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu {
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu System.out.println("The ontology could not be created: " +
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu e.getMessage());
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu System.exit(1);
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu }
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu }
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu private static Boolean checker(LocalityClass cl)
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu {
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu boolean local = true;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu out = org.semanticweb.owlapi.io.ToStringRenderer.getInstance();
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu SyntacticLocalityEvaluator eval =
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu new SyntacticLocalityEvaluator(cl);
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu //let's try the bottom evaluator first
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu Iterator<OWLAxiom> it = axioms.iterator();
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu while (it.hasNext())
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu {
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu OWLAxiom elem = it.next();
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu boolean l = eval.isLocal(elem, sign);
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu if (!l)
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu {
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu System.out.print("Non-local axiom: ");
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu System.out.println(out.getRendering(elem));
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu System.out.println("");
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu }
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu local = local && l;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu }
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu return local;
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu }
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu private static void print()
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu {
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu System.out.println("Axioms:");
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu Iterator<OWLAxiom> it = axioms.iterator();
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu while (it.hasNext())
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu {
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu OWLAxiom elem = it.next();
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu System.out.println(elem);
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu }
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu System.out.println("\nSignature:");
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu Iterator<OWLEntity> itE = sign.iterator();
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu while (itE.hasNext())
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu {
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu OWLEntity elemE = itE.next();
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu System.out.println(elemE);
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu }
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu }
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu private static void loader(String onto, String sig) throws OWLOntologyCreationException
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu {
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu OWLOntologyManager manager =
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu OWLManager.createOWLOntologyManager();
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu OWLOntologyManager signMan =
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu OWLManager.createOWLOntologyManager();
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu IRI physicalIRI = IRI.create(onto);
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu IRI signIRI = IRI.create(sig);
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu OWLOntology ontology =
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu manager.loadOntologyFromOntologyDocument(physicalIRI);
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu OWLOntology signOnto =
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu manager.loadOntologyFromOntologyDocument(signIRI);
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu sign = signOnto.getSignature();
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu axioms = ontology.getAxioms();
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu }
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu
dce96e21854cb10f053930d02167eb3a67ccc18cFrancisc Nicolae Bungiu}