DSRG.MKB
Class MKB

java.lang.Object
  |
  +--DSRG.MKB.MKB

public class MKB
extends java.lang.Object
implements java.io.Serializable

this is the Meta Knowledge Base main class. It hold lists of ISs, JCs and PCs as well as derived PCs and maintains the MKB under schema changes.

See Also:
Serialized Form

Field Summary
private static boolean DEBUG
           
 java.util.Vector DerivedPC
           
 java.util.Vector IS_List
           
 java.util.Vector JC_List
           
 java.util.Vector LC_List
           
private  IS localIS
           
private  VSA mainVSA
          we need a handle to the VSA to notify it of schema changes, too.
 java.util.Vector PC_List
           
 
Constructor Summary
MKB()
          A default constructor to create an empty MKB object.
MKB(java.lang.String MKBFile)
          Constructor uses the New MKB Parser.
 
Method Summary
 boolean addAttribute(java.lang.String ISName, java.lang.String RName, java.lang.String AttName, java.lang.String AttType)
          this adds an attribute as a schema change.
 boolean addIS(IS newIS)
          Add a new IS object to this MKB.
 boolean addJoinConstraint(JoinConstraint theJC)
           
 boolean addLocalCondition(LocalCondition theLC)
           
 boolean addPCConstraint(PCConstraint thePC)
           
 boolean addRelation(java.lang.String ISName, java.lang.String RName, java.util.Vector attList, java.util.Vector typeList)
          the actual capability change "addRelation".
 boolean changeAttributeName(java.lang.String isName, java.lang.String relName, java.lang.String attName, java.lang.String newName)
          Change a specific Attribute name from "IS.R.A" to "IS.R.B".
 boolean changeRelationName(java.lang.String isName, java.lang.String relName, java.lang.String newName)
           
private  void deleteAttribute_maintainMKB(Attribute Att)
           
 boolean deleteAttribute(java.lang.String ISName, java.lang.String RName, java.lang.String AttName)
           
 boolean deleteJoinConstraint(JoinConstraint theJC)
           
 boolean deletePCConstraint(PCConstraint thePC)
           
 boolean deleteRelation(java.lang.String ISName, java.lang.String RName)
          the MKB capability change "deleteRelation".
 void displayAll()
           
 Attribute findAttribute(java.lang.String ISName, java.lang.String RName, java.lang.String AttName)
          return a specific attribute.
 IS findIS(java.lang.String ISName)
           
 JoinConstraint findJC(java.lang.String ISName1, java.lang.String RName1, java.lang.String ISName2, java.lang.String RName2)
           
 java.util.Vector findPOC(Relation rel, java.util.Vector atleast, int ve)
          Find POC PC constraint Pi(upperline{B}(S)) phi Pi(upperline{A}(R))
 Relation findRelation(java.lang.String ISName, java.lang.String RName)
           
 java.util.Vector getAllAttributesAsStrings(java.lang.String isName, java.lang.String relName)
           
 java.util.Vector getAllISsAsStrings()
           
 java.util.Vector getAllJcsForRelation(java.lang.String isName, java.lang.String relName)
           
 java.util.Vector getAllJcsForRelationAsStrings(java.lang.String isName, java.lang.String relName)
           
 java.util.Vector getAllPcsForRelation(java.lang.String isName, java.lang.String relName)
           
 java.util.Vector getAllPcsForRelationAsStrings(java.lang.String isName, java.lang.String relName)
           
 java.util.Vector getAllRelationsAsStrings(java.lang.String isName)
           
 java.util.Vector getAllTcsForRelation(java.lang.String isName, java.lang.String relName)
           
 java.util.Vector getAllTcsForRelationAsStrings(java.lang.String isName, java.lang.String relName)
          returns all TypeConstraint Objects in a String representation.
 int getAttributeSize(java.lang.String IS, java.lang.String relName, java.lang.String attName)
          returns the size of an attribute in bytes.
 int getAttributeSizeForRelation(java.lang.String IS, java.lang.String relName)
          returns the sum of the the sizes of all attributes in a relation in bytes.
 java.util.Vector getISs()
          returns a vector is IS-objects (that are already in the MKB)
 double getJoinSelectivity(java.lang.String IS1, java.lang.String relation1, java.lang.String IS2, java.lang.String relation2)
          returns join selectivity ((R1 \join R2)/(R1 X R2)) for a pair of given relations (dummy values)
 double getLocalConditionSelectivity(java.lang.String IS, java.lang.String relName, java.lang.String attName, java.lang.String value)
          returns local selectivity for a certain local condition.
 IS getLocalIS()
           
 long getRelationSize(java.lang.String ISName, java.lang.String relationName)
          returns relation size (number of tuples) for a given relation Name (dummy values)
 void setLocalIS(IS anIS)
           
 void setVSA(VSA myVSA)
           
 java.lang.String toString()
          Dump this MKB object.
private  void update(MKB mkb)
          Update MKB Object by another MKB object.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, wait, wait, wait
 

Field Detail

DEBUG

private static final boolean DEBUG

mainVSA

