org.rdtdm.rule
Class RuleSchema

java.lang.Object
  |
  +--org.rdtdm.rule.RuleSchema

public class RuleSchema
extends java.lang.Object

RuleSchema verwaltet genau ein Regelschema.

Copyright (c) 2001 by Dirk Münstermann
All Rights Reserved

Version:
$Revision: 1.6 $ ($Date: 2001/10/03 14:54:39 $)
Changelog:
 $Log: RuleSchema.java,v $
 Revision 1.6  2001/10/03 14:54:39  dirk
 readding

 Revision 1.4  2001/09/26 12:43:57  dirk
 update javadoc comments

 


Author:
Dirk Münstermann

Nested Class Summary
private  class RuleSchema.LitConst
          Speichert zu einen Literalvariablen des Regelschematas alle Literale, die diese Variable beinhalten.
private  class RuleSchema.LitVar
          Speichert zu einen Literalvariablen des Regelschematas alle Literale, die diese Variable beinhalten.
 
Field Summary
private  Literal conclusion
           
private  java.util.ArrayList constants
           
private  java.util.HashMap litconstants
          Beinhaltet f?r alle Literalkonstanten genau einen Eintrag vom Typ LitConst.
private  java.util.HashMap litvariables
          Beinhaltet f?r alle Literalvaribalen genau einen Eintrag vom Typ LitVar.
private  java.lang.String name
           
private  java.util.ArrayList premises
           
private  java.util.Hashtable relationchain
           
private static java.lang.String SEP1
           
private static java.lang.String SEP2
           
private static java.lang.String SEP3
           
private  java.util.ArrayList variables
           
 
Constructor Summary
RuleSchema()
           
RuleSchema(java.lang.String rs)
           
 
Method Summary
 void addConstant(java.lang.String constant)
           
 void addPremise(Literal premise)
           
 void addVariable(java.lang.String variable)
           
 void changeLitVar(java.lang.String varsrc, java.lang.String vardest)
          Tauscht den Namen einer Literalvariablen in dem Regelschema aus.
 RuleSchema changeLitVars(Substitution sub)
          Erzeugt ein neues Regelschema unter Anwendung der Substitution auf das ursprungliche Regelschema, dabei werden nur Termvariabeln ausgetauscht.
 void changePredVar(java.lang.String varsrc, java.lang.String vardest)
          Tauscht den Namen einer Pr?dikatenvariablen in dem Regelschema aus.
 RuleSchema changePredVars(Substitution sub)
          Erzeugt ein neues Regelschema unter Anwendung der Substitution auf das ursprungliche Regelschema, dabei werden nur Pr?dikatenvariabeln ausgetauscht.
 boolean checkSyntax(java.lang.String rs)
          Die Regelschemata m?ssen die folgende Formn aufweisen: : <- .
 java.lang.Object clone()
           
 RuleSchema cloneOnlyConcl()
           
 int constantscount()
           
 boolean containsLiteralByName(java.lang.String name)
           
 boolean containsLiteralByType(Literal lit)
          Lifert true, wenn dieses Regelschema ein Literal einth?lt, welches den vom Typ (Name und Anzahl Parameter) identisch mit dem ?bergebenen Literal ist.
 boolean equals(java.lang.Object obj)
          Liefert true, wenn das ?bergebene Objekt vom Typ RuleSchema ist, die Namen, die Anzahl der Variablen, die Variablen selbst, die Anzahl der Pr?missen und die Pr?missen selbst gleich sind.
 boolean equalsConcl(java.lang.Object obj)
          Liefert true, wenn die Konklusionen der beiden Regelschema identisch sind.
 Literal getConclusion()
           
 java.util.ArrayList getConstants()
           
 java.lang.String getLitConst(int index)
           
 java.util.ArrayList getLitConstLiterals(java.lang.String litconst)
          Liefert alle Literale zur?ck, die die Literalkonstante beinhalten.
 java.util.ArrayList getLitConstNonSchemaLiterals(java.lang.String litconst)
          Liefert alle Literale zur?ck, die die Literalkonstante beinhalten und die bereits instattiiert wurden (kein Schema).
 java.util.Iterator getLitConsts()
           
 int[] getLiteralArities()
          Liefert f?r alle Literale die Anzahl der Parameter zur?ck.
 Literal getLiteralByType(Literal lit)
          Lifert das erste Literal aus dieses Regelschema zur?ck, welches vom Typ (Name und Anzahl Parameter) identisch mit dem ?bergebenen Literal ist.
 int getLiteralCount()
          Liefert die Anzahl der Literal innerhalb dieses Regelschematas zurueck.
