[Mulgara-svn] r1625 - in branches/consistency/src/jar: krule/java/org/mulgara/krule resolver resolver/java/org/mulgara/resolver rules/java/org/mulgara/rules

pag at mulgara.org pag at mulgara.org
Tue Mar 24 01:12:38 UTC 2009


Author: pag
Date: 2009-03-23 18:12:37 -0700 (Mon, 23 Mar 2009)
New Revision: 1625

Modified:
   branches/consistency/src/jar/krule/java/org/mulgara/krule/KruleLoader.java
   branches/consistency/src/jar/krule/java/org/mulgara/krule/QueryStruct.java
   branches/consistency/src/jar/resolver/build.xml
   branches/consistency/src/jar/resolver/java/org/mulgara/resolver/BuildRulesOperation.java
   branches/consistency/src/jar/rules/java/org/mulgara/rules/DummyRuleLoader.java
   branches/consistency/src/jar/rules/java/org/mulgara/rules/RuleLoader.java
   branches/consistency/src/jar/rules/java/org/mulgara/rules/RuleLoaderFactory.java
   branches/consistency/src/jar/rules/java/org/mulgara/rules/RulesRef.java
Log:
Implemented consistency checks. These are performed with rules, using the same dependency system

Modified: branches/consistency/src/jar/krule/java/org/mulgara/krule/KruleLoader.java
===================================================================
--- branches/consistency/src/jar/krule/java/org/mulgara/krule/KruleLoader.java	2009-03-24 01:11:33 UTC (rev 1624)
+++ branches/consistency/src/jar/krule/java/org/mulgara/krule/KruleLoader.java	2009-03-24 01:12:37 UTC (rev 1625)
@@ -37,6 +37,7 @@
 import org.mulgara.util.functional.Pair;
 
 import static org.mulgara.query.rdf.Mulgara.PREFIX_GRAPH;
+import static org.mulgara.query.rdf.Krule.*;
 
 /**
  * This object is used for parsing an RDF graph and building a rules structure
@@ -84,189 +85,6 @@
   /** Map of Constraint nodes to the associated constraint object. */
   private Map<Node,ConstraintExpression> constraintMap;
 
