You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2012/12/10 18:25:16 UTC

svn commit: r1419595 [6/6] - in /jena/trunk: jena-arq/ jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/ jena-arq/src/main/java/com/hp/hpl/jena/sparql/graph/ jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/ jena-arq/src/main/java/org/openjena/ri...

Modified: jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/rulesys/test/TestInferenceReification.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/rulesys/test/TestInferenceReification.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/rulesys/test/TestInferenceReification.java (original)
+++ jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/rulesys/test/TestInferenceReification.java Mon Dec 10 17:25:00 2012
@@ -26,7 +26,6 @@ import com.hp.hpl.jena.rdf.model.*;
 import com.hp.hpl.jena.reasoner.*;
 import com.hp.hpl.jena.reasoner.rulesys.*;
 import com.hp.hpl.jena.reasoner.test.TestUtil;
-import com.hp.hpl.jena.shared.ReificationStyle;
 import com.hp.hpl.jena.util.PrintUtil;
 
 import junit.framework.TestSuite;
@@ -50,11 +49,7 @@ public class TestInferenceReification ex
     
     @Override
     public Graph getGraph()
-        { return getGraph( ReificationStyle.Minimal ); }
-
-    @Override
-    public Graph getGraph( ReificationStyle style )
-        { return makeInfGraph( "", "", style ); }
+        { return makeInfGraph( "", "" ); }
 
     /**
      * Case 1: Rules construct a reified statement, is that
@@ -64,51 +59,13 @@ public class TestInferenceReification ex
         String rules =  
             "[r1: (?x eh:p ?o) -> (?o rdf:type rdf:Statement) (?o rdf:subject ?x)" +
             "                         (?o rdf:predicate eh:q) (?o rdf:object 42)]";
-        Model m = makeInfModel( rules, "r1 p r", ReificationStyle.Standard );
+        Model m = makeInfModel( rules, "r1 p r" );
         TestUtil.assertIteratorLength( m.listReifiedStatements(), 1 );
     }
     
-    public void testBindFixesStyle()
-        {
-        testBindCopiesStyle( ruleBaseReasoner() );
-        testBindCopiesStyle( ReasonerRegistry.getRDFSReasoner() );
-        testBindCopiesStyle( ReasonerRegistry.getTransitiveReasoner() );
-        testBindCopiesStyle( ReasonerRegistry.getOWLMicroReasoner() );
-        testBindCopiesStyle( ReasonerRegistry.getOWLMiniReasoner() );
-        testBindCopiesStyle( ReasonerRegistry.getOWLReasoner() );
-        testBindCopiesStyle( ReasonerRegistry.getRDFSSimpleReasoner() );
-        }
-
-    private void testBindCopiesStyle( Reasoner r )
-        {
-        testCopiesStyle( r, ReificationStyle.Minimal );
-        testCopiesStyle( r, ReificationStyle.Standard );
-        testCopiesStyle( r, ReificationStyle.Convenient );
-        }
-
-    private void testCopiesStyle( Reasoner r, ReificationStyle style )
-        {
-        assertEquals( style, r.bind( graphWith( "", style ) ).getReifier().getStyle() );
-        }
-
     private Reasoner ruleBaseReasoner()
         { return new FBRuleReasoner( Rule.parseRules( "" ) ); }
     
-    public void testRetainsStyle()
-        {
-        testRetainsStyle( ReificationStyle.Standard );
-        testRetainsStyle( ReificationStyle.Convenient );
-        testRetainsStyle( ReificationStyle.Minimal );
-        }
-
-    private void testRetainsStyle( ReificationStyle style )
-        {
-        BasicForwardRuleInfGraph g = (BasicForwardRuleInfGraph) getGraph( style );
-        assertEquals( style, g.getReifier().getStyle() );
-        assertEquals( style, g.getRawGraph().getReifier().getStyle() );
-        assertEquals( style, g.getDeductionsGraph().getReifier().getStyle() );
-        }
-    
     public void testConstructingModelDoesntForcePreparation()
         {
         Model m = makeInfModel( "", "" );
@@ -132,27 +89,20 @@ public class TestInferenceReification ex
      * Internal helper: create an InfGraph with given rule set and base data.
      * The base data is encoded in kers-special RDF syntax.
      */    
-    private InfGraph makeInfGraph(String rules, String data, ReificationStyle style ) {
+    private InfGraph makeInfGraph(String rules, String data) {
         PrintUtil.registerPrefix("eh", "eh:/");
-        Graph base = graphWith( data, style );
+        Graph base = graphWith( data );
         List<Rule> ruleList = Rule.parseRules(rules);
         return new FBRuleReasoner(ruleList).bind( base );
     }
     
-    private Graph graphWith( String data, ReificationStyle style )
-        { return graphAdd( Factory.createDefaultGraph( style ), data ); }
-
     /**
      * Internal helper: create a Model which wraps an InfGraph with given rule set and base data.
      * The base data is encoded in kers-special RDF syntax.
-     * @param style TODO
      */
-    private Model makeInfModel( String rules, String data, ReificationStyle style ) {
-        return ModelFactory.createModelForGraph( makeInfGraph(rules, data, style ) );
-    }
         
     private Model makeInfModel( String rules, String data ) {
-        return makeInfModel( rules, data, ReificationStyle.Minimal );
+        return ModelFactory.createModelForGraph( makeInfGraph(rules, data ) );
     }
     
 }

Modified: jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/rulesys/test/WebOntTestHarness.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/rulesys/test/WebOntTestHarness.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/rulesys/test/WebOntTestHarness.java (original)
+++ jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/rulesys/test/WebOntTestHarness.java Mon Dec 10 17:25:00 2012
@@ -18,18 +18,18 @@
 
 package com.hp.hpl.jena.reasoner.rulesys.test;
 
-import com.hp.hpl.jena.graph.query.*;
-import com.hp.hpl.jena.graph.*;
-import com.hp.hpl.jena.ontology.OntModelSpec;
-import com.hp.hpl.jena.rdf.model.*;
-
-import com.hp.hpl.jena.reasoner.*;
-import com.hp.hpl.jena.reasoner.rulesys.FBRuleInfGraph;
-import com.hp.hpl.jena.reasoner.test.WGReasonerTester;
-import com.hp.hpl.jena.vocabulary.*;
+import java.io.* ;
+import java.util.* ;
 
-import java.io.*;
-import java.util.*;
+import com.hp.hpl.jena.ontology.OntModelSpec ;
+import com.hp.hpl.jena.rdf.model.* ;
+import com.hp.hpl.jena.reasoner.InfGraph ;
+import com.hp.hpl.jena.reasoner.Reasoner ;
+import com.hp.hpl.jena.reasoner.ReasonerException ;
+import com.hp.hpl.jena.reasoner.ReasonerRegistry ;
+import com.hp.hpl.jena.reasoner.rulesys.FBRuleInfGraph ;
+import com.hp.hpl.jena.reasoner.test.WGReasonerTester ;
+import com.hp.hpl.jena.vocabulary.* ;
 
 /**
  * Test harness for running the WebOnt working group tests relevant 
@@ -377,7 +377,7 @@ public class WebOntTestHarness {
                 ((FBRuleInfGraph)graph).resetLPProfile(true);
             }
             Model result = ModelFactory.createModelForGraph(graph);
-            boolean correct = testEntailment(conclusions.getGraph(), result.getGraph());
+            boolean correct = WGReasonerTester.testConclusions(conclusions.getGraph(), result.getGraph());
             long t2 = System.currentTimeMillis();
             lastTestDuration = t2 - t1; 
             if (printProfile) {
@@ -468,18 +468,6 @@ public class WebOntTestHarness {
     }
     
     /**
-     * Test a conclusions graph against a result graph. This works by
-     * translating the conclusions graph into a find query which contains one
-     * variable for each distinct bNode in the conclusions graph.
-     */
-    public boolean testEntailment(Graph conclusions, Graph result) {
-        QueryHandler qh = result.queryHandler();
-        GraphQuery query = WGReasonerTester.graphToQuery(conclusions);
-        Iterator<Domain> i = qh.prepareBindings(query, new Node[] {}).executeBindings();
-        return i.hasNext();
-    }
-    
-    /**
      * Example the conclusions graph for introduction of restrictions which
      * require a comprehension rewrite and declare new (anon) classes
      * for those restrictions.

Modified: jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/test/TestInfGraph.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/test/TestInfGraph.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/test/TestInfGraph.java (original)
+++ jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/test/TestInfGraph.java Mon Dec 10 17:25:00 2012
@@ -18,13 +18,12 @@
 
 package com.hp.hpl.jena.reasoner.test;
 
-import junit.framework.*;
+import junit.framework.TestSuite ;
 
-import com.hp.hpl.jena.graph.Graph;
-import com.hp.hpl.jena.graph.test.AbstractTestGraph;
-import com.hp.hpl.jena.rdf.model.ModelFactory;
-import com.hp.hpl.jena.reasoner.InfGraph;
-import com.hp.hpl.jena.reasoner.rulesys.BasicFBReifier;
+import com.hp.hpl.jena.graph.Graph ;
+import com.hp.hpl.jena.graph.test.AbstractTestGraph ;
+import com.hp.hpl.jena.rdf.model.ModelFactory ;
+import com.hp.hpl.jena.reasoner.InfGraph ;
 
 /**
      Needs extending; relys on knowing that the only InfGraph currently used is
@@ -56,12 +55,6 @@ public class TestInfGraph extends Abstra
         assertSame( ig.getPrefixMapping(), ig.getRawGraph().getPrefixMapping() );
         }
     
-    public void testInfReification()
-        {
-        InfGraph ig = getInfGraph();
-        assertInstanceOf( BasicFBReifier.class, ig.getReifier() );
-        }
-    
     /**
          Placeholder. Will need revision later.
     */

