fuzzydl
Class KnowledgeBase

java.lang.Object
  extended by fuzzydl.KnowledgeBase

public class KnowledgeBase
extends java.lang.Object

Fuzzy knowledge base.


Field Summary
 java.util.HashSet<java.lang.String> abstractRoles
          Abstract roles.
 java.util.Hashtable<java.lang.String,Concept> atomicConcepts
          Fuzzy concepts.
 java.util.Hashtable<java.lang.String,java.util.ArrayList<Assertion>> blockedAssertions
          Blocked assertions.
 java.util.Hashtable<java.lang.String,FuzzyConcreteConcept> concreteConcepts
          Fuzzy concepts.
 java.util.Hashtable<java.lang.String,ConcreteFeature> concreteFeatures
          Concrete features.
 boolean concreteFuzzyConcepts
          Concrete fuzzy concepts.
 java.util.HashSet<java.lang.String> concreteRoles
          Concrete roles.
 java.util.ArrayList<CreatedIndividual> createdIndivs
          Created individuals.
 java.util.Hashtable<java.lang.String,java.util.ArrayList<java.lang.String>> directlyBlockedChildren
          Direcyly blocked childrens.
 java.util.Hashtable<java.lang.String,java.util.HashSet<Concept>> domainRestrictions
           
 java.util.HashSet<java.lang.String> funcRoles
          Functional roles.
 java.util.Hashtable<java.lang.String,TriangularFuzzyNumber> fuzzyNumbers
          Fuzzy numbers.
 java.util.Hashtable<java.lang.String,java.util.ArrayList<java.lang.String>> indirectlyBlockedChildren
          Indirecyly blocked childrens.
 java.util.Hashtable<java.lang.String,Individual> individuals
          Individuals.
 java.util.Hashtable<java.lang.String,java.util.Set<java.lang.String>> invRoles
          Inverse roles.
 MILPHelper milp
          MILP problem manager.
 java.util.Hashtable<java.lang.String,Modifier> modifiers
          Fuzzy modifiers.
 java.util.ArrayList<Assertion> negativeConcreteValueAssertions
          Negated datatype restrictions.
 int numDefinedInds
          Number of defined individuals.
 java.util.ArrayList<Assertion> positiveConcreteValueAssertions
          Datatype restrictions.
 java.util.Hashtable<java.lang.String,java.util.HashSet<Concept>> rangeRestrictions
           
 java.util.Hashtable<java.lang.String,java.util.Hashtable<java.lang.String,java.lang.Double>> rolesWithAllParents
           
 java.util.Hashtable<java.lang.String,java.util.ArrayList<java.lang.String>> rolesWithTransChildren
          Transitive childrens of a funcRole.
 boolean showLanguage
          Show the logic language to the user or not.
 java.util.HashSet<java.lang.String> similarityRels
          Similarity relations.
 java.util.HashSet<java.lang.String> transRoles
          Transitive roles.
 java.util.Hashtable<java.lang.String,java.lang.String> xprime_indivs
          x' individuals for indirect blocking.
 java.util.Hashtable<java.lang.String,java.util.ArrayList<java.lang.String>> yprime_indivs
          y' individuals for indirect blocking.
 
Constructor Summary
KnowledgeBase()
          Constructor
 
