public void startPrinting() { String owlPrefixIRI=Prefixes.s_semanticWebPrefixes.get("owl:"); m_prefixes=new Prefixes(); m_prefixes.declareDefaultPrefix(m_defaultPrefixIRI); m_prefixes.declarePrefix("owl:",owlPrefixIRI); int index=1; for (String prefixIRI : m_prefixIRIs) if (!m_defaultPrefixIRI.equals(prefixIRI) && !owlPrefixIRI.equals(prefixIRI)) { String prefixName="a"+(index++)+":"; m_prefixes.declarePrefix(prefixName,prefixIRI); } for (Map.Entry<String,String> entry : m_prefixes.getPrefixIRIsByPrefixName().entrySet()) if (!"owl:".equals(entry.getKey())) m_out.println("Prefix("+entry.getKey()+"=<"+entry.getValue()+">)"); m_out.println(); m_out.println("Ontology(<"+m_prefixes.getPrefixIRIsByPrefixName().get(":")+">"); m_out.println(); } public void printAtomicConceptHierarchy(Hierarchy<AtomicConcept> atomicConceptHierarchy) {
@Override public String toString(Prefixes ns) { return ns.abbreviateIRI(m_name); } @Override
/** * @param prefixName prefixName * @param prefixIRI prefixIRI * @return true if modification happened */ public boolean declarePrefix(String prefixName,String prefixIRI) { boolean containsPrefix=declarePrefixRaw(prefixName,prefixIRI); buildPrefixIRIMatchingPattern(); return containsPrefix; } protected boolean declarePrefixRaw(String prefixName,String prefixIRI) {
protected void createPrefixes() { m_prefixes=new Prefixes(); m_prefixes.declareSemanticWebPrefixes(); Set<String> individualIRIs=new HashSet<>(); Set<String> anonIndividualIRIs=new HashSet<>(); for (Individual individual : m_dlOntology.getAllIndividuals()) if (individual.isAnonymous()) addIRI(individual.getIRI(),anonIndividualIRIs); else addIRI(individual.getIRI(),individualIRIs); m_prefixes.declareInternalPrefixes(individualIRIs,anonIndividualIRIs); m_prefixes.declareDefaultPrefix(m_dlOntology.getOntologyIRI()+"#"); // declare prefixes as used in the ontology if possible OWLDocumentFormat format=m_rootOntology.getOWLOntologyManager().getOntologyFormat(m_rootOntology); if (format instanceof PrefixDocumentFormat) { PrefixDocumentFormat prefixFormat=(PrefixDocumentFormat)format; prefixFormat.getPrefixName2PrefixMap().forEach((prefixName,prefix)->{ if (m_prefixes.getPrefixName(prefix)==null) try { m_prefixes.declarePrefix(prefixName,prefix); } catch (@SuppressWarnings("unused") IllegalArgumentException e) { // ignore } }); } } protected void addIRI(String uri,Set<String> prefixIRIs) {
@Override public void run(Reasoner hermit,StatusOutput status,PrintWriter output,boolean ignoreOntologyPrefixes) { status.log(2,"Finding equivalents of '"+conceptName+"'"); Prefixes prefixes=hermit.getPrefixes(); String conceptUri=prefixes.canBeExpanded(conceptName) ? prefixes.expandAbbreviatedIRI(conceptName) : conceptName; if (conceptUri.startsWith("<") && conceptUri.endsWith(">")) conceptUri=conceptUri.substring(1,conceptUri.length()-1); OWLClass owlClass=OWLManager.createOWLOntologyManager().getOWLDataFactory().getOWLClass(IRI.create(conceptUri)); if (!hermit.isDefined(owlClass)) { status.log(0,"Warning: class '"+conceptName+"' was not declared in the ontology."); } Node<OWLClass> classes=hermit.getEquivalentClasses(owlClass); if (ignoreOntologyPrefixes) output.println("Classes equivalent to '"+conceptName+"':"); else output.println("Classes equivalent to '"+prefixes.abbreviateIRI(conceptName)+"':"); for (OWLClass classInSet : classes) if (ignoreOntologyPrefixes) { String iri=classInSet.getIRI().toString(); if (prefixes.canBeExpanded(iri)) output.println("\t"+prefixes.expandAbbreviatedIRI(iri)); else output.println("\t"+iri); } else output.println("\t"+prefixes.abbreviateIRI(classInSet.getIRI().toString())); output.flush(); } }
if (defaultPrefix!=null) { try { prefixes.declareDefaultPrefix(defaultPrefix); prefixes.declarePrefix(prefixName, prefixMappings.get(prefixName));
/** * Expands a full IRI from the abbreviated one, which is of one of the following forms: * 'prefix:name', where 'prefix' is a registered prefix name (can be empty), or * '<iri>', where 'iri' is an IRI. * @param abbreviation input * @return expanded string */ public static String expandAbbreviation(String abbreviation) { return Prefixes.STANDARD_PREFIXES.expandAbbreviatedIRI(abbreviation); } /**
@Override public void run(Reasoner hermit,StatusOutput status,PrintWriter output,boolean ignoreOntologyPrefixes) { status.log(2,"Checking satisfiability of '"+conceptName+"'"); Prefixes prefixes=hermit.getPrefixes(); String conceptUri=prefixes.canBeExpanded(conceptName) ? prefixes.expandAbbreviatedIRI(conceptName) : conceptName; if (conceptUri.startsWith("<") && conceptUri.endsWith(">")) conceptUri=conceptUri.substring(1,conceptUri.length()-1); OWLClass owlClass=OWLManager.createOWLOntologyManager().getOWLDataFactory().getOWLClass(IRI.create(conceptUri)); if (!hermit.isDefined(owlClass)) { status.log(0,"Warning: class '"+conceptUri+"' was not declared in the ontology."); } boolean result=hermit.isSatisfiable(owlClass); output.println(conceptName+(result ? " is satisfiable." : " is not satisfiable.")); output.flush(); } }
@Override public void run(Reasoner hermit, StatusOutput status, PrintWriter output, boolean ignoreOntologyPrefixes) { output.println("Prefixes:"); for (Map.Entry<String, String> e : hermit.getPrefixes().getPrefixIRIsByPrefixName().entrySet()) { output.println("\t" + e.getKey() + "\t" + e.getValue()); } output.flush(); } }
public Prefixes() { m_prefixIRIsByPrefixName=new TreeMap<String,String>(); m_prefixNamesByPrefixIRI=new TreeMap<String,String>(); buildPrefixIRIMatchingPattern(); } protected void buildPrefixIRIMatchingPattern() {
/** * @param defaultPrefixIRI defaultPrefixIRI * @return true if modification happened */ public boolean declareDefaultPrefix(String defaultPrefixIRI) { return declarePrefix(":",defaultPrefixIRI); } /**
/** * @param initialPrefixes prefixes */ public ImmutablePrefixes(Map<String,String> initialPrefixes) { for (Map.Entry<String,String> entry : initialPrefixes.entrySet()) super.declarePrefixRaw(entry.getKey(),entry.getValue()); buildPrefixIRIMatchingPattern(); } @Override
@Override public void run(Reasoner hermit,StatusOutput status,PrintWriter output,boolean ignoreOntologyPrefixes) { if (file!=null) { if (file.equals("-")) { output=new PrintWriter(System.out); } else { java.io.FileOutputStream f; try { f=new java.io.FileOutputStream(file); } catch (java.io.FileNotFoundException e) { throw new IllegalArgumentException("unable to open "+file+" for writing"); } catch (SecurityException e) { throw new IllegalArgumentException("unable to write to "+file); } output=new PrintWriter(f); } } if (ignoreOntologyPrefixes) output.println(hermit.getDLOntology().toString(new Prefixes())); else output.println(hermit.getDLOntology().toString(hermit.getPrefixes())); output.flush(); } }
protected void createPrefixes() { m_prefixes=new Prefixes(); m_prefixes.declareSemanticWebPrefixes(); Set<String> individualIRIs=new HashSet<String>(); Set<String> anonIndividualIRIs=new HashSet<String>(); for (Individual individual : m_dlOntology.getAllIndividuals()) if (individual.isAnonymous()) addIRI(individual.getIRI(),anonIndividualIRIs); else addIRI(individual.getIRI(),individualIRIs); m_prefixes.declareInternalPrefixes(individualIRIs,anonIndividualIRIs); m_prefixes.declareDefaultPrefix(m_dlOntology.getOntologyIRI()+"#"); // declare prefixes as used in the ontology if possible OWLOntologyFormat format=m_rootOntology.getOWLOntologyManager().getOntologyFormat(m_rootOntology); if (format instanceof PrefixOWLOntologyFormat) { PrefixOWLOntologyFormat prefixFormat=(PrefixOWLOntologyFormat)format; for (String prefixName : prefixFormat.getPrefixName2PrefixMap().keySet()) { String prefix=prefixFormat.getPrefixName2PrefixMap().get(prefixName); if (m_prefixes.getPrefixName(prefix)==null) try { m_prefixes.declarePrefix(prefixName,prefix); } catch (IllegalArgumentException e) { // ignore } } } } protected void addIRI(String uri,Set<String> prefixIRIs) {
status.log(2, "Finding subs of '" + conceptName + "'"); Prefixes prefixes = hermit.getPrefixes(); String conceptUri = prefixes.canBeExpanded(conceptName) ? prefixes.expandAbbreviatedIRI(conceptName) : conceptName; if (conceptUri.startsWith("<") && conceptUri.endsWith(">")) conceptUri = conceptUri.substring(1, conceptUri.length() - 1); if (ignoreOntologyPrefixes) { String iri = classInSet.getIRI().toString(); if (prefixes.canBeExpanded(iri)) output.println("\t" + prefixes.expandAbbreviatedIRI(iri)); else output.println("\t" + iri); } else output.println("\t" + prefixes.abbreviateIRI(classInSet.getIRI().toString())); output.flush();
protected DLPredicate getDLPredicate(String predicate) { if ("==".equals(predicate)) return Equality.INSTANCE; else if ("!=".equals(predicate)) return Inequality.INSTANCE; else if (predicate.startsWith("+")) return AtomicConcept.create(m_debugger.getPrefixes().expandAbbreviatedIRI(predicate.substring(1))); else if (predicate.startsWith("-")) return AtomicRole.create(m_debugger.getPrefixes().expandAbbreviatedIRI(predicate.substring(1))); else if (predicate.startsWith("$")) { String graphName=m_debugger.getPrefixes().expandAbbreviatedIRI(predicate.substring(1)); for (DescriptionGraph descriptionGraph : m_debugger.getTableau().getPermanentDLOntology().getAllDescriptionGraphs()) if (graphName.equals(descriptionGraph.getName())) return descriptionGraph; return null; } else return null; } /**
for (Map.Entry<String,String> entry : prefixes.getPrefixIRIsByPrefixName().entrySet()) { StringBuilder.append(" ").append(entry.getKey()).append(" = <").append(entry.getValue()).append('>').append(CRLF);
/**Prefixes*/ public Prefixes() { m_prefixIRIsByPrefixName=new TreeMap<>(); m_prefixNamesByPrefixIRI=new TreeMap<>(); buildPrefixIRIMatchingPattern(); } protected void buildPrefixIRIMatchingPattern() {
public boolean declareDefaultPrefix(String defaultPrefixIRI) { return declarePrefix(":",defaultPrefixIRI); } public Map<String,String> getPrefixIRIsByPrefixName() {
public ImmutablePrefixes(Map<String,String> initialPrefixes) { for (Map.Entry<String,String> entry : initialPrefixes.entrySet()) super.declarePrefixRaw(entry.getKey(),entry.getValue()); buildPrefixIRIMatchingPattern(); } protected boolean declarePrefixRaw(String prefixName,String prefixIRI) {