private  int getLiteralRC(Literal lit)
          Lifert die minimale L?nge des relation chain f?r das ?bergebene Literal zur?ck.
 java.util.ArrayList getLiterals()
          Liefert alle Literale des Regelschema zur?ck.
 java.util.ArrayList getLitVarLiterals(java.lang.String litvar)
          Liefert alle Literale zur?ck, die die Literalvariable beinhalten.
 java.util.ArrayList getLitVarNonSchemaLiterals(java.lang.String litvar)
          Liefert alle Literale zur?ck, die die Literalvariable beinhalten und die bereits instattiiert wurden (kein Schema).
 java.util.Iterator getLitVars()
           
private  int getMinLengthRC(java.lang.String litvar)
          Lifert die minimale L?nge des relation chain f?r die ?bergebene Variable zur?ck.
 java.lang.String getName()
           
 Literal getPremise(int index)
          Liefert das Literal der i-ten Premisse zurueck.
 java.util.ArrayList getPremises()
           
 java.util.ArrayList getVariables()
           
 Literal getVarLiteral(int index)
          Liefert das Literal zu der i-ten Variablen zurueck.
 Literal getVarLiteral(java.lang.String variable)
          Liefert das Literal zu der Variablen zurueck.
 boolean isConstant(java.lang.String name)
           
 boolean isFact()
           
 boolean isInstantiiert()
          Returns true iff all predicates and constantes are instantiiert.
 boolean isMoreGeneral(RuleSchema rs)
          Liefert true, wenn das ?bergebene RegelSchema spezieller ist.
 boolean isMoreGeneralWithoutLitVars(RuleSchema rs)
          Liefert true, wenn das ?bergebene RegelSchema bis auf Substitution von Literalvariablen spezieller ist.
 boolean isSchema()
           
 boolean isVariable(java.lang.String name)
           
 void parse(java.lang.String rs)
           
 void parseConstants()
          Durchsucht alle Literal des Regelschemata nach Konstanten und speichert diese zusammen mit allen Literalen, die diese Beinhalten ab.
 void parseDeclaration(java.lang.String decl)
           
private  java.util.HashSet parseLitParams()
          Liefert alle Parameter der Literale dieses Regelschamatas zurueck.
 void parsePremise(java.lang.String prem)
           
private  java.util.HashSet parsePremsLitParams()
          Liefert alle Parameter der Premisen-Literale dieses Regelschamatas zurueck.
 void parseVariables()
          Durchsucht alle Literal des Regelschemata nach Variablen und speichert diese zusammen mit allen Literalen, die diese Beinhalten ab.
 int premisecount()
           
private  java.lang.String prep(java.lang.String src)
           
private  void printIt(java.util.Iterator it)
           
 void printLitConsts()
           
 void printLiteralArities()
           
 void printLitVars()
           
 void printPremises()
           
 void printRelationChain()
           
private  void rc()
           
private  void rc(java.util.ArrayList vars, java.util.ArrayList rclist)
           
 void replacePredicateVar(java.lang.String variable, java.lang.String predicate)
          Ersetzt in dem Regelschema die Pr?dikatenvariable durch ein Pr?dikat.
 RuleSchema replaceRSSubstitution(Substitution sub)
           
 RuleSchema replaceSubstitution(Substitution sub)
          Erzeugt ein neues Regelschema unter Anwendung der Substitution auf das ursprungliche Regelschema.
 void replaceTermConstants(java.lang.String variable, java.lang.String value)
           
 void setConclusion(Literal concl)
           
 void setConstants(java.util.ArrayList constants)
           
 void setName(java.lang.String name)
           
 void setPremises(java.util.ArrayList premises)
           
 void setVariables(java.util.ArrayList variables)
           
 void sortPremisesByRelationChain()
          Sortiert die Premissen nach dem Relation Chain.
 java.lang.String[] splitString(java.lang.String src, java.lang.String sep)
           
 java.lang.String toString()
           