Method Summary
 void addAssertion(Assertion newAss)
          Adds a fuzzy assertion.
 void addAssertion(Individual a, Concept c, Degree n)
          Adds a fuzzy assertion of the form (a : C \geq 1 )
 void addConcept(java.lang.String conceptName, FuzzyConcreteConcept conc)
          Adds a fuzzy concept to the array of concepts in the fuzzy KB.
 void addConceptsDisjoint(java.util.Vector<java.lang.String> disjointConcepts)
          Adds some disjoint concept axioms.
 void addCreatedIndividual(java.lang.String indName, CreatedIndividual ind)
          Adds a created individual to the KB.
 Concept addDatatypeRestriction(int restrictionType, java.lang.Object o, java.lang.String fName)
          Adds a datatype restriction of the form (restrictionType, fName, o).
 void addDisjointUnionConcept(java.util.Vector<java.lang.String> disjointUnionConcepts)
          Adds a disjoint union concept axiom.
 void addEquivalenceRelation(java.lang.String role)
          Adds a fuzzy equivalence relation.
 void addEquivalentConcepts(java.util.Vector<Concept> equivConcepts)
          Adds some equivalent concept axioms.
 void addEquivalentRoles(java.util.Vector<java.lang.String> equivRoles)
          Adds some equivalent funcRole axioms.
 void addFuzzyNumber(java.lang.String fName, TriangularFuzzyNumber f)
          Adds a fuzzy number to the fuzzy KB.
 void addIndividual(java.lang.String indName, Individual ind)
          Adds a individual to the KB.
 void addInverseRoles(java.lang.String role, java.lang.String invRole)
          Adds an inverse funcRole axiom.
 void addModifier(java.lang.String modName, Modifier mod)
          Adds a fuzzy modifier to the fuzzy KB.
 void addRelation(Individual indA, java.lang.String role, Individual indB, Degree degree)
          Adds a fuzzy relation of the form (indA, indB, funcRole, degree)
 void addSimilarityRelation(java.lang.String role)
          Adds a fuzzy similarity relation.
 boolean checkFuzzyNumberConceptExists(java.lang.String concName)
          Checks if there exists a fuzzy number with the indicated name.
 void checkRole(java.lang.String roleName, Concept conc)
          Checks the disjointness between abstract and concrete roles.
 KnowledgeBase clone()
           
 void defineAtomicConcept(java.lang.String conceptName, Concept conc, int implication, double n)
          Adds an atomic fuzzy concept definition.
 void defineConcept(java.lang.String conceptName, Concept conc)
          Adds a fuzzy concept definition.
 void defineIntegerConcreteFeature(java.lang.String funcRole, java.lang.Integer d1, java.lang.Integer d2)
          Define a concrete feature with range integers in [d1, d2].
 void defineRealConcreteFeature(java.lang.String funcRole, java.lang.Double d1, java.lang.Double d2)
          Define a concrete feature with range real numbers in [d1, d2].
 void defineStringConcreteFeature(java.lang.String funcRole)
          Define a concrete feature with range string.
 void disableGciApplication()
          This method is used to avoid the application of fuzzy GCIs whenever a new individual is created.
 void g_implies(Concept conc1, Concept conc2, Degree degree)
          Adds a Goedel GCI.
 Concept getConcept(java.lang.String name)
          Gets a concept with indicated name.
 Individual getIndividual(java.lang.String indName)
          Gets an individual with the indicated name (creating it if necessary).
 java.lang.String getLanguage()
          Gets the language of the fuzzy KB, from ALC to SHIF(D).
 FuzzyLogic getLogic()
          Gets the fuzzy logic of the fuzzy knowledge base.
 CreatedIndividual getNewIndividual(Individual parent, java.lang.String fName)
           
 boolean hasUnfoldableTbox()
          Gets if the fuzzy KB has an unfoldable TBox.
 void implies(Concept conc1, Concept conc2, Degree degree)
          Adds a GCI (conc1, conc2, degree)
 void kd_implies(Concept conc1, Concept conc2, Degree degree)
          Adds a Kleene-Dienes GCI.
 void l_implies(Concept conc1, Concept conc2, Degree degree)
          Adds a Lukasiewicz GCI.
 void roleDomain(java.lang.String role, Concept conc)
          Adds a domain funcRole axiom.
 void roleImplies(java.lang.String subsumed, java.lang.String subsumer)
          Adds a RIA (subsumed, subsumer, 1).
 void roleImplies(java.lang.String subsumed, java.lang.String subsumer, java.lang.Double n)
          Adds a RIA (subsumed, subsumer, degree).
 void roleIsFunctional(java.lang.String role)
          Adds a functional funcRole axiom.
 void roleIsInverseFunctional(java.lang.String role)
          Adds an inverse functional funcRole axiom.
 void roleIsReflexive(java.lang.String role)
          Adds a reflexive funcRole axiom.
 void roleIsSymmetric(java.lang.String role)
          Adds a symmetric funcRole axiom.
 void roleIsTransitive(java.lang.String role)
          Adds a transitive funcRole axiom.
 void roleRange(java.lang.String role, Concept conc)
          Adds a funcRole range axiom.
 void saveToFile(java.lang.String fileName)
          Saves a fuzzy KB into a text file.
 void setLogic(FuzzyLogic logic)
          Sets the fuzzy logic of the fuzzy knowledge base.
 void solveKB()
          Prepares the fuzzy knowledge base to reason with it.
 void writeAtomicRoles()
          Write atomic fuzzy funcRole assertions into a MILP file.
 void z_implies(Concept conc1, Concept conc2)
          Adds a Lukasiewicz GCI.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