Modified: jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/test/TestRDFSReasoners.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/test/TestRDFSReasoners.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/test/TestRDFSReasoners.java (original)
+++ jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/test/TestRDFSReasoners.java Mon Dec 10 17:25:00 2012
@@ -274,7 +274,7 @@ public class TestRDFSReasoners extends R
             } else if (file.endsWith("n3")) {
                 langType = "N3";
             }
-            Model m = ModelFactory.createNonreifyingModel();
+            Model m = ModelFactory.createDefaultModel();
             Reader reader = new BufferedReader(new FileReader("testing/reasoners/rdfs/"+file));
             m.read(reader, WGReasonerTester.BASE_URI + file, langType);
             InfGraph g = rf.create(null).bind(m.getGraph());

Modified: jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/test/WGReasonerTester.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/test/WGReasonerTester.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/test/WGReasonerTester.java (original)
+++ jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/reasoner/test/WGReasonerTester.java Mon Dec 10 17:25:00 2012
@@ -18,24 +18,31 @@
 
 package com.hp.hpl.jena.reasoner.test;
 
-import com.hp.hpl.jena.rdf.model.*;
-import com.hp.hpl.jena.graph.*;
-import com.hp.hpl.jena.graph.query.*;
-import com.hp.hpl.jena.rdf.model.impl.PropertyImpl;
-import com.hp.hpl.jena.rdf.model.impl.ResourceImpl;
-import com.hp.hpl.jena.reasoner.*;
-import com.hp.hpl.jena.vocabulary.RDF;
-import com.hp.hpl.jena.rdf.arp.ARPTests;
-
-import com.hp.hpl.jena.shared.*;
-
-import junit.framework.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.*;
-import java.util.*;
-import java.net.*;
+import java.io.BufferedInputStream ;
+import java.io.FileInputStream ;
+import java.io.IOException ;
+import java.io.InputStream ;
+import java.net.URL ;
+import java.util.ArrayList ;
+import java.util.Iterator ;
+import java.util.List ;
+
+import junit.framework.Assert ;
+import junit.framework.TestCase ;
+import org.slf4j.Logger ;
+import org.slf4j.LoggerFactory ;
+
+import com.hp.hpl.jena.graph.Factory ;
+import com.hp.hpl.jena.graph.Graph ;
+import com.hp.hpl.jena.rdf.arp.ARPTests ;
+import com.hp.hpl.jena.rdf.model.* ;
+import com.hp.hpl.jena.rdf.model.impl.PropertyImpl ;
+import com.hp.hpl.jena.rdf.model.impl.ResourceImpl ;
+import com.hp.hpl.jena.reasoner.InfGraph ;
+import com.hp.hpl.jena.reasoner.Reasoner ;
+import com.hp.hpl.jena.reasoner.ReasonerFactory ;
+import com.hp.hpl.jena.shared.JenaException ;
+import com.hp.hpl.jena.vocabulary.RDF ;
 
 /**
  * A utility to support execution of the RDFCode working group entailment
@@ -157,7 +164,7 @@ public class WGReasonerTester {
         } else if (file.endsWith("n3")) {
             langType = "N3";
         }
-        Model result = ModelFactory.createNonreifyingModel();
+        Model result = ModelFactory.createDefaultModel();
         String fname = file;
         if (fname.startsWith(BASE_URI)) {
             fname = fname.substring(BASE_URI.length());
@@ -292,7 +299,7 @@ public class WGReasonerTester {
         }
                 
         // Load up the premise documents
-        Model premises = ModelFactory.createNonreifyingModel();
+        Model premises = ModelFactory.createDefaultModel();
         for (StmtIterator premisesI = test.listProperties(premiseDocumentP); premisesI.hasNext(); ) {
             premises.add(loadFile(premisesI.nextStatement().getObject().toString()));
         }
@@ -364,62 +371,27 @@ public class WGReasonerTester {
         
         // Signal the results        
         if (testcase != null) {
+//            if ( !correct )
+//            {
+//                boolean b = testConclusions(conclusions.getGraph(), result.getGraph());
+//                System.out.println("**** actual") ;
+//                result.write(System.out, "TTL") ; 
+//                System.out.println("**** expected") ;
+//                conclusions.write(System.out, "TTL") ;
+//            }
             Assert.assertTrue("Test: " + test + "\n" +  description, correct);
         }
         return correct?goodResult:FAIL;
     }
     
     /**
-     * Test a conclusions graph against a result graph. This works by
+     * Test a conclusions graph against a result graph.
+    * This works by
      * translating the conclusions graph into a find query which contains one
      * variable for each distinct bNode in the conclusions graph.
      */
-    private boolean testConclusions(Graph conclusions, Graph result) {
-        QueryHandler qh = result.queryHandler();
-        GraphQuery query = graphToQuery(conclusions);
-        Iterator<Domain> i = qh.prepareBindings(query, new Node[] {}).executeBindings();
-        return i.hasNext();
+    public static boolean testConclusions(Graph conclusions, Graph result) {
+        return Matcher.subgraphInferred(conclusions, result) ;
     }
 
- 
-    /**
-     * Translate a conclusions graph into a query pattern
-     */
-    public static GraphQuery graphToQuery(Graph graph) {
-        HashMap<Node, Node> bnodeToVar = new HashMap<Node, Node>();
-        GraphQuery query = new GraphQuery();
-        for (Iterator<Triple> i = graph.find(null, null, null); i.hasNext(); ) {
-            Triple triple = i.next();
-            query.addMatch(
-                translate(triple.getSubject(), bnodeToVar),
-                translate(triple.getPredicate(), bnodeToVar),
-                translate(triple.getObject(), bnodeToVar) );
-        }
-        return query;
-    }
-   
-    /**
-     * Translate a blank node to a variable node
-     * @param node the bNode to translate
-     * @param bnodeToVar a map of translations already known about
-     * @return a variable node
-     */
-    private static Node translate(Node node, HashMap<Node, Node> bnodeToVar) {
-        String varnames = "abcdefghijklmnopqrstuvwxyz";
-        if (node.isBlank()) {
-            Node t = bnodeToVar.get(node);
-            if (t == null) {
-               int i = bnodeToVar.size();
-               if (i > varnames.length()) {
-                   throw new ReasonerException("Too many bnodes in query");
-               }
-               t = Node.createVariable(varnames.substring(i, i+1));
-               bnodeToVar.put(node, t);
-            } 
-            return t;
-        } else {
-            return node;
-        }
-    }
- 
 }

Modified: jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/shared/TestSharedPackage.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/shared/TestSharedPackage.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/shared/TestSharedPackage.java (original)
+++ jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/shared/TestSharedPackage.java Mon Dec 10 17:25:00 2012
@@ -33,7 +33,6 @@ public class TestSharedPackage extends T
         TestSuite result = new TestSuite();
         result.addTest( TestPrefixMapping.suite() );
         result.addTest( TestJenaException.suite() );
-        result.addTest( TestReificationStyle.suite() );
         result.addTest( RandomizedTestSuiteRegression.suite() );
         return result;
         }

Modified: jena/trunk/jena-fuseki/pom.xml
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/pom.xml?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/pom.xml (original)
+++ jena/trunk/jena-fuseki/pom.xml Mon Dec 10 17:25:00 2012
@@ -94,19 +94,19 @@
     <dependency>
       <groupId>org.apache.jena</groupId>
       <artifactId>jena-arq</artifactId>
-      <version>2.9.5-SNAPSHOT</version>
+      <version>2.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.jena</groupId>
       <artifactId>jena-core</artifactId>
-      <version>2.7.5-SNAPSHOT</version>
+      <version>2.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.jena</groupId>
       <artifactId>jena-tdb</artifactId>
-      <version>0.9.5-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <!--

Modified: jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/http/DatasetGraphAccessorBasic.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/http/DatasetGraphAccessorBasic.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/http/DatasetGraphAccessorBasic.java (original)
+++ jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/http/DatasetGraphAccessorBasic.java Mon Dec 10 17:25:00 2012
@@ -19,9 +19,10 @@
 package org.apache.jena.fuseki.http;
 
 