private VSA mainVSA
we need a handle to the VSA to notify it of schema changes, too. (currently only need after delete-operations. This cannot be passed in the constructor since it is not known at construction time.

localIS

private IS localIS

IS_List

public java.util.Vector IS_List

JC_List

public java.util.Vector JC_List

PC_List

public java.util.Vector PC_List

LC_List

public java.util.Vector LC_List

DerivedPC

public java.util.Vector DerivedPC
Constructor Detail

MKB

public MKB()
A default constructor to create an empty MKB object. It used to let the MKB parser to fill it up!

MKB

public MKB(java.lang.String MKBFile)
Constructor uses the New MKB Parser.
Method Detail

update

private void update(MKB mkb)
Update MKB Object by another MKB object.

displayAll

public void displayAll()

setVSA

public void setVSA(VSA myVSA)

getAllAttributesAsStrings

public java.util.Vector getAllAttributesAsStrings(java.lang.String isName,
                                                  java.lang.String relName)

getAllRelationsAsStrings

public java.util.Vector getAllRelationsAsStrings(java.lang.String isName)

getAllTcsForRelationAsStrings

public java.util.Vector getAllTcsForRelationAsStrings(java.lang.String isName,
                                                      java.lang.String relName)
returns all TypeConstraint Objects in a String representation. Used by user interfaces.

getAllTcsForRelation

public java.util.Vector getAllTcsForRelation(java.lang.String isName,
                                             java.lang.String relName)

getAllJcsForRelationAsStrings

public java.util.Vector getAllJcsForRelationAsStrings(java.lang.String isName,
                                                      java.lang.String relName)

getAllJcsForRelation

public java.util.Vector getAllJcsForRelation(java.lang.String isName,
                                             java.lang.String relName)

getAllPcsForRelationAsStrings

public java.util.Vector getAllPcsForRelationAsStrings(java.lang.String isName,
                                                      java.lang.String relName)

getAllPcsForRelation

public java.util.Vector getAllPcsForRelation(java.lang.String isName,
                                             java.lang.String relName)

getAllISsAsStrings

public java.util.Vector getAllISsAsStrings()

getISs

public java.util.Vector getISs()
returns a vector is IS-objects (that are already in the MKB)

addIS

public boolean addIS(IS newIS)
Add a new IS object to this MKB.

setLocalIS

public void setLocalIS(IS anIS)

getLocalIS

public IS getLocalIS()

addRelation

public boolean addRelation(java.lang.String ISName,
                           java.lang.String RName,
                           java.util.Vector attList,
                           java.util.Vector typeList)
the actual capability change "addRelation". Only changes the MKB!

deleteRelation

public boolean deleteRelation(java.lang.String ISName,
                              java.lang.String RName)
the MKB capability change "deleteRelation". Only changes the MKB!

changeRelationName

public boolean changeRelationName(java.lang.String isName,
                                  java.lang.String relName,
                                  java.lang.String newName)

addAttribute

public boolean addAttribute(java.lang.String ISName,
                            java.lang.String RName,
                            java.lang.String AttName,
                            java.lang.String AttType)
this adds an attribute as a schema change. The size of the attribute is hardcoded and set to 37

deleteAttribute

public boolean deleteAttribute(java.lang.String ISName,
                               java.lang.String RName,
                               java.lang.String AttName)

deleteAttribute_maintainMKB

private void deleteAttribute_maintainMKB(Attribute Att)

changeAttributeName

public boolean changeAttributeName(java.lang.String isName,
                                   java.lang.String relName,
                                   java.lang.String attName,
                                   java.lang.String newName)
Change a specific Attribute name from "IS.R.A" to "IS.R.B".

Note: IS.R.B should not exist in the MKB already.


deletePCConstraint

public boolean deletePCConstraint(PCConstraint thePC)

deleteJoinConstraint

public boolean deleteJoinConstraint(JoinConstraint theJC)

findIS

public IS findIS(java.lang.String ISName)

findRelation

public Relation findRelation(java.lang.String ISName,
                             java.lang.String RName)

addJoinConstraint

public boolean addJoinConstraint(JoinConstraint theJC)

addPCConstraint

public boolean addPCConstraint(PCConstraint thePC)

addLocalCondition

public boolean addLocalCondition(LocalCondition theLC)

findAttribute

public Attribute findAttribute(java.lang.String ISName,
                               java.lang.String RName,
                               java.lang.String AttName)
return a specific attribute.

findJC

public JoinConstraint findJC(java.lang.String ISName1,
                             java.lang.String RName1,
                             java.lang.String ISName2,
                             java.lang.String RName2)

findPOC

public java.util.Vector findPOC(Relation rel,
                                java.util.Vector atleast,
                                int ve)
Find POC PC constraint Pi(upperline{B}(S)) phi Pi(upperline{A}(R))
Parameters:
rel - Relation R
atleast - subset of upperline{A}
ve - View Extent Parameter
Returns:
Vector of replacement.

toString

public java.lang.String toString()
Dump this MKB object.
Overrides:
toString in class java.lang.Object

getRelationSize

public long getRelationSize(java.lang.String ISName,
                            java.lang.String relationName)
returns relation size (number of tuples) for a given relation Name (dummy values)

getJoinSelectivity

public double getJoinSelectivity(java.lang.String IS1,
                                 java.lang.String relation1,
                                 java.lang.String IS2,
                                 java.lang.String relation2)
returns join selectivity ((R1 \join R2)/(R1 X R2)) for a pair of given relations (dummy values)
Returns:
-1.0 if JS unknown

getLocalConditionSelectivity

public double getLocalConditionSelectivity(java.lang.String IS,
                                           java.lang.String relName,
                                           java.lang.String attName,
                                           java.lang.String value)
returns local selectivity for a certain local condition. -1 if local condition not found.

getAttributeSize

public int getAttributeSize(java.lang.String IS,
                            java.lang.String relName,
                            java.lang.String attName)
returns the size of an attribute in bytes.
Returns:
-1 if attribute size unknown

getAttributeSizeForRelation

public int getAttributeSizeForRelation(java.lang.String IS,
                                       java.lang.String relName)
returns the sum of the the sizes of all attributes in a relation in bytes. Uses getAttributeSize(String, String, String)
Returns:
-1 if size of at least one attribute is unknown