individuals

public java.util.Hashtable<java.lang.String,Individual> individuals
Individuals.


concreteConcepts

public java.util.Hashtable<java.lang.String,FuzzyConcreteConcept> concreteConcepts
Fuzzy concepts.


atomicConcepts

public java.util.Hashtable<java.lang.String,Concept> atomicConcepts
Fuzzy concepts.


concreteFuzzyConcepts

public boolean concreteFuzzyConcepts
Concrete fuzzy concepts.


fuzzyNumbers

public java.util.Hashtable<java.lang.String,TriangularFuzzyNumber> fuzzyNumbers
Fuzzy numbers.


modifiers

public java.util.Hashtable<java.lang.String,Modifier> modifiers
Fuzzy modifiers.


abstractRoles

public java.util.HashSet<java.lang.String> abstractRoles
Abstract roles.


concreteRoles

public java.util.HashSet<java.lang.String> concreteRoles
Concrete roles.


concreteFeatures

public java.util.Hashtable<java.lang.String,ConcreteFeature> concreteFeatures
Concrete features.


similarityRels

public java.util.HashSet<java.lang.String> similarityRels
Similarity relations.


funcRoles

public java.util.HashSet<java.lang.String> funcRoles
Functional roles.


transRoles

public java.util.HashSet<java.lang.String> transRoles
Transitive roles.


invRoles

public java.util.Hashtable<java.lang.String,java.util.Set<java.lang.String>> invRoles
Inverse roles.


createdIndivs

public java.util.ArrayList<CreatedIndividual> createdIndivs
Created individuals.


rolesWithTransChildren

public java.util.Hashtable<java.lang.String,java.util.ArrayList<java.lang.String>> rolesWithTransChildren
Transitive childrens of a funcRole.


indirectlyBlockedChildren

public java.util.Hashtable<java.lang.String,java.util.ArrayList<java.lang.String>> indirectlyBlockedChildren
Indirecyly blocked childrens.


directlyBlockedChildren

public java.util.Hashtable<java.lang.String,java.util.ArrayList<java.lang.String>> directlyBlockedChildren
Direcyly blocked childrens.


xprime_indivs

public java.util.Hashtable<java.lang.String,java.lang.String> xprime_indivs
x' individuals for indirect blocking.


yprime_indivs

public java.util.Hashtable<java.lang.String,java.util.ArrayList<java.lang.String>> yprime_indivs
y' individuals for indirect blocking.


blockedAssertions

public java.util.Hashtable<java.lang.String,java.util.ArrayList<Assertion>> blockedAssertions
Blocked assertions.


positiveConcreteValueAssertions

public java.util.ArrayList<Assertion> positiveConcreteValueAssertions
Datatype restrictions.