-import com.hp.hpl.jena.graph.Graph ;
-import com.hp.hpl.jena.graph.Node ;
-import com.hp.hpl.jena.sparql.core.DatasetGraph ;
+import com.hp.hpl.jena.graph.Graph ;
+import com.hp.hpl.jena.graph.GraphUtil ;
+import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.sparql.core.DatasetGraph ;
 
 /** 
  * General implementation of operations for the SPARQL HTTP Update protocol
@@ -113,12 +114,12 @@ public class DatasetGraphAccessorBasic i
     private void clearGraph(Graph graph)
     {
         if ( ! graph.isEmpty() )
-            graph.getBulkUpdateHandler().removeAll() ;
+            graph.clear() ;
     }
 
     private void mergeGraph(Graph graph, Graph data)
     {
-        graph.getBulkUpdateHandler().add(data) ;
+        GraphUtil.addInto(graph, data) ;
     }
 
 }

Modified: jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_REST.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_REST.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_REST.java (original)
+++ jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_REST.java Mon Dec 10 17:25:00 2012
@@ -52,6 +52,7 @@ import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
 
 import com.hp.hpl.jena.graph.Graph ;
+import com.hp.hpl.jena.graph.GraphUtil ;
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.graph.Triple ;
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
@@ -243,7 +244,7 @@ public abstract class SPARQL_REST extend
     protected static void deleteGraph(HttpActionREST action)
     {
         if ( action.getTarget().isDefault )
-            action.getTarget().graph().getBulkUpdateHandler().removeAll() ;
+            action.getTarget().graph().clear() ;
         else
             action.getActiveDSG().removeGraph(action.getTarget().graphName) ;
     }
@@ -253,7 +254,7 @@ public abstract class SPARQL_REST extend
         if ( ! target.isGraphSet() )
         {
             Graph g = target.graph() ;
-            g.getBulkUpdateHandler().removeAll() ;
+            g.clear() ;
         }
     }
 
@@ -272,7 +273,7 @@ public abstract class SPARQL_REST extend
                 g = GraphFactory.createDefaultGraph() ;
                 dest.dsg.addGraph(dest.graphName, g) ;
             }
-            g.getBulkUpdateHandler().add(data) ;
+            GraphUtil.addInto(g, data) ;
         } catch (RuntimeException ex)
         {
             // If anything went wrong, try to backout.

Modified: jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Upload.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Upload.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Upload.java (original)
+++ jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Upload.java Mon Dec 10 17:25:00 2012
@@ -44,6 +44,7 @@ import org.openjena.riot.lang.SinkTriple
 import org.openjena.riot.system.IRIResolver ;
 
 import com.hp.hpl.jena.graph.Graph ;
+import com.hp.hpl.jena.graph.GraphUtil ;
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.graph.Triple ;
 import com.hp.hpl.jena.sparql.graph.GraphFactory ;
@@ -101,13 +102,15 @@ public class SPARQL_Upload extends SPARQ
             log.info(format("[%d] Upload: Graph: %s (%d triple(s))", 
                             action.id, graphName,  tripleCount)) ;
 
+            Graph target ; 
             if ( graphName.equals(HttpNames.valueDefault) ) 
-                action.getActiveDSG().getDefaultGraph().getBulkUpdateHandler().add(graphTmp) ;
+                target = action.getActiveDSG().getDefaultGraph() ;
             else
             {
                 Node gn = Node.createURI(graphName) ;
-                action.getActiveDSG().getGraph(gn).getBulkUpdateHandler().add(graphTmp) ;
+                target = action.getActiveDSG().getGraph(gn) ;
             }
+            GraphUtil.addInto(target, graphTmp) ;
             tripleCount = graphTmp.size();
             action.commit() ;
         } catch (RuntimeException ex)

Modified: jena/trunk/jena-fuseki/src/test/java/org/apache/jena/fuseki/http/TestDatasetGraphAccessorBase.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/test/java/org/apache/jena/fuseki/http/TestDatasetGraphAccessorBase.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/test/java/org/apache/jena/fuseki/http/TestDatasetGraphAccessorBase.java (original)
+++ jena/trunk/jena-fuseki/src/test/java/org/apache/jena/fuseki/http/TestDatasetGraphAccessorBase.java Mon Dec 10 17:25:00 2012
@@ -23,6 +23,7 @@ import org.apache.jena.fuseki.http.Datas
 import org.junit.Test ;
 
 import com.hp.hpl.jena.graph.Graph ;
+import com.hp.hpl.jena.graph.GraphUtil ;
 import com.hp.hpl.jena.sparql.graph.GraphFactory ;
 
 public abstract class TestDatasetGraphAccessorBase extends BaseServerTest
@@ -83,8 +84,8 @@ public abstract class TestDatasetGraphAc
         Graph graph = updater.httpGet() ;
         
         Graph graph3 = GraphFactory.createDefaultGraph() ;
-        graph3.getBulkUpdateHandler().add(graph1) ;
-        graph3.getBulkUpdateHandler().add(graph2) ;
+        GraphUtil.addInto(graph3, graph1) ;
+        GraphUtil.addInto(graph3, graph2) ;
         assertTrue(graph.isIsomorphicWith(graph3)) ;
         assertFalse(graph.isIsomorphicWith(graph1)) ;
         assertFalse(graph.isIsomorphicWith(graph2)) ;
@@ -97,8 +98,8 @@ public abstract class TestDatasetGraphAc
         updater.httpPost(n1, graph2) ;
         Graph graph = updater.httpGet(n1) ;
         Graph graph3 = GraphFactory.createDefaultGraph() ;
-        graph3.getBulkUpdateHandler().add(graph1) ;
-        graph3.getBulkUpdateHandler().add(graph2) ;
+        GraphUtil.addInto(graph3, graph1) ;
+        GraphUtil.addInto(graph3, graph2) ;
         assertTrue(graph.isIsomorphicWith(graph3)) ;
         assertFalse(graph.isIsomorphicWith(graph1)) ;
         assertFalse(graph.isIsomorphicWith(graph2)) ;

Modified: jena/trunk/jena-sdb/pom.xml
URL: http://svn.apache.org/viewvc/jena/trunk/jena-sdb/pom.xml?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-sdb/pom.xml (original)
+++ jena/trunk/jena-sdb/pom.xml Mon Dec 10 17:25:00 2012
@@ -43,8 +43,8 @@
 
   <properties>
     <this.root>${project.artifactId}-${project.version}</this.root>
-    <ver.jena>2.7.5-SNAPSHOT</ver.jena>
-    <ver.arq>2.9.5-SNAPSHOT</ver.arq>
+    <ver.jena>2.10.0-SNAPSHOT</ver.jena>
+    <ver.arq>2.10.0-SNAPSHOT</ver.arq>
     <maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ssZ</maven.build.timestamp.format>
     <build.time.xsd>${maven.build.timestamp}</build.time.xsd>
   </properties>

Modified: jena/trunk/jena-sdb/src-dev/dev/TestStores2Connections1.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-sdb/src-dev/dev/TestStores2Connections1.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-sdb/src-dev/dev/TestStores2Connections1.java (original)
+++ jena/trunk/jena-sdb/src-dev/dev/TestStores2Connections1.java Mon Dec 10 17:25:00 2012
@@ -57,7 +57,7 @@ public class TestStores2Connections1
                 store1.getConnection().getTransactionHandler().begin() ;
             
             Graph graph1 = SDBFactory.connectDefaultGraph(store1) ;
-            graph1.getBulkUpdateHandler().removeAll() ;
+            graph1.clear() ;
             SSE.write(graph1) ; System.out.println();
             graph1.add(t1) ;
             SSE.write(graph1) ; System.out.println();

Modified: jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/graph/GraphSDB.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/graph/GraphSDB.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/graph/GraphSDB.java (original)
+++ jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/graph/GraphSDB.java Mon Dec 10 17:25:00 2012
@@ -18,40 +18,37 @@
 
 package com.hp.hpl.jena.sdb.graph;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.ArrayList ;
+import java.util.List ;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.slf4j.Logger ;
+import org.slf4j.LoggerFactory ;
 
-import com.hp.hpl.jena.graph.*;
-import com.hp.hpl.jena.graph.impl.AllCapabilities;
-import com.hp.hpl.jena.graph.query.QueryHandler;
-import com.hp.hpl.jena.query.Query;
-import com.hp.hpl.jena.sdb.SDB;
-import com.hp.hpl.jena.sdb.Store;
-import com.hp.hpl.jena.sdb.core.SDBRequest;
-import com.hp.hpl.jena.sdb.engine.QueryEngineSDB;
-import com.hp.hpl.jena.sdb.sql.SDBConnection;
-import com.hp.hpl.jena.sdb.store.DatasetStoreGraph;
-import com.hp.hpl.jena.sdb.store.StoreLoader;
-import com.hp.hpl.jena.sdb.store.StoreLoaderPlus;
-import com.hp.hpl.jena.shared.PrefixMapping;
-import com.hp.hpl.jena.sparql.algebra.Op;
-import com.hp.hpl.jena.sparql.algebra.op.OpQuadPattern;
-import com.hp.hpl.jena.sparql.core.BasicPattern;
-import com.hp.hpl.jena.sparql.core.Quad;
-import com.hp.hpl.jena.sparql.core.Var;
-import com.hp.hpl.jena.sparql.engine.Plan;
-import com.hp.hpl.jena.sparql.engine.QueryIterator;
-import com.hp.hpl.jena.sparql.engine.binding.Binding;
-import com.hp.hpl.jena.sparql.engine.binding.BindingRoot;
-import com.hp.hpl.jena.sparql.engine.iterator.QueryIterPlainWrapper;
+import com.hp.hpl.jena.graph.* ;
+import com.hp.hpl.jena.graph.impl.AllCapabilities ;
+import com.hp.hpl.jena.query.Query ;
+import com.hp.hpl.jena.sdb.SDB ;
+import com.hp.hpl.jena.sdb.Store ;
+import com.hp.hpl.jena.sdb.core.SDBRequest ;
+import com.hp.hpl.jena.sdb.engine.QueryEngineSDB ;
+import com.hp.hpl.jena.sdb.sql.SDBConnection ;
+import com.hp.hpl.jena.sdb.store.DatasetStoreGraph ;
+import com.hp.hpl.jena.sdb.store.StoreLoader ;
+import com.hp.hpl.jena.sdb.store.StoreLoaderPlus ;
+import com.hp.hpl.jena.shared.PrefixMapping ;
+import com.hp.hpl.jena.sparql.algebra.Op ;
+import com.hp.hpl.jena.sparql.algebra.op.OpQuadPattern ;
+import com.hp.hpl.jena.sparql.core.BasicPattern ;
+import com.hp.hpl.jena.sparql.core.Quad ;
+import com.hp.hpl.jena.sparql.core.Var ;
+import com.hp.hpl.jena.sparql.engine.Plan ;
+import com.hp.hpl.jena.sparql.engine.QueryIterator ;
+import com.hp.hpl.jena.sparql.engine.binding.Binding ;
+import com.hp.hpl.jena.sparql.engine.binding.BindingRoot ;
+import com.hp.hpl.jena.sparql.engine.iterator.QueryIterPlainWrapper ;
 import com.hp.hpl.jena.sparql.graph.GraphBase2 ;
-import com.hp.hpl.jena.util.iterator.ExtendedIterator;
-import com.hp.hpl.jena.util.iterator.NiceIterator;
-
-
+import com.hp.hpl.jena.util.iterator.ExtendedIterator ;
+import com.hp.hpl.jena.util.iterator.NiceIterator ;
 
 public class GraphSDB extends GraphBase2 implements Graph
 {
@@ -255,6 +252,7 @@ public class GraphSDB extends GraphBase2
     
     public StoreLoader getBulkLoader() { return store.getLoader() ; }
     
+    @Deprecated
     @Override
     public BulkUpdateHandler getBulkUpdateHandler()
     {
@@ -263,12 +261,6 @@ public class GraphSDB extends GraphBase2
     }
     
     @Override
-    public QueryHandler queryHandler()
-    {
-        return new GraphQueryHandlerSDB(this, graphNode, datasetStore) ;
-    }
-    
-    @Override
     public GraphEventManager getEventManager()
     {
     	if (gem == null) gem = new EventManagerSDB( this );

Modified: jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/graph/UpdateHandlerSDB.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/graph/UpdateHandlerSDB.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/graph/UpdateHandlerSDB.java (original)
+++ jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/graph/UpdateHandlerSDB.java Mon Dec 10 17:25:00 2012
@@ -110,7 +110,4 @@ public class UpdateHandlerSDB extends Si
 		try { ((GraphSDB) graph).startBulkUpdate(); ((GraphSDB) graph).deleteAll(); }
 		finally { ((GraphSDB) graph).finishBulkUpdate(); }
 	}
-	
-	
-	
 }

Modified: jena/trunk/jena-sdb/src/test/java/com/hp/hpl/jena/sdb/test/graph/AbstractTestGraphSDB.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-sdb/src/test/java/com/hp/hpl/jena/sdb/test/graph/AbstractTestGraphSDB.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-sdb/src/test/java/com/hp/hpl/jena/sdb/test/graph/AbstractTestGraphSDB.java (original)
+++ jena/trunk/jena-sdb/src/test/java/com/hp/hpl/jena/sdb/test/graph/AbstractTestGraphSDB.java Mon Dec 10 17:25:00 2012
@@ -20,7 +20,7 @@ package com.hp.hpl.jena.sdb.test.graph;
 
 import com.hp.hpl.jena.graph.test.AbstractTestGraph;
 
-public class AbstractTestGraphSDB extends AbstractTestGraph
+public abstract class AbstractTestGraphSDB extends AbstractTestGraph
 {
     public AbstractTestGraphSDB(String x) { super(x); }
     // Tests to skip.

Modified: jena/trunk/jena-tdb/pom.xml
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/pom.xml?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-tdb/pom.xml (original)
+++ jena/trunk/jena-tdb/pom.xml Mon Dec 10 17:25:00 2012
@@ -22,7 +22,7 @@
   <artifactId>jena-tdb</artifactId>
   <packaging>jar</packaging>
   <name>Apache Jena - TDB (Native Triple Store)</name>
-  <version>0.9.5-SNAPSHOT</version>
+  <version>0.10.0-SNAPSHOT</version>
 
   <parent>
     <groupId>org.apache.jena</groupId>
@@ -62,28 +62,28 @@
     <dependency>
       <groupId>org.apache.jena</groupId>
       <artifactId>jena-arq</artifactId>
-      <version>2.9.5-SNAPSHOT</version>
+      <version>2.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.jena</groupId>
       <artifactId>jena-arq</artifactId>
       <classifier>tests</classifier>
-      <version>2.9.5-SNAPSHOT</version>
+      <version>2.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
 
      <dependency>
       <groupId>org.apache.jena</groupId>
       <artifactId>jena-core</artifactId>
-      <version>2.7.5-SNAPSHOT</version>
+      <version>2.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.jena</groupId>
       <artifactId>jena-core</artifactId>
       <classifier>tests</classifier>
-      <version>2.7.5-SNAPSHOT</version>
+      <version>2.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
 

Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/graph/BulkUpdateHandlerTDB.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/graph/BulkUpdateHandlerTDB.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/graph/BulkUpdateHandlerTDB.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/graph/BulkUpdateHandlerTDB.java Mon Dec 10 17:25:00 2012
@@ -18,19 +18,11 @@
 
 package com.hp.hpl.jena.tdb.graph;
 
-import java.util.Iterator;
-
-import org.apache.jena.atlas.lib.Tuple ;
-
-
-
-import com.hp.hpl.jena.graph.BulkUpdateHandler;
-import com.hp.hpl.jena.graph.GraphEvents;
-import com.hp.hpl.jena.graph.Node;
-import com.hp.hpl.jena.graph.impl.SimpleBulkUpdateHandler;
-import com.hp.hpl.jena.tdb.nodetable.NodeTupleTable ;
-import com.hp.hpl.jena.tdb.store.GraphTDBBase;
-import com.hp.hpl.jena.tdb.store.NodeId;
+import com.hp.hpl.jena.graph.BulkUpdateHandler ;
+import com.hp.hpl.jena.graph.GraphEvents ;
+import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.graph.impl.SimpleBulkUpdateHandler ;
+import com.hp.hpl.jena.tdb.store.GraphTDBBase ;
 
 public class BulkUpdateHandlerTDB extends SimpleBulkUpdateHandler implements BulkUpdateHandler
 {
@@ -42,75 +34,24 @@ public class BulkUpdateHandlerTDB extend
         this.graphTDB = graph ;
     }
 
+    @Deprecated
     @Override
     public void remove(Node s, Node p, Node o)
     {
         s = fix(s) ;
         p = fix(p) ;
         o = fix(o) ;
-        removeWorker(s,p,o) ;
+        GraphTDBBase.removeWorker(graphTDB, s,p,o) ;
         manager.notifyEvent( graph, GraphEvents.remove( s, p, o ) );
     }
 
     private static Node fix(Node n) { return (n!=null)? n : Node.ANY ; }
     
+    @Deprecated
     @Override
     public void removeAll()
     {
-         removeWorker(null, null, null) ;
+        GraphTDBBase.removeWorker(graphTDB, null, null, null) ;
          notifyRemoveAll(); 
     }
-    
-    private static final int sliceSize = 1000 ;
-    
-    private void removeWorker(Node s, Node p, Node o)
-    {
-        graphTDB.startUpdate() ;
-        
-        // Delete in batches.
-        // That way, there is no active iterator when a delete 
-        // from the indexes happens.
-        
-        NodeTupleTable t = graphTDB.getNodeTupleTable() ;
-        Node gn = graphTDB.getGraphNode() ;
-        
-        @SuppressWarnings("unchecked")
-        Tuple<NodeId>[] array = (Tuple<NodeId>[])new Tuple<?>[sliceSize] ;
-        
-        while (true)
-        {
-            // Convert/cache s,p,o?
-            // The Node Cache will catch these so don't worry unduely. 
-            Iterator<Tuple<NodeId>> iter = null ;
-            if ( gn == null )
-                iter = t.findAsNodeIds(s, p, o) ;
-            else
-                iter = t.findAsNodeIds(gn, s, p, o) ;
-            
-            if ( iter == null )
-                // Finished?
-                return ;
-            
-            // Get a slice
-            int len = 0 ;
-            for ( ; len < sliceSize ; len++ )
-            {
-                if ( !iter.hasNext() ) break ;
-                array[len] = iter.next() ;
-            }
-            
-            // Delete them.
-            for ( int i = 0 ; i < len ; i++ )
-            {
-                t.getTupleTable().delete(array[i]) ;
-                array[i] = null ;
-            }
-            // Finished?
-            if ( len < sliceSize )
-                break ;
-        }
-        
-        graphTDB.finishUpdate() ;
-
-    }
 }

Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/DatasetGraphTDB.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/DatasetGraphTDB.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/DatasetGraphTDB.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/DatasetGraphTDB.java Mon Dec 10 17:25:00 2012
@@ -28,6 +28,7 @@ import org.apache.jena.atlas.lib.Sync ;
 import org.apache.jena.atlas.lib.Tuple ;
 
 import com.hp.hpl.jena.graph.Graph ;
+import com.hp.hpl.jena.graph.GraphUtil ;
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.graph.Triple ;
 import com.hp.hpl.jena.query.Dataset ;
@@ -305,7 +306,7 @@ public class DatasetGraphTDB extends Dat
     public void addGraph(Node graphName, Graph graph)
     {
         Graph g = getGraph(graphName) ;
-        g.getBulkUpdateHandler().add(graph) ;
+        GraphUtil.addInto(g, graph) ;
     }
     
     @Override

Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/GraphTDBBase.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/GraphTDBBase.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/GraphTDBBase.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/GraphTDBBase.java Mon Dec 10 17:25:00 2012
@@ -23,19 +23,18 @@ import static com.hp.hpl.jena.sparql.cor
 import java.util.Iterator ;
 
 import org.apache.jena.atlas.iterator.Iter ;
+import org.apache.jena.atlas.lib.Tuple ;
 import org.slf4j.Logger ;
 
 import com.hp.hpl.jena.graph.* ;
-import com.hp.hpl.jena.graph.query.QueryHandler ;
 import com.hp.hpl.jena.shared.Lock ;
 import com.hp.hpl.jena.sparql.core.Quad ;
 import com.hp.hpl.jena.sparql.graph.GraphBase2 ;
-import com.hp.hpl.jena.sparql.graph.Reifier2 ;
 import com.hp.hpl.jena.tdb.TDB ;
 import com.hp.hpl.jena.tdb.graph.BulkUpdateHandlerTDB ;
-import com.hp.hpl.jena.tdb.graph.QueryHandlerTDB ;
 import com.hp.hpl.jena.tdb.graph.TransactionHandlerTDB ;
 import com.hp.hpl.jena.tdb.lib.NodeFmtLib ;
+import com.hp.hpl.jena.tdb.nodetable.NodeTupleTable ;
 import com.hp.hpl.jena.tdb.sys.SystemTDB ;
 import com.hp.hpl.jena.util.iterator.ExtendedIterator ;
 import com.hp.hpl.jena.util.iterator.WrappedIterator ;
@@ -43,8 +42,6 @@ import com.hp.hpl.jena.util.iterator.Wra
 /** General operations for TDB graphs (free-standing graph, default graph and named graphs) */
 public abstract class GraphTDBBase extends GraphBase2 implements GraphTDB
 {
-    @SuppressWarnings("hiding")
-    private final QueryHandlerTDB queryHandler = new QueryHandlerTDB(this) ;
     private final TransactionHandler transactionHandler = new TransactionHandlerTDB(this) ;
     private final BulkUpdateHandler bulkUpdateHandler = new BulkUpdateHandlerTDB(this) ;
     protected final DatasetGraphTDB dataset ;
@@ -134,12 +131,6 @@ public abstract class GraphTDBBase exten
         return WrappedIterator.createNoRemove(iterTriples) ;
     }
     
