org.semanticweb.HermiT.structural
Class OWLNormalization

java.lang.Object
  extended by org.semanticweb.HermiT.structural.OWLNormalization

public class OWLNormalization
extends java.lang.Object

This class implements the structural transformation from our new tableau paper. This transformation departs in the following way from the paper: it keeps the concepts of the form \exists R.{ a_1, ..., a_n }, \forall R.{ a_1, ..., a_n }, and \forall R.\neg { a } intact. These concepts are then clausified in a more efficient way.


Nested Class Summary
protected  class OWLNormalization.AxiomVisitor
           
protected  class OWLNormalization.DataRangeNormalizationVisitor
           
protected  class OWLNormalization.NormalizationVisitor
           
protected  class OWLNormalization.PLVisitor
          checks the polarity
protected  class OWLNormalization.Rule2FactConverter
           
protected  class OWLNormalization.RuleNormalizer
           
 
Field Summary
protected  OWLAxioms m_axioms
           
protected  java.util.Map<org.semanticweb.owlapi.model.OWLDataRange,org.semanticweb.owlapi.model.OWLDatatype> m_dataRangeDefinitions
           
protected  java.util.Map<org.semanticweb.owlapi.model.OWLClassExpression,org.semanticweb.owlapi.model.OWLClassExpression> m_definitions
           
protected  java.util.Map<org.semanticweb.owlapi.model.OWLObjectOneOf,org.semanticweb.owlapi.model.OWLClass> m_definitionsForNegativeNominals
           
protected  ExpressionManager m_expressionManager
           
protected  org.semanticweb.owlapi.model.OWLDataFactory m_factory
           
protected  int m_firstReplacementIndex
           
protected  OWLNormalization.PLVisitor m_plVisitor
           
 
Constructor Summary
OWLNormalization(org.semanticweb.owlapi.model.OWLDataFactory factory, OWLAxioms axioms, int firstReplacementIndex)
           
 
Method Summary
protected  void addFact(org.semanticweb.owlapi.model.OWLIndividualAxiom axiom)
           
protected  void addHasKey(org.semanticweb.owlapi.model.OWLHasKeyAxiom axiom)
           
protected  void addInclusion(org.semanticweb.owlapi.model.OWLDataPropertyExpression subDataPropertyExpression, org.semanticweb.owlapi.model.OWLDataPropertyExpression superDataPropertyExpression)
           
protected  void addInclusion(org.semanticweb.owlapi.model.OWLObjectPropertyExpression[] subObjectPropertyExpressions, org.semanticweb.owlapi.model.OWLObjectPropertyExpression superObjectPropertyExpression)
           
protected  void addInclusion(org.semanticweb.owlapi.model.OWLObjectPropertyExpression subObjectPropertyExpression, org.semanticweb.owlapi.model.OWLObjectPropertyExpression superObjectPropertyExpression)
           
protected  boolean distributeUnionOverAnd(org.semanticweb.owlapi.model.OWLClassExpression[] descriptions, java.util.List<org.semanticweb.owlapi.model.OWLClassExpression[]> inclusions)
           
protected  boolean distributeUnionOverAnd(org.semanticweb.owlapi.model.OWLDataRange[] descriptions, java.util.List<org.semanticweb.owlapi.model.OWLDataRange[]> inclusions)
           
protected  org.semanticweb.owlapi.model.OWLClass getClassFor(org.semanticweb.owlapi.model.OWLClassExpression description, boolean[] alreadyExists)
           
protected  org.semanticweb.owlapi.model.OWLDataPropertyAssertionAxiom getDataPropertyAssertionFromSyntacticVariant(org.semanticweb.owlapi.model.OWLClassAssertionAxiom axiom)
           
protected  org.semanticweb.owlapi.model.OWLClassExpression getDefinitionFor(org.semanticweb.owlapi.model.OWLClassExpression description, boolean[] alreadyExists)
           
protected  org.semanticweb.owlapi.model.OWLClassExpression getDefinitionFor(org.semanticweb.owlapi.model.OWLClassExpression description, boolean[] alreadyExists, boolean forcePositive)
           
protected  org.semanticweb.owlapi.model.OWLDatatype getDefinitionFor(org.semanticweb.owlapi.model.OWLDataRange dr, boolean[] alreadyExists)
           
protected  org.semanticweb.owlapi.model.OWLClass getDefinitionForNegativeNominal(org.semanticweb.owlapi.model.OWLObjectOneOf nominal, boolean[] alreadyExists)
           
protected static boolean isAtomic(org.semanticweb.owlapi.model.OWLDataRange dr)
           
protected static boolean isLiteral(org.semanticweb.owlapi.model.OWLDataRange dr)
           
protected static boolean isNegatedAtomic(org.semanticweb.owlapi.model.OWLDataRange dr)
           