negativeConcreteValueAssertions

public java.util.ArrayList<Assertion> negativeConcreteValueAssertions
Negated datatype restrictions.


milp

public MILPHelper milp
MILP problem manager.


numDefinedInds

public int numDefinedInds
Number of defined individuals.


showLanguage

public boolean showLanguage
Show the logic language to the user or not.


domainRestrictions

public java.util.Hashtable<java.lang.String,java.util.HashSet<Concept>> domainRestrictions

rangeRestrictions

public java.util.Hashtable<java.lang.String,java.util.HashSet<Concept>> rangeRestrictions

rolesWithAllParents

public java.util.Hashtable<java.lang.String,java.util.Hashtable<java.lang.String,java.lang.Double>> rolesWithAllParents
Constructor Detail

KnowledgeBase

public KnowledgeBase()
Constructor

Method Detail

clone

public KnowledgeBase clone()
Overrides:
clone in class java.lang.Object

saveToFile

public void saveToFile(java.lang.String fileName)
                throws FuzzyOntologyException
Saves a fuzzy KB into a text file.

Parameters:
fileName - Name of the output fie.
Throws:
FuzzyOntologyException

addIndividual

public void addIndividual(java.lang.String indName,
                          Individual ind)
Adds a individual to the KB.

Parameters:
indName - Name of the individual.
ind - Individual to be added.

addCreatedIndividual

public void addCreatedIndividual(java.lang.String indName,
                                 CreatedIndividual ind)
Adds a created individual to the KB.

Parameters:
indName - Name of the individual.
ind - Individual to be added.

getIndividual

public Individual getIndividual(java.lang.String indName)
Gets an individual with the indicated name (creating it if necessary).

Parameters:
indName - Name of the individual.
Returns:
Individual with the given name.

addConcept

public void addConcept(java.lang.String conceptName,
                       FuzzyConcreteConcept conc)
Adds a fuzzy concept to the array of concepts in the fuzzy KB.

Parameters:
conceptName - Name of the concept.
conc - Fuzzy concept.

getConcept

public Concept getConcept(java.lang.String name)
Gets a concept with indicated name.

Parameters:
name - Name of the concept.
Returns:
A concept with the given name.

addFuzzyNumber

public void addFuzzyNumber(java.lang.String fName,
                           TriangularFuzzyNumber f)
Adds a fuzzy number to the fuzzy KB.

Parameters:
fName - Name of the fuzzy number.
f - Fuzzy number.

checkFuzzyNumberConceptExists

public boolean checkFuzzyNumberConceptExists(java.lang.String concName)
Checks if there exists a fuzzy number with the indicated name.

Parameters:
concName - Name of the fuzzy number.
Returns:
true if there exists a fuzzy number with the given name; false otherwise.

addModifier

public void addModifier(java.lang.String modName,
                        Modifier mod)
                 throws FuzzyOntologyException
Adds a fuzzy modifier to the fuzzy KB.

Parameters:
modName - Name of the fuzzy modifier.
mod - Modifier.
Throws:
FuzzyOntologyException

addAssertion

public void addAssertion(Assertion newAss)
Adds a fuzzy assertion.

Parameters:
newAss - A fuzzy assertion.

addRelation

public void addRelation(Individual indA,
                        java.lang.String role,
                        Individual indB,
                        Degree degree)
Adds a fuzzy relation of the form (indA, indB, funcRole, degree)

Parameters:
indA - A subbject individual.
role - An abstract role.
indB - An object individual.
degree - Lower bound for the degree.

defineConcept

public void defineConcept(java.lang.String conceptName,
                          Concept conc)
Adds a fuzzy concept definition.

Parameters:
conceptName - Name of an atomic fuzzy concept (defined).
conc - A fuzzy concept (definition).

defineAtomicConcept

public void defineAtomicConcept(java.lang.String conceptName,
                                Concept conc,
                                int implication,
                                double n)