private  java.lang.String toStringIt(java.util.Iterator it)
           
 int variablescount()
           
 
Methods inherited from class java.lang.Object
finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

SEP1

private static final java.lang.String SEP1
See Also:
Constant Field Values

SEP2

private static final java.lang.String SEP2
See Also:
Constant Field Values

SEP3

private static final java.lang.String SEP3
See Also:
Constant Field Values

name

private java.lang.String name

variables

private java.util.ArrayList variables

constants

private java.util.ArrayList constants

conclusion

private Literal conclusion

premises

private java.util.ArrayList premises

relationchain

private java.util.Hashtable relationchain

litvariables

private java.util.HashMap litvariables
Beinhaltet f?r alle Literalvaribalen genau einen Eintrag vom Typ LitVar.


litconstants

private java.util.HashMap litconstants
Beinhaltet f?r alle Literalkonstanten genau einen Eintrag vom Typ LitConst.

Constructor Detail

RuleSchema

public RuleSchema()

RuleSchema

public RuleSchema(java.lang.String rs)
Method Detail

containsLiteralByType

public boolean containsLiteralByType(Literal lit)
Lifert true, wenn dieses Regelschema ein Literal einth?lt, welches den vom Typ (Name und Anzahl Parameter) identisch mit dem ?bergebenen Literal ist.

Parameters:
lit - vergleichs Literal
Returns:
true, wenn ein Literal vom gleichen Typ enthalten ist, sonst false.


containsLiteralByName

public boolean containsLiteralByName(java.lang.String name)

getLiteralByType

public Literal getLiteralByType(Literal lit)
Lifert das erste Literal aus dieses Regelschema zur?ck, welches vom Typ (Name und Anzahl Parameter) identisch mit dem ?bergebenen Literal ist.

Parameters:
lit - vergleichs Literal
Returns:
typidentisches Literal


equals

public boolean equals(java.lang.Object obj)
Liefert true, wenn das ?bergebene Objekt vom Typ RuleSchema ist, die Namen, die Anzahl der Variablen, die Variablen selbst, die Anzahl der Pr?missen und die Pr?missen selbst gleich sind.

Overrides:
equals in class java.lang.Object
Parameters:
obj - Vergleichsobjekt
Returns:
true, wenn sie identisch sind, sonst false.


equalsConcl

public boolean equalsConcl(java.lang.Object obj)
Liefert true, wenn die Konklusionen der beiden Regelschema identisch sind.

Returns:
true bei identischen Konklusionen, sonst false.


isMoreGeneral

public boolean isMoreGeneral(RuleSchema rs)
Liefert true, wenn das ?bergebene RegelSchema spezieller ist. D.h. alle Literale (Name und Parameter) aus diesem RS sind genau so in dem ?bergebenen RS enthalten.

Parameters:
rs - vergleichs Regelschema
Returns:
true wenn dieses RS genereller ist, sonst false.


isMoreGeneralWithoutLitVars

public boolean isMoreGeneralWithoutLitVars(RuleSchema rs)
Liefert true, wenn das ?bergebene RegelSchema bis auf Substitution von Literalvariablen spezieller ist. D.h. alle Literale aus diesem RS sind vom Type her (Name und Anzahl der Parameter) in dem ?bergebenen RS enthalten.

Parameters:
rs - vergleichs Regelschema
Returns:
true wenn dieses RS genereller ist, sonst false.


toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

parse

public void parse(java.lang.String rs)

parseDeclaration

public void parseDeclaration(java.lang.String decl)

parsePremise

public void parsePremise(java.lang.String prem)

sortPremisesByRelationChain

public void sortPremisesByRelationChain()
Sortiert die Premissen nach dem Relation Chain.


getLiteralRC

private int getLiteralRC(Literal lit)
Lifert die minimale L?nge des relation chain f?r das ?bergebene Literal zur?ck.