-  /** URI for the Krule namespace. */
-  public static final String KRULE = "http://mulgara.org/owl/krule/#";
-
-  /** URI for a constraint subject. */
-  private static final String HAS_SUBJECT_STR = KRULE + "hasSubject";
-
-  /** URI for a constraint predicate. */
-  private static final String HAS_PREDICATE_STR = KRULE + "hasPredicate";
-
-  /** URI for a constraint object. */
-  private static final String HAS_OBJECT_STR = KRULE + "hasObject";
-
-  /** URI for a constraint model. */
-  private static final String HAS_GRAPH_STR = KRULE + "hasModel";
-
-  /** URI for a query property on rules. */
-  private static final String HAS_QUERY_STR = KRULE + "hasQuery";
-
-  /** URI for an axiom subject. */
-  private static final String AXIOM_SUBJECT_STR = KRULE + "subject";
-
-  /** URI for an axiom predicate. */
-  private static final String AXIOM_PREDICATE_STR = KRULE + "predicate";
-
-  /** URI for an axiom object. */
-  private static final String AXIOM_OBJECT_STR = KRULE + "object";
-
-  /** URI for rule triggering predicate. */
-  private static final String TRIGGERS_STR = KRULE + "triggers";
-
-  /** URI for selection variables in a query. */
-  private static final String SELECTION_VARS_STR = KRULE + "selectionVariables";
-
-  /** URI for constraints predicate in a query. */
-  private static final String HAS_WHERE_CLAUSE_STR = KRULE + "hasWhereClause";
-
-  /** URI for having constraints predicate in a query. */
-  private static final String HAS_HAVING_CLAUSE_STR = KRULE + "hasHavingClause";
-
-  /** URI for the argument property. */
-  private static final String ARGUMENT_STR = KRULE + "argument";
-
-  /** URI for the minuend property. */
-  private static final String MINUEND_STR = KRULE + "minuend";
-
-  /** URI for the subtrahend property. */
-  private static final String SUBTRAHEND_STR = KRULE + "subtrahend";
-
-  /** URI for the transitive constraint argument. */
-  private static final String TRANSITIVE_ARGUMENT_STR = KRULE + "transitiveArgument";
-
-  /** URI for the transitive constraint anchor argument. */
-  private static final String ANCHOR_ARGUMENT_STR = KRULE + "anchorArgument";
-
-  /** URI for the name argument. */
-  private static final String NAME_STR = KRULE + "name";
-
-  /** URI for the constraint conjunction type. */
-  private static final String CONSTRAINT_CONJUNCTION_STR = KRULE + "ConstraintConjunction";
-
-  /** URI for the constraint disjunction type. */
-  private static final String CONSTRAINT_DISJUNCTION_STR = KRULE + "ConstraintDisjunction";
-
-  /** URI for the simple constraint type. */
-  private static final String SIMPLE_CONSTRAINT_STR = KRULE + "SimpleConstraint";
-
-  /** URI for the transitive constraint type. */
-  private static final String TRANSITIVE_CONSTRAINT_STR = KRULE + "TransitiveConstraint";
-
-  /** URI for difference type. */
-  private static final String DIFFERENCE_STR = KRULE + "Difference";
-
-  /** URI for the Value type. */
-  private static final String URI_REF_STR = KRULE + "URIReference";
-
-  /** URI for the Variable type. */
-  private static final String VARIABLE_STR = KRULE + "Variable";
-
-  /** URI for the Variable type. */
-  private static final String LITERAL_STR = KRULE + "Literal";
-
-  /** URI for axiom type. */
-  private static final String AXIOM_STR = KRULE + "Axiom";
-
-  /** URI for rule type. */
-  private static final String RULE_STR = KRULE + "Rule";
-
-  /** URI for consistency check type. */
-  private static final String CHECK_STR = KRULE + "ConsistencyCheck";
-
-  /** URI for query type. */
-  private static final String QUERY_STR = KRULE + "Query";
-
-  /** RDF reference for constraint subject. */
-  public static final URIReferenceImpl HAS_SUBJECT = new URIReferenceImpl(URI.create(HAS_SUBJECT_STR));
-
-  /** RDF reference for constraint predicate. */
-  public static final URIReferenceImpl HAS_PREDICATE = new URIReferenceImpl(URI.create(HAS_PREDICATE_STR));
-
-  /** RDF reference for constraint object. */
-  public static final URIReferenceImpl HAS_OBJECT = new URIReferenceImpl(URI.create(HAS_OBJECT_STR));
-
-  /** RDF reference for constraint model. */
-  public static final URIReferenceImpl HAS_GRAPH = new URIReferenceImpl(URI.create(HAS_GRAPH_STR));
-
-  /** RDF reference for query property on rules. */
-  public static final URIReferenceImpl HAS_QUERY = new URIReferenceImpl(URI.create(HAS_QUERY_STR));
-
-  /** RDF reference for axiom subject. */
-  public static final URIReferenceImpl AXIOM_SUBJECT = new URIReferenceImpl(URI.create(AXIOM_SUBJECT_STR));
-
-  /** RDF reference for axiom predicate. */
-  public static final URIReferenceImpl AXIOM_PREDICATE = new URIReferenceImpl(URI.create(AXIOM_PREDICATE_STR));
-
-  /** RDF reference for axiom object. */
-  public static final URIReferenceImpl AXIOM_OBJECT = new URIReferenceImpl(URI.create(AXIOM_OBJECT_STR));
-
-  /** RDF reference for rule triggering predicate. */
-  public static final URIReferenceImpl TRIGGERS = new URIReferenceImpl(URI.create(TRIGGERS_STR));
-
-  /** RDF reference for selection variables predicate. */
-  public static final URIReferenceImpl SELECTION_VARS = new URIReferenceImpl(URI.create(SELECTION_VARS_STR));
-
-  /** RDF reference for hasWhereClause predicate. */
-  public static final URIReferenceImpl HAS_WHERE_CLAUSE = new URIReferenceImpl(URI.create(HAS_WHERE_CLAUSE_STR));
-
-  /** RDF reference for hasHavingClause predicate. */
-  public static final URIReferenceImpl HAS_HAVING_CLAUSE = new URIReferenceImpl(URI.create(HAS_HAVING_CLAUSE_STR));
-
-  /** RDF reference for the argument property. */
-  public static final URIReferenceImpl ARGUMENT = new URIReferenceImpl(URI.create(ARGUMENT_STR));
-
-  /** RDF reference for the minuend property. */
-  public static final URIReferenceImpl MINUEND = new URIReferenceImpl(URI.create(MINUEND_STR));
-
-  /** RDF reference for the subtrahend property. */
-  public static final URIReferenceImpl SUBTRAHEND = new URIReferenceImpl(URI.create(SUBTRAHEND_STR));
-
-  /** RDF reference for the transitive constraint argument. */
-  public static final URIReferenceImpl TRANSITIVE_ARGUMENT = new URIReferenceImpl(URI.create(TRANSITIVE_ARGUMENT_STR));
-
-  /** RDF reference for the transitive constraint anchor argument. */
-  public static final URIReferenceImpl ANCHOR_ARGUMENT = new URIReferenceImpl(URI.create(ANCHOR_ARGUMENT_STR));
-
-  /** RDF reference for the name argument. */
-  public static final URIReferenceImpl NAME = new URIReferenceImpl(URI.create(NAME_STR));
-
-  /** RDF reference for constraint conjunction class. */
-  public static final URIReferenceImpl CONSTRAINT_CONJUNCTION = new URIReferenceImpl(URI.create(CONSTRAINT_CONJUNCTION_STR));
-
-  /** RDF reference for constraint disjunction class. */
-  public static final URIReferenceImpl CONSTRAINT_DISJUNCTION = new URIReferenceImpl(URI.create(CONSTRAINT_DISJUNCTION_STR));
-
-  /** RDF reference for the simple constraint type. */
-  public static final URIReferenceImpl SIMPLE_CONSTRAINT = new URIReferenceImpl(URI.create(SIMPLE_CONSTRAINT_STR));
-
-  /** RDF reference for the transitive constraint type. */
-  public static final URIReferenceImpl TRANSITIVE_CONSTRAINT = new URIReferenceImpl(URI.create(TRANSITIVE_CONSTRAINT_STR));
-
-  /** RDF reference for the Difference type. */
-  public static final URIReferenceImpl DIFFERENCE = new URIReferenceImpl(URI.create(DIFFERENCE_STR));
-
-  /** RDF reference for the Value type. */
-  public static final URIReferenceImpl URI_REF = new URIReferenceImpl(URI.create(URI_REF_STR));
-
-  /** RDF reference for the Variable type. */
-  public static final URIReferenceImpl VARIABLE = new URIReferenceImpl(URI.create(VARIABLE_STR));
-
-  /** RDF reference for the Literal type. */
-  public static final URIReferenceImpl LITERAL = new URIReferenceImpl(URI.create(LITERAL_STR));
-
-  /** RDF reference for the Axiom type. */
-  public static final URIReferenceImpl AXIOM = new URIReferenceImpl(URI.create(AXIOM_STR));
-
-  /** RDF reference for the Rule type. */
-  public static final URIReferenceImpl RULE = new URIReferenceImpl(URI.create(RULE_STR));
-
-  /** RDF reference for the Consistency Check type. */
-  public static final URIReferenceImpl CHECK = new URIReferenceImpl(URI.create(CHECK_STR));
-
-  /** RDF reference for the Query type. */
-  public static final URIReferenceImpl QUERY = new URIReferenceImpl(URI.create(QUERY_STR));
-
   /** RDF reference for rdf:type. */
   public static final URIReferenceImpl RDF_TYPE = new URIReferenceImpl(RDF.TYPE);
 