Adds an atomic fuzzy concept definition.

Parameters:
conceptName - Name of an atomic fuzzy concept (defined).
conc - A fuzzy concept (definition).
implication - A fuzzy implication.
n - Degree of truth.

addConceptsDisjoint

public void addConceptsDisjoint(java.util.Vector<java.lang.String> disjointConcepts)
Adds some disjoint concept axioms.

Parameters:
disjointConcepts - A vector of concept names.

addEquivalentRoles

public void addEquivalentRoles(java.util.Vector<java.lang.String> equivRoles)
Adds some equivalent funcRole axioms.

Parameters:
equivRoles - A vector of equivalent fuzzy funcRole names.

addEquivalentConcepts

public void addEquivalentConcepts(java.util.Vector<Concept> equivConcepts)
Adds some equivalent concept axioms.

Parameters:
equivConcepts - A vector of equivalent fuzzy concepts.

addDisjointUnionConcept

public void addDisjointUnionConcept(java.util.Vector<java.lang.String> disjointUnionConcepts)
Adds a disjoint union concept axiom.

Parameters:
disjointUnionConcepts - A vector of concepts names.

roleIsFunctional

public void roleIsFunctional(java.lang.String role)
Adds a functional funcRole axiom.

Parameters:
role - A role.

roleIsInverseFunctional

public void roleIsInverseFunctional(java.lang.String role)
Adds an inverse functional funcRole axiom.

Parameters:
role - A role.

roleIsTransitive

public void roleIsTransitive(java.lang.String role)
Adds a transitive funcRole axiom.

Parameters:
role - A role.

roleIsReflexive

public void roleIsReflexive(java.lang.String role)
Adds a reflexive funcRole axiom.

Parameters:
role - A role.

roleIsSymmetric

public void roleIsSymmetric(java.lang.String role)
Adds a symmetric funcRole axiom.

Parameters:
role - A role.

addSimilarityRelation

public void addSimilarityRelation(java.lang.String role)
Adds a fuzzy similarity relation.

Parameters:
role - A role.

addEquivalenceRelation

public void addEquivalenceRelation(java.lang.String role)
Adds a fuzzy equivalence relation.

Parameters:
role - A role.

addInverseRoles

public void addInverseRoles(java.lang.String role,
                            java.lang.String invRole)
Adds an inverse funcRole axiom.

Parameters:
role - A role.
invRole - An inverse funcRole of funcRole.

roleImplies

public void roleImplies(java.lang.String subsumed,
                        java.lang.String subsumer)
Adds a RIA (subsumed, subsumer, 1).

Parameters:
subsumed - Subsumed funcRole.
subsumer - Subsumed funcRole.

roleImplies

public void roleImplies(java.lang.String subsumed,
                        java.lang.String subsumer,
                        java.lang.Double n)
Adds a RIA (subsumed, subsumer, degree).

Parameters:
subsumed - Subsumed funcRole.
subsumer - Subsumed funcRole.
n - Lower bound for the degree.

roleRange

public void roleRange(java.lang.String role,
                      Concept conc)
Adds a funcRole range axiom.

Parameters:
role - A role.
conc - Range of the funcRole.

roleDomain

public void roleDomain(java.lang.String role,
                       Concept conc)
Adds a domain funcRole axiom.

Parameters:
role - A role.
conc - Domain of the funcRole.

g_implies

public void g_implies(Concept conc1,
                      Concept conc2,
                      Degree degree)
Adds a Goedel GCI.

Parameters:
conc1 - Subsumed concept.
conc2 - Subsumer concept.
degree - Lower bound for the degree.

l_implies

public void l_implies(Concept conc1,
                      Concept conc2,
                      Degree degree)
Adds a Lukasiewicz GCI.

Parameters:
conc1 - Subsumed concept.
conc2 - Subsumer concept.
degree - Lower bound for the degree.

kd_implies