Parameters:
lit - Literal
Returns:
Minimale L?nge ?ber alle relation chains der Parameter, ist das Literal nicht in diesem Regelschema enthalten wird -1 zur?ck gegeben.


getMinLengthRC

private int getMinLengthRC(java.lang.String litvar)
Lifert die minimale L?nge des relation chain f?r die ?bergebene Variable zur?ck.

Parameters:
litvar - Literalvariable
Returns:
Minimale L?nge ?ber alle relation chains


rc

private void rc()

rc

private void rc(java.util.ArrayList vars,
                java.util.ArrayList rclist)

printRelationChain

public void printRelationChain()

printLiteralArities

public void printLiteralArities()

parseVariables

public void parseVariables()
Durchsucht alle Literal des Regelschemata nach Variablen und speichert diese zusammen mit allen Literalen, die diese Beinhalten ab.


parseConstants

public void parseConstants()
Durchsucht alle Literal des Regelschemata nach Konstanten und speichert diese zusammen mit allen Literalen, die diese Beinhalten ab.


parseLitParams

private java.util.HashSet parseLitParams()
Liefert alle Parameter der Literale dieses Regelschamatas zurueck.

Returns:
Alle Parameter in einer HashSet.


parsePremsLitParams

private java.util.HashSet parsePremsLitParams()
Liefert alle Parameter der Premisen-Literale dieses Regelschamatas zurueck.

Returns:
Alle Parameter in einer HashSet.


getLitVars

public java.util.Iterator getLitVars()

getLitConsts

public java.util.Iterator getLitConsts()

getLitVarLiterals

public java.util.ArrayList getLitVarLiterals(java.lang.String litvar)
Liefert alle Literale zur?ck, die die Literalvariable beinhalten.

Parameters:
litvar - Name einer Literalvariablen
Returns:
Eine ArrayList aller Literale vom Typ Literal die bereits Instantiiert wurden. Wenn ein Literal noch nicht Instantiiert ist, wird eine leere Liste zur?ck geliefert.


getLitVarNonSchemaLiterals

public java.util.ArrayList getLitVarNonSchemaLiterals(java.lang.String litvar)
Liefert alle Literale zur?ck, die die Literalvariable beinhalten und die bereits instattiiert wurden (kein Schema).

Parameters:
litvar - Name einer Literalvariablen
Returns:
Eine ArrayList aller Literale vom Typ Literal.


getLitConstLiterals

public java.util.ArrayList getLitConstLiterals(java.lang.String litconst)
Liefert alle Literale zur?ck, die die Literalkonstante beinhalten.

Returns:
Eine ArrayList aller Literale vom Typ Literal die bereits Instantiiert wurden. Wenn ein Literal noch nicht Instantiiert ist, wird eine leere Liste zur?ck geliefert.


getLitConst

public java.lang.String getLitConst(int index)

getLitConstNonSchemaLiterals

public java.util.ArrayList getLitConstNonSchemaLiterals(java.lang.String litconst)
Liefert alle Literale zur?ck, die die Literalkonstante beinhalten und die bereits instattiiert wurden (kein Schema).

Returns:
Eine ArrayList aller Literale vom Typ Literal die bereits Instantiiert wurden.


printLitVars

public void printLitVars()

printPremises

public void printPremises()

printLitConsts

public void printLitConsts()

printIt

private void printIt(java.util.Iterator it)

toStringIt

private java.lang.String toStringIt(java.util.Iterator it)

checkSyntax

public boolean checkSyntax(java.lang.String rs)
Die Regelschemata m?ssen die folgende Formn aufweisen:
 : <- .
 mit  :- *[,]
      :- 
      :- (*[,])
      :- (*[,])
      :- Pr?dikatenvariable
 


setName

public void setName(java.lang.String name)

getName

public java.lang.String getName()

addVariable

public void addVariable(java.lang.String variable)

setVariables

public void setVariables(java.util.ArrayList variables)

getVariables

public java.util.ArrayList getVariables()

addConstant

public void addConstant(java.lang.String constant)

setConstants

public void setConstants(java.util.ArrayList constants)

