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