public void kd_implies(Concept conc1,
                       Concept conc2,
                       Degree degree)
Adds a Kleene-Dienes GCI.

Parameters:
conc1 - Subsumed concept.
conc2 - Subsumer concept.
degree - Lower bound for the degree.

z_implies

public void z_implies(Concept conc1,
                      Concept conc2)
Adds a Lukasiewicz GCI.

Parameters:
conc1 - Subsumed concept.
conc2 - Subsumer concept.

implies

public void implies(Concept conc1,
                    Concept conc2,
                    Degree degree)
Adds a GCI (conc1, conc2, degree)

Parameters:
conc1 - Subsumed concept.
conc2 - Subsumer concept.
degree - Lower bound for the degree.

writeAtomicRoles

public void writeAtomicRoles()
Write atomic fuzzy funcRole assertions into a MILP file.


addDatatypeRestriction

public Concept addDatatypeRestriction(int restrictionType,
                                      java.lang.Object o,
                                      java.lang.String fName)
                               throws FuzzyOntologyException
Adds a datatype restriction of the form (restrictionType, fName, o).

Parameters:
restrictionType - Type of the datatype restriction.
o - Value of the datatype restriction.
fName - Concrete feature.
Returns:
A datatype restriction.
Throws:
FuzzyOntologyException

getLanguage

public java.lang.String getLanguage()
Gets the language of the fuzzy KB, from ALC to SHIF(D).

Returns:
Language of the fuzzy KB.

getNewIndividual

public CreatedIndividual getNewIndividual(Individual parent,
                                          java.lang.String fName)

solveKB

public void solveKB()
             throws FuzzyOntologyException
Prepares the fuzzy knowledge base to reason with it.

Throws:
FuzzyOntologyException

hasUnfoldableTbox

public boolean hasUnfoldableTbox()
Gets if the fuzzy KB has an unfoldable TBox.

Returns:
true if the TBox is unfoldable; false otherwise.

addAssertion

public void addAssertion(Individual a,
                         Concept c,
                         Degree n)
Adds a fuzzy assertion of the form (a : C \geq 1 )

Parameters:
a - An individual
c - A fuzzy concept
n - A degree of truth.

checkRole

public void checkRole(java.lang.String roleName,
                      Concept conc)
               throws FuzzyOntologyException
Checks the disjointness between abstract and concrete roles.

Throws:
FuzzyOntologyException

disableGciApplication

public void disableGciApplication()
This method is used to avoid the application of fuzzy GCIs whenever a new individual is created.


defineStringConcreteFeature

public void defineStringConcreteFeature(java.lang.String funcRole)
                                 throws FuzzyOntologyException
Define a concrete feature with range string.

Parameters:
funcRole - Name of the concrete feature.
Throws:
FuzzyOntologyException

defineIntegerConcreteFeature

public void defineIntegerConcreteFeature(java.lang.String funcRole,
                                         java.lang.Integer d1,
                                         java.lang.Integer d2)
                                  throws FuzzyOntologyException
Define a concrete feature with range integers in [d1, d2].

Parameters:
funcRole - Name of the concrete feature.
Throws:
FuzzyOntologyException

defineRealConcreteFeature

public void defineRealConcreteFeature(java.lang.String funcRole,
                                      java.lang.Double d1,
                                      java.lang.Double d2)
                               throws FuzzyOntologyException
Define a concrete feature with range real numbers in [d1, d2].

Parameters:
funcRole - Name of the concrete feature.
Throws:
FuzzyOntologyException

setLogic

public void setLogic(FuzzyLogic logic)
Sets the fuzzy logic of the fuzzy knowledge base.

Parameters:
logic - Fuzzy logic of the fuzzy knowledge base.

getLogic

public FuzzyLogic getLogic()
Gets the fuzzy logic of the fuzzy knowledge base.

Returns:
Fuzzy logic of the fuzzy knowledge base.