getConstants

public java.util.ArrayList getConstants()

variablescount

public int variablescount()

constantscount

public int constantscount()

isVariable

public boolean isVariable(java.lang.String name)

isConstant

public boolean isConstant(java.lang.String name)

isInstantiiert

public boolean isInstantiiert()
Returns true iff all predicates and constantes are instantiiert.


isSchema

public boolean isSchema()

isFact

public boolean isFact()

setConclusion

public void setConclusion(Literal concl)

getConclusion

public Literal getConclusion()

addPremise

public void addPremise(Literal premise)

setPremises

public void setPremises(java.util.ArrayList premises)

getPremises

public java.util.ArrayList getPremises()

premisecount

public int premisecount()

replaceTermConstants

public void replaceTermConstants(java.lang.String variable,
                                 java.lang.String value)

replacePredicateVar

public void replacePredicateVar(java.lang.String variable,
                                java.lang.String predicate)
Ersetzt in dem Regelschema die Pr?dikatenvariable durch ein Pr?dikat.

Parameters:
variable - Pr?dikatenvariable
predicate - Pr?dikat


changePredVar

public void changePredVar(java.lang.String varsrc,
                          java.lang.String vardest)
Tauscht den Namen einer Pr?dikatenvariablen in dem Regelschema aus.

Parameters:
varsrc - Pr?dikatenvariable alt
vardest - Pr?dikatenvariable neu


changeLitVar

public void changeLitVar(java.lang.String varsrc,
                         java.lang.String vardest)
Tauscht den Namen einer Literalvariablen in dem Regelschema aus.

Parameters:
varsrc - Literalvariable alt
vardest - Literalvariable neu


replaceSubstitution

public RuleSchema replaceSubstitution(Substitution sub)
Erzeugt ein neues Regelschema unter Anwendung der Substitution auf das ursprungliche Regelschema.

Parameters:
sub - Die anzuwendende Substitution.
Returns:
Das neuen Regelschame.


replaceRSSubstitution

public RuleSchema replaceRSSubstitution(Substitution sub)

changePredVars

public RuleSchema changePredVars(Substitution sub)
Erzeugt ein neues Regelschema unter Anwendung der Substitution auf das ursprungliche Regelschema, dabei werden nur Pr?dikatenvariabeln ausgetauscht.

Parameters:
sub - Die anzuwendende Substitution.
Returns:
Das neuen Regelschame.


changeLitVars

public RuleSchema changeLitVars(Substitution sub)
Erzeugt ein neues Regelschema unter Anwendung der Substitution auf das ursprungliche Regelschema, dabei werden nur Termvariabeln ausgetauscht.

Parameters:
sub - Die anzuwendende Substitution.
Returns:
Das neuen Regelschame.


getPremise

public Literal getPremise(int index)
Liefert das Literal der i-ten Premisse zurueck.

Parameters:
index - Index der Premisse
Returns:
Premissen Literal


getVarLiteral

public Literal getVarLiteral(int index)
Liefert das Literal zu der i-ten Variablen zurueck.

Parameters:
index - Index der Variablen
Returns:
Variablen Literal


getVarLiteral

public Literal getVarLiteral(java.lang.String variable)
Liefert das Literal zu der Variablen zurueck.

Parameters:
variable - Name der Variablen
Returns:
Vraiablen Literal


getLiterals

public java.util.ArrayList getLiterals()
Liefert alle Literale des Regelschema zur?ck. Das erste Literal ist die Konklusion.

Returns:
ArrayList mit Inhalt vom Typ Literal


getLiteralCount

public int getLiteralCount()
Liefert die Anzahl der Literal innerhalb dieses Regelschematas zurueck.

Returns:
Anzahl der Literale.


getLiteralArities

public int[] getLiteralArities()
Liefert f?r alle Literale die Anzahl der Parameter zur?ck.

Returns:
Alle Literalarities.


splitString

public java.lang.String[] splitString(java.lang.String src,
                                      java.lang.String sep)

prep

private java.lang.String prep(java.lang.String src)

clone

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

cloneOnlyConcl

public RuleSchema cloneOnlyConcl()