@@ -317,11 +135,10 @@
    * Reads the ruleModel in the database and constructs the rules from it.
    *
    * @param opContextParam The operationContext for querying on.
-   * @param systemModel The system model.
    * @return A new rule structure.
    * @throws InitializerException There was a problem reading and creating the rules.
    */
-  public Rules readRules(Object opContextParam, URI systemModel) throws InitializerException, RemoteException {
+  public Rules readRules(Object opContextParam) throws InitializerException, RemoteException {
     this.operationContext = (OperationContext)opContextParam;
 
     rules = null;
@@ -1256,7 +1073,8 @@
    */
   private Answer query(Query q) throws QueryException {
     try {
-      return operationContext.doQuery(q);
+      if (operationContext != null) return operationContext.doQuery(q);
+      throw new IllegalStateException("No environment to query the database in");
     } catch (Exception e) {
       if (e instanceof QueryException) throw (QueryException)e;
       throw new QueryException("Unable to execute query", e);

Modified: branches/consistency/src/jar/krule/java/org/mulgara/krule/QueryStruct.java
===================================================================
--- branches/consistency/src/jar/krule/java/org/mulgara/krule/QueryStruct.java	2009-03-24 01:11:33 UTC (rev 1624)
+++ branches/consistency/src/jar/krule/java/org/mulgara/krule/QueryStruct.java	2009-03-24 01:12:37 UTC (rev 1625)
@@ -41,6 +41,7 @@
 import org.mulgara.query.UnconstrainedAnswer;
 import org.mulgara.query.Variable;
 import org.mulgara.query.VariableFactory;
+import org.mulgara.query.rdf.Krule;
 import org.mulgara.query.rdf.LiteralImpl;
 import org.mulgara.query.rdf.URIReferenceImpl;
 
@@ -112,10 +113,10 @@
     select = new ConstraintElement[vs.length];
 
     // convert the parameters to usable objects
-    for (int i = 0; i < 3; i++) {
+    for (int i = 0; i < vs.length; i++) {
       URIReference element = vs[i];
       // check the type
-      if (types[i].equals(KruleLoader.URI_REF)) {
+      if (types[i].equals(Krule.URI_REF)) {
 
         // check that this didn't have a non-multiple of 3 in the selection values
         if (varsOnly) throw new IllegalArgumentException("Wrong number of elements for a rule query: " + vs.length);
@@ -125,13 +126,13 @@
         // assume that literals do not have the "Value" type inferred
         variables.add(new ConstantValue(variableFactory.newVariable(), (URIReferenceImpl)select[i]));
 
-      } else if (types[i].equals(KruleLoader.VARIABLE)) {
+      } else if (types[i].equals(Krule.VARIABLE)) {
 
         // get the variable
         select[i] = (Variable)varReferences.get(element);
         variables.add((Variable)select[i]);
 
-      } else if (types[i].equals(KruleLoader.LITERAL)) {
+      } else if (types[i].equals(Krule.LITERAL)) {
         
         if (i % 3 != 2) {
           throw new IllegalArgumentException("Selection literal in illegal position in query");

Modified: branches/consistency/src/jar/resolver/build.xml
===================================================================
--- branches/consistency/src/jar/resolver/build.xml	2009-03-24 01:11:33 UTC (rev 1624)
+++ branches/consistency/src/jar/resolver/build.xml	2009-03-24 01:12:37 UTC (rev 1625)
@@ -33,6 +33,7 @@
     <fileset file="${resolver-url.dist.dir}/${resolver-url.jar}"/>
     <fileset file="${content-rdfxml.dist.dir}/${content-rdfxml.jar}"/>
     <fileset file="${content-n3.dist.dir}/${content-n3.jar}"/>
+    <fileset file="${content-rlog.dist.dir}/${content-rlog.jar}"/>
     <fileset file="${driver.dist.dir}/${driver.jar}"/>
   </path>
 
@@ -82,7 +83,7 @@
   <target name="resolver-compile"
           depends="-resolver-prepare, resolver-spi-jar, rules-jar,
                    resolver-http-jar, resolver-file-jar, resolver-url-jar,
-                   resolver-jar-jar, content-rdfxml-jar, content-n3-jar,
+                   resolver-jar-jar, content-rdfxml-jar, content-n3-jar, content-rlog-jar,
                    client-jrdf-jar, jrdf-jar, resolver-xsd-jar, driver-jar"
           description="Compiles all resolver related files included generated
                        source code">

Modified: branches/consistency/src/jar/resolver/java/org/mulgara/resolver/BuildRulesOperation.java
===================================================================
--- branches/consistency/src/jar/resolver/java/org/mulgara/resolver/BuildRulesOperation.java	2009-03-24 01:11:33 UTC (rev 1624)
+++ branches/consistency/src/jar/resolver/java/org/mulgara/resolver/BuildRulesOperation.java	2009-03-24 01:12:37 UTC (rev 1625)
@@ -81,7 +81,7 @@
     if (ruleLoader == null) throw new org.mulgara.rules.InitializerException("No rule loader available");
   
     // read in the rules
-    Rules rules =  ruleLoader.readRules(operationContext, metadata.getSystemModelURI());
+    Rules rules =  ruleLoader.readRules(operationContext);
     result = new RulesRefImpl(rules);
   }
 

Modified: branches/consistency/src/jar/rules/java/org/mulgara/rules/DummyRuleLoader.java
===================================================================
--- branches/consistency/src/jar/rules/java/org/mulgara/rules/DummyRuleLoader.java	2009-03-24 01:11:33 UTC (rev 1624)
+++ branches/consistency/src/jar/rules/java/org/mulgara/rules/DummyRuleLoader.java	2009-03-24 01:12:37 UTC (rev 1625)
@@ -17,7 +17,6 @@
 package org.mulgara.rules;
 
 import java.net.URI;
-import java.rmi.RemoteException;
 
 /**
  * A dummy implementation of the rule loader.
@@ -36,7 +35,7 @@
    *
    * @return Nothing.
    */
-  public Rules readRules(Object session, URI systemModel) throws InitializerException {
+  public Rules readRules(Object session) throws InitializerException {
     throw new InitializerException("No rule loader available.");
   }
 

Modified: branches/consistency/src/jar/rules/java/org/mulgara/rules/RuleLoader.java
===================================================================
--- branches/consistency/src/jar/rules/java/org/mulgara/rules/RuleLoader.java	2009-03-24 01:11:33 UTC (rev 1624)
+++ branches/consistency/src/jar/rules/java/org/mulgara/rules/RuleLoader.java	2009-03-24 01:12:37 UTC (rev 1625)
@@ -16,7 +16,6 @@
 
 package org.mulgara.rules;
 
-import java.net.URI;
 import java.rmi.RemoteException;
 
 /**
@@ -36,6 +35,6 @@
    *
    * @return A {@link org.mulgara.krule.RuleStructure} containing all the loaded rules.
    */
-  public Rules readRules(Object session, URI systemModel) throws InitializerException, RemoteException;
+  public Rules readRules(Object session) throws InitializerException, RemoteException;
 
 }

Modified: branches/consistency/src/jar/rules/java/org/mulgara/rules/RuleLoaderFactory.java
===================================================================
--- branches/consistency/src/jar/rules/java/org/mulgara/rules/RuleLoaderFactory.java	2009-03-24 01:11:33 UTC (rev 1624)
+++ branches/consistency/src/jar/rules/java/org/mulgara/rules/RuleLoaderFactory.java	2009-03-24 01:12:37 UTC (rev 1625)
@@ -47,20 +47,15 @@
    * @param target  the destination for rule consequences.
    * @return the constructed {@link RuleLoader}
    */
-  public static RuleLoader newRuleLoader(String className, URI source, URI base, URI target)
-    throws InitializerException
-  {
-    if (logger.isDebugEnabled()) {
-      logger.debug("Creating rule loader " + className);
-    }
+  public static RuleLoader newRuleLoader(String className, URI source, URI base, URI target) throws InitializerException {
 
+    if (logger.isDebugEnabled()) logger.debug("Creating rule loader " + className);
+
     // Validate parameters
-    if (className == null) {
-      throw new IllegalArgumentException("Null 'className' parameter");
-    }
+    if (className == null) throw new IllegalArgumentException("Null 'className' parameter");
 
     try {
-      Class ruleLoaderClass = Class.forName(className);
+      Class<?> ruleLoaderClass = Class.forName(className);
 
       // Validate that the candidate supports the RuleLoader interface
       if (!RuleLoader.class.isAssignableFrom(ruleLoaderClass)) {
@@ -80,8 +75,8 @@
         newInstanceMethod.invoke(null, new Object[] { source, base, target });
 
       return ruleLoader;
-    }
-    catch (Exception e) {
+
+    } catch (Exception e) {
       logger.warn("Error generating rule loader factory", e);
       throw new InitializerException("Unable to add rule loader factory", e);
     }

Modified: branches/consistency/src/jar/rules/java/org/mulgara/rules/RulesRef.java
===================================================================
--- branches/consistency/src/jar/rules/java/org/mulgara/rules/RulesRef.java	2009-03-24 01:11:33 UTC (rev 1624)
+++ branches/consistency/src/jar/rules/java/org/mulgara/rules/RulesRef.java	2009-03-24 01:12:37 UTC (rev 1625)
@@ -16,8 +16,6 @@
 
 package org.mulgara.rules;
 
-import java.net.URI;
-import java.io.Serializable;
 import java.rmi.Remote;
 import java.rmi.RemoteException;
 




More information about the Mulgara-svn mailing list