protected static boolean isNegatedOneNominal(org.semanticweb.owlapi.model.OWLClassExpression description)
           
protected static boolean isNominal(org.semanticweb.owlapi.model.OWLClassExpression description)
           
protected static boolean isSimple(org.semanticweb.owlapi.model.OWLClassExpression description)
           
protected  void makeAsymmetric(org.semanticweb.owlapi.model.OWLObjectPropertyExpression objectPropertyExpression)
           
protected  void makeIrreflexive(org.semanticweb.owlapi.model.OWLObjectPropertyExpression objectPropertyExpression)
           
protected  void makeReflexive(org.semanticweb.owlapi.model.OWLObjectPropertyExpression objectPropertyExpression)
           
protected  void makeTransitive(org.semanticweb.owlapi.model.OWLObjectPropertyExpression objectPropertyExpression)
           
protected  org.semanticweb.owlapi.model.OWLClassExpression negative(org.semanticweb.owlapi.model.OWLClassExpression description)
           
protected  org.semanticweb.owlapi.model.OWLDataRange negative(org.semanticweb.owlapi.model.OWLDataRange dataRange)
           
protected  void normalizeInclusions(java.util.List<org.semanticweb.owlapi.model.OWLClassExpression[]> inclusions, java.util.List<org.semanticweb.owlapi.model.OWLDataRange[]> dataRangeInclusions)
           
protected  void normalizeRules(java.util.List<org.semanticweb.owlapi.model.OWLClassExpression[]> inclusions, java.util.List<org.semanticweb.owlapi.model.OWLDataRange[]> dataRangeInclusions, java.util.Collection<org.semanticweb.owlapi.model.SWRLRule> rules)
           
protected  boolean optimizedNegativeOneOfTranslation(org.semanticweb.owlapi.model.OWLClassExpression[] descriptions, java.util.Collection<org.semanticweb.owlapi.model.OWLIndividualAxiom> facts)
           
protected  org.semanticweb.owlapi.model.OWLClassExpression positive(org.semanticweb.owlapi.model.OWLClassExpression description)
           
protected  org.semanticweb.owlapi.model.OWLDataRange positive(org.semanticweb.owlapi.model.OWLDataRange dataRange)
           
 void processAxioms(java.util.Collection<? extends org.semanticweb.owlapi.model.OWLAxiom> axioms)
           
 void processOntology(org.semanticweb.owlapi.model.OWLOntology ontology)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_factory

protected final org.semanticweb.owlapi.model.OWLDataFactory m_factory

m_axioms

protected final OWLAxioms m_axioms

m_firstReplacementIndex

protected final int m_firstReplacementIndex

m_definitions

protected final java.util.Map<org.semanticweb.owlapi.model.OWLClassExpression,org.semanticweb.owlapi.model.OWLClassExpression> m_definitions

m_definitionsForNegativeNominals

protected final java.util.Map<org.semanticweb.owlapi.model.OWLObjectOneOf,org.semanticweb.owlapi.model.OWLClass> m_definitionsForNegativeNominals

m_expressionManager

protected final ExpressionManager m_expressionManager

m_plVisitor

protected final OWLNormalization.PLVisitor m_plVisitor

m_dataRangeDefinitions

protected final java.util.Map<org.semanticweb.owlapi.model.OWLDataRange,org.semanticweb.owlapi.model.OWLDatatype> m_dataRangeDefinitions
Constructor Detail

OWLNormalization

public OWLNormalization(org.semanticweb.owlapi.model.OWLDataFactory factory,
                        OWLAxioms axioms,
                        int firstReplacementIndex)
Method Detail

processOntology

public void processOntology(org.semanticweb.owlapi.model.OWLOntology ontology)

processAxioms

public void processAxioms(java.util.Collection<? extends org.semanticweb.owlapi.model.OWLAxiom> axioms)

addFact

protected void addFact(org.semanticweb.owlapi.model.OWLIndividualAxiom axiom)

addHasKey

protected void addHasKey(org.semanticweb.owlapi.model.OWLHasKeyAxiom axiom)

addInclusion

protected void addInclusion(org.semanticweb.owlapi.model.OWLObjectPropertyExpression subObjectPropertyExpression,
                            org.semanticweb.owlapi.model.OWLObjectPropertyExpression superObjectPropertyExpression)

addInclusion

protected void addInclusion(org.semanticweb.owlapi.model.OWLObjectPropertyExpression[] subObjectPropertyExpressions,
                            org.semanticweb.owlapi.model.OWLObjectPropertyExpression superObjectPropertyExpression)

addInclusion

protected void addInclusion(org.semanticweb.owlapi.model.OWLDataPropertyExpression subDataPropertyExpression,
                            org.semanticweb.owlapi.model.OWLDataPropertyExpression superDataPropertyExpression)

makeTransitive

protected void makeTransitive(org.semanticweb.owlapi.model.OWLObjectPropertyExpression objectPropertyExpression)

makeReflexive

protected void makeReflexive(org.semanticweb.owlapi.model.OWLObjectPropertyExpression objectPropertyExpression)

makeIrreflexive

protected void makeIrreflexive(org.semanticweb.owlapi.model.OWLObjectPropertyExpression objectPropertyExpression)

makeAsymmetric

protected void makeAsymmetric(org.semanticweb.owlapi.model.OWLObjectPropertyExpression objectPropertyExpression)

isSimple

protected static boolean isSimple(org.semanticweb.owlapi.model.OWLClassExpression description)

isLiteral

protected static boolean isLiteral(org.semanticweb.owlapi.model.OWLDataRange dr)

isAtomic

protected static boolean isAtomic(org.semanticweb.owlapi.model.OWLDataRange dr)

isNegatedAtomic

protected static boolean isNegatedAtomic(org.semanticweb.owlapi.model.OWLDataRange dr)

isNominal

protected static boolean isNominal(org.semanticweb.owlapi.model.OWLClassExpression description)

isNegatedOneNominal

protected static boolean isNegatedOneNominal(org.semanticweb.owlapi.model.OWLClassExpression description)

getDataPropertyAssertionFromSyntacticVariant

protected org.semanticweb.owlapi.model.OWLDataPropertyAssertionAxiom getDataPropertyAssertionFromSyntacticVariant(org.semanticweb.owlapi.model.OWLClassAssertionAxiom axiom)

normalizeRules

protected void normalizeRules(java.util.List<org.semanticweb.owlapi.model.OWLClassExpression[]> inclusions,
                              java.util.List<org.semanticweb.owlapi.model.OWLDataRange[]> dataRangeInclusions,
                              java.util.Collection<org.semanticweb.owlapi.model.SWRLRule> rules)

normalizeInclusions

protected void normalizeInclusions(java.util.List<org.semanticweb.owlapi.model.OWLClassExpression[]> inclusions,
                                   java.util.List<org.semanticweb.owlapi.model.OWLDataRange[]> dataRangeInclusions)

distributeUnionOverAnd

protected boolean distributeUnionOverAnd(org.semanticweb.owlapi.model.OWLClassExpression[] descriptions,
                                         java.util.List<org.semanticweb.owlapi.model.OWLClassExpression[]> inclusions)

distributeUnionOverAnd

protected boolean distributeUnionOverAnd(org.semanticweb.owlapi.model.OWLDataRange[] descriptions,
                                         java.util.List<org.semanticweb.owlapi.model.OWLDataRange[]> inclusions)

optimizedNegativeOneOfTranslation

protected boolean optimizedNegativeOneOfTranslation(org.semanticweb.owlapi.model.OWLClassExpression[] descriptions,
                                                    java.util.Collection<org.semanticweb.owlapi.model.OWLIndividualAxiom> facts)

getDefinitionFor

protected org.semanticweb.owlapi.model.OWLClassExpression getDefinitionFor(org.semanticweb.owlapi.model.OWLClassExpression description,
                                                                           boolean[] alreadyExists,
                                                                           boolean forcePositive)

getDefinitionFor

protected org.semanticweb.owlapi.model.OWLDatatype getDefinitionFor(org.semanticweb.owlapi.model.OWLDataRange dr,
                                                                    boolean[] alreadyExists)

getDefinitionFor

protected org.semanticweb.owlapi.model.OWLClassExpression getDefinitionFor(org.semanticweb.owlapi.model.OWLClassExpression description,
                                                                           boolean[] alreadyExists)

getClassFor

protected org.semanticweb.owlapi.model.OWLClass getClassFor(org.semanticweb.owlapi.model.OWLClassExpression description,
                                                            boolean[] alreadyExists)

getDefinitionForNegativeNominal

protected org.semanticweb.owlapi.model.OWLClass getDefinitionForNegativeNominal(org.semanticweb.owlapi.model.OWLObjectOneOf nominal,
                                                                                boolean[] alreadyExists)

positive

protected org.semanticweb.owlapi.model.OWLClassExpression positive(org.semanticweb.owlapi.model.OWLClassExpression description)

negative

protected org.semanticweb.owlapi.model.OWLClassExpression negative(org.semanticweb.owlapi.model.OWLClassExpression description)

positive

protected org.semanticweb.owlapi.model.OWLDataRange positive(org.semanticweb.owlapi.model.OWLDataRange dataRange)

negative

protected org.semanticweb.owlapi.model.OWLDataRange negative(org.semanticweb.owlapi.model.OWLDataRange dataRange)