-    @Override
-    protected Reifier constructReifier()
-    {
-        return new Reifier2(this) ;
-    }
-    
     protected abstract Logger getLog() ;
     
     /** Iterator over something that, when counted, is the graph size. */
@@ -184,6 +175,7 @@ public abstract class GraphTDBBase exten
         public void remove() { iter.remove(); }
     }
     
+    @Deprecated
     @Override
     public BulkUpdateHandler getBulkUpdateHandler() { return bulkUpdateHandler ; }
 
@@ -216,10 +208,74 @@ public abstract class GraphTDBBase exten
     }
     
     @Override
-    public QueryHandler queryHandler()
-    { return queryHandler ; }
-    
-    @Override
     public TransactionHandler getTransactionHandler()
     { return transactionHandler ; }
+
+    @Override
+    public void clear()
+    {
+        removeWorker(this, Node.ANY, Node.ANY, Node.ANY) ;
+        getEventManager().notifyEvent(this, GraphEvents.removeAll ) ;   
+    }
+
+    @Override
+    public void remove( Node s, Node p, Node o )
+    {
+        removeWorker(this, s, p, o) ;
+        getEventManager().notifyEvent(this, GraphEvents.remove(s, p, o) ) ;
+    }
+
+    
+    private static final int sliceSize = 1000 ;
+
+    public static void removeWorker(GraphTDBBase g, Node s, Node p, Node o)
+    {
+        g.startUpdate() ;
+        
+        // Delete in batches.
+        // That way, there is no active iterator when a delete 
+        // from the indexes happens.
+        
+        NodeTupleTable t = g.getNodeTupleTable() ;
+        Node gn = g.getGraphNode() ;
+        
+        @SuppressWarnings("unchecked")
+        Tuple<NodeId>[] array = (Tuple<NodeId>[])new Tuple<?>[sliceSize] ;
+        
+        while (true)
+        {
+            // Convert/cache s,p,o?
+            // The Node Cache will catch these so don't worry unduely. 
+            Iterator<Tuple<NodeId>> iter = null ;
+            if ( gn == null )
+                iter = t.findAsNodeIds(s, p, o) ;
+            else
+                iter = t.findAsNodeIds(gn, s, p, o) ;
+            
+            if ( iter == null )
+                // Finished?
+                return ;
+            
+            // Get a slice
+            int len = 0 ;
+            for ( ; len < sliceSize ; len++ )
+            {
+                if ( !iter.hasNext() ) break ;
+                array[len] = iter.next() ;
+            }
+            
+            // Delete them.
+            for ( int i = 0 ; i < len ; i++ )
+            {
+                t.getTupleTable().delete(array[i]) ;
+                array[i] = null ;
+            }
+            // Finished?
+            if ( len < sliceSize )
+                break ;
+        }
+        
+        g.finishUpdate() ;
+    }
+
 }

