public class MinimalModelGenerator extends Object
Modifier and Type | Field and Description |
---|---|
boolean |
isStrict |
protected ModelContainer |
model |
protected Map<org.semanticweb.owlapi.model.OWLClass,org.semanticweb.owlapi.model.OWLNamedIndividual> |
prototypeIndividualMap |
Constructor and Description |
---|
MinimalModelGenerator(ModelContainer model) |
Modifier and Type | Method and Description |
---|---|
protected void |
addTriple(org.semanticweb.owlapi.model.OWLNamedIndividual sourceIndividual,
org.semanticweb.owlapi.model.OWLObjectPropertyExpression property,
org.semanticweb.owlapi.model.OWLNamedIndividual targetIndividual) |
void |
anonymizeIndividuals(Set<org.semanticweb.owlapi.model.OWLNamedIndividual> inds)
calls
anonymizeIndividual(OWLNamedIndividual) on each member of the set |
void |
anonymizeIndividualsNotIn(org.semanticweb.owlapi.model.OWLClass c)
|
void |
anonymizeIndividualsNotIn(Set<org.semanticweb.owlapi.model.OWLClass> cs)
calls
anonymizeIndividual(OWLNamedIndividual) on any individual not in one of c1, ..., cn |
void |
collapseIndividuals()
generation of prototypes often generate multiple individuals where there
should in fact be one.
|
void |
extractModule()
Extract a module from tboxOntology using aboxOntology as seed.
|
void |
generateAllNecessaryIndividuals() |
void |
generateAllNecessaryIndividuals(boolean isCollapse,
boolean isReduce) |
org.semanticweb.owlapi.model.OWLNamedIndividual |
generateNecessaryIndividuals(org.semanticweb.owlapi.model.OWLClassExpression c)
Generates a graph of ABox axioms rooted at proto(c), where proto(c) is
the prototype individual of class c.
|
org.semanticweb.owlapi.model.OWLNamedIndividual |
generateNecessaryIndividuals(org.semanticweb.owlapi.model.OWLClassExpression c,
boolean isCollapse)
Calls
generateNecessaryIndividuals(OWLClassExpression) , and if isCollapse is set,
will call collapseIndividuals() |
org.semanticweb.owlapi.model.OWLNamedIndividual |
generateNecessaryIndividuals(org.semanticweb.owlapi.model.OWLClassExpression c,
boolean isCollapse,
boolean isTransitivelyReduce)
Calls
generateNecessaryIndividuals(OWLClassExpression)
if isCollapse is set, will call collapseIndividuals()
if isTransitivelyReduce is set, will call performTransitiveReduction() |
Set<org.semanticweb.owlapi.model.OWLClass> |
getDirectExclusionSet() |
Set<org.semanticweb.owlapi.model.OWLClass> |
getExclusionSet() |
protected Set<org.semanticweb.owlapi.model.OWLObjectSomeValuesFrom> |
getExistentialRelationships(org.semanticweb.owlapi.model.OWLClassExpression c) |
protected Set<org.semanticweb.owlapi.model.OWLObjectSomeValuesFrom> |
getExistentialRelationships(org.semanticweb.owlapi.model.OWLClassExpression c,
boolean isDirect) |
protected Set<org.semanticweb.owlapi.model.OWLObjectSomeValuesFrom> |
getExistentialRelationships(org.semanticweb.owlapi.model.OWLNamedIndividual ind)
Given an individual i, return a set of existential restrictions
, where i instantiates P some C. |
Collection<org.semanticweb.owlapi.model.OWLNamedIndividual> |
getGeneratedIndividuals() |
Set<org.semanticweb.owlapi.model.OWLClass> |
getInclusionSet() |
Set<org.semanticweb.owlapi.model.OWLIndividual> |
getIndividualsInProperPath(org.semanticweb.owlapi.model.OWLIndividual i,
org.semanticweb.owlapi.model.OWLObjectPropertyExpression p) |
Set<org.semanticweb.owlapi.model.OWLIndividual> |
getIndividualsInProperPath(org.semanticweb.owlapi.model.OWLIndividual i,
Set<org.semanticweb.owlapi.model.OWLObjectPropertyExpression> ps) |
ModelContainer |
getModel() |
org.semanticweb.owlapi.model.OWLClassExpression |
getMostSpecificClassExpression(org.semanticweb.owlapi.model.OWLNamedIndividual i)
Generate a class expression CE such that i instantiates CE, and there
is no other CE' such that CE' is more specific that CE, and i instantiates CE',
and CE' is guaranteed to subsume i even if additional facts are added to the ABox
or TBox
This is equivalent to (TODO: proof) the class expression formed by walking
the ABox graph starting from i, creating an existential restriction for each edge
and intersecting it with the type of each node.
|
org.semanticweb.owlapi.model.OWLClassExpression |
getMostSpecificClassExpression(org.semanticweb.owlapi.model.OWLNamedIndividual i,
List<org.semanticweb.owlapi.model.OWLObjectProperty> propertySet) |
org.semanticweb.owlapi.model.OWLClassExpression |
getMostSpecificClassExpression(org.semanticweb.owlapi.model.OWLNamedIndividual i,
Set<org.semanticweb.owlapi.model.OWLNamedIndividual> visited,
List<org.semanticweb.owlapi.model.OWLObjectProperty> propertySet) |
protected org.semanticweb.owlapi.model.OWLClass |
getPrototypeClass(org.semanticweb.owlapi.model.OWLNamedIndividual i)
Note that the reasoner may be able to provide a more specific class
|
protected Map<org.semanticweb.owlapi.model.OWLClass,org.semanticweb.owlapi.model.OWLClassExpression> |
getQueryClassMap() |
Set<org.semanticweb.owlapi.model.OWLClassExpression> |
getSuperClassExpressions(org.semanticweb.owlapi.model.OWLClassExpression x,
boolean isDirect) |
boolean |
hasCycle(org.semanticweb.owlapi.model.OWLIndividual i,
org.semanticweb.owlapi.model.OWLObjectPropertyExpression p) |
boolean |
hasCycle(org.semanticweb.owlapi.model.OWLIndividual i,
org.semanticweb.owlapi.model.OWLObjectPropertyExpression p,
Set<org.semanticweb.owlapi.model.OWLIndividual> visited) |
boolean |
isAssertInverses()
|
boolean |
isPrecomputePropertyClassCombinations() |
boolean |
isRemoveAmbiguousIndividuals() |
protected boolean |
mergeInto(org.semanticweb.owlapi.model.OWLNamedIndividual src,
org.semanticweb.owlapi.model.OWLNamedIndividual tgt)
Moves all axioms about src to tgt
|
void |
normalizeDirections(org.semanticweb.owlapi.model.OWLObjectPropertyExpression p)
Motivation:
After generation, we may be left with axioms:
|
void |
performTransitiveReduction() |
void |
performTransitiveReduction(org.semanticweb.owlapi.model.OWLObjectPropertyExpression p)
TODO - use reasoner if DL reasoner available
(currently Elk 0.4.x will not perform OPE inferences)
Limitations:
does not use
- subPropertyOf
- equivalentProperties
- subPropertyChain
|
void |
setAssertInverses(boolean isAssertInverses)
If set, every asserted OPE(P X Y) will also generate OPE(P' Y X) where P' InverseOf P
|
void |
setContextualizingSuffix(String contextualizingSuffix) |
void |
setDirectExclusionSet(Set<org.semanticweb.owlapi.model.OWLClass> directExclusionSet) |
void |
setExclusionSet(Set<org.semanticweb.owlapi.model.OWLClass> exclusionSet) |
void |
setInclusionSet(Set<org.semanticweb.owlapi.model.OWLClass> inclusionSet) |
void |
setPrecomputePropertyClassCombinations(boolean isPrecomputePropertyClassCombinations)
If set, all combinations of PxC will be generated for query purposes
This is not necessary for minimal model generation, as the set of
existential expressions used in the tbox is sufficient to calculate
the existential graph, but this precompute may be useful for other
purposes - e.g.
|
void |
setRemoveAmbiguousIndividuals(boolean isRemoveAmbiguousIndividuals) |
protected final ModelContainer model
public boolean isStrict
protected Map<org.semanticweb.owlapi.model.OWLClass,org.semanticweb.owlapi.model.OWLNamedIndividual> prototypeIndividualMap
public MinimalModelGenerator(ModelContainer model) throws org.semanticweb.owlapi.model.OWLOntologyCreationException
org.semanticweb.owlapi.model.OWLOntologyCreationException
public ModelContainer getModel()
public boolean isAssertInverses()
public void setAssertInverses(boolean isAssertInverses)
isAssertInverses
- public boolean isRemoveAmbiguousIndividuals()
public void setRemoveAmbiguousIndividuals(boolean isRemoveAmbiguousIndividuals)
isRemoveAmbiguousIndividuals
- public Set<org.semanticweb.owlapi.model.OWLClass> getInclusionSet()
public void setInclusionSet(Set<org.semanticweb.owlapi.model.OWLClass> inclusionSet)
public Set<org.semanticweb.owlapi.model.OWLClass> getExclusionSet()
public void setExclusionSet(Set<org.semanticweb.owlapi.model.OWLClass> exclusionSet)
public Set<org.semanticweb.owlapi.model.OWLClass> getDirectExclusionSet()
public void setDirectExclusionSet(Set<org.semanticweb.owlapi.model.OWLClass> directExclusionSet)
public void setContextualizingSuffix(String contextualizingSuffix)
contextualizingSuffix
- TODOpublic boolean isPrecomputePropertyClassCombinations()
public void setPrecomputePropertyClassCombinations(boolean isPrecomputePropertyClassCombinations)
isPrecomputePropertyClassCombinations
- public Collection<org.semanticweb.owlapi.model.OWLNamedIndividual> getGeneratedIndividuals()
protected org.semanticweb.owlapi.model.OWLClass getPrototypeClass(org.semanticweb.owlapi.model.OWLNamedIndividual i)
i
- public org.semanticweb.owlapi.model.OWLNamedIndividual generateNecessaryIndividuals(org.semanticweb.owlapi.model.OWLClassExpression c)
c
- public org.semanticweb.owlapi.model.OWLNamedIndividual generateNecessaryIndividuals(org.semanticweb.owlapi.model.OWLClassExpression c, boolean isCollapse)
generateNecessaryIndividuals(OWLClassExpression)
, and if isCollapse is set,
will call collapseIndividuals()
c
- isCollapse
- public org.semanticweb.owlapi.model.OWLNamedIndividual generateNecessaryIndividuals(org.semanticweb.owlapi.model.OWLClassExpression c, boolean isCollapse, boolean isTransitivelyReduce)
generateNecessaryIndividuals(OWLClassExpression)
collapseIndividuals()
performTransitiveReduction()
c
- isCollapse
- isTransitivelyReduce
- public void generateAllNecessaryIndividuals()
public void generateAllNecessaryIndividuals(boolean isCollapse, boolean isReduce)
public void collapseIndividuals()
hand SubClassOf: autopod, part_of some forelimb autopod SubClassOf: part_of some limbhere the generated instance graph is
hand-1 part_of forelimb-1 part_of some limb-1There is nothing in the OWL to state that these are the same individual, but we make that assumption here.
protected boolean mergeInto(org.semanticweb.owlapi.model.OWLNamedIndividual src, org.semanticweb.owlapi.model.OWLNamedIndividual tgt)
src
- tgt
- public void anonymizeIndividualsNotIn(org.semanticweb.owlapi.model.OWLClass c)
c
- public void anonymizeIndividualsNotIn(Set<org.semanticweb.owlapi.model.OWLClass> cs)
anonymizeIndividual(OWLNamedIndividual)
on any individual not in one of c1, ..., cncs
- public void anonymizeIndividuals(Set<org.semanticweb.owlapi.model.OWLNamedIndividual> inds)
anonymizeIndividual(OWLNamedIndividual)
on each member of the setinds
- public org.semanticweb.owlapi.model.OWLClassExpression getMostSpecificClassExpression(org.semanticweb.owlapi.model.OWLNamedIndividual i)
i
- public org.semanticweb.owlapi.model.OWLClassExpression getMostSpecificClassExpression(org.semanticweb.owlapi.model.OWLNamedIndividual i, List<org.semanticweb.owlapi.model.OWLObjectProperty> propertySet)
public org.semanticweb.owlapi.model.OWLClassExpression getMostSpecificClassExpression(org.semanticweb.owlapi.model.OWLNamedIndividual i, Set<org.semanticweb.owlapi.model.OWLNamedIndividual> visited, List<org.semanticweb.owlapi.model.OWLObjectProperty> propertySet)
protected Map<org.semanticweb.owlapi.model.OWLClass,org.semanticweb.owlapi.model.OWLClassExpression> getQueryClassMap()
protected Set<org.semanticweb.owlapi.model.OWLObjectSomeValuesFrom> getExistentialRelationships(org.semanticweb.owlapi.model.OWLNamedIndividual ind)
, where i instantiates P some C. The implementation for this method depends on the pre-materialization of a Query Ontology containing
combinations. Redundant expressions are filtered out
ind
- protected Set<org.semanticweb.owlapi.model.OWLObjectSomeValuesFrom> getExistentialRelationships(org.semanticweb.owlapi.model.OWLClassExpression c)
protected Set<org.semanticweb.owlapi.model.OWLObjectSomeValuesFrom> getExistentialRelationships(org.semanticweb.owlapi.model.OWLClassExpression c, boolean isDirect)
public Set<org.semanticweb.owlapi.model.OWLClassExpression> getSuperClassExpressions(org.semanticweb.owlapi.model.OWLClassExpression x, boolean isDirect)
protected void addTriple(org.semanticweb.owlapi.model.OWLNamedIndividual sourceIndividual, org.semanticweb.owlapi.model.OWLObjectPropertyExpression property, org.semanticweb.owlapi.model.OWLNamedIndividual targetIndividual)
public void extractModule()
SyntacticLocalityModuleExtractor
public void normalizeDirections(org.semanticweb.owlapi.model.OWLObjectPropertyExpression p)
OPE(P X Y) OPE(P' Y X) InverseProperties(P P')This is useful for reasoning with inverse-unaware reasoners, but is otherwise redundant and can clutter displays. An alternate scenario is where we have a mixture of P and P' non-redundant assertions, and wish to choose one direction as the standard. Calling normalizeDirections(P) will remove OPE(P' Y X) in the above if OPE(P X Y) is not present, this will be added.
p
- public void performTransitiveReduction()
public void performTransitiveReduction(org.semanticweb.owlapi.model.OWLObjectPropertyExpression p)
p
- public boolean hasCycle(org.semanticweb.owlapi.model.OWLIndividual i, org.semanticweb.owlapi.model.OWLObjectPropertyExpression p)
public boolean hasCycle(org.semanticweb.owlapi.model.OWLIndividual i, org.semanticweb.owlapi.model.OWLObjectPropertyExpression p, Set<org.semanticweb.owlapi.model.OWLIndividual> visited)
public Set<org.semanticweb.owlapi.model.OWLIndividual> getIndividualsInProperPath(org.semanticweb.owlapi.model.OWLIndividual i, org.semanticweb.owlapi.model.OWLObjectPropertyExpression p)
Copyright © 2010–2015. All rights reserved.