Modified: jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/junit/AbstractTestGraphTDB.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/junit/AbstractTestGraphTDB.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/junit/AbstractTestGraphTDB.java (original)
+++ jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/junit/AbstractTestGraphTDB.java Mon Dec 10 17:25:00 2012
@@ -20,15 +20,13 @@ package com.hp.hpl.jena.tdb.junit;
 
 import com.hp.hpl.jena.graph.test.AbstractTestGraph;
 
-public class AbstractTestGraphTDB extends AbstractTestGraph
+public abstract class AbstractTestGraphTDB extends AbstractTestGraph
 {
     public AbstractTestGraphTDB(String name)
     {
         super(name) ;
     }
     
-    @Override public void testBulkAddWithReification() {}
-    
     @Override public void testIsomorphismFile() {}
     
     // Meaning less - graphs (and hence models) are not indpenedent of their datasets. 

Modified: jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestConcurrentAccess.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestConcurrentAccess.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestConcurrentAccess.java (original)
+++ jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestConcurrentAccess.java Mon Dec 10 17:25:00 2012
@@ -26,6 +26,7 @@ import org.apache.jena.atlas.lib.StrUtil
 import org.junit.Test ;
 
 import com.hp.hpl.jena.graph.Graph ;
+import com.hp.hpl.jena.graph.GraphUtil ;
 import com.hp.hpl.jena.graph.Triple ;
 import com.hp.hpl.jena.query.Dataset ;
 import com.hp.hpl.jena.query.Query ;
@@ -76,7 +77,7 @@ public class TestConcurrentAccess extend
     {
         Graph g = buildGraph() ;
         Dataset ds = TDBFactory.createDataset() ;
-        ds.getDefaultModel().getGraph().getBulkUpdateHandler().add(g) ;
+        GraphUtil.addInto(ds.getDefaultModel().getGraph(), g) ;
         return ds ;
     }
     
@@ -146,7 +147,7 @@ public class TestConcurrentAccess extend
     {
         Dataset d = TDBFactory.createDataset() ;
         Model m = d.getNamedModel("http://example") ;
-        m.getGraph().getBulkUpdateHandler().add(buildGraph()) ;
+        GraphUtil.addInto(m.getGraph(), buildGraph()) ;
         Resource r = m.createResource("x") ;
         ExtendedIterator<Statement> iter1 = m.listStatements(r, null, (RDFNode)null) ;
         while(iter1.hasNext()) 
@@ -161,7 +162,7 @@ public class TestConcurrentAccess extend
     {
         Dataset d = TDBFactory.createDataset() ;
         Model m = d.getNamedModel("http://example") ;
-        m.getGraph().getBulkUpdateHandler().add(buildGraph()) ;
+        GraphUtil.addInto(m.getGraph(), buildGraph()) ;
         Resource r = m.createResource("x") ;
         ExtendedIterator<Statement> iter1 = m.listStatements(r, null, (RDFNode)null) ;
         assertNotNull(iter1.next()) ;

Modified: jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestDatasetTDBPersist.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestDatasetTDBPersist.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestDatasetTDBPersist.java (original)
+++ jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestDatasetTDBPersist.java Mon Dec 10 17:25:00 2012
@@ -100,7 +100,7 @@ public class TestDatasetTDBPersist exten
         // Sometimes, under windows, deleting the files by 
         // graphLocation.clearDirectory does not work.  
         // Needed for safe tests on windows.
-        g1.getBulkUpdateHandler().removeAll() ;
+        g1.clear() ;
         
         Graph g2 = ds.getNamedModel("http://example/").getGraph() ;
         g2.add(new Triple(n0,n1,n2) ) ;

Modified: jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestGraphTDB.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestGraphTDB.java?rev=1419595&r1=1419594&r2=1419595&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestGraphTDB.java (original)
+++ jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestGraphTDB.java Mon Dec 10 17:25:00 2012
@@ -58,7 +58,7 @@ public class TestGraphTDB extends Abstra
     @Before public void before()
     { 
         try {
-            graph.getBulkUpdateHandler().removeAll() ;
+            graph.clear() ;
         } catch (Exception ex)
         {
             Log.warn(this, "before() : "+ex.getMessage(), ex) ;

Added: jena/trunk/jena-tdb/src/test/resources/etc/rdfs-fb-tgc-noresource.rules
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/test/resources/etc/rdfs-fb-tgc-noresource.rules?rev=1419595&view=auto
==============================================================================
--- jena/trunk/jena-tdb/src/test/resources/etc/rdfs-fb-tgc-noresource.rules (added)
+++ jena/trunk/jena-tdb/src/test/resources/etc/rdfs-fb-tgc-noresource.rules Mon Dec 10 17:25:00 2012
@@ -0,0 +1,84 @@
+#------------------------------------------------------------------
+# RDFS rule set v0.1.
+# This variant is used in the case where the subclass and subproperty
+# lattices have been precomputed by a transitive graph closure cache.
+# $Id: rdfs-fb-tgc-noresource.rules,v 1.3 2003-08-21 22:06:42 der Exp $
+#------------------------------------------------------------------
+
+#------------------------------------------------------------------
+# Tabling directives
+#------------------------------------------------------------------
+
+-> table(rdf:type).
+
+#------------------------------------------------------------------
+# RDFS Axioms
+#------------------------------------------------------------------
+
+-> (rdf:type      rdfs:range rdfs:Class).
+-> (rdfs:Resource  rdf:type  rdfs:Class).
+-> (rdfs:Literal   rdf:type  rdfs:Class).
+-> (rdf:Statement  rdf:type  rdfs:Class).
+-> (rdf:nil        rdf:type  rdf:List).
+-> (rdf:subject    rdf:type  rdf:Property).
+-> (rdf:object     rdf:type  rdf:Property).
+-> (rdf:predicate  rdf:type  rdf:Property).
+-> (rdf:first      rdf:type  rdf:Property).
+-> (rdf:rest       rdf:type  rdf:Property).
+        
+-> (rdfs:subPropertyOf rdfs:domain rdf:Property).
+-> (rdfs:subClassOf rdfs:domain rdfs:Class).
+-> (rdfs:domain rdfs:domain rdf:Property).
+-> (rdfs:range rdfs:domain rdf:Property).
+-> (rdf:subject rdfs:domain rdf:Statement).
+-> (rdf:predicate rdfs:domain rdf:Statement).
+-> (rdf:object rdfs:domain rdf:Statement).
+-> (rdf:first rdfs:domain rdf:List).
+-> (rdf:rest rdfs:domain rdf:List).
+
+-> (rdfs:subPropertyOf rdfs:range rdf:Property).
+-> (rdfs:subClassOf rdfs:range rdfs:Class).
+-> (rdfs:domain rdfs:range rdfs:Class).
+-> (rdfs:range rdfs:range rdfs:Class).
+-> (rdf:type rdfs:range rdfs:Class).
+-> (rdfs:comment rdfs:range rdfs:Literal).
+-> (rdfs:label rdfs:range rdfs:Literal).
+-> (rdf:rest rdfs:range rdf:List).
+
+-> (rdf:Alt rdfs:subClassOf rdfs:Container).
+-> (rdf:Bag rdfs:subClassOf rdfs:Container).
+-> (rdf:Seq rdfs:subClassOf rdfs:Container).
+-> (rdfs:ContainerMembershipProperty rdfs:subClassOf rdf:Property).
+
+-> (rdfs:isDefinedBy rdfs:subPropertyOf rdfs:seeAlso).
+
+-> (rdf:XMLLiteral rdf:type rdfs:Datatype).
+-> (rdfs:Datatype rdfs:subClassOf rdfs:Class).
+
+#------------------------------------------------------------------
+# RDFS Closure rules
+#------------------------------------------------------------------
+
+# This one could be omitted since the results are not really very interesting!
+#[rdf1and4: (?x ?p ?y) -> (?p rdf:type rdf:Property), (?x rdf:type rdfs:Resource), (?y rdf:type rdfs:Resource)]
+
+[rdfs7b: (?a rdf:type rdfs:Class) -> (?a rdfs:subClassOf rdfs:Resource)] 
+
+[rdfs2:  (?p rdfs:domain ?c) -> [(?x rdf:type ?c) <- (?x ?p ?y)] ] 
+[rdfs3:  (?p rdfs:range ?c)  -> [(?y rdf:type ?c) <- (?x ?p ?y)] ] 
+[rdfs5b: (?a rdf:type rdf:Property) -> (?a rdfs:subPropertyOf ?a)] 
+[rdfs6:  (?p rdfs:subPropertyOf ?q), notEqual(?p,?q) -> table(?p), table(?q), [ (?a ?q ?b) <- (?a ?p ?b)] ] 
+[rdfs7:  (?a rdf:type rdfs:Class) -> (?a rdfs:subClassOf ?a)]
+[rdfs10: (?x rdf:type rdfs:ContainerMembershipProperty) -> (?x rdfs:subPropertyOf rdfs:member)] 
+
+[rdfs2-partial: (?p rdfs:domain ?c) -> (?c rdf:type rdfs:Class)]
+[rdfs3-partial: (?p rdfs:range ?c)  -> (?c rdf:type rdfs:Class)]
+
+# Either version should work, pure back one scales better.
+# rdfs9:  (?x rdfs:subClassOf ?y) -> [ (?a rdf:type ?y) <- (?a rdf:type ?x)] ] 
+[rdfs9-alt:  (?a rdf:type ?y) <- (?x rdfs:subClassOf ?y), (?a rdf:type ?x) ] 
+
+# Not needed - replaced by TGC front end
+#[rdfs8:  (?a rdfs:subClassOf ?b), (?b rdfs:subClassOf ?c) -> (?a rdfs:subClassOf ?c)] 
+#[rdfs5a: (?a rdfs:subPropertyOf ?b), (?b rdfs:subPropertyOf ?c) -> (?a rdfs:subPropertyOf ?c)] 
+

Added: jena/trunk/jena-tdb/src/test/resources/vocabularies/assembler.n3
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/test/resources/vocabularies/assembler.n3?rev=1419595&view=auto
==============================================================================
--- jena/trunk/jena-tdb/src/test/resources/vocabularies/assembler.n3 (added)
+++ jena/trunk/jena-tdb/src/test/resources/vocabularies/assembler.n3 Mon Dec 10 17:25:00 2012
@@ -0,0 +1,590 @@
+@prefix rdf:        <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs:       <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix owl:        <http://www.w3.org/2002/07/owl#> .
+
+@prefix ja:         <http://jena.hpl.hp.com/2005/11/Assembler#> .
+
+@prefix lm:         <http://jena.hpl.hp.com/2004/08/location-mapping#> .
+@prefix dc:         <http://purl.org/dc/elements/1.1/> .
+
+@prefix :           <#> .
+
+<>  rdfs:comment     "Vocabulary for describing Jena models" ;
+    dc:creator       "Chris Dollin" ;
+    dc:creator       "the Jena team" ;
+    dc:subject       "" ;
+    dc:publisher     "HP" ;
+    dc:title         "Jena Model Spec" ;
+    dc:description   "Vocabulary for describing Jena models" ;
+    dc:date          "2005-11-15" ;
+    dc:format        "RDF" ;
+    dc:identifier    :
+    .
+
+#
+# Alias for owl:imports
+#
+
+ja:imports a rdf:Property
+    ; rdfs:label "Assembler.imports"
+    ; rdfs:comment
+        """property whose object is another JA description to
+        be loaded into this one; equivalent to owl:imports."""
+    .
+
+#
+# Assembler object: those things that can be specified and created
+#
+
+ja:Object a rdfs:Class
+    ; rdfs:label "Assembler.Object"
+    ; rdfs:comment "the class of Assembler objects"
+    .
+
+#
+# Assembler model base type.
+#
+
+ja:Model a rdfs:Class
+    ; rdfs:subClassOf ja:Object
+    ; rdfs:subClassOf ja:Loadable
+	; rdfs:subClassOf ja:ContentItem
+    ; rdfs:label "Assembler.Model"
+    ; rdfs:comment "the class of Assembler model objects"
+    .
+
+#
+# every Model can be given a ReificationMode
+#
+
+ja:reificationMode a rdf:Property
+    ; rdfs:label "Assembler.reificationMode"
+    ; rdfs:comment "property to attach a ReificationMode to a Model"
+    ; rdfs:domain ja:Model
+    ; rdfs:range ja:ReificationMode
+    .
+
+#
+# every model can has some content specified by a Content object.
+#
+
+ja:content a rdf:Property
+    ; rdfs:label "Assembler.content"
+    ; rdfs:comment
+        """specifies that the subject Loadable is to be loaded with
+        all the contents specified by the object Content.
+        """
+    ; rdfs:domain ja:Loadable
+    ; rdfs:range ja:Content
+    .
+
+ja:initialContent a rdf:Property
+    ; rdfs:label "Assembler.initialContent"
+    ; rdfs:comment
+        """specifies that the subject Loadable is to be loaded with
+        all the contents specified by the object Load when it is first
+        created - ie not when eg an existing database model is opened.
+        """
+    ; rdfs:domain ja:Loadable
+    ; rdfs:range ja:Content
+    .
+
+ja:Loadable a rdfs:Class
+    ; rdfs:subClassOf ja:Object
+    ; rdfs:label "Assembler.Loadable"
+    ; rdfs:comment "a Loadable object, namely a Model or a Load"
+    .
+
+ja:HasFileManager a rdfs:Class
+	; rdfs:subClassOf ja:Object
+	; rdfs:label "Assembler.HasFileManager"
+	; rdfs:comment "an object that may have a fileManager property"
+	.
+
+ja:Content a rdfs:Class
+    ; rdfs:subClassOf ja:HasFileManager
+    ; rdfs:label "Assembler.Content"
+    ; rdfs:comment "content to be loaded into a Loadable"
+    .
+
+#
+# there are two kinds of Load. A ContentGroup collects together
+# other Loads, specified with ja:content.
+#
+
+ja:ContentGroup a rdfs:Class
+    ; rdfs:subClassOf ja:Content, ja:Loadable
+    .
+
+#
+# the other kind of Content is a ContentItem, which is either a
+# URL or a literal string with an optional language name.
+#
+
+ja:ContentItem a rdfs:Class
+    ; rdfs:subClassOf ja:Content
+    ; rdfs:subClassOf [owl:onProperty ja:fileManager; owl:maxCardinality 1]
+    ; rdfs:label "Assembler.ContentItem"
+    ; rdfs:comment "a single loadable model item"
+    .
+
+ja:externalContent a rdf:Property
+    ; rdfs:label "Assembler.externalContent"
+    ; rdfs:comment
+        """the subject Load is to be loaded from
+        the object URL"""
+    ; rdfs:domain ja:ContentItem
+    .
+
+ja:literalContent a rdf:Property
+    ; rdfs:label "Assembler.literalContent"
+    ; rdfs:comment
+        """the subject Load is to be loaded from the
+        object String"""
+    ; rdfs:domain ja:ContentItem
+    .
+
+ja:contentEncoding a rdf:Property
+    ; rdfs:label "Assembler.contentEncoding"
+    ; rdfs:comment
+        """specifies the name of the encoding language (N3, RDF/XML, etc)
+        for the associated file or string. Overrides any guess that might
+        otherwise be made. Guesses when omitted: starts with '<' means
+        RDF/XML, starts with '@' or '#' means N3, otherwise NTRIPLE"""
+    ; rdfs:domain ja:ContentItem
+    .
+
+#
+# default models [typically memory models]
+#
+
+ja:DefaultModel a rdfs:Class
+    ; rdfs:subClassOf ja:Model
+    ; rdfs:label "Assembler.DefaultModel"
+    ; rdfs:comment "the default model description"
+    .
+
+#
+# memory models
+#
+
+ja:MemoryModel a rdfs:Class
+    ; rdfs:subClassOf ja:Model
+    ; rdfs:label "Assembler.MemoryModel"
+    ; rdfs:comment "description of a memory model"
+    .
+
+#
+# named models [for file & database models]
+#
+
+ja:NamedModel a rdfs:Class
+    ; rdfs:subClassOf ja:Model
+    ; rdfs:subClassOf [owl:onProperty ja:modelName; owl:cardinality 1]
+    ; rdfs:label "Assembler.NamedModel"
+    ; rdfs:comment
+        """superclass for FileModel,
+        accepting the modelName property"""
+    .
+
+ja:modelName a rdf:Property
+    ; rdfs:label "Assembler.modelName"
+    ; rdfs:comment
+        """property specifying that the subject NamedModel shall
+        have the object String as its name. If the object is a URI
+        node, it has the spelling of the URI as its name."""
+    ; rdfs:domain ja:NamedModel
+    .
+
+#
+# file models
+#
+
+ja:FileModel a rdfs:Class
+    ; rdfs:subClassOf ja:NamedModel
+    ; rdfs:subClassOf [owl:onProperty ja:fileEncoding; owl:maxCardinality 1]
+    ; rdfs:subClassOf [owl:onProperty ja:directory; owl:maxCardinality 1]
+    ; rdfs:subClassOf [owl:onProperty ja:mapName; owl:maxCardinality 1]
+    ; rdfs:label "Assembler.FileModel"
+    ; rdfs:comment
+        """a FileModel is a file-backed NamedModel implemented as a
+        MemoryModel with the name given by the modelName and in the
+        directory given by fromDirectory."""
+    .
+
+ja:directory a rdf:Property
+    ; rdfs:label "directory"
+    ; rdfs:comment
+        """property of a FileModel giving the directory in which the
+        modelName is to be resolved. Query: is the current behaviour
+        of FileModels to be preserved?"""
+    ; rdfs:domain ja:FileModel
+    .
+
+ja:mapName a rdf:Property
+	; rdfs:label "Assembler.mapName"
+	; rdfs:domain ja:FileModel
+	; rdfs:comment
+		"""property of a FileModel specifying whether the modelName should
+		be escaped by replacing _, /, and : by __, _S, _C before being used,
+		to allow URIs as model names without implying nested directory
+		strucure. If ommitted or not ja:true, no translation is done."""
+	.
+
+ja:fileEncoding a rdf:Property
+    ; rdfs:domain ja:FileModel
+    ; rdfs:label "Assemble.fileEncoding"
+    ; rdfs:comment """FileModel property to give language encoding"""
+    .
+
+ja:Connectable a rdfs:Class
+    ; rdfs:subClassOf ja:Object
+    ; rdfs:label "Assembler.Connectable"
+    .
+	
+ja:ModelSource a rdfs:Class
+    ; rdfs:subClassOf ja:Connectable
+    ; rdfs:label "Assembler.ModelSource"
+    ; rdfs:comment "Source of models by name for an OntModelSpec"
+    .
+#
+# inference models
+#
+
+ja:InfModel a rdfs:Class
+    ; rdfs:subClassOf ja:Model
+    ; rdfs:subClassOf [owl:onProperty ja:baseModel; owl:maxCardinality 1]
+    ; rdfs:subClassOf [owl:onProperty ja:reasoner; owl:maxCardinality 1]
+    ; rdfs:label "Assembler.InfModel"
+    ; rdfs:comment
+        """class of inference models given by applying a reasoner to a base model
+        (which might be implictly the a default model)"""
+    .
+
+ja:reasoner a rdf:Property
+    ; rdfs:label "Assembler.reasoner"
+    ; rdfs:comment
+        """property of an inference model that specifies the reasoner
+        to use."""
+    ; rdfs:domain ja:InfModel
+    ; rdfs:range ja:ReasonerFactory
+    .
+
+ja:baseModel a rdf:Property
+    ; rdfs:label "Assembler.baseModel"
+    ; rdfs:comment
+        """optional property of an inference model that specifies the
+        base model over which inference is done."""
+    ; rdfs:domain ja:InfModel
+    ; rdfs:range ja:Model
+    .
+
+#
+# reasoner factories; see also properties of HasRules.
+#
+
+ja:ReasonerFactory a rdfs:Class
+    ; rdfs:subClassOf ja:HasRules
+    ; rdfs:subClassOf [owl:onProperty ja:ReasonerURL; owl:maxCardinality 1]
+    ; rdfs:label "Assembler.ReasonerFactory"
+    ; rdfs:comment
+        """class of ReasonerFactory objects, allowing arbitrary reasoner
+        properties to be attached."""
+    .
+
+ja:reasonerURL a rdf:Property
+    ; rdfs:label "Assembler.reasonerURL"
+    ; rdfs:comment
+        """property of a ReasonerFactory specifying the URL of the reasoner
+        in the reasoner registry; only one such property per reasoner."""
+    ; rdfs:domain ja:ReasonerFactory
+    .
+
+ja:reasonerClass a rdf:Property
+    ; rdfs:label "Assembler.reasonerClass"
+    ; rdfs:comment "property of a ReasonerFactory giving the class name"
+    ; rdfs:domain ja:ReasonerFactory
+    .
+
+ja:reasonerFactory a rdf:Property
+	; rdfs:label "Assembler.reasonerFactory"
+	; rdfs:comment "property of an OntModelSpec giving the reasoner for the spec"
+	; rdfs:range ja:ReasonerFactory
+	; rdfs:domain ja:OntModelSpec
+	.
+
+ja:schema a rdf:Property
+    ; rdfs:label "Assembler.schemaURL"
+    ; rdfs:comment
+        """property of a Reasoner specifying schema Models to be loaded.
+        Multiple schemas can be given; they are unioned
+        together before being supplied to the reasoner."""
+    ; rdfs:domain ja:ReasonerFactory
+    ; rdfs:range ja:Model
+    .
+
+#
+# rulesets
+#
+
+ja:HasRules a rdfs:Class
+    ; rdfs:subClassOf ja:Object
+    ; rdfs:label "Assembler.HasRules"
+    ; rdfs:comment
+        """the class of things that can have rules attached,
+        viz, Reasoners and RuleSets."""
+    .
+
+ja:RuleSet a rdfs:Class
+    ; rdfs:subClassOf ja:HasRules
+    ; rdfs:label "Assembler.RuleSet"
+    ; rdfs:comment
+        """class of sets of rules (for a Jena rule engine) specified
+        within the Assembler file. A RuleSet may refer to rules by
+        their URL, by their containing RuleSets, or by including them
+        as string literals."""
+    .
+
+ja:rules a rdf:Property
+    ; rdfs:label "Assembler.rules"
+    ; rdfs:comment
+        """property of a GenericRuleReasoner or RuleSet which specifies
+        rules given witin rulesets within the Assembler RDF. Multiple
+        such properties can be given."""
+    ; rdfs:domain ja:HasRules
+    ; rdfs:range ja:RuleSet
+    .
+
+ja:rulesFrom a rdf:Property
+    ; rdfs:label "Assembler.rulesFrom"
+    ; rdfs:comment
+        """property of a RuleSet which identifies rules by their URL.
+        The target resource is loaded and parsed as a rule string."""
+    ; rdfs:domain ja:HasRules
+    .
+
+ja:rule a rdf:Property
+    ; rdfs:label "Assembler.rule"
+    ; rdfs:comment
+        """property of a RuleSet specifying a rule (or rules) as a
+        literal string."""
+    ; rdfs:domain ja:HasRules
+    .
+
+#
+#
+#
+
+ja:LocationMapper a rdfs:Class
+    ; rdfs:subClassOf ja:Object
+    ; rdfs:subClassOf [owl:onProperty lm:mapping; owl:maxCardinality 1]
+    ; rdfs:label "Assembler.LocationMapper"
+    ; rdfs:comment "class of LocationMapper specificiations"
+    .
+
+lm:mapping a rdf:Property
+    ; rdfs:domain ja:LocationMapper
+    ; rdfs:label "LocationMapper.mapping"
+    ; rdfs:comment
+        """LocationMapper property which identifies location mappings and
+        which we have stolen to identify ja:LocationMapper specifications."""
+    .
+
+ja:FileManager a rdfs:Class
+    ; rdfs:subClassOf ja:Object
+    ; rdfs:subClassOf [owl:onProperty ja:locationMapper; owl:maxCardinality 1]
+    ; rdfs:label "Assembler.FileManager"
+    ; rdfs:comment "class of FileManager specifications"
+    .
+
+ja:locationMapper a rdf:Property
+    ; rdfs:domain ja:FileManager
+    ; rdfs:range ja:LocationMapper
+    ; rdfs:label "Assembler.locationMapper"
+    ; rdfs:comment "FileManager property which identifies its LocationMapper."
+    .
+
+ja:DocumentManager a rdfs:Class
+	; rdfs:subClassOf ja:HasFileManager
+    ; rdfs:subClassOf [owl:onProperty ja:fileManager; owl:maxCardinality 1]
+    ; rdfs:subClassOf [owl:onProperty ja:policyPath; owl:maxCardinality 1]
+    ; rdfs:label "Assembler.DocumentManager"
+    ; rdfs:comment "class of OntDocumentManager specificiations"
+    .
+
+ja:fileManager a rdf:Property
+    ; rdfs:domain ja:HasFileManager
+    ; rdfs:range ja:FileManager
+    ; rdfs:label "Assembler.fileManager"
+    ; rdfs:comment
+        """property of a DocumentManager whose value is its FileManager"""
+    .
+
+ja:policyPath a rdf:Property
+    ; rdfs:domain ja:DocumentManager
+    ; rdfs:label "Assembler.policyPath"
+    ; rdfs:comment
+        """property of a DocumentManager whose value is its metadata policy path"""
+    .
+
+#
+# ontology models. every ontology model is an inference model.
+#
+
+ja:OntModel a rdfs:Class
+    ; rdfs:subClassOf ja:InfModel, ja:UnionModel
+    ; rdfs:label "Assembler.OntModel"
+    ; rdfs:comment "the class of OntModel specifications"
+    .
+
+ja:OntModelSpec a rdfs:Class
+    ; rdfs:subClassOf ja:Object
+    ; rdfs:subClassOf [owl:onProperty ja:ontLanguage; owl:maxCardinality 1]
+    ; rdfs:subClassOf [owl:onProperty ja:documentManager; owl:maxCardinality 1]
+    ; rdfs:subClassOf [owl:onProperty ja:importSource; owl:maxCardinality 1]
+    ; rdfs:subClassOf [owl:onProperty ja:reasonerFactory; owl:maxCardinality 1]
+    ; rdfs:subClassOf [owl:onProperty ja:like; owl:maxCardinality 1]
+    ; rdfs:label "Assembler.OntModelSpec"
+    ; rdfs:comment "class of OntModelSpec objects for OntModel construction"
+    .
+
+ja:ontModelSpec a rdf:Property
+    ; rdfs:label "Assembler.ontModelSpec"
+    ; rdfs:comment "property of an OntModel giving its OntModelSpec"
+    ; rdfs:domain ja:OntModel
+    ; rdfs:range ja:OntModelSpec
+    .
+
+ja:likeBuiltinSpec a rdf:Property
+    ; rdfs:label "Assembler.likeBuiltinSpec"
+    ; rdfs:comment "property of an OntModelSpec giving an internal spec it's like"
+    ; rdfs:domain ja:OntModelSpec
+    .
+
+ja:ontLanguage a rdf:Property
+    ; rdfs:label "Assembler.ontLanguage"
+    ; rdfs:comment
+        """property of an OntModelSpec that specifies the ontology
+        language."""
+    ; rdfs:domain ja:OntModelSpec
+    .
+
+ja:documentManager a rdf:Property
+    ; rdfs:label "Assembler.docManager"
+    ; rdfs:comment
+        """property of an OntModelSpec that specifies the
+        document manager of the model. If omitted, the model has
+        the default document manager."""
+    ; rdfs:domain ja:OntModelSpec
+    .
+
+ja:importSource a rdf:Property
+    ; rdfs:label "Assembler.importSource"
+    ; rdfs:comment
+        """property of an OntModelSpec that specifies the importSource
+        of the model. If omitted, the model has a default MemoryModelMaker. """
+    ; rdfs:domain ja:OntModelSpec
+    .
+
+#
+# union models
+#
+
+ja:UnionModel a rdfs:Class
+    ; rdfs:subClassOf ja:Model
+    ; rdfs:subClassOf [owl:onProperty ja:rootModel; owl:maxCardinality 1]
+    ; rdfs:label "Assembler.Union"
+    ; rdfs:comment "class of Union models"
+    .
+
+ja:subModel a rdf:Property
+    ; rdfs:label "Assembler.subModel"
+    ; rdfs:comment
+        """property of a UnionModel that specifies one of its non-root sub-models.
+        Arbitrarily many sub-models can be supplied."""
+    ; rdfs:domain ja:UnionModel
+    ; rdfs:range ja:Model
+    .
+
+ja:rootModel a rdf:Property
+    ; rdfs:domain ja:UnionModel
+    ; rdfs:range ja:Model
+    ; rdfs:label "Assembler.rootModel"
+    ; rdfs:comment
+        """property of a UnionModel that specifies its mutable base model"""
+    .
+
+#
+# reification modes
+#
+
+ja:ReificationMode a rdfs:Class
+    ; rdfs:label "Assembler.ReificationMode"
+    ; rdfs:comment "the class of reification modes"
+    .
+
+ja:standard a ja:ReificationMode
+    ; rdfs:label "Standard"
+    ; rdfs:comment "reification mode Standard - all reification triples visible"
+    .
+
+ja:minimal a ja:ReificationMode
+    ; rdfs:label "Minimal"
+    ; rdfs:comment "reification mode Minimal - no reification triples visible"
+    .
+
+ja:convenient a ja:ReificationMode
+    ; rdfs:label "Convenient"
+    ; rdfs:comment "reification mode Convenient"
+    .
+
+#
+# prefix mappings
+#
+
+ja:PrefixMapping a rdfs:Class
+    ; rdfs:subClassOf ja:Object
+    ; rdfs:label "Assembler.PrefixMapping"
+    ; rdfs:comment
+        """class encoding a Jena prefix mapping"""
+    .
+
+ja:prefixMapping a rdf:Property
+    ; rdfs:label "Assembler.prefixMapping"
+    ; rdfs:comment
+        """property used to attach a PrefixMapping to a Model"""
+    ; rdfs:domain ja:Model
+    ; rdfs:range ja:PrefixMapping
+    .
+
+ja:includes a rdf:Property
+    ; rdfs:label "Assembler.includes"
+    ; rdfs:comment """property to allow one prefix mapping to include another"""
+    ; rdfs:domain ja:PrefixMapping
+    ; rdfs:range ja:PrefixMapping
+    .
+
+ja:SinglePrefixMapping a rdfs:Class
+    ; rdfs:subClassOf ja:PrefixMapping
+    ; rdfs:subClassOf [owl:onProperty ja:prefix; owl:cardinality 1]
+    ; rdfs:subClassOf [owl:onProperty ja:namespace; owl:cardinality 1]
+    ; rdfs:label "Assembler.SinglePrefixMapping"
+    ; rdfs:comment """class encoding a single prefix mapping maplet"""
+    .
+
+ja:prefix a rdf:Property
+    ; rdfs:label "Assembler.prefix"
+    ; rdfs:comment """property for specifing the prefix of a SimplePrefixMapping"""
+    ; rdfs:domain ja:SinglePrefixMapping
+    .
+
+ja:namespace a rdf:Property
+    ; rdfs:label "Assembler.namespace"
+    ; rdfs:comment """property for specifying the URL of a SimplePrefixMapping"""
+    ; rdfs:domain ja:SinglePrefixMapping
+    .
+
+# Local Variables:
+# tab-width: 4
+# indent-tabs-mode: nil
+# End: