You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by cl...@apache.org on 2015/05/10 15:03:30 UTC

[01/50] [abbrv] jena git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/jena

Repository: jena
Updated Branches:
  refs/heads/add-contract-tests 5bc9578fc -> b01950b90


Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/jena


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/84d06159
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/84d06159
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/84d06159

Branch: refs/heads/add-contract-tests
Commit: 84d06159088198c727159c6ca53dce80674e8c50
Parents: cfd8706 fe98924
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Apr 30 22:13:46 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Apr 30 22:13:46 2015 +0100

----------------------------------------------------------------------
 .../arq/querybuilder/handlers/WhereHandler.java |  3 ++
 .../jena/arq/AbstractRegexpBasedTest.java       |  1 +
 .../querybuilder/handlers/WhereHandlerTest.java | 33 +++++++++++++-------
 3 files changed, 26 insertions(+), 11 deletions(-)
----------------------------------------------------------------------



[50/50] [abbrv] jena git commit: Merge branch 'add-contract-tests' of https://git-wip-us.apache.org/repos/asf/jena into add-contract-tests

Posted by cl...@apache.org.
Merge branch 'add-contract-tests' of https://git-wip-us.apache.org/repos/asf/jena into add-contract-tests

Conflicts:
	jena-core/pom.xml
	jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
	jena-core/src/test/java/org/apache/jena/graph/impl/TestCollectionGraph.java
	jena-core/src/test/java/org/apache/jena/testing_framework/ContractTemplate.java
	jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestException.java


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/b01950b9
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/b01950b9
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/b01950b9

Branch: refs/heads/add-contract-tests
Commit: b01950b9096113761986c4a604103b142e06f342
Parents: 335a761 5bc9578
Author: Claude Warren <cl...@apache.org>
Authored: Sun May 10 14:02:17 2015 +0100
Committer: Claude Warren <cl...@apache.org>
Committed: Sun May 10 14:02:17 2015 +0100

----------------------------------------------------------------------
 jena-core/pom.xml                               | 425 +++++++++----------
 .../apache/jena/graph/GraphContractTest.java    |   7 +
 2 files changed, 204 insertions(+), 228 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/b01950b9/jena-core/pom.xml
----------------------------------------------------------------------
diff --cc jena-core/pom.xml
index d64e195,6696660..ab2be30
--- a/jena-core/pom.xml
+++ b/jena-core/pom.xml
@@@ -1,232 -1,200 +1,201 @@@
  <?xml version="1.0" encoding="utf-8"?>
- <!--
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
- 
-        http://www.apache.org/licenses/LICENSE-2.0
- 
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
- -->
- 
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-   <modelVersion>4.0.0</modelVersion>
-   <artifactId>jena-core</artifactId>
-   <packaging>jar</packaging>
-   <name>Apache Jena - Core</name>
-   <version>3.0.0-SNAPSHOT</version>
- 
-   <parent>
-     <groupId>org.apache.jena</groupId>
-     <artifactId>jena-parent</artifactId>
-     <version>14-SNAPSHOT</version>
-     <relativePath>../jena-parent</relativePath>
-   </parent>
- 
-   <description>Jena is a Java framework for building Semantic Web applications. It provides a programmatic environment for RDF, RDFS and OWL, SPARQL and includes a rule-based inference engine.</description>
- 
-   <properties>
-     <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>
- 
-   <dependencies>
- 
-     <dependency>
-       <groupId>org.apache.jena</groupId>
-       <artifactId>jena-base</artifactId>
-       <version>3.0.0-SNAPSHOT</version>
-     </dependency>
- 
-     <dependency>
-       <groupId>org.apache.jena</groupId>
-       <artifactId>jena-base</artifactId>
-       <version>3.0.0-SNAPSHOT</version>
-       <scope>test</scope>
-       <classifier>tests</classifier>
-     </dependency>
-     
-     <dependency>
-        <groupId>org.apache.jena</groupId>
-        <artifactId>jena-iri</artifactId>
-        <version>3.0.0-SNAPSHOT</version>
-     </dependency>
- 
-     <dependency>
-       <groupId>xerces</groupId>
-       <artifactId>xercesImpl</artifactId>
-     </dependency>
-     
-     <dependency>
-       <groupId>org.slf4j</groupId>
-       <artifactId>slf4j-api</artifactId>
-     </dependency>   
- 
-     <dependency>
-       <groupId>junit</groupId>
-       <artifactId>junit</artifactId>
-       <scope>test</scope>
-     </dependency>
- 
- 	<dependency>
- 		<groupId>org.xenei</groupId>
- 		<artifactId>junit-contracts</artifactId>
- 		<version>0.1.1</version>
- 		<scope>test</scope>
- 	</dependency>
- 	
- 	<dependency>
- 		<groupId>org.mockito</groupId>
- 		<artifactId>mockito-all</artifactId>
- 		<version>1.9.5</version>
- 		<scope>test</scope>
- 	</dependency>
- 
-   </dependencies>
- 
-   <build>
-   
-     <resources>
- 
-       <!-- Legacy -->
-       <resource>
- 	<directory>etc</directory>
-         <targetPath>etc</targetPath>
-         <filtering>false</filtering>
-       </resource>
- 
-       <resource>
-         <filtering>false</filtering>
-         <directory>src/main/resources</directory>
-       </resource>
- 
-       <resource>
-         <directory>src/main/resources</directory>
-         <includes>
-           <include>org/apache/jena/jena-properties.xml</include>
-         </includes>
-         <filtering>true</filtering>
-       </resource>
- 
-     </resources>
-   
-     <plugins>
- 
-       <plugin>
-         <groupId>org.apache.maven.plugins</groupId>
-         <artifactId>maven-compiler-plugin</artifactId>
-       </plugin>
- 
-       <plugin>
-         <groupId>org.apache.maven.plugins</groupId>
-         <artifactId>maven-surefire-plugin</artifactId>
-         <configuration>
-           <systemProperties>
-             <property>
-               <name>log4j.configuration</name>
-               <value>jena-test-log4j.properties</value>
-             </property>
-           </systemProperties>
-           <includes>
-             <include>org/apache/jena/test/TestPackage.java</include>
++
+ <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor 
+ 	license agreements. See the NOTICE file distributed with this work for additional 
+ 	information regarding copyright ownership. The ASF licenses this file to 
+ 	You under the Apache License, Version 2.0 (the "License"); you may not use 
+ 	this file except in compliance with the License. You may obtain a copy of 
+ 	the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required 
+ 	by applicable law or agreed to in writing, software distributed under the 
+ 	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
+ 	OF ANY KIND, either express or implied. See the License for the specific 
+ 	language governing permissions and limitations under the License. -->
+ 
+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ 	<modelVersion>4.0.0</modelVersion>
+ 	<artifactId>jena-core</artifactId>
+ 	<packaging>jar</packaging>
+ 	<name>Apache Jena - Core</name>
+ 	<version>3.0.0-SNAPSHOT</version>
+ 
+ 	<parent>
+ 		<groupId>org.apache.jena</groupId>
+ 		<artifactId>jena-parent</artifactId>
+ 		<version>14-SNAPSHOT</version>
+ 		<relativePath>../jena-parent</relativePath>
+ 	</parent>
+ 
+ 	<description>Jena is a Java framework for building Semantic Web applications. It provides a programmatic environment for RDF, RDFS and OWL, SPARQL and includes a rule-based inference engine.</description>
+ 
+ 	<properties>
+ 		<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>
+ 
+ 	<dependencies>
+ 
+ 		<dependency>
+ 			<groupId>junit</groupId>
+ 			<artifactId>junit</artifactId>
+ 			<scope>test</scope>
+ 		</dependency>
+ 
+ 		<dependency>
+ 			<groupId>org.slf4j</groupId>
+ 			<artifactId>slf4j-api</artifactId>
+ 		</dependency>
+ 
+ 		<dependency>
+ 			<groupId>org.apache.jena</groupId>
+ 			<artifactId>jena-iri</artifactId>
+ 			<version>3.0.0-SNAPSHOT</version>
+ 		</dependency>
+ 
+ 		<dependency>
+ 			<groupId>xerces</groupId>
+ 			<artifactId>xercesImpl</artifactId>
+ 		</dependency>
+ 
+ 		<dependency>
+ 			<groupId>org.xenei</groupId>
+ 			<artifactId>junit-contracts</artifactId>
+ 			<version>0.0.5</version>
+ 			<scope>test</scope>
+ 		</dependency>
+ 		
+ 		<dependency>
+ 			<groupId>org.mockito</groupId>
+ 			<artifactId>mockito-all</artifactId>
+ 			<version>1.9.5</version>
+ 			<scope>test</scope>
+ 		</dependency>
+ 
+ 	</dependencies>
+ 
+ 	<build>
+ 
+ 		<resources>
+ 
+ 			<!-- Legacy -->
+ 			<resource>
+ 				<directory>etc</directory>
+ 				<targetPath>etc</targetPath>
+ 				<filtering>false</filtering>
+ 			</resource>
+ 
+ 			<resource>
+ 				<filtering>false</filtering>
+ 				<directory>src/main/resources</directory>
+ 			</resource>
+ 
+ 			<resource>
+ 				<directory>src/main/resources</directory>
+ 				<includes>
+ 					<include>org/apache/jena/jena-properties.xml</include>
+ 				</includes>
+ 				<filtering>true</filtering>
+ 			</resource>
+ 
+ 		</resources>
+ 
+ 		<plugins>
+ 
+ 			<plugin>
+ 				<groupId>org.apache.maven.plugins</groupId>
+ 				<artifactId>maven-compiler-plugin</artifactId>
+ 			</plugin>
+ 
+ 			<plugin>
+ 				<groupId>org.apache.maven.plugins</groupId>
+ 				<artifactId>maven-surefire-plugin</artifactId>
+ 				<configuration>
+ 					<systemProperties>
+ 						<property>
+ 							<name>log4j.configuration</name>
+ 							<value>jena-test-log4j.properties</value>
+ 						</property>
+ 					</systemProperties>
+ 					<includes>
+ 						<include>com/hp/hpl/jena/test/TestPackage.java</include>
  						<include>**/*_CS.java</include>
-           </includes>
-         </configuration>
-       </plugin>
- 
-       <plugin>
-         <groupId>org.apache.maven.plugins</groupId>
-         <artifactId>maven-source-plugin</artifactId>
-         <executions>
-           <execution>
-             <id>attach-sources</id>
-             <phase>package</phase>
-             <goals>
- 	      <goal>jar-no-fork</goal>
-             </goals>
-           </execution>
-           <execution>
-             <id>attach-sources-test</id>
-             <phase>package</phase>
-             <goals>
-               <goal>test-jar-no-fork</goal>
-             </goals>
-           </execution>
-         </executions>
-       </plugin>
- 
-       <plugin>
-         <groupId>org.apache.maven.plugins</groupId>
-         <artifactId>maven-javadoc-plugin</artifactId>
-         <configuration>
-           <author>true</author>
-           <version>true</version>
-           <show>public</show>
-           <quiet>true</quiet>
-           <encoding>UTF-8</encoding>
-           <windowtitle>Apache Jena</windowtitle>
-           <doctitle>Apache Jena Core ${project.version}</doctitle>
-           <bottom>Licenced under the Apache License, Version 2.0</bottom>
-           <excludePackageNames>org.apache.jena.shared.*:*.impl:org.apache.jena.assembler.assemblers:*.exceptions:*.regexptrees:org.apache.jena.mem:org.apache.jena.mem.*:org.apache.jena.n3:org.apache.jena.n3.*:org.apache.jena.rdf.arp.*:org.apache.jena.util.*:jena.cmdline:jena.util</excludePackageNames>
-           <groups>
-             <group>
-               <title>API - Application Programming Interface</title>
-               <packages>org.apache.jena.db:org.apache.jena.rdf.model:org.apache.jena.rdf.listeners:org.apache.jena.rdf.arp:org.apache.jena.rdf.arp.lang:org.apache.jena.datatypes:org.apache.jena.datatypes.xsd:org.apache.jena.rdql:org.apache.jena.shared:org.apache.jena.vocabulary:org.apache.jena.xmloutput:org.apache.jena.ontology:org.apache.jena.ontology.daml:org.apache.jena.reasoner:org.apache.jena.reasoner.rulesys:org.apache.jena.reasoner.rulesys.builtins:org.apache.jena.reasoner.transitiveReasoner:org.apache.jena.reasoner.dig</packages>
-             </group>
-             <group>
-               <title>SPI - System Programming Interface</title>
-               <packages>org.apache.jena.enhanced:org.apache.jena.graph:org.apache.jena.graph.compose:org.apache.jena.graph.query:org.apache.jena.util:org.apache.jena.util.iterator</packages>
-             </group>
-             <group>
-               <title>Command line tools</title>
-               <packages>jena</packages>
-             </group>
-             <group>
-               <title>Other Packages</title>
-               <packages>org.apache.jena.assembler</packages>
-             </group>
-           </groups>
-         </configuration>
-       </plugin>
- 
-       <plugin>
-         <groupId>org.apache.maven.plugins</groupId>
-         <artifactId>maven-jar-plugin</artifactId>
-         <executions>
-           <execution>
-             <goals>
-               <goal>test-jar</goal>
-             </goals>
-           </execution>
-         </executions>
-       </plugin>
- 
-       <!--
-       <plugin>
-         <groupId>org.apache.maven.plugins</groupId>
-         <artifactId>maven-resources-plugin</artifactId>
-       </plugin>
-       <!- - see: http://maven.apache.org/guides/mini/guide-attached-tests.html - ->
-       <plugin>
-         <groupId>org.apache.maven.plugins</groupId>
-         <artifactId>maven-jar-plugin</artifactId>
-         <executions>
-           <execution>
-             <goals>
-               <goal>test-jar</goal>
-             </goals>
-           </execution>
-         </executions>
-       </plugin>
-       -->
-     </plugins>
-   </build>
+ 					</includes>
+ 				</configuration>
+ 			</plugin>
+ 
+ 			<plugin>
+ 				<groupId>org.apache.maven.plugins</groupId>
+ 				<artifactId>maven-source-plugin</artifactId>
+ 				<executions>
+ 					<execution>
+ 						<id>attach-sources</id>
+ 						<phase>package</phase>
+ 						<goals>
+ 							<goal>jar-no-fork</goal>
+ 						</goals>
+ 					</execution>
+ 					<execution>
+ 						<id>attach-sources-test</id>
+ 						<phase>package</phase>
+ 						<goals>
+ 							<goal>test-jar-no-fork</goal>
+ 						</goals>
+ 					</execution>
+ 				</executions>
+ 			</plugin>
+ 
+ 			<plugin>
+ 				<groupId>org.apache.maven.plugins</groupId>
+ 				<artifactId>maven-javadoc-plugin</artifactId>
+ 				<configuration>
+ 					<author>true</author>
+ 					<version>true</version>
+ 					<show>public</show>
+ 					<quiet>true</quiet>
+ 					<encoding>UTF-8</encoding>
+ 					<windowtitle>Apache Jena</windowtitle>
+ 					<doctitle>Apache Jena Core ${project.version}</doctitle>
+ 					<bottom>Licenced under the Apache License, Version 2.0</bottom>
+ 					<excludePackageNames>com.hp.hpl.jena.shared.*:*.impl:com.hp.hpl.jena.assembler.assemblers:*.exceptions:*.regexptrees:com.hp.hpl.jena.mem:com.hp.hpl.jena.mem.*:com.hp.hpl.jena.n3:com.hp.hpl.jena.n3.*:com.hp.hpl.jena.rdf.arp.*:com.hp.hpl.jena.util.*:jena.cmdline:jena.util</excludePackageNames>
+ 					<groups>
+ 						<group>
+ 							<title>API - Application Programming Interface</title>
+ 							<packages>com.hp.hpl.jena.db:com.hp.hpl.jena.rdf.model:com.hp.hpl.jena.rdf.listeners:com.hp.hpl.jena.rdf.arp:com.hp.hpl.jena.rdf.arp.lang:com.hp.hpl.jena.datatypes:com.hp.hpl.jena.datatypes.xsd:com.hp.hpl.jena.rdql:com.hp.hpl.jena.shared:com.hp.hpl.jena.vocabulary:com.hp.hpl.jena.xmloutput:com.hp.hpl.jena.ontology:com.hp.hpl.jena.ontology.daml:com.hp.hpl.jena.reasoner:com.hp.hpl.jena.reasoner.rulesys:com.hp.hpl.jena.reasoner.rulesys.builtins:com.hp.hpl.jena.reasoner.transitiveReasoner:com.hp.hpl.jena.reasoner.dig</packages>
+ 						</group>
+ 						<group>
+ 							<title>SPI - System Programming Interface</title>
+ 							<packages>com.hp.hpl.jena.enhanced:com.hp.hpl.jena.graph:com.hp.hpl.jena.graph.compose:com.hp.hpl.jena.graph.query:com.hp.hpl.jena.util:com.hp.hpl.jena.util.iterator</packages>
+ 						</group>
+ 						<group>
+ 							<title>Command line tools</title>
+ 							<packages>jena</packages>
+ 						</group>
+ 						<group>
+ 							<title>Other Packages</title>
+ 							<packages>com.hp.hpl.jena.assembler</packages>
+ 						</group>
+ 					</groups>
+ 				</configuration>
+ 			</plugin>
+ 
+ 			<plugin>
+ 				<groupId>org.apache.maven.plugins</groupId>
+ 				<artifactId>maven-jar-plugin</artifactId>
+ 				<executions>
+ 					<execution>
+ 						<goals>
+ 							<goal>test-jar</goal>
+ 						</goals>
+ 					</execution>
+ 				</executions>
+ 			</plugin>
+ 
+ 			<!-- <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> 
+ 				</plugin> <!- - see: http://maven.apache.org/guides/mini/guide-attached-tests.html 
+ 				- -> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> 
+ 				<executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> 
+ 				</executions> </plugin> -->
+ 		</plugins>
+ 	</build>
  
  </project>

http://git-wip-us.apache.org/repos/asf/jena/blob/b01950b9/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
----------------------------------------------------------------------
diff --cc jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
index 589f095,55ad955..16bbc26
--- a/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
@@@ -1453,10 -1452,10 +1453,17 @@@ public class GraphContractTest<T extend
  	//
  
  	// used to find the object set from the returned set for literal testing
++<<<<<<< HEAD
 +	private static final Function<Triple, Node> getObject = new Function<Triple, Node>() {
 +		@Override
 +		public Node apply(Triple t) {
 +			return t.getObject();
++=======
+ 	private static final Map1<Triple, Node> getObject = new Map1<Triple, Node>() {
+ 		@Override
+ 		public Node map1(Triple o) {
+ 			return o.getObject();
++>>>>>>> 5bc9578fc31fe58017b80d1a15e41b593ee31074
  		}
  	};
  


[39/50] [abbrv] jena git commit: Typo

Posted by cl...@apache.org.
Typo

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/1119bf88
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/1119bf88
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/1119bf88

Branch: refs/heads/add-contract-tests
Commit: 1119bf887fe65849df8880b94dd4eb772a2d09a0
Parents: e15c224
Author: Andy Seaborne <an...@apache.org>
Authored: Fri May 8 14:05:10 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri May 8 14:05:10 2015 +0100

----------------------------------------------------------------------
 jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/1119bf88/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java
index 09a4467..d580905 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java
@@ -72,7 +72,7 @@ public class NodeUtils
         return true ;
     }
 
-    /** Get lexical for of anythign that looks like a string literal.
+    /** Get lexical for of anything that looks like a string literal.
      * Returns the string value of plain literal (simple literal
      * or lang string) or XSD string.
      */


[46/50] [abbrv] jena git commit: added comments to contract test added additional string type tests.

Posted by cl...@apache.org.
added comments to contract test
added additional string type tests.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/d12bd572
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/d12bd572
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/d12bd572

Branch: refs/heads/add-contract-tests
Commit: d12bd572bef6320eb193c946bafafa47a0e489ab
Parents: b293ee8
Author: Claude Warren <cl...@apache.org>
Authored: Sun Apr 26 21:16:14 2015 +0100
Committer: Claude Warren <cl...@apache.org>
Committed: Sat May 9 15:27:40 2015 +0100

----------------------------------------------------------------------
 .../java/org/apache/jena/graph/GraphContractTest.java     | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/d12bd572/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java b/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
index cf79da5..a989bae 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
@@ -1486,12 +1486,14 @@ public class GraphContractTest<T extends Graph> extends
 				"'simple'xsd:string", true);
 		testLiteralTypingBasedFind("a P 'simple'", 1, "'simple'xsd:string",
 				"'simple'", true);
+		// ensure that adding identical strings one with type yields single result
+		// and that querying with or without type works
 		testLiteralTypingBasedFind("a P 'simple'xsd:string", 1,
 				"'simple'xsd:string", "'simple'xsd:string", false);
-//		testLiteralTypingBasedFind("a P 'simple'; a P 'simple'xsd:string", 2,
-//				"'simple'", "'simple' 'simple'xsd:string", true);
-//		testLiteralTypingBasedFind("a P 'simple'; a P 'simple'xsd:string", 2,
-//				"'simple'xsd:string", "'simple' 'simple'xsd:string", true);
+		testLiteralTypingBasedFind("a P 'simple'; a P 'simple'xsd:string", 1,
+				"'simple'", "'simple'xsd:string", true);
+		testLiteralTypingBasedFind("a P 'simple'; a P 'simple'xsd:string", 1,
+				"'simple'xsd:string", "'simple'", true);
 		testLiteralTypingBasedFind("a P 'simple'; a P 'simple'xsd:string", 1,
 				"'simple'", "'simple'", true);
 		testLiteralTypingBasedFind("a P 'simple'; a P 'simple'xsd:string", 1,


[14/50] [abbrv] jena git commit: Clean javadoc

Posted by cl...@apache.org.
Clean javadoc


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/8dbd7fa6
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/8dbd7fa6
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/8dbd7fa6

Branch: refs/heads/add-contract-tests
Commit: 8dbd7fa66eab844b4d0e43dc9122e51f713e1156
Parents: c334691
Author: Andy Seaborne <an...@apache.org>
Authored: Sat May 2 18:21:29 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat May 2 18:21:29 2015 +0100

----------------------------------------------------------------------
 jena-core/src/main/java/org/apache/jena/ontology/OntTools.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/8dbd7fa6/jena-core/src/main/java/org/apache/jena/ontology/OntTools.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/ontology/OntTools.java b/jena-core/src/main/java/org/apache/jena/ontology/OntTools.java
index bb3b2a3..1f80448 100755
--- a/jena-core/src/main/java/org/apache/jena/ontology/OntTools.java
+++ b/jena-core/src/main/java/org/apache/jena/ontology/OntTools.java
@@ -136,9 +136,9 @@ public class OntTools
      * such that every step on the path is accepted by the given filter. A path is a {@link List}
      * of RDF {@link Statement}s. The subject of the first statement in the list is <code>start</code>,
      * and the object of the last statement in the list is <code>end</code>.</p>
-     * <p>The <code>onPath</code> argument is a {@link Filter}, which accepts a statement and returns
+     * <p>The <code>onPath</code> argument is a {@link Predicate}, which accepts a statement and returns
      * true if the statement should be considered to be on the path. To search for an unconstrained
-     * path, pass {@link Filter#any} as an argument. To search for a path whose predicates match a
+     * path, pass <code>()->true</code> as an argument. To search for a path whose predicates match a
      * fixed restricted set of property names, pass an instance of {@link PredicatesFilter}.</p>
      * <p>If there is more than one path of minimal length from <code>start</code> to <code>end</code>,
      * this method returns an arbitrary one. The algorithm is blind breadth-first search,


[48/50] [abbrv] jena git commit: file graph test

Posted by cl...@apache.org.
file graph test


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/c004d800
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/c004d800
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/c004d800

Branch: refs/heads/add-contract-tests
Commit: c004d800faa51284954ec353f3266bff6cf7fe67
Parents: 608c2b4
Author: Claude Warren <cl...@apache.org>
Authored: Thu Apr 30 18:17:33 2015 +0100
Committer: Claude Warren <cl...@apache.org>
Committed: Sat May 9 16:15:32 2015 +0100

----------------------------------------------------------------------
 .../test/java/org/apache/jena/graph/impl/FileGraph_CS.java    | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/c004d800/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraph_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraph_CS.java b/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraph_CS.java
index b7bb6c3..1b4d321 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraph_CS.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraph_CS.java
@@ -30,8 +30,8 @@ import org.xenei.junit.contract.ContractImpl;
 import org.xenei.junit.contract.ContractSuite;
 import org.xenei.junit.contract.IProducer;
 
-@RunWith(ContractSuite.class)
-@ContractImpl(FileGraph.class)
+//@RunWith(ContractSuite.class)
+//@ContractImpl(FileGraph.class)
 public class FileGraph_CS {
 	 
 	protected IProducer<FileGraph> graphProducer;
@@ -52,10 +52,11 @@ public class FileGraph_CS {
 			File f;
 			try {
 				f = File.createTempFile("fgp", ".ttl" );
+				f.delete();
 			} catch (IOException e) {
 				throw new RuntimeException( "Can not create file", e );
 			}
-			return new FileGraph( f, false, true );
+			return new FileGraph( f, true, true );
 		}
 
 		@Override


[22/50] [abbrv] jena git commit: JENA-932: Look for fuseki:Service if no services list found.

Posted by cl...@apache.org.
JENA-932: Look for fuseki:Service if no services list found.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/22573774
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/22573774
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/22573774

Branch: refs/heads/add-contract-tests
Commit: 2257377413564fb381d1bb1ec8ca8c33c91ce69b
Parents: 547b50a
Author: Andy Seaborne <an...@apache.org>
Authored: Mon May 4 20:04:28 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon May 4 20:04:28 2015 +0100

----------------------------------------------------------------------
 .../java/org/apache/jena/fuseki/build/FusekiConfig.java   | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/22573774/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiConfig.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiConfig.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiConfig.java
index c940321..e7cf42b 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiConfig.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiConfig.java
@@ -124,7 +124,7 @@ public class FusekiConfig {
     private static List<DataAccessPoint> servicesAndDatasets(Model model) {
         // Old style configuration file : server to services.
         // ---- Services
-        ResultSet rs = FusekiLib.query("SELECT * { ?s fu:services [ list:member ?member ] }", model) ;
+        ResultSet rs = FusekiLib.query("SELECT * { ?s fu:services [ list:member ?service ] }", model) ;
         // If the old config.ttl file becomes just the server configuration file,
         // then don't warn here.
 //        if ( !rs.hasNext() )
@@ -132,12 +132,18 @@ public class FusekiConfig {
 
         List<DataAccessPoint> accessPoints = new ArrayList<>() ;
 
+        if ( ! rs.hasNext() )
+            // No "fu:services ( .... )" so try looking for services directly.
+            // This means Fuseki2, service configuration files (no server section) work for --conf. 
+            rs = FusekiLib.query("SELECT ?service { ?service a fu:Service }", model) ;
+
         for ( ; rs.hasNext() ; ) {
             QuerySolution soln = rs.next() ;
-            Resource svc = soln.getResource("member") ;
+            Resource svc = soln.getResource("service") ;
             DataAccessPoint acc = Builder.buildDataAccessPoint(svc) ;
             accessPoints.add(acc) ;
         }
+        
         return accessPoints ;
     }
     


[11/50] [abbrv] jena git commit: JENA-930: Remove deprecated Node statics - use NodeFactory instead.

Posted by cl...@apache.org.
JENA-930: Remove deprecated Node statics - use NodeFactory instead.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/b4b5c1d0
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/b4b5c1d0
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/b4b5c1d0

Branch: refs/heads/add-contract-tests
Commit: b4b5c1d072facc02a1274520aa6fc6fac7ae5566
Parents: 103776e
Author: Andy Seaborne <an...@apache.org>
Authored: Fri May 1 17:58:32 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri May 1 18:00:33 2015 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/jena/graph/Node.java   | 126 -------------------
 .../model/impl/SecuredLiteralImpl.java          |  15 ++-
 2 files changed, 7 insertions(+), 134 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/b4b5c1d0/jena-core/src/main/java/org/apache/jena/graph/Node.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/graph/Node.java b/jena-core/src/main/java/org/apache/jena/graph/Node.java
index 346e457..023e78a 100644
--- a/jena-core/src/main/java/org/apache/jena/graph/Node.java
+++ b/jena-core/src/main/java/org/apache/jena/graph/Node.java
@@ -18,7 +18,6 @@
 
 package org.apache.jena.graph;
 
-import org.apache.jena.datatypes.DatatypeFormatException ;
 import org.apache.jena.datatypes.RDFDatatype ;
 import org.apache.jena.graph.impl.LiteralLabel ;
 import org.apache.jena.rdf.model.AnonId ;
@@ -46,131 +45,6 @@ public abstract class Node {
     static final String RDFprefix = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
             
     /**
-     * @deprecated Use {@link NodeFactory#getType(String)} instead
-     */
-    @Deprecated
-    public static RDFDatatype getType( String s )
-        {
-            return NodeFactory.getType(s) ;
-        }
-    
-    /** make a blank node with a fresh anon id 
-     * @deprecated Use {@link NodeFactory#createAnon()} instead*/ 
-    @Deprecated
-    public static Node createAnon()
-        {
-            return NodeFactory.createAnon() ;
-        }
-    
-    /** make a blank node with the specified label 
-     * @deprecated Use {@link NodeFactory#createAnon(AnonId)} instead*/
-    @Deprecated
-    public static Node createAnon( AnonId id )
-        {
-            return NodeFactory.createAnon(id) ;
-        }
-        
-    /** make a literal node with the specified literal value 
-     * @deprecated Use {@link NodeFactory#createLiteral(LiteralLabel)} instead*/
-    @Deprecated
-    public static Node createLiteral( LiteralLabel lit )
-        {
-            return NodeFactory.createLiteral(lit) ;
-        }
-        
-    /** make a URI node with the specified URIref string 
-     * @deprecated Use {@link NodeFactory#createURI(String)} instead*/
-    @Deprecated
-    public static Node createURI( String uri )
-        {
-            return NodeFactory.createURI(uri) ;
-        }
-    
-    /** make a variable node with a given name 
-     * @deprecated Use {@link NodeFactory#createVariable(String)} instead*/
-    @Deprecated
-    public static Node createVariable( String name )
-        {
-            return NodeFactory.createVariable(name) ;
-        }
-        
-    /**
-     * @deprecated Use {@link NodeFactory#createLiteral(String)} instead
-     */
-    @Deprecated
-    public static Node createLiteral( String value )
-        {
-            return NodeFactory.createLiteral(value) ;
-        }
-    
-    /** make a literal with specified language and XMLishness.
-        _lit_ must *not* be null.
-        @param isXml If true then lit is exclusive canonical XML of type 
-            rdf:XMLLiteral, and no checking will be invoked.
-     * @deprecated Use {@link NodeFactory#createLiteral(String,String,boolean)} instead
-    */
-    @Deprecated
-    public static Node createLiteral( String lit, String lang, boolean isXml )
-        {
-            return NodeFactory.createLiteral(lit, lang, isXml) ;
-        }    
-        
-    /**
-     * Build a literal node from its lexical form. The
-     * lexical form will be parsed now and the value stored. If
-     * the form is not legal this will throw an exception.
-     * 
-     * @param lex the lexical form of the literal
-     * @param lang the optional language tag
-     * @param dtype the type of the literal, null for old style "plain" literals
-     * @throws DatatypeFormatException if lex is not a legal form of dtype
-     * @deprecated Use {@link NodeFactory#createLiteral(String,String,RDFDatatype)} instead
-     */
-    @Deprecated
-    public static Node createLiteral( String lex, String lang, RDFDatatype dtype ) 
-        throws DatatypeFormatException 
-        {
-            return NodeFactory.createLiteral(lex, lang, dtype) ;
-        }
-    
-    /**
-     * Build a typed literal node from its lexical form. The
-     * lexical form will be parsed now and the value stored. If
-     * the form is not legal this will throw an exception.
-     * 
-     * @param lex the lexical form of the literal
-     * @param dtype the type of the literal, null for old style "plain" literals
-     * @throws DatatypeFormatException if lex is not a legal form of dtype
-     * @deprecated Use {@link NodeFactory#createLiteral(String,RDFDatatype)} instead
-     */
-    @Deprecated
-    public static Node createLiteral( String lex, RDFDatatype dtype ) 
-        throws DatatypeFormatException 
-        {
-            return NodeFactory.createLiteral(lex, dtype) ;
-        }
-    
-    /**
-     * @deprecated Use {@link NodeFactory#createUncachedLiteral(Object,String,RDFDatatype)} instead
-     */
-    @Deprecated
-    public static Node createUncachedLiteral( Object value, String lang, RDFDatatype dtype ) 
-        throws DatatypeFormatException 
-        {
-            return NodeFactory.createUncachedLiteral(value, lang, dtype) ;
-        }
-    
-    /**
-     * @deprecated Use {@link NodeFactory#createUncachedLiteral(Object,RDFDatatype)} instead
-     */
-    @Deprecated
-    public static Node createUncachedLiteral( Object value, RDFDatatype dtype ) 
-        throws DatatypeFormatException 
-        {
-            return NodeFactory.createUncachedLiteral(value, dtype) ;
-        }
-                                                   
-    /**
         Visit a Node and dispatch on it to the appropriate method from the 
         NodeVisitor <code>v</code>.
         

http://git-wip-us.apache.org/repos/asf/jena/blob/b4b5c1d0/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredLiteralImpl.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredLiteralImpl.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredLiteralImpl.java
index c457328..3291bd1 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredLiteralImpl.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredLiteralImpl.java
@@ -18,12 +18,12 @@
 package org.apache.jena.permissions.model.impl;
 
 import org.apache.jena.datatypes.RDFDatatype ;
-import org.apache.jena.graph.Node ;
-import org.apache.jena.permissions.impl.ItemHolder;
-import org.apache.jena.permissions.impl.SecuredItemInvoker;
-import org.apache.jena.permissions.model.SecuredLiteral;
-import org.apache.jena.permissions.model.SecuredModel;
-import org.apache.jena.permissions.model.SecuredResource;
+import org.apache.jena.graph.NodeFactory ;
+import org.apache.jena.permissions.impl.ItemHolder ;
+import org.apache.jena.permissions.impl.SecuredItemInvoker ;
+import org.apache.jena.permissions.model.SecuredLiteral ;
+import org.apache.jena.permissions.model.SecuredModel ;
+import org.apache.jena.permissions.model.SecuredResource ;
 import org.apache.jena.rdf.model.Literal ;
 import org.apache.jena.rdf.model.Model ;
 import org.apache.jena.rdf.model.RDFVisitor ;
@@ -118,8 +118,7 @@ public class SecuredLiteralImpl extends SecuredRDFNodeImpl implements
 		}
 		else
 		{
-			throw new ResourceRequiredException(
-					Node.createLiteral("Can not read"));
+			throw new ResourceRequiredException(NodeFactory.createLiteral("Can not read"));
 		}
 	}
 


[44/50] [abbrv] jena git commit: Added initial contract tests added testing_framework

Posted by cl...@apache.org.
http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/graph/RecordingGraphListener.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/RecordingGraphListener.java b/jena-core/src/test/java/org/apache/jena/graph/RecordingGraphListener.java
new file mode 100644
index 0000000..ed94c8f
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/RecordingGraphListener.java
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.graph;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.jena.graph.Graph;
+import org.apache.jena.graph.GraphListener;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.testing_framework.AbstractRecordingListener;
+import org.apache.jena.testing_framework.GraphHelper;
+
+/**
+ * This testing listener records the event names and data, and provides a method
+ * for comparing the actual with the expected history.
+ */
+public class RecordingGraphListener extends AbstractRecordingListener implements
+		GraphListener {
+
+	@Override
+	public void notifyAddTriple(Graph g, Triple t) {
+		record("add", g, t);
+	}
+
+	@Override
+	public void notifyAddArray(Graph g, Triple[] triples) {
+		record("add[]", g, triples);
+	}
+
+	@Override
+	public void notifyAddList(Graph g, List<Triple> triples) {
+		record("addList", g, triples);
+	}
+
+	@Override
+	public void notifyAddIterator(Graph g, Iterator<Triple> it) {
+		record("addIterator", g, GraphHelper.iteratorToList(it));
+	}
+
+	@Override
+	public void notifyAddGraph(Graph g, Graph added) {
+		record("addGraph", g, added);
+	}
+
+	@Override
+	public void notifyDeleteTriple(Graph g, Triple t) {
+		record("delete", g, t);
+	}
+
+	@Override
+	public void notifyDeleteArray(Graph g, Triple[] triples) {
+		record("delete[]", g, triples);
+	}
+
+	@Override
+	public void notifyDeleteList(Graph g, List<Triple> triples) {
+		record("deleteList", g, triples);
+	}
+
+	@Override
+	public void notifyDeleteIterator(Graph g, Iterator<Triple> it) {
+		record("deleteIterator", g, GraphHelper.iteratorToList(it));
+	}
+
+	@Override
+	public void notifyDeleteGraph(Graph g, Graph removed) {
+		record("deleteGraph", g, removed);
+	}
+
+	@Override
+	public void notifyEvent(Graph source, Object event) {
+		record("someEvent", source, event);
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/graph/TransactionHandlerContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/TransactionHandlerContractTest.java b/jena-core/src/test/java/org/apache/jena/graph/TransactionHandlerContractTest.java
new file mode 100644
index 0000000..d26d7e9
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/TransactionHandlerContractTest.java
@@ -0,0 +1,149 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.graph;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractTest;
+
+import static org.junit.Assert.*;
+
+import org.apache.jena.graph.TransactionHandler;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.graph.impl.SimpleTransactionHandler;
+import org.apache.jena.shared.Command;
+import org.apache.jena.shared.JenaException;
+import org.xenei.junit.contract.IProducer;
+import org.apache.jena.util.CollectionFactory;
+import static org.apache.jena.testing_framework.GraphHelper.*;
+
+/**
+ * AbstractTestGraph provides a bunch of basic tests for something that purports
+ * to be a Graph. The abstract method getGraph must be overridden in subclasses
+ * to deliver a Graph of interest.
+ */
+@Contract(TransactionHandler.class)
+public class TransactionHandlerContractTest {
+
+	private IProducer<TransactionHandler> producer;
+
+	public TransactionHandlerContractTest() {
+//		producer = new IProducer<TransactionHandler>() {
+//
+//			@Override
+//			public TransactionHandler newInstance() {
+//				return new SimpleTransactionHandler();
+//			}
+//
+//			@Override
+//			public void cleanUp() {
+//
+//			}
+//		};
+	}
+
+	@Contract.Inject
+	public void setProducer(IProducer<TransactionHandler> producer) {
+		this.producer = producer;
+	}
+
+	protected IProducer<TransactionHandler> getTransactionHandlerProducer() {
+		return producer;
+	}
+
+	/**
+	 * Test that Graphs have transaction support methods, and that if they fail
+	 * on some g they fail because they do not support the operation.
+	 */
+	@ContractTest
+	public void testTransactionsExistAsPerTransactionSupported() {
+		Command cmd = new Command() {
+			@Override
+			public Object execute() {
+				return null;
+			}
+		};
+
+		TransactionHandler th = getTransactionHandlerProducer().newInstance();
+
+		if (th.transactionsSupported()) {
+			th.begin();
+			th.abort();
+			th.begin();
+			th.commit();
+			th.executeInTransaction(cmd);
+		} else {
+			try {
+				th.begin();
+				fail("Should have thrown UnsupportedOperationException");
+			} catch (UnsupportedOperationException x) {
+			}
+
+			try {
+				th.abort();
+				fail("Should have thrown UnsupportedOperationException");
+			} catch (UnsupportedOperationException x) {
+			}
+			try {
+				th.commit();
+				fail("Should have thrown UnsupportedOperationException");
+			} catch (UnsupportedOperationException x) {
+			}
+			/* */
+			try {
+				th.executeInTransaction(cmd);
+				fail("Should have thrown UnsupportedOperationException");
+			} catch (UnsupportedOperationException x) {
+			}
+		}
+	}
+
+	@ContractTest
+	public void testExecuteInTransactionCatchesThrowable() {
+		TransactionHandler th = getTransactionHandlerProducer().newInstance();
+
+		if (th.transactionsSupported()) {
+			Command cmd = new Command() {
+				@Override
+				public Object execute() throws Error {
+					throw new Error();
+				}
+			};
+			try {
+				th.executeInTransaction(cmd);
+				fail("Should have thrown JenaException");
+			} catch (JenaException x) {
+			}
+		}
+	}
+
+	static final Triple[] tripleArray = tripleArray("S P O; Foo R B; X Q Y");
+
+	static final List<Triple> tripleList = Arrays
+			.asList(tripleArray("i lt j; p equals q"));
+
+	static final Triple[] setTriples = tripleArray("scissors cut paper; paper wraps stone; stone breaks scissors");
+
+	static final Set<Triple> tripleSet = CollectionFactory
+			.createHashedSet(Arrays.asList(setTriples));
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/graph/compose/DeltaTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/compose/DeltaTest.java b/jena-core/src/test/java/org/apache/jena/graph/compose/DeltaTest.java
new file mode 100755
index 0000000..a0bf737
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/compose/DeltaTest.java
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.graph.compose;
+
+import static org.apache.jena.testing_framework.GraphHelper.*;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.ContractTest;
+import org.apache.jena.graph.Graph;
+import org.apache.jena.testing_framework.AbstractGraphProducer;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(Delta.class)
+public class DeltaTest  {
+
+	protected IProducer<Delta> graphProducer;
+	
+	public DeltaTest() {
+		super();
+		graphProducer = new AbstractGraphProducer<Delta>() {
+			private Map<Graph, Graph> map = new HashMap<Graph, Graph>();
+
+			@Override
+			protected Delta createNewGraph() {
+				Graph g = memGraph();
+				Delta d = new Delta(g);
+				map.put(d, g);
+				return d;
+			}
+
+			@Override
+			public Graph[] getDependsOn(Graph d) {
+//				Delta dl = (Delta)d;
+//				Graph g = map.get(d);
+//				if (g == null) {
+//					throw new IllegalStateException("graph missing from map");
+//				}
+//				return new Graph[] { g,  (Graph)dl.getL(), (Graph)dl.getR() };
+				return null;
+			}
+
+			@Override
+			public Graph[] getNotDependsOn(Graph g) {
+				return new Graph[] { memGraph() };
+			}
+
+			@Override
+			protected void afterClose(Graph g) {
+				map.remove(g);
+			}
+		};
+	}
+
+	@Contract.Inject
+	public final IProducer<Delta> getDeltaTestProducer() {
+		return graphProducer;
+	}
+
+	@ContractTest
+	public void testDelta() {
+		Graph x = graphWith(getDeltaTestProducer().newInstance(), "x R y");
+		assertContains("x", "x R y", x);
+		x.delete(triple("x R y"));
+		assertOmits("x", x, "x R y");
+		/* */
+		Graph base = graphWith("x R y; p S q; I like cheese; pins pop balloons");
+		Delta delta = new Delta(base);
+		assertContainsAll("Delta", delta,
+				"x R y; p S q; I like cheese; pins pop balloons");
+		assertContainsAll("Base", base,
+				"x R y; p S q; I like cheese; pins pop balloons");
+		/* */
+		delta.add(triple("pigs fly winglessly"));
+		delta.delete(triple("I like cheese"));
+		/* */
+		assertContainsAll("changed Delta", delta,
+				"x R y; p S q; pins pop balloons; pigs fly winglessly");
+		assertOmits("changed delta", delta, "I like cheese");
+		assertContains("delta additions", "pigs fly winglessly",
+				delta.getAdditions());
+		assertOmits("delta additions", delta.getAdditions(), "I like cheese");
+		assertContains("delta deletions", "I like cheese", delta.getDeletions());
+		assertOmits("delta deletions", delta.getDeletions(),
+				"pigs fly winglessly");
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/graph/compose/DifferenceTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/compose/DifferenceTest.java b/jena-core/src/test/java/org/apache/jena/graph/compose/DifferenceTest.java
new file mode 100755
index 0000000..213ae36
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/compose/DifferenceTest.java
@@ -0,0 +1,97 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.graph.compose;
+
+import static org.apache.jena.testing_framework.GraphHelper.*;
+import static org.junit.Assert.*;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.ContractTest;
+import org.apache.jena.graph.Graph;
+import org.apache.jena.graph.compose.Difference;
+import org.apache.jena.testing_framework.AbstractGraphProducer;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(Difference.class)
+public class DifferenceTest {
+
+	protected IProducer<Difference> graphProducer;
+	
+	public DifferenceTest() {
+		graphProducer = new AbstractGraphProducer<Difference>() {
+			private Map<Graph, Graph[]> map = new HashMap<Graph, Graph[]>();
+
+			@Override
+			protected Difference createNewGraph() {
+				Graph g1 = memGraph();
+				Graph g2 = memGraph();
+				Difference d = new Difference(g1, g2);
+				map.put(d, new Graph[] { g1, g2 });
+				return d;
+			}
+
+			@Override
+			public Graph[] getDependsOn(Graph d) {
+				Graph[] dg = map.get(d);
+				if (dg == null) {
+					throw new IllegalStateException("graph not in map");
+				}
+				return dg;
+			}
+
+			@Override
+			public Graph[] getNotDependsOn(Graph g) {
+				return new Graph[] { memGraph() };
+			}
+
+			@Override
+			protected void afterClose(Graph g) {
+				map.remove(g);
+			}
+		};
+	}
+
+	@Contract.Inject
+	public final IProducer<Difference> getDifferenceTestProducer() {
+		return graphProducer;
+	}
+
+	@ContractTest
+	public void testDifference() {
+		Graph g1 = graphWith("x R y; p R q");
+		Graph g2 = graphWith("r Foo s; x R y");
+		Graph d = new Difference(g1, g2);
+		assertOmits("Difference", d, "x R y");
+		assertContains("Difference", "p R q", d);
+		assertOmits("Difference", d, "r Foo s");
+		if (d.size() != 1)
+			fail("oops: size of difference is not 1");
+		d.add(triple("cats eat cheese"));
+		assertContains("Difference.L", "cats eat cheese", g1);
+		assertOmits("Difference.R", g2, "cats eat cheese");
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/graph/compose/IntersectionTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/compose/IntersectionTest.java b/jena-core/src/test/java/org/apache/jena/graph/compose/IntersectionTest.java
new file mode 100755
index 0000000..1e6db9b
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/compose/IntersectionTest.java
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.graph.compose;
+
+import static org.apache.jena.testing_framework.GraphHelper.*;
+import static org.junit.Assert.*;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.ContractTest;
+import org.apache.jena.graph.Graph;
+import org.apache.jena.graph.GraphUtil;
+import org.apache.jena.graph.compose.Intersection;
+import org.apache.jena.testing_framework.AbstractGraphProducer;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(Intersection.class)
+public class IntersectionTest {
+
+	protected IProducer<Intersection> graphProducer;
+	
+	public IntersectionTest() {
+		super();
+		graphProducer = new AbstractGraphProducer<Intersection>() {
+			private Map<Graph, Graph[]> dependencyGraph = new HashMap<Graph, Graph[]>();
+
+			@Override
+			protected Intersection createNewGraph() {
+				Graph g1 = memGraph();
+				Graph g2 = memGraph();
+				Intersection retval = new Intersection(g1, g2);
+				dependencyGraph.put(retval, new Graph[] { g1, g2 });
+				return retval;
+			}
+
+			@Override
+			public Graph[] getDependsOn(Graph g) {
+				Graph[] dg = dependencyGraph.get(g);
+				if (dg == null) {
+					throw new IllegalStateException("graph missing from map");
+				}
+				return dg;
+			}
+
+			@Override
+			public Graph[] getNotDependsOn(Graph g) {
+				return new Graph[] { memGraph() };
+			}
+
+			@Override
+			protected void afterClose(Graph g) {
+				dependencyGraph.remove(g);
+			}
+		};
+	}
+
+	@Contract.Inject
+	public final IProducer<Intersection> getIntersectionTestProducer() {
+		return graphProducer;
+	}
+
+	@ContractTest
+	public void testIntersection() {
+		Graph g1 = graphWith( "x R y; p R q");
+		Graph g2 = graphWith( "r Foo s; x R y");
+		Intersection i = new Intersection(g1, g2);
+		assertContains("Intersection", "x R y", i);
+		assertOmits("Intersection", i, "p R q");
+		assertOmits("Intersection", i, "r Foo s");
+		if (i.size() != 1)
+			fail("oops: size of intersection is not 1");
+		i.add(triple("cats eat cheese"));
+		assertContains("Intersection.L", "cats eat cheese", g1);
+		assertContains("Intersection.R", "cats eat cheese", g2);
+	}
+
+	@ContractTest
+	public void testDeleteDoesNotUpdateR() {
+		Graph L = graphWith("a pings b; b pings c; c pings a");
+		Graph R = graphWith("c pings a; b pings c; x captures y");
+		Graph join = new Intersection(L, R);
+		GraphUtil.deleteFrom(L, R);
+		assertIsomorphic("R should not change",
+				graphWith("c pings a; b pings c; x captures y"), R);
+		assertIsomorphic(graphWith("a pings b"), L);
+	}
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/graph/compose/UnionTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/compose/UnionTest.java b/jena-core/src/test/java/org/apache/jena/graph/compose/UnionTest.java
new file mode 100755
index 0000000..44bf9fb
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/compose/UnionTest.java
@@ -0,0 +1,185 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.graph.compose;
+
+import static org.apache.jena.testing_framework.GraphHelper.*;
+import static org.junit.Assert.*;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.ContractTest;
+import org.apache.jena.graph.Graph;
+import org.apache.jena.graph.GraphStatisticsHandler;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.graph.compose.Union;
+import org.apache.jena.graph.impl.GraphBase;
+import org.apache.jena.testing_framework.AbstractGraphProducer;
+import org.xenei.junit.contract.IProducer;
+import org.apache.jena.util.iterator.ExtendedIterator;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(Union.class)
+public class UnionTest {
+	
+	protected IProducer<Union> graphProducer;
+	
+	public UnionTest() {
+		graphProducer = new AbstractGraphProducer<Union>() {
+			private Map<Graph, Graph[]> map = new HashMap<Graph, Graph[]>();
+
+			@Override
+			protected Union createNewGraph() {
+				Graph[] g = { memGraph(), memGraph() };
+				Union u = new Union(g[0], g[1]);
+				map.put(u, g);
+				return u;
+			}
+
+			@Override
+			public Graph[] getDependsOn(Graph d) {
+				Graph[] dg = map.get(d);
+				if (dg == null) {
+					throw new IllegalStateException("graph not in map");
+				}
+				return dg;
+			}
+
+			@Override
+			public Graph[] getNotDependsOn(Graph g) {
+				return new Graph[] { memGraph() };
+			}
+
+			@Override
+			protected void afterClose(Graph g) {
+				map.remove(g);
+			}
+		};
+
+	}
+
+	@Contract.Inject
+	public final IProducer<Union> getUnionTestProducer() {
+		return graphProducer;
+	}
+
+	@ContractTest
+	public void testUnion() {
+		Graph g1 = graphWith("x R y; p R q");
+		Graph g2 = graphWith("r Foo s; x R y");
+		Union u = new Union(g1, g2);
+		assertContains("Union", "x R y", u);
+		assertContains("Union", "p R q", u);
+		assertContains("Union", "r Foo s", u);
+		if (u.size() != 3)
+			fail("oops: size of union is not 3");
+		u.add(triple("cats eat cheese"));
+		assertContains("Union", "cats eat cheese", u);
+		if (contains(g1, "cats eat cheese") == false
+				&& contains(g2, "cats eat cheese") == false)
+			fail("oops: neither g1 nor g2 contains `cats eat cheese`");
+	}
+
+	static class AnInteger {
+		public int value = 0;
+
+		public AnInteger(int value) {
+			this.value = value;
+		}
+	}
+
+	@ContractTest
+	public void testUnionValues() {
+		testUnion(0, 0, 0, 0);
+	}
+
+	@ContractTest
+	public void testCopiesSingleNonZeroResult() {
+		testUnion(1, 1, 0, 0);
+		testUnion(1, 0, 1, 0);
+		testUnion(1, 0, 0, 1);
+		testUnion(1, 1, 0, 0);
+		testUnion(2, 0, 2, 0);
+		testUnion(4, 0, 0, 4);
+	}
+
+	@ContractTest
+	public void testResultIsSumOfBaseResults() {
+		testUnion(3, 1, 2, 0);
+		testUnion(5, 1, 0, 4);
+		testUnion(6, 0, 2, 4);
+		testUnion(7, 1, 2, 4);
+		testUnion(3, 0, 2, 1);
+		testUnion(5, 4, 1, 0);
+		testUnion(6, 2, 2, 2);
+		testUnion(7, 6, 0, 1);
+	}
+
+	@ContractTest
+	public void testUnknownOverrulesAll() {
+		testUnion(-1, -1, 0, 0);
+		testUnion(-1, 0, -1, 0);
+		testUnion(-1, 0, 0, -1);
+		testUnion(-1, -1, 1, 1);
+		testUnion(-1, 1, -1, 1);
+		testUnion(-1, 1, 1, -1);
+	}
+
+	/**
+	 * Asserts that the statistic obtained by probing the three-element union
+	 * with statistics <code>av</code>, <code>bv</code>, and <code>cv</code> is
+	 * <code>expected</code>.
+	 */
+	private void testUnion(int expected, int av, int bv, int cv) {
+		AnInteger a = new AnInteger(av), b = new AnInteger(bv), c = new AnInteger(
+				cv);
+		Graph g1 = graphWithGivenStatistic(a);
+		Graph g2 = graphWithGivenStatistic(b);
+		Graph g3 = graphWithGivenStatistic(c);
+		Graph[] graphs = new Graph[] { g1, g2, g3 };
+		MultiUnion mu = new MultiUnion(graphs);
+		GraphStatisticsHandler gs = new MultiUnion.MultiUnionStatisticsHandler(
+				mu);
+		assertEquals(expected, gs.getStatistic(Node.ANY, Node.ANY, Node.ANY));
+	}
+
+	static Graph graphWithGivenStatistic(final AnInteger x) {
+		return new GraphBase() {
+			@Override
+			protected ExtendedIterator<Triple> graphBaseFind(Triple t) {
+				throw new RuntimeException("should never be called");
+			}
+
+			@Override
+			protected GraphStatisticsHandler createStatisticsHandler() {
+				return new GraphStatisticsHandler() {
+					@Override
+					public long getStatistic(Node S, Node P, Node O) {
+						return x.value;
+					}
+				};
+			}
+		};
+	}
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/graph/impl/TestCollectionGraph.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/impl/TestCollectionGraph.java b/jena-core/src/test/java/org/apache/jena/graph/impl/TestCollectionGraph.java
index 3334da7..4d9f40d 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/impl/TestCollectionGraph.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/impl/TestCollectionGraph.java
@@ -18,22 +18,50 @@
 
 package org.apache.jena.graph.impl;
 
+import static org.apache.jena.testing_framework.GraphHelper.memGraph;
+
 import java.util.HashSet;
 
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.graph.impl.CollectionGraph ;
-import org.apache.jena.graph.test.AbstractTestGraph ;
+import org.apache.jena.testing_framework.AbstractGraphProducer;
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.IProducer;
 
-public class TestCollectionGraph extends AbstractTestGraph {
+@RunWith(ContractSuite.class)
+@ContractImpl(CollectionGraph.class)
+public class TestCollectionGraph {
 	 
-	public TestCollectionGraph(String name) {
-		super(name);
+	protected IProducer<CollectionGraph> graphProducer;
+	
+	public TestCollectionGraph() {
+		graphProducer = new AbstractGraphProducer<CollectionGraph>() {
+			
+			@Override
+			protected CollectionGraph createNewGraph() {
+				return new CollectionGraph( new HashSet<Triple>() );
+			}
+
+			@Override
+			public Graph[] getDependsOn(Graph d) {
+				return null;
+			}
+
+			@Override
+			public Graph[] getNotDependsOn(Graph g) {
+				return new Graph[] { memGraph() };
+			}
+
+		};
 	}
 
-	@Override
-	public Graph getGraph() {
-		return new CollectionGraph( new HashSet<Triple>() );
+	@Contract.Inject
+	public final IProducer<CollectionGraph> getDeltaTestProducer() {
+		return graphProducer;
 	}
 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/graph/impl/TestWrappedGraph.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/impl/TestWrappedGraph.java b/jena-core/src/test/java/org/apache/jena/graph/impl/TestWrappedGraph.java
new file mode 100644
index 0000000..7910660
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/impl/TestWrappedGraph.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.graph.impl;
+
+import static org.apache.jena.testing_framework.GraphHelper.memGraph;
+
+import org.apache.jena.graph.Graph ;
+import org.apache.jena.testing_framework.AbstractGraphProducer;
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(WrappedGraph.class)
+public class TestWrappedGraph {
+	 
+	protected IProducer<WrappedGraph> graphProducer;
+	
+	public TestWrappedGraph() {
+		graphProducer = new AbstractGraphProducer<WrappedGraph>() {
+			
+			@Override
+			protected WrappedGraph createNewGraph() {
+				return new WrappedGraph( memGraph() );
+			}
+
+			@Override
+			public Graph[] getDependsOn(Graph d) {
+				return null;
+			}
+
+			@Override
+			public Graph[] getNotDependsOn(Graph g) {
+				return new Graph[] { memGraph() };
+			}
+
+		};
+	}
+
+	@Contract.Inject
+	public final IProducer<WrappedGraph> getDeltaTestProducer() {
+		return graphProducer;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/graph/impl/TripleStoreContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/impl/TripleStoreContractTest.java b/jena-core/src/test/java/org/apache/jena/graph/impl/TripleStoreContractTest.java
new file mode 100644
index 0000000..0b074aa
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/impl/TripleStoreContractTest.java
@@ -0,0 +1,176 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.graph.impl;
+
+import org.junit.After;
+import org.junit.Before;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractTest;
+
+import static org.junit.Assert.*;
+
+import static org.apache.jena.testing_framework.GraphHelper.*;
+import org.apache.jena.mem.GraphTripleStore;
+import org.apache.jena.graph.impl.TripleStore;
+import org.apache.jena.testing_framework.ContractTemplate;
+
+import org.xenei.junit.contract.IProducer;
+
+/**
+ * AbstractTestTripleStore - post-hoc tests for TripleStores.
+ */
+
+@Contract(TripleStore.class)
+public class TripleStoreContractTest<T extends TripleStore> extends
+		ContractTemplate<IProducer<T>> {
+
+	protected TripleStore store;
+
+	public TripleStoreContractTest() {
+		IProducer<TripleStore> producer = new IProducer<TripleStore>() {
+
+			@Override
+			public TripleStore newInstance() {
+				return new GraphTripleStore(memGraph());
+			}
+
+			@Override
+			public void cleanUp() {
+				// TODO Auto-generated method stub
+
+			}
+
+		};
+		setProducer((IProducer<T>) producer);
+	}
+
+	/**
+	 * Subclasses must over-ride to return a new empty TripleStore.
+	 */
+	@Contract.Inject
+	public final void setTripleStoreContractTestProducer(IProducer<T> producer) {
+		super.setProducer(producer);
+	}
+
+	@Before
+	public final void beforeAbstractTripleStoreTest() {
+		store = getProducer().newInstance();
+	}
+
+	@After
+	public final void afterAbstractTripleStoreTest() {
+		getProducer().cleanUp();
+	}
+
+	@ContractTest
+	public void testEmpty() {
+		testEmpty(store);
+	}
+
+	@ContractTest
+	public void testAddOne() {
+		store.add(triple("x P y"));
+		assertEquals(false, store.isEmpty());
+		assertEquals(1, store.size());
+		assertEquals(true, store.contains(triple("x P y")));
+		assertEquals(nodeSet("x"), iteratorToSet(store.listSubjects()));
+		assertEquals(nodeSet("y"), iteratorToSet(store.listObjects()));
+		assertEquals(tripleSet("x P y"),
+				iteratorToSet(store.find(triple("?? ?? ??"))));
+	}
+
+	@ContractTest
+	public void testListSubjects() {
+		someStatements(store);
+		assertEquals(nodeSet("a x _z r q"), iteratorToSet(store.listSubjects()));
+	}
+
+	@ContractTest
+	public void testListObjects() {
+		someStatements(store);
+		assertEquals(nodeSet("b y i _j _t 17"),
+				iteratorToSet(store.listObjects()));
+	}
+
+	@ContractTest
+	public void testContains() {
+		someStatements(store);
+		assertEquals(true, store.contains(triple("a P b")));
+		assertEquals(true, store.contains(triple("x P y")));
+		assertEquals(true, store.contains(triple("a P i")));
+		assertEquals(true, store.contains(triple("_z Q _j")));
+		assertEquals(true, store.contains(triple("x R y")));
+		assertEquals(true, store.contains(triple("r S _t")));
+		assertEquals(true, store.contains(triple("q R 17")));
+		/* */
+		assertEquals(false, store.contains(triple("a P x")));
+		assertEquals(false, store.contains(triple("a P _j")));
+		assertEquals(false, store.contains(triple("b Z r")));
+		assertEquals(false, store.contains(triple("_a P x")));
+	}
+
+	@ContractTest
+	public void testFind() {
+		someStatements(store);
+		assertEquals(tripleSet(""),
+				iteratorToSet(store.find(triple("no such thing"))));
+		assertEquals(tripleSet("a P b; a P i"),
+				iteratorToSet(store.find(triple("a P ??"))));
+		assertEquals(tripleSet("a P b; x P y; a P i"),
+				iteratorToSet(store.find(triple("?? P ??"))));
+		assertEquals(tripleSet("x P y; x R y"),
+				iteratorToSet(store.find(triple("x ?? y"))));
+		assertEquals(tripleSet("_z Q _j"),
+				iteratorToSet(store.find(triple("?? ?? _j"))));
+		assertEquals(tripleSet("q R 17"),
+				iteratorToSet(store.find(triple("?? ?? 17"))));
+	}
+
+	@ContractTest
+	public void testRemove() {
+		store.add(triple("nothing before ace"));
+		store.add(triple("ace before king"));
+		store.add(triple("king before queen"));
+		store.delete(triple("ace before king"));
+		assertEquals(tripleSet("king before queen; nothing before ace"),
+				iteratorToSet(store.find(triple("?? ?? ??"))));
+		store.delete(triple("king before queen"));
+		assertEquals(tripleSet("nothing before ace"),
+				iteratorToSet(store.find(triple("?? ?? ??"))));
+	}
+
+	protected void someStatements(TripleStore ts) {
+		ts.add(triple("a P b"));
+		ts.add(triple("x P y"));
+		ts.add(triple("a P i"));
+		ts.add(triple("_z Q _j"));
+		ts.add(triple("x R y"));
+		ts.add(triple("r S _t"));
+		ts.add(triple("q R 17"));
+	}
+
+	protected void testEmpty(TripleStore ts) {
+		assertEquals(true, ts.isEmpty());
+		assertEquals(0, ts.size());
+		assertEquals(false, ts.find(triple("?? ?? ??")).hasNext());
+		assertEquals(false, ts.listObjects().hasNext());
+		assertEquals(false, ts.listSubjects().hasNext());
+		assertFalse(ts.contains(triple("x P y")));
+	}
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/mem/BunchMapContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/mem/BunchMapContractTest.java b/jena-core/src/test/java/org/apache/jena/mem/BunchMapContractTest.java
new file mode 100644
index 0000000..7807248
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/mem/BunchMapContractTest.java
@@ -0,0 +1,163 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.mem;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.After;
+import org.junit.Before;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractTest;
+
+import org.xenei.junit.contract.IProducer;
+import org.apache.jena.util.iterator.ExtendedIterator;
+
+/**
+ * Test triple bunch implementations - NOT YET FINISHED
+ */
+@Contract(BunchMap.class)
+public class BunchMapContractTest {
+	private BunchMap map;
+
+	private IProducer<? extends BunchMap> producer;
+
+	@Contract.Inject
+	public final void setBunchMapProducer(IProducer<? extends BunchMap> producer) {
+		this.producer = producer;
+	}
+
+	protected final IProducer<? extends BunchMap> getBunchMapProducer() {
+		return producer;
+	}
+
+	@Before
+	public final void beforeAbstractBunchMapTest() {
+		map = getBunchMapProducer().newInstance();
+	}
+
+	@After
+	public final void afterAbstractBunchMapTest() {
+		getBunchMapProducer().cleanUp();
+	}
+
+	@ContractTest
+	public void testClear() {
+		for (int i = 0; i < 5; i++) {
+			map.put(i, mock(TripleBunch.class));
+		}
+		assertEquals(5, map.size());
+
+		map.clear();
+		assertEquals(0, map.size());
+	}
+
+	@ContractTest
+	public void testSize() {
+		assertEquals(0, map.size());
+		for (int i = 0; i < 5; i++) {
+			map.put(i, mock(TripleBunch.class));
+			assertEquals(i + 1, map.size());
+		}
+	}
+
+	@ContractTest
+	public void testGet() {
+		List<TripleBunch> lst = new ArrayList<TripleBunch>();
+		for (int i = 0; i < 5; i++) {
+			TripleBunch tb = mock(TripleBunch.class);
+			lst.add(tb);
+			map.put(i, tb);
+		}
+		for (int i = 0; i < 5; i++) {
+			assertEquals(lst.get(i), map.get(i));
+		}
+	}
+
+	@ContractTest
+	public void testPut() {
+		List<TripleBunch> lst = new ArrayList<TripleBunch>();
+		for (int i = 0; i < 5; i++) {
+			map.put(i, mock(TripleBunch.class));
+		}
+		for (int i = 0; i < 5; i++) {
+			TripleBunch tb = mock(TripleBunch.class);
+			lst.add(tb);
+			map.put(i, tb);
+		}
+		for (int i = 0; i < 5; i++) {
+			assertEquals(lst.get(i), map.get(i));
+		}
+	}
+
+	@ContractTest
+	public void testRemove() {
+		List<TripleBunch> lst = new ArrayList<TripleBunch>();
+		for (int i = 0; i < 5; i++) {
+			TripleBunch tb = mock(TripleBunch.class);
+			lst.add(tb);
+			map.put(i, tb);
+		}
+
+		map.remove(0);
+		assertNull(map.get(0));
+		for (int i = 1; i < 5; i++) {
+			assertEquals(lst.get(i), map.get(i));
+		}
+		assertEquals(4, map.size());
+
+		map.remove(2);
+		assertNull(map.get(0));
+		assertEquals(lst.get(1), map.get(1));
+		assertNull(map.get(2));
+		assertEquals(lst.get(3), map.get(3));
+		assertEquals(lst.get(4), map.get(4));
+		assertEquals(3, map.size());
+
+		map.remove(4);
+		assertNull(map.get(0));
+		assertEquals(lst.get(1), map.get(1));
+		assertNull(map.get(2));
+		assertEquals(lst.get(3), map.get(3));
+		assertNull(map.get(4));
+		assertEquals(2, map.size());
+
+	}
+
+	@ContractTest
+	public void testKeyIterator() {
+		List<Integer> lst = new ArrayList<Integer>();
+		for (int i = 0; i < 5; i++) {
+			lst.add(i);
+			map.put(i, mock(TripleBunch.class));
+		}
+		ExtendedIterator<Object> iter = map.keyIterator();
+		while (iter.hasNext()) {
+			assertFalse("List is empty", lst.isEmpty());
+			Integer i = (Integer) iter.next();
+			assertTrue("Missing index: " + i, lst.contains(i));
+			lst.remove(i);
+		}
+		assertTrue("List is not empty", lst.isEmpty());
+	}
+}
+

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/mem/GraphMemTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/mem/GraphMemTest.java b/jena-core/src/test/java/org/apache/jena/mem/GraphMemTest.java
new file mode 100644
index 0000000..8fed109
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/mem/GraphMemTest.java
@@ -0,0 +1,115 @@
+/*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ */
+package org.apache.jena.mem;
+
+import static org.apache.jena.testing_framework.GraphHelper.*;
+import static org.junit.Assert.*;
+
+import java.util.Iterator;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract.Inject;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.ContractTest;
+
+import org.apache.jena.graph.Graph;
+import org.apache.jena.graph.GraphStatisticsHandler;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.Node_URI;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.shared.JenaException;
+import org.apache.jena.testing_framework.AbstractGraphProducer;
+import org.xenei.junit.contract.IProducer;
+import org.apache.jena.util.iterator.ExtendedIterator;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(GraphMem.class)
+public class GraphMemTest {
+
+	protected IProducer<GraphMem> graphProducer = new AbstractGraphProducer<GraphMem>() {
+
+		@Override
+		protected GraphMem createNewGraph() {
+			return new GraphMem();
+		}
+
+		@Override
+		public Graph[] getDependsOn(Graph g) {
+			return null;
+		}
+
+		@Override
+		public Graph[] getNotDependsOn(Graph g) {
+			return new Graph[] { memGraph() };
+		}
+
+	};
+
+	@Inject
+	public IProducer<GraphMem> getGraphProducer() {
+		return graphProducer;
+	}
+
+	@ContractTest
+	public void testHasStatistics() {
+		GraphStatisticsHandler h = graphProducer.newInstance()
+				.getStatisticsHandler();
+		assertNotNull(h);
+	}
+
+	@ContractTest
+	public void testContainsConcreteDoesntUseFind() {
+		Graph g = new GraphMemWithoutFind();
+		graphAdd(g, "x P y; a Q b");
+		assertTrue(g.contains(triple("x P y")));
+		assertTrue(g.contains(triple("a Q b")));
+		assertFalse(g.contains(triple("a P y")));
+		assertFalse(g.contains(triple("y R b")));
+	}
+
+	protected final class GraphMemWithoutFind extends GraphMem {
+		@Override
+		public ExtendedIterator<Triple> graphBaseFind(Triple t) {
+			throw new JenaException("find is Not Allowed");
+		}
+	}
+
+	@ContractTest
+	public void testUnnecessaryMatches() {
+		Node special = new Node_URI("eg:foo") {
+			@Override
+			public boolean matches(Node s) {
+				fail("Matched called superfluously.");
+				return true;
+			}
+		};
+		Graph g = graphWith(graphProducer.newInstance(), "x p y");
+		g.add(new Triple(special, special, special));
+		exhaust(g.find(special, Node.ANY, Node.ANY));
+		exhaust(g.find(Node.ANY, special, Node.ANY));
+		exhaust(g.find(Node.ANY, Node.ANY, special));
+
+	}
+
+	protected void exhaust(Iterator<?> it) {
+		while (it.hasNext())
+			it.next();
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/mem/GraphTripleStoreTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/mem/GraphTripleStoreTest.java b/jena-core/src/test/java/org/apache/jena/mem/GraphTripleStoreTest.java
new file mode 100644
index 0000000..1f82935
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/mem/GraphTripleStoreTest.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.mem;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+
+import org.apache.jena.graph.Graph;
+import org.apache.jena.mem.GraphTripleStore;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(GraphTripleStore.class)
+public class GraphTripleStoreTest {
+
+	private IProducer<GraphTripleStore> producer = new IProducer<GraphTripleStore>() {
+
+		@Override
+		public GraphTripleStore newInstance() {
+			return new GraphTripleStore(Graph.emptyGraph);
+		}
+
+		@Override
+		public void cleanUp() {
+		}
+
+	};
+
+	@Contract.Inject
+	public IProducer<GraphTripleStore> getTripleStore() {
+		return producer;
+	}
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/mem/TripleBunchContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/mem/TripleBunchContractTest.java b/jena-core/src/test/java/org/apache/jena/mem/TripleBunchContractTest.java
new file mode 100644
index 0000000..505b57f
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/mem/TripleBunchContractTest.java
@@ -0,0 +1,205 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jena.mem;
+
+import static org.junit.Assert.*;
+import static org.apache.jena.testing_framework.GraphHelper.*;
+
+import java.util.ArrayList;
+import java.util.ConcurrentModificationException;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.junit.After;
+import org.junit.Before;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractTest;
+
+import org.apache.jena.graph.Triple;
+import org.xenei.junit.contract.IProducer;
+import org.apache.jena.testing_framework.NodeCreateUtils;
+import org.apache.jena.util.iterator.ExtendedIterator;
+
+/**
+ * Test triple bunch implementations - NOT YET FINISHED
+ */
+@Contract(TripleBunch.class)
+public class TripleBunchContractTest {
+	private IProducer<? extends TripleBunch> producer;
+
+	@Contract.Inject
+	public final void setTripleBunchProducer(
+			IProducer<? extends TripleBunch> producer) {
+		this.producer = producer;
+	}
+
+	protected final IProducer<? extends TripleBunch> getTripleBunchProducer() {
+		return producer;
+	}
+
+	public static final TripleBunch EMPTY_BUNCH = new ArrayBunch();
+
+	protected static final Triple tripleSPO = triple("s P o");
+	protected static final Triple tripleXQY = triple("x Q y");
+
+	private TripleBunch testingBunch;
+
+	@Before
+	public final void beforeAbstractTripleBunchTest() {
+		testingBunch = getTripleBunchProducer().newInstance();
+	}
+
+	@After
+	public final void afterAbstractTripleBunchTest() {
+		getTripleBunchProducer().cleanUp();
+	}
+
+	@ContractTest
+	public void testEmptyBunch() {
+		assertEquals(0, testingBunch.size());
+		assertFalse(testingBunch.contains(tripleSPO));
+		assertFalse(testingBunch.contains(tripleXQY));
+		assertFalse(testingBunch.iterator().hasNext());
+	}
+
+	@ContractTest
+	public void testAddElement() {
+		testingBunch.add(tripleSPO);
+		assertEquals(1, testingBunch.size());
+		assertTrue(testingBunch.contains(tripleSPO));
+		assertEquals(listOf(tripleSPO), iteratorToList(testingBunch.iterator()));
+	}
+
+	@ContractTest
+	public void testAddElements() {
+		testingBunch.add(tripleSPO);
+		testingBunch.add(tripleXQY);
+		assertEquals(2, testingBunch.size());
+		assertTrue(testingBunch.contains(tripleSPO));
+		assertTrue(testingBunch.contains(tripleXQY));
+		assertEquals(setOf(tripleSPO, tripleXQY),
+				iteratorToSet(testingBunch.iterator()));
+	}
+
+	@ContractTest
+	public void testRemoveOnlyElement() {
+		testingBunch.add(tripleSPO);
+		testingBunch.remove(tripleSPO);
+		assertEquals(0, testingBunch.size());
+		assertFalse(testingBunch.contains(tripleSPO));
+		assertFalse(testingBunch.iterator().hasNext());
+	}
+
+	@ContractTest
+	public void testRemoveFirstOfTwo() {
+		testingBunch.add(tripleSPO);
+		testingBunch.add(tripleXQY);
+		testingBunch.remove(tripleSPO);
+		assertEquals(1, testingBunch.size());
+		assertFalse(testingBunch.contains(tripleSPO));
+		assertTrue(testingBunch.contains(tripleXQY));
+		assertEquals(listOf(tripleXQY), iteratorToList(testingBunch.iterator()));
+	}
+
+	@ContractTest
+	public void testTableGrows() {
+		testingBunch.add(tripleSPO);
+		testingBunch.add(tripleXQY);
+		testingBunch.add(triple("a I b"));
+		testingBunch.add(triple("c J d"));
+	}
+
+	@ContractTest
+	public void testIterator() {
+		testingBunch.add(triple("a P b"));
+		testingBunch.add(triple("c Q d"));
+		testingBunch.add(triple("e R f"));
+		assertEquals(tripleSet("a P b; c Q d; e R f"), testingBunch.iterator()
+				.toSet());
+	}
+
+	@ContractTest
+	public void testIteratorRemoveOneItem() {
+		testingBunch.add(triple("a P b"));
+		testingBunch.add(triple("c Q d"));
+		testingBunch.add(triple("e R f"));
+		ExtendedIterator<Triple> it = testingBunch.iterator();
+		while (it.hasNext())
+			if (it.next().equals(triple("c Q d")))
+				it.remove();
+		assertEquals(tripleSet("a P b; e R f"), testingBunch.iterator().toSet());
+	}
+
+	@ContractTest
+	public void testIteratorRemoveAlltems() {
+		testingBunch.add(triple("a P b"));
+		testingBunch.add(triple("c Q d"));
+		testingBunch.add(triple("e R f"));
+		ExtendedIterator<Triple> it = testingBunch.iterator();
+		while (it.hasNext())
+			it.removeNext();
+		assertEquals(tripleSet(""), testingBunch.iterator().toSet());
+	}
+
+	protected List<Triple> listOf(Triple x) {
+		List<Triple> result = new ArrayList<Triple>();
+		result.add(x);
+		return result;
+	}
+
+	protected Set<Triple> setOf(Triple x, Triple y) {
+		Set<Triple> result = setOf(x);
+		result.add(y);
+		return result;
+	}
+
+	protected Set<Triple> setOf(Triple x) {
+		Set<Triple> result = new HashSet<Triple>();
+		result.add(x);
+		return result;
+	}
+
+	public void testAddThenNextThrowsCME() {
+		testingBunch.add(NodeCreateUtils.createTriple("a P b"));
+		testingBunch.add(NodeCreateUtils.createTriple("c Q d"));
+		ExtendedIterator<Triple> it = testingBunch.iterator();
+		it.next();
+		testingBunch.add(NodeCreateUtils.createTriple("change its state"));
+		try {
+			it.next();
+			fail("should have thrown ConcurrentModificationException");
+		} catch (ConcurrentModificationException e) {
+			// expected
+		}
+	}
+
+	public void testDeleteThenNextThrowsCME() {
+		testingBunch.add(NodeCreateUtils.createTriple("a P b"));
+		testingBunch.add(NodeCreateUtils.createTriple("c Q d"));
+		ExtendedIterator<Triple> it = testingBunch.iterator();
+		it.next();
+		testingBunch.remove(NodeCreateUtils.createTriple("a P b"));
+		try {
+			it.next();
+			fail("should have thrown ConcurrentModificationException");
+		} catch (ConcurrentModificationException e) {
+			// expected
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractGraphProducer.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractGraphProducer.java b/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractGraphProducer.java
new file mode 100644
index 0000000..29cf9f0
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractGraphProducer.java
@@ -0,0 +1,104 @@
+/*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ */
+package org.apache.jena.testing_framework;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.xenei.junit.contract.IProducer;
+
+import org.apache.jena.graph.Graph;
+
+/**
+ * An abstract implementation of the GraphProducerInterface.
+ * 
+ * This class handles tracking of the created graphs and closing them. It also
+ * provides a callback for the implementing class to perform extra cleanup when
+ * the graph is closed.
+ * 
+ */
+public abstract class AbstractGraphProducer<T extends Graph> implements
+		IProducer<T> {
+
+	/**
+	 * The list of graphs that have been opened in this test.
+	 */
+	protected List<Graph> graphList = new ArrayList<Graph>();
+
+	/**
+	 * The method to create a new graph.
+	 * 
+	 * @return a newly constructed graph of type under test.
+	 */
+	abstract protected T createNewGraph();
+
+	@Override
+	final public T newInstance() {
+		T retval = createNewGraph();
+		graphList.add(retval);
+		return retval;
+	}
+
+	/**
+	 * Method called after the graph is closed. This allows the implementer to
+	 * perform extra cleanup activities, like deleting the file associated with
+	 * a file based graph.
+	 * <p>
+	 * By default this does nothing.
+	 * </p>
+	 * 
+	 * @param g
+	 *            The graph that is closed
+	 */
+	protected void afterClose(Graph g) {
+	};
+
+	@Override
+	final public void cleanUp() {
+		for (Graph g : graphList) {
+			if (!g.isClosed()) {
+				g.close();
+			}
+			afterClose(g);
+		}
+		graphList.clear();
+	}
+
+	/**
+	 * Get a list of graphs that the created graph is dependent upon. The graph
+	 * must return true for each call to dependsOn() with one of the returned
+	 * graphs. Method may return null to disable the check.
+	 * 
+	 * @param g
+	 *            The graph we are looking for.
+	 * @return
+	 */
+	public abstract Graph[] getDependsOn(Graph g);
+
+	/**
+	 * Get a list of graphs that the created graph is not dependent upon. The
+	 * graph must return false for each call to dependsOn() with one of the
+	 * returned graphs. Method may return null to disable the check.
+	 * 
+	 * @param g
+	 *            The graph we are looking for.
+	 * @return
+	 */
+	public abstract Graph[] getNotDependsOn(Graph g);
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractInfModelProducer.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractInfModelProducer.java b/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractInfModelProducer.java
new file mode 100644
index 0000000..898503d
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractInfModelProducer.java
@@ -0,0 +1,91 @@
+/*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ */
+package org.apache.jena.testing_framework;
+
+import org.apache.jena.rdf.model.InfModel;
+import org.apache.jena.rdf.model.Model;
+import org.apache.jena.rdf.model.Statement;
+import org.apache.jena.reasoner.Reasoner;
+
+/**
+ * An abstract implementation of the ModelProducerInterface.
+ * 
+ * This class handles tracking of the created models and closing them. It also
+ * provides a callback for the implementing class to perform extra cleanup when
+ * the model is closed.
+ * 
+ */
+public abstract class AbstractInfModelProducer<T extends InfModel> extends
+		AbstractModelProducer<T> {
+
+	
+	public boolean canBeEmpty( Model m ) 
+	{
+		return false;
+	}
+	/**
+	 * @return true if the models returned by this poducer are independent,
+	 *         false otherwise.
+	 * 
+	 */
+	abstract public Reasoner getReasoner();
+
+	/**
+	 * Returns the model that was used in the reasoner.bind() call.
+	 * 
+	 * @return
+	 */
+	abstract public Model getBoundModel();
+
+	/**
+	 * Populate the model with test data for the derivation test.
+	 * 
+	 * @param model
+	 */
+	abstract public void populateModel(InfModel model);
+
+	/**
+	 * Using the reasoner and the populated model, this statement should return
+	 * a derivation iterator when getDerivation() is called.
+	 * 
+	 * This is not a complete test but a simple test to show that the system
+	 * works in this specific case. A complete set of tests is left for later
+	 * development.
+	 * 
+	 * @return The Statement that should have at least one derivation.
+	 */
+	abstract public Statement getDerivationStatement();
+
+	/**
+	 * Using the reasoner and the populated model, this statement should return
+	 * an EMPTY derivation iterator when getDerivation() is called.
+	 * 
+	 * This is not a complete test but a simple test to show that the system
+	 * works in this specific case. A complete set of tests is left for later
+	 * development.
+	 * 
+	 * @return The Statement that should have no derivations.
+	 */
+	abstract public Statement getNoDerivationStatement();
+
+	/**
+	 * @return true if the InfModel supports the getDeductionsModel() call.
+	 */
+	abstract public boolean supportsDeductionsModel();
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractModelProducer.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractModelProducer.java b/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractModelProducer.java
new file mode 100644
index 0000000..882e9d3
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractModelProducer.java
@@ -0,0 +1,88 @@
+/*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ */
+package org.apache.jena.testing_framework;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.xenei.junit.contract.IProducer;
+import org.apache.jena.rdf.model.Model;
+
+/**
+ * An abstract implementation of the ModelProducerInterface.
+ * 
+ * This class handles tracking of the created models and closing them. It also
+ * provides a callback for the implementing class to perform extra cleanup when
+ * the model is closed.
+ * 
+ */
+public abstract class AbstractModelProducer<T extends Model> implements
+		IProducer<T> {
+
+	/**
+	 * The list of graphs that have been opened in this test.
+	 */
+	protected List<Model> modelList = new ArrayList<Model>();
+
+	/**
+	 * @return true if the models returned by this poducer are independent,
+	 *         false otherwise.
+	 * 
+	 */
+	abstract public boolean areIndependent();
+
+	/**
+	 * The method to create a new model.
+	 * 
+	 * @return a newly constructed model of type under test.
+	 */
+	abstract protected T createNewModel();
+
+	@Override
+	final public T newInstance() {
+		T retval = createNewModel();
+		modelList.add(retval);
+		return retval;
+	}
+
+	/**
+	 * Method called after the graph is closed. This allows the implementer to
+	 * perform extra cleanup activities, like deleting the file associated with
+	 * a file based graph.
+	 * <p>
+	 * By default this does nothing.
+	 * </p>
+	 * 
+	 * @param g
+	 *            The graph that is closed
+	 */
+	protected void afterClose(T g) {
+	};
+
+	@Override
+	final public void cleanUp() {
+		for (Model m : modelList) {
+			if (!m.isClosed()) {
+				m.close();
+			}
+			afterClose((T) m);
+		}
+		modelList.clear();
+	}
+	
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractRecordingListener.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractRecordingListener.java b/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractRecordingListener.java
new file mode 100644
index 0000000..e9e26a1
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractRecordingListener.java
@@ -0,0 +1,190 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.testing_framework;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.junit.Assert;
+
+import org.apache.jena.rdf.model.Model;
+import org.apache.jena.rdf.model.Statement;
+
+/**
+ * This testing listener records the event names and data, and provides a method
+ * for comparing the actual with the expected history.
+ */
+public class AbstractRecordingListener {
+
+	@SuppressWarnings("unchecked")
+	public static boolean checkEquality(final Object o1, final Object o2) {
+		if (o1 == o2) {
+			return true;
+		}
+		if (o1.getClass().isArray() && o2.getClass().isArray()) {
+			final Object[] o1a = (Object[]) o1;
+			final Object[] o2a = (Object[]) o2;
+
+			if (o1a.length == o2a.length) {
+				for (int i = 0; i < o1a.length; i++) {
+					if (!checkEquality(o1a[i], o2a[i])) {
+						return false;
+					}
+				}
+				return true;
+			}
+			return false;
+		} else if ((o1 instanceof Collection<?>)
+				&& (o2 instanceof Collection<?>)) {
+			return checkEquality(((Collection<Object>) o1).toArray(),
+					((Collection<Object>) o2).toArray());
+
+		} else if ((o1 instanceof Model) && (o2 instanceof Model)) {
+			return checkEquality(((Model) o1).listStatements().toList(),
+					((Model) o2).listStatements().toList());
+
+		} else if ((o1 instanceof Statement) && (o2 instanceof Statement)) {
+			return checkEquality(((Statement) o1).asTriple(),
+					((Statement) o2).asTriple());
+
+		} else {
+			return o1.equals(o2);
+		}
+	}
+
+	private List<Object> history = new ArrayList<Object>();
+
+	protected final void record(String tag, Object x, Object y) {
+		history.add(tag);
+		history.add(x);
+		history.add(y);
+	}
+
+	protected final void record(String tag, Object info) {
+		history.add(tag);
+		history.add(info);
+	}
+
+	public final int differ(Object... things) {
+		for (int i = 0; i < history.size(); i++) {
+			if (!things[i].equals(history.get(i))) {
+				return i;
+			}
+		}
+		return -1;
+	}
+
+	public final boolean has(Object... things) {
+		return history.equals(Arrays.asList(things));
+	}
+
+	public final void assertHas(Object... things) {
+		if (has(things) == false) {
+			int idx = differ(things);
+			Assert.fail("expected " + Arrays.asList(things) + " but got "
+					+ history + " differ at position " + idx);
+		}
+	}
+
+	public final void assertEmpty() {
+		if (history.size() > 0) {
+			Assert.fail("Should be no history but got " + history);
+		}
+	}
+
+	public final int size() {
+		return history.size();
+	}
+
+	public final boolean has(List<?> things) {
+		return history.equals(things);
+	}
+
+	public final boolean hasStart(List<Object> L) {
+		return L.size() <= history.size()
+				&& L.equals(history.subList(0, L.size()));
+	}
+
+	public final boolean hasEnd(List<Object> L) {
+		return L.size() <= history.size()
+				&& L.equals(history.subList(history.size() - L.size(),
+						history.size()));
+	}
+
+	public final void assertHas(List<?> things) {
+		if (has(things) == false)
+			Assert.fail("expected " + things + " but got " + history);
+	}
+
+	public final void assertContains(Object... things) {
+		if (contains(things) == false)
+			Assert.fail(String.format("expected %s but got %s",
+					Arrays.asList(things), history));
+	}
+
+	public final void assertHasStart(Object... start) {
+		List<Object> L = Arrays.asList(start);
+		if (hasStart(L) == false)
+			Assert.fail("expected " + L + " at the beginning of " + history);
+	}
+
+	public final void assertHasEnd(Object... end) {
+		List<Object> L = Arrays.asList(end);
+		if (hasEnd(L) == false)
+			Assert.fail("expected " + L + " at the end of " + history);
+	}
+
+	public final void clear() {
+		history.clear();
+	}
+
+	public final boolean contains(Object... objects) {
+		for (int i = 0; i < history.size(); i++) {
+			if (history.get(i).equals(objects[0])) {
+				boolean found = true;
+				for (int j = 1; j < objects.length; j++) {
+					if (i + j >= history.size()) {
+						found = false;
+						break;
+					}
+					if (!history.get(i + j).equals(objects[j])) {
+						found = false;
+						break;
+					}
+				}
+				if (found) {
+					return true;
+				}
+			}
+
+		}
+		return false;
+
+	}
+
+	public final Iterator<Object> from(Object start) {
+		Iterator<Object> iter = history.iterator();
+		while (iter.hasNext() && !iter.next().equals(start))
+			; // loop
+		return iter;
+	}
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/ContractTemplate.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/ContractTemplate.java b/jena-core/src/test/java/org/apache/jena/testing_framework/ContractTemplate.java
new file mode 100644
index 0000000..f7a16e5
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/ContractTemplate.java
@@ -0,0 +1,17 @@
+package org.apache.jena.testing_framework;
+
+import org.xenei.junit.contract.IProducer;
+
+public class ContractTemplate<P extends IProducer<?>> {
+
+	private P producer;
+
+	public final void setProducer(P producer) {
+		this.producer = producer;
+	}
+
+	protected final P getProducer() {
+		return producer;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/GraphEventManagerProducerInterface.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/GraphEventManagerProducerInterface.java b/jena-core/src/test/java/org/apache/jena/testing_framework/GraphEventManagerProducerInterface.java
new file mode 100644
index 0000000..70e8182
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/GraphEventManagerProducerInterface.java
@@ -0,0 +1,35 @@
+/*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ */
+package org.apache.jena.testing_framework;
+
+import org.apache.jena.graph.GraphEventManager;
+
+/**
+ * Foo producer for GraphEventManager testing.
+ * 
+ */
+public interface GraphEventManagerProducerInterface {
+
+	/**
+	 * Returns a GraphEventManager to take part in the test. Must be overridden
+	 * in a subclass.
+	 * 
+	 * @return The GraphEventManager implementation to test.
+	 */
+	public abstract GraphEventManager newEventManager();
+}


[26/50] [abbrv] jena git commit: Further simplification in jena-base

Posted by cl...@apache.org.
Further simplification in jena-base


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/a664cb6c
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/a664cb6c
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/a664cb6c

Branch: refs/heads/add-contract-tests
Commit: a664cb6cf9f98a20bee3d37f7df869cfb06950bd
Parents: 6b47534
Author: ajs6f <aj...@virginia.edu>
Authored: Mon May 4 15:15:23 2015 -0400
Committer: ajs6f <aj...@virginia.edu>
Committed: Mon May 4 19:49:52 2015 -0400

----------------------------------------------------------------------
 .../sparql/engine/iterator/QueryIterGroup.java  |  22 +-
 .../sparql/engine/iterator/QueryIterTopN.java   |   8 +-
 .../org/apache/jena/sparql/util/Context.java    |   2 +-
 .../org/apache/jena/atlas/iterator/Iter.java    |  22 +-
 .../jena/atlas/iterator/IteratorArray.java      |   3 +-
 .../org/apache/jena/atlas/lib/Allocator.java    |  28 ---
 .../org/apache/jena/atlas/lib/Callback.java     |   5 +-
 .../java/org/apache/jena/atlas/lib/Cell.java    |  99 ---------
 .../apache/jena/atlas/lib/CollectionUtils.java  |   9 +-
 .../java/org/apache/jena/atlas/lib/FileOps.java |  18 +-
 .../org/apache/jena/atlas/lib/ListUtils.java    |  65 ++----
 .../org/apache/jena/atlas/lib/MultiMap.java     | 146 -------------
 .../apache/jena/atlas/lib/MultiMapToList.java   |  43 ----
 .../apache/jena/atlas/lib/MultiMapToSet.java    |  47 ----
 .../org/apache/jena/atlas/lib/MultiSet.java     | 218 -------------------
 .../apache/jena/atlas/lib/PropertyUtils.java    |   4 +-
 .../org/apache/jena/atlas/lib/StrUtils.java     |  41 +---
 .../java/org/apache/jena/atlas/lib/Tuple.java   |   8 +-
 .../org/apache/jena/atlas/lib/TupleBuilder.java |  50 -----
 .../org/apache/jena/atlas/lib/cache/Getter.java |  25 ---
 .../java/org/apache/jena/atlas/lib/TS_Lib.java  |   1 -
 .../org/apache/jena/atlas/lib/TestMultiSet.java | 143 ------------
 .../impl/PropertyTableHashMapImpl.java          |  19 +-
 .../java/org/apache/jena/fuseki/FusekiLib.java  |   8 +-
 .../jena/fuseki/servlets/SPARQL_Protocol.java   |   4 +-
 .../java/org/apache/jena/fuseki/FusekiLib.java  |   8 +-
 .../apache/jena/fuseki/server/DataService.java  |   6 +-
 .../jena/fuseki/servlets/SPARQL_Protocol.java   |   2 +-
 .../jena/tdb/base/block/BlockMgrTracker.java    |  31 +--
 .../jena/query/text/EntityDefinition.java       |   5 +-
 .../assembler/EntityDefinitionAssembler.java    |  19 +-
 31 files changed, 112 insertions(+), 997 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterGroup.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterGroup.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterGroup.java
index e483c58..2b2e194 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterGroup.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterGroup.java
@@ -25,8 +25,10 @@ import java.util.List ;
 
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.iterator.IteratorDelayedInitialization ;
-import org.apache.jena.atlas.lib.MultiMap ;
 import org.apache.jena.atlas.lib.Pair ;
+import org.apache.jena.ext.com.google.common.collect.ArrayListMultimap;
+import org.apache.jena.ext.com.google.common.collect.HashMultimap;
+import org.apache.jena.ext.com.google.common.collect.Multimap;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.core.VarExprList ;
@@ -77,12 +79,12 @@ public class QueryIterGroup extends QueryIterPlainWrapper
             @Override
             protected Iterator<Binding> initializeIterator() {
 
-                boolean noAggregators =  ( aggregators == null || aggregators.size() == 0 ) ;
+                boolean noAggregators =  ( aggregators == null || aggregators.isEmpty() ) ;
                 
-                // Phase 1 : assign bindings to buckets by key and pump through the aggregrators.
-                MultiMap<Binding, Pair<Var, Accumulator>> accumulators = MultiMap.createMapList() ;
+                // Phase 1 : assign bindings to buckets by key and pump through the aggregators.
+                Multimap<Binding, Pair<Var, Accumulator>> accumulators = HashMultimap.create() ;
 
-                for ( ; iter.hasNext() ; )
+                while ( iter.hasNext() )
                 {
                     Binding b = iter.nextBinding() ;
                     Binding key = genKey(groupVarExpr, b, execCxt) ;
@@ -94,9 +96,8 @@ public class QueryIterGroup extends QueryIterPlainWrapper
                         continue ;
                     }
 
-                    Collection<Pair<Var, Accumulator>> accs = accumulators.get(key) ;
                     // Create if does not exist.
-                    if ( accs == null )
+                    if ( !accumulators.containsKey(key) )
                     {
                         for ( ExprAggregator agg : aggregators )
                         {
@@ -104,11 +105,10 @@ public class QueryIterGroup extends QueryIterPlainWrapper
                             Var v = agg.getVar() ;
                             accumulators.put(key, Pair.create(v, x)) ;
                         }
-                        accs = accumulators.get(key) ;
                     }
 
                     // Do the per-accumulator calculation.
-                    for ( Pair<Var, Accumulator> pair : accs )
+                    for ( Pair<Var, Accumulator> pair : accumulators.get(key) )
                         pair.getRight().accumulate(b, execCxt) ;
                 }
 
@@ -153,11 +153,11 @@ public class QueryIterGroup extends QueryIterPlainWrapper
                 
                 if ( noAggregators )
                     // We used placeholder so there are always the key. 
-                    return accumulators.keys().iterator() ;
+                    return accumulators.keySet().iterator() ;
                 
                 List<Binding> results = new ArrayList<>() ;
 
-                for ( Binding k : accumulators.keys() )
+                for ( Binding k : accumulators.keySet() )
                 {
                     Collection<Pair<Var, Accumulator>> accs = accumulators.get(k) ;
                     BindingMap b = BindingFactory.create(k) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterTopN.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterTopN.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterTopN.java
index 266fd1a..f5a39a9 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterTopN.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterTopN.java
@@ -18,6 +18,8 @@
 
 package org.apache.jena.sparql.engine.iterator;
 
+import static java.util.Arrays.asList;
+
 import java.util.Arrays ;
 import java.util.Comparator ;
 import java.util.Iterator ;
@@ -25,7 +27,6 @@ import java.util.List ;
 import java.util.PriorityQueue ;
 
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.IteratorArray ;
 import org.apache.jena.atlas.iterator.IteratorDelayedInitialization ;
 import org.apache.jena.atlas.lib.ReverseComparator ;
 import org.apache.jena.query.Query ;
@@ -87,7 +88,7 @@ public class QueryIterTopN extends QueryIterPlainWrapper
         return new IteratorDelayedInitialization<Binding>() {
             @Override
             protected Iterator<Binding> initializeIterator() {
-                for (; qIter.hasNext();) {
+                while ( qIter.hasNext() ) {
                     Binding binding = qIter.next() ;
                     if ( heap.size() < limit )
                         add(binding) ;
@@ -101,8 +102,7 @@ public class QueryIterTopN extends QueryIterPlainWrapper
                 Binding[] y = heap.toArray(new Binding[]{}) ;
                 heap = null ;
                 Arrays.sort(y, comparator) ;
-                IteratorArray<Binding> iter = IteratorArray.create(y) ;
-                return iter ;
+                return asList(y).iterator() ;
             }
         } ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-arq/src/main/java/org/apache/jena/sparql/util/Context.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/Context.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/Context.java
index 9107dea..f8c8ed9 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/Context.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/Context.java
@@ -273,7 +273,7 @@ public class Context
     {
         for ( Callback<Symbol> c : callbacks )
         {
-            c.proc(symbol) ;
+            c.apply(symbol) ;
         }
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java
index fc0a534..9cf45a7 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java
@@ -267,7 +267,7 @@ public class Iter<T> implements Iterator<T> {
      * stream until the first element not passing the filter)
      */
     public static <T> boolean every(Iterator<? extends T> stream, Predicate<T> filter) {
-        for (; stream.hasNext();) {
+        while ( stream.hasNext() ) {
             T item = stream.next() ;
             if ( !filter.test(item) )
                 return false ;
@@ -291,7 +291,7 @@ public class Iter<T> implements Iterator<T> {
      * the stream to first element passing the filter)
      */
     public static <T> boolean some(Iterator<? extends T> stream, Predicate<T> filter) {
-        for (; stream.hasNext();) {
+        while ( stream.hasNext() ) {
             T item = stream.next() ;
             if ( filter.test(item) )
                 return true ;
@@ -420,14 +420,14 @@ public class Iter<T> implements Iterator<T> {
 //    }
 
     public static <T> Iterator<T> removeNulls(Iterator<T> iter) {
-        return filter(iter, x -> x != null) ;
+        return filter(iter, Objects::nonNull) ;
     }
 
     /** Take the first N elements of an iterator - stop early if too few */
     public static <T> List<T> take(Iterator<T> iter, int N) {
         iter = new IteratorN<>(iter, N) ;
         List<T> x = new ArrayList<>(N) ;
-        for (; iter.hasNext();)
+        while ( iter.hasNext() )
             x.add(iter.next()) ;
         return x ;
     }
@@ -611,7 +611,7 @@ public class Iter<T> implements Iterator<T> {
 
     /** Send the elements of the iterator to a sink - consumes the iterator */
     public static <T> void sendToSink(Iterator<T> iter, Sink<T> sink) {
-        for (; iter.hasNext();) {
+        while ( iter.hasNext() ) {
             T thing = iter.next() ;
             sink.send(thing) ;
         }
@@ -635,11 +635,11 @@ public class Iter<T> implements Iterator<T> {
     // { return Iter.iter(Arrays.asList(objects)) ; }
 
     public static <T> Iter<T> iterSingleton(T x) {
-        return Iter.iter(SingletonIterator.create(x)) ;
+        return iter(SingletonIterator.create(x)) ;
     }
 
     public static <T> Iter<T> iter(Collection<T> collection) {
-        return Iter.iter(collection.iterator()) ;
+        return iter(collection.iterator()) ;
     }
 
     public static <T> Iter<T> iter(Iterator<T> iterator) {
@@ -667,7 +667,7 @@ public class Iter<T> implements Iterator<T> {
      * debugging
      */
     public static <T> Iterator<T> materialize(Iterator<T> iter) {
-        return Iter.toList(iter).iterator() ;
+        return toList(iter).iterator() ;
     }
 
     public static <T> Iter<T> concat(Iter<T> iter1, Iter<T> iter2) {
@@ -683,7 +683,7 @@ public class Iter<T> implements Iterator<T> {
             return iter2 ;
         if ( iter2 == null )
             return iter1 ;
-        return Iter.iter(iter1).append(Iter.iter(iter2)) ;
+        return iter(iter1).append(iter(iter2)) ;
     }
 
     public static <T> T first(Iterator<T> iter, Predicate<T> filter) {
@@ -790,7 +790,7 @@ public class Iter<T> implements Iterator<T> {
     }
 
     public Iter<T> removeNulls() {
-        return filter(x -> x != null) ;
+        return iter(removeNulls(this)) ;
     }
 
     public <R> Iter<R> map(Function<T, R> converter) {
@@ -823,7 +823,7 @@ public class Iter<T> implements Iterator<T> {
 
     /** Return an Iter that yields at most the first N items */
     public Iter<T> take(int N) {
-        return Iter.iter(take(iterator, N)) ;
+        return iter(take(iterator, N)) ;
     }
 
     /** Count the iterator (this is destructive on the iterator) */

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java
index a8cb1b2..70a8f26 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java
@@ -25,7 +25,8 @@ import java.util.Spliterator;
 
 /** Iterator over a Java base array */
 /**
- * Prefer {@link Arrays#spliterator(Object[])} or {@link Arrays#stream(Object[])}
+ * Prefer {@link Arrays#asList(Object...)} with {@link Iterable#iterator()} or
+ * {@link Arrays#spliterator(Object[])} or {@link Arrays#stream(Object[])}
  */
 @Deprecated
 public final class IteratorArray<T> implements Iterator<T>

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-base/src/main/java/org/apache/jena/atlas/lib/Allocator.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Allocator.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Allocator.java
deleted file mode 100644
index 84005de..0000000
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Allocator.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-public interface Allocator<T>
-{
-    /** Allocate a new T, different from others allocated */ 
-    public T create() ;
-    
-//    /** Reset the process of allocation - may cause equivalent objects to be created from before the reset */  
-//    public void reset() ;
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-base/src/main/java/org/apache/jena/atlas/lib/Callback.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Callback.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Callback.java
index d2f04f9..647625a 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Callback.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Callback.java
@@ -18,7 +18,8 @@
 
 package org.apache.jena.atlas.lib;
 
-public interface Callback<T>
+import java.util.function.Function;
+
+public interface Callback<T> extends Function<T, Void>
 {
-    public void proc(T arg) ;
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-base/src/main/java/org/apache/jena/atlas/lib/Cell.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Cell.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Cell.java
deleted file mode 100644
index 6910c0c..0000000
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Cell.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib ;
-
-
-/** Key-value slot, with chaining for lookup. */  
-public class Cell<K,V>
-{
-    private final Cell<K,V> previous ;
-    private final K key ;
-    private final V value ;
-
-    /** Create a slot with no key, value or parent - can be used a slot chain root */  
-    public Cell()               { this(null, null, null); }
-
-    public Cell(K key, V value) { this(key, value, null); }
-
-    private Cell(K key, V value, Cell<K, V> previous)
-    {
-        this.key = key ;
-        this.value = value ;
-        this.previous = previous ;
-    }
-
-    public Cell<K,V> extend(K key, V value)
-    {
-        return new Cell<>(key, value, this) ;
-    }
-    
-    public final V find(K k)
-    {
-        // Java, tail recursion, lack thereof.
-        Cell<K,V> slot = this ;
-
-        while (slot != null)
-        {
-            // Defend against null keys (e.g. the root of a slot chain). 
-            if ( k.equals(slot.key) )
-                return slot.value ;
-//            if ( previous == null )
-//              return null ;
-            slot = slot.previous ;
-        }
-        return null ;
-    }
-    
-      /* As it should be ... */
-//    public final V find(K k)
-//    {
-//        if ( k.equals(key) )
-//            return value ;
-//        if ( previous == null )
-//            return null ;
-//        return previous.find(k) ;
-//    }
-
-    private static final String sep = ", " ;
-    private void str(int level, StringBuilder acc)
-    {
-        if ( key == null && value == null )
-            return ;
-
-        if ( level != 0 )
-            acc.append(sep) ;
-        acc.append("(") ;
-        acc.append(key.toString()) ;
-        acc.append("->") ;
-        acc.append(value.toString()) ;
-        acc.append(")") ;
-        if ( previous != null )
-            previous.str(level+1, acc) ;
-    }
-
-    @Override
-    public String toString()
-    { 
-        StringBuilder sb = new StringBuilder() ;
-        sb.append("{ ") ;
-        str(0, sb) ;
-        sb.append(" }") ;
-        return sb.toString() ;
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java
index 759e543..9895df8 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java
@@ -19,16 +19,11 @@
 package org.apache.jena.atlas.lib;
 
 import java.util.Collection ;
-import java.util.Objects;
 
 public class CollectionUtils
-{
-    static public <T> void removeNulls(Collection<T> list)
-    {	
-    		list.removeIf(Objects::isNull);
-    }
-    
+{   
     static public <T> boolean disjoint(Collection<T> c1, Collection<T> c2)
     {
 		return c1.stream().noneMatch(c2::contains);
+    }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-base/src/main/java/org/apache/jena/atlas/lib/FileOps.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/FileOps.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/FileOps.java
index 6862f4a..cf2e6ee 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/FileOps.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/FileOps.java
@@ -19,11 +19,8 @@
 package org.apache.jena.atlas.lib ;
 
 import java.io.File ;
-import java.io.FileInputStream ;
-import java.io.FileOutputStream ;
 import java.io.IOException ;
-import java.nio.channels.FileChannel ;
-
+import java.nio.file.Files;
 import org.apache.jena.atlas.AtlasException ;
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.logging.Log ;
@@ -83,9 +80,8 @@ public class FileOps {
         if ( ! d.exists() )
             return ;
         
-        for ( File f : d.listFiles() ) {
-            if ( ".".equals(f.getName()) || "..".equals(f.getName()) )
-                continue ;
+		for (File f : d.listFiles(f -> !f.getName().equals(".")
+				&& !f.getName().equals(".."))) {
             if ( f.isDirectory() )
                 clearAll(f) ;
             f.delete() ;
@@ -215,13 +211,7 @@ public class FileOps {
     /** Copy a file */
     public static void copyFile(File source, File dest) {
         try {
-            @SuppressWarnings("resource")
-            FileChannel sourceChannel = new FileInputStream(source).getChannel() ;
-            @SuppressWarnings("resource")
-            FileChannel destChannel = new FileOutputStream(dest).getChannel() ;
-            destChannel.transferFrom(sourceChannel, 0, sourceChannel.size()) ;
-            sourceChannel.close() ;
-            destChannel.close() ;
+        		Files.copy(source.toPath(), dest.toPath());
         }
         catch (IOException ex) {
             IO.exception(ex) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
index 8315236..2d1345f 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
@@ -18,13 +18,13 @@
 
 package org.apache.jena.atlas.lib;
 
+import static java.util.Arrays.stream;
+import static java.util.stream.Collectors.joining;
+import static java.util.stream.Collectors.toList;
+
 import java.util.ArrayList ;
 import java.util.List ;
-import java.util.function.Consumer;
-
 import org.apache.jena.atlas.io.IndentedWriter ;
-import org.apache.jena.atlas.iterator.FilterUnique ;
-import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.logging.Log ;
 
 /** Various things for lists */
@@ -35,14 +35,13 @@ public class ListUtils
     public static <T>
     List<T> unique(List<T> list)
     {
-        Iter<T> iter = Iter.iter(list.iterator()) ;
-        return iter.filter(new FilterUnique<T>()).toList() ;
+    		return list.stream().distinct().collect(toList());
     }
     
     public static
     List<Integer> asList(int... values)
     {
-        List<Integer> x = new ArrayList<>() ;
+        List<Integer> x = new ArrayList<>(values.length) ;
         for ( int v : values )
             x.add(v) ;
         return x ;
@@ -50,47 +49,17 @@ public class ListUtils
     
     public static <T> String str(T[] array)
     {
-        StringBuilder buff = new StringBuilder() ;
-        String sep = "[" ;
-
-        for ( T anArray : array )
-        {
-            buff.append( sep );
-            sep = ", ";
-            buff.append( anArray );
-        }
-        buff.append("]") ;
-        return buff.toString() ;
+        return stream(array).map(String::valueOf).collect(joining(", ", "[", "]"));
     }
     
     public static String str(int[] array)
     {
-        StringBuilder buff = new StringBuilder() ;
-        String sep = "[" ;
-
-        for ( int anArray : array )
-        {
-            buff.append( sep );
-            sep = ", ";
-            buff.append( anArray );
-        }
-        buff.append("]") ;
-        return buff.toString() ;
+    		return stream(array).mapToObj(String::valueOf).collect(joining(", ", "[", "]"));
     }
     
     public static String str(long[] array)
     {
-        StringBuilder buff = new StringBuilder() ;
-        String sep = "[" ;
-
-        for ( long anArray : array )
-        {
-            buff.append( sep );
-            sep = ", ";
-            buff.append( anArray );
-        }
-        buff.append("]") ;
-        return buff.toString() ;
+    		return stream(array).mapToObj(String::valueOf).collect(joining(", ", "[", "]"));
     }
 
     public static <T> void print(IndentedWriter out, List<T> list)
@@ -98,23 +67,15 @@ public class ListUtils
         print(out, list, " ") ;
     }
     
-    public static <T> void print(final IndentedWriter out, List<T> list, final String sep)
+    public static <T> void print(final IndentedWriter out, List<T> list, final CharSequence sep)
     {
-        Consumer<T> output = new Consumer<T>() {
-            boolean first = true ;
-            @Override
-            public void accept(T item)
-            {
-                if ( ! first ) out.print(sep) ;
-                out.print(item.toString()) ;
-                first = false ;
-            }
-        } ;
-        Iter.apply(list.iterator(), output) ;
+		out.print(list.stream().map(String::valueOf).collect(joining(sep)));
     }
     
     /** Return a list of lists of all the elements of collection in every order
      *  Easy to run out of heap memory.
+     *  
+     *  See {@link com.google.common.collect.Collections2#permutations(Collection<E>)}
      */  
     static public <T> List<List<T>> permute(List<T> c)
     {

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMap.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMap.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMap.java
deleted file mode 100644
index 2782ea6..0000000
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMap.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import java.util.* ;
-
-import org.apache.jena.atlas.iterator.IteratorConcat ;
-
-/* Map from K to collection of V */
-
-public abstract class MultiMap<K, V>
-{
-    private Map<K, Collection<V>> map = new HashMap<>() ;
-
-    protected abstract Collection<V> createCollection() ;
-    
-    public static <K, V> MultiMapToList<K, V> createMapList() { return new MultiMapToList<>() ; }
-    public static <K, V> MultiMapToSet<K, V> createMapSet() { return new MultiMapToSet<>() ; }
-    
-    protected MultiMap() { }
-    
-    protected Collection<V> getByKey(K key) { 
-        return map.get(key) ; 
-    } 
-
-    public abstract Collection<V> get(K key) ; 
-    
-    public V getOne(K key) { 
-        Collection<V> c = map.get(key) ;
-        if ( c == null || c.size() == 0 ) 
-            return null ;
-        return c.iterator().next() ;
-    }
-    
-    public void putAll(K key, @SuppressWarnings("unchecked") V ... values)
-    {
-        for ( V v : values)
-            put(key, v) ;
-    }
-    
-    public void put(K key, V value)
-    { 
-        Collection<V> x = map.get(key) ;
-        if ( x == null )
-        {
-            x = createCollection() ;
-            map.put(key, x) ;
-        }
-        x.add(value) ;
-    }
-    
-    public void remove(K key, V value)  {
-        if ( map.containsKey(key))
-            map.get(key).remove(value) ;
-    }
-    public void removeKey(K key)        { map.remove(key) ; }
-    
-    protected Collection<V> valuesForKey(K key) { return map.get(key); }
-    public abstract Collection<V> values(K key) ;
-    public abstract Collection<V> values() ;
-
-    public boolean containsKey(K key) { return map.containsKey(key) ; }
-    
-    public Set<K> keys()        { return map.keySet() ; }
-    
-    public void clear()         { map.clear() ; }
-    
-    public boolean isEmpty()    { return map.isEmpty() ; }
-
-    /** Does not materialise the contents */
-    public Iterator<V> flatten()
-    {
-        IteratorConcat<V> all = new IteratorConcat<>() ;
-        for ( K k : map.keySet() )        
-        {
-            Collection<V> x =  map.get(k) ;
-            all.add(x.iterator()) ;
-        }
-        return all ;
-    }
-    
-    @Override
-    public boolean equals(Object obj) {
-        if ( this == obj )
-            return true ;
-        if ( obj == null )
-            return false ;
-        if ( getClass() != obj.getClass() )
-            return false ;
-        MultiMap<?,?> other = (MultiMap<?,?>)obj ;
-        if ( map == null ) {
-            if ( other.map != null )
-                return false ;
-        } else if ( !map.equals(other.map) )
-            return false ;
-        return true ;
-    }
-    
-    @Override
-    public int hashCode()       { return map.hashCode()^ 0x01010101 ; }
-    
-    @Override
-    public String toString()
-    {
-        StringBuilder sb = new StringBuilder() ;
-        sb.append("{ ") ;
-        boolean firstKey = true ;
-        for ( K key : keys() )
-        {
-            if ( ! firstKey )
-                sb.append(", ") ;
-            firstKey = false ;
-            sb.append(key) ;
-            sb.append(" => [") ;
-            boolean firstValue = true ; 
-            for ( V value : values(key) )
-            {
-                if ( firstValue )
-                    sb.append(" ") ;
-                else
-                    sb.append(", ") ;
-                sb.append(value) ;
-                firstValue = false ;
-            }
-            sb.append(" ] ") ;
-        }
-        sb.append("}") ;
-        return sb.toString() ;
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMapToList.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMapToList.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMapToList.java
deleted file mode 100644
index ac1ba70..0000000
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMapToList.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import java.util.ArrayList ;
-import java.util.Collection ;
-import java.util.List ;
-
-import org.apache.jena.atlas.iterator.Iter ;
-
-public class MultiMapToList<K,V> extends MultiMap<K,V> {
-    public static <K, V> MultiMapToList<K, V> create() { return new MultiMapToList<>() ; }
-    
-    @Override
-    protected Collection<V> createCollection() {
-        return new ArrayList<>() ;
-    }
-    
-    @Override
-    public List<V> get(K key) { return (List<V>)getByKey(key); }
-    
-    @Override
-    public List<V> values(K key) { return (List<V>)valuesForKey(key); }
-    
-    @Override
-    public List<V> values() { return Iter.toList(flatten()) ; }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMapToSet.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMapToSet.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMapToSet.java
deleted file mode 100644
index b89e05b..0000000
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMapToSet.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import java.util.Collection ;
-import java.util.HashSet ;
-import java.util.Set ;
-
-import org.apache.jena.atlas.iterator.Iter ;
-
-public class MultiMapToSet<K,V> extends MultiMap<K,V> {
-    public static <K, V> MultiMapToSet<K, V> create() { return new MultiMapToSet<>() ; }
-    
-    @Override
-    protected Collection<V> createCollection()
-    {
-        return new HashSet<>() ;
-    }
-    
-    @Override
-    public Set<V> get(K key) { return (Set<V>)getByKey(key) ; }
-    
-    @Override
-    public Set<V> values(K key) { return (Set<V>)valuesForKey(key); }
-
-    @Override
-    public Set<V> values() { return Iter.toSet(flatten()) ; }
-
-
-}
-

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiSet.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiSet.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiSet.java
deleted file mode 100644
index 3701042..0000000
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiSet.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import java.util.ArrayList ;
-import java.util.HashMap ;
-import java.util.Iterator ;
-import java.util.List ;
-import java.util.Map ;
-import java.util.NoSuchElementException ;
-
-/** A MultiSet - also known as a Bag
- */
-
-public class MultiSet<T> implements Iterable<T>
-{
-    private Map<T,RefLong> map   = new HashMap<>() ;
-    private int multiSetSize = 0 ;
-    
-    private RefLong _get(T obj)
-    {
-        RefLong z = map.get(obj) ;
-        if ( z == null )
-        {
-            z = new RefLong(0) ;
-            map.put(obj, z) ;
-        }
-        return z ;
-    }
- 
-    /** Does it contain any elements at all? */
-    public boolean isEmpty()        { return map.isEmpty() ; }
-
-    /** Does it contain the object? */
-    public boolean contains(T obj)  { return map.containsKey(obj) ; }
-    
-    /** Yield one object per element (i.e without counts) */
-    public Iterator<T> elements()   { return map.keySet().iterator() ; }
-
-    /** Add an object */
-    public void add(T obj)          { _get(obj).inc(); multiSetSize++ ; } 
-
-    /** Add an object, with cardinality n */
-    public void add(T obj, long n)
-    { 
-        if ( n <= 0 ) return ;
-        _get(obj).add(n) ;
-        multiSetSize += n ;
-    }
-    
-    /** Remove one occurrence of the object from the multiset */
-    public void remove(T obj)
-    {
-        RefLong x = map.get(obj) ;
-        if ( x == null ) return ;
-        x.dec() ;
-        multiSetSize-- ;
-        if ( x.value() == 0 )
-            map.remove(obj) ;
-    }
-    
-    /** Remove N occurrences of the object from the multiset */
-    public void remove(T obj, long n)
-    {
-        RefLong x = map.get(obj) ;
-        if ( x == null ) return ;
-        long z = x.value() ;
-        if ( z < n )
-            n = z ;
-        x.subtract(n) ;
-        multiSetSize -= n ;
-        if ( x.value() <= 0 )
-            map.remove(obj) ;
-    }    
-    
-
-    /** Remove all occurrences of the object in themultiset */
-    public void removeAll(T obj)
-    {
-        RefLong x = map.get(obj) ;
-        if ( x == null )
-            return ;
-        multiSetSize -= x.value() ;
-        map.remove(obj) ;
-    }
-
-    /* Remove everything */
-    public void clear() { map.clear() ; multiSetSize = 0 ; }
-    
-    
-    /** Get the count of the number of times the object appears in the multiset - i.e. it's cardinality.
-     * Returns zero when not present.
-     */
-    public long count(T obj)
-    {
-        if ( ! map.containsKey(obj) ) return 0 ;
-        return map.get(obj).value() ;
-    }
-    
-    public int size()
-    {
-//        int count = 0 ;
-//        for ( Map.Entry<T, RefLong> e : map.entrySet() )
-//            count += e.getValue().value() ;
-//        //return count ;
-//        if ( count != multiSetSize )
-//        {
-//            Log.warn(this, "Mismatch") ;
-//            return count ; 
-//        }
-
-        return multiSetSize ;
-    }
-    
-    private Iterator<T> iterator1()
-    {
-        // CRUDE
-        List<T> expanded = new ArrayList<>() ;
-        for ( Map.Entry<T, RefLong> e : map.entrySet() )
-        {
-            for ( int i = 0 ; i < e.getValue().value() ; i++ )
-                expanded.add(e.getKey()) ;
-        }
-        
-        return expanded.iterator() ;
-    }
-    
-    @Override
-    public Iterator<T> iterator()
-    {
-        return new Iterator<T>() {
-            
-            Iterator<T> keys = map.keySet().iterator() ;
-            T key = null ;
-            long keyCount = 0 ;
-            T slot = null ;
-            
-            @Override
-            public boolean hasNext()
-            {
-                if ( slot != null )
-                    return true ;
-                
-                if ( keys == null ) 
-                    return false ;
-                
-                if ( key != null )
-                {
-                    if ( keyCount < count(key) )
-                    {
-                        keyCount++ ;
-                        slot = key ;
-                        return true ;
-                    }
-                    // End of this key.
-                    key = null ;
-                }
-                    
-                if ( keys.hasNext() )
-                {
-                    key = keys.next() ;
-                    keyCount = 1 ;
-                    slot = key ;
-                    return true ;
-                }
-                keys = null ;
-                return false ;
-            }
-
-            @Override
-            public T next()
-            {
-                if ( ! hasNext() ) throw new NoSuchElementException() ;
-                T x = slot ;
-                slot = null ;
-                return x ;
-            }
-
-            @Override
-            public void remove()
-            { throw new UnsupportedOperationException() ; }
-        } ; 
-    }
-    
-    @Override 
-    public String toString()
-    {
-        StringBuilder sb = new StringBuilder() ;
-        sb.append("{") ;
-        String sep = "" ;
-        for ( Map.Entry<T, RefLong> e : map.entrySet() )
-        {
-            sb.append(sep) ;
-            sep = ", " ;
-            sb.append(e.getKey().toString()) ;
-            sb.append("=") ;
-            sb.append(Long.toString(e.getValue().value())) ;
-        }
-        sb.append("}") ;
-        return sb.toString() ;
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-base/src/main/java/org/apache/jena/atlas/lib/PropertyUtils.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/PropertyUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/PropertyUtils.java
index d4ac5b7..f9acfc8 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/PropertyUtils.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/PropertyUtils.java
@@ -92,7 +92,7 @@ public class PropertyUtils {
 
     /** Test whether a property has a value. Null tests equal to not present. */
     public boolean propertyEquals(Properties properties, String key, String value) {
-        return Lib.equal(properties.getProperty(key), value) ;
+        return Objects.equals(properties.getProperty(key), value) ;
     }
 
     /** Set property if not already set. */
@@ -130,7 +130,7 @@ public class PropertyUtils {
     public void checkMetadata(Properties properties, String key, String expected) {
         String value = properties.getProperty(key) ;
 
-        if ( !Lib.equal(value, value) )
+        if ( !Objects.equals(value, value) )
             inconsistent(properties, key, value, expected) ;
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-base/src/main/java/org/apache/jena/atlas/lib/StrUtils.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/StrUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/StrUtils.java
index 9a9be76..a61af11 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/StrUtils.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/StrUtils.java
@@ -18,10 +18,15 @@
 
 package org.apache.jena.atlas.lib;
 
+import static java.util.Arrays.stream;
+import static java.util.stream.Collectors.joining;
+import static java.util.stream.Collectors.toList;
+
 import java.io.UnsupportedEncodingException ;
 import java.util.ArrayList ;
 import java.util.List ;
 import java.util.Map ;
+import java.util.stream.Collectors;
 
 
 public class StrUtils //extends StringUtils
@@ -54,27 +59,12 @@ public class StrUtils //extends StringUtils
     
     private static String join(String sep, List<String> a)
     {
-        return join(sep, a.toArray(new String[0])) ;
+        return a.stream().collect(joining(sep));
     }
     
     private static String join(String sep, String...a)
-    {
-        if ( a.length == 0 )
-            return "" ;
-
-        if ( a.length == 1)
-            return a[0] ;
-
-        StringBuilder sbuff = new StringBuilder() ;
-        sbuff.append(a[0]) ;
-
-        for ( int i = 1 ; i < a.length ; i++ )
-        {
-            if ( sep != null )
-                sbuff.append(sep) ;
-            sbuff.append(a[i]) ;
-        }
-        return sbuff.toString() ;
+    {	
+    		return stream(a).collect(joining(sep));
     }
     
     public static final int CMP_GREATER  = +1 ;
@@ -127,12 +117,7 @@ public class StrUtils //extends StringUtils
     /** Split but also trim whiespace. */
     public static String[] split(String s, String splitStr)
     {
-        String[] x = s.split(splitStr) ;
-        for ( int i = 0 ; i < x.length ; i++ )
-        {
-            x[i] = x[i].trim() ;
-        }
-        return x ;
+        return stream(s.split(splitStr)).map(String::trim).toArray(String[]::new);
     }
     
     /** Does one string contain another string?
@@ -152,7 +137,7 @@ public class StrUtils //extends StringUtils
     
     public static String substitute(String str, Map<String, String>subs)
     {
-        for ( Map.Entry<String, String> e : subs.entrySet() )
+    		for ( Map.Entry<String, String> e : subs.entrySet() )
         {
             String param = e.getKey() ;
             if ( str.contains(param) ) 
@@ -182,10 +167,8 @@ public class StrUtils //extends StringUtils
     
     public static List<Character> toCharList(String str)
     {
-        List<Character> characters = new ArrayList<>(str.length()) ;
-        for ( Character ch : str.toCharArray() )
-            characters.add(ch) ;
-        return characters ;
+		return str.codePoints().mapToObj(i -> (char) i).map(Character::new)
+				.collect(toList());
     }
     
     // ==== Encoding and decoding strings based on a marker character (e.g. %)

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-base/src/main/java/org/apache/jena/atlas/lib/Tuple.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Tuple.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Tuple.java
index 35a97a5..f991d65 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Tuple.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Tuple.java
@@ -21,6 +21,7 @@ package org.apache.jena.atlas.lib ;
 import java.util.Arrays ;
 import java.util.Iterator ;
 import java.util.List ;
+import java.util.Objects;
 import java.util.function.Function;
 
 import org.apache.jena.atlas.iterator.Iter ;
@@ -37,9 +38,6 @@ public class Tuple<T> implements Iterable<T> {
     /**
      * Create a tuple from an array of elements. The array is not copied and
      * should not be modified after this call.
-     * <p>
-     * There is also a {@link TupleBuilder} which does create an idendent
-     * copy, in case that style is preferrable for creating tuples.
      */
     public static <X> Tuple<X> create(X[] elements) {
         return new Tuple<>(elements) ;
@@ -90,7 +88,7 @@ public class Tuple<T> implements Iterable<T> {
 
     @Override
     public Iterator<T> iterator() {
-        return Arrays.stream(tuple).iterator() ;
+        return Arrays.asList(tuple).iterator() ;
     }
 
     /** Return a tuple with the column mapping applied */
@@ -130,7 +128,7 @@ public class Tuple<T> implements Iterable<T> {
         for ( int i = 0 ; i < tuple.length ; i++ ) {
             Object obj1 = tuple[i] ;
             Object obj2 = x.tuple[i] ;
-            if ( !Lib.equal(obj1, obj2) )
+            if ( !Objects.equals(obj1, obj2) )
                 return false ;
         }
         return true ;

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-base/src/main/java/org/apache/jena/atlas/lib/TupleBuilder.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/TupleBuilder.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/TupleBuilder.java
deleted file mode 100644
index 278334d..0000000
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/TupleBuilder.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-
-import java.util.ArrayList ;
-import java.util.List ;
-
-/** Tuple builder class - tuples are immutable, this is how to create them in the builder style */
-public class TupleBuilder<T> 
-{
-    private List<T> x = new ArrayList<>() ;
-    
-    public TupleBuilder() { } 
-    
-    public TupleBuilder<T> add(T element) {
-        x.add(element) ;
-        return this ;
-    }
-    
-    public TupleBuilder<T> reset() {
-        x.clear() ;
-        return this ;
-    }
-    
-    public Tuple<T> build() { 
-        @SuppressWarnings("unchecked")
-        T[] elts = (T[])new Object[x.size()] ; 
-        // Copy contents, should not create a new array because elts
-        // is created with the right size so elts == elts2 
-        T[] elts2 = x.toArray(elts) ;
-        return new Tuple<>(elts2) ;
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Getter.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Getter.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Getter.java
deleted file mode 100644
index c9f879c..0000000
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Getter.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib.cache;
-
-/** A get interface */
-public interface Getter<K, V>
-{
-    public V get(K key) ; 
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-base/src/test/java/org/apache/jena/atlas/lib/TS_Lib.java
----------------------------------------------------------------------
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/lib/TS_Lib.java b/jena-base/src/test/java/org/apache/jena/atlas/lib/TS_Lib.java
index b91d4ad..ac543c0 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/lib/TS_Lib.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/lib/TS_Lib.java
@@ -46,7 +46,6 @@ import org.junit.runners.Suite ;
     , TestReverseComparator.class
     , TestTrie.class
     , TestFilenameProcessing.class
-    , TestMultiSet.class
     , TestNumberUtils.class
     , TestDateTimeUtils.class
 } )

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-base/src/test/java/org/apache/jena/atlas/lib/TestMultiSet.java
----------------------------------------------------------------------
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/lib/TestMultiSet.java b/jena-base/src/test/java/org/apache/jena/atlas/lib/TestMultiSet.java
deleted file mode 100644
index 477386b..0000000
--- a/jena-base/src/test/java/org/apache/jena/atlas/lib/TestMultiSet.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import java.util.Arrays ;
-import java.util.Collections ;
-import java.util.List ;
-
-import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.junit.BaseTest ;
-import org.apache.jena.atlas.lib.MultiSet ;
-import org.junit.Test ;
-
-
-public class TestMultiSet extends BaseTest
-{
-    @Test public void multiSet_01()
-    {
-        MultiSet<String> x = new MultiSet<>() ;
-        assertTrue(x.isEmpty()) ;
-        assertEquals(0, x.count("A")) ;
-    }
-
-    @Test public void multiSet_02()
-    {
-        MultiSet<String> x = new MultiSet<>() ;
-        x.add("A") ;
-        assertFalse(x.isEmpty()) ;
-        assertEquals(1, x.count("A") ) ;
-        x.add("A") ;
-        assertEquals(2, x.count("A") ) ;
-    }
-
-    @Test public void multiSet_03()
-    {
-        MultiSet<String> x = new MultiSet<>() ;
-        x.add("A") ;
-        x.add("A") ;
-        x.remove("A") ;
-        assertEquals(1, x.count("A") ) ;
-        assertTrue(x.contains("A")) ;
-        x.remove("A") ;
-        assertEquals(0, x.count("A") ) ;
-        assertFalse(x.contains("A")) ;
-    }
-
-    @Test public void multiSet_04()
-    {
-        String[] data = { } ;
-        iterTest(data) ;
-    }
-
-
-    @Test public void multiSet_05()
-    {
-        String[] data = { "A" } ;
-        iterTest(data) ;
-    }
-
-    @Test public void multiSet_06()
-    {
-        String[] data = { "A", "B", "C" } ;
-        iterTest(data) ;
-    }
-
-
-    @Test public void multiSet_07()
-    {
-        String[] data = { "A", "B", "C", "A" } ;
-        iterTest(data) ;
-    }
-
-    @Test public void multiSet_08()
-    {
-        String[] data = {  } ;
-        MultiSet<String> x = add(data) ;
-        assertEquals(0, x.size()) ;
-    }
-    
-    @Test public void multiSet_09()
-    {
-        String[] data = { "A", "A" } ;
-        MultiSet<String> x = add(data) ;
-        assertEquals(2, x.size()) ;
-    }
-
-    @Test public void multiSet_10()
-    {
-        String[] data = { "A", "A" } ;
-        MultiSet<String> x = add(data) ;
-        x.remove("A") ;
-        assertEquals(1, x.size()) ;
-        x.remove("A") ;
-        assertEquals(0, x.size()) ;
-        x.remove("A") ;
-        assertEquals(0, x.size()) ;
-    }
-    
-    @Test public void multiSet_11()
-    {
-        String[] data = { "A", "A" } ;
-        MultiSet<String> x = add(data) ;
-        long c = Iter.count(x.elements()) ;
-        assertEquals(1, c) ;
-    }
-    
-    private static MultiSet<String> add(String[] data)
-    {
-        MultiSet<String> x = new MultiSet<>() ;
-        for ( String str : data )
-            x.add(str) ;
-        return x ;
-    }
-    
-    private static void iterTest(String[] data)
-    {
-        List<String> expected = Arrays.asList(data) ;
-        MultiSet<String> x = new MultiSet<>() ;
-        for ( String str : data )
-            x.add(str) ;
-        List<String> actual = Iter.toList(x.iterator()) ;
-        Collections.sort(expected) ;
-        Collections.sort(actual) ;
-        assertEquals(expected, actual) ;
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-csv/src/main/java/org/apache/jena/propertytable/impl/PropertyTableHashMapImpl.java
----------------------------------------------------------------------
diff --git a/jena-csv/src/main/java/org/apache/jena/propertytable/impl/PropertyTableHashMapImpl.java b/jena-csv/src/main/java/org/apache/jena/propertytable/impl/PropertyTableHashMapImpl.java
index cee257f..622b3f1 100644
--- a/jena-csv/src/main/java/org/apache/jena/propertytable/impl/PropertyTableHashMapImpl.java
+++ b/jena-csv/src/main/java/org/apache/jena/propertytable/impl/PropertyTableHashMapImpl.java
@@ -19,11 +19,12 @@
 package org.apache.jena.propertytable.impl;
 
 import java.util.* ;
-import java.util.Map.Entry ;
+import java.util.Map.Entry;
 
 import org.apache.jena.atlas.iterator.Iter;
 import org.apache.jena.atlas.iterator.IteratorConcat;
-import org.apache.jena.atlas.lib.MultiMapToSet ;
+import org.apache.jena.ext.com.google.common.collect.HashMultimap;
+import org.apache.jena.ext.com.google.common.collect.SetMultimap ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.propertytable.Column;
@@ -50,7 +51,7 @@ public class PropertyTableHashMapImpl implements PropertyTable {
 	private Map<Node, Map<Node, Node>> valueIndex; 
 	// POS index
 	// Maps column Node to (value, subject Node) pairs
-	private Map<Node, MultiMapToSet<Node, Node>> valueReverseIndex; 
+	private Map<Node, SetMultimap<Node, Node>> valueReverseIndex; 
 
 	PropertyTableHashMapImpl() {
 		columnIndex = new HashMap<Node, Column>();
@@ -58,7 +59,7 @@ public class PropertyTableHashMapImpl implements PropertyTable {
 		rowIndex = new HashMap<Node, Row>();
 		rowList = new ArrayList<Row>();
 		valueIndex = new HashMap<Node, Map<Node, Node>>();
-		valueReverseIndex = new HashMap<Node, MultiMapToSet<Node, Node>>();
+		valueReverseIndex = new HashMap<Node, SetMultimap<Node, Node>>();
 	}
 
 	@Override
@@ -120,7 +121,7 @@ public class PropertyTableHashMapImpl implements PropertyTable {
 		
 		
 		Node p = column.getColumnKey();
-		final MultiMapToSet<Node, Node> valueToSubjectMap = valueReverseIndex.get(p);
+		final SetMultimap<Node, Node> valueToSubjectMap = valueReverseIndex.get(p);
 		if ( valueToSubjectMap == null ) 
 		    return NullIterator.instance() ;
 		final Set<Node> subjects = valueToSubjectMap.get(value);
@@ -171,7 +172,7 @@ public class PropertyTableHashMapImpl implements PropertyTable {
 		columnIndex.put(p, new ColumnImpl(this, p));
 		columnList.add(columnIndex.get(p));
 		valueIndex.put(p, new HashMap<Node, Node>());
-		valueReverseIndex.put(p, MultiMapToSet.<Node, Node> create());
+		valueReverseIndex.put(p, HashMultimap.create());
 		return getColumn(p);
 	}
 
@@ -226,7 +227,7 @@ public class PropertyTableHashMapImpl implements PropertyTable {
 		
 		
 		Node p = column.getColumnKey();
-		final MultiMapToSet<Node, Node> valueToSubjectMap = valueReverseIndex.get(p);
+		final SetMultimap<Node, Node> valueToSubjectMap = valueReverseIndex.get(p);
 		if ( valueToSubjectMap == null )
 		    return Collections.emptyList() ;
 		final Set<Node> subjects = valueToSubjectMap.get(value);
@@ -257,7 +258,7 @@ public class PropertyTableHashMapImpl implements PropertyTable {
 
 	private void addToReverseMap(final Node p, final Node s, final Node oldValue, final Node value) {
 
-		final MultiMapToSet<Node, Node> valueToSubjectMap = valueReverseIndex.get(p);
+		final SetMultimap<Node, Node> valueToSubjectMap = valueReverseIndex.get(p);
 		if ( valueToSubjectMap == null )
             return ; 
 		valueToSubjectMap.remove(oldValue, s);
@@ -281,7 +282,7 @@ public class PropertyTableHashMapImpl implements PropertyTable {
 
 	private void removeFromReverseMap(final Node p, final Node s,
 			final Node value) {
-		final MultiMapToSet<Node, Node> valueTokeysMap = valueReverseIndex.get(p);
+		final SetMultimap<Node, Node> valueTokeysMap = valueReverseIndex.get(p);
 		if ( valueTokeysMap == null )
 		    return ;
 		valueTokeysMap.remove(s, value);

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiLib.java
----------------------------------------------------------------------
diff --git a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiLib.java b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiLib.java
index ca216f3..e06d692 100644
--- a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiLib.java
+++ b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiLib.java
@@ -23,9 +23,9 @@ import java.util.Iterator ;
 import javax.servlet.http.HttpServletRequest ;
 
 import org.apache.commons.lang.StringUtils ;
-import org.apache.jena.atlas.lib.MultiMap ;
-import org.apache.jena.atlas.lib.MultiMapToList ;
 import org.apache.jena.atlas.web.ContentType ;
+import org.apache.jena.ext.com.google.common.collect.ArrayListMultimap;
+import org.apache.jena.ext.com.google.common.collect.Multimap;
 import org.apache.jena.fuseki.servlets.HttpAction ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
@@ -87,8 +87,8 @@ public class FusekiLib {
     }
 
     /** Parse the query string - do not process the body even for a form */
-    public static MultiMap<String, String> parseQueryString(HttpServletRequest req) {
-        MultiMap<String, String> map = MultiMapToList.create() ;
+    public static Multimap<String, String> parseQueryString(HttpServletRequest req) {
+        Multimap<String, String> map = ArrayListMultimap.create() ;
 
         // Don't use ServletRequest.getParameter or getParamterNames
         // as that reads form data. This code parses just the query string.

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
----------------------------------------------------------------------
diff --git a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
index 84bb858..ed106d8 100644
--- a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
+++ b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
@@ -24,6 +24,8 @@ import static org.apache.jena.fuseki.HttpNames.paramNamedGraphURI ;
 import java.util.Arrays ;
 import java.util.Collections ;
 import java.util.List ;
+import java.util.Objects;
+
 import javax.servlet.http.HttpServletRequest ;
 
 import org.apache.jena.atlas.iterator.Iter ;
@@ -74,7 +76,7 @@ public  abstract class SPARQL_Protocol extends SPARQL_ServletBase
 
     private static List<String> removeEmptyValues(List<String> list)
     {
-        return Iter.iter(list).filter(item -> item != null && item.length() != 0).toList() ;
+        return Iter.iter(list).filter(Objects::nonNull).filter(item -> !item.isEmpty()).toList() ;
     }
     
     protected static int countParamOccurences(HttpServletRequest request, String param)

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/FusekiLib.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/FusekiLib.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/FusekiLib.java
index 3a2a409..1138260 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/FusekiLib.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/FusekiLib.java
@@ -22,9 +22,9 @@ import java.util.Iterator ;
 
 import javax.servlet.http.HttpServletRequest ;
 
-import org.apache.jena.atlas.lib.MultiMap ;
-import org.apache.jena.atlas.lib.MultiMapToList ;
 import org.apache.jena.atlas.web.ContentType ;
+import org.apache.jena.ext.com.google.common.collect.ArrayListMultimap;
+import org.apache.jena.ext.com.google.common.collect.Multimap;
 import org.apache.jena.fuseki.server.SystemState ;
 import org.apache.jena.fuseki.servlets.HttpAction ;
 import org.apache.jena.graph.Graph ;
@@ -95,8 +95,8 @@ public class FusekiLib {
     }
 
     /** Parse the query string - do not process the body even for a form */
-    public static MultiMap<String, String> parseQueryString(HttpServletRequest req) {
-        MultiMap<String, String> map = MultiMapToList.create() ;
+    public static Multimap<String, String> parseQueryString(HttpServletRequest req) {
+        Multimap<String, String> map = ArrayListMultimap.create() ;
 
         // Don't use ServletRequest.getParameter or getParamterNames
         // as that reads form data. This code parses just the query string.

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/DataService.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/DataService.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/DataService.java
index 1037390..e4b8793 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/DataService.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/DataService.java
@@ -25,8 +25,8 @@ import java.util.* ;
 import java.util.concurrent.atomic.AtomicBoolean ;
 import java.util.concurrent.atomic.AtomicLong ;
 
-import org.apache.jena.atlas.lib.MultiMap ;
-import org.apache.jena.atlas.lib.MultiMapToList ;
+import org.apache.jena.ext.com.google.common.collect.ArrayListMultimap;
+import org.apache.jena.ext.com.google.common.collect.ListMultimap;
 import org.apache.jena.fuseki.DEF ;
 import org.apache.jena.fuseki.Fuseki ;
 import org.apache.jena.fuseki.build.DataServiceDesc ;
@@ -54,7 +54,7 @@ public class DataService { //implements DatasetMXBean {
     private final DataServiceDesc svcDesc ;
     private DatasetGraph dataset = null ;              // Only valid if active.
 
-    private MultiMapToList<OperationName, Endpoint> operations     = MultiMap.createMapList() ;
+    private ListMultimap<OperationName, Endpoint> operations     = ArrayListMultimap.create() ;
     private Map<String, Endpoint> endpoints                        = new HashMap<>() ;
     
     private volatile DatasetStatus state = UNINITIALIZED ;

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
index 2a19d03..0be8b6c 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
@@ -79,7 +79,7 @@ public  abstract class SPARQL_Protocol extends ActionSPARQL
         return Iter.iter(list).filter(acceptNonEmpty).toList() ;
     }
     
-    private static Predicate<String> acceptNonEmpty = item -> item != null && item.length() != 0;
+    private static Predicate<String> acceptNonEmpty = item -> item != null && !item.isEmpty();
     
     protected static int countParamOccurences(HttpServletRequest request, String param)
     {

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-tdb/src/main/java/org/apache/jena/tdb/base/block/BlockMgrTracker.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/base/block/BlockMgrTracker.java b/jena-tdb/src/main/java/org/apache/jena/tdb/base/block/BlockMgrTracker.java
index 0173261..9d2f9ee 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/base/block/BlockMgrTracker.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/base/block/BlockMgrTracker.java
@@ -24,7 +24,8 @@ import java.util.ArrayList ;
 import java.util.Iterator ;
 import java.util.List ;
 
-import org.apache.jena.atlas.lib.MultiSet ;
+import org.apache.jena.ext.com.google.common.collect.HashMultiset;
+import org.apache.jena.ext.com.google.common.collect.Multiset;
 import org.apache.jena.atlas.lib.Pair ;
 import org.apache.jena.tdb.TDBException ;
 import org.slf4j.Logger ;
@@ -42,9 +43,9 @@ public class BlockMgrTracker /*extends BlockMgrWrapper*/ implements BlockMgr
     // ---- State for tracking
     // Track and count block references and releases
     //   No - the page is dirty.
-    protected final MultiSet<Long> activeReadBlocks   = new MultiSet<>() ;
-    protected final MultiSet<Long> activeWriteBlocks  = new MultiSet<>() ;
-    protected final MultiSet<Long> activeIterBlocks   = new MultiSet<>() ;
+    protected final Multiset<Long> activeReadBlocks   = HashMultiset.create() ;
+    protected final Multiset<Long> activeWriteBlocks  = HashMultiset.create() ;
+    protected final Multiset<Long> activeIterBlocks   = HashMultiset.create() ;
     // Track the operations 
     protected final List<Pair<Action, Long>> actions = new ArrayList<>() ;
     protected final List<Iterator<?>> activeIterators = new ArrayList<>() ;
@@ -59,13 +60,6 @@ public class BlockMgrTracker /*extends BlockMgrWrapper*/ implements BlockMgr
         actions.clear() ;
     }
     
-    private void clearInternalIter()
-    {
-        clearInternalRW() ;
-        activeIterators.clear() ;
-        activeIterBlocks.clear() ;
-    }
-
     private int inRead = 0 ;
     private int inIterator = 0 ;
     private boolean inUpdate = false ;
@@ -79,11 +73,6 @@ public class BlockMgrTracker /*extends BlockMgrWrapper*/ implements BlockMgr
         return new BlockMgrTracker(label, blkMgr) ;
     }
 
-    private BlockMgrTracker(BlockMgr blockMgr)
-    {
-        this(LoggerFactory.getLogger(BlockMgrTracker.class), blockMgr.getLabel(), blockMgr) ;
-    }
-    
     private BlockMgrTracker(String label, BlockMgr blockMgr)
     {
         this(loggerDefault, label, blockMgr) ;
@@ -411,7 +400,7 @@ public class BlockMgrTracker /*extends BlockMgrWrapper*/ implements BlockMgr
     }
 
 
-    private void checkEmpty(String string, MultiSet<Long> blocks)
+    private void checkEmpty(String string, Multiset<Long> blocks)
     {
         if ( ! blocks.isEmpty() )
         {
@@ -440,11 +429,6 @@ public class BlockMgrTracker /*extends BlockMgrWrapper*/ implements BlockMgr
         log.warn(msg(string)) ;
     }
 
-    private void warn(Action action, String string)
-    {
-        warn(action + ": " + string) ;
-    }
-   
     private void error(String string)
     {
         log.error(msg(string)) ;
@@ -461,9 +445,6 @@ public class BlockMgrTracker /*extends BlockMgrWrapper*/ implements BlockMgr
         //debugPoint() ;
     }
 
-    // Do nothing - but use a a breakpoint point.
-    private void debugPoint() {}
-
     private void history()
     {
         info("History") ;

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-text/src/main/java/org/apache/jena/query/text/EntityDefinition.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/EntityDefinition.java b/jena-text/src/main/java/org/apache/jena/query/text/EntityDefinition.java
index 1eb97b9..2f15ffb 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/EntityDefinition.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/EntityDefinition.java
@@ -23,7 +23,8 @@ import java.util.Collections ;
 import java.util.HashMap ;
 import java.util.Map ;
 
-import org.apache.jena.atlas.lib.MultiMap ;
+import org.apache.jena.ext.com.google.common.collect.ArrayListMultimap;
+import org.apache.jena.ext.com.google.common.collect.ListMultimap;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.rdf.model.Resource ;
 import org.apache.lucene.analysis.Analyzer ;
@@ -34,7 +35,7 @@ import org.apache.lucene.analysis.Analyzer ;
 public class EntityDefinition {
     private final Map<Node, String>      predicateToField = new HashMap<>() ;
     private final Map<String, Analyzer>    fieldToAnalyzer  = new HashMap<>();
-    private final MultiMap<String, Node> fieldToPredicate = MultiMap.createMapList() ;
+    private final ListMultimap<String, Node> fieldToPredicate = ArrayListMultimap.create() ;
     private final Collection<String>     fields           = Collections.unmodifiableCollection(fieldToPredicate.keys()) ;
     // private final Collection<String> fields =
     // Collections.unmodifiableCollection(fieldToPredicate.keySet()) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/a664cb6c/jena-text/src/main/java/org/apache/jena/query/text/assembler/EntityDefinitionAssembler.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/assembler/EntityDefinitionAssembler.java b/jena-text/src/main/java/org/apache/jena/query/text/assembler/EntityDefinitionAssembler.java
index f677778..a54fc92 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/assembler/EntityDefinitionAssembler.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/assembler/EntityDefinitionAssembler.java
@@ -28,9 +28,11 @@ import java.util.Map;
 import org.apache.jena.assembler.Assembler ;
 import org.apache.jena.assembler.Mode ;
 import org.apache.jena.assembler.assemblers.AssemblerBase ;
-import org.apache.jena.atlas.lib.MultiMap ;
 import org.apache.jena.atlas.lib.StrUtils ;
 import org.apache.jena.atlas.logging.Log ;
+import org.apache.jena.ext.com.google.common.collect.HashMultimap;
+import org.apache.jena.ext.com.google.common.collect.Multimap;
+import org.apache.jena.ext.com.google.common.collect.Multimaps;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.query.* ;
 import org.apache.jena.query.text.EntityDefinition ;
@@ -88,7 +90,7 @@ public class EntityDefinitionAssembler extends AssemblerBase implements Assemble
         String graphField = qsol1.contains("graphField") ? qsol1.getLiteral("graphField").getLexicalForm() : null;
         String defaultField = qsol1.contains("dftField") ? qsol1.getLiteral("dftField").getLexicalForm() : null ;
 
-        MultiMap<String, Node> mapDefs = MultiMap.createMapList() ; 
+        Multimap<String, Node> mapDefs = HashMultimap.create() ; 
         Map<String, Analyzer> analyzerDefs = new HashMap<>();
 
         Statement listStmt = root.getProperty(TextVocab.pMap);
@@ -97,7 +99,7 @@ public class EntityDefinitionAssembler extends AssemblerBase implements Assemble
             if (! n.isResource()) {
                 throw new TextIndexException("Text list node is not a resource : " + n);
             }
-            Resource listResource = (Resource) n;
+            Resource listResource = n.asResource();
             if (listResource.equals(RDF.nil)) {
                 break;  // end of the list
             }
@@ -110,7 +112,7 @@ public class EntityDefinitionAssembler extends AssemblerBase implements Assemble
             if (! n.isResource()) {
                 throw new TextIndexException("Text map list entry is not a resource : " + n);
             }
-            Resource listEntry = (Resource) n;
+            Resource listEntry = n.asResource();
 
             Statement fieldStatement = listEntry.getProperty(TextVocab.pField);
             if (fieldStatement == null) {
@@ -120,7 +122,7 @@ public class EntityDefinitionAssembler extends AssemblerBase implements Assemble
             if (! n.isLiteral()) {
                 throw new TextIndexException("Text map entry field property has no literal value : " + n);
             }
-            String field = ((Literal)n).getLexicalForm();
+            String field = n.asLiteral().getLexicalForm();
 
             Statement predicateStatement = listEntry.getProperty(TextVocab.pPredicate);
             if (predicateStatement == null) {
@@ -130,8 +132,7 @@ public class EntityDefinitionAssembler extends AssemblerBase implements Assemble
             if (! n.isURIResource()) {
                 throw new TextIndexException("Text map entry predicate property has non resource value : " + n);
             }
-            Resource predicate = (Resource) n;
-            mapDefs.put(field, predicate.asNode()) ;
+            mapDefs.put(field, n.asNode()) ;
 
             Statement analyzerStatement = listEntry.getProperty(TextVocab.pAnalyzer);
             if (analyzerStatement != null) {
@@ -139,7 +140,7 @@ public class EntityDefinitionAssembler extends AssemblerBase implements Assemble
                 if (! n.isResource()) {
                     throw new TextIndexException("Text map entry analyzer property is not a resource : " + n);
                 }
-                Resource analyzerResource = (Resource) n;
+                Resource analyzerResource = n.asResource();
                 Analyzer analyzer = (Analyzer) a.open(analyzerResource);
                 analyzerDefs.put(field, analyzer);
             }
@@ -151,7 +152,7 @@ public class EntityDefinitionAssembler extends AssemblerBase implements Assemble
         // Primary field/predicate
         if ( defaultField != null ) {
             Collection<Node> c = mapDefs.get(defaultField) ;
-            if ( c == null )
+            if ( c.isEmpty() )
                 throw new TextIndexException("No definition of primary field '"+defaultField+"'") ;
         }
 


[19/50] [abbrv] jena git commit: Update test to use all list values created for testing

Posted by cl...@apache.org.
Update test to use all list values created for testing


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/26c97e6e
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/26c97e6e
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/26c97e6e

Branch: refs/heads/add-contract-tests
Commit: 26c97e6ea3a77dccb247f3f85bd80e535119c65a
Parents: ada26f2
Author: Bruno P. Kinoshita <br...@yahoo.com.br>
Authored: Mon May 4 22:01:13 2015 +1200
Committer: Bruno P. Kinoshita <br...@yahoo.com.br>
Committed: Mon May 4 22:01:13 2015 +1200

----------------------------------------------------------------------
 .../org/apache/jena/util/iterator/test/TestResourceUtils.java     | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/26c97e6e/jena-core/src/test/java/org/apache/jena/util/iterator/test/TestResourceUtils.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/util/iterator/test/TestResourceUtils.java b/jena-core/src/test/java/org/apache/jena/util/iterator/test/TestResourceUtils.java
index c6308b0..18cb0e6 100644
--- a/jena-core/src/test/java/org/apache/jena/util/iterator/test/TestResourceUtils.java
+++ b/jena-core/src/test/java/org/apache/jena/util/iterator/test/TestResourceUtils.java
@@ -197,12 +197,14 @@ public class TestResourceUtils
         in.addAll( abcde );
         List<Resource> out = null;
         assertTrue( in.equals( abcde ) );
+        assertFalse( in.equals(abde) );
         assertFalse( in.equals( cde ));
         assertNull( out );
 
         out = ResourceUtils.removeEquiv( in, RDFS.subClassOf, a );
 
         assertFalse( in.equals( abcde ) );
+        assertFalse( in.equals(abde) );
         assertTrue( in.equals( cde ));
         assertNotNull( out );
         assertEquals( out, ab );
@@ -210,6 +212,7 @@ public class TestResourceUtils
         out = ResourceUtils.removeEquiv( in, RDFS.subClassOf, e );
 
         assertFalse( in.equals( abcde ) );
+        assertFalse( in.equals(abde) );
         assertTrue( in.equals( Collections.singletonList( c ) ));
         assertNotNull( out );
         assertEquals( out, de );


[05/50] [abbrv] jena git commit: This closes #54

Posted by cl...@apache.org.
This closes #54


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/5b557956
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/5b557956
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/5b557956

Branch: refs/heads/add-contract-tests
Commit: 5b557956f5ee69c51022ce21edab1afabd104c31
Parents: 3573bd7 65ce6b5
Author: Andy Seaborne <an...@apache.org>
Authored: Fri May 1 14:12:19 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri May 1 14:12:19 2015 +0100

----------------------------------------------------------------------
 jena-core/src/main/java/jena/schemagen.java     |  8 +-
 .../assembler/assemblers/AssemblerBase.java     | 17 +---
 .../assembler/assemblers/ModelAssembler.java    | 26 ++----
 .../java/org/apache/jena/graph/GraphUtil.java   | 30 +------
 .../main/java/org/apache/jena/graph/Triple.java | 12 +--
 .../apache/jena/mem/GraphTripleStoreBase.java   |  6 +-
 .../jena/ontology/impl/AllDifferentImpl.java    |  7 +-
 .../impl/BooleanClassDescriptionImpl.java       |  2 +-
 .../jena/ontology/impl/DataRangeImpl.java       |  2 +-
 .../jena/ontology/impl/EnumeratedClassImpl.java |  2 +-
 .../jena/ontology/impl/IndividualImpl.java      |  2 +-
 .../apache/jena/ontology/impl/OntClassImpl.java |  4 +-
 .../apache/jena/ontology/impl/OntModelImpl.java | 44 ++--------
 .../jena/ontology/impl/OntPropertyImpl.java     |  4 +-
 .../jena/ontology/impl/OntResourceImpl.java     | 91 +++-----------------
 .../java/org/apache/jena/rdf/model/RDFList.java |  5 +-
 .../org/apache/jena/rdf/model/Statement.java    | 20 +----
 .../jena/rdf/model/impl/IteratorFactory.java    | 15 +---
 .../apache/jena/rdf/model/impl/ModelCom.java    | 13 +--
 .../jena/rdf/model/impl/ModelReifier.java       | 15 +---
 .../apache/jena/rdf/model/impl/RDFListImpl.java |  3 +-
 .../jena/rdfxml/xmloutput/impl/Relation.java    | 27 +-----
 .../jena/rdfxml/xmloutput/impl/Unparser.java    | 12 +--
 .../jena/util/iterator/ExtendedIterator.java    |  3 +-
 .../apache/jena/util/iterator/LazyIterator.java |  4 +-
 .../org/apache/jena/util/iterator/Map1.java     | 17 ++--
 .../apache/jena/util/iterator/Map1Iterator.java |  7 +-
 .../apache/jena/util/iterator/NiceIterator.java |  3 +-
 .../jena/graph/test/TestFindLiterals.java       |  9 +-
 .../org/apache/jena/graph/test/TestTriple.java  |  6 +-
 .../apache/jena/rdf/model/test/TestList.java    |  9 +-
 .../jena/rdf/model/test/TestStatements.java     |  6 +-
 .../util/iterator/test/TestMapIterators.java    |  8 +-
 .../model/impl/SecuredContainerImpl.java        | 23 +----
 .../model/impl/SecuredNodeIterator.java         |  8 +-
 .../model/impl/SecuredRDFListImpl.java          | 29 +++----
 .../model/impl/SecuredRSIterator.java           |  9 +-
 .../model/impl/SecuredResIterator.java          |  8 +-
 .../model/impl/SecuredStatementIterator.java    |  8 +-
 39 files changed, 124 insertions(+), 400 deletions(-)
----------------------------------------------------------------------



[02/50] [abbrv] jena git commit: JENA-904: Fix for LPBRuleEngine leaking activeInterpreters

Posted by cl...@apache.org.
JENA-904: Fix for LPBRuleEngine leaking activeInterpreters


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/4edc6d38
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/4edc6d38
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/4edc6d38

Branch: refs/heads/add-contract-tests
Commit: 4edc6d38613970894165565000f9d1f1a50a6e4c
Parents: 84d0615
Author: Andy Seaborne <an...@apache.org>
Authored: Fri May 1 12:56:24 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri May 1 12:56:24 2015 +0100

----------------------------------------------------------------------
 .../rulesys/impl/ConsumerChoicePointFrame.java  |  11 ++
 .../jena/reasoner/rulesys/impl/FrameObject.java |   5 +-
 .../reasoner/rulesys/impl/LPInterpreter.java    |   3 +-
 .../rulesys/impl/LPTopGoalIterator.java         |   1 +
 .../rulesys/impl/TopLevelTripleMatchFrame.java  |   2 +
 .../reasoner/rulesys/impl/TripleMatchFrame.java |   1 +
 .../rulesys/impl/TestLPBRuleEngineLeak.java     | 171 +++++++++++++++++++
 .../jena/reasoner/rulesys/test/TestPackage.java |   4 +
 8 files changed, 196 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/4edc6d38/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/ConsumerChoicePointFrame.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/ConsumerChoicePointFrame.java b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/ConsumerChoicePointFrame.java
index e0d0b85..a1c2c26 100644
--- a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/ConsumerChoicePointFrame.java
+++ b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/ConsumerChoicePointFrame.java
@@ -161,6 +161,17 @@ public class ConsumerChoicePointFrame extends GenericTripleMatchFrame
         context.setReady(this);
     }
     
+    @Override
+    public void close() {    	
+    	super.close();
+    	if (generator != null && generator.interpreter != null) {
+    		generator.interpreter.close();
+    		// .. but NOT 
+    		//generator.setComplete();
+    		// as it seems to cause other tests to fail
+    	}
+    }
+    
     /**
      * Notify that this consumer choice point has finished consuming all
      * the results of a closed generator.

http://git-wip-us.apache.org/repos/asf/jena/blob/4edc6d38/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/FrameObject.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/FrameObject.java b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/FrameObject.java
index 39ccc52..4128d36 100644
--- a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/FrameObject.java
+++ b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/FrameObject.java
@@ -54,7 +54,10 @@ public class FrameObject {
      * Close the frame actively. This frees any internal resources, frees this frame and
      * frees the frame to which this is linked.
      */
-    public void close() {
+    public void close() {  
+    	if (link != null) {
+    		link.close();
+    	}
     }
     
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/4edc6d38/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/LPInterpreter.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/LPInterpreter.java b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/LPInterpreter.java
index 3edbb6d..fee6c97 100644
--- a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/LPInterpreter.java
+++ b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/LPInterpreter.java
@@ -164,8 +164,9 @@ public class LPInterpreter {
      */
     public void close() {
         isComplete = true;
-        engine.detach(this);
         if (cpFrame != null) cpFrame.close();
+        engine.detach(this);
+        
     }
     
     /**

http://git-wip-us.apache.org/repos/asf/jena/blob/4edc6d38/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/LPTopGoalIterator.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/LPTopGoalIterator.java b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/LPTopGoalIterator.java
index cb14070..d4d471b 100644
--- a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/LPTopGoalIterator.java
+++ b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/LPTopGoalIterator.java
@@ -197,6 +197,7 @@ public class LPTopGoalIterator implements ClosableIterator<Triple>, LPInterprete
 
                     // Check for any dangling generators which are complete
                     interpreter.getEngine().checkForCompletions();
+                    interpreter.close();
                     // Close this top goal
                     lookAhead = null;
                     //LogFactory.getLog( getClass() ).debug( "Nulling and closing LPTopGoalIterator " + interpreter );

http://git-wip-us.apache.org/repos/asf/jena/blob/4edc6d38/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/TopLevelTripleMatchFrame.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/TopLevelTripleMatchFrame.java b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/TopLevelTripleMatchFrame.java
index 80a718d..0caf8b2 100644
--- a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/TopLevelTripleMatchFrame.java
+++ b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/TopLevelTripleMatchFrame.java
@@ -66,6 +66,8 @@ public class TopLevelTripleMatchFrame extends GenericChoiceFrame {
     @Override
     public void close() {
         if (matchIterator != null) matchIterator.close();
+        super.close();
+        
     }
         
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/4edc6d38/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/TripleMatchFrame.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/TripleMatchFrame.java b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/TripleMatchFrame.java
index 8d4891d..74b1a1b 100644
--- a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/TripleMatchFrame.java
+++ b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/TripleMatchFrame.java
@@ -73,6 +73,7 @@ public class TripleMatchFrame extends GenericTripleMatchFrame {
      */
     @Override public void close() {
         if (matchIterator != null) matchIterator.close();
+        super.close();
     }
     
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/4edc6d38/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/impl/TestLPBRuleEngineLeak.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/impl/TestLPBRuleEngineLeak.java b/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/impl/TestLPBRuleEngineLeak.java
new file mode 100644
index 0000000..58e0afb
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/impl/TestLPBRuleEngineLeak.java
@@ -0,0 +1,171 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.jena.reasoner.rulesys.impl;
+
+import java.lang.reflect.Field;
+import java.util.List;
+
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.junit.Test;
+
+import org.apache.jena.graph.Factory;
+import org.apache.jena.graph.Graph;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.NodeFactory;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.reasoner.rulesys.FBRuleInfGraph;
+import org.apache.jena.reasoner.rulesys.FBRuleReasoner;
+import org.apache.jena.reasoner.rulesys.Rule;
+import org.apache.jena.util.iterator.ExtendedIterator;
+import org.apache.jena.vocabulary.RDF;
+import org.apache.jena.vocabulary.RDFS;
+
+public class TestLPBRuleEngineLeak extends TestCase {
+	public static TestSuite suite() {
+		return new TestSuite(TestLPBRuleEngineLeak.class, "TestLPBRuleEngineLeak");
+	}
+
+	protected Node a = NodeFactory.createURI("a");
+	protected Node b = NodeFactory.createURI("b");
+	protected Node nohit = NodeFactory.createURI("nohit");
+	protected Node p = NodeFactory.createURI("p");
+	protected Node C1 = NodeFactory.createURI("C1");
+	protected Node C2 = NodeFactory.createURI("C2");
+	protected Node ty = RDF.Nodes.type;
+
+	public FBRuleReasoner createReasoner(List<Rule> rules) {
+		FBRuleReasoner reasoner = new FBRuleReasoner(rules);
+		reasoner.tablePredicate(RDFS.Nodes.subClassOf);
+		reasoner.tablePredicate(RDF.Nodes.type);
+		reasoner.tablePredicate(p);
+		return reasoner;
+	}
+
+	@Test
+	public void testNotLeakingActiveInterpreters() throws Exception {
+		Graph data = Factory.createGraphMem();
+		data.add(new Triple(a, ty, C1));
+		data.add(new Triple(b, ty, C1));
+		List<Rule> rules = Rule
+				.parseRules("[r1:  (?x p ?t) <- (?x rdf:type C1), makeInstance(?x, p, C2, ?t)]"
+						+ "[r2:  (?t rdf:type C2) <- (?x rdf:type C1), makeInstance(?x, p, C2, ?t)]");
+
+		FBRuleInfGraph infgraph = (FBRuleInfGraph) createReasoner(rules).bind(
+				data);
+
+		LPBRuleEngine engine = getEngineForGraph(infgraph);
+		assertEquals(0, engine.activeInterpreters.size());
+		assertEquals(0, engine.tabledGoals.size());
+
+		// we ask for a non-hit -- it works, but only because we call it.hasNext()
+		ExtendedIterator<Triple> it = infgraph.find(nohit, ty, C1);
+		assertFalse(it.hasNext());
+		it.close();
+		assertEquals(0, engine.activeInterpreters.size());
+
+		// and again.
+		// Ensure this is not cached by asking for a different triple pattern
+		ExtendedIterator<Triple> it2 = infgraph.find(nohit, ty, C2);
+		// uuups, forgot to call it.hasNext(). But .close() should tidy
+		it2.close();
+		assertEquals(0, engine.activeInterpreters.size());
+
+		
+		// OK, let's ask for something that is in the graph
+		
+		ExtendedIterator<Triple> it3 = infgraph.find(a, ty, C1);
+		assertTrue(it3.hasNext());
+		assertEquals(a, it3.next().getMatchSubject());
+		
+		// .. and what if we forget to call next() to consume b?
+		// (e.g. return from a method with the first hit)
+		
+		// this should be enough
+		it3.close();
+		// without leaks of activeInterpreters
+		assertEquals(0, engine.activeInterpreters.size());
+	}
+	
+	@Test
+	public void testTabledGoalsCacheHits() throws Exception {
+		Graph data = Factory.createGraphMem();
+		data.add(new Triple(a, ty, C1));
+		List<Rule> rules = Rule
+				.parseRules("[r1:  (?x p ?t) <- (?x rdf:type C1), makeInstance(?x, p, C2, ?t)]"
+						+ "[r2:  (?t rdf:type C2) <- (?x rdf:type C1), makeInstance(?x, p, C2, ?t)]");
+
+		FBRuleInfGraph infgraph = (FBRuleInfGraph) createReasoner(rules).bind(
+				data);
+
+		LPBRuleEngine engine = getEngineForGraph(infgraph);
+		assertEquals(0, engine.activeInterpreters.size());
+		assertEquals(0, engine.tabledGoals.size());
+
+		ExtendedIterator<Triple> it = infgraph.find(a, ty, C1);
+		while (it.hasNext()) {
+			it.next();
+			// FIXME: Why do I need to consume all from the iterator
+			// to avoid leaking activeInterpreters? Calling .close()
+			// below should have been enough.
+		}
+		it.close();
+		// how many were cached
+		assertEquals(1, engine.tabledGoals.size());
+		// and no leaks of activeInterpreters
+		assertEquals(0, engine.activeInterpreters.size());
+
+		// Now ask again:
+		it = infgraph.find(a, ty, C1);
+		while (it.hasNext()) {
+			it.next();
+		}
+		it.close();
+		// if it was a cache hit, no change here:
+		assertEquals(1, engine.tabledGoals.size());
+		assertEquals(0, engine.activeInterpreters.size());
+	}
+
+	/**
+	 * Use introspection to get to the LPBRuleEngine.
+	 * <p>
+	 * We are crossing package boundaries and therefore this test would always
+	 * be in the wrong package for either FBRuleInfGraph or LPBRuleEngine.
+	 * <p>
+	 * <strong>This method should only be used for test purposes.</strong>
+	 * 
+	 * @param infgraph
+	 * @return
+	 * @throws SecurityException
+	 * @throws NoSuchFieldException
+	 * @throws IllegalArgumentException
+	 * @throws IllegalAccessException
+	 */
+	private LPBRuleEngine getEngineForGraph(FBRuleInfGraph infgraph)
+			throws NoSuchFieldException, SecurityException,
+			IllegalArgumentException, IllegalAccessException {
+		Field bEngine = FBRuleInfGraph.class.getDeclaredField("bEngine");
+		bEngine.setAccessible(true);
+		LPBRuleEngine engine = (LPBRuleEngine) bEngine.get(infgraph);
+		return engine;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/4edc6d38/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/test/TestPackage.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/test/TestPackage.java b/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/test/TestPackage.java
index af51f6d..1a25ae7 100755
--- a/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/test/TestPackage.java
+++ b/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/test/TestPackage.java
@@ -20,9 +20,12 @@ package org.apache.jena.reasoner.rulesys.test;
 
 
 import junit.framework.TestSuite ;
+
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
 
+import org.apache.jena.reasoner.rulesys.impl.TestLPBRuleEngineLeak;
+
 /**
  * Aggregate tester that runs all the test associated with the rulesys package.
  */
@@ -49,6 +52,7 @@ public class TestPackage extends TestSuite {
         addTest( "TestGenericRules", TestGenericRules.suite() );
         addTest( "TestRETE", TestRETE.suite() );
         addTest( TestSetRules.suite() );
+        addTest( TestLPBRuleEngineLeak.suite() );
         addTest( "OWLRuleUnitTests", OWLUnitTest.suite() );
         addTest( "TestBugs", TestBugs.suite() );
         addTest( "TestOWLMisc", TestOWLMisc.suite() );


[45/50] [abbrv] jena git commit: Added initial contract tests added testing_framework

Posted by cl...@apache.org.
Added initial contract tests
added testing_framework


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/b293ee8a
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/b293ee8a
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/b293ee8a

Branch: refs/heads/add-contract-tests
Commit: b293ee8a928fc8a4f84810f41f3235e5a547c23b
Parents: eb7760d
Author: Claude Warren <cl...@apache.org>
Authored: Sun Apr 26 20:41:15 2015 +0100
Committer: Claude Warren <cl...@apache.org>
Committed: Sat May 9 15:27:19 2015 +0100

----------------------------------------------------------------------
 jena-core/pom.xml                               |   14 +
 .../apache/jena/graph/GraphContractTest.java    | 1720 ++++++++++++++++++
 .../graph/GraphEventManagerContractTest.java    |  514 ++++++
 .../jena/graph/GraphMakerContractTest.java      |  314 ++++
 .../graph/GraphWithPerformContractTest.java     |   86 +
 .../jena/graph/RecordingGraphListener.java      |   92 +
 .../graph/TransactionHandlerContractTest.java   |  149 ++
 .../apache/jena/graph/compose/DeltaTest.java    |  110 ++
 .../jena/graph/compose/DifferenceTest.java      |   97 +
 .../jena/graph/compose/IntersectionTest.java    |  109 ++
 .../apache/jena/graph/compose/UnionTest.java    |  185 ++
 .../jena/graph/impl/TestCollectionGraph.java    |   42 +-
 .../jena/graph/impl/TestWrappedGraph.java       |   63 +
 .../graph/impl/TripleStoreContractTest.java     |  176 ++
 .../apache/jena/mem/BunchMapContractTest.java   |  163 ++
 .../java/org/apache/jena/mem/GraphMemTest.java  |  115 ++
 .../apache/jena/mem/GraphTripleStoreTest.java   |   51 +
 .../jena/mem/TripleBunchContractTest.java       |  205 +++
 .../AbstractGraphProducer.java                  |  104 ++
 .../AbstractInfModelProducer.java               |   91 +
 .../AbstractModelProducer.java                  |   88 +
 .../AbstractRecordingListener.java              |  190 ++
 .../testing_framework/ContractTemplate.java     |   17 +
 .../GraphEventManagerProducerInterface.java     |   35 +
 .../jena/testing_framework/GraphHelper.java     |  508 ++++++
 .../GraphProducerInterface.java                 |   41 +
 .../testing_framework/IContainerProducer.java   |   19 +
 .../testing_framework/IIteratorProducer.java    |   42 +
 .../jena/testing_framework/INodeProducer.java   |   39 +
 .../testing_framework/IResourceProducer.java    |   10 +
 .../testing_framework/IStatementProducer.java   |   45 +
 .../testing_framework/ITripleStoreProducer.java |   35 +
 .../jena/testing_framework/ModelHelper.java     |  409 +++++
 .../jena/testing_framework/NodeCreateUtils.java |  177 ++
 .../NodeProducerInterface.java                  |   32 +
 .../jena/testing_framework/TestFileData.java    |  380 ++++
 .../jena/testing_framework/TestUtils.java       |  320 ++++
 .../testing_framework/manifest/Manifest.java    |  228 +++
 .../manifest/ManifestException.java             |   48 +
 .../manifest/ManifestFile.java                  |   38 +
 .../manifest/ManifestItem.java                  |   53 +
 .../manifest/ManifestItemHandler.java           |   35 +
 .../manifest/ManifestSuite.java                 |  143 ++
 .../manifest/ManifestTest.java                  |   13 +
 .../manifest/ManifestTestRunner.java            |   75 +
 .../jena/testing_framework/package-info.java    |  109 ++
 .../testing_framework/tuples/TupleItem.java     |   84 +
 .../jena/testing_framework/tuples/TupleSet.java |  274 +++
 48 files changed, 7880 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/pom.xml
----------------------------------------------------------------------
diff --git a/jena-core/pom.xml b/jena-core/pom.xml
index 6cb0722..a29e559 100644
--- a/jena-core/pom.xml
+++ b/jena-core/pom.xml
@@ -75,6 +75,20 @@
       <scope>test</scope>
     </dependency>
 
+	<dependency>
+		<groupId>org.xenei</groupId>
+		<artifactId>junit-contracts</artifactId>
+		<version>0.0.5</version>
+		<scope>test</scope>
+	</dependency>
+	
+	<dependency>
+		<groupId>org.mockito</groupId>
+		<artifactId>mockito-all</artifactId>
+		<version>1.9.5</version>
+		<scope>test</scope>
+	</dependency>
+
   </dependencies>
 
   <build>

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java b/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
new file mode 100644
index 0000000..cf79da5
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
@@ -0,0 +1,1720 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.graph;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URISyntaxException;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import org.junit.After;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractTest;
+
+import static org.junit.Assert.*;
+
+import org.apache.jena.graph.Capabilities;
+import org.apache.jena.graph.Graph;
+import org.apache.jena.graph.GraphStatisticsHandler;
+import org.apache.jena.graph.GraphUtil;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.graph.impl.LiteralLabelFactory;
+import org.apache.jena.mem.TrackingTripleIterator;
+import org.apache.jena.rdf.model.Model;
+import org.apache.jena.rdf.model.ModelFactory;
+import org.apache.jena.rdf.model.impl.ReifierStd;
+import org.apache.jena.shared.ClosedException;
+import org.apache.jena.shared.DeleteDeniedException;
+import org.apache.jena.shared.PrefixMapping;
+import org.apache.jena.testing_framework.AbstractGraphProducer;
+import org.apache.jena.testing_framework.ContractTemplate;
+import org.apache.jena.testing_framework.NodeCreateUtils;
+import org.apache.jena.util.iterator.ClosableIterator;
+import org.apache.jena.util.iterator.ExtendedIterator;
+import org.apache.jena.util.iterator.Map1;
+
+import static org.apache.jena.testing_framework.GraphHelper.*;
+
+/**
+ * AbstractTestGraph provides a bunch of basic tests for something that purports
+ * to be a Graph. The abstract method getGraph must be overridden in subclasses
+ * to deliver a Graph of interest.
+ */
+@Contract(Graph.class)
+public class GraphContractTest<T extends Graph> extends
+		ContractTemplate<AbstractGraphProducer<T>> {
+
+	private static final Logger LOG = LoggerFactory
+			.getLogger(GraphContractTest.class);
+
+	protected RecordingGraphListener GL = new RecordingGraphListener();
+
+	@Contract.Inject
+	public final void setGraphContractTestProducer(
+			AbstractGraphProducer<T> graphProducer) {
+		super.setProducer(graphProducer);
+	}
+
+	@After
+	public final void afterGraphContractTest() {
+		getProducer().cleanUp();
+		GL.clear();
+	}
+
+	@ContractTest
+	public void testAdd_Triple() {
+		Graph graph = getProducer().newInstance();
+		graph.getEventManager().register(GL);
+		txnBegin(graph);
+		graph.add(triple("S P O"));
+		txnCommit(graph);
+		GL.assertHasStart("add", graph, triple("S P O"));
+		assertTrue("Graph should contain <S P O>",
+				graph.contains(triple("S P O")));
+	}
+
+	/**
+	 * Inference graphs can not be truly empty.
+	 * 
+	 * @param g
+	 * @param b
+	 */
+	private void assertEmpty(Graph g, Graph b) {
+		if (b.isEmpty()) {
+			assertTrue("Graph should be empty", g.isEmpty());
+		} else {
+			assertEquals("Graph should be in base state", b.find(Triple.ANY)
+					.toList(), g.find(Triple.ANY).toList());
+		}
+	}
+
+	/**
+	 * Inference graphs can not be truly empty
+	 * 
+	 * @param g
+	 * @param b
+	 */
+	private void assertNotEmpty(Graph g, Graph b) {
+		if (b.isEmpty()) {
+			assertFalse("Graph not should be empty", g.isEmpty());
+		} else {
+			assertNotEquals("Graph should not be in base state",
+					b.find(Triple.ANY).toList(), g.find(Triple.ANY).toList());
+		}
+	}
+
+	/**
+	 * Test that clear works, in the presence of inferencing graphs that mean
+	 * emptyness isn't available. This is why we go round the houses and test
+	 * that expected ~= initialContent + addedStuff - removed - initialContent.
+	 */
+	@ContractTest
+	public void testClear() {
+		Graph graph = getProducer().newInstance();
+		Graph base = copy(graph);
+
+		graph.getEventManager().register(GL);
+		txnBegin(graph);
+		graph.clear();
+		txnCommit(graph);
+		assertEmpty(graph, base);
+		GL.assertHasStart("someEvent", graph, GraphEvents.removeAll);
+		GL.clear();
+
+		// test after adding
+		graph = graphWith(getProducer().newInstance(),
+				"S P O; S e:ff 27; _1 P P3; S4 P4 'en'");
+		graph.getEventManager().register(GL);
+		txnBegin(graph);
+		graph.clear();
+		txnCommit(graph);
+		assertEmpty(graph, base);
+		if (GL.contains("delete")) {
+			// deletes are listed -- ensure all deletes are listed
+			GL.assertContains("delete", graph, triple("S P O"));
+			GL.assertContains("delete", graph, triple("S e:ff 27"));
+			GL.assertContains("delete", graph, triple("_1 P P3"));
+			GL.assertContains("delete", graph, triple("S4 P4 'en'"));
+		}
+		GL.assertHasEnd("someEvent", graph, GraphEvents.removeAll);
+		GL.clear();
+
+	}
+
+	@ContractTest
+	public void testClose() {
+		Graph graph = graphWith(getProducer().newInstance(),
+				"S P O; S P2 O2; S3 P P3");
+		graph.getEventManager().register(GL);
+		assertFalse("Graph was constructed closed", graph.isClosed());
+
+		graph.close();
+		assertTrue("Graph should be closed", graph.isClosed());
+
+		// exception may be thrown on begin or on execution.
+		try {
+			txnBegin(graph);
+			try {
+				graph.add(triple("S P O"));
+				fail("added when closed");
+			} catch (Exception expected) {
+				GL.assertEmpty();
+				// expected
+			} finally {
+				txnRollback(graph);
+			}
+		} catch (Exception expected) {
+			GL.assertEmpty();
+			// expected
+		}
+
+		try {
+			txnBegin(graph);
+			try {
+				graph.delete(triple("x R y"));
+				fail("delete when closed");
+			} catch (ClosedException c) {
+				// Expected
+			} finally {
+				txnRollback(graph);
+				GL.assertEmpty();
+			}
+		} catch (Exception expected) {
+			GL.assertEmpty();
+			// expected
+		}
+
+		try {
+			txnBegin(graph);
+
+			try {
+				graph.add(triple("x R y"));
+				fail("add when closed");
+			} catch (ClosedException c) { /* as required */
+			} finally {
+				txnRollback(graph);
+				GL.assertEmpty();
+			}
+		} catch (Exception expected) {
+			GL.assertEmpty();
+			// expected
+		}
+
+		try {
+			txnBegin(graph);
+			try {
+				graph.contains(triple("x R y"));
+				fail("contains[triple] when closed");
+			} catch (ClosedException c) { /* as required */
+			} finally {
+				txnRollback(graph);
+				GL.assertEmpty();
+			}
+		} catch (Exception expected) {
+			GL.assertEmpty();
+			// expected
+		}
+
+		try {
+			txnBegin(graph);
+			try {
+				graph.contains(Node.ANY, Node.ANY, Node.ANY);
+				fail("contains[SPO] when closed");
+			} catch (ClosedException c) { /* as required */
+			} finally {
+				txnRollback(graph);
+				GL.assertEmpty();
+			}
+		} catch (Exception expected) {
+			GL.assertEmpty();
+			// expected
+		}
+
+		try {
+			txnBegin(graph);
+			try {
+				graph.find(triple("x R y"));
+				fail("find [triple] when closed");
+			} catch (ClosedException c) { /* as required */
+			} finally {
+				txnRollback(graph);
+				GL.assertEmpty();
+			}
+		} catch (Exception expected) {
+			GL.assertEmpty();
+			// expected
+		}
+
+		try {
+			txnBegin(graph);
+			try {
+				graph.find(Node.ANY, Node.ANY, Node.ANY);
+				fail("find[SPO] when closed");
+			} catch (ClosedException c) { /* as required */
+			} finally {
+				txnRollback(graph);
+				GL.assertEmpty();
+			}
+		} catch (Exception expected) {
+			GL.assertEmpty();
+			// expected
+		}
+
+		try {
+			txnBegin(graph);
+			try {
+				graph.size();
+				fail("size when closed (" + this.getClass() + ")");
+			} catch (ClosedException c) { /* as required */
+			} finally {
+				txnRollback(graph);
+				GL.assertEmpty();
+			}
+		} catch (Exception expected) {
+			GL.assertEmpty();
+			// expected
+		}
+	}
+
+	@ContractTest
+	public void testContains_Node_Node_Node() {
+		Graph graph = graphWith(getProducer().newInstance(),
+				"S P O; S2 P2 O2; S3 P3 O3");
+
+		assertTrue(graph.contains(node("S"), node("P"), node("O")));
+		assertFalse(graph.contains(node("S"), node("P"), node("O2")));
+		assertFalse(graph.contains(node("S"), node("P2"), node("O")));
+		assertFalse(graph.contains(node("S2"), node("P"), node("O")));
+		assertTrue(graph.contains(Node.ANY, Node.ANY, Node.ANY));
+		assertTrue(graph.contains(Node.ANY, Node.ANY, node("O")));
+		assertTrue(graph.contains(Node.ANY, node("P"), Node.ANY));
+		assertTrue(graph.contains(node("S"), Node.ANY, Node.ANY));
+	}
+
+	@ContractTest
+	public void testContains_Node_Node_Node_RepeatedSubjectDoesNotConceal() {
+
+		Graph g = graphWith(getProducer().newInstance(), "s P o; s Q r");
+		Node s = node("s");
+		Node P = node("P");
+		Node o = node("o");
+		Node Q = node("Q");
+		Node r = node("r");
+		Node any = node("??");
+		assertTrue(g.contains(s, P, o));
+		assertTrue(g.contains(s, Q, r));
+		assertTrue(g.contains(any, P, o));
+		assertTrue(g.contains(any, Q, r));
+		assertTrue(g.contains(any, P, any));
+		assertTrue(g.contains(any, Q, any));
+	}
+
+	@ContractTest
+	public void testContains_Node_Node_Node_ByValue() {
+		Node x = node("x");
+		Node P = node("P");
+		if (getProducer().newInstance().getCapabilities()
+				.handlesLiteralTyping()) {
+			Graph g1 = graphWith(getProducer().newInstance(),
+					"x P '1'xsd:integer");
+			assertTrue(
+					String.format(
+							"literal type equality failed, does %s really implement literal typing",
+							g1.getClass()), g1.contains(x, P,
+							node("'01'xsd:int")));
+			//
+			Graph g2 = graphWith(getProducer().newInstance(), "x P '1'xsd:int");
+			assertTrue("Literal equality with '1'xsd:integer failed",
+					g2.contains(x, P, node("'1'xsd:integer")));
+			//
+			Graph g3 = graphWith(getProducer().newInstance(),
+					"x P '123'xsd:string");
+			assertTrue("Literal equality with '123' failed",
+					g3.contains(x, P, node("'123'")));
+		}
+	}
+
+	@ContractTest
+	public void testContains_Node_Node_Node_Concrete() {
+		Node s = node("s");
+		Node P = node("P");
+		Node o = node("o");
+
+		Node _x = node("_x");
+		Node _R = node("_R");
+		Node _y = node("_y");
+
+		Node x = node("x");
+		Node S = node("S");
+
+		Graph g = graphWith(getProducer().newInstance(),
+				"s P o; _x _R _y; x S 0");
+		assertTrue("Graph should have contained s P o", g.contains(s, P, o));
+		assertTrue("Graph should have contained _x _R _y",
+				g.contains(_x, _R, _y));
+		assertTrue("Graph should have contained x S 'O'",
+				g.contains(x, S, node("0")));
+		/* */
+		assertFalse(g.contains(s, P, node("Oh")));
+		assertFalse(g.contains(S, P, node("O")));
+		assertFalse(g.contains(s, node("p"), o));
+		assertFalse(g.contains(_x, node("_r"), _y));
+		assertFalse(g.contains(x, S, node("1")));
+	}
+
+	@ContractTest
+	public void testContains_Node_Node_Node_Fluid() {
+		Node x = node("x");
+		Node R = node("R");
+		Node P = node("P");
+		Node y = node("y");
+		Node a = node("a");
+		Node b = node("b");
+		Graph g = graphWith(getProducer().newInstance(), "x R y; a P b");
+		assertTrue(g.contains(Node.ANY, R, y));
+		assertTrue(g.contains(x, Node.ANY, y));
+		assertTrue(g.contains(x, R, Node.ANY));
+		assertTrue(g.contains(Node.ANY, P, b));
+		assertTrue(g.contains(a, Node.ANY, b));
+		assertTrue(g.contains(a, P, Node.ANY));
+		assertTrue(g.contains(Node.ANY, R, y));
+		/* */
+		assertFalse(g.contains(Node.ANY, R, b));
+		assertFalse(g.contains(a, Node.ANY, y));
+		assertFalse(g.contains(x, P, Node.ANY));
+		assertFalse(g.contains(Node.ANY, R, x));
+		assertFalse(g.contains(x, Node.ANY, R));
+		assertFalse(g.contains(a, node("S"), Node.ANY));
+	}
+
+	@ContractTest
+	public void testContains_Triple() {
+		Graph graph = graphWith(getProducer().newInstance(),
+				"S P O; S2 P2 O2; S3 P3 O3");
+
+		assertTrue(graph.contains(triple("S P O")));
+		assertFalse(graph.contains(triple("S P O2")));
+		assertFalse(graph.contains(triple("S P2 O")));
+		assertFalse(graph.contains(triple("S2 P O")));
+		assertTrue(graph.contains(Triple.ANY));
+		assertTrue(graph.contains(new Triple(Node.ANY, Node.ANY, node("O"))));
+		assertTrue(graph.contains(new Triple(Node.ANY, node("P"), Node.ANY)));
+		assertTrue(graph.contains(new Triple(node("S"), Node.ANY, Node.ANY)));
+
+	}
+
+	@ContractTest
+	public void testContains_Triple_RepeatedSubjectDoesNotConceal() {
+
+		Graph g = graphWith(getProducer().newInstance(), "s P o; s Q r");
+		assertTrue(g.contains(triple("s P o")));
+		assertTrue(g.contains(triple("s Q r")));
+		assertTrue(g.contains(triple("?? P o")));
+		assertTrue(g.contains(triple("?? Q r")));
+		assertTrue(g.contains(triple("?? P ??")));
+		assertTrue(g.contains(triple("?? Q ??")));
+	}
+
+	@ContractTest
+	public void testContains_Triple_ByValue() {
+
+		if (getProducer().newInstance().getCapabilities()
+				.handlesLiteralTyping()) {
+			Graph g1 = graphWith(getProducer().newInstance(),
+					"x P '1'xsd:integer");
+			assertTrue(
+					String.format(
+							"did not find x P '01'xsd:int, does %s really implement literal typing",
+							g1.getClass()),
+					g1.contains(triple("x P '01'xsd:int")));
+			//
+			Graph g2 = graphWith(getProducer().newInstance(), "x P '1'xsd:int");
+			assertTrue("did not find x P '1'xsd:integer",
+					g2.contains(triple("x P '1'xsd:integer")));
+			//
+			Graph g3 = graphWith(getProducer().newInstance(),
+					"x P '123'xsd:string");
+			assertTrue("did not find x P '123'xsd:string",
+					g3.contains(triple("x P '123'")));
+		}
+	}
+
+	@ContractTest
+	public void testContains_Triple_Concrete() {
+		Graph g = graphWith(getProducer().newInstance(),
+				"s P o; _x _R _y; x S 0");
+		assertTrue(g.contains(triple("s P o")));
+		assertTrue(g.contains(triple("_x _R _y")));
+		assertTrue(g.contains(triple("x S 0")));
+		/* */
+		assertFalse(g.contains(triple("s P Oh")));
+		assertFalse(g.contains(triple("S P O")));
+		assertFalse(g.contains(triple("s p o")));
+		assertFalse(g.contains(triple("_x _r _y")));
+		assertFalse(g.contains(triple("x S 1")));
+	}
+
+	@ContractTest
+	public void testContains_Triple_Fluid() {
+		Graph g = graphWith(getProducer().newInstance(), "x R y; a P b");
+		assertTrue(g.contains(triple("?? R y")));
+		assertTrue(g.contains(triple("x ?? y")));
+		assertTrue(g.contains(triple("x R ??")));
+		assertTrue(g.contains(triple("?? P b")));
+		assertTrue(g.contains(triple("a ?? b")));
+		assertTrue(g.contains(triple("a P ??")));
+		assertTrue(g.contains(triple("?? R y")));
+		/* */
+		assertFalse(g.contains(triple("?? R b")));
+		assertFalse(g.contains(triple("a ?? y")));
+		assertFalse(g.contains(triple("x P ??")));
+		assertFalse(g.contains(triple("?? R x")));
+		assertFalse(g.contains(triple("x ?? R")));
+		assertFalse(g.contains(triple("a S ??")));
+	}
+
+	/**
+	 * Inference graphs can not be empty
+	 */
+	@ContractTest
+	public void testDelete_Triple() {
+		Graph graph = graphWith(getProducer().newInstance(),
+				"S P O; S2 P2 O2; S3 P3 O3");
+		Graph base = getProducer().newInstance();
+		graph.getEventManager().register(GL);
+		txnBegin(graph);
+		graph.delete(triple("S P O"));
+		txnCommit(graph);
+		GL.assertContains("delete", graph, triple("S P O"));
+		assertFalse("Graph should not contain <S P O>",
+				graph.contains(triple("S P O")));
+		assertNotEmpty(graph, base);
+		assertTrue("Graph should contain <S2 P2 O2>",
+				graph.contains(triple("S2 P2 O2")));
+		assertTrue("Graph should contain <S3 P3 O3>",
+				graph.contains(triple("S3 P3 O3")));
+
+		// should not modify anything on wildcard delete
+		GL.clear();
+		try {
+			txnBegin(graph);
+			graph.delete(new Triple(node("S2"), node("P2"), Node.ANY));
+			txnCommit(graph);
+		} catch (DeleteDeniedException expected) {
+			txnRollback(graph);
+		}
+		assertTrue("Graph should contain <S2 P2 O2>",
+				graph.contains(triple("S2 P2 O2")));
+		assertTrue("Graph should contain <S3 P3 O3>",
+				graph.contains(triple("S3 P3 O3")));
+		GL.assertHas("delete", graph, new Triple(node("S2"), node("P2"),
+				Node.ANY));
+	}
+
+	@ContractTest
+	public void testDelete_Triple_FromNothing() {
+		Graph g = getProducer().newInstance();
+		g.getEventManager().register(GL);
+		txnBegin(g);
+		g.delete(triple("quint rdf:subject S"));
+		txnCommit(g);
+		GL.assertContains("delete", g, triple("quint rdf:subject S"));
+	}
+
+	@ContractTest
+	public void testDependsOn() {
+		Graph g = getProducer().newInstance();
+		Graph[] depGraphs = getProducer().getDependsOn(g);
+		if (depGraphs != null) {
+			for (Graph dg : depGraphs) {
+				assertTrue(
+						String.format("Graph %s should depend upon %s", g, dg),
+						g.dependsOn(dg));
+			}
+		}
+		depGraphs = getProducer().getNotDependsOn(g);
+		if (depGraphs != null) {
+			for (Graph dg : depGraphs) {
+				assertFalse(String.format("Graph %s should not depend upon %s",
+						g, dg), g.dependsOn(dg));
+			}
+		}
+	}
+
+	@ContractTest
+	public void testFind_Node_Node_Node() {
+		Graph graph = graphWith(getProducer().newInstance(),
+				"S P O; S2 P2 O2; S3 P3 O3");
+		List<Triple> s = graph.find(Node.ANY, Node.ANY, Node.ANY).toList();
+		assertEquals(3, s.size());
+		List<Triple> expected = Arrays.asList(new Triple[] { triple("S P O"),
+				triple("S2 P2 O2"), triple("S3 P3 O3") });
+		assertTrue("Missing some values",
+				expected.containsAll(s) && s.containsAll(expected));
+
+		s = graph.find(node("S"), Node.ANY, Node.ANY).toList();
+		assertEquals(1, s.size());
+		assertTrue("Missing some values", s.contains(triple("S P O")));
+
+		s = graph.find(Node.ANY, node("P"), Node.ANY).toList();
+		assertEquals(1, s.size());
+		assertTrue("Missing some values", s.contains(triple("S P O")));
+
+		s = graph.find(Node.ANY, Node.ANY, node("O")).toList();
+		assertEquals(1, s.size());
+		assertTrue("Missing some values", s.contains(triple("S P O")));
+
+		s = graph.find(node("S2"), node("P2"), node("O2")).toList();
+		assertEquals(1, s.size());
+		assertTrue("Missing some values", s.contains(triple("S2 P2 O2")));
+
+		s = graph.find(node("S2"), node("P3"), node("O2")).toList();
+		assertEquals(0, s.size());
+
+		s = graph.find(Node.ANY, node("P3"), node("O2")).toList();
+		assertEquals(0, s.size());
+
+		s = graph.find(node("S3"), Node.ANY, node("O2")).toList();
+		assertEquals(0, s.size());
+
+		s = graph.find(node("S3"), node("P2"), Node.ANY).toList();
+		assertEquals(0, s.size());
+
+	}
+
+	@ContractTest
+	public void testFind_Node_Node_Node_ByFluidTriple() {
+		Node x = node("x");
+		Node y = node("y");
+		Node z = node("z");
+		Graph g = graphWith(getProducer().newInstance(), "x y z ");
+		Set<Triple> expect = tripleSet("x y z");
+		assertEquals(expect, g.find(Node.ANY, y, z).toSet());
+		assertEquals(expect, g.find(x, Node.ANY, z).toSet());
+		assertEquals(expect, g.find(x, y, Node.ANY).toSet());
+	}
+
+	@ContractTest
+	public void testFind_Node_Node_Node_ProgrammaticValues() {
+		Graph g = getProducer().newInstance();
+		if (g.getCapabilities().handlesLiteralTyping()) {
+			Node ab = NodeFactory.createLiteral(LiteralLabelFactory
+					.createTypedLiteral(new Byte((byte) 42)));
+			Node as = NodeFactory.createLiteral(LiteralLabelFactory
+					.createTypedLiteral(new Short((short) 42)));
+			Node ai = NodeFactory.createLiteral(LiteralLabelFactory
+					.createTypedLiteral(new Integer(42)));
+			Node al = NodeFactory.createLiteral(LiteralLabelFactory
+					.createTypedLiteral(new Long(42)));
+
+			Node SB = NodeCreateUtils.create("SB");
+			Node SS = NodeCreateUtils.create("SS");
+			Node SI = NodeCreateUtils.create("SI");
+			Node SL = NodeCreateUtils.create("SL");
+			Node P = NodeCreateUtils.create("P");
+
+			txnBegin(g);
+			try {
+				g.add(Triple.create(SB, P, ab));
+				g.add(Triple.create(SS, P, as));
+				g.add(Triple.create(SI, P, ai));
+				g.add(Triple.create(SL, P, al));
+			} catch (Exception e) {
+				txnRollback(g);
+				fail(e.getMessage());
+			}
+			txnCommit(g);
+			assertEquals(
+					String.format(
+							"Should have found 4 elements, does %s really implement literal typing",
+							g.getClass()),
+					4,
+					iteratorToSet(
+							g.find(Node.ANY, P, NodeCreateUtils.create("42")))
+							.size());
+		}
+	}
+
+	@ContractTest
+	public void testFind_Node_Node_Node_MatchLanguagedLiteralCaseInsensitive() {
+		Graph m = graphWith(getProducer().newInstance(), "a p 'chat'en");
+		if (m.getCapabilities().handlesLiteralTyping()) {
+			Node chaten = node("'chat'en"), chatEN = node("'chat'EN");
+			assertDiffer(chaten, chatEN);
+			assertTrue(chaten.sameValueAs(chatEN));
+			assertEquals(chaten.getIndexingValue(), chatEN.getIndexingValue());
+			assertEquals(1, m.find(Node.ANY, Node.ANY, chaten).toList().size());
+			assertEquals(1, m.find(Node.ANY, Node.ANY, chatEN).toList().size());
+		}
+	}
+
+	@ContractTest
+	public void testFind_Node_Node_Node_NoMatchAgainstUnlanguagesLiteral() {
+		Graph m = graphWith(getProducer().newInstance(),
+				"a p 'chat'en; a p 'chat'");
+		if (m.getCapabilities().handlesLiteralTyping()) {
+			Node chaten = node("'chat'en"), chatEN = node("'chat'EN");
+			assertDiffer(chaten, chatEN);
+			assertTrue(chaten.sameValueAs(chatEN));
+			assertEquals(chaten.getIndexingValue(), chatEN.getIndexingValue());
+			assertEquals(1, m.find(Node.ANY, Node.ANY, chaten).toList().size());
+			assertEquals(1, m.find(Node.ANY, Node.ANY, chatEN).toList().size());
+		}
+	}
+
+	@ContractTest
+	public void testFind_Triple() {
+		Graph graph = graphWith(getProducer().newInstance(),
+				"S P O; S2 P2 O2; S3 P3 O3");
+		List<Triple> s = graph.find(Triple.ANY).toList();
+		assertEquals(3, s.size());
+		List<Triple> expected = Arrays.asList(new Triple[] { triple("S P O"),
+				triple("S2 P2 O2"), triple("S3 P3 O3") });
+		assertTrue("Missing some values", expected.containsAll(s));
+
+		s = graph.find(new Triple(node("S"), Node.ANY, Node.ANY)).toList();
+		assertEquals(1, s.size());
+		assertTrue("Missing some values", s.contains(triple("S P O")));
+
+		s = graph.find(new Triple(Node.ANY, node("P"), Node.ANY)).toList();
+		assertEquals(1, s.size());
+		assertTrue("Missing some values", s.contains(triple("S P O")));
+
+		s = graph.find(new Triple(Node.ANY, Node.ANY, node("O"))).toList();
+		assertEquals(1, s.size());
+		assertTrue("Missing some values", s.contains(triple("S P O")));
+
+		s = graph.find(new Triple(node("S2"), node("P2"), node("O2"))).toList();
+		assertEquals(1, s.size());
+		assertTrue("Missing some values", s.contains(triple("S2 P2 O2")));
+
+		s = graph.find(new Triple(node("S2"), node("P3"), node("O2"))).toList();
+		assertEquals(0, s.size());
+
+		s = graph.find(new Triple(Node.ANY, node("P3"), node("O2"))).toList();
+		assertEquals(0, s.size());
+
+		s = graph.find(new Triple(node("S3"), Node.ANY, node("O2"))).toList();
+		assertEquals(0, s.size());
+
+		s = graph.find(new Triple(node("S3"), node("P2"), Node.ANY)).toList();
+		assertEquals(0, s.size());
+
+	}
+
+	@ContractTest
+	public void testFind_Triple_ByFluidTriple() {
+		Graph g = graphWith(getProducer().newInstance(), "x y z ");
+		Set<Triple> expect = tripleSet("x y z");
+		assertEquals(expect, g.find(triple("?? y z")).toSet());
+		assertEquals(expect, g.find(triple("x ?? z")).toSet());
+		assertEquals(expect, g.find(triple("x y ??")).toSet());
+	}
+
+	@ContractTest
+	public void testFind_Triple_ProgrammaticValues() {
+		Graph g = getProducer().newInstance();
+		if (g.getCapabilities().handlesLiteralTyping()) {
+			Node ab = NodeFactory.createLiteral(LiteralLabelFactory
+					.createTypedLiteral(new Byte((byte) 42)));
+			Node as = NodeFactory.createLiteral(LiteralLabelFactory
+					.createTypedLiteral(new Short((short) 42)));
+			Node ai = NodeFactory.createLiteral(LiteralLabelFactory
+					.createTypedLiteral(new Integer(42)));
+			Node al = NodeFactory.createLiteral(LiteralLabelFactory
+					.createTypedLiteral(new Long(42)));
+
+			Node SB = NodeCreateUtils.create("SB");
+			Node SS = NodeCreateUtils.create("SS");
+			Node SI = NodeCreateUtils.create("SI");
+			Node SL = NodeCreateUtils.create("SL");
+			Node P = NodeCreateUtils.create("P");
+
+			txnBegin(g);
+			try {
+				g.add(Triple.create(SB, P, ab));
+				g.add(Triple.create(SS, P, as));
+				g.add(Triple.create(SI, P, ai));
+				g.add(Triple.create(SL, P, al));
+			} catch (Exception e) {
+				txnRollback(g);
+				fail(e.getMessage());
+			}
+			txnCommit(g);
+			assertEquals(
+					String.format(
+							"Should have found 4 elements, does %s really implement literal typing",
+							g.getClass()),
+					4,
+					iteratorToSet(
+							g.find(new Triple(Node.ANY, P, NodeCreateUtils
+									.create("42")))).size());
+		}
+	}
+
+	@ContractTest
+	public void testFind_Triple_MatchLanguagedLiteralCaseInsensitive() {
+		Graph m = graphWith(getProducer().newInstance(), "a p 'chat'en");
+		//if (m.getCapabilities().handlesLiteralTyping()) {
+			Node chaten = node("'chat'en"), chatEN = node("'chat'EN");
+			assertDiffer(chaten, chatEN);
+			assertTrue(chaten.sameValueAs(chatEN));
+			assertEquals(chaten.getIndexingValue(), chatEN.getIndexingValue());
+			assertEquals(1, m.find(new Triple(Node.ANY, Node.ANY, chaten))
+					.toList().size());
+			assertEquals(1, m.find(new Triple(Node.ANY, Node.ANY, chatEN))
+					.toList().size());
+		//}
+	}
+
+	@ContractTest
+	public void testFind_Triple_NoMatchAgainstUnlanguagesLiteral() {
+		Graph m = graphWith(getProducer().newInstance(),
+				"a p 'chat'en; a p 'chat'");
+		//if (m.getCapabilities().handlesLiteralTyping()) {
+			Node chaten = node("'chat'en"), chatEN = node("'chat'EN");
+			assertDiffer(chaten, chatEN);
+			assertTrue(chaten.sameValueAs(chatEN));
+			assertEquals(chaten.getIndexingValue(), chatEN.getIndexingValue());
+			assertEquals(1, m.find(new Triple(Node.ANY, Node.ANY, chaten))
+					.toList().size());
+			assertEquals(1, m.find(new Triple(Node.ANY, Node.ANY, chatEN))
+					.toList().size());
+		//}
+	}
+
+	@ContractTest
+	public void testGetCapabilities() {
+		Graph g = getProducer().newInstance();
+		Capabilities c = g.getCapabilities();
+		assertNotNull("Capabilities are not returned", c);
+		try {
+			c.sizeAccurate();
+		} catch (Exception e) {
+			fail("sizeAccurate() threw Exception: " + e.toString());
+		}
+		try {
+			c.addAllowed();
+		} catch (Exception e) {
+			fail("addAllowed() threw Exception: " + e.toString());
+		}
+		try {
+			c.addAllowed(true);
+		} catch (Exception e) {
+			fail("addAllowed( boolean ) threw Exception: " + e.toString());
+		}
+		try {
+			c.deleteAllowed();
+		} catch (Exception e) {
+			fail("deleteAllowed() threw Exception: " + e.toString());
+		}
+		try {
+			c.deleteAllowed(true);
+		} catch (Exception e) {
+			fail("deleteAllowed( boolean ) threw Exception: " + e.toString());
+		}
+		try {
+			c.canBeEmpty();
+		} catch (Exception e) {
+			fail("canBeEmpty() threw Exception: " + e.toString());
+		}
+	}
+
+	@ContractTest
+	public void testGetEventManager() {
+		assertNotNull("Must return an EventManager", getProducer()
+				.newInstance().getEventManager());
+	}
+
+	@ContractTest
+	public void testGetPrefixMapping() {
+		Graph g = getProducer().newInstance();
+		PrefixMapping pm = g.getPrefixMapping();
+		assertNotNull("Must return prefix mapping", pm);
+		assertSame("getPrefixMapping must always return the same object", pm,
+				g.getPrefixMapping());
+
+	
+		pm.setNsPrefix("pfx1", "http://example.com/");
+		pm.setNsPrefix("pfx2", "scheme:rope/string#");
+
+		// assert same after adding to other mapl
+		assertSame("getPrefixMapping must always return the same object", pm,
+				g.getPrefixMapping());
+
+	}
+
+	@ContractTest
+	public void testGetStatisticsHandler() {
+		Graph g = getProducer().newInstance();
+		GraphStatisticsHandler sh = g.getStatisticsHandler();
+		if (sh != null) {
+			assertSame(
+					"getStatisticsHandler must always return the same object",
+					sh, g.getStatisticsHandler());
+		}
+	}
+
+	@ContractTest
+	public void testGetTransactionHandler() {
+		Graph g = getProducer().newInstance();
+		assertNotNull("Must return a Transaction handler",
+				g.getTransactionHandler());
+	}
+
+	@ContractTest
+	public void testIsClosed() {
+		Graph g = getProducer().newInstance();
+		assertFalse("Graph created in closed state", g.isClosed());
+		g.close();
+		assertTrue("Graph does not report closed state after close called",
+				g.isClosed());
+	}
+
+	@ContractTest
+	public void testIsEmpty() {
+		Graph g = getProducer().newInstance();
+		if (!g.isEmpty()) {
+			LOG.warn(String.format(
+					"Graph type %s can not be empty (Empty test skipped)",
+					g.getClass()));
+		} else {
+			graphAddTxn(g, "S P O");
+			assertFalse("Graph reports empty after add", g.isEmpty());
+			txnBegin(g);
+			g.add(NodeCreateUtils.createTriple("Foo B C"));
+			g.delete(NodeCreateUtils.createTriple("S P O"));
+			txnCommit(g);
+			assertFalse("Should not report empty", g.isEmpty());
+			txnBegin(g);
+			g.delete(NodeCreateUtils.createTriple("Foo B C"));
+			txnCommit(g);
+			assertTrue("Should report empty after all entries deleted",
+					g.isEmpty());
+		}
+	}
+
+	@ContractTest
+	public void testIsIsomorphicWith_Graph() {
+		Graph graph = getProducer().newInstance();
+		Graph g2 = memGraph();
+		assertTrue("Empty graphs should be isomorphic",
+				graph.isIsomorphicWith(g2));
+
+		graph = graphWith(getProducer().newInstance(),
+				"S P O; S2 P2 O2; S3 P3 O3");
+		g2 = graphWith("S3 P3 O3; S2 P2 O2; S P O");
+		assertTrue("Should be isomorphic", graph.isIsomorphicWith(g2));
+		txnBegin(graph);
+		graph.add(triple("_1, P4 S4"));
+		txnCommit(graph);
+
+		txnBegin(g2);
+		g2.add(triple("_2, P4 S4"));
+		txnCommit(g2);
+		assertTrue("Should be isomorphic after adding anonymous nodes",
+				graph.isIsomorphicWith(g2));
+
+		txnBegin(graph);
+		graph.add(triple("_1, P3 S4"));
+		txnCommit(graph);
+
+		txnBegin(g2);
+		g2.add(triple("_2, P4 S4"));
+		txnCommit(g2);
+		assertFalse("Should not be isomorphic", graph.isIsomorphicWith(g2));
+	}
+
+	private Graph copy(Graph g) {
+		Graph result = getProducer().newInstance();
+		txnBegin(result);
+		GraphUtil.addInto(result, g);
+		txnCommit(result);
+		return result;
+	}
+
+	private Graph remove(Graph toUpdate, Graph toRemove) {
+		txnBegin(toUpdate);
+		GraphUtil.deleteFrom(toUpdate, toRemove);
+		txnCommit(toUpdate);
+		return toUpdate;
+	}
+
+	/**
+	 * Test that remove(s, p, o) works, in the presence of inferencing graphs
+	 * that mean emptyness isn't available. This is why we go round the houses
+	 * and test that expected ~= initialContent + addedStuff - removed -
+	 * initialContent.
+	 */
+	@ContractTest
+	public void testRemove_Node_Node_Node() {
+		for (int i = 0; i < cases.length; i += 1)
+			for (int j = 0; j < 3; j += 1) {
+				Graph content = getProducer().newInstance();
+
+				Graph baseContent = copy(content);
+				graphAddTxn(content, cases[i][0]);
+				Triple remove = triple(cases[i][1]);
+				Graph expected = graphWith(cases[i][2]);
+				Triple[] removed = tripleArray(cases[i][3]);
+				content.getEventManager().register(GL);
+				GL.clear();
+				txnBegin(content);
+				content.remove(remove.getSubject(), remove.getPredicate(),
+						remove.getObject());
+				txnCommit(content);
+
+				// check for optional delete notifications
+				if (GL.contains("delete")) {
+					// if it contains any it must contain all.
+					for (Triple t : removed) {
+						GL.assertContains("delete", content, t);
+					}
+				}
+				GL.assertHasEnd(
+						"someEvent",
+						content,
+						GraphEvents.remove(remove.getSubject(),
+								remove.getPredicate(), remove.getObject()));
+
+				content.getEventManager().unregister(GL);
+				Graph finalContent = remove(copy(content), baseContent);
+				assertIsomorphic(cases[i][1], expected, finalContent);
+			}
+	}
+
+	@ContractTest
+	public void testRemove_ByIterator() {
+		testRemove("?? ?? ??", "?? ?? ??");
+		testRemove("S ?? ??", "S ?? ??");
+		testRemove("S ?? ??", "?? P ??");
+		testRemove("S ?? ??", "?? ?? O");
+		testRemove("?? P ??", "S ?? ??");
+		testRemove("?? P ??", "?? P ??");
+		testRemove("?? P ??", "?? ?? O");
+		testRemove("?? ?? O", "S ?? ??");
+		testRemove("?? ?? O", "?? P ??");
+		testRemove("?? ?? O", "?? ?? O");
+	}
+
+	private void testRemove(String findRemove, String findCheck) {
+		Graph g = graphWith(getProducer().newInstance(), "S P O");
+		ExtendedIterator<Triple> it = g.find(NodeCreateUtils
+				.createTriple(findRemove));
+		try {
+			it.next();
+			it.remove();
+			it.close();
+			assertEquals("remove with " + findRemove + ":", 0, g.size());
+			assertFalse(g.contains(NodeCreateUtils.createTriple(findCheck)));
+		} catch (UnsupportedOperationException e) {
+			it.close();
+			assertFalse(
+					"delete failed but capailities indicates it should work", g
+							.getCapabilities().iteratorRemoveAllowed());
+		}
+	}
+
+	/**
+	 * This test case was generated by Ian and was caused by GraphMem not
+	 * keeping up with changes to the find interface.
+	 */
+	@ContractTest
+	public void testFindAndContains() {
+		Graph g = getProducer().newInstance();
+		Node r = NodeCreateUtils.create("r"), s = NodeCreateUtils.create("s"), p = NodeCreateUtils
+				.create("P");
+		txnBegin(g);
+		try {
+			g.add(Triple.create(r, p, s));
+			txnCommit(g);
+			assertTrue(g.contains(r, p, Node.ANY));
+			assertEquals(1, g.find(r, p, Node.ANY).toList().size());
+		} catch (Exception e) {
+			txnRollback(g);
+			fail(e.getMessage());
+		}
+	}
+
+	/**
+	 * Check that contains respects by-value semantics.
+	 */
+
+	@ContractTest
+	public void testAGraph() {
+		String title = this.getClass().getName();
+		Graph g = getProducer().newInstance();
+		int baseSize = g.size();
+		graphAddTxn(g, "x R y; p S q; a T b");
+		/* */
+		assertContainsAll(title + ": simple graph", g, "x R y; p S q; a T b");
+		assertEquals(title + ": size", baseSize + 3, g.size());
+
+		graphAddTxn(g,
+				"spindizzies lift cities; Diracs communicate instantaneously");
+		assertEquals(title + ": size after adding", baseSize + 5, g.size());
+		txnBegin(g);
+		g.delete(triple("x R y"));
+		g.delete(triple("a T b"));
+		txnCommit(g);
+		assertEquals(title + ": size after deleting", baseSize + 3, g.size());
+		assertContainsAll(title + ": modified simple graph", g,
+				"p S q; spindizzies lift cities; Diracs communicate instantaneously");
+		assertOmitsAll(title + ": modified simple graph", g, "x R y; a T b");
+		/* */
+		ClosableIterator<Triple> it = g.find(Node.ANY, node("lift"), Node.ANY);
+		assertTrue(title + ": finds some triple(s)", it.hasNext());
+		assertEquals(title + ": finds a 'lift' triple",
+				triple("spindizzies lift cities"), it.next());
+		assertFalse(title + ": finds exactly one triple", it.hasNext());
+		it.close();
+	}
+
+	// public void testStuff()
+	// {
+	// // testAGraph( "StoreMem", new GraphMem() );
+	// // testAGraph( "StoreMemBySubject", new GraphMem() );
+	// // String [] empty = new String [] {};
+	// // Graph g = graphWith( "x R y; p S q; a T b" );
+	// // /* */
+	// // assertContainsAll( "simple graph", g, "x R y; p S q; a T b" );
+	// // graphAdd( g,
+	// "spindizzies lift cities; Diracs communicate instantaneously" );
+	// // g.delete( triple( "x R y" ) );
+	// // g.delete( triple( "a T b" ) );
+	// // assertContainsAll( "modified simple graph", g,
+	// "p S q; spindizzies lift cities; Diracs communicate instantaneously" );
+	// // assertOmitsAll( "modified simple graph", g, "x R y; a T b" );
+	// }
+
+	// /**
+	// Test that Graphs have transaction support methods, and that if they fail
+	// on some g they fail because they do not support the operation.
+	// */
+	// @ContractTest
+	// public void testHasTransactions()
+	// {
+	// Graph g = getProducer().newInstance();
+	// TransactionHandler th = g.getTransactionHandler();
+	// th.transactionsSupported();
+	// try { th.begin(); } catch (UnsupportedOperationException x) {}
+	// try { th.abort(); } catch (UnsupportedOperationException x) {}
+	// try { th.begin(); th.commit(); } catch (UnsupportedOperationException x)
+	// {}
+	// /* */
+	// Command cmd = new Command()
+	// { @Override
+	// public Object execute() { return null; } };
+	// try { th.executeInTransaction( cmd ); }
+	// catch (UnsupportedOperationException x) {}
+	// }
+	//
+	// @ContractTest
+	// public void testExecuteInTransactionCatchesThrowable()
+	// {Graph g = getProducer().newInstance();
+	// TransactionHandler th = g.getTransactionHandler();
+	// if (th.transactionsSupported())
+	// {
+	// Command cmd = new Command()
+	// { @Override
+	// public Object execute() throws Error { throw new Error(); } };
+	// try { th.executeInTransaction( cmd ); }
+	// catch (JenaException x) {}
+	// }
+	// }
+
+	@ContractTest
+	public void testAddWithReificationPreamble() {
+		Graph g = getProducer().newInstance();
+		txnBegin(g);
+		xSPO(g);
+		txnCommit(g);
+		assertFalse(g.isEmpty());
+	}
+
+	protected void xSPOyXYZ(Graph g) {
+		xSPO(g);
+		ReifierStd.reifyAs(g, NodeCreateUtils.create("y"),
+				NodeCreateUtils.createTriple("X Y Z"));
+	}
+
+	protected void aABC(Graph g) {
+		ReifierStd.reifyAs(g, NodeCreateUtils.create("a"),
+				NodeCreateUtils.createTriple("Foo B C"));
+	}
+
+	protected void xSPO(Graph g) {
+		ReifierStd.reifyAs(g, NodeCreateUtils.create("x"),
+				NodeCreateUtils.createTriple("S P O"));
+	}
+
+	@ContractTest
+	public void failingTestDoubleRemoveAll() {
+		final Graph g = getProducer().newInstance();
+		if (g.getCapabilities().iteratorRemoveAllowed()) {
+			try {
+				graphAddTxn(g, "c S d; e:ff GGG hhhh; _i J 27; Ell Em 'en'");
+				Iterator<Triple> it = new TrackingTripleIterator(
+						g.find(Triple.ANY)) {
+					@Override
+					public void remove() {
+						super.remove(); // removes current
+						g.delete(current); // no-op.
+					}
+				};
+				while (it.hasNext()) {
+					it.next();
+					it.remove();
+				}
+				assertTrue(g.isEmpty());
+			} catch (UnsupportedOperationException e) {
+				fail("Error attempting to remove nodes " + e.getMessage());
+			}
+		}
+	}
+
+	/**
+	 * Test cases for RemoveSPO(); each entry is a triple (add, remove, result).
+	 * <ul>
+	 * <li>add - the triples to add to the graph to start with
+	 * <li>remove - the pattern to use in the removal
+	 * <li>result - the triples that should remain in the graph
+	 * </ul>
+	 */
+	protected static String[][] cases = { { "x R y", "x R y", "", "x R y" },
+			{ "x R y; a P b", "x R y", "a P b", "x R y" },
+			{ "x R y; a P b", "?? R y", "a P b", "x R y" },
+			{ "x R y; a P b", "x R ??", "a P b", "x R y" },
+			{ "x R y; a P b", "x ?? y", "a P b", "x R y" },
+			{ "x R y; a P b", "?? ?? ??", "", "x R y; a P b" },
+			{ "x R y; a P b; c P d", "?? P ??", "x R y", "a P b; c P d" },
+			{ "x R y; a P b; x S y", "x ?? ??", "a P b", "x R y; x S y" }, };
+
+	/**
+	 * testIsomorphism from file data
+	 * 
+	 * @throws FileNotFoundException
+	 */
+	@ContractTest
+	public void testIsomorphismFile() throws URISyntaxException,
+			MalformedURLException {
+		testIsomorphismXMLFile(1, true);
+		testIsomorphismXMLFile(2, true);
+		testIsomorphismXMLFile(3, true);
+		testIsomorphismXMLFile(4, true);
+		testIsomorphismXMLFile(5, false);
+		testIsomorphismXMLFile(6, false);
+		testIsomorphismNTripleFile(7, true);
+		testIsomorphismNTripleFile(8, false);
+
+	}
+
+	private void testIsomorphismNTripleFile(int i, boolean result)
+			throws URISyntaxException, MalformedURLException {
+		testIsomorphismFile(i, "N-TRIPLE", "nt", result);
+	}
+
+	private void testIsomorphismXMLFile(int i, boolean result)
+			throws URISyntaxException, MalformedURLException {
+		testIsomorphismFile(i, "RDF/XML", "rdf", result);
+
+	}
+
+	private InputStream getInputStream(int n, int n2, String suffix)
+			throws URISyntaxException, MalformedURLException {
+		String urlStr = String.format("regression/testModelEquals/%s-%s.%s", n,
+				n2, suffix);
+		return GraphContractTest.class.getClassLoader().getResourceAsStream(
+				urlStr);
+	}
+
+	private void testIsomorphismFile(int n, String lang, String suffix,
+			boolean result) throws URISyntaxException, MalformedURLException {
+
+		Graph g1 = getProducer().newInstance();
+		Graph g2 = getProducer().newInstance();
+		Model m1 = ModelFactory.createModelForGraph(g1);
+		Model m2 = ModelFactory.createModelForGraph(g2);
+
+		m1.read(getInputStream(n, 1, suffix), "http://www.example.org/", lang);
+
+		m2.read(getInputStream(n, 2, suffix), "http://www.example.org/", lang);
+
+		boolean rslt = g1.isIsomorphicWith(g2) == result;
+		if (!rslt) {
+			System.out.println("g1:");
+			m1.write(System.out, "N-TRIPLE");
+			System.out.println("g2:");
+			m2.write(System.out, "N-TRIPLE");
+		}
+		assertTrue("Isomorphism test failed", rslt);
+	}
+
+	protected Graph getClosed() {
+		Graph result = getProducer().newInstance();
+		result.close();
+		return result;
+	}
+
+	// @ContractTest
+	// public void testTransactionCommit()
+	// {
+	// Graph g = getProducer().newInstance();
+	// if (g.getTransactionHandler().transactionsSupported())
+	// {
+	// Graph initial = graphWithTxn( "initial hasValue 42; also hasURI hello" );
+	// Graph extra = graphWithTxn( "extra hasValue 17; also hasURI world" );
+	// //File foo = FileUtils.tempFileName( "fileGraph", ".nt" );
+	//
+	// //Graph g = new FileGraph( foo, true, true );
+	//
+	// GraphUtil.addInto( g, initial );
+	// g.getTransactionHandler().begin();
+	// GraphUtil.addInto( g, extra );
+	// g.getTransactionHandler().commit();
+	// Graph union = graphWithTxn( "" );
+	// GraphUtil.addInto(union, initial );
+	// GraphUtil.addInto(union, extra );
+	// assertIsomorphic( union, g );
+	// //Model inFile = ModelFactory.createDefaultModel();
+	// //inFile.read( "file:///" + foo, "N-TRIPLES" );
+	// //assertIsomorphic( union, inFile.getGraph() );
+	// }
+	// }
+	//
+	// @ContractTest
+	// public void testTransactionAbort()
+	// {
+	// Graph g = getProducer().newInstance();
+	// if (g.getTransactionHandler().transactionsSupported())
+	// {
+	// Graph initial = graphWithTxn( "initial hasValue 42; also hasURI hello" );
+	// Graph extra = graphWithTxn( "extra hasValue 17; also hasURI world" );
+	// File foo = FileUtils.tempFileName( "fileGraph", ".n3" );
+	// //Graph g = new FileGraph( foo, true, true );
+	// GraphUtil.addInto( g, initial );
+	// g.getTransactionHandler().begin();
+	// GraphUtil.addInto( g, extra );
+	// g.getTransactionHandler().abort();
+	// assertIsomorphic( initial, g );
+	// }
+	// }
+	//
+	// @ContractTest
+	// public void testTransactionCommitThenAbort()
+	// {
+	// Graph g = getProducer().newInstance();
+	// if (g.getTransactionHandler().transactionsSupported())
+	// {
+	// Graph initial = graphWithTxn( "Foo pings B; B pings C" );
+	// Graph extra = graphWithTxn( "C pingedBy B; fileGraph rdf:type Graph" );
+	// //Graph g = getProducer().newInstance();
+	// //File foo = FileUtils.tempFileName( "fileGraph", ".nt" );
+	// //Graph g = new FileGraph( foo, true, true );
+	// g.getTransactionHandler().begin();
+	// GraphUtil.addInto( g, initial );
+	// g.getTransactionHandler().commit();
+	// g.getTransactionHandler().begin();
+	// GraphUtil.addInto( g, extra );
+	// g.getTransactionHandler().abort();
+	// assertIsomorphic( initial, g );
+	// //Model inFile = ModelFactory.createDefaultModel();
+	// // inFile.read( "file:///" + foo, "N-TRIPLES" );
+	// //assertIsomorphic( initial, inFile.getGraph() );
+	// }
+	// }
+
+	/**
+	 * This test exposed that the update-existing-graph functionality was broken
+	 * if the target graph already contained any statements with a subject S
+	 * appearing as subject in the source graph - no further Spo statements were
+	 * added.
+	 */
+	@ContractTest
+	public void testPartialUpdate() {
+		Graph source = graphWith(getProducer().newInstance(), "a R b; b S e");
+		Graph dest = graphWith(getProducer().newInstance(), "b R d");
+		GraphExtract e = new GraphExtract(TripleBoundary.stopNowhere);
+		e.extractInto(dest, node("a"), source);
+		assertIsomorphic(
+				graphWith(getProducer().newInstance(), "a R b; b S e; b R d"),
+				dest);
+	}
+
+	/**
+	 * Ensure that triples removed by calling .remove() on the iterator returned
+	 * by a find() will generate deletion notifications.
+	 */
+	@ContractTest
+	public void testIterator_Remove() {
+		Graph graph = graphWith(getProducer().newInstance(), "a R b; b S e");
+		if (graph.getCapabilities().iteratorRemoveAllowed()) {
+			try {
+				graph.getEventManager().register(GL);
+				txnBegin(graph);
+
+				Triple toRemove = triple("a R b");
+				ExtendedIterator<Triple> rtr = graph.find(toRemove);
+				assertTrue("ensure a(t least) one triple", rtr.hasNext());
+				rtr.next();
+				rtr.remove();
+				rtr.close();
+				GL.assertHas("delete", graph, toRemove);
+			} catch (UnsupportedOperationException e) {
+				fail("Error attempting to remove nodes " + e.getMessage());
+			}
+
+		}
+	}
+
+	@ContractTest
+	public void testTransactionHandler_Commit() {
+		Graph g = getProducer().newInstance();
+		if (g.getTransactionHandler().transactionsSupported()) {
+			Graph initial = graphWith(getProducer().newInstance(),
+					"initial hasValue 42; also hasURI hello");
+			Graph extra = graphWith(getProducer().newInstance(),
+					"extra hasValue 17; also hasURI world");
+
+			GraphUtil.addInto(g, initial);
+			g.getTransactionHandler().begin();
+			GraphUtil.addInto(g, extra);
+			g.getTransactionHandler().commit();
+			Graph union = memGraph();
+			GraphUtil.addInto(union, initial);
+			GraphUtil.addInto(union, extra);
+			assertIsomorphic(union, g);
+			// Model inFiIProducer<TransactionHandler>le =
+			// ModelFactory.createDefaultModel();
+			// inFile.read( "file:///" + foo, "N-TRIPLES" );
+			// assertIsomorphic( union, inFile.getGraph() );
+		}
+	}
+
+	@ContractTest
+	public void testTransactionHandler_Abort() {
+		Graph g = getProducer().newInstance();
+		if (g.getTransactionHandler().transactionsSupported()) {
+			Graph initial = graphWith(getProducer().newInstance(),
+					"initial hasValue 42; also hasURI hello");
+			Graph extra = graphWith(getProducer().newInstance(),
+					"extra hasValue 17; also hasURI world");
+			GraphUtil.addInto(g, initial);
+			g.getTransactionHandler().begin();
+			GraphUtil.addInto(g, extra);
+			g.getTransactionHandler().abort();
+			assertIsomorphic(initial, g);
+		}
+	}
+
+	@ContractTest
+	public void testTransactionHandler_CommitThenAbort() {
+		Graph g = getProducer().newInstance();
+		if (g.getTransactionHandler().transactionsSupported()) {
+			Graph initial = graphWith(getProducer().newInstance(),
+					"Foo pings B; B pings C");
+			Graph extra = graphWith(getProducer().newInstance(),
+					"C pingedBy B; fileGraph rdf:type Graph");
+			g.getTransactionHandler().begin();
+			GraphUtil.addInto(g, initial);
+			g.getTransactionHandler().commit();
+			g.getTransactionHandler().begin();
+			GraphUtil.addInto(g, extra);
+			g.getTransactionHandler().abort();
+			assertIsomorphic(initial, g);
+			// Model inFile = ModelFactory.createDefaultModel();
+			// inFile.read( "file:///" + foo, "N-TRIPLES" );
+			// assertIsomorphic( initial, inFile.getGraph() );
+		}
+	}
+
+	//
+	// Test that literal typing works when supported
+	//
+
+	// used to find the object set from the returned set for literal testing
+	private static final Map1<Triple, Node> getObject = new Map1<Triple, Node>() {
+		@Override
+		public Node map1(Triple o) {
+			return o.getObject();
+		}
+	};
+
+	private void testLiteralTypingBasedFind(final String data, final int size,
+			final String search, final String results, boolean reqLitType) {
+
+		Graph g = getProducer().newInstance();
+
+		if (!reqLitType || g.getCapabilities().handlesLiteralTyping()) {
+			graphWith(g, data);
+
+			Node literal = NodeCreateUtils.create(search);
+			//
+			assertEquals("graph has wrong size", size, g.size());
+			Set<Node> got = g.find(Node.ANY, Node.ANY, literal)
+					.mapWith(getObject).toSet();
+			assertEquals(nodeSet(results), got);
+		}
+	}
+
+	@ContractTest
+	public void testLiteralTypingBasedFind() {
+		testLiteralTypingBasedFind("a P 'simple'", 1, "'simple'", "'simple'",
+				false);
+		testLiteralTypingBasedFind("a P 'simple'xsd:string", 1, "'simple'",
+				"'simple'xsd:string", true);
+		testLiteralTypingBasedFind("a P 'simple'", 1, "'simple'xsd:string",
+				"'simple'", true);
+		testLiteralTypingBasedFind("a P 'simple'xsd:string", 1,
+				"'simple'xsd:string", "'simple'xsd:string", false);
+//		testLiteralTypingBasedFind("a P 'simple'; a P 'simple'xsd:string", 2,
+//				"'simple'", "'simple' 'simple'xsd:string", true);
+//		testLiteralTypingBasedFind("a P 'simple'; a P 'simple'xsd:string", 2,
+//				"'simple'xsd:string", "'simple' 'simple'xsd:string", true);
+		testLiteralTypingBasedFind("a P 'simple'; a P 'simple'xsd:string", 1,
+				"'simple'", "'simple'", true);
+		testLiteralTypingBasedFind("a P 'simple'; a P 'simple'xsd:string", 1,
+				"'simple'xsd:string", "'simple'xsd:string", true);
+		testLiteralTypingBasedFind("a P 1", 1, "1", "1", false);
+		testLiteralTypingBasedFind("a P '1'xsd:float", 1, "'1'xsd:float",
+				"'1'xsd:float", false);
+		testLiteralTypingBasedFind("a P '1'xsd:double", 1, "'1'xsd:double",
+				"'1'xsd:double", false);
+		testLiteralTypingBasedFind("a P '1'xsd:float", 1, "'1'xsd:float",
+				"'1'xsd:float", false);
+		testLiteralTypingBasedFind("a P '1.1'xsd:float", 1, "'1'xsd:float", "",
+				false);
+		testLiteralTypingBasedFind("a P '1'xsd:double", 1, "'1'xsd:int", "",
+				false);
+		testLiteralTypingBasedFind("a P 'abc'rdf:XMLLiteral", 1, "'abc'", "",
+				false);
+		testLiteralTypingBasedFind("a P 'abc'", 1, "'abc'rdf:XMLLiteral", "",
+				false);
+		//
+		// floats & doubles are not compatible
+		//
+		testLiteralTypingBasedFind("a P '1'xsd:float", 1, "'1'xsd:double", "",
+				false);
+		testLiteralTypingBasedFind("a P '1'xsd:double", 1, "'1'xsd:float", "",
+				false);
+		testLiteralTypingBasedFind("a P 1", 1, "'1'", "", false);
+		testLiteralTypingBasedFind("a P 1", 1, "'1'xsd:integer",
+				"'1'xsd:integer", false);
+		testLiteralTypingBasedFind("a P 1", 1, "'1'", "", false);
+		testLiteralTypingBasedFind("a P '1'xsd:short", 1, "'1'xsd:integer",
+				"'1'xsd:short", true);
+		testLiteralTypingBasedFind("a P '1'xsd:int", 1, "'1'xsd:integer",
+				"'1'xsd:int", true);
+	}
+
+	@ContractTest
+	public void testQuadRemove() {
+		Graph g = getProducer().newInstance();
+		assertEquals(0, g.size());
+		Triple s = triple("x rdf:subject s");
+		Triple p = triple("x rdf:predicate p");
+		Triple o = triple("x rdf:object o");
+		Triple t = triple("x rdf:type rdf:Statement");
+		txnBegin(g);
+		g.add(s);
+		g.add(p);
+		g.add(o);
+		g.add(t);
+		txnCommit(g);
+		assertEquals(4, g.size());
+		txnBegin(g);
+		g.delete(s);
+		g.delete(p);
+		g.delete(o);
+		g.delete(t);
+		txnCommit(g);
+		assertEquals(0, g.size());
+	}
+
+	@ContractTest
+	public void testSizeAfterRemove() {
+		Graph g = graphWith(getProducer().newInstance(), "x p y");
+		if (g.getCapabilities().iteratorRemoveAllowed()) {
+			try {
+				ExtendedIterator<Triple> it = g.find(triple("x ?? ??"));
+				it.removeNext();
+				assertEquals(0, g.size());
+			} catch (UnsupportedOperationException e) {
+				fail("Error attempting to remove nodes " + e.getMessage());
+			}
+		}
+	}
+
+	@ContractTest
+	public void testSingletonStatisticsWithSingleTriple() {
+
+		Graph g = graphWith(getProducer().newInstance(), "a P b");
+		GraphStatisticsHandler h = g.getStatisticsHandler();
+		if (h != null) {
+			assertEquals(1L, h.getStatistic(node("a"), Node.ANY, Node.ANY));
+			assertEquals(0L, h.getStatistic(node("x"), Node.ANY, Node.ANY));
+			//
+			assertEquals(1L, h.getStatistic(Node.ANY, node("P"), Node.ANY));
+			assertEquals(0L, h.getStatistic(Node.ANY, node("Q"), Node.ANY));
+			//
+			assertEquals(1L, h.getStatistic(Node.ANY, Node.ANY, node("b")));
+			assertEquals(0L, h.getStatistic(Node.ANY, Node.ANY, node("y")));
+		}
+	}
+
+	@ContractTest
+	public void testSingletonStatisticsWithSeveralTriples() {
+
+		Graph g = graphWith(getProducer().newInstance(),
+				"a P b; a P c; a Q b; x S y");
+		GraphStatisticsHandler h = g.getStatisticsHandler();
+		if (h != null) {
+			assertEquals(3L, h.getStatistic(node("a"), Node.ANY, Node.ANY));
+			assertEquals(1L, h.getStatistic(node("x"), Node.ANY, Node.ANY));
+			assertEquals(0L, h.getStatistic(node("y"), Node.ANY, Node.ANY));
+			//
+			assertEquals(2L, h.getStatistic(Node.ANY, node("P"), Node.ANY));
+			assertEquals(1L, h.getStatistic(Node.ANY, node("Q"), Node.ANY));
+			assertEquals(0L, h.getStatistic(Node.ANY, node("R"), Node.ANY));
+			//
+			assertEquals(2L, h.getStatistic(Node.ANY, Node.ANY, node("b")));
+			assertEquals(1L, h.getStatistic(Node.ANY, Node.ANY, node("c")));
+			assertEquals(0L, h.getStatistic(Node.ANY, Node.ANY, node("d")));
+		}
+	}
+
+	@ContractTest
+	public void testDoubletonStatisticsWithTriples() {
+
+		Graph g = graphWith(getProducer().newInstance(),
+				"a P b; a P c; a Q b; x S y");
+		GraphStatisticsHandler h = g.getStatisticsHandler();
+		if (h != null) {
+			assertEquals(-1L, h.getStatistic(node("a"), node("P"), Node.ANY));
+			assertEquals(-1L, h.getStatistic(Node.ANY, node("P"), node("b")));
+			assertEquals(-1L, h.getStatistic(node("a"), Node.ANY, node("b")));
+			//
+			assertEquals(0L, h.getStatistic(node("no"), node("P"), Node.ANY));
+		}
+	}
+
+	@ContractTest
+	public void testStatisticsWithOnlyVariables() {
+		testStatsWithAllVariables("");
+		testStatsWithAllVariables("a P b");
+		testStatsWithAllVariables("a P b; a P c");
+		testStatsWithAllVariables("a P b; a P c; a Q b; x S y");
+	}
+
+	private void testStatsWithAllVariables(String triples) {
+		Graph g = graphWith(getProducer().newInstance(), triples);
+		GraphStatisticsHandler h = g.getStatisticsHandler();
+		if (h != null) {
+			assertEquals(g.size(), h.getStatistic(Node.ANY, Node.ANY, Node.ANY));
+		}
+	}
+
+	@ContractTest
+	public void testStatsWithConcreteTriple() {
+		testStatsWithConcreteTriple(0, "x P y", "");
+	}
+
+	private void testStatsWithConcreteTriple(int expect, String triple,
+			String graph) {
+		Graph g = graphWith(getProducer().newInstance(), graph);
+		GraphStatisticsHandler h = g.getStatisticsHandler();
+		if (h != null) {
+			Triple t = triple(triple);
+			assertEquals(
+					expect,
+					h.getStatistic(t.getSubject(), t.getPredicate(),
+							t.getObject()));
+		}
+	}
+
+	@ContractTest
+	public void testBrokenIndexes() {
+		Graph g = graphWith(getProducer().newInstance(), "x R y; x S z");
+		if (g.getCapabilities().iteratorRemoveAllowed()) {
+			try {
+				ExtendedIterator<Triple> it = g.find(Node.ANY, Node.ANY,
+						Node.ANY);
+				it.removeNext();
+				it.removeNext();
+				assertFalse(g.find(node("x"), Node.ANY, Node.ANY).hasNext());
+				assertFalse(g.find(Node.ANY, node("R"), Node.ANY).hasNext());
+				assertFalse(g.find(Node.ANY, Node.ANY, node("y")).hasNext());
+			} catch (UnsupportedOperationException e) {
+				fail("Error attempting to remove nodes " + e.getMessage());
+			}
+		}
+	}
+
+	@ContractTest
+	public void testBrokenSubject() {
+		Graph g = graphWith(getProducer().newInstance(), "x brokenSubject y");
+		if (g.getCapabilities().iteratorRemoveAllowed()) {
+			try {
+				ExtendedIterator<Triple> it = g.find(node("x"), Node.ANY,
+						Node.ANY);
+				it.removeNext();
+				assertFalse(g.find(Node.ANY, Node.ANY, Node.ANY).hasNext());
+			} catch (UnsupportedOperationException e) {
+				fail("Error attempting to remove nodes " + e.getMessage());
+			}
+		}
+	}
+
+	@ContractTest
+	public void testBrokenPredicate() {
+		Graph g = graphWith(getProducer().newInstance(), "x brokenPredicate y");
+		if (g.getCapabilities().iteratorRemoveAllowed()) {
+			try {
+				ExtendedIterator<Triple> it = g.find(Node.ANY,
+						node("brokenPredicate"), Node.ANY);
+				it.removeNext();
+				assertFalse(g.find(Node.ANY, Node.ANY, Node.ANY).hasNext());
+			} catch (UnsupportedOperationException e) {
+				fail("Error attempting to remove nodes " + e.getMessage());
+			}
+		}
+	}
+
+	@ContractTest
+	public void testBrokenObject() {
+		Graph g = graphWith(getProducer().newInstance(), "x brokenObject y");
+		if (g.getCapabilities().iteratorRemoveAllowed()) {
+			try {
+				ExtendedIterator<Triple> it = g.find(Node.ANY, Node.ANY,
+						node("y"));
+				it.removeNext();
+				assertFalse(g.find(Node.ANY, Node.ANY, Node.ANY).hasNext());
+
+			} catch (UnsupportedOperationException e) {
+				fail("Error attempting to remove nodes " + e.getMessage());
+			}
+		}
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/graph/GraphEventManagerContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/GraphEventManagerContractTest.java b/jena-core/src/test/java/org/apache/jena/graph/GraphEventManagerContractTest.java
new file mode 100644
index 0000000..426002d
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/GraphEventManagerContractTest.java
@@ -0,0 +1,514 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.graph;
+
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+import org.junit.After;
+import org.junit.Before;
+import org.mockito.Mockito;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractTest;
+
+import static org.junit.Assert.*;
+
+import org.apache.jena.graph.Graph;
+import org.apache.jena.graph.GraphEventManager;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.graph.Factory;
+import org.apache.jena.testing_framework.ContractTemplate;
+import org.apache.jena.testing_framework.GraphHelper;
+import org.xenei.junit.contract.IProducer;
+import org.apache.jena.testing_framework.NodeCreateUtils;
+
+import static org.apache.jena.testing_framework.GraphHelper.*;
+
+/**
+ * An abstract test that tests EventManager implementations to ensure they
+ * comply with the EventManager contract.
+ * 
+ * Subclasses of this class must implement the getEventManagerProducer() method
+ * to create a new instance of the EventManager for testing.
+ */
+
+@Contract(GraphEventManager.class)
+public class GraphEventManagerContractTest<T extends GraphEventManager> extends
+		ContractTemplate<IProducer<T>> {
+
+	protected static final Triple[] tripleArray = tripleArray("S P O; Foo R B; X Q Y");
+
+	// the graph that is used as the source of the events.
+	private Graph mockGraph;
+	// The event manager we are working with.
+	private GraphEventManager gem;
+
+	public GraphEventManagerContractTest() {
+//		setProducer(new IProducer<T>() {
+//
+//			@SuppressWarnings("unchecked")
+//			@Override
+//			public T newInstance() {
+//				return (T) Factory.createGraphMem().getEventManager();
+//			}
+//
+//			@Override
+//			public void cleanUp() {
+//			}
+//		});
+
+	}
+
+	@Contract.Inject
+	public final void setGraphEventManagerContractTestProducer(
+			IProducer<T> producer) {
+		super.setProducer(producer);
+	}
+
+	@After
+	public final void afterGraphEventManagerContractTest() {
+		getProducer().cleanUp();
+	}
+
+	@Before
+	public final void beforeGraphEventManagerContractTest() {
+		mockGraph = Mockito.mock(Graph.class);
+		gem = getProducer().newInstance();
+		L = new RecordingGraphListener();
+	}
+
+	/**
+	 * Test that when a listener is registered the same EventManager is
+	 * returned.
+	 */
+	@ContractTest
+	public void testEventRegister() {
+		assertSame(gem, gem.register(new RecordingGraphListener()));
+	}
+
+	/**
+	 * Test that we can safely unregister a listener that isn't registered.
+	 */
+	@ContractTest
+	public void testEventUnregister() {
+		assertSame(gem, gem.unregister(L));
+	}
+
+	/**
+	 * Handy triple for test purposes.
+	 */
+	protected Triple SPO = NodeCreateUtils.createTriple("S P O");
+
+	/**
+	 * The RecordingListener that reports all the events sent from the
+	 * EventManager.
+	 */
+	protected RecordingGraphListener L;
+
+	/**
+	 * Test that adding a triple is reported.
+	 */
+	@ContractTest
+	public void testAddTriple() {
+		gem.register(L);
+		gem.notifyAddTriple(mockGraph, SPO);
+		L.assertHas(new Object[] { "add", mockGraph, SPO });
+	}
+
+	/**
+	 * Test that deleting a triple is reported.
+	 */
+	@ContractTest
+	public void testDeleteTriple() {
+		gem.register(L);
+		gem.notifyDeleteTriple(mockGraph, SPO);
+		L.assertHas(new Object[] { "delete", mockGraph, SPO });
+	}
+
+	/**
+	 * Test that when 2 listeners are added both receive events.
+	 */
+	@ContractTest
+	public void testTwoListeners() {
+		RecordingGraphListener L1 = new RecordingGraphListener();
+		RecordingGraphListener L2 = new RecordingGraphListener();
+		gem.register(L1).register(L2);
+		gem.notifyAddTriple(mockGraph, SPO);
+		L2.assertHas(new Object[] { "add", mockGraph, SPO });
+		L1.assertHas(new Object[] { "add", mockGraph, SPO });
+	}
+
+	/**
+	 * Test that unregistering a listener after registering it results in it not
+	 * receiving messages.
+	 */
+	@ContractTest
+	public void testUnregisterWorks() {
+		gem.register(L).unregister(L);
+		gem.notifyAddTriple(mockGraph, SPO);
+		L.assertHas(new Object[] {});
+	}
+
+	/**
+	 * Test that registering a listener twice results in the listener receiving
+	 * the events twice.
+	 */
+	@ContractTest
+	public void testRegisterTwice() {
+		gem.register(L).register(L);
+		gem.notifyAddTriple(mockGraph, SPO);
+		L.assertHas(new Object[] { "add", mockGraph, SPO, "add", mockGraph, SPO });
+	}
+
+	/**
+	 * Test that registering a listener twice and unregistering it once will
+	 * result in the listener receiving each event one time.
+	 */
+	@ContractTest
+	public void testUnregisterOnce() {
+		gem.register(L).register(L).unregister(L);
+		gem.notifyDeleteTriple(mockGraph, SPO);
+		L.assertHas(new Object[] { "delete", mockGraph, SPO });
+	}
+
+	/**
+	 * Test that adding an array is reported as adding an array.
+	 */
+	@ContractTest
+	public void testAddArray() {
+		gem.register(L);
+		gem.notifyAddArray(mockGraph, tripleArray);
+		L.assertHas(new Object[] { "add[]", mockGraph, tripleArray });
+	}
+
+	/**
+	 * Test that adding a list is reported as adding a list
+	 */
+	@ContractTest
+	public void testAddList() {
+		gem.register(L);
+		List<Triple> elems = Arrays.asList(tripleArray);
+		gem.notifyAddList(mockGraph, elems);
+		L.assertHas(new Object[] { "addList", mockGraph, elems });
+	}
+
+	/**
+	 * Test that deleting an array is reported as deleting an array.
+	 */
+	@ContractTest
+	public void testDeleteArray() {
+		gem.register(L);
+		gem.notifyDeleteArray(mockGraph, tripleArray);
+		L.assertHas(new Object[] { "delete[]", mockGraph, tripleArray });
+	}
+
+	/**
+	 * Test that deleting a list is reported as deleting a list.
+	 */
+	@ContractTest
+	public void testDeleteList() {
+		gem.register(L);
+		List<Triple> elems = Arrays.asList(tripleArray);
+		gem.notifyDeleteList(mockGraph, elems);
+		L.assertHas(new Object[] { "deleteList", mockGraph, elems });
+	}
+
+	/**
+	 * Test that adding a list as an iterator is reported as an add iterator.
+	 */
+	@ContractTest
+	public void testAddListAsIterator() {
+		gem.register(L);
+		List<Triple> elems = Arrays.asList(tripleArray);
+		gem.notifyAddIterator(mockGraph, elems);
+		L.assertHas(new Object[] { "addIterator", mockGraph, elems });
+	}
+
+	/**
+	 * Test that adding an iterator is reported as adding an iterator.
+	 */
+	@ContractTest
+	public void testAddIterator() {
+		gem.register(L);
+		List<Triple> elems = Arrays.asList(tripleArray);
+		gem.notifyAddIterator(mockGraph, elems.iterator());
+		L.assertHas(new Object[] { "addIterator", mockGraph, elems });
+	}
+
+	/**
+	 * Test that deleting an iterator is reported as a deleting an iterator.
+	 */
+	@ContractTest
+	public void testDeleteIterator() {
+		gem.register(L);
+		List<Triple> elems = Arrays.asList(tripleArray);
+		gem.notifyDeleteIterator(mockGraph, elems.iterator());
+		L.assertHas(new Object[] { "deleteIterator", mockGraph, elems });
+	}
+
+	/**
+	 * Test that deleting a list as an iterator is reported as deleting an
+	 * iterator.
+	 */
+	@ContractTest
+	public void testDeleteListAsIterator() {
+		gem.register(L);
+		List<Triple> elems = Arrays.asList(tripleArray);
+		gem.notifyDeleteIterator(mockGraph, elems);
+		L.assertHas(new Object[] { "deleteIterator", mockGraph, elems });
+	}
+
+	/**
+	 * Test that adding a graph is reported as adding a graph.
+	 */
+	@ContractTest
+	public void testAddGraph() {
+		gem.register(L);
+		Graph other = Mockito.mock(Graph.class);
+		gem.notifyAddGraph(mockGraph, other);
+		L.assertHas(new Object[] { "addGraph", mockGraph, other });
+	}
+
+	/**
+	 * Test that deleting a graph is reported as deleting a graph.
+	 */
+	@ContractTest
+	public void testDeleteGraph() {
+		gem.register(L);
+		Graph other = Mockito.mock(Graph.class);
+		gem.notifyDeleteGraph(mockGraph, other);
+		L.assertHas(new Object[] { "deleteGraph", mockGraph, other });
+	}
+
+	/**
+	 * Test that sending a general event is reported as an event and the value
+	 * is saved.
+	 */
+	@ContractTest
+	public void testGeneralEvent() {
+		gem.register(L);
+		Object value = new int[] {};
+		gem.notifyEvent(mockGraph, value);
+		L.assertHas(new Object[] { "someEvent", mockGraph, value });
+	}
+
+	@ContractTest
+	public void testListening() {
+		assertFalse("Should not be listening", gem.listening());
+		gem.register(L);
+		assertTrue("Should be listening", gem.listening());
+		gem.unregister(L);
+		assertFalse("Should not be listening", gem.listening());
+	}
+
+	//
+	// Foo series of tests to check modifying the manger in mid notification
+	//
+
+	private ComeAndGoListener all[];
+
+	abstract private static class ComeAndGoListener implements GraphListener {
+
+		// Was I registered when start() was called, and have not been
+		// unregistered.
+		boolean inPlay = false;
+		// currently registered or not.
+		boolean registered = false;
+		boolean notified = false;
+
+		void register(GraphEventManager gem) {
+			registered = true;
+			gem.register(this);
+		}
+
+		void unregister(GraphEventManager gem) {
+			registered = false;
+			inPlay = false;
+			gem.unregister(this);
+		}
+
+		void start() {
+			if (registered)
+				inPlay = true;
+		}
+
+		void check() {
+			if (inPlay && !notified)
+				fail("listener that was in-play was not notified of adding triple.");
+		}
+
+		@Override
+		final public void notifyAddTriple(Graph g, Triple t) {
+			notified = true;
+			doSomeDamage();
+		}
+
+		abstract void doSomeDamage();
+
+		@Override
+		public void notifyAddArray(Graph g, Triple[] triples) {
+		}
+
+		@Override
+		public void notifyAddGraph(Graph g, Graph added) {
+		}
+
+		@Override
+		public void notifyAddIterator(Graph g, Iterator<Triple> it) {
+		}
+
+		@Override
+		public void notifyAddList(Graph g, List<Triple> triples) {
+		}
+
+		@Override
+		public void notifyDeleteArray(Graph g, Triple[] triples) {
+		}
+
+		@Override
+		public void notifyDeleteGraph(Graph g, Graph removed) {
+		}
+
+		@Override
+		public void notifyDeleteIterator(Graph g, Iterator<Triple> it) {
+		}
+
+		@Override
+		public void notifyDeleteList(Graph g, List<Triple> L) {
+		}
+
+		@Override
+		public void notifyDeleteTriple(Graph g, Triple t) {
+		}
+
+		@Override
+		public void notifyEvent(Graph source, Object value) {
+		}
+
+	}
+
+	/**
+	 * ComeAndGoListener implementation that does no damage
+	 * 
+	 */
+	private static final class SimpleListener extends ComeAndGoListener {
+		@Override
+		void doSomeDamage() {
+		}
+	}
+
+	/**
+	 * Test adding a triple to trigger event.
+	 * 
+	 * @param registerTo
+	 *            Number of listeners to register.
+	 * @param allx
+	 */
+	private void testAddingTriple(int registerTo, ComeAndGoListener... allx) {
+		all = allx;
+		// register addMe
+		for (int i = 0; i < registerTo; i++) {
+			all[i].register(gem);
+		}
+
+		// start them all
+		for (ComeAndGoListener l : all) {
+			l.start();
+		}
+		// send the notification.
+		gem.notifyAddTriple(mockGraph, GraphHelper.triple("make a change"));
+		// check them
+		for (ComeAndGoListener l : all) {
+			l.check();
+		}
+	}
+
+	/**
+	 * Test that a listener added during event processing does not receive the
+	 * event.
+	 */
+	@ContractTest
+	public void testAddOne() {
+		testAddingTriple(2, new ComeAndGoListener() {
+			@Override
+			void doSomeDamage() {
+				all[2].register(gem);
+			}
+		}, new SimpleListener(), new SimpleListener());
+	}
+
+	/**
+	 * Test that when a listener that has not yet been handled is removed during
+	 * event processing it receive the event.
+	 */
+	@ContractTest
+	public void testDelete2nd() {
+		testAddingTriple(3, new ComeAndGoListener() {
+			@Override
+			void doSomeDamage() {
+				all[1].unregister(gem);
+			}
+		}, new SimpleListener(), new SimpleListener());
+	}
+
+	/**
+	 * Test that when a listener that has been handled is removed during event
+	 * processing it receives the event.
+	 */
+	@ContractTest
+	public void testDelete1st() {
+		testAddingTriple(3, new SimpleListener(), new ComeAndGoListener() {
+			@Override
+			void doSomeDamage() {
+				all[0].unregister(gem);
+			}
+		}, new SimpleListener());
+	}
+
+	/**
+	 * Test that when a listener that removes itself during event processing it
+	 * receives the event.
+	 */
+	@ContractTest
+	public void testDeleteSelf() {
+		testAddingTriple(3, new ComeAndGoListener() {
+			@Override
+			void doSomeDamage() {
+				unregister(gem);
+			}
+		}, new SimpleListener(), new SimpleListener());
+	}
+
+	/**
+	 * Test that when a listener that removes and adds itself during event
+	 * processing it receives the event.
+	 */
+	@ContractTest
+	public void testDeleteAndAddSelf() {
+		testAddingTriple(3, new ComeAndGoListener() {
+			@Override
+			void doSomeDamage() {
+				unregister(gem);
+				register(gem);
+			}
+		}, new SimpleListener(), new SimpleListener());
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/graph/GraphMakerContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/GraphMakerContractTest.java b/jena-core/src/test/java/org/apache/jena/graph/GraphMakerContractTest.java
new file mode 100644
index 0000000..5fbd9c2
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/GraphMakerContractTest.java
@@ -0,0 +1,314 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.graph;
+
+import static org.junit.Assert.*;
+import java.util.Set;
+
+import org.junit.After;
+import org.junit.Before;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractTest;
+
+import org.apache.jena.graph.Graph;
+import org.apache.jena.graph.GraphMaker;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.graph.impl.SimpleGraphMaker;
+import org.apache.jena.shared.AlreadyExistsException;
+import org.apache.jena.shared.DoesNotExistException;
+import org.apache.jena.testing_framework.GraphHelper;
+import org.xenei.junit.contract.IProducer;
+import org.apache.jena.testing_framework.TestUtils;
+
+/**
+ * Abstract base class for testing graph factories. Subclasses define the method
+ * <code>getGraphFactory()</code> which supplies a new graph factory to be
+ * tested: ATGF invokes that during <code>setUp</code> and closes it in
+ * <code>tearDown</code>.
+ * <p>
+ * This bunch of tests is not remotely exhaustive, but it was sufficent to drive
+ * the development of the first full graph factory. (Although at the time it
+ * wasn't abstract.)
+ */
+@Contract(GraphMaker.class)
+public class GraphMakerContractTest {
+
+	private IProducer<GraphMaker> producer;
+
+	private GraphMaker graphMaker;
+
+	public GraphMakerContractTest() {
+//		producer = new IProducer<GraphMaker>() {
+//
+//			@Override
+//			public GraphMaker newInstance() {
+//				return new SimpleGraphMaker();
+//			}
+//
+//			@Override
+//			public void cleanUp() {
+//
+//			}
+//		};
+	}
+
+	@Contract.Inject
+	public final void setGraphMaker(IProducer<GraphMaker> producer) {
+		this.producer = producer;
+	}
+
+	protected final IProducer<GraphMaker> getGraphMakerProducer() {
+		return producer;
+	}
+
+	@After
+	public final void afterGraphMakerContractTest() {
+		producer.cleanUp();
+	}
+
+	@Before
+	public final void beforeGraphMakerContractTest() {
+		graphMaker = producer.newInstance();
+	}
+
+	@After
+	public void tearDown() {
+		graphMaker.close();
+		getGraphMakerProducer().cleanUp();
+	}
+
+	/**
+	 * Foo trivial test that getGraph delivers a proper graph, not cheating with
+	 * null, and that getGraph() "always" delivers the same Graph.
+	 */
+	@ContractTest
+	public void testGetGraph() {
+		Graph g1 = graphMaker.getGraph();
+		assertFalse("should deliver a Graph", g1 == null);
+		assertSame(g1, graphMaker.getGraph());
+		g1.close();
+	}
+
+	@ContractTest
+	public void testCreateGraph() {
+		TestUtils.assertDiffer("each created graph must differ",
+				graphMaker.createGraph(), graphMaker.createGraph());
+	}
+
+	@ContractTest
+	public void testAnyName() {
+		graphMaker.createGraph("plain").close();
+		graphMaker.createGraph("with.dot").close();
+		graphMaker.createGraph("http://electric-hedgehog.net/topic#marker")
+				.close();
+	}
+
+	/**
+	 * Test that we can't create a graph with the same name twice.
+	 */
+	@ContractTest
+	public void testCannotCreateTwice() {
+		String name = jName("bonsai");
+		graphMaker.createGraph(name, true);
+		try {
+			graphMaker.createGraph(name, true);
+			fail("should not be able to create " + name + " twice");
+		} catch (AlreadyExistsException e) {
+		}
+	}
+
+	private String jName(String name) {
+		return "jena-test-AbstractTestGraphMaker-" + name;
+	}
+
+	@ContractTest
+	public void testCanCreateTwice() {
+		String name = jName("bridge");
+		Graph g1 = graphMaker.createGraph(name, true);
+		Graph g2 = graphMaker.createGraph(name, false);
+		assertTrue("graphs should be the same", sameGraph(g1, g2));
+		Graph g3 = graphMaker.createGraph(name);
+		assertTrue("graphs should be the same", sameGraph(g1, g3));
+	}
+
+	/**
+	 * Test that we cannot open a graph that does not exist.
+	 */
+	@ContractTest
+	public void testCannotOpenUncreated() {
+		String name = jName("noSuchGraph");
+		try {
+			graphMaker.openGraph(name, true);
+			fail(name + " should not exist");
+		} catch (DoesNotExistException e) {
+		}
+	}
+
+	/**
+	 * Test that we *can* open a graph that hasn't been created
+	 */
+	@ContractTest
+	public void testCanOpenUncreated() {
+		String name = jName("willBeCreated");
+		Graph g1 = graphMaker.openGraph(name);
+		g1.close();
+		graphMaker.openGraph(name, true);
+	}
+
+	/**
+	 * Utility - test that a graph with the given name exists.
+	 */
+	private void testExists(String name) {
+		assertTrue(name + " should exist", graphMaker.hasGraph(name));
+	}
+
+	/**
+	 * Utility - test that no graph with the given name exists.
+	 */
+	private void testDoesNotExist(String name) {
+		assertFalse(name + " should exist", graphMaker.hasGraph(name));
+	}
+
+	/**
+	 * Test that we can find a graph once its been created. We need to know if
+	 * two graphs are "the same" here: we have a temporary work-around but it is
+	 * not sound.
+	 * 
+	 */
+	@ContractTest
+	public void testCanFindCreatedGraph() {
+		String alpha = jName("alpha"), beta = jName("beta");
+		Graph g1 = graphMaker.createGraph(alpha, true);
+		Graph h1 = graphMaker.createGraph(beta, true);
+		Graph g2 = graphMaker.openGraph(alpha, true);
+		Graph h2 = graphMaker.openGraph(beta, true);
+		assertTrue("should find alpha", sameGraph(g1, g2));
+		assertTrue("should find beta", sameGraph(h1, h2));
+	}
+
+	/**
+	 * Weak test for "same graph": adding this to one is visible in t'other.
+	 * Stopgap for use in testCanFindCreatedGraph. TODO: clean that test up
+	 * (left over from RDB days)
+	 */
+	private boolean sameGraph(Graph g1, Graph g2) {
+		Node S = GraphHelper.node("S"), P = GraphHelper.node("P"), O = GraphHelper
+				.node("O");
+		g1.add(Triple.create(S, P, O));
+		g2.add(Triple.create(O, P, S));
+		return g2.contains(S, P, O) && g1.contains(O, P, S);
+	}
+
+	/**
+	 * Test that we can remove a graph from the factory without disturbing
+	 * another graph's binding.
+	 */
+	@ContractTest
+	public void testCanRemoveGraph() {
+		String alpha = jName("bingo"), beta = jName("brillo");
+		graphMaker.createGraph(alpha, true);
+		graphMaker.createGraph(beta, true);
+		testExists(alpha);
+		testExists(beta);
+		graphMaker.removeGraph(alpha);
+		testExists(beta);
+		testDoesNotExist(alpha);
+	}
+
+	@ContractTest
+	public void testHasnt() {
+		assertFalse("no such graph", graphMaker.hasGraph("john"));
+		assertFalse("no such graph", graphMaker.hasGraph("paul"));
+		assertFalse("no such graph", graphMaker.hasGraph("george"));
+		/* */
+		graphMaker.createGraph("john", true);
+		assertTrue("john now exists", graphMaker.hasGraph("john"));
+		assertFalse("no such graph", graphMaker.hasGraph("paul"));
+		assertFalse("no such graph", graphMaker.hasGraph("george"));
+		/* */
+		graphMaker.createGraph("paul", true);
+		assertTrue("john still exists", graphMaker.hasGraph("john"));
+		assertTrue("paul now exists", graphMaker.hasGraph("paul"));
+		assertFalse("no such graph", graphMaker.hasGraph("george"));
+		/* */
+		graphMaker.removeGraph("john");
+		assertFalse("john has been removed", graphMaker.hasGraph("john"));
+		assertTrue("paul still exists", graphMaker.hasGraph("paul"));
+		assertFalse("no such graph", graphMaker.hasGraph("george"));
+	}
+
+	@ContractTest
+	public void testCarefulClose() {
+		Graph x = graphMaker.createGraph("x");
+		Graph y = graphMaker.openGraph("x");
+		x.add(GraphHelper.triple("a BB c"));
+		x.close();
+		y.add(GraphHelper.triple("p RR q"));
+		y.close();
+	}
+
+	/**
+	 * Test that a maker with no graphs lists no names.
+	 */
+	@ContractTest
+	public void testListNoGraphs() {
+		Set<String> s = graphMaker.listGraphs().toSet();
+		if (s.size() > 0)
+			fail("found names from 'empty' graph maker: " + s);
+	}
+
+	/**
+	 * Test that a maker with three graphs inserted lists those three grapsh; we
+	 * don't mind what order they appear in. We also use funny names to ensure
+	 * that the spelling that goes in is the one that comes out [should really
+	 * be in a separate test].
+	 */
+	@ContractTest
+	public void testListThreeGraphs() {
+		String x = "x", y = "y/sub", z = "z:boo";
+		Graph X = graphMaker.createGraph(x);
+		Graph Y = graphMaker.createGraph(y);
+		Graph Z = graphMaker.createGraph(z);
+		Set<String> wanted = TestUtils.setOfStrings(x + " " + y + " " + z);
+		assertEquals(wanted, GraphHelper.iteratorToSet(graphMaker.listGraphs()));
+		X.close();
+		Y.close();
+		Z.close();
+	}
+
+	/**
+	 * Test that a maker with some things put in and then some removed gets the
+	 * right things listed.
+	 */
+	@ContractTest
+	public void testListAfterDelete() {
+		String x = "x_y", y = "y//zub", z = "a:b/c";
+		Graph X = graphMaker.createGraph(x);
+		Graph Y = graphMaker.createGraph(y);
+		Graph Z = graphMaker.createGraph(z);
+		graphMaker.removeGraph(x);
+		Set<String> s = GraphHelper.iteratorToSet(graphMaker.listGraphs());
+		assertEquals(TestUtils.setOfStrings(y + " " + z), s);
+		X.close();
+		Y.close();
+		Z.close();
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/graph/GraphWithPerformContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/GraphWithPerformContractTest.java b/jena-core/src/test/java/org/apache/jena/graph/GraphWithPerformContractTest.java
new file mode 100644
index 0000000..aaaa85a
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/GraphWithPerformContractTest.java
@@ -0,0 +1,86 @@
+package org.apache.jena.graph;
+
+import static org.apache.jena.testing_framework.GraphHelper.graphWith;
+import static org.apache.jena.testing_framework.GraphHelper.triple;
+import static org.apache.jena.testing_framework.GraphHelper.txnBegin;
+import static org.apache.jena.testing_framework.GraphHelper.txnCommit;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractTest;
+
+import org.apache.jena.graph.impl.GraphWithPerform;
+import org.apache.jena.mem.GraphMem;
+import org.apache.jena.testing_framework.ContractTemplate;
+
+import org.xenei.junit.contract.IProducer;
+
+/**
+ * GraphWithPerform is an implementation interface that extends Graph with the
+ * performAdd and performDelete methods used by GraphBase to invoke
+ * non-notifying versions of add and delete.
+ */
+@Contract(GraphWithPerform.class)
+public class GraphWithPerformContractTest<T extends GraphWithPerform> extends
+		ContractTemplate<IProducer<T>> {
+	// Recording listener for tests
+	protected RecordingGraphListener GL = new RecordingGraphListener();
+
+	private static final Logger LOG = LoggerFactory
+			.getLogger(GraphWithPerformContractTest.class);
+
+	@SuppressWarnings("unchecked")
+	public GraphWithPerformContractTest() {
+//		setProducer((IProducer<T>) new IProducer<GraphWithPerform>() {
+//
+//			@Override
+//			public GraphWithPerform newInstance() {
+//				return new GraphMem();
+//			}
+//
+//			@Override
+//			public void cleanUp() {
+//
+//			}
+//		});
+	}
+
+	@Contract.Inject
+	public void setGraphWithPerformContractTestProducer(IProducer<T> producer) {
+		super.setProducer(producer);
+	}
+
+	@After
+	public final void afterGraphWithPerformContractTest() {
+		getProducer().cleanUp();
+	}
+
+	@ContractTest
+	public void testPerformAdd_Triple() {
+		GraphWithPerform g = (GraphWithPerform) graphWith(getProducer()
+				.newInstance(), "S P O; S2 P2 O2");
+		g.getEventManager().register(GL);
+		txnBegin(g);
+		g.performAdd(triple("S3 P3 O3"));
+		txnCommit(g);
+		GL.assertEmpty();
+		assertTrue(g.contains(triple("S3 P3 O3")));
+	}
+
+	@ContractTest
+	public void testPerformDelete_Triple() {
+		GraphWithPerform g = (GraphWithPerform) graphWith(getProducer()
+				.newInstance(), "S P O; S2 P2 O2");
+		g.getEventManager().register(GL);
+		txnBegin(g);
+		g.performDelete(triple("S2 P2 O2"));
+		txnCommit(g);
+		GL.assertEmpty();
+		assertFalse(g.contains(triple("S2 P2 O2")));
+	}
+
+}


[23/50] [abbrv] jena git commit: Using Java 8 types in o.a.j.atlas

Posted by cl...@apache.org.
http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialDocProducerTriples.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialDocProducerTriples.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialDocProducerTriples.java
index 5445aeb..e3f0b73 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialDocProducerTriples.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialDocProducerTriples.java
@@ -18,13 +18,7 @@
 
 package org.apache.jena.query.spatial;
 
-import java.util.List;
-
-import org.apache.jena.atlas.iterator.Iter;
-import org.apache.jena.atlas.iterator.Transform;
 import org.apache.jena.graph.Node ;
-import org.apache.jena.graph.Triple ;
-import org.apache.jena.sparql.core.Quad ;
 import org.apache.jena.sparql.core.QuadAction ;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -62,17 +56,4 @@ public class SpatialDocProducerTriples implements SpatialDocProducer {
 			return;
 		context.index(g, s, p, o);
 	}
-
-	static Transform<Quad, Triple> QuadsToTriples = new Transform<Quad, Triple>() {
-		@Override
-		public Triple convert(Quad item) {
-			return item.asTriple();
-		}
-
-	};
-
-	static private List<Triple> quadsToTriples(List<Quad> quads) {
-		return Iter.map(quads, QuadsToTriples);
-	}
-
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-tdb/src/main/java/org/apache/jena/tdb/base/block/BlockMgrCache.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/base/block/BlockMgrCache.java b/jena-tdb/src/main/java/org/apache/jena/tdb/base/block/BlockMgrCache.java
index ac9e67f..4b884e8 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/base/block/BlockMgrCache.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/base/block/BlockMgrCache.java
@@ -19,8 +19,8 @@
 package org.apache.jena.tdb.base.block;
 
 import java.util.Iterator ;
+import java.util.function.BiConsumer;
 
-import org.apache.jena.atlas.lib.ActionKeyValue ;
 import org.apache.jena.atlas.lib.Cache ;
 import org.apache.jena.atlas.lib.CacheFactory ;
 import org.slf4j.Logger ;
@@ -67,9 +67,9 @@ public class BlockMgrCache extends BlockMgrSync
         else
         {
             writeCache = CacheFactory.createCache(writeSlots) ;
-            writeCache.setDropHandler(new ActionKeyValue<Long, Block>(){
+            writeCache.setDropHandler(new BiConsumer<Long, Block>(){
                 @Override
-                public void apply(Long id, Block block)
+                public void accept(Long id, Block block)
                 { 
                     // We're inside a synchronized operation at this point.
                     log("Cache spill: write block: %d", id) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-tdb/src/main/java/org/apache/jena/tdb/index/bplustree/BPlusTreeRewriter.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/index/bplustree/BPlusTreeRewriter.java b/jena-tdb/src/main/java/org/apache/jena/tdb/index/bplustree/BPlusTreeRewriter.java
index a6c01ff..3f29ae3 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/index/bplustree/BPlusTreeRewriter.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/index/bplustree/BPlusTreeRewriter.java
@@ -23,10 +23,10 @@ import static org.apache.jena.tdb.index.bplustree.BPlusTreeRewriterUtils.printIn
 import static org.apache.jena.tdb.index.bplustree.BPlusTreeRewriterUtils.summarizeDataBlocks ;
 
 import java.util.Iterator ;
+import java.util.function.Function;
 
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.iterator.IteratorWithBuffer ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.lib.Pair ;
 import org.apache.jena.tdb.base.block.BlockMgr ;
 import org.apache.jena.tdb.base.buffer.PtrBuffer ;
@@ -141,17 +141,13 @@ public class BPlusTreeRewriter
         final RecordBufferPageMgr mgr = bpt.getRecordsMgr().getRecordBufferPageMgr() ;
         Iterator<RecordBufferPage> iter = new RecordBufferPageLinker(new RecordBufferPagePacker(records, mgr)) ;
 
-        Transform<RecordBufferPage, Pair<Integer, Record>> transform = new Transform<RecordBufferPage, Pair<Integer, Record>>()
-        {
-            @Override
-            public Pair<Integer, Record> convert(RecordBufferPage rbp)
+        Function<RecordBufferPage, Pair<Integer, Record>> transform = rbp ->
             {
                 mgr.put(rbp) ;
                 Record r = rbp.getRecordBuffer().getHigh() ;
                 r = bpt.getRecordFactory().createKeyOnly(r) ;
                 return new Pair<>(rbp.getId(), r) ;
-            }
-        } ;
+            };
         // Write and convert to split pairs.
         Iterator<Pair<Integer, Record>> iter2 = Iter.map(iter, transform) ;
 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-tdb/src/main/java/org/apache/jena/tdb/lib/NodeLib.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/lib/NodeLib.java b/jena-tdb/src/main/java/org/apache/jena/tdb/lib/NodeLib.java
index 3d1c8f7..e9cf3e9 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/lib/NodeLib.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/lib/NodeLib.java
@@ -27,7 +27,6 @@ import java.security.NoSuchAlgorithmException ;
 import java.util.Iterator ;
 
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.lib.Bytes ;
 import org.apache.jena.atlas.lib.Pool ;
 import org.apache.jena.atlas.lib.PoolBase ;
@@ -222,12 +221,6 @@ public class NodeLib
     
     public static Iterator<Node> nodes(final NodeTable nodeTable, Iterator<NodeId> iter)
     {
-        return Iter.map(iter, new Transform<NodeId, Node>(){
-            @Override
-            public Node convert(NodeId item)
-            {
-                return nodeTable.getNodeForNodeId(item) ;
-            }
-        }) ;
+        return Iter.map(iter, nodeTable::getNodeForNodeId) ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-tdb/src/main/java/org/apache/jena/tdb/lib/TupleLib.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/lib/TupleLib.java b/jena-tdb/src/main/java/org/apache/jena/tdb/lib/TupleLib.java
index ff9687e..1925c87 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/lib/TupleLib.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/lib/TupleLib.java
@@ -21,9 +21,7 @@ package org.apache.jena.tdb.lib;
 import static org.apache.jena.tdb.sys.SystemTDB.SizeOfLong ;
 
 import java.util.Iterator;
-
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.lib.Bytes ;
 import org.apache.jena.atlas.lib.ColumnMap ;
 import org.apache.jena.atlas.lib.InternalErrorException ;
@@ -45,47 +43,23 @@ public class TupleLib
 {
     public static  Iterator<Tuple<Node>> convertToNodes(final NodeTable nodeTable, Iterator<Tuple<NodeId>> iter)
     {
-        Transform<Tuple<NodeId>, Tuple<Node>> action =  new Transform<Tuple<NodeId>, Tuple<Node>>(){
-            @Override
-            public Tuple<Node> convert(Tuple<NodeId> item)
-            {
-                return tupleNodes(nodeTable, item) ;
-            }} ;
-        return Iter.map(iter, action) ;
+        return Iter.map(iter, item -> tupleNodes(nodeTable, item)) ;
     }
     
     public static Iterator<Tuple<NodeId>> convertToNodeId(final NodeTable nodeTable, Iterator<Tuple<Node>> iter)
     {
-        Transform<Tuple<Node>, Tuple<NodeId>> action =  new Transform<Tuple<Node>, Tuple<NodeId>>(){
-            @Override
-            public Tuple<NodeId> convert(Tuple<Node> item)
-            {
-                return tupleNodeIds(nodeTable, item) ;
-            }} ;
-        return Iter.map(iter, action) ;
+        return Iter.map(iter, item -> tupleNodeIds(nodeTable, item)) ;
     }
     
     //Leave - bypasses extract step in Tuple<NodeId> -> Tuple<Node> -> Triple
     public static Iterator<Triple> convertToTriples(final NodeTable nodeTable, Iterator<Tuple<NodeId>> iter)
     {
-        Transform<Tuple<NodeId>, Triple> action =  new Transform<Tuple<NodeId>, Triple>(){
-            @Override
-            public Triple convert(Tuple<NodeId> item)
-            {
-                return triple(nodeTable, item) ;
-            }} ;
-        return Iter.map(iter, action) ;
+        return Iter.map(iter, item -> triple(nodeTable, item)) ;
     }
     
     public static Iterator<Quad> convertToQuads(final NodeTable nodeTable, Iterator<Tuple<NodeId>> iter)
     {
-        Transform<Tuple<NodeId>, Quad> action =  new Transform<Tuple<NodeId>, Quad>(){
-            @Override
-            public Quad convert(Tuple<NodeId> item)
-            {
-                return quad(nodeTable, item) ;
-            }} ;
-        return Iter.map(iter, action) ;
+        return Iter.map(iter, item -> quad(nodeTable, item)) ;
     }
     
     public static Tuple<Node> tupleNodes(NodeTable nodeTable, Tuple<NodeId> ids) 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-tdb/src/main/java/org/apache/jena/tdb/solver/OpExecutorTDB1.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/OpExecutorTDB1.java b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/OpExecutorTDB1.java
index e1ab89f..77cfbfa 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/OpExecutorTDB1.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/OpExecutorTDB1.java
@@ -18,8 +18,9 @@
 
 package org.apache.jena.tdb.solver;
 
-import org.apache.jena.atlas.iterator.Filter ;
-import org.apache.jena.atlas.lib.Tuple ;
+import java.util.function.Predicate;
+
+import org.apache.jena.atlas.lib.Tuple;
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
@@ -44,7 +45,7 @@ import org.apache.jena.sparql.expr.ExprList ;
 import org.apache.jena.sparql.mgt.Explain ;
 import org.apache.jena.tdb.store.DatasetGraphTDB ;
 import org.apache.jena.tdb.store.GraphTDB ;
-import org.apache.jena.tdb.store.NodeId ;
+import org.apache.jena.tdb.store.NodeId;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
 
@@ -345,7 +346,7 @@ public class OpExecutorTDB1 extends OpExecutor
     protected QueryIterator execute(OpDatasetNames dsNames, QueryIterator input)
     { 
         DatasetGraphTDB ds = (DatasetGraphTDB)execCxt.getDataset() ;
-        Filter<Tuple<NodeId>> filter = QC2.getFilter(execCxt.getContext()) ;
+        Predicate<Tuple<NodeId>> filter = QC2.getFilter(execCxt.getContext()) ;
         Node gn = dsNames.getGraphNode() ;
         if ( Var.isVar(gn) )
             return SolverLib.graphNames(ds, dsNames.getGraphNode(), input, filter, execCxt) ;
@@ -368,7 +369,7 @@ public class OpExecutorTDB1 extends OpExecutor
     /** An op executor that simply executes a BGP or QuadPattern without any reordering */ 
     private static class OpExecutorPlainTDB extends OpExecutor
     {
-        Filter<Tuple<NodeId>> filter = null ;
+        Predicate<Tuple<NodeId>> filter = null ;
         
         public OpExecutorPlainTDB(ExecutionContext execCxt)
         {

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-tdb/src/main/java/org/apache/jena/tdb/solver/QC2.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/QC2.java b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/QC2.java
index 26200c3..331ac59 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/QC2.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/QC2.java
@@ -18,7 +18,8 @@
 
 package org.apache.jena.tdb.solver;
 
-import org.apache.jena.atlas.iterator.Filter ;
+import java.util.function.Predicate;
+
 import org.apache.jena.atlas.lib.Tuple ;
 import org.apache.jena.sparql.util.Context ;
 import org.apache.jena.tdb.TDBException ;
@@ -27,13 +28,13 @@ import org.apache.jena.tdb.sys.SystemTDB ;
 
 public class QC2
 {
-    public static Filter<Tuple<NodeId>> getFilter(Context context)
+    public static Predicate<Tuple<NodeId>> getFilter(Context context)
     {
         Object x = context.get(SystemTDB.symTupleFilter) ;
 
         try {
             @SuppressWarnings("unchecked")
-            Filter<Tuple<NodeId>> f = (Filter<Tuple<NodeId>>)x ;
+            Predicate<Tuple<NodeId>> f = (Predicate<Tuple<NodeId>>)x ;
             return f ;
         } catch (ClassCastException ex)
         {
@@ -41,7 +42,7 @@ public class QC2
         }
     }
 
-    public static void setFilter(Context context, Filter<Tuple<NodeId>> filter)
+    public static void setFilter(Context context, Predicate<Tuple<NodeId>> filter)
     {
         context.set(SystemTDB.symTupleFilter, filter) ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-tdb/src/main/java/org/apache/jena/tdb/solver/SolverLib.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/SolverLib.java b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/SolverLib.java
index b92bfc1..cf813e1 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/SolverLib.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/SolverLib.java
@@ -21,6 +21,9 @@ package org.apache.jena.tdb.solver;
 import static org.apache.jena.tdb.lib.Lib2.printAbbrev ;
 
 import java.util.* ;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.Predicate;
 
 import org.apache.jena.atlas.iterator.* ;
 import org.apache.jena.atlas.lib.Tuple ;
@@ -54,7 +57,7 @@ public class SolverLib
     
     /** Non-reordering execution of a basic graph pattern, given a iterator of bindings as input */ 
     public static QueryIterator execute(GraphTDB graph, BasicPattern pattern, 
-                                        QueryIterator input, Filter<Tuple<NodeId>> filter,
+                                        QueryIterator input, Predicate<Tuple<NodeId>> filter,
                                         ExecutionContext execCxt)
     {
         // Maybe default graph or named graph.
@@ -67,7 +70,7 @@ public class SolverLib
      *  GraphNode is null for execution over the real default graph.
      */ 
     public static QueryIterator execute(DatasetGraphTDB ds, Node graphNode, BasicPattern pattern,
-                                        QueryIterator input, Filter<Tuple<NodeId>> filter,
+                                        QueryIterator input, Predicate<Tuple<NodeId>> filter,
                                         ExecutionContext execCxt)
     {
         NodeTupleTable ntt = ds.chooseNodeTupleTable(graphNode) ;
@@ -81,14 +84,14 @@ public class SolverLib
      * (in convToBinding(BindingNodeId, NodeTable)
      */
     public static Iterator<Binding> convertToNodes(Iterator<BindingNodeId> iterBindingIds, NodeTable nodeTable)
-    { return Iter.map(iterBindingIds, convToBinding(nodeTable)) ; }
+    { return Iter.map(iterBindingIds, bindingNodeIds -> convToBinding(bindingNodeIds, nodeTable)) ; }
     
     // The worker.  Callers choose the NodeTupleTable.  
     //     graphNode may be Node.ANY, meaning we should make triples unique.
     //     graphNode may be null, meaning default graph
 
     private static QueryIterator execute(NodeTupleTable nodeTupleTable, Node graphNode, BasicPattern pattern, 
-                                         QueryIterator input, Filter<Tuple<NodeId>> filter,
+                                         QueryIterator input, Predicate<Tuple<NodeId>> filter,
                                          ExecutionContext execCxt)
     {
         if ( Quad.isUnionGraph(graphNode) )
@@ -202,21 +205,11 @@ public class SolverLib
     public static Iterator<BindingNodeId> solve(NodeTupleTable nodeTupleTable, 
                                                 Tuple<Node> tuple,
                                                 boolean anyGraph,
-                                                Iterator<BindingNodeId> chain, Filter<Tuple<NodeId>> filter,
+                                                Iterator<BindingNodeId> chain, Predicate<Tuple<NodeId>> filter,
                                                 ExecutionContext execCxt)
     {
         return new StageMatchTuple(nodeTupleTable, chain, tuple, anyGraph, filter, execCxt) ;
     }
-    
-    // Transform : BindingNodeId ==> Binding
-    private static Transform<BindingNodeId, Binding> convToBinding(final NodeTable nodeTable) {
-        return new Transform<BindingNodeId, Binding>() {
-            @Override
-            public Binding convert(BindingNodeId bindingNodeIds) {
-                return convToBinding(bindingNodeIds, nodeTable) ;
-            }
-        } ;
-    }
 
     public static Binding convToBinding(BindingNodeId bindingNodeIds, NodeTable nodeTable) {
         if ( true )
@@ -235,15 +228,9 @@ public class SolverLib
     }
     
     // Transform : Binding ==> BindingNodeId
-    public static Transform<Binding, BindingNodeId> convFromBinding(final NodeTable nodeTable)
+    public static Function<Binding, BindingNodeId> convFromBinding(final NodeTable nodeTable)
     {
-        return new Transform<Binding, BindingNodeId>()
-        {
-            @Override
-            public BindingNodeId convert(Binding binding) {
-                return SolverLib.convert(binding, nodeTable) ;
-            }
-        } ;
+        return binding -> SolverLib.convert(binding, nodeTable);
     }
     
     /** Binding ==> BindingNodeId, given a NodeTable */
@@ -276,7 +263,7 @@ public class SolverLib
     
     /** Find whether a specific graph name is in the quads table. */
     public static QueryIterator testForGraphName(DatasetGraphTDB ds, Node graphNode, QueryIterator input,
-                                                 Filter<Tuple<NodeId>> filter, ExecutionContext execCxt) {
+                                                 Predicate<Tuple<NodeId>> filter, ExecutionContext execCxt) {
         NodeId nid = TDBInternal.getNodeId(ds, graphNode) ;
         boolean exists = !NodeId.isDoesNotExist(nid) ;
         if ( exists ) {
@@ -302,7 +289,7 @@ public class SolverLib
 
     /** Find all the graph names in the quads table. */
     public static QueryIterator graphNames(DatasetGraphTDB ds, Node graphNode, QueryIterator input,
-                                           Filter<Tuple<NodeId>> filter, ExecutionContext execCxt) {
+                                           Predicate<Tuple<NodeId>> filter, ExecutionContext execCxt) {
         List<Abortable> killList = new ArrayList<>() ;
         Iterator<Tuple<NodeId>> iter1 = ds.getQuadTable().getNodeTupleTable().find(NodeId.NodeIdAny, NodeId.NodeIdAny,
                                                                                    NodeId.NodeIdAny, NodeId.NodeIdAny) ;
@@ -319,14 +306,7 @@ public class SolverLib
         Iterator<Node> iter4 = NodeLib.nodes(ds.getQuadTable().getNodeTupleTable().getNodeTable(), iter3) ;
 
         final Var var = Var.alloc(graphNode) ;
-        Transform<Node, Binding> bindGraphName = new Transform<Node, Binding>() {
-            @Override
-            public Binding convert(Node node) {
-                return BindingFactory.binding(var, node) ;
-            }
-        } ;
-
-        Iterator<Binding> iterBinding = Iter.map(iter4, bindGraphName) ;
+        Iterator<Binding> iterBinding = Iter.map(iter4, node -> BindingFactory.binding(var, node)) ;
         // Not abortable.
         return new QueryIterTDB(iterBinding, killList, input, execCxt) ;
     }
@@ -364,10 +344,6 @@ public class SolverLib
     }
     
     // -- Mutating "transform in place"
-    private static Action<Tuple<NodeId>> quadsToAnyTriples = new Action<Tuple<NodeId>>(){
-        @Override
-        public void apply(Tuple<NodeId> item)
-        { item.tuple()[0] = NodeId.NodeIdAny ; }
-    } ;
+    private static Consumer<Tuple<NodeId>> quadsToAnyTriples = item -> item.tuple()[0] = NodeId.NodeIdAny ;
 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-tdb/src/main/java/org/apache/jena/tdb/solver/StageGeneratorDirectTDB.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/StageGeneratorDirectTDB.java b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/StageGeneratorDirectTDB.java
index bb76f7c..78bd791 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/StageGeneratorDirectTDB.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/StageGeneratorDirectTDB.java
@@ -18,15 +18,16 @@
 
 package org.apache.jena.tdb.solver;
 
-import org.apache.jena.atlas.iterator.Filter ;
-import org.apache.jena.atlas.lib.Tuple ;
+import java.util.function.Predicate;
+
+import org.apache.jena.atlas.lib.Tuple;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.sparql.core.BasicPattern ;
 import org.apache.jena.sparql.engine.ExecutionContext ;
 import org.apache.jena.sparql.engine.QueryIterator ;
 import org.apache.jena.sparql.engine.main.StageGenerator ;
 import org.apache.jena.tdb.store.GraphTDB ;
-import org.apache.jena.tdb.store.NodeId ;
+import org.apache.jena.tdb.store.NodeId;
 
 /** Execute TDB requests directly -- no reordering
  *  Using OpExecutor is preferred.
@@ -51,7 +52,7 @@ public class StageGeneratorDirectTDB implements StageGenerator
             // Not us - bounce up the StageGenerator chain
             return above.execute(pattern, input, execCxt) ;
         GraphTDB graph = (GraphTDB)g ;
-        Filter<Tuple<NodeId>> filter = QC2.getFilter(execCxt.getContext()) ;
+        Predicate<Tuple<NodeId>> filter = QC2.getFilter(execCxt.getContext()) ;
         return SolverLib.execute(graph, pattern, input, filter, execCxt) ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-tdb/src/main/java/org/apache/jena/tdb/solver/StageMatchTuple.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/StageMatchTuple.java b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/StageMatchTuple.java
index 77cdbdd..398502e 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/StageMatchTuple.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/StageMatchTuple.java
@@ -21,6 +21,9 @@ package org.apache.jena.tdb.solver;
 
 import java.util.Iterator;
 import java.util.List;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.Predicate;
 
 import org.apache.jena.atlas.iterator.* ;
 import org.apache.jena.atlas.lib.Tuple ;
@@ -38,11 +41,11 @@ public class StageMatchTuple extends RepeatApplyIterator<BindingNodeId>
 
     private final ExecutionContext execCxt ;
     private boolean anyGraphs ;
-    private Filter<Tuple<NodeId>> filter ;
+    private Predicate<Tuple<NodeId>> filter ;
 
     public StageMatchTuple(NodeTupleTable nodeTupleTable, Iterator<BindingNodeId> input, 
                             Tuple<Node> tuple, boolean anyGraphs, 
-                            Filter<Tuple<NodeId>> filter, 
+                            Predicate<Tuple<NodeId>> filter, 
                             ExecutionContext execCxt)
     {
         super(input) ;
@@ -117,10 +120,7 @@ public class StageMatchTuple extends RepeatApplyIterator<BindingNodeId>
         }
         
         // Map Tuple<NodeId> to BindingNodeId
-        Transform<Tuple<NodeId>, BindingNodeId> binder = new Transform<Tuple<NodeId>, BindingNodeId>()
-        {
-            @Override
-            public BindingNodeId convert(Tuple<NodeId> tuple)
+        Function<Tuple<NodeId>, BindingNodeId> binder = tuple -> 
             {
                 BindingNodeId output = new BindingNodeId(input) ;
                 for ( int i = 0 ; i < var.length ; i++ )
@@ -134,27 +134,11 @@ public class StageMatchTuple extends RepeatApplyIterator<BindingNodeId>
                     output.put(v, id) ;
                 }
                 return output ;
-            }
         } ;
         
         return Iter.iter(iterMatches).map(binder).removeNulls() ;
     }
     
-   
-    // -- Copying
-    private static Transform<Tuple<NodeId>,Tuple<NodeId>> projectToTriples = new Transform<Tuple<NodeId>,Tuple<NodeId>>(){
-        @Override
-        public Tuple<NodeId> convert(Tuple<NodeId> item)
-        {
-            // Zap graph node id.
-            Tuple<NodeId> t2 = Tuple.createTuple(NodeId.NodeIdAny,    // Can't be null - gets bound to a daft variable.
-                                                 item.get(1),
-                                                 item.get(2),
-                                                 item.get(3)) ;
-            return t2 ;
-        } } ;
-    
-    
     private static Iterator<Tuple<NodeId>> print(Iterator<Tuple<NodeId>> iter)
     {
         if ( ! iter.hasNext() )
@@ -202,9 +186,5 @@ public class StageMatchTuple extends RepeatApplyIterator<BindingNodeId>
     }
     
     // -- Mutating "transform in place"
-    private static Action<Tuple<NodeId>> quadsToAnyTriples = new Action<Tuple<NodeId>>(){
-        @Override
-        public void apply(Tuple<NodeId> item)
-        { item.tuple()[0] = NodeId.NodeIdAny ; }
-    } ;
+    private static Consumer<Tuple<NodeId>> quadsToAnyTriples = item -> item.tuple()[0] = NodeId.NodeIdAny ;
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-tdb/src/main/java/org/apache/jena/tdb/solver/stats/StatsCollectorBase.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/stats/StatsCollectorBase.java b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/stats/StatsCollectorBase.java
index 620b34a..72f0d97 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/stats/StatsCollectorBase.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/stats/StatsCollectorBase.java
@@ -22,7 +22,6 @@ package org.apache.jena.tdb.solver.stats;
 import java.util.HashMap ;
 import java.util.Map ;
 
-import org.apache.jena.atlas.lib.MapUtils ;
 import org.apache.jena.graph.Node ;
 
 /** Statistics collector, general purpose */
@@ -41,9 +40,9 @@ abstract class StatsCollectorBase<T>
     public void record(T g, T s, T p, T o)
     {
         count++ ;
-        MapUtils.increment(predicates, p) ;
+		predicates.put(p, predicates.getOrDefault(p, 0) + 1);
         if ( typeTrigger != null && typeTrigger.equals(p) )
-            MapUtils.increment(types, o) ;
+        		types.put(o, types.getOrDefault(o, 0) + 1);
     }
 
     protected abstract Map<Node, Integer> convert(Map<T, Integer> map) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-tdb/src/main/java/org/apache/jena/tdb/store/DatasetGraphTDB.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/store/DatasetGraphTDB.java b/jena-tdb/src/main/java/org/apache/jena/tdb/store/DatasetGraphTDB.java
index c577861..55dfe53 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/store/DatasetGraphTDB.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/store/DatasetGraphTDB.java
@@ -20,9 +20,7 @@ package org.apache.jena.tdb.store;
 
 
 import java.util.Iterator ;
-
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.lib.Closeable ;
 import org.apache.jena.atlas.lib.Sync ;
 import org.apache.jena.atlas.lib.Tuple ;
@@ -171,21 +169,12 @@ public class DatasetGraphTDB extends DatasetGraphCaching
     public ReorderTransformation getReorderTransform()      { return transform ; }
     
     public DatasetPrefixesTDB getPrefixes()                 { return prefixes ; }
-
-    static private Transform<Tuple<NodeId>, NodeId> project0 = new Transform<Tuple<NodeId>, NodeId>()
-    {
-        @Override
-        public NodeId convert(Tuple<NodeId> item)
-        {
-            return item.get(0) ;
-        }
-    } ;
     
     @Override
     public Iterator<Node> listGraphNodes()
     {
         Iterator<Tuple<NodeId>> x = quadTable.getNodeTupleTable().findAll() ;
-        Iterator<NodeId> z =  Iter.iter(x).map(project0).distinct() ;
+        Iterator<NodeId> z =  Iter.iter(x).map(t -> t.get(0)).distinct() ;
         return NodeLib.nodes(quadTable.getNodeTupleTable().getNodeTable(), z) ;
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-tdb/src/main/java/org/apache/jena/tdb/store/GraphTDB.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/store/GraphTDB.java b/jena-tdb/src/main/java/org/apache/jena/tdb/store/GraphTDB.java
index 17d2e25..93fbf69 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/store/GraphTDB.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/store/GraphTDB.java
@@ -19,9 +19,9 @@
 package org.apache.jena.tdb.store ;
 
 import java.util.Iterator ;
+import java.util.function.Function;
 
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.lib.Closeable ;
 import org.apache.jena.atlas.lib.Sync ;
 import org.apache.jena.atlas.lib.Tuple ;
@@ -166,18 +166,11 @@ public class GraphTDB extends GraphView implements Closeable, Sync {
         return (int)Iter.count(iter) ;
     }
 
-    private static Transform<Tuple<NodeId>, Tuple<NodeId>> project4TupleTo3Tuple = new Transform<Tuple<NodeId>, Tuple<NodeId>>() {
-                                                                                     @Override
-                                                                                     public Tuple<NodeId> convert(Tuple<NodeId> item) {
-                                                                                         if ( item.size() != 4 )
-                                                                                             throw new TDBException(
-                                                                                                                    "Expected a Tuple of 4, got: "
-                                                                                                                        + item) ;
-                                                                                         return Tuple.createTuple(item.get(1),
-                                                                                                                  item.get(2),
-                                                                                                                  item.get(3)) ;
-                                                                                     }
-                                                                                 } ;
+	private static Function<Tuple<NodeId>, Tuple<NodeId>> project4TupleTo3Tuple = item -> {
+		if (item.size() != 4)
+			throw new TDBException("Expected a Tuple of 4, got: " + item);
+		return Tuple.createTuple(item.get(1), item.get(2), item.get(3));
+	};
 
     // Convert from Iterator<Quad> to Iterator<Triple>
     static class ProjectQuadsToTriples implements Iterator<Triple> {

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-tdb/src/main/java/org/apache/jena/tdb/store/QuadTable.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/store/QuadTable.java b/jena-tdb/src/main/java/org/apache/jena/tdb/store/QuadTable.java
index 894b49e..313d8d5 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/store/QuadTable.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/store/QuadTable.java
@@ -20,9 +20,7 @@ package org.apache.jena.tdb.store;
 
 
 import java.util.Iterator ;
-
 import org.apache.jena.atlas.iterator.NullIterator ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.lib.Tuple ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -89,13 +87,6 @@ public class QuadTable extends TableBase
         Iterator<Quad> iter2 = TupleLib.convertToQuads(table.getNodeTable(), iter) ;
         return iter2 ;
     }
-    
-    private static Transform<Tuple<Node>, Quad> action = new Transform<Tuple<Node>, Quad>(){
-        @Override
-        public Quad convert(Tuple<Node> item)
-        {
-            return new Quad(item.get(0), item.get(1), item.get(2), item.get(3)) ;
-        }} ; 
 
     /** Clear - does not clear the associated node tuple table */
     public void clearQuads()

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-tdb/src/main/java/org/apache/jena/tdb/store/TripleTable.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/store/TripleTable.java b/jena-tdb/src/main/java/org/apache/jena/tdb/store/TripleTable.java
index e79f7da..5dfc17e 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/store/TripleTable.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/store/TripleTable.java
@@ -20,9 +20,7 @@ package org.apache.jena.tdb.store;
 
 
 import java.util.Iterator ;
-
 import org.apache.jena.atlas.iterator.NullIterator ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.lib.Tuple ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -79,13 +77,6 @@ public class TripleTable extends TableBase
         return iter2 ;
     }
     
-    private static Transform<Tuple<Node>, Triple> action = new Transform<Tuple<Node>, Triple>(){
-        @Override
-        public Triple convert(Tuple<Node> item)
-        {
-            return new Triple(item.get(0), item.get(1), item.get(2)) ;
-        }} ; 
-   
     /** Clear - does not clear the associated node tuple table */
     public void clearTriples()
     { table.clear() ; }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-tdb/src/main/java/org/apache/jena/tdb/store/nodetable/NodeTableNative.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/store/nodetable/NodeTableNative.java b/jena-tdb/src/main/java/org/apache/jena/tdb/store/nodetable/NodeTableNative.java
index e5796ca..51ceee1 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/store/nodetable/NodeTableNative.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/store/nodetable/NodeTableNative.java
@@ -22,9 +22,9 @@ import static org.apache.jena.tdb.lib.NodeLib.setHash ;
 
 import java.nio.ByteBuffer ;
 import java.util.Iterator ;
+import java.util.function.Function;
 
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.lib.Pair ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.tdb.TDBException ;
@@ -214,37 +214,16 @@ public class NodeTableNative implements NodeTable
     @Override
     public Iterator<Pair<NodeId, Node>> all() { return all2() ; }
     
-    private Iterator<Pair<NodeId, Node>> all1()
-    
-    {
-        // Could be quicker by hoping down the objects files.
-        Iterator<Record> iter = nodeHashToId.iterator() ;
-
-        Transform<Record, Pair<NodeId, Node>> transform = new Transform<Record, Pair<NodeId, Node>>() {
-            @Override
-            public Pair<NodeId, Node> convert(Record item)
-            {
-                NodeId id = NodeId.create(item.getValue(), 0) ;
-                Node n = NodeLib.fetchDecode(id.getId(), getObjects()) ;
-                return new Pair<>(id, n) ;
-            }};
-        return Iter.map(iter, transform) ;
-    }
-
     private Iterator<Pair<NodeId, Node>> all2()
     {
         Iterator<Pair<Long, ByteBuffer>> objs = objects.all() ; 
         
-        Transform<Pair<Long, ByteBuffer>, Pair<NodeId, Node>> transform = new Transform<Pair<Long, ByteBuffer>, Pair<NodeId, Node>>() {
-            @Override
-            public Pair<NodeId, Node> convert(Pair<Long, ByteBuffer> item)
-            {
-                NodeId id = NodeId.create(item.car().longValue()) ;
-                ByteBuffer bb = item.cdr();
-                Node n = NodeLib.decode(bb) ;
-                return new Pair<>(id, n) ;
-            }
-        };
+		Function<Pair<Long, ByteBuffer>, Pair<NodeId, Node>> transform = item -> {
+			NodeId id = NodeId.create(item.car().longValue());
+			ByteBuffer bb = item.cdr();
+			Node n = NodeLib.decode(bb);
+			return new Pair<>(id, n);
+		};
         return Iter.map(objs, transform) ;
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-tdb/src/main/java/org/apache/jena/tdb/store/tupletable/TupleIndexRecord.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/store/tupletable/TupleIndexRecord.java b/jena-tdb/src/main/java/org/apache/jena/tdb/store/tupletable/TupleIndexRecord.java
index d4079b0..ead540e 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/store/tupletable/TupleIndexRecord.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/store/tupletable/TupleIndexRecord.java
@@ -22,6 +22,7 @@ import static java.lang.String.format;
 import static org.apache.jena.tdb.sys.SystemTDB.SizeOfNodeId ;
 
 import java.util.Iterator;
+import java.util.function.Predicate;
 
 import org.apache.jena.atlas.iterator.* ;
 import org.apache.jena.atlas.lib.Bytes ;
@@ -166,7 +167,7 @@ public class TupleIndexRecord extends TupleIndexBase
             iter = index.iterator(minRec, maxRec) ;
         }
         
-        Iterator<Tuple<NodeId>> tuples = Iter.map(iter, transformToTuple) ;
+        Iterator<Tuple<NodeId>> tuples = Iter.map(iter, item -> TupleLib.tuple(item, colMap)) ;
         
         if ( leadingIdx < numSlots-1 )
         {
@@ -185,25 +186,16 @@ public class TupleIndexRecord extends TupleIndexBase
     public Iterator<Tuple<NodeId>> all()
     {
         Iterator<Record> iter = index.iterator() ;
-        return Iter.map(iter, transformToTuple) ;
+        return Iter.map(iter, item -> TupleLib.tuple(item, colMap)) ;
     }
     
-    private final Transform<Record, Tuple<NodeId>> transformToTuple = new Transform<Record, Tuple<NodeId>>()
-    {
-        @Override
-        public final Tuple<NodeId> convert(Record item)
-        {
-            return TupleLib.tuple(item, colMap) ;
-        }
-    } ; 
-    
     private Iterator<Tuple<NodeId>> scan(Iterator<Tuple<NodeId>> iter,
                                          final Tuple<NodeId> pattern)
     {
-        Filter<Tuple<NodeId>> filter = new Filter<Tuple<NodeId>>()
+        Predicate<Tuple<NodeId>> filter = new Predicate<Tuple<NodeId>>()
         {
             @Override
-            public boolean accept(Tuple<NodeId> item)
+            public boolean test(Tuple<NodeId> item)
             {
                 // Check on pattern and item (both in natural order)
                 for ( int i = 0 ; i < tupleLength ; i++ )

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-tdb/src/test/java/org/apache/jena/tdb/base/record/RecordLib.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/org/apache/jena/tdb/base/record/RecordLib.java b/jena-tdb/src/test/java/org/apache/jena/tdb/base/record/RecordLib.java
index 79053ad..9d72156 100644
--- a/jena-tdb/src/test/java/org/apache/jena/tdb/base/record/RecordLib.java
+++ b/jena-tdb/src/test/java/org/apache/jena/tdb/base/record/RecordLib.java
@@ -24,7 +24,6 @@ import java.util.Iterator;
 import java.util.List;
 
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.lib.Bytes ;
 import org.apache.jena.tdb.base.record.Record ;
 import org.apache.jena.tdb.base.record.RecordFactory ;
@@ -83,13 +82,7 @@ public class RecordLib
 
     public static List<Integer> toIntList(Iterator<Record> iter)
     {
-        return Iter.toList(Iter.map(iter, new Transform<Record, Integer>(){
-            @Override
-            public Integer convert(Record item)
-            {
-                return recordToInt(item) ;
-            }}
-        )) ;
+        return Iter.toList(Iter.map(iter, item -> recordToInt(item))) ;
     }
     
     public static Record r(int v)

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-tdb/src/test/java/org/apache/jena/tdb/store/TestQuadFilter.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/org/apache/jena/tdb/store/TestQuadFilter.java b/jena-tdb/src/test/java/org/apache/jena/tdb/store/TestQuadFilter.java
index ee2ff43..9752dac 100644
--- a/jena-tdb/src/test/java/org/apache/jena/tdb/store/TestQuadFilter.java
+++ b/jena-tdb/src/test/java/org/apache/jena/tdb/store/TestQuadFilter.java
@@ -18,7 +18,8 @@
 
 package org.apache.jena.tdb.store;
 
-import org.apache.jena.atlas.iterator.Filter ;
+import java.util.function.Predicate;
+
 import org.apache.jena.atlas.junit.BaseTest ;
 import org.apache.jena.atlas.lib.Tuple ;
 import org.apache.jena.graph.NodeFactory ;
@@ -61,23 +62,12 @@ public class TestQuadFilter extends BaseTest
     }
     
     /** Create a filter to exclude the graph http://example/g2 */
-    private static Filter<Tuple<NodeId>> createFilter(Dataset ds)
+    private static Predicate<Tuple<NodeId>> createFilter(Dataset ds)
     {
         DatasetGraphTDB dsg = (DatasetGraphTDB)(ds.asDatasetGraph()) ;
         final NodeTable nodeTable = dsg.getQuadTable().getNodeTupleTable().getNodeTable() ;
         final NodeId target = nodeTable.getNodeIdForNode(NodeFactory.createURI(graphToHide)) ;
-        Filter<Tuple<NodeId>> filter = new Filter<Tuple<NodeId>>() {
-            @Override
-            public boolean accept(Tuple<NodeId> item)
-            {
-                // Reverse the lookup as a demo
-                //Node n = nodeTable.getNodeForNodeId(target) ;
-                //System.err.println(item) ;
-                if ( item.size() == 4 && item.get(0).equals(target) )
-                    return false ;
-                return true ;
-            } } ;
-        return filter ;
+        return item -> !( item.size() == 4 && item.get(0).equals(target) );
     }            
 
     @Test public void quad_filter_1()   { test("SELECT * { GRAPH ?g { ?s ?p ?o } }", 1, 2) ; }
@@ -86,7 +76,7 @@ public class TestQuadFilter extends BaseTest
     
     private void test(String qs, int withFilter, int withoutFilter)
     {
-        Filter<Tuple<NodeId>> filter = createFilter(ds) ;
+        Predicate<Tuple<NodeId>> filter = createFilter(ds) ;
         
 //    private static void example(Dataset ds, Filter<Tuple<NodeId>> filter)
 //    {


[43/50] [abbrv] jena git commit: Added initial contract tests added testing_framework

Posted by cl...@apache.org.
http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/GraphHelper.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/GraphHelper.java b/jena-core/src/test/java/org/apache/jena/testing_framework/GraphHelper.java
new file mode 100644
index 0000000..c208e8d
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/GraphHelper.java
@@ -0,0 +1,508 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.testing_framework;
+
+/**
+ * Foo set of static test helpers.  Generally included as a static.
+ */
+
+import static org.junit.Assert.*;
+
+import java.lang.reflect.Constructor;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+import org.apache.jena.graph.Factory;
+import org.apache.jena.graph.Graph;
+import org.apache.jena.graph.GraphUtil;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.shared.JenaException;
+import org.apache.jena.shared.PrefixMapping;
+import org.apache.jena.util.CollectionFactory;
+import org.apache.jena.util.IteratorCollection;
+import org.apache.jena.util.iterator.ExtendedIterator;
+
+public class GraphHelper extends TestUtils {
+
+	/**
+	 * Answer a Node as described by <code>x</code>; a shorthand for
+	 * <code>Node.create(x)</code>, which see.
+	 */
+	public static Node node(String x) {
+		return NodeCreateUtils.create(x);
+	}
+
+	/**
+	 * Answer a set containing the elements from the iterator <code>it</code>; a
+	 * shorthand for <code>IteratorCollection.iteratorToSet(it)</code>, which
+	 * see.
+	 */
+	public static <T> Set<T> iteratorToSet(Iterator<? extends T> it) {
+		return IteratorCollection.iteratorToSet(it);
+	}
+
+	/**
+	 * Answer a list containing the elements from the iterator <code>it</code>,
+	 * in order; a shorthand for
+	 * <code>IteratorCollection.iteratorToList(it)</code>, which see.
+	 */
+	public static <T> List<T> iteratorToList(Iterator<? extends T> it) {
+		return IteratorCollection.iteratorToList(it);
+	}
+
+	/**
+	 * Answer a set of the nodes described (as per <code>node()</code>) by the
+	 * space-separated substrings of <code>nodes</code>.
+	 */
+	public static Set<Node> nodeSet(String nodes) {
+		Set<Node> result = CollectionFactory.createHashedSet();
+		StringTokenizer st = new StringTokenizer(nodes);
+		while (st.hasMoreTokens())
+			result.add(node(st.nextToken()));
+		return result;
+	}
+
+	/**
+	 * Answer a set of the elements of <code>Foo</code>.
+	 */
+	public static <T> Set<T> arrayToSet(T[] A) {
+		return CollectionFactory.createHashedSet(Arrays.asList(A));
+	}
+
+	/**
+	 * Answer a triple described by the three space-separated node descriptions
+	 * in <code>fact</code>; a shorthand for <code>Triple.create(fact)</code>,
+	 * which see.
+	 */
+	public static Triple triple(String fact) {
+		return NodeCreateUtils.createTriple(fact);
+	}
+
+	/**
+	 * Answer a triple described by the three space-separated node descriptions
+	 * in <code>fact</code>, using prefix-mappings from <code>pm</code>; a
+	 * shorthand for <code>Triple.create(pm, fact)</code>, which see.
+	 */
+	public static Triple triple(PrefixMapping pm, String fact) {
+		return NodeCreateUtils.createTriple(pm, fact);
+	}
+
+	/**
+	 * Answer an array of triples; each triple is described by one of the
+	 * semi-separated substrings of <code>facts</code>, as per
+	 * <code>triple</code> with prefix-mapping <code>Extended</code>.
+	 */
+	public static Triple[] tripleArray(String facts) {
+		ArrayList<Triple> al = new ArrayList<Triple>();
+		StringTokenizer semis = new StringTokenizer(facts, ";");
+		while (semis.hasMoreTokens())
+			al.add(triple(PrefixMapping.Extended, semis.nextToken()));
+		return al.toArray(new Triple[al.size()]);
+	}
+
+	/**
+	 * Answer a set of triples where the elements are described by the
+	 * semi-separated substrings of <code>facts</code>, as per
+	 * <code>triple</code>.
+	 */
+	public static Set<Triple> tripleSet(String facts) {
+		Set<Triple> result = new HashSet<Triple>();
+		StringTokenizer semis = new StringTokenizer(facts, ";");
+		while (semis.hasMoreTokens())
+			result.add(triple(semis.nextToken()));
+		return result;
+	}
+
+	/**
+	 * Answer a list of nodes, where the nodes are described by the
+	 * space-separated substrings of <code>items</code> as per
+	 * <code>node()</code>.
+	 */
+	public static List<Node> nodeList(String items) {
+		ArrayList<Node> nl = new ArrayList<Node>();
+		StringTokenizer nodes = new StringTokenizer(items);
+		while (nodes.hasMoreTokens())
+			nl.add(node(nodes.nextToken()));
+		return nl;
+	}
+
+	/**
+	 * Answer an array of nodes, where the nodes are described by the
+	 * space-separated substrings of <code>items</code> as per
+	 */
+	public static Node[] nodeArray(String items) {
+		List<Node> nl = nodeList(items);
+		return nl.toArray(new Node[nl.size()]);
+	}
+
+	/**
+	 * Answer the graph <code>g</code> after adding to it every triple encoded
+	 * in <code>s</code> in the fashion of <code>tripleArray</code>, a
+	 * semi-separated sequence of space-separated node descriptions.
+	 */
+	public static Graph graphAdd(Graph g, String s) {
+		StringTokenizer semis = new StringTokenizer(s, ";");
+		while (semis.hasMoreTokens())
+			g.add(triple(PrefixMapping.Extended, semis.nextToken()));
+		return g;
+	}
+
+	/**
+	 * Like graphAdd but does it within a transaction if supported
+	 * 
+	 * @param g
+	 *            The graph to add to
+	 * @param s
+	 *            The string describing the graph
+	 * @return The populated graph.
+	 */
+	public static Graph graphAddTxn(Graph g, String s) {
+		txnBegin(g);
+		StringTokenizer semis = new StringTokenizer(s, ";");
+		while (semis.hasMoreTokens())
+			g.add(triple(PrefixMapping.Extended, semis.nextToken()));
+		txnCommit(g);
+		return g;
+	}
+
+	/**
+	 * Used to create a graph with values.
+	 * 
+	 * @param g
+	 *            The newly created graph
+	 * @param s
+	 *            The string representing the graph data.
+	 * @return The populated graph
+	 */
+	public static Graph graphWith(Graph g, String s) {
+		return graphAddTxn(g, s);
+	}
+
+	/**
+	 * Answer a new memory-based graph with Extended prefixes.
+	 */
+	public static Graph memGraph() {
+		Graph result = Factory.createGraphMem();
+		result.getPrefixMapping().setNsPrefixes(PrefixMapping.Extended);
+		return result;
+	}
+
+	/**
+	 * Answer a new memory-based graph with initial contents as described by
+	 * <code>s</code> in the fashion of <code>graphAdd()</code>. Not
+	 * over-ridable; do not use for abstraction.
+	 */
+	public static Graph graphWith(String s) {
+		return graphWith(memGraph(), s);
+	}
+
+	/**
+	 * Assert that the graph <code>g</code> is isomorphic to the graph described
+	 * by <code>template</code> in the fashion of <code>graphWith</code>.
+	 */
+	public static void assertEqualsTemplate(String title, Graph g,
+			String template) {
+		assertIsomorphic(title, graphWith(template), g);
+	}
+
+	/**
+	 * Assert that the supplied graph <code>got</code> is isomorphic with the
+	 * the desired graph <code>expected</code>; if not, display a readable
+	 * description of both graphs.
+	 */
+	public static void assertIsomorphic(String title, Graph expected, Graph got) {
+		if (!expected.isIsomorphicWith(got)) {
+			Map<Node, Object> map = CollectionFactory.createHashedMap();
+			fail(title + ": wanted " + nice(expected, map) + "\nbut got "
+					+ nice(got, map));
+		}
+	}
+
+	/**
+	 * Answer a string which is a newline-separated list of triples (as produced
+	 * by niceTriple) in the graph <code>g</code>. The map <code>bnodes</code>
+	 * maps already-seen bnodes to their "nice" strings.
+	 */
+	public static String nice(Graph g, Map<Node, Object> bnodes) {
+		StringBuffer b = new StringBuffer(g.size() * 100);
+		ExtendedIterator<Triple> it = GraphUtil.findAll(g);
+		while (it.hasNext())
+			niceTriple(b, bnodes, it.next());
+		return b.toString();
+	}
+
+	/**
+	 * Append to the string buffer <code>b</code> a "nice" representation of the
+	 * triple <code>t</code> on a new line, using (and updating)
+	 * <code>bnodes</code> to supply "nice" strings for any blank nodes.
+	 */
+	protected static void niceTriple(StringBuffer b, Map<Node, Object> bnodes,
+			Triple t) {
+		b.append("\n    ");
+		appendNode(b, bnodes, t.getSubject());
+		appendNode(b, bnodes, t.getPredicate());
+		appendNode(b, bnodes, t.getObject());
+	}
+
+	/**
+	 * Foo counter for new bnode strings; it starts at 1000 so as to make the
+	 * bnode strings more uniform (at least for the first 9000 bnodes).
+	 */
+	protected static int bnc = 1000;
+
+	/**
+	 * Append to the string buffer <code>b</code> a space followed by the "nice"
+	 * representation of the node <code>n</code>. If <code>n</code> is a bnode,
+	 * re-use any existing string for it from <code>bnodes</code> or make a new
+	 * one of the form <i>_bNNNN</i> with NNNN a new integer.
+	 */
+	protected static void appendNode(StringBuffer b, Map<Node, Object> bnodes,
+			Node n) {
+		b.append(' ');
+		if (n.isBlank()) {
+			Object already = bnodes.get(n);
+			if (already == null)
+				bnodes.put(n, already = "_b" + bnc++);
+			b.append(already);
+		} else
+			b.append(nice(n));
+	}
+
+	// protected static Graph graphWithTxn(IProducer<? extends Graph> producer,
+	// String s) {
+	// Graph g = producer.newInstance();
+	// txnBegin(g);
+	// try {
+	// graphAdd(g, s);
+	// txnCommit(g);
+	// } catch (Exception e) {
+	// txnRollback(g);
+	// fail(e.getMessage());
+	// }
+	// return g;
+	// }
+
+	/**
+	 * Answer the "nice" representation of this node, the string returned by
+	 * <code>n.toString(PrefixMapping.Extended,true)</code>.
+	 */
+	protected static String nice(Node n) {
+		return n.toString(PrefixMapping.Extended, true);
+	}
+
+	/**
+	 * Assert that the computed graph <code>got</code> is isomorphic with the
+	 * desired graph <code>expected</code>; if not, fail with a default message
+	 * (and pretty output of the graphs).
+	 */
+	public static void assertIsomorphic(Graph expected, Graph got) {
+		assertIsomorphic("graphs must be isomorphic", expected, got);
+	}
+
+	/**
+	 * Assert that the graph <code>g</code> must contain the triple described by
+	 * <code>s</code>; if not, fail with pretty output of both graphs and a
+	 * message containing <code>name</code>.
+	 */
+	public static void assertContains(String name, String s, Graph g) {
+		assertTrue(name + " must contain " + s, g.contains(triple(s)));
+	}
+
+	/**
+	 * Assert that the graph <code>g</code> contains all the triples described
+	 * by the string <code>s</code; if not, fail with a message containing
+	 * <code>name</code>.
+	 */
+	public static void assertContainsAll(String name, Graph g, String s) {
+		StringTokenizer semis = new StringTokenizer(s, ";");
+		while (semis.hasMoreTokens())
+			assertContains(name, semis.nextToken(), g);
+	}
+
+	/**
+	 * Assert that the graph <code>g</code> does not contain the triple
+	 * described by <code>s<code>; if it does, fail with a message containing
+        <code>name</code>.
+	 */
+	public static void assertOmits(String name, Graph g, String s) {
+		assertFalse(name + " must not contain " + s, g.contains(triple(s)));
+	}
+
+	/**
+	 * Assert that the graph <code>g</code> contains none of the triples
+	 * described by <code>s</code> in the usual way; otherwise, fail with a
+	 * message containing <code>name</code>.
+	 */
+	public static void assertOmitsAll(String name, Graph g, String s) {
+		StringTokenizer semis = new StringTokenizer(s, ";");
+		while (semis.hasMoreTokens())
+			assertOmits(name, g, semis.nextToken());
+	}
+
+	/**
+	 * Assert that <code>g</code> contains the triple described by
+	 * <code>fact</code> in the usual way.
+	 */
+	public static boolean contains(Graph g, String fact) {
+		return g.contains(triple(fact));
+	}
+
+	/**
+	 * Assert that <code>g</code> contains every triple in <code>triples</code>.
+	 */
+	public static void testContains(Graph g, Triple[] triples) {
+		for (int i = 0; i < triples.length; i += 1)
+			assertTrue("contains " + triples[i], g.contains(triples[i]));
+	}
+
+	/**
+	 * Assert that <code>g</code> contains every triple in <code>triples</code>.
+	 */
+	public static void testContains(Graph g, List<Triple> triples) {
+		for (int i = 0; i < triples.size(); i += 1)
+			assertTrue(g.contains(triples.get(i)));
+	}
+
+	/**
+	 * Assert that <code>g</code> contains every triple in <code>it</code>.
+	 */
+	public static void testContains(Graph g, Iterator<Triple> it) {
+		while (it.hasNext())
+			assertTrue(g.contains(it.next()));
+	}
+
+	/**
+	 * Assert that <code>g</code> contains every triple in <code>other</code>.
+	 */
+	public static void testContains(Graph g, Graph other) {
+		testContains(g, GraphUtil.findAll(other));
+	}
+
+	/**
+	 * Assert that <code>g</code> contains none of the triples in
+	 * <code>triples</code>.
+	 */
+	public static void testOmits(Graph g, Triple[] triples) {
+		for (int i = 0; i < triples.length; i += 1)
+			assertFalse("", g.contains(triples[i]));
+	}
+
+	/**
+	 * Assert that <code>g</code> contains none of the triples in
+	 * <code>triples</code>.
+	 */
+	public static void testOmits(Graph g, List<Triple> triples) {
+		for (int i = 0; i < triples.size(); i += 1)
+			assertFalse("", g.contains(triples.get(i)));
+	}
+
+	/**
+	 * Assert that <code>g</code> contains none of the triples in
+	 * <code>it</code>.
+	 */
+	public static void testOmits(Graph g, Iterator<Triple> it) {
+		while (it.hasNext())
+			assertFalse("", g.contains(it.next()));
+	}
+
+	/**
+	 * Assert that <code>g</code> contains none of the triples in
+	 * <code>other</code>.
+	 */
+	public static void testOmits(Graph g, Graph other) {
+		testOmits(g, GraphUtil.findAll(other));
+	}
+
+	/**
+	 * Answer an instance of <code>graphClass</code>. If <code>graphClass</code>
+	 * has a constructor that takes a <code>ReificationStyle</code> argument,
+	 * then that constructor is run on <code>style</code> to get the instance.
+	 * Otherwise, if it has a # constructor that takes an argument of
+	 * <code>wrap</code>'s class before the <code>ReificationStyle</code>, that
+	 * constructor is used; this allows non-static inner classes to be used for
+	 * <code>graphClass</code>, with <code>wrap</code> being the outer class
+	 * instance. If no suitable constructor exists, a JenaException is thrown.
+	 * 
+	 * @param wrap
+	 *            the outer class instance if graphClass is an inner class
+	 * @param graphClass
+	 *            a class implementing Graph
+	 * @return an instance of graphClass with the given style
+	 * @throws RuntimeException
+	 *             or JenaException if construction fails
+	 */
+	public static Graph getGraph(Object wrap, Class<? extends Graph> graphClass) {
+		try {
+			Constructor<?> cons = getConstructor(graphClass, new Class[] {});
+			if (cons != null)
+				return (Graph) cons.newInstance(new Object[] {});
+			Constructor<?> cons2 = getConstructor(graphClass,
+					new Class[] { wrap.getClass() });
+			if (cons2 != null)
+				return (Graph) cons2.newInstance(new Object[] { wrap });
+			throw new JenaException("no suitable graph constructor found for "
+					+ graphClass);
+		} catch (RuntimeException e) {
+			throw e;
+		} catch (Exception e) {
+			throw new JenaException(e);
+		}
+	}
+
+	/**
+	 * Begin a transaction on the graph if transactions are supported.
+	 * 
+	 * @param g
+	 */
+	public static void txnBegin(Graph g) {
+		if (g.getTransactionHandler().transactionsSupported()) {
+			g.getTransactionHandler().begin();
+		}
+	}
+
+	/**
+	 * Commit the transaction on the graph if transactions are supported.
+	 * 
+	 * @param g
+	 */
+	public static void txnCommit(Graph g) {
+		if (g.getTransactionHandler().transactionsSupported()) {
+			g.getTransactionHandler().commit();
+		}
+	}
+
+	/**
+	 * Rollback (abort) the transaction on the graph if transactions are
+	 * supported.
+	 * 
+	 * @param g
+	 */
+	public static void txnRollback(Graph g) {
+		if (g.getTransactionHandler().transactionsSupported()) {
+			g.getTransactionHandler().abort();
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/GraphProducerInterface.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/GraphProducerInterface.java b/jena-core/src/test/java/org/apache/jena/testing_framework/GraphProducerInterface.java
new file mode 100644
index 0000000..8c33eb1
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/GraphProducerInterface.java
@@ -0,0 +1,41 @@
+/*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ */
+package org.apache.jena.testing_framework;
+
+/**
+ * Creates the graph for testing. Implementations must track the creation of
+ * graphs created with newGraph and close them when closeGraphs is called.
+ * 
+ */
+//public interface GraphProducerInterface<T> {
+//
+//	/**
+//	 * Returns a new Graph to take part in the test.
+//	 * 
+//	 * @return The graph implementation to test.
+//	 */
+//	public abstract Graph newGraph();
+//
+//	/**
+//	 * provides a hook to close down graphs. When called all graphs created by
+//	 * the newGraph() method should be closed. Note that some graphs may have
+//	 * been closed during the test, so graphs should be tested for being closed
+//	 * prior to closing.
+//	 */
+//	public abstract void closeGraphs();
+// }

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/IContainerProducer.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/IContainerProducer.java b/jena-core/src/test/java/org/apache/jena/testing_framework/IContainerProducer.java
new file mode 100644
index 0000000..41bc6df
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/IContainerProducer.java
@@ -0,0 +1,19 @@
+package org.apache.jena.testing_framework;
+
+import org.apache.jena.rdf.model.Container;
+import org.apache.jena.rdf.model.Resource;
+
+public interface IContainerProducer<T extends Container> extends
+		IResourceProducer<T> {
+
+	/**
+	 * The Resource identifying the continer type. e.g. RDF.seq
+	 */
+	Resource getContainerType();
+
+	/**
+	 * The class of the continaer. e.g. Seq.class
+	 */
+	Class<? extends Container> getContainerClass();
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/IIteratorProducer.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/IIteratorProducer.java b/jena-core/src/test/java/org/apache/jena/testing_framework/IIteratorProducer.java
new file mode 100644
index 0000000..3178692
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/IIteratorProducer.java
@@ -0,0 +1,42 @@
+package org.apache.jena.testing_framework;
+
+import java.util.List;
+
+import org.apache.jena.util.iterator.ExtendedIterator;
+
+public interface IIteratorProducer<T> {
+
+	/**
+	 * Get a new instance of the iterator.
+	 * 
+	 * @return
+	 */
+	public ExtendedIterator<T> newInstance();
+
+	/**
+	 * Clean up after a test
+	 */
+	public void cleanUp();
+
+	/**
+	 * The list of items found in the iterator. Does not have to be in order.
+	 * 
+	 * @return
+	 */
+	public List<T> getList();
+
+	/**
+	 * True if delete is supported by the iterator
+	 * 
+	 * @return
+	 */
+	public boolean supportsDelete();
+
+	/**
+	 * True if this is an iterator on a copy so that delete works but getting a
+	 * new copy for the iterator test will return the original list.
+	 * 
+	 * @return
+	 */
+	public boolean isCopy();
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/INodeProducer.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/INodeProducer.java b/jena-core/src/test/java/org/apache/jena/testing_framework/INodeProducer.java
new file mode 100644
index 0000000..2532c32
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/INodeProducer.java
@@ -0,0 +1,39 @@
+/*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ */
+package org.apache.jena.testing_framework;
+
+import org.xenei.junit.contract.IProducer;
+
+import org.apache.jena.rdf.model.Model;
+import org.apache.jena.rdf.model.RDFNode;
+
+/**
+ * An abstract implementation of the IProducer<RDFNode> interface.
+ * 
+ * This class handles tracking of the created graphs and closing them. It also
+ * provides a callback for the implementing class to perform extra cleanup when
+ * the graph is closed.
+ * 
+ */
+public interface INodeProducer<T extends RDFNode> extends IProducer<T> {
+
+	abstract public T newInstance(String uri);
+
+	abstract public Model getModel();
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/IResourceProducer.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/IResourceProducer.java b/jena-core/src/test/java/org/apache/jena/testing_framework/IResourceProducer.java
new file mode 100644
index 0000000..ef9eead
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/IResourceProducer.java
@@ -0,0 +1,10 @@
+package org.apache.jena.testing_framework;
+
+import org.apache.jena.rdf.model.Resource;
+
+public interface IResourceProducer<X extends Resource> extends INodeProducer<X> {
+	/**
+	 * Returns true if the Resource implementation supports non URI values
+	 */
+	boolean supportsAnonymous();
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/IStatementProducer.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/IStatementProducer.java b/jena-core/src/test/java/org/apache/jena/testing_framework/IStatementProducer.java
new file mode 100644
index 0000000..8830948
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/IStatementProducer.java
@@ -0,0 +1,45 @@
+/*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ */
+package org.apache.jena.testing_framework;
+
+import org.apache.jena.rdf.model.Model;
+import org.apache.jena.rdf.model.Property;
+import org.apache.jena.rdf.model.RDFNode;
+import org.apache.jena.rdf.model.Resource;
+import org.apache.jena.rdf.model.Statement;
+
+/**
+ * An abstract implementation of the IProducer<RDFNode> interface.
+ * 
+ * This class handles tracking of the created graphs and closing them. It also
+ * provides a callback for the implementing class to perform extra cleanup when
+ * the graph is closed.
+ * 
+ */
+public interface IStatementProducer<T extends Statement> {
+
+	abstract public T newInstance(String fact);
+
+	abstract public T newInstance(Resource s, Property p, RDFNode o);
+
+	abstract public Model getModel();
+
+	abstract public void cleanUp();
+
+	abstract public AbstractModelProducer<Model> getModelProducer();
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/ITripleStoreProducer.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/ITripleStoreProducer.java b/jena-core/src/test/java/org/apache/jena/testing_framework/ITripleStoreProducer.java
new file mode 100644
index 0000000..fe4e25d
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/ITripleStoreProducer.java
@@ -0,0 +1,35 @@
+/*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ */
+package org.apache.jena.testing_framework;
+
+import org.apache.jena.graph.impl.TripleStore;
+
+/**
+ * Creates the graph for testing
+ * 
+ */
+public interface ITripleStoreProducer {
+
+	/**
+	 * Returns a TripleStore to take part in the test. Must be overridden in a
+	 * subclass.
+	 * 
+	 * @return The TripleStore implementation to test.
+	 */
+	public abstract TripleStore newTripleStore();
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/ModelHelper.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/ModelHelper.java b/jena-core/src/test/java/org/apache/jena/testing_framework/ModelHelper.java
new file mode 100644
index 0000000..2f35203
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/ModelHelper.java
@@ -0,0 +1,409 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.testing_framework;
+
+import org.apache.jena.graph.Node;
+import org.apache.jena.rdf.model.Literal;
+import org.apache.jena.rdf.model.Model;
+import org.apache.jena.rdf.model.ModelFactory;
+import org.apache.jena.rdf.model.Property;
+import org.apache.jena.rdf.model.RDFNode;
+import org.apache.jena.rdf.model.Resource;
+import org.apache.jena.rdf.model.ResourceFactory;
+import org.apache.jena.rdf.model.Statement;
+import org.apache.jena.rdf.model.StmtIterator;
+import org.apache.jena.shared.PrefixMapping;
+import org.apache.jena.util.CollectionFactory;
+
+import static org.junit.Assert.*;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+import org.junit.Assert;
+import org.xenei.junit.contract.IProducer;
+
+/**
+ * provides useful functionality for testing models, eg building small models
+ * from strings, testing equality, etc.
+ * 
+ * Currently this class extends GraphHelper and thus TestCase.
+ */
+public class ModelHelper extends GraphHelper {
+
+	private static Model builderModel;
+
+	static {
+		builderModel = ModelFactory.createDefaultModel();
+		builderModel.setNsPrefixes(PrefixMapping.Extended);
+	}
+
+	protected static final Model empty = ModelFactory.createDefaultModel();
+
+	protected static Model extendedModel(IProducer<Model> producer) {
+		Model result = producer.newInstance();
+		result.setNsPrefixes(PrefixMapping.Extended);
+		return result;
+	}
+
+	protected static String nice(RDFNode n) {
+		return nice(n.asNode());
+	}
+
+	public static Statement statement(String fact) {
+		StringTokenizer st = new StringTokenizer(fact);
+		Resource sub = resource(st.nextToken());
+		Property pred = property(st.nextToken());
+		RDFNode obj = rdfNode(st.nextToken());
+		return builderModel.createStatement(sub, pred, obj);
+	}
+
+	public static Statement statement(Resource s, Property p, RDFNode o) {
+		return builderModel.createStatement(s, p, o);
+	}
+
+	public static RDFNode rdfNode(Model m, String s) {
+		return m.asRDFNode(NodeCreateUtils.create(s));
+	}
+
+	public static RDFNode rdfNode(String s) {
+		return rdfNode(builderModel, s);
+	}
+
+	public static <T extends RDFNode> T rdfNode(String s, Class<T> c) {
+		return rdfNode(s).as(c);
+	}
+
+	public static Resource resource() {
+		return ResourceFactory.createResource();
+	}
+
+	public static Resource resource(String s) {
+		return (Resource) rdfNode(s);
+	}
+
+	// public static Resource resource(Model m, String s) {
+	// return (Resource) rdfNode(m, s);
+	// }
+
+	public static Property property(String s) {
+		return rdfNode(s).as(Property.class);
+	}
+
+	public static Property property(Model m, String s) {
+		return rdfNode(m, s).as(Property.class);
+	}
+
+	public static Literal literal(String s, String lang) {
+		return builderModel.createLiteral(s, lang);
+	}
+
+	public static Literal literal(String s) {
+		return rdfNode(s).as(Literal.class);
+	}
+
+	// /**
+	// * Create an array of Statements parsed from a semi-separated string.
+	// *
+	// * @param lockModel
+	// * a model to serve as a statement factory
+	// * @param facts
+	// * a sequence of semicolon-separated "S P O" facts
+	// * @return a Statement[] of the (S P O) statements from the string
+	// */
+	// public static Statement[] statements(Model m, String facts) {
+	// ArrayList<Statement> sl = new ArrayList<Statement>();
+	// StringTokenizer st = new StringTokenizer(facts, ";");
+	// while (st.hasMoreTokens())
+	// sl.add(statement(m, st.nextToken()));
+	// return sl.toArray(new Statement[sl.size()]);
+	// }
+
+	/**
+	 * Create an array of Statements parsed from a semi-separated string.
+	 * 
+	 * @param lockModel
+	 *            a model to serve as a statement factory
+	 * @param facts
+	 *            a sequence of semicolon-separated "S P O" facts
+	 * @return a Statement[] of the (S P O) statements from the string
+	 */
+	public static Statement[] statements(String facts) {
+		ArrayList<Statement> sl = new ArrayList<Statement>();
+		StringTokenizer st = new StringTokenizer(facts, ";");
+		while (st.hasMoreTokens())
+			sl.add(statement(st.nextToken()));
+		return sl.toArray(new Statement[sl.size()]);
+	}
+
+	/**
+	 * Create an array of Resources from a whitespace-separated string
+	 * 
+	 * @param items
+	 *            a whitespace-separated sequence to feed to resource
+	 * @return a Resource[] of the parsed resources
+	 */
+	public static Resource[] resources(String items) {
+		ArrayList<Resource> rl = new ArrayList<Resource>();
+		StringTokenizer st = new StringTokenizer(items);
+		while (st.hasMoreTokens())
+			rl.add(resource(st.nextToken()));
+		return rl.toArray(new Resource[rl.size()]);
+	}
+
+	/**
+	 * Answer the set of resources given by the space-separated
+	 * <code>items</code> string. Each resource specification is interpreted as
+	 * per <code>resource</code>.
+	 */
+	public static Set<Resource> resourceSet(String items) {
+		Set<Resource> result = new HashSet<Resource>();
+		StringTokenizer st = new StringTokenizer(items);
+		while (st.hasMoreTokens())
+			result.add(resource(st.nextToken()));
+		return result;
+	}
+
+	/**
+	 * add to a model all the statements expressed by a string.
+	 * 
+	 * Does not do any transaction manipulation.
+	 * 
+	 * @param m
+	 *            the model to be updated
+	 * @param facts
+	 *            a sequence of semicolon-separated "S P O" facts
+	 * @return the updated model
+	 */
+	public static Model modelAdd(Model m, String facts) {
+		StringTokenizer semis = new StringTokenizer(facts, ";");
+
+		while (semis.hasMoreTokens()) {
+			StringTokenizer st = new StringTokenizer(semis.nextToken());
+			Resource sub = resource(st.nextToken());
+			Property pred = property(st.nextToken());
+			RDFNode obj = rdfNode(st.nextToken());
+			m.add(sub, pred, obj);
+		}
+
+		return m;
+	}
+
+	/**
+	 * create a memory based model with extended prefixes and initialises it
+	 * with statements parsed from a string.
+	 * 
+	 * does all insertions in a transaction.
+	 * 
+	 * @param facts
+	 * @return
+	 */
+	public static Model memModel(String facts) {
+		Model model = ModelFactory.createMemModelMaker().createFreshModel();
+		model.setNsPrefixes(PrefixMapping.Extended);
+		txnBegin(model);
+		modelAdd(model, facts);
+		txnCommit(model);
+		return model;
+	}
+
+	/**
+	 * Creates a model with extended prefixes and initialises it with statements
+	 * parsed from a string.
+	 * 
+	 * does all insertions in a transaction.
+	 * 
+	 * @param facts
+	 *            a string in semicolon-separated "S P O" format
+	 * @return a model containing those facts
+	 */
+	public static Model modelWithStatements(
+			IProducer<? extends Model> producer, String facts) {
+		Model m = createModel(producer);
+		txnBegin(m);
+		modelAdd(m, facts);
+		txnCommit(m);
+		return m;
+	}
+
+	/**
+	 * Creates a model with extended prefixes and initialises it with statements
+	 * parsed from the statement iterator.
+	 * 
+	 * does all insertions in a transaction.
+	 * 
+	 * @param facts
+	 *            a string in semicolon-separated "S P O" format
+	 * @return a model containing those facts
+	 */
+	public static Model modelWithStatements(
+			IProducer<? extends Model> producer, final StmtIterator it) {
+		Model m = createModel(producer);
+		txnBegin(m);
+		while (it.hasNext()) {
+			m.add(it.nextStatement());
+		}
+		txnCommit(m);
+		return m;
+	}
+
+	/**
+	 * make a model and give it Extended prefixes
+	 */
+	public static Model createModel(IProducer<? extends Model> producer) {
+		Model result = producer.newInstance();
+		result.setNsPrefixes(PrefixMapping.Extended);
+		return result;
+	}
+
+	/**
+	 * test that two models are isomorphic and fail if they are not.
+	 * 
+	 * @param title
+	 *            a String appearing at the beginning of the failure message
+	 * @param wanted
+	 *            the model value that is expected
+	 * @param got
+	 *            the model value to check
+	 * @exception if
+	 *                the models are not isomorphic
+	 */
+	public static void assertIsoModels(String title, Model wanted, Model got) {
+		if (wanted.isIsomorphicWith(got) == false) {
+			Map<Node, Object> map = CollectionFactory.createHashedMap();
+			fail(title + ": expected " + nice(wanted.getGraph(), map)
+					+ "\n but had " + nice(got.getGraph(), map));
+		}
+	}
+
+	public static void assertContainsAll(final Model model, final Model model2) {
+		for (final StmtIterator s = model2.listStatements(); s.hasNext();) {
+			Assert.assertTrue(model.contains(s.nextStatement()));
+		}
+	}
+
+	public static void assertSameStatements(final Model model,
+			final Model model2) {
+		assertContainsAll(model, model2);
+		assertContainsAll(model2, model);
+	}
+
+	public static Property prop(final String uri) {
+		return ResourceFactory.createProperty("eh:/" + uri);
+	}
+
+	public static Resource res(final String uri) {
+		return ResourceFactory.createResource("eh:/" + uri);
+	}
+
+	/**
+	 * Fail if the two models are not isomorphic. See
+	 * assertIsoModels(String,Model,Model).
+	 */
+	public static void assertIsoModels(Model wanted, Model got) {
+		assertIsoModels("models must be isomorphic", wanted, got);
+	}
+
+	public static final boolean tvBoolean = true;
+	public static final byte tvByte = 1;
+	public static final short tvShort = 2;
+	public static final int tvInt = -1;
+	public static final long tvLong = -2;
+	public static final char tvChar = '!';
+	public static final float tvFloat = (float) 123.456;
+	public static final double tvDouble = -123.456;
+	public static final String tvString = "test 12 string";
+	public static final double dDelta = 0.000000005;
+
+	public static final float fDelta = 0.000005f;
+
+	public static final Object tvLitObj = new LitTestObj(1234);
+	public static final LitTestObj tvObject = new LitTestObj(12345);
+
+	public static class LitTestObj {
+		protected long content;
+
+		public LitTestObj(final long l) {
+			content = l;
+		}
+
+		public LitTestObj(final String s) {
+			content = Long.parseLong(s.substring(1, s.length() - 1));
+		}
+
+		@Override
+		public boolean equals(final Object o) {
+			return (o instanceof LitTestObj)
+					&& (content == ((LitTestObj) o).content);
+		}
+
+		@Override
+		public int hashCode() {
+			return (int) (content ^ (content >> 32));
+		}
+
+		@Override
+		public String toString() {
+			return "[" + Long.toString(content) + "]";
+		}
+
+		public long getContent() {
+			return content;
+		}
+	}
+
+	/**
+	 * Begin a transaction on the model if transactions are supported.
+	 * 
+	 * @param m
+	 */
+	public static Model txnBegin(Model m) {
+		if (m.supportsTransactions()) {
+			return m.begin();
+		}
+		return m;
+	}
+
+	/**
+	 * Commit the transaction on the model if transactions are supported.
+	 * 
+	 * @param m
+	 */
+	public static Model txnCommit(Model m) {
+		if (m.supportsTransactions()) {
+			return m.commit();
+		}
+		return m;
+	}
+
+	/**
+	 * Rollback (abort) the transaction on the model if transactions are
+	 * supported.
+	 * 
+	 * @param m
+	 */
+	public static Model txnRollback(Model m) {
+		if (m.supportsTransactions()) {
+			return m.abort();
+		}
+		return m;
+	}
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/NodeCreateUtils.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/NodeCreateUtils.java b/jena-core/src/test/java/org/apache/jena/testing_framework/NodeCreateUtils.java
new file mode 100644
index 0000000..83d42eb
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/NodeCreateUtils.java
@@ -0,0 +1,177 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.testing_framework;
+
+import java.util.StringTokenizer;
+
+import org.apache.jena.datatypes.xsd.XSDDatatype;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.NodeFactory;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.graph.impl.LiteralLabel;
+import org.apache.jena.graph.impl.LiteralLabelFactory;
+import org.apache.jena.rdf.model.AnonId;
+import org.apache.jena.shared.*;
+
+/**
+ * Creating nodes from string specifications.
+ */
+public class NodeCreateUtils {
+	/**
+	 * Returns a Node described by the string, primarily for testing purposes.
+	 * The string represents a URI, a numeric literal, a string literal, a bnode
+	 * label, or a variable.
+	 * <ul>
+	 * <li>'some text' :: a string literal with that text
+	 * <li>'some text'someLanguage:: a string literal with that text and
+	 * language
+	 * <li>'some text'someURI:: a typed literal with that text and datatype
+	 * <li>digits :: a literal [OF WHAT TYPE] with that [numeric] value
+	 * <li>_XXX :: a bnode with an AnonId built from _XXX
+	 * <li>?VVV :: a variable with name VVV
+	 * <li>&PPP :: to be done
+	 * <li>name:stuff :: the URI; name may be expanded using the Extended map
+	 * </ul>
+	 * 
+	 * @param x
+	 *            the string describing the node
+	 * @return a node of the appropriate type with the appropriate label
+	 */
+	public static Node create(String x) {
+		return create(PrefixMapping.Extended, x);
+	}
+
+	/**
+	 * Returns a Node described by the string, primarily for testing purposes.
+	 * The string represents a URI, a numeric literal, a string literal, a bnode
+	 * label, or a variable.
+	 * <ul>
+	 * <li>'some text' :: a string literal with that text
+	 * <li>'some text'someLanguage:: a string literal with that text and
+	 * language
+	 * <li>'some text'someURI:: a typed literal with that text and datatype
+	 * <li>digits :: a literal [OF WHAT TYPE] with that [numeric] value
+	 * <li>_XXX :: a bnode with an AnonId built from _XXX
+	 * <li>?VVV :: a variable with name VVV
+	 * <li>&PPP :: to be done
+	 * <li>name:stuff :: the URI; name may be expanded using the Extended map
+	 * </ul>
+	 * 
+	 * @param pm
+	 *            the PrefixMapping for translating pre:X strings
+	 * @param x
+	 *            the string encoding the node to create
+	 * @return a node with the appropriate type and label
+	 */
+	public static Node create(PrefixMapping pm, String x) {
+		if (x.equals(""))
+			throw new JenaException(
+					"Node.create does not accept an empty string as argument");
+		char first = x.charAt(0);
+		if (first == '\'' || first == '\"')
+			return NodeFactory.createLiteral(newString(pm, first, x));
+		if (Character.isDigit(first))
+			return NodeFactory.createLiteral(x, "", XSDDatatype.XSDinteger);
+		if (first == '_')
+			return NodeFactory.createAnon(new AnonId(x));
+		if (x.equals("??"))
+			return Node.ANY;
+		if (first == '?')
+			return NodeFactory.createVariable(x.substring(1));
+		if (first == '&')
+			return NodeFactory.createURI("q:" + x.substring(1));
+		int colon = x.indexOf(':');
+		String d = pm.getNsPrefixURI("");
+		return colon < 0 ? NodeFactory.createURI((d == null ? "eh:/" : d) + x)
+				: NodeFactory.createURI(pm.expandPrefix(x));
+	}
+
+	public static String unEscape(String spelling) {
+		if (spelling.indexOf('\\') < 0)
+			return spelling;
+		StringBuffer result = new StringBuffer(spelling.length());
+		int start = 0;
+		while (true) {
+			int b = spelling.indexOf('\\', start);
+			if (b < 0)
+				break;
+			result.append(spelling.substring(start, b));
+			result.append(unEscape(spelling.charAt(b + 1)));
+			start = b + 2;
+		}
+		result.append(spelling.substring(start));
+		return result.toString();
+	}
+
+	public static char unEscape(char ch) {
+		switch (ch) {
+		case '\\':
+		case '\"':
+		case '\'':
+			return ch;
+		case 'n':
+			return '\n';
+		case 's':
+			return ' ';
+		case 't':
+			return '\t';
+		default:
+			return 'Z';
+		}
+	}
+
+	public static LiteralLabel literal(PrefixMapping pm, String spelling,
+			String langOrType) {
+		String content = unEscape(spelling);
+		int colon = langOrType.indexOf(':');
+		return colon < 0 ? LiteralLabelFactory.create(content, langOrType,
+				false) : LiteralLabelFactory.createLiteralLabel(content, "",
+				NodeFactory.getType(pm.expandPrefix(langOrType)));
+	}
+
+	public static LiteralLabel newString(PrefixMapping pm, char quote,
+			String nodeString) {
+		int close = nodeString.lastIndexOf(quote);
+		return literal(pm, nodeString.substring(1, close),
+				nodeString.substring(close + 1));
+	}
+
+	/**
+	 * Utility factory as for create(String), but allowing the PrefixMapping to
+	 * be specified explicitly.
+	 */
+	public static Triple createTriple(PrefixMapping pm, String fact) {
+		StringTokenizer st = new StringTokenizer(fact);
+		Node sub = create(pm, st.nextToken());
+		Node pred = create(pm, st.nextToken());
+		Node obj = create(pm, st.nextToken());
+		return Triple.create(sub, pred, obj);
+	}
+
+	/**
+	 * Utility factory method for creating a triple based on the content of an
+	 * "S P O" string. The S, P, O are processed by Node.create, see which for
+	 * details of the supported syntax. This method exists to support test code.
+	 * Nodes are interpreted using the Standard prefix mapping.
+	 */
+
+	public static Triple createTriple(String fact) {
+		return createTriple(PrefixMapping.Standard, fact);
+	}
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/NodeProducerInterface.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/NodeProducerInterface.java b/jena-core/src/test/java/org/apache/jena/testing_framework/NodeProducerInterface.java
new file mode 100644
index 0000000..c80d3f4
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/NodeProducerInterface.java
@@ -0,0 +1,32 @@
+/*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ */
+package org.apache.jena.testing_framework;
+
+/**
+ * Creates the graph for testing. Implementations must track the creation of
+ * graphs created with newGraph and close them when closeGraphs is called.
+ * 
+ */
+//public interface NodeProducerInterface {
+//
+//	/**
+//	 * Returns a new anonymous RDFNode in an model.
+//	 */
+//	public abstract RDFNode newRDFNode();
+//
+// }

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/TestFileData.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/TestFileData.java b/jena-core/src/test/java/org/apache/jena/testing_framework/TestFileData.java
new file mode 100644
index 0000000..7b46366
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/TestFileData.java
@@ -0,0 +1,380 @@
+package org.apache.jena.testing_framework;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.Assert.assertTrue;
+import org.junit.Test;
+
+import org.apache.jena.graph.Graph;
+import org.apache.jena.graph.NodeFactory;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.rdf.model.AnonId;
+import org.apache.jena.rdf.model.Model;
+import org.apache.jena.rdf.model.ModelFactory;
+import org.apache.jena.graph.Factory;
+
+/**
+ * Class that produces RDF and TTL data, a Graph and a Model that all contain
+ * the same data. This is used for various tests where files are read/written
+ * 
+ */
+public class TestFileData {
+
+	public static final String NS = "uri:urn:x-rdf:test#";
+
+	private static Map<String, String[]> rdfData = new HashMap<String, String[]>();
+	private static Map<String, String[]> ttlData = new HashMap<String, String[]>();
+
+	static {
+		rdfData.put(
+				"", // default set must be equiv to TTL default
+				new String[] {
+						"<?xml version=\"1.0\" encoding=\"UTF-8\"?>",
+						"<rdf:RDF",
+						"  xmlns:u=\"uri:\"",
+						"  xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"",
+						String.format("  xmlns:ex=\"%s\">", NS),
+						String.format(
+								"  <rdf:Description rdf:about=\"%ssubject\">",
+								NS),
+						String.format(
+								"    <ex:predicate rdf:resource=\"%sobject\"/>",
+								NS), "  </rdf:Description>",
+						"  <rdf:Description rdf:about=\"uri:e\">",
+						"    <u:p5>verify base works</u:p5>",
+						"  </rdf:Description>", "</rdf:RDF>" });
+		rdfData.put(
+				"realtiveURI", // has relative URI in description rdf:about
+				new String[] {
+						"<?xml version=\"1.0\" encoding=\"UTF-8\"?>",
+						"<rdf:RDF",
+						"  xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"",
+						"  xmlns:ex=\"http://example.com/\">",
+						"  <rdf:Description rdf:about=\"http://example.com/subject\">",
+						"    <ex:predicate rdf:resource=\"http://example.com/object\"/>",
+						"  </rdf:Description>",
+						"  <rdf:Description rdf:about=\"e\">",
+						"    <ex:p5>verify base works</ex:p5>",
+						"  </rdf:Description>", "</rdf:RDF>" });
+		rdfData.put(
+				"OntologyList0",
+				new String[] {
+						"<?xml version='1.0' encoding='ISO-8859-1'?>",
+						"<!DOCTYPE rdf:RDF [",
+						"    <!ENTITY rdf   'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>",
+						"    <!ENTITY rdfs  'http://www.w3.org/2000/01/rdf-schema#'>",
+						"]>",
+						"<rdf:RDF",
+						"    xmlns:rdf   =\"&rdf;\"",
+						"    xmlns:rdfs  =\"&rdfs;\"",
+						String.format("    xml:base    =\"%s\"",
+								NS.substring(0, NS.length() - 1)),
+						String.format("    xmlns       =\"%s\"", NS), ">",
+						"<rdf:Description rdf:ID=\"root\">",
+						"   <p rdf:parseType=\"Collection\">", "   </p>",
+						"</rdf:Description>", "</rdf:RDF>" });
+		rdfData.put(
+				"OntologyList1",
+				new String[] {
+						"<?xml version='1.0' encoding='ISO-8859-1'?>",
+						"<!DOCTYPE rdf:RDF [",
+						"    <!ENTITY rdf   'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>",
+						"    <!ENTITY rdfs  'http://www.w3.org/2000/01/rdf-schema#'>",
+						"]>",
+						"<rdf:RDF",
+						"    xmlns:rdf   =\"&rdf;\"",
+						"    xmlns:rdfs  =\"&rdfs;\"",
+						String.format("    xml:base    =\"%s\"",
+								NS.substring(0, NS.length() - 1)),
+						String.format("    xmlns       =\"%s\"", NS), ">",
+						"<rdf:Description rdf:ID=\"root\">",
+						"   <p rdf:parseType=\"Collection\">",
+						"    <rdf:Description rdf:ID=\"a\" />", "   </p>",
+						"</rdf:Description>", "</rdf:RDF>" });
+		rdfData.put(
+				"OntologyList2",
+				new String[] {
+						"<?xml version='1.0' encoding='ISO-8859-1'?>",
+						"<!DOCTYPE rdf:RDF [",
+						"    <!ENTITY rdf   'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>",
+						"    <!ENTITY rdfs  'http://www.w3.org/2000/01/rdf-schema#'>",
+						"]>",
+						"<rdf:RDF",
+						"    xmlns:rdf   =\"&rdf;\"",
+						"    xmlns:rdfs  =\"&rdfs;\"",
+						String.format("    xml:base    =\"%s\"",
+								NS.substring(0, NS.length() - 1)),
+						String.format("    xmlns       =\"%s\"", NS), ">",
+						"<rdf:Description rdf:ID=\"root\">",
+						"   <p rdf:parseType=\"Collection\">",
+						"    <rdf:Description rdf:ID=\"a\" />",
+						"    <rdf:Description rdf:ID=\"b\" />", "   </p>",
+						"</rdf:Description>", "</rdf:RDF>" });
+		rdfData.put(
+				"OntologyList3",
+				new String[] {
+						"<?xml version='1.0' encoding='ISO-8859-1'?>",
+						"<!DOCTYPE rdf:RDF [",
+						"    <!ENTITY rdf   'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>",
+						"    <!ENTITY rdfs  'http://www.w3.org/2000/01/rdf-schema#'>",
+						"]>",
+						"<rdf:RDF",
+						"    xmlns:rdf   =\"&rdf;\"",
+						"    xmlns:rdfs  =\"&rdfs;\"",
+						String.format("    xml:base    =\"%s\"",
+								NS.substring(0, NS.length() - 1)),
+						String.format("    xmlns       =\"%s\"", NS), ">",
+						"<rdf:Description rdf:ID=\"root\">",
+						"   <p rdf:parseType=\"Collection\">",
+						"    <rdf:Description rdf:ID=\"a\" />",
+						"    <rdf:Description rdf:ID=\"b\" />",
+						"    <rdf:Description rdf:ID=\"c\" />", "   </p>",
+						"</rdf:Description>", "</rdf:RDF>" });
+		rdfData.put(
+				"OntologyList4",
+				new String[] {
+						"<?xml version='1.0' encoding='ISO-8859-1'?>",
+						"<!DOCTYPE rdf:RDF [",
+						"    <!ENTITY rdf   'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>",
+						"    <!ENTITY rdfs  'http://www.w3.org/2000/01/rdf-schema#'>",
+						"]>",
+						"<rdf:RDF",
+						"    xmlns:rdf   =\"&rdf;\"",
+						"    xmlns:rdfs  =\"&rdfs;\"",
+						String.format("    xml:base    =\"%s\"",
+								NS.substring(0, NS.length() - 1)),
+						String.format("    xmlns       =\"%s\"", NS), ">",
+						"<rdf:Description rdf:ID=\"root\">",
+						"   <p rdf:parseType=\"Collection\">",
+						"    <rdf:Description rdf:ID=\"a\" />",
+						"    <rdf:Description rdf:ID=\"b\" />",
+						"    <rdf:Description rdf:ID=\"c\" />",
+						"    <rdf:Description rdf:ID=\"d\" />", "   </p>",
+						"</rdf:Description>", "</rdf:RDF>" });
+		rdfData.put(
+				"OntologyList5",
+				new String[] {
+						"<?xml version='1.0' encoding='ISO-8859-1'?>",
+						"<!DOCTYPE rdf:RDF [",
+						"    <!ENTITY rdf   'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>",
+						"    <!ENTITY rdfs  'http://www.w3.org/2000/01/rdf-schema#'>",
+						"]>",
+						"<rdf:RDF",
+						"    xmlns:rdf   =\"&rdf;\"",
+						"    xmlns:rdfs  =\"&rdfs;\"",
+						String.format("    xml:base    =\"%s\"",
+								NS.substring(0, NS.length() - 1)),
+						String.format("    xmlns       =\"%s\"", NS), ">",
+						"<rdf:Description rdf:ID=\"root\">",
+						"   <p rdf:parseType=\"Collection\">",
+						"    <rdf:Description rdf:ID=\"a\" />",
+						"    <rdf:Description rdf:ID=\"b\" />",
+						"    <rdf:Description rdf:ID=\"c\" />",
+						"    <rdf:Description rdf:ID=\"d\" />",
+						"    <rdf:Description rdf:ID=\"e\" />", "   </p>",
+						"</rdf:Description>", "</rdf:RDF>" });
+
+		ttlData.put(
+				"", // default set must be equiv to RDF default and must be
+					// parsable as N-TRIPLE
+				new String[] {
+						String.format("<%ssubject> <%spredicate> <%sobject> .",
+								NS, NS, NS), "<e> <p5> \"verify base works\" ." });
+
+	}
+
+	private static String toDataString(String[] lines) {
+		String eol = System.getProperty("line.separator");
+		StringBuilder sb = new StringBuilder();
+		for (String l : lines) {
+			sb.append(l).append(eol);
+		}
+		return sb.toString();
+	}
+
+	public static Graph getGraph() {
+		
+		Graph g = Factory.createGraphMem();
+
+		g.add(new Triple(NodeFactory.createURI("http://example.com/subject"),
+				NodeFactory.createURI("http://example.com/predicate"),
+				NodeFactory.createURI("http://example.com/object")));
+
+		g.add(new Triple(NodeFactory.createAnon(AnonId.create("a")),
+				NodeFactory.createURI("http://example.com/p1"), NodeFactory
+						.createAnon(AnonId.create("b"))));
+
+		g.add(new Triple(NodeFactory.createAnon(AnonId.create("b")),
+				NodeFactory.createURI("http://example.com/p2"), NodeFactory
+						.createLiteral("foo")));
+
+		g.add(new Triple(NodeFactory.createURI("http://example.com/ns/e"),
+				NodeFactory.createURI("http://example.com/ns/p5"), NodeFactory
+						.createLiteral("verify base works")));
+
+		return g;
+	}
+
+	public static Model getModel() {
+		return ModelFactory.createModelForGraph(getGraph());
+	}
+
+	public static Model populateRDFModel(Model model, String name)
+			throws IOException {
+		ModelHelper.txnBegin(model);
+		model.read(getRDFInput(name), "http://example.com/test/");
+		ModelHelper.txnCommit(model);
+		return model;
+	}
+
+	public static Model getRDFModel(String name) throws IOException {
+		return populateRDFModel(ModelFactory.createDefaultModel(), name);
+	}
+
+	private static String[] getRDFData(String name) throws IOException {
+		String[] data = rdfData.get(name);
+		if (data == null) {
+			throw new IOException("Can not find RDF data " + name);
+		}
+		return data;
+	}
+
+	public static InputStream getRDFInput(String name) throws IOException {
+		return new ByteArrayInputStream(toDataString(getRDFData(name))
+				.getBytes());
+	}
+
+	public static InputStream getRDFInput() throws IOException {
+		return getRDFInput("");
+	}
+
+	private static String[] getTTLData(String name) throws IOException {
+		String[] data = ttlData.get(name);
+		if (data == null) {
+			throw new IOException("Can not find TTL data " + name);
+		}
+		return data;
+	}
+
+	public static InputStream getTTLInput(String name) throws IOException {
+		return new ByteArrayInputStream(toDataString(getTTLData(name))
+				.getBytes());
+	}
+
+	public static InputStream getTTLInput() throws IOException {
+		return getTTLInput("");
+	}
+
+	public static Reader getRDFReader(String name) throws IOException {
+
+		return new StringReader(toDataString(getRDFData(name)));
+	}
+
+	public static Reader getRDFReader() throws IOException {
+
+		return getRDFReader("");
+	}
+
+	public static Reader getTTLReader() throws IOException {
+		return getTTLReader("");
+	}
+
+	public static Reader getTTLReader(String name) throws IOException {
+		return new StringReader(toDataString(getTTLData(name)));
+	}
+
+	public static String getRDFName(String name) throws IOException {
+		return createFile(toDataString(getRDFData(name)), ".rdf");
+	}
+
+	public static String getRDFName() throws IOException {
+		return getRDFName("");
+	}
+
+	private static String createFile(String data, String extension)
+			throws IOException {
+		File f = File.createTempFile("tfd", extension);
+		f.deleteOnExit();
+		FileOutputStream fos = new FileOutputStream(f);
+		// fos.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>".getBytes());
+		// fos.write(System.getProperty("line.separator").getBytes());
+		fos.write(data.getBytes());
+		fos.close();
+		return f.toURI().toURL().toExternalForm();
+	}
+
+	public static String getTTLName() throws IOException {
+		return getTTLName("");
+	}
+
+	public static String getTTLName(String name) throws IOException {
+		return createFile(toDataString(getTTLData(name)), ".ttl");
+	}
+
+	@Test
+	public void testEquality() throws Exception {
+		Model ttl = ModelFactory.createDefaultModel().read(getTTLInput(), NS,
+				"TTL");
+		Model rdf = ModelFactory.createDefaultModel().read(getRDFInput(), NS,
+				"RDF/XML-ABBREV");
+
+		assertTrue(ttl.isIsomorphicWith(rdf));
+		assertTrue(rdf.isIsomorphicWith(ttl));
+	}
+
+	public static void main(String... argv) throws Exception {
+		// //Model model = ModelFactory.createDefaultModel() ;
+		// //String x = "<s> <p> 'verify it works' ." ;
+		//
+		//
+		// //Reader sr = getTTLReader();
+		// //model.read(sr, "http://example/", "TTL") ;
+		// //model.read(sr, "", "TTL") ;
+		// //model.read( getRDFInput() );
+		// Model ttl = ModelFactory.createDefaultModel().read( getTTLInput(),
+		// "", "TTL");
+		// Model rdf = ModelFactory.createDefaultModel().read( getRDFInput(),
+		// "", "RDF/XML-ABBREV");
+		//
+		// ttl.write(System.out, "RDF/XML-ABBREV") ;
+		// System.out.println("-----") ;
+		// // model.setNsPrefix("ex", "http://example/") ;
+		// rdf.write(System.out, "N-TRIPLES") ;
+		// System.out.println("-----") ;
+		// System.out.println( getTTLName() );
+		// System.out.println( "ttl iso rdf: "+ttl.isIsomorphicWith(rdf));
+		//
+		// System.out.println( getRDFName() );
+		// System.out.println( "rdf iso ttl: "+rdf.isIsomorphicWith(ttl));
+
+		String[] lines = { "<rdf:RDF",
+				"  xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">",
+				"  <rdf:Description rdf:about=\"e\">",
+				"    <p5>verify base works</p5>", "  </rdf:Description>",
+				"</rdf:RDF>" };
+
+		String eol = System.getProperty("line.separator");
+		StringBuilder sb = new StringBuilder();
+		for (String l : lines) {
+			sb.append(l).append(eol);
+		}
+
+		Model model = ModelFactory.createDefaultModel();
+
+		StringReader sr = new StringReader(sb.toString());
+		model.read(sr, "http://example/");
+		model.write(System.out, "N-TRIPLES");
+		System.out.println("-----");
+		model.setNsPrefix("ex", "http://example/");
+		model.write(System.out, "RDF/XML-ABBREV", "http://another/");
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/TestUtils.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/TestUtils.java b/jena-core/src/test/java/org/apache/jena/testing_framework/TestUtils.java
new file mode 100644
index 0000000..78d4bab
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/TestUtils.java
@@ -0,0 +1,320 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.testing_framework;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Constructor;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+import org.slf4j.LoggerFactory;
+
+import static org.junit.Assert.*;
+
+import org.apache.jena.util.CollectionFactory;
+import org.apache.jena.util.iterator.ExtendedIterator;
+import org.apache.jena.util.iterator.WrappedIterator;
+
+/**
+ * Foo basis for Jena test cases which provides assertFalse and assertDiffer.
+ * Often the logic of the names is clearer than using a negation.
+ */
+public class TestUtils {
+	// do not instantiate
+	protected TestUtils() {
+		throw new UnsupportedOperationException("Do not instantiate TestUtils");
+	};
+
+	/**
+	 * assert that the two objects must be unequal according to .equals().
+	 * 
+	 * @param title
+	 *            a labelling string for the assertion failure text
+	 * @param x
+	 *            an object to test; the subject of a .equals()
+	 * @param y
+	 *            the other object; the argument of the .equals()
+	 */
+	public static void assertDiffer(String title, Object x, Object y) {
+		if (x == null ? y == null : x.equals(y))
+			fail((title == null ? "objects should be different, but both were: "
+					: title)
+					+ x);
+	}
+
+	/**
+	 * assert that the two objects must be unequal according to .equals().
+	 * 
+	 * @param x
+	 *            an object to test; the subject of a .equals()
+	 * @param y
+	 *            the other object; the argument of the .equals()
+	 */
+	public static void assertDiffer(Object x, Object y) {
+		assertDiffer(null, x, y);
+	}
+
+	/**
+	 * assert that the object <code>x</code> must be of the class
+	 * <code>expected</code>.
+	 */
+	public static void assertInstanceOf(Class<?> expected, Object x) {
+		if (x == null)
+			fail("expected instance of " + expected + ", but had null");
+		if (!expected.isInstance(x))
+			fail("expected instance of " + expected + ", but had instance of "
+					+ x.getClass());
+	}
+
+	/**
+	 * Answer a Set formed from the elements of the List <code>L</code>.
+	 */
+	public static <T> Set<T> listToSet(List<T> L) {
+		return CollectionFactory.createHashedSet(L);
+	}
+
+	/**
+	 * Answer a List of the substrings of <code>s</code> that are separated by
+	 * spaces.
+	 */
+	public static List<String> listOfStrings(String s) {
+		List<String> result = new ArrayList<String>();
+		StringTokenizer st = new StringTokenizer(s);
+		while (st.hasMoreTokens())
+			result.add(st.nextToken());
+		return result;
+	}
+
+	/**
+	 * Answer a Set of the substrings of <code>s</code> that are separated by
+	 * spaces.
+	 */
+	public static Set<String> setOfStrings(String s) {
+		Set<String> result = new HashSet<String>();
+		StringTokenizer st = new StringTokenizer(s);
+		while (st.hasMoreTokens())
+			result.add(st.nextToken());
+		return result;
+	}
+
+	/**
+	 * Answer a list containing the single object <code>x</code>.
+	 */
+	public static <T> List<T> listOfOne(T x) {
+		List<T> result = new ArrayList<T>();
+		result.add(x);
+		return result;
+	}
+
+	/**
+	 * Answer a Set containing the single object <code>x</code>.
+	 */
+	public static <T> Set<T> setOfOne(T x) {
+		Set<T> result = new HashSet<T>();
+		result.add(x);
+		return result;
+	}
+
+	/**
+	 * Answer a fresh list which is the concatenation of <code>L</code> then
+	 * <code>R</code>. Neither <code>L</code> nor <code>R</code> is updated.
+	 */
+	public static <T> List<T> append(List<? extends T> L, List<? extends T> R) {
+		List<T> result = new ArrayList<T>(L);
+		result.addAll(R);
+		return result;
+	}
+
+	/**
+	 * Answer an iterator over the space-separated substrings of <code>s</code>.
+	 */
+	protected static ExtendedIterator<String> iteratorOfStrings(String s) {
+		return WrappedIterator.create(listOfStrings(s).iterator());
+	}
+
+	/**
+	 * Answer the constructor of the class <code>c</code> which takes arguments
+	 * of the type(s) in <code>args</code>, or <code>null</code> if there isn't
+	 * one.
+	 */
+	public static Constructor<?> getConstructor(Class<?> c, Class<?>[] args) {
+		try {
+			return c.getConstructor(args);
+		} catch (NoSuchMethodException e) {
+			return null;
+		}
+	}
+
+	/**
+	 * Answer true iff <code>subClass</code> is the same class as
+	 * <code>superClass</code>, if its superclass <i>is</i>
+	 * <code>superClass</code>, or if one of its interfaces hasAsInterface that
+	 * class.
+	 */
+	public static boolean hasAsParent(Class<?> subClass, Class<?> superClass) {
+		if (subClass == superClass || subClass.getSuperclass() == superClass)
+			return true;
+		Class<?>[] is = subClass.getInterfaces();
+		for (int i = 0; i < is.length; i += 1)
+			if (hasAsParent(is[i], superClass))
+				return true;
+		return false;
+	}
+
+	/**
+	 * Fail unless <code>subClass</code> has <code>superClass</code> as a
+	 * parent, either a superclass or an implemented (directly or not)
+	 * interface.
+	 */
+	public static void assertHasParent(Class<?> subClass, Class<?> superClass) {
+		if (hasAsParent(subClass, superClass) == false)
+			fail("" + subClass + " should have " + superClass + " as a parent");
+	}
+
+	/**
+	 * Tests o1.equals( o2 ) && o2.equals(o1) && o1.hashCode() == o2.hashCode()
+	 * 
+	 * @param o1
+	 * @param o2
+	 */
+	public static void assertEquivalent(Object o1, Object o2) {
+		assertEquals(o1, o2);
+		assertEquals(o2, o1);
+		assertEquals(o1.hashCode(), o2.hashCode());
+	}
+
+	/**
+	 * Tests o1.equals( o2 ) && o2.equals(o1) && o1.hashCode() == o2.hashCode()
+	 * 
+	 * @param o1
+	 * @param o2
+	 */
+	public static void assertEquivalent(String msg, Object o1, Object o2) {
+		assertEquals(msg, o1, o2);
+		assertEquals(msg, o2, o1);
+		assertEquals(msg, o1.hashCode(), o2.hashCode());
+	}
+
+	/**
+	 * Tests o1.equals( o2 ) && o2.equals(o1) && o1.hashCode() == o2.hashCode()
+	 * 
+	 * @param o1
+	 * @param o2
+	 */
+	public static void assertNotEquivalent(String msg, Object o1, Object o2) {
+		assertNotEquals(msg, o1, o2);
+		assertNotEquals(msg, o2, o1);
+	}
+
+	private static URL getURL(String fn) {
+		URL u = TestUtils.class.getClassLoader().getResource(fn);
+		if (u == null) {
+			throw new RuntimeException(new FileNotFoundException(fn));
+		}
+		return u;
+	}
+
+	public static String getFileName(String fn) {
+
+		try {
+			return getURL(fn).toURI().toString();
+		} catch (URISyntaxException e) {
+			throw new RuntimeException(e);
+		}
+	}
+
+	public static InputStream getInputStream(String fn) throws IOException {
+		return getURL(fn).openStream();
+	}
+
+	// FIXME this is to be removed when testing is complete
+	public static void logAssertEquals(Class<?> clazz, String msg, Object obj1,
+			Object obj2) {
+		if (obj1 == null && obj2 == null) {
+			return;
+		}
+
+		if (obj1 != null) {
+			if (obj1 == obj2) {
+				return;
+			}
+			if (obj1.equals(obj2)) {
+				return;
+			}
+		}
+		LoggerFactory.getLogger(clazz).warn(
+				String.format("%s expected: %s got: %s", msg, obj1, obj2));
+		System.out.println(String.format("[%sWARNING] %s expected: %s got: %s",
+				clazz, msg, obj1, obj2));
+	}
+
+	// FIXME this is to be removed when testing is complete
+	public static void logAssertTrue(Class<?> clazz, String msg, boolean value) {
+		if (value) {
+			return;
+		}
+
+		LoggerFactory.getLogger(clazz).warn(String.format("%s", msg));
+		System.out.println(String.format("[%s WARNING] %s ", clazz, msg));
+	}
+
+	// FIXME this is to be removed when testing is complete
+	public static void logAssertFalse(Class<?> clazz, String msg, boolean value) {
+		if (!value) {
+			return;
+		}
+
+		LoggerFactory.getLogger(clazz).warn(String.format("%s", msg));
+		System.out.println(String.format("[%s WARNING] %s ", clazz, msg));
+	}
+
+	// FIXME this is to be removed when testing is complete
+	public static void logAssertSame(Class<?> clazz, String msg, Object obj1,
+			Object obj2) {
+		if (obj1 == null && obj2 == null) {
+			return;
+		}
+
+		if (obj1 != null) {
+			if (obj1 == obj2) {
+				return;
+			}
+		}
+		LoggerFactory.getLogger(clazz).warn(
+				String.format("%s expected: %s got: %s", msg, obj1, obj2));
+		System.out
+				.println(String.format("[%s WARNING] %s expected: %s got: %s",
+						clazz, msg, obj1, obj2));
+	}
+
+	public static String safeName(String s) {
+		// Safe from Eclipse
+		s = s.replace('(', '[');
+		s = s.replace(')', ']');
+		return s;
+
+	}
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/Manifest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/Manifest.java b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/Manifest.java
new file mode 100644
index 0000000..79d2fce
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/Manifest.java
@@ -0,0 +1,228 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.testing_framework.manifest;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.jena.n3.IRIResolver;
+import org.apache.jena.rdf.model.*;
+import org.apache.jena.util.FileManager;
+import org.apache.jena.vocabulary.RDF;
+import org.apache.jena.vocabulary.RDFS;
+import org.apache.jena.vocabulary.TestManifest;
+import org.apache.jena.vocabulary.TestManifestX;
+
+/**
+ * A test manifest for a single manifest file.
+ */
+
+public class Manifest {
+	// This class does not know about JUnit.
+	private static Logger log = LoggerFactory.getLogger(Manifest.class);
+	private Model manifest;
+	private String manifestName;
+	private String filename;
+	private List<String> includedFiles = new ArrayList<String>();
+	private Resource manifestRes = null;
+
+	public Manifest(String fn) {
+		log.debug("Manifest = " + fn);
+		filename = IRIResolver.resolveGlobal(fn);
+		log.debug("         = " + filename);
+		manifest = FileManager.get().loadModel(filename);
+		parseIncludes();
+		parseManifest();
+	}
+
+	public String getName() {
+		return manifestName;
+	}
+
+	public Iterator<String> includedManifests() {
+		return includedFiles.iterator();
+	}
+
+	private void parseManifest() {
+		StmtIterator manifestStmts = manifest.listStatements(null, RDF.type,
+				TestManifest.Manifest);
+		if (!manifestStmts.hasNext()) {
+			log.warn("No manifest in manifest file: " + filename);
+			return;
+		}
+
+		Statement manifestItemStmt = manifestStmts.nextStatement();
+		if (manifestStmts.hasNext()) {
+			log.warn("Multiple manifests in manifest file: " + filename);
+			return;
+		}
+
+		manifestRes = manifestItemStmt.getSubject();
+		manifestName = getLiteral(manifestRes, RDFS.label);
+		if (manifestName == null)
+			manifestName = getLiteral(manifestRes, RDFS.comment);
+		manifestStmts.close();
+	}
+
+	// For every test item (does not recurse)
+	public void apply(ManifestItemHandler gen) {
+
+		StmtIterator manifestStmts = manifest.listStatements(null, RDF.type,
+				TestManifest.Manifest);
+
+		for (; manifestStmts.hasNext();) {
+			Statement manifestItemStmt = manifestStmts.nextStatement();
+			Resource manifestRes = manifestItemStmt.getSubject();
+
+			// For each item in this manifest
+			StmtIterator listIter = manifestRes
+					.listProperties(TestManifest.entries);
+			for (; listIter.hasNext();) {
+				// List head
+				Resource listItem = listIter.nextStatement().getResource();
+				for (; !listItem.equals(RDF.nil);) {
+					ManifestItem item = new ManifestItem(listItem
+							.getRequiredProperty(RDF.first).getResource());
+					gen.processManifestItem(item);
+					// Move to next list item
+					listItem = listItem.getRequiredProperty(RDF.rest)
+							.getResource();
+				}
+			}
+			listIter.close();
+		}
+		manifestStmts.close();
+	}
+
+	// -------- included manifests
+	private void parseIncludes() {
+		parseIncludes(TestManifest.include);
+		parseIncludes(TestManifestX.include);
+	}
+
+	private void parseIncludes(Property property) {
+		StmtIterator includeStmts = manifest.listStatements(null, property,
+				(RDFNode) null);
+
+		for (; includeStmts.hasNext();) {
+			Statement s = includeStmts.nextStatement();
+			if (!(s.getObject() instanceof Resource)) {
+				log.warn("Include: not a Resource" + s);
+				continue;
+			}
+			Resource r = s.getResource();
+			parseOneIncludesList(r);
+		}
+		includeStmts.close();
+	}
+
+	private void parseOneIncludesList(Resource r) {
+		if (r == null)
+			return;
+
+		if (r.equals(RDF.nil))
+			return;
+
+		if (!r.isAnon()) {
+			String uri = r.getURI();
+			if (includedFiles.contains(uri))
+				return;
+			includedFiles.add(r.getURI());
+			return;
+		}
+
+		// BNnode => list
+		Resource listItem = r;
+		while (!listItem.equals(RDF.nil)) {
+			r = listItem.getRequiredProperty(RDF.first).getResource();
+			parseOneIncludesList(r);
+			// Move on
+			listItem = listItem.getRequiredProperty(RDF.rest).getResource();
+		}
+	}
+
+	public static Resource getResource(Resource r, Property p) {
+		if (r == null)
+			return null;
+		if (!r.hasProperty(p))
+			return null;
+
+		RDFNode n = r.getProperty(p).getObject();
+		if (n instanceof Resource)
+			return (Resource) n;
+
+		throw new ManifestException("Manifest problem (not a Resource): " + n
+				+ " => " + p);
+	}
+
+	public static Collection<Resource> listResources(Resource r, Property p) {
+		if (r == null)
+			return null;
+		List<Resource> x = new ArrayList<Resource>();
+		StmtIterator sIter = r.listProperties(p);
+		for (; sIter.hasNext();) {
+			RDFNode n = sIter.next().getObject();
+			if (!(n instanceof Resource))
+				throw new ManifestException(
+						"Manifest problem (not a Resource): " + n + " => " + p);
+			x.add((Resource) n);
+		}
+		return x;
+	}
+
+	public static String getLiteral(Resource r, Property p) {
+		if (r == null)
+			return null;
+		if (!r.hasProperty(p))
+			return null;
+
+		RDFNode n = r.getProperty(p).getObject();
+		if (n instanceof Literal)
+			return ((Literal) n).getLexicalForm();
+
+		throw new ManifestException("Manifest problem (not a Literal): " + n
+				+ " => " + p);
+	}
+
+	public static String getLiteralOrURI(Resource r, Property p) {
+		if (r == null)
+			return null;
+
+		if (!r.hasProperty(p))
+			return null;
+
+		RDFNode n = r.getProperty(p).getObject();
+		if (n instanceof Literal)
+			return ((Literal) n).getLexicalForm();
+
+		if (n instanceof Resource) {
+			Resource r2 = (Resource) n;
+			if (!r2.isAnon())
+				return r2.getURI();
+		}
+
+		throw new ManifestException("Manifest problem: " + n + " => " + p);
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestException.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestException.java b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestException.java
new file mode 100644
index 0000000..14a3d44
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestException.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.testing_framework.manifest;
+
+/**
+ * TestException a root exception for all (intentional) exceptions in tests
+ * setup, not a failure of the test itself (e.g. manifest problems)
+ */
+
+public class ManifestException extends RuntimeException {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 5601201233175898449L;
+
+	public ManifestException() {
+		super();
+	}
+
+	public ManifestException(Throwable cause) {
+		super(cause);
+	}
+
+	public ManifestException(String msg) {
+		super(msg);
+	}
+
+	public ManifestException(String msg, Throwable cause) {
+		super(msg, cause);
+	}
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestFile.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestFile.java b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestFile.java
new file mode 100644
index 0000000..d7493bb
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestFile.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.testing_framework.manifest;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation to declare the manifest file for the test.
+ * 
+ */
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ManifestFile {
+	/**
+	 * The file that the annotated class should read
+	 */
+	String value();
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestItem.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestItem.java b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestItem.java
new file mode 100644
index 0000000..81999bd
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestItem.java
@@ -0,0 +1,53 @@
+package org.apache.jena.testing_framework.manifest;
+
+import org.apache.jena.n3.turtle.TurtleTestVocab;
+import org.apache.jena.rdf.model.Resource;
+import org.apache.jena.vocabulary.RDF;
+import org.apache.jena.vocabulary.TestManifest;
+
+public class ManifestItem {
+	private Resource entry;
+
+	public ManifestItem(Resource entry) {
+		this.entry = entry;
+	}
+
+	public Resource getEntry() {
+		return entry;
+	}
+
+	public String getTestName() {
+		return Manifest.getLiteral(entry, TestManifest.name);
+	}
+
+	public Resource getAction() {
+		return Manifest.getResource(entry, TestManifest.action);
+	}
+
+	public Resource getResult() {
+		return Manifest.getResource(entry, TestManifest.result);
+	}
+
+	public Resource getType() {
+		return Manifest.getResource(entry, RDF.type);
+	}
+
+	public Resource getOutput() {
+		Resource result = getResult();
+		return result == null ? null : Manifest.getResource(result,
+				TurtleTestVocab.output);
+	}
+
+	public Resource getInput() {
+		Resource action = getAction();
+		return action == null ? null : Manifest.getResource(action,
+				TurtleTestVocab.input);
+	}
+
+	public String getUriString() {
+		Resource action = getAction();
+		Resource inputIRIr = action == null ? null : Manifest.getResource(
+				action, TurtleTestVocab.inputIRI);
+		return (inputIRIr == null) ? null : inputIRIr.getURI();
+	}
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestItemHandler.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestItemHandler.java b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestItemHandler.java
new file mode 100644
index 0000000..08ce69f
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestItemHandler.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.testing_framework.manifest;
+
+import java.util.List;
+
+import org.junit.runner.Runner;
+import org.junit.runners.model.InitializationError;
+
+public interface ManifestItemHandler {
+	/**
+	 * Handle an item in a manifest
+	 * 
+	 * @throws InitializationError
+	 */
+	public void processManifestItem(ManifestItem item);
+
+	public void setTestRunnerList(List<Runner> runners);
+}


[15/50] [abbrv] jena git commit: Add @Override

Posted by cl...@apache.org.
Add @Override


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/b755fc16
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/b755fc16
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/b755fc16

Branch: refs/heads/add-contract-tests
Commit: b755fc16a96f15706ca6392defa20f79f45a0cca
Parents: 8dbd7fa
Author: Andy Seaborne <an...@apache.org>
Authored: Sat May 2 18:21:48 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat May 2 18:21:48 2015 +0100

----------------------------------------------------------------------
 .../src/main/java/org/apache/jena/util/iterator/Filter.java   | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/b755fc16/jena-core/src/main/java/org/apache/jena/util/iterator/Filter.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/util/iterator/Filter.java b/jena-core/src/main/java/org/apache/jena/util/iterator/Filter.java
index 6c85c28..427a047 100644
--- a/jena-core/src/main/java/org/apache/jena/util/iterator/Filter.java
+++ b/jena-core/src/main/java/org/apache/jena/util/iterator/Filter.java
@@ -27,9 +27,10 @@ import java.util.function.Predicate;
  * Deprecated in favor of {@link Predicate}.
  */
 @Deprecated
-public abstract class Filter<T> implements Predicate<T> {
-
-	public boolean test(T o) {
+public abstract class Filter<T> implements Predicate<T> 
+{
+    @Override
+    public boolean test(T o) {
 		return accept(o);
 	}
 


[32/50] [abbrv] jena git commit: Clean code.

Posted by cl...@apache.org.
Clean code.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/e81ee641
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/e81ee641
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/e81ee641

Branch: refs/heads/add-contract-tests
Commit: e81ee641d7ee7dbb7e4dbde792d7e79af4a7df72
Parents: fa3bae8
Author: Andy Seaborne <an...@apache.org>
Authored: Thu May 7 10:29:00 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu May 7 10:29:00 2015 +0100

----------------------------------------------------------------------
 .../apache/jena/atlas/lib/cache/CacheGuava.java | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/e81ee641/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheGuava.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheGuava.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheGuava.java
index a25faa0..9beffaf 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheGuava.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheGuava.java
@@ -21,31 +21,28 @@ package org.apache.jena.atlas.lib.cache;
 import java.util.Iterator ;
 import java.util.concurrent.Callable ;
 import java.util.concurrent.ExecutionException ;
-import java.util.function.BiConsumer;
+import java.util.function.BiConsumer ;
 
 import org.apache.jena.atlas.lib.Cache ;
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.ext.com.google.common.cache.CacheBuilder ;
 import org.apache.jena.ext.com.google.common.cache.RemovalListener ;
-import org.apache.jena.ext.com.google.common.cache.RemovalNotification ;
 
-/** Wrapper around com.google.common.cache */
+/** Wrapper around a shaded com.google.common.cache */
 final
 public class CacheGuava<K,V> implements Cache<K, V>
 {
     private BiConsumer<K, V> dropHandler = null ;
-    /*private*/ org.apache.jena.ext.com.google.common.cache.Cache<K,V> cache ;
+    private org.apache.jena.ext.com.google.common.cache.Cache<K,V> cache ;
 
     public CacheGuava(int size)
     {
-        RemovalListener<K,V> drop = new RemovalListener<K, V>() {
-            @Override
-            public void onRemoval(RemovalNotification<K, V> notification) {
-                if ( dropHandler != null )
-                    dropHandler.accept(notification.getKey(),
-                                      notification.getValue()) ;
-            }
+        RemovalListener<K,V> drop = (notification)-> {
+            if ( dropHandler != null )
+                dropHandler.accept(notification.getKey(),
+                                   notification.getValue()) ;
         } ;
+            
         cache = CacheBuilder.newBuilder()
             .maximumSize(size)
             .removalListener(drop)
@@ -54,7 +51,6 @@ public class CacheGuava<K,V> implements Cache<K, V>
             .build() ;
     }
 
-    // Change the interface to be ...
     @Override
     public V getOrFill(K key, Callable<V> filler) {
         try {


[24/50] [abbrv] jena git commit: Using Java 8 types in o.a.j.atlas

Posted by cl...@apache.org.
http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java b/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java
index ff87bcc..192953f 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java
@@ -21,8 +21,6 @@ package org.apache.jena.riot.thrift;
 import java.io.ByteArrayInputStream ;
 import java.io.ByteArrayOutputStream ;
 import java.util.Iterator ;
-
-import org.apache.jena.atlas.iterator.Filter ;
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.junit.BaseTest ;
 import org.apache.jena.atlas.lib.StrUtils ;
@@ -130,7 +128,7 @@ public class TestStreamRDFThrift extends BaseTest {
         boolean b = IsoMatcher.isomorphic(dsg1, dsg2) ;
         assertTrue(b) ;
         // Stronger - same bNode and same as in original data.
-        Node obj = Iter.first(dsg1.listGraphNodes(), filterBlankNode) ;
+        Node obj = Iter.first(dsg1.listGraphNodes(), Node::isBlank) ;
         termAsObject(dsg1, obj) ;
     }
 
@@ -149,7 +147,7 @@ public class TestStreamRDFThrift extends BaseTest {
         boolean b = IsoMatcher.isomorphic(dsg1, dsg2) ;
         assertTrue(b) ;
         // Stronger - same bNode and same as in original data.
-        Node obj = Iter.first(dsg1.listGraphNodes(), filterBlankNode) ;
+        Node obj = Iter.first(dsg1.listGraphNodes(), Node::isBlank) ;
         termAsObject(dsg1, obj) ;
     }
     
@@ -174,13 +172,6 @@ public class TestStreamRDFThrift extends BaseTest {
         fail("Failed to find "+term) ;
     }
     
-    static Filter<Node> filterBlankNode = new Filter<Node>() {
-        @Override
-        public boolean accept(Node item) {
-            return item.isBlank() ;
-        }
-    } ;
-    
     // ** Java8
 //    public static <T> Stream<T> stream(Iterator<? extends T> iterator) {
 //        int characteristics = Spliterator.ORDERED | Spliterator.IMMUTABLE;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/iterator/Action.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Action.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Action.java
index de2630e..d9c14ab 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Action.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Action.java
@@ -18,7 +18,12 @@
 
 package org.apache.jena.atlas.iterator;
 
-public interface Action<T>
+import java.util.function.Consumer;
+
+/**
+ * Prefer {@link Consumer}
+ */
+@Deprecated
+public interface Action<T> extends Consumer<T>
 {
-    public void apply(T item) ;
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/iterator/ActionCount.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/ActionCount.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/ActionCount.java
index 20f837c..1ec0354 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/ActionCount.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/ActionCount.java
@@ -18,13 +18,15 @@
 
 package org.apache.jena.atlas.iterator;
 
+import java.util.function.Consumer;
 
-public class ActionCount<T> implements Action<T>
+
+public class ActionCount<T> implements Consumer<T>
 {
     private long count = 0 ;
     
     @Override
-    public void apply(T item)
+    public void accept(T item)
     { count++ ; }
     
     public long getCount() { return count ; }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/iterator/ActionNothing.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/ActionNothing.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/ActionNothing.java
deleted file mode 100644
index d05b279..0000000
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/ActionNothing.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.iterator;
-
-
-public class ActionNothing<T> implements Action<T>
-{
-    @Override
-    public void apply(T item)   { }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/iterator/Filter.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Filter.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Filter.java
index 5d427c5..689f5bc 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Filter.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Filter.java
@@ -18,5 +18,11 @@
 
 package org.apache.jena.atlas.iterator;
 
+import java.util.function.Predicate;
+
+/**
+ * Prefer {@link Predicate}.
+ */
 @FunctionalInterface
-public interface Filter <T> { boolean accept(T item) ; }
+@Deprecated
+public interface Filter <T> extends Predicate<T>{  }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterDistinctAdjacent.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterDistinctAdjacent.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterDistinctAdjacent.java
index 3beb832..e2bc4b4 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterDistinctAdjacent.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterDistinctAdjacent.java
@@ -18,17 +18,17 @@
 
 package org.apache.jena.atlas.iterator;
 
+import java.util.function.Predicate;
+
 import org.apache.jena.atlas.lib.Lib ;
 
-public class FilterDistinctAdjacent<T> implements Filter<T>
+public class FilterDistinctAdjacent<T> implements Predicate<T>
 {
     private boolean isSet = false ;
     private T last = null ; 
     
-    public FilterDistinctAdjacent() { }
-    
     @Override
-    public boolean accept(T item)
+    public boolean test(T item)
     {
         if ( isSet && Lib.equal(last, item) )
             return false ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterOutNulls.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterOutNulls.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterOutNulls.java
deleted file mode 100644
index 21cd471..0000000
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterOutNulls.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.iterator;
-
-
-public class FilterOutNulls<T> implements Filter<T>
-{
-    public FilterOutNulls() { }
-    
-    @Override
-    public boolean accept(T item)
-    {
-        return item != null ;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterStack.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterStack.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterStack.java
index 479d93f..c4d5e86 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterStack.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterStack.java
@@ -18,24 +18,26 @@
 
 package org.apache.jena.atlas.iterator;
 
+import java.util.function.Predicate;
+
 /**
  * Add a filter to a chain - the original filter is called after this new sub-filter.
  */
-public abstract class FilterStack<T> implements  Filter<T>
+public abstract class FilterStack<T> implements  Predicate<T>
 {
-    private final Filter<T> other ;
+    private final Predicate<T> other ;
     private final boolean subFilterLast ;
     
-    public FilterStack(Filter<T> other) { this(other, false) ; }
+    public FilterStack(Predicate<T> other) { this(other, false) ; }
     
-    public FilterStack(Filter<T> other, boolean callOldFilterFirst)
+    public FilterStack(Predicate<T> other, boolean callOldFilterFirst)
     {
         this.other = other ;
         this.subFilterLast = callOldFilterFirst ;
     }
    
     @Override
-    public final boolean accept(T item)
+    public final boolean test(T item)
     {
         if ( subFilterLast )
             return acceptAdditionaOther(item) ;
@@ -48,7 +50,7 @@ public abstract class FilterStack<T> implements  Filter<T>
         if ( ! acceptAdditional(item) )
             return false ;
         
-        if ( other != null && ! other.accept(item) )
+        if ( other != null && ! other.test(item) )
             return false ;
         
         return true ;
@@ -56,7 +58,7 @@ public abstract class FilterStack<T> implements  Filter<T>
 
     private boolean acceptOtherAdditional(T item)
     {
-        if ( other != null && ! other.accept(item) )
+        if ( other != null && ! other.test(item) )
             return false ;
         return acceptAdditional(item) ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterUnique.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterUnique.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterUnique.java
index 2b2a957..4f21072 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterUnique.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterUnique.java
@@ -20,20 +20,16 @@ package org.apache.jena.atlas.iterator;
 
 import java.util.HashSet ;
 import java.util.Set ;
+import java.util.function.Predicate;
 
-public class FilterUnique<T> implements Filter<T>
+public class FilterUnique<T> implements Predicate<T>
 {
     private Set<T> seen = new HashSet<>() ;
     
-    public FilterUnique() { }
-    
     @Override
-    public boolean accept(T item)
+    public boolean test(T item)
     {
-        if ( seen.contains(item) )
-            return false ;
-        seen.add(item) ;
-        return true ;
+        return seen.add(item) ;
     }
 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java
index 8aec2ea..fc0a534 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java
@@ -20,10 +20,12 @@ package org.apache.jena.atlas.iterator ;
 
 import java.io.PrintStream ;
 import java.util.* ;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.Predicate;
 import java.util.stream.Stream ;
 import java.util.stream.StreamSupport ;
 
-import org.apache.jena.atlas.lib.ActionKeyValue ;
 import org.apache.jena.atlas.lib.Closeable ;
 import org.apache.jena.atlas.lib.Sink ;
 
@@ -182,27 +184,20 @@ public class Iter<T> implements Iterator<T> {
 //        apply(stream.iterator(), action) ;
 //    }
 
-    public static <T> void apply(Iterator<? extends T> stream, Action<T> action) {
+    public static <T> void apply(Iterator<? extends T> stream, Consumer<T> action) {
         for (; stream.hasNext();) {
             T item = stream.next() ;
-            action.apply(item) ;
+            action.accept(item) ;
         }
     }
 
-    // -- Map specific apply. No results - do immediately.
-
-    public static <K, V> void apply(Map<K, V> map, ActionKeyValue<K, V> action) {
-        for (Map.Entry<K, V> entry : map.entrySet())
-            action.apply(entry.getKey(), entry.getValue()) ;
-    }
-
     // ---- Filter
 
 //    public static <T> Iterator<T> filter(Iterable<? extends T> stream, Filter<T> filter) {
 //        return filter(stream.iterator(), filter) ;
 //    }
 
-    public static <T> Iterator<T> filter(final Iterator<? extends T> stream, final Filter<T> filter) {
+    public static <T> Iterator<T> filter(final Iterator<? extends T> stream, final Predicate<T> filter) {
         final Iterator<T> iter = new Iterator<T>() {
 
             boolean finished     = false ;
@@ -219,7 +214,7 @@ public class Iter<T> implements Iterator<T> {
                         break ;
                     }
                     T nextItem = stream.next() ;
-                    if ( filter.accept(nextItem) ) {
+                    if ( filter.test(nextItem) ) {
                         slot = nextItem ;
                         slotOccupied = true ;
                         break ;
@@ -246,29 +241,12 @@ public class Iter<T> implements Iterator<T> {
         return iter ;
     }
 
-    private static class InvertedFilter<T> implements Filter<T> {
-        public static <T> Filter<T> invert(Filter<T> filter) {
-            return new InvertedFilter<>(filter) ;
-        }
-        private Filter<T> baseFilter ;
-
-        private InvertedFilter(Filter<T> baseFilter) {
-            this.baseFilter = baseFilter ;
-        }
-
-        @Override
-        public boolean accept(T item) {
-            return !baseFilter.accept(item) ;
-        }
-    }
-
 //    public static <T> Iterator<T> notFilter(Iterable<? extends T> stream, Filter<T> filter) {
 //        return notFilter(stream.iterator(), filter) ;
 //    }
 
-    public static <T> Iterator<T> notFilter(final Iterator<? extends T> stream, final Filter<T> filter) {
-        Filter<T> flippedFilter = InvertedFilter.invert(filter) ;
-        return filter(stream, flippedFilter) ;
+    public static <T> Iterator<T> notFilter(final Iterator<? extends T> stream, final Predicate<T> filter) {
+        return filter(stream, filter.negate()) ;
     }
 
     // Filter-related
@@ -288,10 +266,10 @@ public class Iter<T> implements Iterator<T> {
      * Return true if every element of stream passes the filter (reads the
      * stream until the first element not passing the filter)
      */
-    public static <T> boolean every(Iterator<? extends T> stream, Filter<T> filter) {
+    public static <T> boolean every(Iterator<? extends T> stream, Predicate<T> filter) {
         for (; stream.hasNext();) {
             T item = stream.next() ;
-            if ( !filter.accept(item) )
+            if ( !filter.test(item) )
                 return false ;
         }
         return true ;
@@ -312,10 +290,10 @@ public class Iter<T> implements Iterator<T> {
      * Return true if one or more elements of stream passes the filter (reads
      * the stream to first element passing the filter)
      */
-    public static <T> boolean some(Iterator<? extends T> stream, Filter<T> filter) {
+    public static <T> boolean some(Iterator<? extends T> stream, Predicate<T> filter) {
         for (; stream.hasNext();) {
             T item = stream.next() ;
-            if ( filter.accept(item) )
+            if ( filter.test(item) )
                 return true ;
         }
         return false ;
@@ -327,7 +305,7 @@ public class Iter<T> implements Iterator<T> {
 //        return map(stream.iterator(), converter) ;
 //    }
 
-    public static <T, R> Iterator<R> map(final Iterator<? extends T> stream, final Transform<T, R> converter) {
+    public static <T, R> Iterator<R> map(final Iterator<? extends T> stream, final Function<T, R> converter) {
         final Iterator<R> iter = new Iterator<R>() {
             @Override
             public boolean hasNext() {
@@ -336,7 +314,7 @@ public class Iter<T> implements Iterator<T> {
 
             @Override
             public R next() {
-                return converter.convert(stream.next()) ;
+                return converter.apply(stream.next()) ;
             }
 
             @Override
@@ -347,68 +325,14 @@ public class Iter<T> implements Iterator<T> {
         return iter ;
     }
 
-    public static <T, R> List<R> map(List<? extends T> list, Transform<T, R> converter) {
+    public static <T, R> List<R> map(List<? extends T> list, Function<T, R> converter) {
         return toList(map(list.iterator(), converter)) ;
     }
 
-    /**
-     * Projects each element of a sequence to an Iterator&lt;R&gt; and flattens
-     * the resulting sequences into one sequence.
-     */
-    public static <T, R> Iterator<R> mapMany(final Iterator<? extends T> stream,
-                                             final Transform<? super T, Iterator<R>> converter) {
-        final Iterator<R> iter = new Iterator<R>() {
-
-            private Iterator<? extends R> it = null ; // Iterator for the
-                                                      // current element of
-                                                      // stream.
-
-            @Override
-            public boolean hasNext() {
-                if ( it != null && it.hasNext() )
-                    // Element of the current iterator.
-                    return true ;
-                // Start or current iterator has ended.
-                it = null ;
-
-                // Need to move to next non-empty iterator of the stream.
-                while (stream.hasNext()) {
-                    it = converter.convert(stream.next()) ;
-                    if ( it.hasNext() )
-                        // There is something.
-                        return true ;
-                }
-                it = null ;
-                // Stream ran out.
-                return false ;
-            }
-
-            @Override
-            public R next() {
-                if ( !hasNext() )
-                    throw new NoSuchElementException() ;
-                // "it" is always left with something to yield if hashNext is
-                // true.
-                return it.next() ;
-            }
-
-            @Override
-            public void remove() {
-                throw new UnsupportedOperationException("mapMany.remove") ;
-            }
-        } ;
-
-        return iter ;
-    }
-
 //    public static <T, R> Iterator<R> mapMany(Iterable<? extends T> stream, Transform<T, Iterator<R>> converter) {
 //        return mapMany(stream.iterator(), converter) ;
 //    }
 
-    public static <T, R> List<R> mapMany(List<? extends T> list, Transform<T, Iterator<R>> converter) {
-        return toList(mapMany(list.iterator(), converter)) ;
-    }
-
 //    /**
 //     * Apply an action to everything in stream, yielding a stream of the same
 //     * items
@@ -421,7 +345,7 @@ public class Iter<T> implements Iterator<T> {
      * Apply an action to everything in stream, yielding a stream of the same
      * items
      */
-    public static <T> Iterator<T> operate(final Iterator<? extends T> stream, final Action<T> action) {
+    public static <T> Iterator<T> operate(final Iterator<? extends T> stream, final Consumer<T> action) {
         final Iterator<T> iter = new Iterator<T>() {
             @Override
             public boolean hasNext() {
@@ -431,7 +355,7 @@ public class Iter<T> implements Iterator<T> {
             @Override
             public T next() {
                 T t = stream.next() ;
-                action.apply(t) ;
+                action.accept(t) ;
                 return t ;
             }
 
@@ -450,13 +374,7 @@ public class Iter<T> implements Iterator<T> {
 
     /** Print an iterator as it gets used - this adds a printing wrapper */
     public static <T> Iterator<T> printWrapper(final PrintStream out, final Iterator<? extends T> stream) {
-        Action<T> action = new Action<T>() {
-            @Override
-            public void apply(T item) {
-                out.println(item) ;
-            }
-        } ;
-        return Iter.operate(stream, action) ;
+        return Iter.operate(stream, out::println) ;
     }
 
 //    /** Join two iteratables
@@ -502,7 +420,7 @@ public class Iter<T> implements Iterator<T> {
 //    }
 
     public static <T> Iterator<T> removeNulls(Iterator<T> iter) {
-        return filter(iter, new FilterOutNulls<T>()) ;
+        return filter(iter, x -> x != null) ;
     }
 
     /** Take the first N elements of an iterator - stop early if too few */
@@ -667,14 +585,7 @@ public class Iter<T> implements Iterator<T> {
      */
     public static <T> Iterator<T> debug(final PrintStream out, Iterator<T> stream) {
         try { 
-            Transform<T, T> x = new Transform<T, T>() {
-                @Override
-                public T convert(T item) {
-                    out.println(item) ;
-                    return item ;
-                }
-            } ;
-            return map(stream, x) ;
+            return map(stream, item -> {out.println(item); return item;}) ;
         } finally { out.flush() ; }
     }
 
@@ -685,14 +596,7 @@ public class Iter<T> implements Iterator<T> {
 
     /** Print an iterator (destructive) */
     public static <T> void print(final PrintStream out, Iterator<T> stream) {
-        Action<T> x = new Action<T>() {
-            @Override
-            public void apply(T item) {
-                out.println(item) ;
-            }
-
-        } ;
-        apply(stream, x) ;
+        apply(stream, out::println) ;
     }
 
 //    /** Print an iterable */
@@ -782,58 +686,57 @@ public class Iter<T> implements Iterator<T> {
         return Iter.iter(iter1).append(Iter.iter(iter2)) ;
     }
 
-    public static <T> T first(Iterator<T> iter, Filter<T> filter) {
-        for (int idx = 0; iter.hasNext(); idx++) {
+    public static <T> T first(Iterator<T> iter, Predicate<T> filter) {
+        while (iter.hasNext()) {
             T t = iter.next() ;
-            if ( filter.accept(t) )
+            if ( filter.test(t) )
                 return t ;
-            // return idx ;
         }
         return null ;
     }
 
-    public static <T> T first(Collection<T> collection, Filter<T> filter) {
-        return first(collection.iterator(), filter) ;
+    public static <T> T first(Collection<T> collection, Predicate<T> filter) {
+        return collection.stream().filter(filter).findFirst().orElse(null);
     }
 
-    public static <T> int firstIndex(Iterator<T> iter, Filter<T> filter) {
+    public static <T> int firstIndex(Iterator<T> iter, Predicate<T> filter) {
         for (int idx = 0; iter.hasNext(); idx++) {
             T t = iter.next() ;
-            if ( filter.accept(t) )
+            if ( filter.test(t) )
                 return idx ;
         }
         return -1 ;
     }
 
-    public static <T> int firstIndex(Collection<T> collection, Filter<T> filter) {
+    public static <T> int firstIndex(Collection<T> collection, Predicate<T> filter) {
         return firstIndex(collection.iterator(), filter) ;
     }
 
-    public static <T> T last(Iterator<T> iter, Filter<T> filter) {
+    public static <T> T last(Iterator<T> iter, Predicate<T> filter) {
         T thing = null ;
-        for (int idx = 0; iter.hasNext(); idx++) {
+        while (iter.hasNext()) {
             T t = iter.next() ;
-            if ( filter.accept(t) )
+            if ( filter.test(t) )
                 thing = t ;
         }
         return thing ;
     }
 
-    public static <T> T last(Collection<T> collection, Filter<T> filter) {
+    public static <T> T last(Collection<T> collection, Predicate<T> filter) {
         return last(collection.iterator(), filter) ;
     }
 
-    public static <T> int lastIndex(Iterator<T> iter, Filter<T> filter) {
+    public static <T> int lastIndex(Iterator<T> iter, Predicate<T> filter) {
         int location = -1 ;
         for (int idx = 0; iter.hasNext(); idx++) {
             T t = iter.next() ;
-            if ( filter.accept(t) )
+            if ( filter.test(t) )
                 location = idx ;
         }
         return location ;
     }
 
-    public static <T> int lastIndex(Collection<T> collection, Filter<T> filter) {
+    public static <T> int lastIndex(Collection<T> collection, Predicate<T> filter) {
         return lastIndex(collection.iterator(), filter) ;
     }
 
@@ -858,39 +761,39 @@ public class Iter<T> implements Iterator<T> {
         sendToSink(iterator, sink) ;
     }
 
-    public T first(Filter<T> filter) {
+    public T first(Predicate<T> filter) {
         return first(iterator, filter) ;
     }
 
-    public int firstIndex(Filter<T> filter) {
+    public int firstIndex(Predicate<T> filter) {
         return firstIndex(iterator, filter) ;
     }
 
-    public T last(Filter<T> filter) {
+    public T last(Predicate<T> filter) {
         return last(iterator, filter) ;
     }
 
-    public int lastIndex(Filter<T> filter) {
+    public int lastIndex(Predicate<T> filter) {
         return lastIndex(iterator, filter) ;
     }
 
-    public Iter<T> filter(Filter<T> filter) {
+    public Iter<T> filter(Predicate<T> filter) {
         return iter(filter(iterator, filter)) ;
     }
 
-    public boolean every(Filter<T> filter) {
+    public boolean every(Predicate<T> filter) {
         return every(iterator, filter) ;
     }
 
-    public boolean some(Filter<T> filter) {
+    public boolean some(Predicate<T> filter) {
         return some(iterator, filter) ;
     }
 
     public Iter<T> removeNulls() {
-        return filter(new FilterOutNulls<T>()) ;
+        return filter(x -> x != null) ;
     }
 
-    public <R> Iter<R> map(Transform<T, R> converter) {
+    public <R> Iter<R> map(Function<T, R> converter) {
         return iter(map(iterator, converter)) ;
     }
 
@@ -898,7 +801,7 @@ public class Iter<T> implements Iterator<T> {
      * Apply an action to everything in the stream, yielding a stream of the
      * same items
      */
-    public Iter<T> operate(Action<T> action) {
+    public Iter<T> operate(Consumer<T> action) {
         return iter(operate(iterator, action)) ;
     }
 
@@ -906,7 +809,7 @@ public class Iter<T> implements Iterator<T> {
         return reduce(iterator, aggregator) ;
     }
 
-    public void apply(Action<T> action) {
+    public void apply(Consumer<T> action) {
         apply(iterator, action) ;
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java
index ee45935..a8cb1b2 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java
@@ -18,10 +18,16 @@
 
 package org.apache.jena.atlas.iterator;
 
+import java.util.Arrays;
 import java.util.Iterator ;
 import java.util.NoSuchElementException ;
+import java.util.Spliterator;
 
 /** Iterator over a Java base array */
+/**
+ * Prefer {@link Arrays#spliterator(Object[])} or {@link Arrays#stream(Object[])}
+ */
+@Deprecated
 public final class IteratorArray<T> implements Iterator<T>
 {
     /** Iterator over all the array elements */ 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/iterator/MapUtils.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/MapUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/MapUtils.java
deleted file mode 100644
index 3c6492e..0000000
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/MapUtils.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.iterator;
-
-import java.util.Map ;
-
-import org.apache.jena.atlas.lib.ActionKeyValue ;
-
-
-
-public class MapUtils
-{
-     // Map specific operations
-    
-    public static <K, V> void apply(Map<K, V> map, ActionKeyValue<K, V> action)
-    {
-        for ( Map.Entry<K,V> entry : map.entrySet() )
-            action.apply(entry.getKey(), entry.getValue()) ;
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/iterator/Transform.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Transform.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Transform.java
index d5d6a0a..67fc3af 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Transform.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Transform.java
@@ -18,4 +18,10 @@
 
 package org.apache.jena.atlas.iterator;
 
-public interface Transform <T, R> { R convert(T item) ; }
+import java.util.function.Function;
+
+/**
+ * Prefer {@link Function}.
+ */
+@Deprecated
+public interface Transform <T, R> extends Function<T,R>{ }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/lib/ActionKeyValue.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/ActionKeyValue.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/ActionKeyValue.java
index 894107a..12dadab 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/ActionKeyValue.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/ActionKeyValue.java
@@ -18,7 +18,12 @@
 
 package org.apache.jena.atlas.lib;
 
-public interface ActionKeyValue<KeyType, ValueType>
+import java.util.function.BiConsumer;
+
+/**
+ * Prefer {@link BiConsumer<KeyType, ValueType>}.
+ */
+@Deprecated
+public interface ActionKeyValue<KeyType, ValueType> extends BiConsumer<KeyType, ValueType>
 {
-    public void apply(KeyType key, ValueType value) ;
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/lib/Cache.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Cache.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Cache.java
index d7fa711..8ebf2d7 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Cache.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Cache.java
@@ -20,6 +20,7 @@ package org.apache.jena.atlas.lib;
 
 import java.util.Iterator ;
 import java.util.concurrent.Callable ;
+import java.util.function.BiConsumer;
 
 /** A cache */
 public interface Cache<Key, Value>
@@ -52,5 +53,5 @@ public interface Cache<Key, Value>
     public long size() ;
     
     /** Register a callback - called when an object is dropped from the cache (optional operation) */ 
-    public void setDropHandler(ActionKeyValue<Key,Value> dropHandler) ;
+    public void setDropHandler(BiConsumer<Key,Value> dropHandler) ;
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/lib/CacheSet.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/CacheSet.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/CacheSet.java
index f5c3d22..0f709b0 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/CacheSet.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/CacheSet.java
@@ -18,7 +18,7 @@
 
 package org.apache.jena.atlas.lib;
 
-import org.apache.jena.atlas.iterator.Action ;
+import java.util.function.Consumer;
 
 public interface CacheSet<T>
 {
@@ -30,5 +30,5 @@ public interface CacheSet<T>
     public void remove(T obj) ;
     public long size() ;
     /** Register a callback - called when an object is dropped from the cache (optional operation) */ 
-    public void setDropHandler(Action<T> dropHandler) ;
+    public void setDropHandler(Consumer<T> dropHandler) ;
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/lib/Closeable.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Closeable.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Closeable.java
index 2b6002a..e2f6dfd 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Closeable.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Closeable.java
@@ -21,7 +21,7 @@ package org.apache.jena.atlas.lib;
 /** Close this object.
  *  This form does not allow Exceptions (it does allow RuntimeExceptions).  
  */
-public interface Closeable
+public interface Closeable extends java.io.Closeable
 {
     public void close() ;
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java
index 8bae6a4..759e543 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java
@@ -19,34 +19,16 @@
 package org.apache.jena.atlas.lib;
 
 import java.util.Collection ;
-import java.util.Iterator ;
+import java.util.Objects;
 
 public class CollectionUtils
 {
     static public <T> void removeNulls(Collection<T> list)
-    {
-        for ( Iterator<T> iter = list.iterator() ; iter.hasNext() ; )
-        {
-            T e = iter.next() ;
-            if ( e == null )
-                iter.remove() ;
-        }
+    {	
+    		list.removeIf(Objects::isNull);
     }
     
     static public <T> boolean disjoint(Collection<T> c1, Collection<T> c2)
     {
-        if ( c2.size() < c1.size() )
-        {
-            Collection<T> t = c1 ;
-            c1 = c2 ;
-            c2 = t ;
-        }
-        
-        for ( T t : c1 )
-        {
-            if ( c2.contains(t) )
-                return false ;
-        }
-        return true ;
-    }
+		return c1.stream().noneMatch(c2::contains);
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java
index 6c9c442..a866d59 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java
@@ -24,6 +24,7 @@ import java.util.zip.CRC32 ;
 import java.util.zip.Checksum ;
 
 import org.apache.jena.atlas.logging.Log ;
+import org.apache.jena.ext.com.google.common.base.Objects;
 
 public class Lib
 {
@@ -35,15 +36,13 @@ public class Lib
             ((Sync)object).sync() ;
     }
     
-    /** Return true if obj1 and obj are both null or are .equals, else return false */
+    /** Return true if obj1 and obj are both null or are .equals, else return false 
+     * Prefer {@link Objects#equal(Object, Object)}
+     */
+    @Deprecated
     public static final <T> boolean equal(T obj1, T obj2)
     {
-        if ( obj1 == null )
-            return obj2 == null ;
-        // obj1 != null
-        if ( obj2 == null )
-            return false ;
-        return obj1.equals(obj2) ;
+    		return Objects.equal(obj1, obj2);
     }
     
     /** Return true if obj1 and obj are both null or are .equals, else return false */

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
index 78d591a..8315236 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
@@ -20,10 +20,9 @@ package org.apache.jena.atlas.lib;
 
 import java.util.ArrayList ;
 import java.util.List ;
-
+import java.util.function.Consumer;
 
 import org.apache.jena.atlas.io.IndentedWriter ;
-import org.apache.jena.atlas.iterator.Action ;
 import org.apache.jena.atlas.iterator.FilterUnique ;
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.logging.Log ;
@@ -101,10 +100,10 @@ public class ListUtils
     
     public static <T> void print(final IndentedWriter out, List<T> list, final String sep)
     {
-        Action<T> output = new Action<T>() {
+        Consumer<T> output = new Consumer<T>() {
             boolean first = true ;
             @Override
-            public void apply(T item)
+            public void accept(T item)
             {
                 if ( ! first ) out.print(sep) ;
                 out.print(item.toString()) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/lib/MapUtils.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/MapUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/MapUtils.java
deleted file mode 100644
index 7999a25..0000000
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/MapUtils.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import java.util.Map ;
-
-/** Map specific functions */
-public class MapUtils
-{
-    private MapUtils() {}
-    
-    public static <K, V> void apply(Map<K, V> map, ActionKeyValue<K, V> action)
-    {
-        for ( Map.Entry<K,V> entry : map.entrySet() )
-            action.apply(entry.getKey(), entry.getValue()) ;
-    }
-    
-    public static <T> void increment(Map<T, Integer> countMap, T key)
-    { increment(countMap, key, 1) ; }
-    
-    public static <T> void increment(Map<T, Integer> countMap, T key, int incr)
-    {
-        Integer integer = countMap.get(key) ;
-        if ( integer == null ) 
-            countMap.put(key, incr) ;
-        else
-            countMap.put(key, integer+incr) ;
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/lib/Problem.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Problem.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Problem.java
deleted file mode 100644
index d571fe7..0000000
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Problem.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-public class Problem extends RuntimeException
-{
-    public Problem(String msg) { super(msg) ; }
-    public Problem(String msg, Throwable th) { super(msg, th) ; }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/lib/SetUtils.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/SetUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/SetUtils.java
index f4e561d..5cc65a9 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/SetUtils.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/SetUtils.java
@@ -38,12 +38,7 @@ public class SetUtils
 
     public static <T> boolean intersectionP(Set<? extends T> s1, Set<? extends T> s2)
     {
-        for( T elt : s1 )
-        {
-            if ( s2.contains(elt) ) 
-                return true ;
-        }
-        return false ;
+    		return s1.stream().anyMatch(s2::contains);
     }
 
     public static <T> Set<T> union(Set<? extends T> s1, Set<? extends T> s2)
@@ -61,24 +56,5 @@ public class SetUtils
         s3.removeAll(s2) ;
         return s3 ;
     }
-    
-    /** Return true if s1 and s2 are disjoint */
-    public static <T> boolean isDisjoint(Set<? extends T> s1, Set<? extends T> s2)
-    {
-        Set<? extends T> x = s1 ;
-        Set<? extends T> y = s2 ;
-        if ( s1.size() < s2.size() )
-        {
-            x = s2 ;
-            y = s1 ;
-        }        
-        
-        for ( T item : x )
-        {
-            if ( y.contains(item)) 
-                return false ;
-        }
-        return true ;
-    }
 }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/lib/Tuple.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Tuple.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Tuple.java
index ae944a7..35a97a5 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Tuple.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Tuple.java
@@ -21,10 +21,9 @@ package org.apache.jena.atlas.lib ;
 import java.util.Arrays ;
 import java.util.Iterator ;
 import java.util.List ;
+import java.util.function.Function;
 
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.IteratorArray ;
-import org.apache.jena.atlas.iterator.Transform ;
 
 /** Tuple class - tuples are immutable and must be created initialized */
 public class Tuple<T> implements Iterable<T> {
@@ -48,22 +47,13 @@ public class Tuple<T> implements Iterable<T> {
 
     // TupleLib??
     public static <T> Iterator<T> project(final int slot, Iterator<Tuple<T>> iter) {
-        Transform<Tuple<T>, T> projection = new Transform<Tuple<T>, T>() {
-            @Override
-            public T convert(Tuple<T> tuple) {
-                return tuple.get(slot) ;
-            }
-        } ;
-        return Iter.map(iter, projection) ;
+        return Iter.map(iter, t -> t.get(slot)) ;
     }
 
     public static <T> Iterator<Tuple<T>> prefix(final int prefixLength, Iterator<Tuple<T>> iter) {
-        Transform<Tuple<T>, Tuple<T>> sub = new Transform<Tuple<T>, Tuple<T>>() {
-            @Override
-            public Tuple<T> convert(Tuple<T> tuple) {
-                T[] x = ArrayUtils.copy(tuple.tuple, 0, prefixLength) ;
-                return Tuple.create(x) ;
-            }
+        Function<Tuple<T>, Tuple<T>> sub = t -> {
+                T[] x = ArrayUtils.copy(t.tuple, 0, prefixLength) ;
+                return Tuple.create(x) ;    
         } ;
         return Iter.map(iter, sub) ;
     }
@@ -100,7 +90,7 @@ public class Tuple<T> implements Iterable<T> {
 
     @Override
     public Iterator<T> iterator() {
-        return IteratorArray.create(tuple) ;
+        return Arrays.stream(tuple).iterator() ;
     }
 
     /** Return a tuple with the column mapping applied */

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache0.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache0.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache0.java
index 00befa0..5b8b5cc 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache0.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache0.java
@@ -20,9 +20,9 @@ package org.apache.jena.atlas.lib.cache ;
 
 import java.util.Iterator ;
 import java.util.concurrent.Callable ;
+import java.util.function.BiConsumer;
 
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.lib.ActionKeyValue ;
 import org.apache.jena.atlas.lib.Cache ;
 
 /** A cache that keeps nothing */
@@ -67,6 +67,6 @@ public final class Cache0<K, V> implements Cache<K, V> {
     }
 
     @Override
-    public void setDropHandler(ActionKeyValue<K, V> dropHandler) {}
+    public void setDropHandler(BiConsumer<K, V> dropHandler) {}
 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache1.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache1.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache1.java
index 38ab5c6..ffa6e0a 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache1.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache1.java
@@ -20,16 +20,16 @@ package org.apache.jena.atlas.lib.cache;
 
 import java.util.Iterator ;
 import java.util.concurrent.Callable ;
+import java.util.function.BiConsumer;
 
 import org.apache.jena.atlas.iterator.SingletonIterator ;
-import org.apache.jena.atlas.lib.ActionKeyValue ;
 import org.apache.jena.atlas.lib.Cache ;
 import org.apache.jena.atlas.lib.Lib ;
 
 /** A one-slot cache.*/
 public class Cache1<K, V> implements Cache<K,V>
 {
-    private ActionKeyValue<K, V> dropHandler = null ;
+    private BiConsumer<K, V> dropHandler = null ;
     private K cacheKey ;
     private V cacheValue ;
     
@@ -107,7 +107,7 @@ public class Cache1<K, V> implements Cache<K,V>
     }
 
     @Override
-    public void setDropHandler(ActionKeyValue<K, V> dropHandler)
+    public void setDropHandler(BiConsumer<K, V> dropHandler)
     {
         this.dropHandler = dropHandler ;
     }
@@ -115,7 +115,7 @@ public class Cache1<K, V> implements Cache<K,V>
     private void notifyDrop(K key, V thing)
     {
         if ( dropHandler != null && key != null )
-            dropHandler.apply(key, thing) ;
+            dropHandler.accept(key, thing) ;
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheGuava.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheGuava.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheGuava.java
index fd5959c..a25faa0 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheGuava.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheGuava.java
@@ -21,11 +21,10 @@ package org.apache.jena.atlas.lib.cache;
 import java.util.Iterator ;
 import java.util.concurrent.Callable ;
 import java.util.concurrent.ExecutionException ;
+import java.util.function.BiConsumer;
 
-import org.apache.jena.atlas.lib.ActionKeyValue ;
 import org.apache.jena.atlas.lib.Cache ;
 import org.apache.jena.atlas.logging.Log ;
-
 import org.apache.jena.ext.com.google.common.cache.CacheBuilder ;
 import org.apache.jena.ext.com.google.common.cache.RemovalListener ;
 import org.apache.jena.ext.com.google.common.cache.RemovalNotification ;
@@ -34,7 +33,7 @@ import org.apache.jena.ext.com.google.common.cache.RemovalNotification ;
 final
 public class CacheGuava<K,V> implements Cache<K, V>
 {
-    private ActionKeyValue<K, V> dropHandler = null ;
+    private BiConsumer<K, V> dropHandler = null ;
     /*private*/ org.apache.jena.ext.com.google.common.cache.Cache<K,V> cache ;
 
     public CacheGuava(int size)
@@ -43,7 +42,7 @@ public class CacheGuava<K,V> implements Cache<K, V>
             @Override
             public void onRemoval(RemovalNotification<K, V> notification) {
                 if ( dropHandler != null )
-                    dropHandler.apply(notification.getKey(),
+                    dropHandler.accept(notification.getKey(),
                                       notification.getValue()) ;
             }
         } ;
@@ -112,7 +111,7 @@ public class CacheGuava<K,V> implements Cache<K, V>
     }
 
     @Override
-    public void setDropHandler(ActionKeyValue<K, V> dropHandler) {
+    public void setDropHandler(BiConsumer<K, V> dropHandler) {
         this.dropHandler = dropHandler ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetImpl.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetImpl.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetImpl.java
index b3bf048..8a24d26 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetImpl.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetImpl.java
@@ -19,9 +19,9 @@
 package org.apache.jena.atlas.lib.cache ;
 
 import java.util.Iterator ;
+import java.util.function.BiConsumer;
+import java.util.function.Consumer;
 
-import org.apache.jena.atlas.iterator.Action ;
-import org.apache.jena.atlas.lib.ActionKeyValue ;
 import org.apache.jena.atlas.lib.Cache ;
 import org.apache.jena.atlas.lib.CacheSet ;
 
@@ -37,21 +37,21 @@ public class CacheSetImpl<T> implements CacheSet<T> {
 
     /** Callback for entries when dropped from the cache */
     @Override
-    public void setDropHandler(Action<T> dropHandler) {
+    public void setDropHandler(Consumer<T> dropHandler) {
         cacheMap.setDropHandler(new Wrapper<T>(dropHandler)) ;
     }
     
     // From map action to set action.
-    static class Wrapper<T> implements ActionKeyValue<T, Object> {
-        Action<T> dropHandler ;
+    static class Wrapper<T> implements BiConsumer<T, Object> {
+        Consumer<T> dropHandler ;
 
-        public Wrapper(Action<T> dropHandler) {
+        public Wrapper(Consumer<T> dropHandler) {
             this.dropHandler = dropHandler ;
         }
 
         @Override
-        public void apply(T key, Object value) {
-            dropHandler.apply(key) ;
+        public void accept(T key, Object value) {
+            dropHandler.accept(key) ;
         }
 
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetSync.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetSync.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetSync.java
index fc3a3bd..8fdda11 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetSync.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetSync.java
@@ -18,7 +18,8 @@
 
 package org.apache.jena.atlas.lib.cache ;
 
-import org.apache.jena.atlas.iterator.Action ;
+import java.util.function.Consumer;
+
 import org.apache.jena.atlas.lib.CacheSet ;
 
 public class CacheSetSync<T> implements CacheSet<T> {
@@ -59,7 +60,7 @@ public class CacheSetSync<T> implements CacheSet<T> {
     }
 
     @Override
-    synchronized public void setDropHandler(Action<T> dropHandler) {
+    synchronized public void setDropHandler(Consumer<T> dropHandler) {
         cache.setDropHandler(dropHandler) ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetWrapper.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetWrapper.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetWrapper.java
index c11ffb0..3a36c97 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetWrapper.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetWrapper.java
@@ -18,7 +18,8 @@
 
 package org.apache.jena.atlas.lib.cache ;
 
-import org.apache.jena.atlas.iterator.Action ;
+import java.util.function.Consumer;
+
 import org.apache.jena.atlas.lib.CacheSet ;
 
 public class CacheSetWrapper<T> implements CacheSet<T> {
@@ -59,7 +60,7 @@ public class CacheSetWrapper<T> implements CacheSet<T> {
     }
 
     @Override
-    public void setDropHandler(Action<T> dropHandler) {
+    public void setDropHandler(Consumer<T> dropHandler) {
         cache.setDropHandler(dropHandler) ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSimple.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSimple.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSimple.java
index a33d8e2..9f889dd 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSimple.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSimple.java
@@ -18,13 +18,14 @@
 
 package org.apache.jena.atlas.lib.cache;
 
+import static java.util.Arrays.asList;
+
 import java.util.Arrays ;
 import java.util.Iterator ;
 import java.util.concurrent.Callable ;
+import java.util.function.BiConsumer;
 
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.IteratorArray ;
-import org.apache.jena.atlas.lib.ActionKeyValue ;
 import org.apache.jena.atlas.lib.Cache ;
 
 
@@ -40,7 +41,7 @@ public class CacheSimple<K,V> implements Cache<K,V>
     private final K[] keys ;
     private final int size ;
     private int currentSize = 0 ;
-    private ActionKeyValue<K,V> dropHandler = null ;
+    private BiConsumer<K,V> dropHandler = null ;
     
     public CacheSimple(int size)
     { 
@@ -113,7 +114,7 @@ public class CacheSimple<K,V> implements Cache<K,V>
             // Drop the old K->V
             old = values[x] ;
             if ( dropHandler != null )
-                dropHandler.apply(keys[x], old) ;
+                dropHandler.accept(keys[x], old) ;
             currentSize-- ;
         }
         
@@ -142,7 +143,7 @@ public class CacheSimple<K,V> implements Cache<K,V>
     @Override
     public Iterator<K> keys()
     {
-        Iterator<K> iter = IteratorArray.create(keys) ;
+        Iterator<K> iter = asList(keys).iterator() ;
         return Iter.removeNulls(iter) ;
     }
 
@@ -154,7 +155,7 @@ public class CacheSimple<K,V> implements Cache<K,V>
 
     /** Callback for entries when dropped from the cache */
     @Override
-    public void setDropHandler(ActionKeyValue<K,V> dropHandler)
+    public void setDropHandler(BiConsumer<K,V> dropHandler)
     {
         this.dropHandler = dropHandler ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheWrapper.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheWrapper.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheWrapper.java
index e655749..ef27228 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheWrapper.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheWrapper.java
@@ -19,8 +19,8 @@
 package org.apache.jena.atlas.lib.cache;
 import java.util.Iterator ;
 import java.util.concurrent.Callable ;
+import java.util.function.BiConsumer;
 
-import org.apache.jena.atlas.lib.ActionKeyValue ;
 import org.apache.jena.atlas.lib.Cache ;
 
 
@@ -56,7 +56,7 @@ public class CacheWrapper<Key,T> implements Cache<Key,T>
     public void remove(Key key)                     { cache.remove(key) ; }
 
     @Override
-    public void setDropHandler(ActionKeyValue<Key, T> dropHandler)
+    public void setDropHandler(BiConsumer<Key, T> dropHandler)
     { cache.setDropHandler(dropHandler) ; }
 
     @Override

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/main/java/org/apache/jena/base/Closeable.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/base/Closeable.java b/jena-base/src/main/java/org/apache/jena/base/Closeable.java
deleted file mode 100644
index 59a06aa..0000000
--- a/jena-base/src/main/java/org/apache/jena/base/Closeable.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.base;
-
-/** Close this object.
- *  This form does not allow Exceptions (it does allow RuntimeExceptions)  
- */
-public interface Closeable {
-    public void close() ; 
-}
-

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIter.java
----------------------------------------------------------------------
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIter.java b/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIter.java
index 56cf8a9..11550a1 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIter.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIter.java
@@ -26,6 +26,7 @@ import java.util.ArrayList ;
 import java.util.Arrays ;
 import java.util.Iterator ;
 import java.util.List ;
+import java.util.function.Predicate;
 
 import org.junit.Test ;
 
@@ -225,97 +226,11 @@ public class TestIter
     @Test
     public void map_01()
     {
-        Iterator<String> it = Iter.map(data2.iterator(), new Transform<String,String>()
-        {
-            @Override
-            public String convert(String item)
-            {
-                return item + item;
-            }
-        });
+        Iterator<String> it = Iter.map(data2.iterator(), item -> item + item);
         test(it, "xx", "yy", "zz");
     }
-    
-    @Test
-    public void mapMany_01()
-    {
-        Iterator<String> it = Iter.mapMany(data2.iterator(), new Transform<String,Iterator<String>>()
-        {
-            @Override
-            public Iterator<String> convert(String item)
-            {
-                List<String> l = new ArrayList<>(2);
-                l.add(item);
-                l.add(item + item);
-                return l.iterator();
-            }
-        });
-        
-        test(it, "x", "xx", "y", "yy", "z", "zz");
-    }
-    
-    @Test
-    public void mapMany_02()
-    {
-        Iterator<String> it = Iter.mapMany(data2.iterator(), new Transform<String,Iterator<String>>()
-        {
-            @Override
-            public Iterator<String> convert(String item)
-            {
-                return Iter.nullIterator() ;
-            }
-        });
-        
-        assertFalse(it.hasNext()) ;
-    }
-    
-    @Test
-    public void mapMany_03()
-    {
-        Iterator<String> it = Iter.mapMany(data2.iterator(), new Transform<String,Iterator<String>>()
-        {
-            int count = 0 ;
-            @Override
-            public Iterator<String> convert(String item)
-            {
-                count++ ;
-                if ( count%2 == 1 )
-                    return Iter.singleton(item) ;
-                else
-                    return Iter.nullIterator() ;
-            }
-        });
-        
-        test(it, "x", "z");
-    }
-
-    @Test
-    public void mapMany_04()
-    {
-        Iterator<String> it = Iter.mapMany(data2.iterator(), new Transform<String,Iterator<String>>()
-        {
-            int count = 0 ;
-            @Override
-            public Iterator<String> convert(String item)
-            {
-                count++ ;
-                if ( count%2 == 0 )
-                    return Iter.singleton(item) ;
-                else
-                    return Iter.nullIterator() ;
-            }
-        });
-        
-        test(it, "y");
-    }
-
 	
-    Filter<String> filter = new Filter<String>() {
-        @Override
-        public boolean accept(String item)
-        {
-            return item.length() == 1 ;
-        }} ;
+    Predicate<String> filter = item -> item.length() == 1;
    
     @Test
     public void first_01()
@@ -441,14 +356,7 @@ public class TestIter
     @Test
     public void filter_02()
     {
-        Iterator<String> it = Iter.filter(data3.iterator(), new Filter<String>()
-        {
-            @Override
-            public boolean accept(String item)
-            {
-                return "x".equals(item) || "z".equals(item) ;
-            }
-        });
+        Iterator<String> it = Iter.filter(data3.iterator(), item -> "x".equals(item) || "z".equals(item));
         
         test(it, "x", "z");
     }
@@ -456,14 +364,7 @@ public class TestIter
     @Test
     public void filter_03()
     {
-        Iterator<String> it = Iter.filter(data3.iterator(), new Filter<String>()
-        {
-            @Override
-            public boolean accept(String item)
-            {
-                return (null == item) || "x".equals(item) ;
-            }
-        });
+        Iterator<String> it = Iter.filter(data3.iterator(), item -> null == item || "x".equals(item));
         
         test(it, null, "x", null, null, null, null);
     }
@@ -496,23 +397,8 @@ public class TestIter
         test(iter, "a", "b", "a") ;
     }
     
-    private static class AlwaysAcceptFilter implements Filter<Object> {
-        @Override
-        public boolean accept(Object o) {
-            return true;
-        }
-    }
-
-    private static class NeverAcceptFilter implements Filter<Object> {
-        @Override
-        public boolean accept(Object o) {
-            return false;
-        }
-    }
-
-    
     private static class AlwaysAcceptFilterStack extends FilterStack<Object> {
-        public AlwaysAcceptFilterStack(Filter<Object> f) {
+        public AlwaysAcceptFilterStack(Predicate<Object> f) {
             super(f);
         }
 
@@ -524,16 +410,16 @@ public class TestIter
 
     @Test
     public void testFilterStack_01() {
-        Filter<Object> filter = new AlwaysAcceptFilter();
+        Predicate<Object> filter = x -> true;
         FilterStack<Object> filterStack = new AlwaysAcceptFilterStack(filter);
-        assertTrue(filterStack.accept(new Object()));
+        assertTrue(filterStack.test(new Object()));
     }
     
     @Test
     public void testFilterStack_02() {
-        Filter<Object> filter = new NeverAcceptFilter();
+        Predicate<Object> filter = x -> false;
         FilterStack<Object> filterStack = new AlwaysAcceptFilterStack(filter);
-        assertFalse(filterStack.accept(new Object()));
+        assertFalse(filterStack.test(new Object()));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
----------------------------------------------------------------------
diff --git a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
index 7ac9351..84bb858 100644
--- a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
+++ b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
@@ -24,10 +24,8 @@ import static org.apache.jena.fuseki.HttpNames.paramNamedGraphURI ;
 import java.util.Arrays ;
 import java.util.Collections ;
 import java.util.List ;
-
 import javax.servlet.http.HttpServletRequest ;
 
-import org.apache.jena.atlas.iterator.Filter ;
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.query.Query ;
@@ -76,17 +74,9 @@ public  abstract class SPARQL_Protocol extends SPARQL_ServletBase
 
     private static List<String> removeEmptyValues(List<String> list)
     {
-        return Iter.iter(list).filter(acceptNonEmpty).toList() ;
+        return Iter.iter(list).filter(item -> item != null && item.length() != 0).toList() ;
     }
     
-    private static Filter<String> acceptNonEmpty = new Filter<String>(){ 
-        @Override
-        public boolean accept(String item)
-        {
-            return item != null && item.length() != 0 ;
-        }
-    } ;
-    
     protected static int countParamOccurences(HttpServletRequest request, String param)
     {
         String[] x = request.getParameterValues(param) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
index 4f5d5c9..2a19d03 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
@@ -24,10 +24,10 @@ import static org.apache.jena.riot.web.HttpNames.paramNamedGraphURI ;
 import java.util.Arrays ;
 import java.util.Collections ;
 import java.util.List ;
+import java.util.function.Predicate;
 
 import javax.servlet.http.HttpServletRequest ;
 
-import org.apache.jena.atlas.iterator.Filter ;
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.query.Query ;
@@ -79,13 +79,7 @@ public  abstract class SPARQL_Protocol extends ActionSPARQL
         return Iter.iter(list).filter(acceptNonEmpty).toList() ;
     }
     
-    private static Filter<String> acceptNonEmpty = new Filter<String>(){ 
-        @Override
-        public boolean accept(String item)
-        {
-            return item != null && item.length() != 0 ;
-        }
-    } ;
+    private static Predicate<String> acceptNonEmpty = item -> item != null && item.length() != 0;
     
     protected static int countParamOccurences(HttpServletRequest request, String param)
     {

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java b/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java
index 6206f62..6f262a5 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java
@@ -18,6 +18,7 @@
 package org.apache.jena.permissions.query.rewriter;
 
 import java.util.List;
+import java.util.function.Function;
 
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -30,7 +31,6 @@ import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.expr.* ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 
 public class SecuredFunction extends ExprFunctionN
 {
@@ -103,7 +103,7 @@ public class SecuredFunction extends ExprFunctionN
 	}
 
 	@Override
-	public Expr applyNodeTransform( NodeTransform transform )
+	public Expr applyNodeTransform( Function<Node, Node> transform )
 	{
 		return this;
 	}

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/QuadBlock.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/QuadBlock.java b/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/QuadBlock.java
index 78aae0b..fdc7339 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/QuadBlock.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/QuadBlock.java
@@ -22,10 +22,10 @@ import static org.apache.jena.atlas.iterator.Iter.apply ;
 
 import java.util.ArrayList ;
 import java.util.List ;
+import java.util.function.Consumer;
 
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.atlas.io.PrintUtils ;
-import org.apache.jena.atlas.iterator.Action ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.shared.PrefixMapping ;
 import org.apache.jena.sparql.algebra.op.OpQuadPattern ;
@@ -167,10 +167,10 @@ public class QuadBlock extends ArrayList<Quad> implements Iterable<Quad>, PrintS
     { 
         final String sep = "\n" ;
 
-        final Action<Quad> strAction = new Action<Quad>() {
+        final Consumer<Quad> strAction = new Consumer<Quad>() {
             boolean first = true ; 
             @Override
-            public void apply(Quad quad)
+            public void accept(Quad quad)
             {
                 if ( ! first )
                     out.print(sep) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/SDB_QC.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/SDB_QC.java b/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/SDB_QC.java
index 9ece0c9..c35cf6c 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/SDB_QC.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/SDB_QC.java
@@ -23,10 +23,8 @@ import static org.apache.jena.atlas.iterator.Iter.* ;
 import java.sql.SQLException;
 import java.util.List;
 import java.util.Set;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.jena.atlas.iterator.Transform;
 import org.apache.jena.query.Query ;
 import org.apache.jena.query.SortCondition ;
 import org.apache.jena.sdb.SDB ;
@@ -102,7 +100,7 @@ public class SDB_QC
         // If part query, need all variables. 
         
         // Project variables
-        List<Var> vars = toList(map(query.getResultVars().iterator(), StringToVar)) ;
+        List<Var> vars = toList(map(query.getResultVars().iterator(), Var::alloc)) ;
         
         if ( vars.size() == 0 )
         {
@@ -114,7 +112,7 @@ public class SDB_QC
             q2.setQueryPattern(query.getQueryPattern()) ;
             q2.setQuerySelectType() ;
             q2.setQueryResultStar(true) ;
-            vars = toList(map(q2.getResultVars().iterator(), StringToVar)) ;
+            vars = toList(map(q2.getResultVars().iterator(), Var::alloc)) ;
         }
         
         
@@ -146,12 +144,4 @@ public class SDB_QC
     {
         return ( x instanceof OpSQL ) ;
     }
-
-    
-    private static Transform<String, Var> StringToVar = new Transform<String, Var>(){
-        @Override
-        public Var convert(String varName)
-        {
-            return Var.alloc(varName) ;
-        }} ;
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/TransformSDB.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/TransformSDB.java b/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/TransformSDB.java
index 608cb6b..e2bfda6 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/TransformSDB.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/TransformSDB.java
@@ -113,12 +113,12 @@ public class TransformSDB extends TransformCopy
         
         // Find optional-on-left
         Set<ScopeEntry> scopes2 = toSet(filter(scopes.iterator(), ScopeEntry.OptionalFilter)) ;
-        Set<Var> leftOptVars = toSet(map(scopes2.iterator(), ScopeEntry.ToVar)) ;              // Vars from left optionals.
+        Set<Var> leftOptVars = toSet(map(scopes2.iterator(), ScopeEntry::getVar)) ;              // Vars from left optionals.
         
         if ( false )
         {
             Iter<ScopeEntry> iter = Iter.iter(scopes) ;
-            Set<Var> leftOptVars_ = iter.filter(ScopeEntry.OptionalFilter).map(ScopeEntry.ToVar).toSet() ;
+            Set<Var> leftOptVars_ = iter.filter(ScopeEntry.OptionalFilter).map(ScopeEntry::getVar).toSet() ;
         }
         
         // Find optional-on-right (easier - it's all variables) 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-sdb/src/main/java/org/apache/jena/sdb/core/ScopeEntry.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/core/ScopeEntry.java b/jena-sdb/src/main/java/org/apache/jena/sdb/core/ScopeEntry.java
index b9b1d78..0384e85 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/core/ScopeEntry.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/core/ScopeEntry.java
@@ -18,9 +18,9 @@
 
 package org.apache.jena.sdb.core;
 
-import org.apache.jena.atlas.iterator.Action ;
-import org.apache.jena.atlas.iterator.Filter ;
-import org.apache.jena.atlas.iterator.Transform ;
+import java.util.function.Consumer;
+import java.util.function.Predicate;
+
 import org.apache.jena.sdb.core.sqlexpr.SqlColumn ;
 import org.apache.jena.sparql.core.Var ;
 
@@ -30,27 +30,9 @@ public class ScopeEntry
     SqlColumn column;
     ScopeStatus status ;
     
-    public static Filter<ScopeEntry> OptionalFilter = new Filter<ScopeEntry>()
-    {
-        @Override
-        public boolean accept(ScopeEntry item)
-        { return item.getStatus() == ScopeStatus.OPTIONAL ; }
-    } ;
-    
-    public static Transform<ScopeEntry, Var> ToVar = new Transform<ScopeEntry, Var>()
-    {
-        @Override
-        public Var convert(ScopeEntry item)
-        { return item.getVar() ; } 
-    } ;
+    public static Predicate<ScopeEntry> OptionalFilter = item -> item.getStatus() == ScopeStatus.OPTIONAL;
     
-    public static Action<ScopeEntry> SetOpt = new Action<ScopeEntry>()
-    {
-        @Override
-        public void apply(ScopeEntry item)
-        { item.setStatus(ScopeStatus.OPTIONAL) ; } 
-    } ;
-
+    public static Consumer<ScopeEntry> SetOpt = item -> item.setStatus(ScopeStatus.OPTIONAL) ;
     
     public ScopeEntry(Var var, SqlColumn column)
     { this(var, column, ScopeStatus.FIXED) ; }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-sdb/src/main/java/org/apache/jena/sdb/core/ScopeRename.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/core/ScopeRename.java b/jena-sdb/src/main/java/org/apache/jena/sdb/core/ScopeRename.java
index bc51291..2a4706a 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/core/ScopeRename.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/core/ScopeRename.java
@@ -22,8 +22,6 @@ import java.util.HashMap ;
 import java.util.HashSet ;
 import java.util.Map ;
 import java.util.Set ;
-
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.sdb.core.sqlexpr.SqlColumn ;
 import org.apache.jena.sparql.core.Var ;
 import org.slf4j.Logger ;
@@ -114,23 +112,4 @@ public class ScopeRename implements Scope
     {
         return frame + " " + scope ; 
     }
-    
-    private Transform<ScopeEntry, ScopeEntry> converter = 
-        new Transform<ScopeEntry, ScopeEntry>(){
-            @Override
-            public ScopeEntry convert(ScopeEntry entry)
-            {
-                entry = new ScopeEntry(entry.getVar(), entry.getColumn()) ;
-                Var var = entry.getVar() ;
-                SqlColumn col = frame.get(var) ;
-                if ( col == null )
-                {
-                    log.warn("No alias for variable "+var) ;
-                    return entry ;
-                }
-                ScopeEntry entry2 = new ScopeEntry(entry.getVar(), entry.getColumn()) ;
-                entry2.setStatus(entry.getStatus()) ;
-                //entry.reset(var, col, entry.getStatus()) ;
-                return entry2 ;
-            }} ;
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-sdb/src/main/java/org/apache/jena/sdb/core/sqlnode/GenerateSQLVisitor.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/core/sqlnode/GenerateSQLVisitor.java b/jena-sdb/src/main/java/org/apache/jena/sdb/core/sqlnode/GenerateSQLVisitor.java
index 489ebf8..69b242c 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/core/sqlnode/GenerateSQLVisitor.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/core/sqlnode/GenerateSQLVisitor.java
@@ -20,10 +20,8 @@ package org.apache.jena.sdb.core.sqlnode;
 
 import java.util.List ;
 import java.util.Set ;
-
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.sdb.SDB ;
 import org.apache.jena.sdb.core.Annotations ;
@@ -281,14 +279,9 @@ public class GenerateSQLVisitor implements SqlNodeVisitor
         return join2 ;
     }
     
-    static final Transform<SqlColumn, SqlTable> colToTable = new Transform<SqlColumn, SqlTable>() {
-        @Override
-        public SqlTable convert(SqlColumn item) { return item.getTable() ; }
-    } ;
-    
     private static Set<SqlTable> tables(Set<SqlColumn> cols)
     {
-        return Iter.toSet(Iter.map(cols.iterator(), colToTable)) ;
+        return Iter.toSet(Iter.map(cols.iterator(), SqlColumn::getTable)) ;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-sdb/src/main/java/org/apache/jena/sdb/print/ActionPrint.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/print/ActionPrint.java b/jena-sdb/src/main/java/org/apache/jena/sdb/print/ActionPrint.java
index ed1e70f..097736a 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/print/ActionPrint.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/print/ActionPrint.java
@@ -18,11 +18,12 @@
 
 package org.apache.jena.sdb.print;
 
+import java.util.function.Consumer;
+
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.atlas.io.Printable ;
-import org.apache.jena.atlas.iterator.Action ;
 
-public class ActionPrint <T extends Printable> implements Action<T> 
+public class ActionPrint <T extends Printable> implements Consumer<T> 
 {
     private boolean first = true ;
     private IndentedWriter out ;
@@ -32,7 +33,7 @@ public class ActionPrint <T extends Printable> implements Action<T>
     public ActionPrint(IndentedWriter out) { this(out, " ") ; }
     
     @Override
-    public void apply(Printable item)
+    public void accept(Printable item)
     {
         if ( ! first && sep != null )
             out.print(sep) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/ParamAllStoreDesc.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/ParamAllStoreDesc.java b/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/ParamAllStoreDesc.java
index 751e597..9648f6f 100644
--- a/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/ParamAllStoreDesc.java
+++ b/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/ParamAllStoreDesc.java
@@ -21,10 +21,8 @@ package org.apache.jena.sdb.test.junit;
 import java.util.ArrayList ;
 import java.util.Collection ;
 import java.util.List ;
-
 import org.junit.runners.Parameterized.Parameters ;
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.sdb.StoreDesc ;
 import org.apache.jena.sdb.test.SDBTestSetup ;
 import org.apache.jena.sdb.util.Pair ;
@@ -32,13 +30,6 @@ import org.apache.jena.sdb.util.Pair ;
 //@RunWith(Parameterized.class)
 public abstract class ParamAllStoreDesc
 {
-    // Make into Object[]{String,Store} lists just for JUnit. 
-    static Transform<Pair<String, StoreDesc>, Object[]> fix = new Transform<Pair<String, StoreDesc>, Object[]>()
-    {
-        @Override
-        public Object[] convert(Pair<String, StoreDesc> item)
-        { return new Object[]{item.car(), item.cdr()} ; }
-    } ;
 
     // Build once and return the same for parametrized types each time.
     // Connections are slow to create.
@@ -48,7 +39,7 @@ public abstract class ParamAllStoreDesc
         List<Pair<String, StoreDesc>> x = new ArrayList<Pair<String, StoreDesc>>() ;
         x.addAll(StoreList.storeDesc(SDBTestSetup.storeList)) ;
         x.addAll(StoreList.storeDesc(SDBTestSetup.storeListSimple)) ;
-        data = Iter.iter(x).map(fix).toList() ;
+        data = Iter.iter(x).map(p -> new Object[]{p.car(), p.cdr()}).toList() ;
     }
     
     // ----

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/ParamAllStores.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/ParamAllStores.java b/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/ParamAllStores.java
index 46bb959..4e0a709 100644
--- a/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/ParamAllStores.java
+++ b/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/ParamAllStores.java
@@ -21,10 +21,8 @@ package org.apache.jena.sdb.test.junit;
 import java.util.ArrayList ;
 import java.util.Collection ;
 import java.util.List ;
-
 import org.junit.runners.Parameterized.Parameters ;
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.sdb.Store ;
 import org.apache.jena.sdb.StoreDesc ;
 import org.apache.jena.sdb.test.SDBTestSetup ;
@@ -33,13 +31,6 @@ import org.apache.jena.sdb.util.Pair ;
 //@RunWith(Parameterized.class)
 public abstract class ParamAllStores
 {
-    // Make into Object[]{String,Store} lists just for JUnit. 
-    static Transform<Pair<String, StoreDesc>, Object[]> fix = new Transform<Pair<String, StoreDesc>, Object[]>()
-    {
-        @Override
-        public Object[] convert(Pair<String, StoreDesc> item)
-        { return new Object[]{item.car(), item.cdr()} ; }
-    } ;
 
     // Build once and return the same for parametrized types each time.
     // Connections are slow to create.
@@ -49,7 +40,7 @@ public abstract class ParamAllStores
         List<Pair<String, StoreDesc>> x = new ArrayList<Pair<String, StoreDesc>>() ;
         x.addAll(StoreList.stores(SDBTestSetup.storeList)) ;
         x.addAll(StoreList.stores(SDBTestSetup.storeListSimple)) ;
-        data = Iter.iter(x).map(fix).toList() ;
+        data = Iter.iter(x).map(p -> new Object[]{p.car(), p.cdr()}).toList() ;
     }
     
     // ----

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/StoreList.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/StoreList.java b/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/StoreList.java
index 8739689..af5f6c8 100644
--- a/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/StoreList.java
+++ b/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/StoreList.java
@@ -22,9 +22,9 @@ import static org.apache.jena.atlas.lib.StrUtils.strjoinNL ;
 
 import java.util.ArrayList ;
 import java.util.List ;
+import java.util.function.Function;
 
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.query.* ;
 import org.apache.jena.rdf.model.Model ;
 import org.apache.jena.rdf.model.Property ;
@@ -57,24 +57,9 @@ public class StoreList
             "}") ;
     
     // Not Java's finest hour ...
-    static Transform<Pair<String, String>, Pair<String, StoreDesc>> t1 = new  Transform<Pair<String, String>, Pair<String, StoreDesc>>()
-    {
-        @Override
-        public Pair<String, StoreDesc> convert(Pair<String, String> pair)
-        {
-            return new Pair<String, StoreDesc>(pair.car(), StoreDesc.read(pair.cdr())) ;
-        }
-    } ;
+    static Function<Pair<String, String>, Pair<String, StoreDesc>> t1 = p -> new Pair<String, StoreDesc>(p.car(), StoreDesc.read(p.cdr()));
 
-    static Transform<Pair<String, StoreDesc>, Pair<String, Store>> t2 = new Transform<Pair<String, StoreDesc>, Pair<String, Store>>()
-    {
-        @Override
-        public Pair<String, Store> convert(Pair<String, StoreDesc> pair)
-        {
-            Store store = testStore(pair.cdr()) ;
-            return new Pair<String, Store>(pair.car(), store) ;
-        }
-    } ;
+    static Function<Pair<String, StoreDesc>, Pair<String, Store>> t2 = p -> new Pair<String, Store>(p.car(), testStore(p.cdr()));
     
     public static Store testStore(StoreDesc desc)
     {


[37/50] [abbrv] jena git commit: Remove dead code.

Posted by cl...@apache.org.
Remove dead code.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/473c3e44
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/473c3e44
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/473c3e44

Branch: refs/heads/add-contract-tests
Commit: 473c3e447da5e6104f9d6d9f7eccba6a75fa3f6d
Parents: 806aafc
Author: Andy Seaborne <an...@apache.org>
Authored: Thu May 7 17:52:37 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu May 7 17:52:37 2015 +0100

----------------------------------------------------------------------
 .../engine/iterator/QueryIterTriplePattern.java   | 18 +-----------------
 .../apache/jena/sparql/path/eval/PathEngine1.java |  2 --
 .../jena/sparql/path/eval/PathEngineSPARQL.java   |  2 --
 .../jena/riot/writer/TestRiotWriterDataset.java   |  5 -----
 .../store/bulkloader2/CmdNodeTableBuilder.java    |  3 ---
 .../jena/tdb/index/bplustree/TestBPlusTree.java   |  2 +-
 6 files changed, 2 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/473c3e44/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterTriplePattern.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterTriplePattern.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterTriplePattern.java
index 0b9c14e..f805300 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterTriplePattern.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterTriplePattern.java
@@ -18,8 +18,6 @@
 
 package org.apache.jena.sparql.engine.iterator;
 
-import java.util.List ;
-
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -31,9 +29,7 @@ import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.engine.binding.BindingFactory ;
 import org.apache.jena.sparql.engine.binding.BindingMap ;
 import org.apache.jena.util.iterator.ClosableIterator ;
-import org.apache.jena.util.iterator.ExtendedIterator ;
 import org.apache.jena.util.iterator.NiceIterator ;
-import org.apache.jena.util.iterator.WrappedIterator ;
 
 public class QueryIterTriplePattern extends QueryIterRepeatApply
 {
@@ -76,19 +72,7 @@ public class QueryIterTriplePattern extends QueryIterRepeatApply
             Node p2 = tripleNode(p) ;
             Node o2 = tripleNode(o) ;
             Graph graph = cxt.getActiveGraph() ;
-            
-            ExtendedIterator<Triple> iter = graph.find(s2, p2, o2) ;
-            
-            if ( false )
-            {
-                // Materialize the results now. Debugging only.
-                List<Triple> x = iter.toList() ;
-                this.graphIter = WrappedIterator.create(x.iterator()) ;
-                iter.close();
-            }
-            else
-                // Stream.
-                this.graphIter = iter ;
+            this.graphIter = graph.find(s2, p2, o2) ;
         }
 
         private static Node tripleNode(Node node)

http://git-wip-us.apache.org/repos/asf/jena/blob/473c3e44/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngine1.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngine1.java b/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngine1.java
index 476af77..9d449a1 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngine1.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngine1.java
@@ -198,8 +198,6 @@ final class PathEngine1 extends PathEngine
     }
 
     private void ALP1(boolean forwardMode, int stepCount, int maxStepCount, Node node, Path path, Collection<Node> visited) {
-        if ( false )
-            System.out.printf("ALP1 node=%s\n   visited=%s\n   output=%s\n", node, visited) ;
         if ( maxStepCount >= 0 && stepCount > maxStepCount )
             return ;
         if ( visited.contains(node) )

http://git-wip-us.apache.org/repos/asf/jena/blob/473c3e44/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngineSPARQL.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngineSPARQL.java b/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngineSPARQL.java
index b1d5018..187932f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngineSPARQL.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngineSPARQL.java
@@ -115,8 +115,6 @@ public class PathEngineSPARQL extends PathEngine
 
     // TODO ?? switch to PathEngine1 for the sub-step as we only need uniques.
     private void ALP_1(boolean forwardMode, int stepCount, int maxStepCount, Node node, Path path, Collection<Node> visited) {
-        if ( false )
-            System.out.printf("ALP1 node=%s\n   visited=%s\n   output=%s\n", node, visited) ;
         if ( maxStepCount >= 0 && stepCount > maxStepCount )
             return ;
         if ( visited.contains(node) )

http://git-wip-us.apache.org/repos/asf/jena/blob/473c3e44/jena-arq/src/test/java/org/apache/jena/riot/writer/TestRiotWriterDataset.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/writer/TestRiotWriterDataset.java b/jena-arq/src/test/java/org/apache/jena/riot/writer/TestRiotWriterDataset.java
index 12ceca8..a46d47e 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/writer/TestRiotWriterDataset.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/writer/TestRiotWriterDataset.java
@@ -97,11 +97,6 @@ public class TestRiotWriterDataset extends AbstractWriterTest
         
         ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()) ;
         String s = StrUtils.fromUTF8bytes(out.toByteArray()) ;
-        if (false) {
-            System.out.println(format.toString());
-            System.out.println(s);
-            System.out.println();
-        }
         Dataset ds2 = DatasetFactory.createMem() ;
         try {
             RDFDataMgr.read(ds2, in, lang) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/473c3e44/jena-tdb/src/main/java/org/apache/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java b/jena-tdb/src/main/java/org/apache/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java
index 9662c03..5cc0d0e 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java
@@ -120,9 +120,6 @@ public class CmdNodeTableBuilder extends CmdGeneral
             datafiles = Arrays.asList("-") ;
         
         // ---- Checking.
-//        if ( false ) 
-//            SetupTDB.makeNodeTable(location, locationString, 0, outputFile, 0) ;
-
         for( String filename : datafiles)
         {
             Lang lang = RDFLanguages.filenameToLang(filename, RDFLanguages.NQUADS) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/473c3e44/jena-tdb/src/test/java/org/apache/jena/tdb/index/bplustree/TestBPlusTree.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/org/apache/jena/tdb/index/bplustree/TestBPlusTree.java b/jena-tdb/src/test/java/org/apache/jena/tdb/index/bplustree/TestBPlusTree.java
index c46c6a0..17bb72a 100644
--- a/jena-tdb/src/test/java/org/apache/jena/tdb/index/bplustree/TestBPlusTree.java
+++ b/jena-tdb/src/test/java/org/apache/jena/tdb/index/bplustree/TestBPlusTree.java
@@ -50,7 +50,7 @@ public class TestBPlusTree extends AbstractTestRangeIndex
         BPlusTree bpt = BPlusTree.makeMem(order, minRecords, RecordLib.TestRecordLength, 0) ;
         if ( false )
         {
-            // Breaks with CheckingTree = true ; because they deep reads the tree.
+            // Breaks with CheckingTree = true ; because of deep reads into the tree.
             BPlusTreeParams.CheckingNode = true ;
             BPlusTreeParams.CheckingTree = false ;
             bpt = BPlusTree.addTracking(bpt) ;


[17/50] [abbrv] jena git commit: Use StandardCharsets where possible.

Posted by cl...@apache.org.
Use StandardCharsets where possible.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/80bb3ed8
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/80bb3ed8
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/80bb3ed8

Branch: refs/heads/add-contract-tests
Commit: 80bb3ed864c113ed5eaf747361adff9682161c5c
Parents: 461cf36
Author: Andy Seaborne <an...@apache.org>
Authored: Mon May 4 10:12:15 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon May 4 10:12:15 2015 +0100

----------------------------------------------------------------------
 .../apache/jena/riot/lang/TestPipedRDFIterators.java  |  3 ++-
 .../org/apache/jena/riot/writer/TestTurtleWriter.java |  1 -
 .../main/java/org/apache/jena/atlas/lib/Chars.java    | 14 +++-----------
 jena-sdb/src/test/java/sdb/test/TestStringBase.java   |  3 ---
 4 files changed, 5 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/80bb3ed8/jena-arq/src/test/java/org/apache/jena/riot/lang/TestPipedRDFIterators.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/lang/TestPipedRDFIterators.java b/jena-arq/src/test/java/org/apache/jena/riot/lang/TestPipedRDFIterators.java
index d94fd9e..aaff63d 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/lang/TestPipedRDFIterators.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/lang/TestPipedRDFIterators.java
@@ -20,6 +20,7 @@ package org.apache.jena.riot.lang;
 
 import java.io.ByteArrayInputStream ;
 import java.nio.charset.Charset ;
+import java.nio.charset.StandardCharsets ;
 import java.util.concurrent.* ;
 
 import org.apache.jena.graph.Triple ;
@@ -392,7 +393,7 @@ public class TestPipedRDFIterators {
 
             @Override
             public void run() {
-                Charset utf8 = Charset.forName("utf8");
+                Charset utf8 = StandardCharsets.UTF_8 ;
                 ByteArrayInputStream input = new ByteArrayInputStream(data.getBytes(utf8));
                 try {
                     RDFDataMgr.parse(out, input, null, RDFLanguages.TURTLE, null);

http://git-wip-us.apache.org/repos/asf/jena/blob/80bb3ed8/jena-arq/src/test/java/org/apache/jena/riot/writer/TestTurtleWriter.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/writer/TestTurtleWriter.java b/jena-arq/src/test/java/org/apache/jena/riot/writer/TestTurtleWriter.java
index 3d2c65f..1bb0567 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/writer/TestTurtleWriter.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/writer/TestTurtleWriter.java
@@ -94,7 +94,6 @@ public class TestTurtleWriter {
         RDFDataMgr.write(output, m, Lang.TURTLE);
         
         ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray());
-        //System.out.println(new String(output.toByteArray(), Charset.forName("utf-8")));
         Model m2 = ModelFactory.createDefaultModel();
         RDFDataMgr.read(m2, input, Lang.TURTLE);
         Assert.assertTrue(m2.size() > 0);

http://git-wip-us.apache.org/repos/asf/jena/blob/80bb3ed8/jena-base/src/main/java/org/apache/jena/atlas/lib/Chars.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Chars.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Chars.java
index e9d4f55..d8a6dbc 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Chars.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Chars.java
@@ -18,10 +18,7 @@
 
 package org.apache.jena.atlas.lib;
 
-import java.nio.charset.Charset ;
-import java.nio.charset.CharsetDecoder ;
-import java.nio.charset.CharsetEncoder ;
-import java.nio.charset.CodingErrorAction ;
+import java.nio.charset.* ;
 
 public class Chars
 {
@@ -48,13 +45,8 @@ public class Chars
 //        'o' , 'p' , 'q' , 'r' , 's' , 't' ,
 //        'u' , 'v' , 'w' , 'x' , 'y' , 'z'
     
-    /** Java name for UTF-8 encoding */
-    private static final String encodingUTF8     = "utf-8" ;
-    /** Java name for ASCII encoding */
-    private static final String encodingASCII    = "ascii" ;
-    
-    public static final Charset charsetUTF8 = Charset.forName(encodingUTF8) ;
-    public static final Charset charsetASCII = Charset.forName(encodingASCII) ;
+    public static final Charset charsetUTF8 = StandardCharsets.UTF_8 ;
+    public static final Charset charsetASCII = StandardCharsets.US_ASCII ;
     
     // Pools for encoders/decoder.
     // Better? use a ThreadLocal.

http://git-wip-us.apache.org/repos/asf/jena/blob/80bb3ed8/jena-sdb/src/test/java/sdb/test/TestStringBase.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/test/java/sdb/test/TestStringBase.java b/jena-sdb/src/test/java/sdb/test/TestStringBase.java
index 2cb693e..acd5f12 100644
--- a/jena-sdb/src/test/java/sdb/test/TestStringBase.java
+++ b/jena-sdb/src/test/java/sdb/test/TestStringBase.java
@@ -39,9 +39,6 @@ public class TestStringBase extends TestDB
     private String baseString ; 
     
 
-    //static Charset csUTF8 = Charset.forName("UTF-8") ;
-
-
     public TestStringBase(String testLabel, String baseString, 
                     Connection jdbc, Params params, boolean verbose)
     {


[25/50] [abbrv] jena git commit: Using Java 8 types in o.a.j.atlas

Posted by cl...@apache.org.
Using Java 8 types in o.a.j.atlas


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/6b475345
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/6b475345
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/6b475345

Branch: refs/heads/add-contract-tests
Commit: 6b4753453a3be174aecc07ce9caf659e916c04f7
Parents: 2257377
Author: ajs6f <aj...@virginia.edu>
Authored: Mon May 4 12:30:38 2015 -0400
Committer: ajs6f <aj...@virginia.edu>
Committed: Mon May 4 15:16:16 2015 -0400

----------------------------------------------------------------------
 .../org/apache/jena/atlas/csv/CSVParser.java    |   9 +-
 .../java/org/apache/jena/riot/other/GLib.java   |  58 ++----
 .../org/apache/jena/riot/out/JsonLDWriter.java  |   8 +-
 .../process/normalize/CanonicalizeLiteral.java  |   6 +-
 .../apache/jena/riot/system/PrefixMapBase.java  |  25 +--
 .../org/apache/jena/riot/thrift/BinRDF.java     |  12 +-
 .../jena/sparql/core/DatasetGraphBase.java      |  12 +-
 .../jena/sparql/core/DatasetGraphQuad.java      |  13 +-
 .../org/apache/jena/sparql/engine/Rename.java   |  24 +--
 .../ReorderTransformationSubstitution.java      |  12 +-
 .../org/apache/jena/sparql/expr/E_Exists.java   |   6 +-
 .../apache/jena/sparql/expr/E_NotExists.java    |   6 +-
 .../java/org/apache/jena/sparql/expr/Expr.java  |   5 +-
 .../apache/jena/sparql/expr/ExprAggregator.java |   8 +-
 .../apache/jena/sparql/expr/ExprFunction0.java  |   6 +-
 .../apache/jena/sparql/expr/ExprFunction1.java  |   6 +-
 .../apache/jena/sparql/expr/ExprFunction2.java  |   6 +-
 .../apache/jena/sparql/expr/ExprFunction3.java  |   6 +-
 .../apache/jena/sparql/expr/ExprFunctionN.java  |   5 +-
 .../org/apache/jena/sparql/expr/ExprList.java   |   5 +-
 .../org/apache/jena/sparql/expr/ExprNode.java   |   5 +-
 .../org/apache/jena/sparql/expr/ExprVar.java    |   7 +-
 .../org/apache/jena/sparql/expr/NodeValue.java  |   6 +-
 .../jena/sparql/expr/aggregate/Aggregator.java  |   5 +-
 .../sparql/expr/aggregate/AggregatorBase.java   |   4 +-
 .../apache/jena/sparql/graph/NodeTransform.java |  12 +-
 .../jena/sparql/graph/NodeTransformLib.java     |  48 ++---
 .../jena/sparql/graph/NodeTransformOp.java      |  15 +-
 .../modify/NodeTransformBNodesToVariables.java  |   6 +-
 .../apache/jena/sparql/modify/TemplateLib.java  |  31 ++-
 .../jena/sparql/modify/UpdateEngineWorker.java  |   4 +-
 .../org/apache/jena/sparql/path/PathLib.java    |   4 +-
 .../jena/sparql/path/eval/PathEngine.java       |  25 +--
 .../jena/sparql/path/eval/PathEvaluator.java    |   6 +-
 .../jena/sparql/pfunction/library/strSplit.java |  12 +-
 .../apache/jena/sparql/resultset/CSVInput.java  |   6 +-
 .../jena/sparql/resultset/ResultSetCompare.java |  12 +-
 .../org/apache/jena/sparql/util/ModelUtils.java |  19 +-
 .../jena/sparql/util/graph/GraphList.java       |  12 +-
 .../jena/riot/process/TestNormalization.java    |   4 +-
 .../jena/riot/thrift/TestStreamRDFThrift.java   |  13 +-
 .../org/apache/jena/atlas/iterator/Action.java  |   9 +-
 .../apache/jena/atlas/iterator/ActionCount.java |   6 +-
 .../jena/atlas/iterator/ActionNothing.java      |  26 ---
 .../org/apache/jena/atlas/iterator/Filter.java  |   8 +-
 .../atlas/iterator/FilterDistinctAdjacent.java  |   8 +-
 .../jena/atlas/iterator/FilterOutNulls.java     |  32 ---
 .../apache/jena/atlas/iterator/FilterStack.java |  16 +-
 .../jena/atlas/iterator/FilterUnique.java       |  12 +-
 .../org/apache/jena/atlas/iterator/Iter.java    | 193 +++++--------------
 .../jena/atlas/iterator/IteratorArray.java      |   6 +
 .../apache/jena/atlas/iterator/MapUtils.java    |  36 ----
 .../apache/jena/atlas/iterator/Transform.java   |   8 +-
 .../apache/jena/atlas/lib/ActionKeyValue.java   |   9 +-
 .../java/org/apache/jena/atlas/lib/Cache.java   |   3 +-
 .../org/apache/jena/atlas/lib/CacheSet.java     |   4 +-
 .../org/apache/jena/atlas/lib/Closeable.java    |   2 +-
 .../apache/jena/atlas/lib/CollectionUtils.java  |  26 +--
 .../java/org/apache/jena/atlas/lib/Lib.java     |  13 +-
 .../org/apache/jena/atlas/lib/ListUtils.java    |   7 +-
 .../org/apache/jena/atlas/lib/MapUtils.java     |  45 -----
 .../java/org/apache/jena/atlas/lib/Problem.java |  25 ---
 .../org/apache/jena/atlas/lib/SetUtils.java     |  26 +--
 .../java/org/apache/jena/atlas/lib/Tuple.java   |  22 +--
 .../org/apache/jena/atlas/lib/cache/Cache0.java |   4 +-
 .../org/apache/jena/atlas/lib/cache/Cache1.java |   8 +-
 .../apache/jena/atlas/lib/cache/CacheGuava.java |   9 +-
 .../jena/atlas/lib/cache/CacheSetImpl.java      |  16 +-
 .../jena/atlas/lib/cache/CacheSetSync.java      |   5 +-
 .../jena/atlas/lib/cache/CacheSetWrapper.java   |   5 +-
 .../jena/atlas/lib/cache/CacheSimple.java       |  13 +-
 .../jena/atlas/lib/cache/CacheWrapper.java      |   4 +-
 .../java/org/apache/jena/base/Closeable.java    |  27 ---
 .../apache/jena/atlas/iterator/TestIter.java    | 134 +------------
 .../jena/fuseki/servlets/SPARQL_Protocol.java   |  12 +-
 .../jena/fuseki/servlets/SPARQL_Protocol.java   |  10 +-
 .../query/rewriter/SecuredFunction.java         |   4 +-
 .../org/apache/jena/sdb/compiler/QuadBlock.java |   6 +-
 .../org/apache/jena/sdb/compiler/SDB_QC.java    |  14 +-
 .../apache/jena/sdb/compiler/TransformSDB.java  |   4 +-
 .../org/apache/jena/sdb/core/ScopeEntry.java    |  28 +--
 .../org/apache/jena/sdb/core/ScopeRename.java   |  21 --
 .../sdb/core/sqlnode/GenerateSQLVisitor.java    |   9 +-
 .../org/apache/jena/sdb/print/ActionPrint.java  |   7 +-
 .../jena/sdb/test/junit/ParamAllStoreDesc.java  |  11 +-
 .../jena/sdb/test/junit/ParamAllStores.java     |  11 +-
 .../apache/jena/sdb/test/junit/StoreList.java   |  21 +-
 .../spatial/SpatialDocProducerTriples.java      |  19 --
 .../jena/tdb/base/block/BlockMgrCache.java      |   6 +-
 .../tdb/index/bplustree/BPlusTreeRewriter.java  |  10 +-
 .../java/org/apache/jena/tdb/lib/NodeLib.java   |   9 +-
 .../java/org/apache/jena/tdb/lib/TupleLib.java  |  34 +---
 .../apache/jena/tdb/solver/OpExecutorTDB1.java  |  11 +-
 .../java/org/apache/jena/tdb/solver/QC2.java    |   9 +-
 .../org/apache/jena/tdb/solver/SolverLib.java   |  52 ++---
 .../tdb/solver/StageGeneratorDirectTDB.java     |   9 +-
 .../apache/jena/tdb/solver/StageMatchTuple.java |  34 +---
 .../tdb/solver/stats/StatsCollectorBase.java    |   5 +-
 .../apache/jena/tdb/store/DatasetGraphTDB.java  |  13 +-
 .../org/apache/jena/tdb/store/GraphTDB.java     |  19 +-
 .../org/apache/jena/tdb/store/QuadTable.java    |   9 -
 .../org/apache/jena/tdb/store/TripleTable.java  |   9 -
 .../tdb/store/nodetable/NodeTableNative.java    |  35 +---
 .../tdb/store/tupletable/TupleIndexRecord.java  |  18 +-
 .../apache/jena/tdb/base/record/RecordLib.java  |   9 +-
 .../apache/jena/tdb/store/TestQuadFilter.java   |  20 +-
 106 files changed, 455 insertions(+), 1294 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/atlas/csv/CSVParser.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/csv/CSVParser.java b/jena-arq/src/main/java/org/apache/jena/atlas/csv/CSVParser.java
index 83613ae..e1afc2f 100644
--- a/jena-arq/src/main/java/org/apache/jena/atlas/csv/CSVParser.java
+++ b/jena-arq/src/main/java/org/apache/jena/atlas/csv/CSVParser.java
@@ -23,12 +23,12 @@ import java.io.InputStream ;
 import java.io.Reader ;
 import java.util.Iterator ;
 import java.util.List ;
+import java.util.function.Function;
 
 import org.apache.commons.csv.CSVFormat ;
 import org.apache.commons.csv.CSVRecord ;
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 
 /** 
  *  Wrapper for Commons CSV parser.
@@ -63,12 +63,7 @@ public class CSVParser implements Iterable<List<String>>
         }
     }
     
-    private static Transform<CSVRecord, List<String>> transform = new Transform<CSVRecord, List<String>>() {
-        @Override
-        public List<String> convert(CSVRecord record) {
-            return recordToList(record) ;
-        }
-    } ;
+    private static Function<CSVRecord, List<String>> transform = rec -> recordToList(rec) ;
     
     @Override
     public Iterator<List<String>> iterator() {

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/riot/other/GLib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/other/GLib.java b/jena-arq/src/main/java/org/apache/jena/riot/other/GLib.java
index 6a6958a..db14724 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/other/GLib.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/other/GLib.java
@@ -19,9 +19,7 @@
 package org.apache.jena.riot.other;
 
 import java.util.Iterator ;
-
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -42,89 +40,55 @@ public class GLib
     public static Iterator<Node> listSubjects(Graph graph)
     {
         ExtendedIterator<Triple> iter = graph.find(Node.ANY, Node.ANY, Node.ANY) ;
-        return Iter.iter(iter).map(projectTripleSubject).distinct() ;
+        return Iter.iter(iter).map(Triple::getSubject).distinct() ;
     }
 
     /** List the predicates in a graph (no duplicates) */
     public static Iterator<Node> listPredicates(Graph graph)
     {
         ExtendedIterator<Triple> iter = graph.find(Node.ANY, Node.ANY, Node.ANY) ;
-        return Iter.iter(iter).map(projectTriplePredicate).distinct() ;
+        return Iter.iter(iter).map(Triple::getPredicate).distinct() ;
     }
     
     /** List the objects in a graph (no duplicates) */
     public static Iterator<Node> listObjects(Graph graph)
     {
         ExtendedIterator<Triple> iter = graph.find(Node.ANY, Node.ANY, Node.ANY) ;
-        return Iter.iter(iter).map(projectTripleObject).distinct() ;
+        return Iter.iter(iter).map(Triple::getObject).distinct() ;
     }
-    
-    private static Transform<Quad, Triple> transformQuad2Triple = new Transform<Quad, Triple> () {
-        @Override
-        public Triple convert(Quad quad)    { return quad.asTriple() ; }
-    } ;
 
     /** Project quads to triples */
     public static Iter<Triple> quads2triples(Iterator<Quad> iter)
     {
-        return Iter.iter(iter).map(transformQuad2Triple) ;
+        return Iter.iter(iter).map(Quad::asTriple) ;
     }
 
     /** Project quad to graphname */
     public static Iterator<Node> quad2graphName(Iterator<Quad> iter)
-    { return Iter.map(iter, projectQuadGraphName) ; }
+    { return Iter.map(iter, Quad::getGraph) ; }
     
     /** Project quad to graphname */
     public static Iterator<Node> quad2subject(Iterator<Quad> iter)
-    { return Iter.map(iter, projectQuadSubject) ; }
+    { return Iter.map(iter, Quad::getSubject) ; }
     
     /** Project quad to predicate */
     public static Iterator<Node> quad2predicate(Iterator<Quad> iter)
-    { return Iter.map(iter, projectQuadPredicate) ; }
+    { return Iter.map(iter, Quad::getPredicate) ; }
     
     /** Project quad to object */
     public static Iterator<Node> quad2object(Iterator<Quad> iter)
-    { return Iter.map(iter, projectQuadObject) ; }
+    { return Iter.map(iter, Quad::getObject) ; }
     
     /** Project triple to subject */ 
     public static Iterator<Node> triple2subject(Iterator<Triple> iter)
-    { return Iter.map(iter, projectTripleSubject) ; }
+    { return Iter.map(iter, Triple::getSubject) ; }
     
     /** Project triple to predicate */ 
     public static Iterator<Node> triple2predicate(Iterator<Triple> iter)
-    { return Iter.map(iter, projectTriplePredicate) ; }
+    { return Iter.map(iter, Triple::getPredicate) ; }
     
     /** Project triple to object */ 
     public static Iterator<Node> triple2object(Iterator<Triple> iter)
-    { return Iter.map(iter, projectTripleObject) ; }
-
-    /** Transform quad to graphname */
-    public static Transform<Quad, Node> projectQuadGraphName = new Transform<Quad, Node>() {
-        @Override  public Node convert(Quad quad) { return quad.getGraph() ; }
-    } ;
-    /** Transform quad to subject */
-    public static Transform<Quad, Node> projectQuadSubject = new Transform<Quad, Node>() {
-        @Override  public Node convert(Quad quad) { return quad.getSubject() ; }
-    } ;
-    /** Transform quad to predicate */
-    public static Transform<Quad, Node> projectQuadPredicate = new Transform<Quad, Node>() {
-        @Override public Node convert(Quad quad) { return quad.getPredicate() ; }
-    } ;
-    /** Transform quad to object */
-    public static Transform<Quad, Node> projectQuadObject = new Transform<Quad, Node>() {
-        @Override public Node convert(Quad quad) { return quad.getObject() ; }
-    } ;
-    /** Transform triple to subject */ 
-    public static Transform<Triple, Node> projectTripleSubject   = new Transform<Triple, Node>() {
-        @Override public Node convert(Triple triple) { return triple.getSubject() ; }
-    } ;
-    /** Transform triple to predicate */ 
-    public static Transform<Triple, Node> projectTriplePredicate = new Transform<Triple, Node>() {
-        @Override public Node convert(Triple triple) { return triple.getPredicate() ; }
-    } ;
-    /** Transform triple to object */ 
-    public static Transform<Triple, Node> projectTripleObject    = new Transform<Triple, Node>() {
-        @Override public Node convert(Triple triple) { return triple.getObject() ; }
-    } ;
+    { return Iter.map(iter, Triple::getObject) ; }
 }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java b/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java
index dbd8fff..c7530a0 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java
@@ -23,10 +23,10 @@ import java.io.OutputStream ;
 import java.io.OutputStreamWriter ;
 import java.io.Writer ;
 import java.util.* ;
-import java.util.Map.Entry ;
+import java.util.Map.Entry;
+import java.util.function.Consumer;
 
 import org.apache.jena.atlas.io.IO ;
-import org.apache.jena.atlas.iterator.Action ;
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.lib.Chars ;
 import org.apache.jena.graph.Graph ;
@@ -123,9 +123,9 @@ public class JsonLDWriter extends WriterDatasetRIOTBase
     private static void addProperties(final Map<String, Object> ctx, Graph graph) {
         // Add some properties directly so it becomes "localname": ....
         final Set<String> dups = new HashSet<>() ;
-        Action<Triple> x = new Action<Triple>() {
+        Consumer<Triple> x = new Consumer<Triple>() {
             @Override
-            public void apply(Triple item) {
+            public void accept(Triple item) {
                 Node p = item.getPredicate() ;
                 Node o = item.getObject() ;
                 if ( p.equals(RDF.type.asNode()) )

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/riot/process/normalize/CanonicalizeLiteral.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/process/normalize/CanonicalizeLiteral.java b/jena-arq/src/main/java/org/apache/jena/riot/process/normalize/CanonicalizeLiteral.java
index c7a11ad..3f8490e 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/process/normalize/CanonicalizeLiteral.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/process/normalize/CanonicalizeLiteral.java
@@ -20,17 +20,17 @@ package org.apache.jena.riot.process.normalize;
 
 import java.util.HashMap ;
 import java.util.Map ;
+import java.util.function.Function;
 
 import org.apache.jena.datatypes.RDFDatatype ;
 import org.apache.jena.datatypes.xsd.XSDDatatype ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
 import org.apache.jena.riot.web.LangTag ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.util.NodeUtils ;
 import org.apache.jena.vocabulary.RDF ;
 
-public class CanonicalizeLiteral implements NodeTransform    
+public class CanonicalizeLiteral implements Function<Node, Node>    
 {
     private static final CanonicalizeLiteral singleton = new CanonicalizeLiteral(); 
 
@@ -39,7 +39,7 @@ public class CanonicalizeLiteral implements NodeTransform
     private CanonicalizeLiteral() {}
     
     @Override
-    public Node convert(Node node) {
+    public Node apply(Node node) {
         if ( ! node.isLiteral() )
             return node ;
             

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapBase.java b/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapBase.java
index 4190e7c..10dc6de 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapBase.java
@@ -18,12 +18,11 @@
 
 package org.apache.jena.riot.system;
 
+import static java.util.stream.Collectors.toMap;
+
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
-
-import org.apache.jena.atlas.iterator.Iter;
-import org.apache.jena.atlas.lib.ActionKeyValue;
 import org.apache.jena.atlas.lib.Pair;
 import org.apache.jena.iri.IRI;
 import org.apache.jena.iri.IRIFactory;
@@ -53,16 +52,8 @@ public abstract class PrefixMapBase implements PrefixMap {
     
     @Override
     public Map<String, String> getMappingCopyStr() {
-        final Map<String, String> smap = new HashMap<>();
-        ActionKeyValue<String, IRI> action = new ActionKeyValue<String, IRI>() {
-            @Override
-            public void apply(String key, IRI value) {
-                String str = value.toString();
-                smap.put(key, str);
-            }
-        };
-        Iter.apply(getMapping(), action);
-        return smap;
+		return getMapping().entrySet().stream()
+				.collect(toMap(Map.Entry::getKey, v -> v.getValue().toString()));
     }
     
     @Override
@@ -72,9 +63,7 @@ public abstract class PrefixMapBase implements PrefixMap {
     
     @Override
     public void putAll(PrefixMap pmap) {
-        for (Map.Entry<String, IRI> e : pmap.getMapping().entrySet()) {
-            this.add(e.getKey(), e.getValue());
-        }
+    		pmap.getMapping().forEach(this::add);
     }
 
     @Override
@@ -84,9 +73,7 @@ public abstract class PrefixMapBase implements PrefixMap {
 
     @Override
     public void putAll(Map<String, String> mapping) {
-        for (Map.Entry<String, String> e : mapping.entrySet()) {
-            this.add(e.getKey(), e.getValue());
-        }
+    		mapping.forEach(this::add);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/riot/thrift/BinRDF.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/thrift/BinRDF.java b/jena-arq/src/main/java/org/apache/jena/riot/thrift/BinRDF.java
index 29ad8d9..96e4ea6 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/thrift/BinRDF.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/thrift/BinRDF.java
@@ -22,10 +22,10 @@ import java.io.BufferedOutputStream ;
 import java.io.InputStream ;
 import java.io.OutputStream ;
 import java.util.List ;
+import java.util.function.Consumer;
 
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.io.IndentedWriter ;
-import org.apache.jena.atlas.iterator.Action ;
 import org.apache.jena.query.ResultSet ;
 import org.apache.jena.riot.system.PrefixMap ;
 import org.apache.jena.riot.system.PrefixMapFactory ;
@@ -168,11 +168,7 @@ public class BinRDF {
 
     // ** Java7 support
     public static void applyVisitor(TProtocol protocol, final VisitorStreamRowTRDF visitor) {
-        Action<RDF_StreamRow> action = new Action<RDF_StreamRow>() {
-            @Override
-            public void apply(RDF_StreamRow z) { TRDF.visit(z, visitor) ; }
-        } ;
-        apply(protocol, action) ;
+        apply(protocol, z -> TRDF.visit(z, visitor)) ;
     }
     
     /**
@@ -180,7 +176,7 @@ public class BinRDF {
      * @param protocol TProtocol
      * @param action   Code to act on the row.
      */
-    public static void apply(TProtocol protocol, Action<RDF_StreamRow> action) {
+    public static void apply(TProtocol protocol, Consumer<RDF_StreamRow> action) {
         RDF_StreamRow row = new RDF_StreamRow() ;
         while(protocol.getTransport().isOpen()) {
             try { row.read(protocol) ; }
@@ -189,7 +185,7 @@ public class BinRDF {
                     break ;
             }
             catch (TException ex) { TRDF.exception(ex) ; }
-            action.apply(row) ;
+            action.accept(row) ;
             row.clear() ;
         }
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphBase.java
index 196ecf8..bd87c82 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphBase.java
@@ -19,10 +19,8 @@
 package org.apache.jena.sparql.core;
 
 import java.util.Iterator ;
-
 import org.apache.jena.atlas.io.IndentedLineBuffer ;
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -189,15 +187,7 @@ abstract public class DatasetGraphBase implements DatasetGraph
 
     protected static Iter<Quad> triples2quads(final Node graphNode, Iterator<Triple> iter)
     {
-        Transform<Triple, Quad> transformNamedGraph = new Transform<Triple, Quad> () {
-            @Override
-            public Quad convert(Triple triple)
-            {
-                return new Quad(graphNode, triple) ;
-            }
-        } ;
-
-        return Iter.iter(iter).map(transformNamedGraph) ;
+        return Iter.iter(iter).map(t -> new Quad(graphNode, t)) ;
     }
 
     

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphQuad.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphQuad.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphQuad.java
index 5b28c90..d685a71 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphQuad.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphQuad.java
@@ -19,28 +19,19 @@
 package org.apache.jena.sparql.core;
 
 import java.util.Iterator ;
-
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.graph.Node ;
 
 
 /** A DatasetGraph base class for pure quad-centric storage.     
  */
 public abstract class DatasetGraphQuad extends DatasetGraphBase
-{
-    static Transform<Quad, Node> projectGraphName = new Transform<Quad, Node>() {
-        @Override
-        public Node convert(Quad quad)
-        {
-            return quad.getGraph() ; 
-        }} ;
-    
+{   
     @Override
     public Iterator<Node> listGraphNodes()
     {
         Iter<Quad> iter = Iter.iter(find(Node.ANY, Node.ANY, Node.ANY, Node.ANY)) ;
-        return iter.map(projectGraphName).distinct() ;
+        return iter.map(Quad::getGraph).distinct() ;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java
index 96a8751..bc1d4ea 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java
@@ -22,6 +22,7 @@ import java.util.Collection ;
 import java.util.HashMap ;
 import java.util.Map ;
 import java.util.Set ;
+import java.util.function.Function;
 
 import org.apache.jena.graph.Node ;
 import org.apache.jena.sparql.ARQConstants ;
@@ -29,7 +30,6 @@ import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.expr.Expr ;
 import org.apache.jena.sparql.expr.ExprList ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.graph.NodeTransformLib ;
 
 /** Support for renaming all the variables in an algebra expession
@@ -49,14 +49,14 @@ public class Rename
     /** Rename one node to another */
     public static Op renameNode(Op op, Node oldName, Node newName)
     {
-        NodeTransform renamer = new RenameNode(oldName, newName) ;
+    		Function<Node, Node> renamer = new RenameNode(oldName, newName) ;
         return NodeTransformLib.transform(renamer, op) ;
     }
 
     /** Rename one variable to another */
     public static Op renameVar(Op op, Var oldName, Var newName)
     {
-        NodeTransform renamer = new RenameNode(oldName, newName) ;
+    		Function<Node, Node> renamer = new RenameNode(oldName, newName) ;
         return NodeTransformLib.transform(renamer, op) ;
     }
     
@@ -76,13 +76,13 @@ public class Rename
     /** Rename all variables in an expression, EXCEPT for those named as constant */ 
     public static ExprList renameVars(ExprList exprList, Set<Var> constants)
     {
-        NodeTransform renamer = new RenameAnyVars(constants, prefix) ;
+    		Function<Node, Node> renamer = new RenameAnyVars(constants, prefix) ;
         return NodeTransformLib.transform(renamer, exprList) ;
     }
         
     public static Expr renameVars(Expr expr, Set<Var> constants)
     {
-        NodeTransform renamer = new RenameAnyVars(constants, prefix) ;
+    		Function<Node, Node> renamer = new RenameAnyVars(constants, prefix) ;
         return NodeTransformLib.transform(renamer, expr) ;
     }
     
@@ -90,13 +90,13 @@ public class Rename
      * This assumes the op was renamed by VarRename.rename */
     public static Op reverseVarRename(Op op, boolean repeatedly)
     {
-        NodeTransform renamer = new UnrenameAnyVars(prefix, repeatedly) ;
+    		Function<Node, Node> renamer = new UnrenameAnyVars(prefix, repeatedly) ;
         return NodeTransformLib.transform(renamer, op) ;
     }
     
     // ---- Transforms that do the renaming and unrenaming.
     
-    static class RenameNode implements NodeTransform
+    static class RenameNode implements Function<Node, Node>
     {
         private final Node oldName ;
         private final Node newName ;
@@ -107,7 +107,7 @@ public class Rename
         }
         
         @Override
-        public Node convert(Node node)
+        public Node apply(Node node)
         {
             if ( node.equals(oldName) )
                 return newName ;
@@ -116,7 +116,7 @@ public class Rename
         
     }
     
-    static class RenameAnyVars implements NodeTransform
+    static class RenameAnyVars implements Function<Node, Node>
     {
         private final Map<Var, Var> aliases = new HashMap<>() ;
         private final Collection<Var> constants ;
@@ -129,7 +129,7 @@ public class Rename
         }
         
         @Override
-        public final Node convert(Node node)
+        public final Node apply(Node node)
         {
             if ( ! Var.isVar(node) ) return node ;
             if ( constants.contains(node) ) return node ;
@@ -151,7 +151,7 @@ public class Rename
     }
 
     /** Reverse a renaming (assuming renaming was done by prefixing variable names) */
-    static class UnrenameAnyVars implements NodeTransform
+    static class UnrenameAnyVars implements Function<Node, Node>
     {
         private final String varPrefix ;
         private final boolean repeatedly ;
@@ -163,7 +163,7 @@ public class Rename
         }
 
         @Override
-        public Node convert(Node node)
+        public Node apply(Node node)
         {
             if ( ! Var.isVar(node) ) 
                 return node ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/engine/optimizer/reorder/ReorderTransformationSubstitution.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/optimizer/reorder/ReorderTransformationSubstitution.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/optimizer/reorder/ReorderTransformationSubstitution.java
index e316b31..d4caa80 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/optimizer/reorder/ReorderTransformationSubstitution.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/optimizer/reorder/ReorderTransformationSubstitution.java
@@ -22,10 +22,8 @@ import static org.apache.jena.sparql.util.StringUtils.printAbbrev ;
 
 import java.util.ArrayList ;
 import java.util.List ;
-
 import org.apache.jena.atlas.iterator.AccString ;
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.lib.StrUtils ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -64,7 +62,7 @@ public abstract class ReorderTransformationSubstitution implements ReorderTransf
         // Or done here as a second pass mutate of PatternTriples
 
         // Convert to a mutable form (that allows things like "TERM")
-        List<PatternTriple> components = Iter.toList(Iter.map(triples.iterator(), convert)) ;
+        List<PatternTriple> components = Iter.toList(Iter.map(triples.iterator(), PatternTriple::new)) ;
 
         // Allow subclasses to get in (e.g. static reordering).
         components = modifyComponents(components) ;
@@ -299,12 +297,4 @@ public abstract class ReorderTransformationSubstitution implements ReorderTransf
                 return "(" + printAbbrev(pt.toString()) + ")" ;
         }
     } ;
-
-    // Triples to TriplePatterns.
-    private static Transform<Triple, PatternTriple> convert = new Transform<Triple, PatternTriple>(){
-        @Override
-        public PatternTriple convert(Triple triple)
-        {
-            return new PatternTriple(triple) ;
-        }} ;
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java
index 3d7f6a3..0445350 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java
@@ -18,13 +18,15 @@
 
 package org.apache.jena.sparql.expr;
 
+import java.util.function.Function;
+
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.algebra.Algebra ;
 import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.core.Substitute ;
 import org.apache.jena.sparql.engine.QueryIterator ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.graph.NodeTransformLib ;
 import org.apache.jena.sparql.sse.Tags ;
 import org.apache.jena.sparql.syntax.Element ;
@@ -56,7 +58,7 @@ public class E_Exists extends ExprFunctionOp
     }
 
     @Override
-    public Expr applyNodeTransform(NodeTransform nodeTransform)
+    public Expr applyNodeTransform(Function<Node, Node> nodeTransform)
     {
         Op op2 = NodeTransformLib.transform(nodeTransform, getGraphPattern()) ;
         return new E_Exists(getElement(), op2) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java
index 2f41b9e..250d105 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java
@@ -18,13 +18,15 @@
 
 package org.apache.jena.sparql.expr;
 
+import java.util.function.Function;
+
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.algebra.Algebra ;
 import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.core.Substitute ;
 import org.apache.jena.sparql.engine.QueryIterator ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.graph.NodeTransformLib ;
 import org.apache.jena.sparql.sse.Tags ;
 import org.apache.jena.sparql.syntax.Element ;
@@ -57,7 +59,7 @@ public class E_NotExists extends ExprFunctionOp
     }
 
     @Override
-    public Expr applyNodeTransform(NodeTransform nodeTransform)
+    public Expr applyNodeTransform(Function<Node, Node> nodeTransform)
     {
         Op op2 = NodeTransformLib.transform(nodeTransform, getGraphPattern()) ;
         return new E_NotExists(getElement(), op2) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java
index 026b897..124a842 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java
@@ -20,13 +20,14 @@ package org.apache.jena.sparql.expr;
 
 import java.util.Collection ;
 import java.util.Set ;
+import java.util.function.Function;
 
 import javax.xml.datatype.DatatypeConstants ;
 
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 
 public interface Expr
 {
@@ -63,7 +64,7 @@ public interface Expr
     /**
      * Rewrite, applying a node->node transformation
      */
-    public Expr applyNodeTransform(NodeTransform transform) ;
+    public Expr applyNodeTransform(Function<Node, Node> transform) ;
 
     /** Deep copy */
     public Expr deepCopy() ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java
index 8db9b01..5f1794e 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java
@@ -19,6 +19,9 @@
 package org.apache.jena.sparql.expr;
 
 import static org.apache.jena.atlas.lib.Lib.equal ;
+
+import java.util.function.Function;
+
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.graph.Node ;
@@ -27,7 +30,6 @@ import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.expr.aggregate.Aggregator ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.serializer.SerializationContext ;
 
 /** Group aggregation functions calculated a value during grouping and
@@ -107,10 +109,10 @@ public class ExprAggregator extends ExprNode
     }
     
     @Override
-    public ExprAggregator applyNodeTransform(NodeTransform transform)
+    public ExprAggregator applyNodeTransform(Function<Node, Node> transform)
     {
         // Can't rewrite this to a non-variable.
-        Node node = transform.convert(var) ;
+        Node node = transform.apply(var) ;
         if ( ! Var.isVar(node) )
         {
             Log.warn(this, "Attempt to convert an aggregation variable to a non-variable: ignored") ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java
index 8593147..696393c 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java
@@ -18,9 +18,11 @@
 
 package org.apache.jena.sparql.expr;
 
+import java.util.function.Function;
+
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 
 /** An expression that is constant (does not depend on evaluating a sub expression). */
 
@@ -53,7 +55,7 @@ public abstract class ExprFunction0 extends ExprFunction
     public abstract NodeValue eval(FunctionEnv env)  ;
     
     @Override
-    final public Expr applyNodeTransform(NodeTransform transform)
+    final public Expr applyNodeTransform(Function<Node, Node> transform)
     {
         // Nothing to transform. 
         return copy() ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java
index 97901ef..e55548d 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java
@@ -18,10 +18,12 @@
 
 package org.apache.jena.sparql.expr;
 
+import java.util.function.Function;
+
 import org.apache.jena.atlas.lib.Lib ;
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 
 /** A function that has a single argument */
  
@@ -84,7 +86,7 @@ public abstract class ExprFunction1 extends ExprFunction
     }
 
     @Override
-    final public Expr applyNodeTransform(NodeTransform transform)
+    final public Expr applyNodeTransform(Function<Node, Node> transform)
     {
         Expr e = (expr == null ? null : expr.applyNodeTransform(transform)) ;
         return copy(e) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java
index 4883ad9..79a824f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java
@@ -18,10 +18,12 @@
 
 package org.apache.jena.sparql.expr;
 
+import java.util.function.Function;
+
 import org.apache.jena.atlas.lib.Lib ;
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 
 
 /** A function of two arguments */
@@ -95,7 +97,7 @@ public abstract class ExprFunction2 extends ExprFunction
     
 
     @Override
-    final public Expr applyNodeTransform(NodeTransform transform)
+    final public Expr applyNodeTransform(Function<Node, Node> transform)
     {
         Expr e1 = (expr1 == null ? null : expr1.applyNodeTransform(transform)) ;
         Expr e2 = (expr2 == null ? null : expr2.applyNodeTransform(transform)) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java
index 82d842f..f6d9a41 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java
@@ -18,10 +18,12 @@
 
 package org.apache.jena.sparql.expr;
 
+import java.util.function.Function;
+
 import org.apache.jena.atlas.lib.Lib ;
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 
 
 /** A function of three arguments */
@@ -105,7 +107,7 @@ public abstract class ExprFunction3 extends ExprFunction
     
 
     @Override
-    final public Expr applyNodeTransform(NodeTransform transform)
+    final public Expr applyNodeTransform(Function<Node, Node> transform)
     {
         Expr e1 = (expr1 == null ? null : expr1.applyNodeTransform(transform)) ;
         Expr e2 = (expr2 == null ? null : expr2.applyNodeTransform(transform)) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java
index 720f79d..d2cf110 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java
@@ -20,10 +20,11 @@ package org.apache.jena.sparql.expr;
 
 import java.util.ArrayList ;
 import java.util.List ;
+import java.util.function.Function;
 
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 
 /** A function which takes N arguments (N may be variable e.g. regex) */
  
@@ -81,7 +82,7 @@ public abstract class ExprFunctionN extends ExprFunction
     }
 
     @Override
-    public Expr applyNodeTransform(NodeTransform transform)
+    public Expr applyNodeTransform(Function<Node, Node> transform)
     {
         ExprList newArgs = new ExprList() ;
         for ( int i = 1 ; i <= numArgs() ; i++ )

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java
index 03ab237..d526bba 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java
@@ -19,11 +19,12 @@
 package org.apache.jena.sparql.expr;
 
 import java.util.* ;
+import java.util.function.Function;
 
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.ExecutionContext ;
 import org.apache.jena.sparql.engine.binding.Binding ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.util.Context ;
 
 public class ExprList implements Iterable<Expr>
@@ -76,7 +77,7 @@ public class ExprList implements Iterable<Expr>
     /**
      * Rewrite, applying a node->node transformation
      */
-    public ExprList applyNodeTransform(NodeTransform transform) {
+    public ExprList applyNodeTransform(Function<Node, Node> transform) {
         ExprList x = new ExprList() ;
         for ( Expr e : expressions)
             x.add(e.applyNodeTransform(transform));

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java
index 680bdf8..87eec7f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java
@@ -20,13 +20,14 @@ package org.apache.jena.sparql.expr;
 
 import java.util.Collection ;
 import java.util.Set ;
+import java.util.function.Function;
 
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.expr.nodevalue.XSDFuncOp ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.util.ExprUtils ;
 
 
@@ -85,7 +86,7 @@ public abstract class ExprNode implements Expr
     public abstract Expr copySubstitute(Binding binding) ;
     
     @Override
-    public abstract Expr applyNodeTransform(NodeTransform transform) ;
+    public abstract Expr applyNodeTransform(Function<Node, Node> transform) ;
 
         
     // ---- Default implementations

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java
index fc45447..a1a589f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java
@@ -18,6 +18,8 @@
 
 package org.apache.jena.sparql.expr;
 
+import java.util.function.Function;
+
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.query.Query ;
@@ -25,7 +27,6 @@ import org.apache.jena.sparql.ARQInternalErrorException ;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 
 /** An expression that is a variable in an expression. */
  
@@ -75,9 +76,9 @@ public class ExprVar extends ExprNode
     }
     
     @Override
-    public Expr applyNodeTransform(NodeTransform transform)
+    public Expr applyNodeTransform(Function<Node, Node> transform)
     {
-        Node node = transform.convert(varNode) ;
+        Node node = transform.apply(varNode) ;
         if ( Var.isVar(node))
             return new ExprVar(Var.alloc(node)) ;
         return NodeValue.makeNode(node) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
index 10cfde5..d960de1 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
@@ -51,6 +51,7 @@ import java.util.Calendar ;
 import java.util.Iterator ;
 import java.util.Properties ;
 import java.util.ServiceLoader ;
+import java.util.function.Function;
 
 import javax.xml.datatype.DatatypeConfigurationException ;
 import javax.xml.datatype.DatatypeFactory ;
@@ -75,7 +76,6 @@ import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.expr.nodevalue.* ;
 import org.apache.jena.sparql.function.FunctionEnv ;
 import org.apache.jena.sparql.graph.NodeConst ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.serializer.SerializationContext ;
 import org.apache.jena.sparql.util.* ;
 import org.apache.jena.vocabulary.RDF ;
@@ -468,10 +468,10 @@ public abstract class NodeValue extends ExprNode
     }
     
     @Override
-    public Expr applyNodeTransform(NodeTransform transform)
+    public Expr applyNodeTransform(Function<Node, Node> transform)
     { 
         Node n = asNode() ;
-        n = transform.convert(n) ;
+        n = transform.apply(n) ;
         return makeNode(n) ;
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java
index 67b016c..553202c 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java
@@ -18,9 +18,10 @@
 
 package org.apache.jena.sparql.expr.aggregate;
 
+import java.util.function.Function;
+
 import org.apache.jena.graph.Node ;
 import org.apache.jena.sparql.expr.ExprList ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.serializer.SerializationContext ;
 
 /** An Aggregator is the processor for the whole result stream.
@@ -46,7 +47,7 @@ public interface Aggregator
     
     public ExprList getExprList() ;
     public Aggregator copy(ExprList exprs) ;
-    public Aggregator copyTransform(NodeTransform transform) ;
+    public Aggregator copyTransform(Function<Node, Node> transform) ;
     
     @Override
     public int hashCode() ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java
index cd6d76b..7fb321b 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java
@@ -21,6 +21,7 @@ package org.apache.jena.sparql.expr.aggregate;
 import java.util.HashMap ;
 import java.util.Locale ;
 import java.util.Map ;
+import java.util.function.Function;
 
 import org.apache.jena.atlas.io.IndentedLineBuffer ;
 import org.apache.jena.graph.Node ;
@@ -29,7 +30,6 @@ import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.expr.Expr ;
 import org.apache.jena.sparql.expr.ExprList ;
 import org.apache.jena.sparql.expr.NodeValue ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.serializer.SerializationContext ;
 import org.apache.jena.sparql.sse.writers.WriterExpr ;
 import org.apache.jena.sparql.util.ExprUtils ;
@@ -86,7 +86,7 @@ public abstract class AggregatorBase implements Aggregator
     public String key() {  return toPrefixString() ; }
     
     @Override
-    public final Aggregator copyTransform(NodeTransform transform)
+    public final Aggregator copyTransform(Function<Node, Node> transform)
     {
         ExprList e = getExprList() ;
         if ( e != null )

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java
index 724da1e..a22da5f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java
@@ -18,12 +18,16 @@
 
 package org.apache.jena.sparql.graph;
 
-import org.apache.jena.atlas.iterator.Transform ;
+import java.util.function.Function;
+
 import org.apache.jena.graph.Node ;
 
 /** Convert nodes to nodes - Vars may need to be translated into Vars. */
-public interface NodeTransform extends Transform<Node, Node>
+/**
+ * Prefer {@link Function<Node, Node>}.
+ *
+ */
+@Deprecated
+public interface NodeTransform extends Function<Node, Node>
 {
-    @Override
-    public Node convert(Node node) ;
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java
index f585eac..94314c2 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java
@@ -21,6 +21,7 @@ package org.apache.jena.sparql.graph;
 import java.util.ArrayList ;
 import java.util.Iterator ;
 import java.util.List ;
+import java.util.function.Function;
 
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.graph.Node ;
@@ -37,19 +38,20 @@ import org.apache.jena.sparql.engine.binding.BindingFactory ;
 import org.apache.jena.sparql.engine.binding.BindingMap ;
 import org.apache.jena.sparql.expr.Expr ;
 import org.apache.jena.sparql.expr.ExprList ;
+
 import static org.apache.jena.atlas.lib.Lib.equal ;
 
 public class NodeTransformLib
 {
     /** Do a node->node conversion of an Op - return original BGP for "no change" */
-    public static Op transform(NodeTransform nodeTransform, Op op)
+    public static Op transform(Function<Node, Node> nodeTransform, Op op)
     {
         Transform opTransform = new NodeTransformOp(nodeTransform) ; 
         return Transformer.transform(opTransform, null, op) ;   // No expr transform - we do it ourselves.
     }
     
     /** Do a node->node conversion of a BGP - return original BGP for "no change" */
-    public static BasicPattern transform(NodeTransform nodeTransform, BasicPattern pattern)  
+    public static BasicPattern transform(Function<Node, Node> nodeTransform, BasicPattern pattern)  
     {
         BasicPattern bgp2 = new BasicPattern() ;
         boolean changed = false ;
@@ -66,7 +68,7 @@ public class NodeTransformLib
     }
 
     /** Do a node->node conversion of a QuadPattern - return original QuadPattern for "no change" */
-    public static QuadPattern transform(NodeTransform nodeTransform, QuadPattern pattern)  
+    public static QuadPattern transform(Function<Node, Node> nodeTransform, QuadPattern pattern)  
     {
         QuadPattern qp2 = new QuadPattern() ;
         boolean changed = false ;
@@ -83,18 +85,18 @@ public class NodeTransformLib
     }
 
     /** Do a node->node conversion of a Triple - return original Triple for "no change" */
-    public static Triple transform(NodeTransform nodeTransform, Triple triple)  
+    public static Triple transform(Function<Node, Node> nodeTransform, Triple triple)  
     {
         boolean change = false ;
         Node s = triple.getSubject() ;
         Node p = triple.getPredicate() ;
         Node o = triple.getObject() ;
         
-        Node s1 = nodeTransform.convert(s) ;
+        Node s1 = nodeTransform.apply(s) ;
         if ( s1 != s ) { change = true ; s = s1 ; }
-        Node p1 = nodeTransform.convert(p) ;
+        Node p1 = nodeTransform.apply(p) ;
         if ( p1 != p ) { change = true ; p = p1 ; }
-        Node o1 = nodeTransform.convert(o) ;
+        Node o1 = nodeTransform.apply(o) ;
         if ( o1 != o ) { change = true ; o = o1 ; }
     
         if ( ! change )
@@ -103,7 +105,7 @@ public class NodeTransformLib
     }
 
     /** Do a node->node conversion of a Quad - return original Quad for "no change" */
-    public static Quad transform(NodeTransform nodeTransform, Quad quad)  
+    public static Quad transform(Function<Node, Node> nodeTransform, Quad quad)  
     {
         boolean change = false ;
         Node s = quad.getSubject() ;
@@ -111,13 +113,13 @@ public class NodeTransformLib
         Node o = quad.getObject() ;
         Node g = quad.getGraph() ;
         
-        Node g1 = nodeTransform.convert(g) ;
+        Node g1 = nodeTransform.apply(g) ;
         if ( g1 != g ) { change = true ; g = g1 ; }
-        Node s1 = nodeTransform.convert(s) ;
+        Node s1 = nodeTransform.apply(s) ;
         if ( s1 != s ) { change = true ; s = s1 ; }
-        Node p1 = nodeTransform.convert(p) ;
+        Node p1 = nodeTransform.apply(p) ;
         if ( p1 != p ) { change = true ; p = p1 ; }
-        Node o1 = nodeTransform.convert(o) ;
+        Node o1 = nodeTransform.apply(o) ;
         if ( o1 != o ) { change = true ; o = o1 ; }
     
         if ( ! change )
@@ -125,7 +127,7 @@ public class NodeTransformLib
         return new Quad(g,s,p,o) ;
     }
     
-    public static Table transform(Table table, NodeTransform transform) {
+    public static Table transform(Table table, Function<Node, Node> transform) {
         // Non-streaming rewrite 
         List<Var> vars = transformVars(transform, table.getVars()) ;
         Iterator<Binding> iter = table.rows() ; 
@@ -138,11 +140,11 @@ public class NodeTransformLib
         return new TableData(vars, newRows) ;
     }
     
-    public static Binding transform(Binding b, NodeTransform transform) {
+    public static Binding transform(Binding b, Function<Node, Node> transform) {
         BindingMap b2 = BindingFactory.create() ;
         List<Var> vars = Iter.toList(b.vars()) ;
         for ( Var v : vars ) {
-            Var v2 = (Var)transform.convert(v) ;
+            Var v2 = (Var)transform.apply(v) ;
             b2.add(v2, b.get(v));
         }
         return b2 ;
@@ -151,7 +153,7 @@ public class NodeTransformLib
 
 
     /** Do a node->node conversion of a List&lt;Quad&gt; - return original List&lt;Quad&gt; for "no change" */
-    public static List<Quad> transformQuads(NodeTransform nodeTransform, List<Quad> quads)
+    public static List<Quad> transformQuads(Function<Node, Node> nodeTransform, List<Quad> quads)
     {
         List<Quad> x = new ArrayList<>() ;
         boolean changed = false ; 
@@ -168,14 +170,14 @@ public class NodeTransformLib
     }
 
     /** Do a node->node conversion of a VarExprList - return original VarExprList for "no change" */
-    public static VarExprList transform(NodeTransform nodeTransform, VarExprList varExprList)
+    public static VarExprList transform(Function<Node, Node> nodeTransform, VarExprList varExprList)
     {
         VarExprList varExprList2 = new VarExprList() ;
         boolean changed = false ;
         for ( Var v : varExprList.getVars() )
         {
             Expr expr = varExprList.getExpr(v) ;
-            Var v2 = (Var)nodeTransform.convert(v) ;
+            Var v2 = (Var)nodeTransform.apply(v) ;
             Expr expr2 = ( expr != null ) ? transform(nodeTransform, expr) : null ;
             
             if ( ! equal(v, v2) || ! equal(expr, expr2) )
@@ -187,13 +189,13 @@ public class NodeTransformLib
         return varExprList2 ;
     }
 
-    public static List<Var> transformVars(NodeTransform nodeTransform, List<Var> varList)
+    public static List<Var> transformVars(Function<Node, Node> nodeTransform, List<Var> varList)
     {
         List<Var> varList2 = new ArrayList<>(varList.size()) ;
         boolean changed = false ;
         for ( Var v : varList )
         {
-            Var v2 = (Var)nodeTransform.convert(v) ;
+            Var v2 = (Var)nodeTransform.apply(v) ;
             varList2.add(v2) ;
             if ( !equal(v, v2) )
                 changed = true ;
@@ -203,7 +205,7 @@ public class NodeTransformLib
         return varList2 ;
     }
 
-    public static ExprList transform(NodeTransform nodeTransform, ExprList exprList)
+    public static ExprList transform(Function<Node, Node> nodeTransform, ExprList exprList)
     {
           ExprList exprList2 = new ExprList() ;
           boolean changed = false ;
@@ -218,12 +220,12 @@ public class NodeTransformLib
           return exprList2 ;
     }
 
-    public static Expr transform(NodeTransform nodeTransform, Expr expr)
+    public static Expr transform(Function<Node, Node> nodeTransform, Expr expr)
     {
         return expr.applyNodeTransform(nodeTransform) ;
     }
 
-    public static List<SortCondition> transform(NodeTransform nodeTransform, List<SortCondition> conditions)
+    public static List<SortCondition> transform(Function<Node, Node> nodeTransform, List<SortCondition> conditions)
     {
         List<SortCondition> conditions2 = new ArrayList<>() ;
         boolean same = true ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java
index a9f1945..d62d176 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java
@@ -20,6 +20,7 @@ package org.apache.jena.sparql.graph;
 
 import java.util.ArrayList ;
 import java.util.List ;
+import java.util.function.Function;
 
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -50,8 +51,8 @@ class NodeTransformOp extends TransformCopy
     // Not:
     //   Conditional (no expression)
     
-    private final NodeTransform transform ;
-    NodeTransformOp(NodeTransform transform)
+    private final Function<Node, Node> transform ;
+    NodeTransformOp(Function<Node, Node> transform)
     {
         this.transform = transform ;
     }
@@ -85,9 +86,9 @@ class NodeTransformOp extends TransformCopy
     { 
         TriplePath tp = opPath.getTriplePath() ;
         Node s = tp.getSubject() ;
-        Node s1 = transform.convert(s) ;
+        Node s1 = transform.apply(s) ;
         Node o = tp.getObject() ;
-        Node o1 = transform.convert(o) ;
+        Node o1 = transform.apply(o) ;
         
         if ( s1 == s && o1 == o )
             // No change.
@@ -111,7 +112,7 @@ class NodeTransformOp extends TransformCopy
         // The internal representation is (graph, BGP)
         BasicPattern bgp2 = NodeTransformLib.transform(transform, opQuadPattern.getBasicPattern()) ;
         Node g2 = opQuadPattern.getGraphNode() ;
-        g2 = transform.convert(g2) ;
+        g2 = transform.apply(g2) ;
         
         if ( g2 == opQuadPattern.getGraphNode() && bgp2 == opQuadPattern.getBasicPattern() )
             return super.transform(opQuadPattern) ;
@@ -120,7 +121,7 @@ class NodeTransformOp extends TransformCopy
     
     @Override public Op transform(OpGraph opGraph, Op subOp)
     {
-        Node g2 = transform.convert(opGraph.getNode()) ;
+        Node g2 = transform.apply(opGraph.getNode()) ;
         if ( g2 == opGraph.getNode() )
             return super.transform(opGraph, subOp) ;
         return new OpGraph(g2, subOp) ;
@@ -128,7 +129,7 @@ class NodeTransformOp extends TransformCopy
     
     @Override public Op transform(OpDatasetNames opDatasetNames)
     {
-        Node g2 = transform.convert(opDatasetNames.getGraphNode()) ;
+        Node g2 = transform.apply(opDatasetNames.getGraphNode()) ;
         if ( g2 == opDatasetNames.getGraphNode() )
             return super.transform(opDatasetNames) ;
         return new OpDatasetNames(g2) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java b/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java
index 72abe48..85ab116 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java
@@ -20,14 +20,14 @@ package org.apache.jena.sparql.modify;
 
 import java.util.HashMap ;
 import java.util.Map ;
+import java.util.function.Function;
 
 import org.apache.jena.graph.Node ;
 import org.apache.jena.sparql.ARQConstants ;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.core.VarAlloc ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 
-public class NodeTransformBNodesToVariables implements NodeTransform
+public class NodeTransformBNodesToVariables implements Function<Node, Node>
 {
     private VarAlloc varAlloc = new VarAlloc(ARQConstants.allocVarBNodeToVar) ;
     private Map<Node, Var> mapping ;
@@ -38,7 +38,7 @@ public class NodeTransformBNodesToVariables implements NodeTransform
     }
 
     @Override
-    public Node convert(Node node)
+    public Node apply(Node node)
     {
         if ( ! node.isBlank() )
             return node ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/modify/TemplateLib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/modify/TemplateLib.java b/jena-arq/src/main/java/org/apache/jena/sparql/modify/TemplateLib.java
index 99f9b31..63b5cb4 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/TemplateLib.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/TemplateLib.java
@@ -19,9 +19,10 @@
 package org.apache.jena.sparql.modify;
 
 import java.util.* ;
+import java.util.function.Function;
 
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
+import org.apache.jena.ext.com.google.common.collect.Iterators;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
 import org.apache.jena.graph.Triple ;
@@ -55,28 +56,22 @@ public class TemplateLib
         // The default graph has been set to something else.
         if ( dftGraph != null )
         {
-            Transform<Quad, Quad> nt = new Transform<Quad, Quad>() {
-                @Override
-                public Quad convert(Quad quad)
-                {
-                    if ( ! quad.isDefaultGraph() ) return quad ;
-                    
-                    return new Quad(dftGraph, quad.getSubject(), quad.getPredicate(), quad.getObject()) ;
-                }
-            };
-            quads = Iter.map(quads, nt) ;
-        }
+			quads = Iter
+					.map(quads,
+							q -> (!q.isDefaultGraph()) ? q :
+							new Quad(dftGraph, q.getSubject(), q.getPredicate(), q.getObject()));
+		}
         return quads;
     }
     
     /** Substitute into triple patterns */
     public static Iterator<Triple> calcTriples(final List<Triple> triples, Iterator<Binding> bindings)
     {
-        return Iter.mapMany(bindings, new Transform<Binding, Iterator<Triple>>()
+        return Iterators.concat(Iter.map(bindings, new Function<Binding, Iterator<Triple>>()
         {
             Map<Node, Node> bNodeMap = new HashMap<>() ;
             @Override
-            public Iterator<Triple> convert(final Binding b)
+            public Iterator<Triple> apply(final Binding b)
             {
                 // Iteration is a new mapping of bnodes. 
                 bNodeMap.clear() ;
@@ -94,17 +89,17 @@ public class TemplateLib
                 }
                 return tripleList.iterator();
             }
-        });
+        }));
     }
     
     /** Substitute into quad patterns */
     public static Iterator<Quad> calcQuads(final List<Quad> quads, Iterator<Binding> bindings)
     {
-        return Iter.mapMany(bindings, new Transform<Binding, Iterator<Quad>>()
+        return Iterators.concat(Iter.map(bindings, new Function<Binding, Iterator<Quad>>()
         {
             Map<Node, Node> bNodeMap = new HashMap<>() ;
             @Override
-            public Iterator<Quad> convert(final Binding b)
+            public Iterator<Quad> apply(final Binding b)
             {
                 // Iteration is a new mapping of bnodes. 
                 bNodeMap.clear() ;
@@ -122,7 +117,7 @@ public class TemplateLib
                 }
                 return quadList.iterator();
             }
-        });
+        }));
     }
 
     /** Substitute into a quad, with rewriting of bNodes */ 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java
index f0af38f..e97a796 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java
@@ -22,6 +22,7 @@ import static org.apache.jena.sparql.modify.TemplateLib.template ;
 
 import java.util.Iterator ;
 import java.util.List ;
+import java.util.function.Function;
 
 import org.apache.jena.atlas.data.BagFactory ;
 import org.apache.jena.atlas.data.DataBag ;
@@ -50,7 +51,6 @@ import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.engine.binding.BindingRoot ;
 import org.apache.jena.sparql.graph.GraphFactory ;
 import org.apache.jena.sparql.graph.GraphOps ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.graph.NodeTransformLib ;
 import org.apache.jena.sparql.modify.request.* ;
 import org.apache.jena.sparql.syntax.Element ;
@@ -474,7 +474,7 @@ public class UpdateEngineWorker implements UpdateVisitor
     
     protected static List<Quad> unused_convertBNodesToVariables(List<Quad> quads)
     {
-        NodeTransform bnodesToVariables = new NodeTransformBNodesToVariables() ;
+    		Function<Node, Node> bnodesToVariables = new NodeTransformBNodesToVariables() ;
         return NodeTransformLib.transformQuads(bnodesToVariables, quads) ;
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java b/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
index b36ed43..c2db208 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
@@ -21,8 +21,8 @@ package org.apache.jena.sparql.path;
 import java.util.ArrayList ;
 import java.util.Iterator ;
 import java.util.List ;
+import java.util.function.Predicate;
 
-import org.apache.jena.atlas.iterator.Filter ;
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.graph.Graph ;
@@ -247,7 +247,7 @@ public class PathLib
         if ( ! subject.isConcrete() || !object.isConcrete() )
             throw new ARQInternalErrorException("Non concrete node for existsPath evaluation") ;
         Iterator<Node> iter = PathEval.eval(graph, subject, path, execCxt.getContext()) ;
-        Filter<Node> filter = new Filter<Node>() { @Override public boolean accept(Node node) { return Lib.equal(node,  object) ; } } ; 
+        Predicate<Node> filter = node -> Lib.equal(node,  object); 
         // See if we got to the node we're interested in finishing at.
         iter = Iter.filter(iter, filter) ;
         long x = Iter.count(iter) ; 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngine.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngine.java b/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngine.java
index 6497bb4..9df5c10 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngine.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngine.java
@@ -22,9 +22,7 @@ import java.util.ArrayList ;
 import java.util.Collection ;
 import java.util.Iterator ;
 import java.util.List ;
-
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -100,10 +98,10 @@ abstract public class PathEngine
         Iterator<Node> iter2 = null ;
         if ( direction() ) {
             Iter<Triple> iter1 = Iter.iter(graphFind(node, property, Node.ANY)) ;
-            iter2 = iter1.map(PathEngine.selectObject) ;
+            iter2 = iter1.map(Triple::getObject) ;
         } else {
             Iter<Triple> iter1 = Iter.iter(graphFind(Node.ANY, property, node)) ;
-            iter2 = iter1.map(PathEngine.selectSubject) ;
+            iter2 = iter1.map(Triple::getSubject) ;
         }
 
         return iter2 ;
@@ -151,30 +149,15 @@ abstract public class PathEngine
         return (x <= 0) ? x : x - 1 ;
     }
 
-    protected static Transform<Triple, Node> selectSubject = new Transform<Triple, Node>() {
-        @Override
-        public Node convert(Triple triple) { return triple.getSubject() ; }
-    } ;
-    
-    protected static Transform<Triple, Node> selectPredicate = new Transform<Triple, Node>() {
-        @Override
-        public Node convert(Triple triple) { return triple.getPredicate() ; }
-    } ;
-    
-    protected static Transform<Triple, Node> selectObject = new Transform<Triple, Node>() {
-        @Override
-        public Node convert(Triple triple) { return triple.getObject() ; }
-    } ;
-
     protected Iterator<Node> stepExcludeForwards(Node node, List<Node> excludedNodes) {
         Iter<Triple> iter1 = forwardLinks(node, excludedNodes) ;
-        Iter<Node> r1 = iter1.map(selectObject) ;
+        Iter<Node> r1 = iter1.map(Triple::getObject) ;
         return r1 ;
     }
 
     protected Iterator<Node> stepExcludeBackwards(Node node, List<Node> excludedNodes) {
         Iter<Triple> iter1 = backwardLinks(node, excludedNodes) ;
-        Iter<Node> r1 = iter1.map(selectSubject) ;
+        Iter<Node> r1 = iter1.map(Triple::getSubject) ;
         return r1 ;
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEvaluator.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEvaluator.java b/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEvaluator.java
index 3399dec..242cf9a 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEvaluator.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEvaluator.java
@@ -20,8 +20,8 @@ package org.apache.jena.sparql.path.eval ;
 
 import java.util.Collection ;
 import java.util.Iterator ;
+import java.util.function.Predicate;
 
-import org.apache.jena.atlas.iterator.Filter ;
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
@@ -164,7 +164,7 @@ final class PathEvaluator implements PathVisitor
     // Other operations can produce duplicates and so may be executed in
     // different ways depending on cardibnality requirements.
 
-    protected static class FilterExclude implements Filter<Triple>
+    protected static class FilterExclude implements Predicate<Triple>
     {
         private Collection<Node> excludes ;
 
@@ -173,7 +173,7 @@ final class PathEvaluator implements PathVisitor
         }
 
         @Override
-        public boolean accept(Triple triple) {
+        public boolean test(Triple triple) {
             return !excludes.contains(triple.getPredicate()) ;
         }
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/pfunction/library/strSplit.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/pfunction/library/strSplit.java b/jena-arq/src/main/java/org/apache/jena/sparql/pfunction/library/strSplit.java
index 126728c..86f9331 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/pfunction/library/strSplit.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/pfunction/library/strSplit.java
@@ -22,7 +22,6 @@ import java.util.Arrays ;
 import java.util.Iterator ;
 
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.lib.StrUtils ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
@@ -61,13 +60,10 @@ public class strSplit extends PFuncSimpleAndList
         
         // StrUtils will also trim whitespace
         String[] tokens = StrUtils.split(s, regex);
-        Iterator<Binding> it = Iter.map(Arrays.asList(tokens).iterator(), new Transform<String,Binding>() {
-            @Override
-            public Binding convert(String item)
-            {
-                return BindingFactory.binding(binding, subjectVar, NodeFactory.createLiteral(item)) ;
-            }
-        });
+		Iterator<Binding> it = Iter.map(
+				Arrays.asList(tokens).iterator(),
+				item -> BindingFactory.binding(binding, subjectVar,
+						NodeFactory.createLiteral(item)));
         return new QueryIterPlainWrapper(it, execCxt);
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/resultset/CSVInput.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/CSVInput.java b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/CSVInput.java
index 7d6487b..43f6c65 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/CSVInput.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/CSVInput.java
@@ -22,10 +22,10 @@ import java.io.InputStream ;
 import java.util.ArrayList ;
 import java.util.Iterator ;
 import java.util.List ;
+import java.util.function.Function;
 
 import org.apache.jena.atlas.csv.CSVParser ;
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.logging.FmtLog ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
@@ -69,10 +69,10 @@ public class CSVInput
         CSVParser parser = CSVParser.create(in) ;
         final List<Var> vars = vars(parser) ;
         List<String> varNames = Var.varNames(vars) ;
-        Transform<List<String>, Binding> transform = new Transform<List<String>, Binding>(){
+        Function<List<String>, Binding> transform = new Function<List<String>, Binding>(){
             private int count = 1 ;
             @Override
-            public Binding convert(List<String> row) {
+            public Binding apply(List<String> row) {
                 if ( row.size() != vars.size() )
                     FmtLog.warn(log, "Row %d: Length=%d: expected=%d", count, row.size(), vars.size()) ;
                 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java
index c11a38c..99413a5 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java
@@ -19,9 +19,7 @@
 package org.apache.jena.sparql.resultset;
 
 import java.util.* ;
-
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.query.* ;
@@ -230,7 +228,7 @@ public class ResultSetCompare
     }
 
     static private List<Binding> convert(ResultSet rs) {
-        return Iter.iter(rs).map(qs2b).toList() ;
+        return Iter.iter(rs).map(item -> BindingUtils.asBinding(item)).toList() ;
     }
     
     
@@ -299,14 +297,6 @@ public class ResultSetCompare
         }
         return true ;
     }
-
-    private static Transform<QuerySolution, Binding> qs2b = new Transform<QuerySolution, Binding> () {
-        @Override
-        public Binding convert(QuerySolution item)
-        {
-            return BindingUtils.asBinding(item) ;
-        }
-    } ;
     
     public static class BNodeIso implements EqualityTest
     {

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/util/ModelUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/ModelUtils.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/ModelUtils.java
index 9738b47..48ee0c9 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/ModelUtils.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/ModelUtils.java
@@ -22,7 +22,6 @@ import java.util.Iterator ;
 
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.iterator.IteratorResourceClosing ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.lib.Closeable ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -101,14 +100,7 @@ public class ModelUtils
     
     public static StmtIterator triplesToStatements(final Iterator<Triple> it, final Model refModel)
     {
-        return new StmtIteratorImpl(Iter.map(it, new Transform<Triple,Statement>()
-        {
-            @Override
-            public Statement convert(Triple item)
-            {
-                return refModel.asStatement(item);
-            }
-        }))
+        return new StmtIteratorImpl(Iter.map(it, refModel::asStatement))
         {
             // Make sure to close the incoming iterator
             @Override
@@ -128,14 +120,7 @@ public class ModelUtils
     
     public static Iterator<Triple> statementsToTriples(final Iterator<Statement> it)
     {
-        return new IteratorResourceClosing<>(Iter.map(it, new Transform<Statement,Triple>()
-        {
-            @Override
-            public Triple convert(Statement item)
-            {
-                return item.asTriple();
-            }
-        }),
+        return new IteratorResourceClosing<>(Iter.map(it, Statement::asTriple),
         new Closeable()
         {
             @Override

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphList.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphList.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphList.java
index d1dee93..fbc01b4 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphList.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphList.java
@@ -24,10 +24,8 @@ import java.util.HashSet ;
 import java.util.Iterator ;
 import java.util.List ;
 import java.util.Set ;
-
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.iterator.IteratorConcat ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
@@ -139,13 +137,7 @@ public class GraphList
                 return Iter.nullIterator() ;
         }
         List<Node> x = members(gn) ;
-        Transform<Node, Triple> transform = new Transform<Node, Triple>() {
-            @Override
-            public Triple convert(Node obj) {
-                return Triple.create(s, ListPFunction.nListMember, obj) ;
-            }
-        } ;
-        return Iter.map(x.iterator(), transform) ;
+        return Iter.map(x.iterator(), t -> Triple.create(s, ListPFunction.nListMember, t)) ;
     }
 
     private static boolean isAny(Node x) {
@@ -354,8 +346,6 @@ public class GraphList
 
     private static GNode next(GNode gnode) { return new GNode(gnode, cdr(gnode)) ; }
 
-    private static Node value(GNode gnode) { return car(gnode) ; }
-
     public static boolean isListNode (GNode gnode)
     { return gnode.node.equals(NIL) || isCons(gnode) ; }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/test/java/org/apache/jena/riot/process/TestNormalization.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/process/TestNormalization.java b/jena-arq/src/test/java/org/apache/jena/riot/process/TestNormalization.java
index 1d62f2a..20cf455 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/process/TestNormalization.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/process/TestNormalization.java
@@ -103,7 +103,7 @@ public class TestNormalization extends BaseTest
         Node n1 = NodeFactoryExtra.parseNode(input) ;
         assertTrue("Invalid lexical form", n1.getLiteralDatatype().isValid(n1.getLiteralLexicalForm()));
         
-        Node n2 = CanonicalizeLiteral.get().convert(n1) ;
+        Node n2 = CanonicalizeLiteral.get().apply(n1) ;
         Node n3 = NodeFactoryExtra.parseNode(expected) ;
         assertEquals("Invalid canonicalization (lex)", n3.getLiteralLexicalForm(), n2.getLiteralLexicalForm()) ;
         assertEquals("Invalid canonicalization (node)", n3, n2) ;
@@ -115,7 +115,7 @@ public class TestNormalization extends BaseTest
     private static void normalizeLang(String input, String expected, boolean correct)
     {
         Node n1 = NodeFactoryExtra.parseNode(input) ;
-        Node n2 = CanonicalizeLiteral.get().convert(n1) ;
+        Node n2 = CanonicalizeLiteral.get().apply(n1) ;
         Node n3 = NodeFactoryExtra.parseNode(expected) ;
         if ( correct )
         {


[42/50] [abbrv] jena git commit: Added initial contract tests added testing_framework

Posted by cl...@apache.org.
http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestSuite.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestSuite.java b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestSuite.java
new file mode 100644
index 0000000..7e19122
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestSuite.java
@@ -0,0 +1,143 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.testing_framework.manifest;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import org.junit.internal.runners.ErrorReportingRunner;
+import org.junit.runner.Description;
+import org.junit.runner.Runner;
+import org.junit.runner.notification.RunNotifier;
+import org.junit.runners.ParentRunner;
+import org.junit.runners.Suite;
+import org.junit.runners.model.InitializationError;
+import org.junit.runners.model.RunnerBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.jena.shared.JenaException;
+
+/**
+ * Class that runs the Manifest annotated tests.
+ * 
+ * Used with <code>@RunWith( ManifestSuite.class )</code> this class loads a 
+ * manifest test suite file and adds the tests.
+ * <p>
+ * Tests annotated with <code>@RunWith( ManifestSuite.class )</code> must
+ * have a <code>ManifestFile</code> annotation specifying the path to the manifest file
+ * </p>
+ */
+public class ManifestSuite extends ParentRunner<Runner> {
+	private static final Logger LOG = LoggerFactory
+			.getLogger(ManifestSuite.class);
+	private final List<Runner> fRunners;
+	private final ManifestItemHandler itemHandler;
+	private final ManifestFile mf;
+
+	/**
+	 * Called reflectively on classes annotated with
+	 * <code>@RunWith(Suite.class)</code>
+	 * 
+	 * @param cls
+	 *            the root class
+	 * @param builder
+	 *            builds runners for classes in the suite
+	 * @throws Throwable
+	 */
+	public ManifestSuite(Class<? extends ManifestItemHandler> cls,
+			RunnerBuilder builder) throws Throwable {
+		super(cls);
+
+		List<Throwable> errors = new ArrayList<Throwable>();
+
+		mf = cls.getAnnotation(ManifestFile.class);
+		if (mf == null) {
+			throw new IllegalStateException(
+					"ManifestSuite requries ManifestFile annotation");
+		}
+		itemHandler = cls.newInstance();
+
+		Runner[] runner = new Runner[1];
+		try {
+			runner[0] = oneManifest(new Manifest(mf.value()),
+					new ArrayList<Runner>());
+		} catch (JenaException ex) {
+			runner[0] = new ErrorReportingRunner(null, ex);
+		}
+
+		if (!errors.isEmpty()) {
+			throw new InitializationError(errors);
+		}
+		fRunners = Collections.unmodifiableList(Arrays.asList(runner));
+	}
+
+	private Runner oneManifest(final Manifest manifest, List<Runner> r) {
+
+		// Recurse
+		for (Iterator<String> iter = manifest.includedManifests(); iter
+				.hasNext();) {
+			try {
+				r.add(oneManifest(new Manifest(iter.next()),
+						new ArrayList<Runner>()));
+			} catch (JenaException ex) {
+				r.add(new ErrorReportingRunner(null, ex));
+			}
+		}
+		itemHandler.setTestRunnerList(r);
+		manifest.apply(itemHandler);
+		try {
+			return new Suite((Class<?>) null, r) {
+
+				@Override
+				protected String getName() {
+					return manifest.getName();
+				}
+
+			};
+		} catch (InitializationError e) {
+			return new ErrorReportingRunner(null, e);
+		}
+	}
+
+	@Override
+	protected List<Runner> getChildren() {
+		return fRunners;
+	}
+
+	@Override
+	protected Description describeChild(Runner child) {
+		return child.getDescription();
+	}
+
+	@Override
+	protected void runChild(Runner child, RunNotifier notifier) {
+		child.run(notifier);
+	}
+
+	/**
+	 * Returns a name used to describe this Runner
+	 */
+	@Override
+	protected String getName() {
+		return String.format("%s - %s", super.getName(), mf.value());
+	}
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestTest.java b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestTest.java
new file mode 100644
index 0000000..cfde240
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestTest.java
@@ -0,0 +1,13 @@
+package org.apache.jena.testing_framework.manifest;
+
+public abstract class ManifestTest {
+
+	protected ManifestItem manifestItem;
+
+	public final void setManifestItem(ManifestItem manifestItem) {
+		this.manifestItem = manifestItem;
+	}
+
+	abstract public void runTest();
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestTestRunner.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestTestRunner.java b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestTestRunner.java
new file mode 100644
index 0000000..616b444
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestTestRunner.java
@@ -0,0 +1,75 @@
+package org.apache.jena.testing_framework.manifest;
+
+import java.lang.annotation.Annotation;
+import java.util.Arrays;
+import java.util.List;
+
+import org.junit.runner.Description;
+import org.junit.runners.BlockJUnit4ClassRunner;
+import org.junit.runners.model.FrameworkMethod;
+import org.junit.runners.model.InitializationError;
+
+public class ManifestTestRunner extends BlockJUnit4ClassRunner {
+
+	private ManifestItem manifestItem;
+
+	public ManifestTestRunner(ManifestItem manifestItem,
+			Class<? extends ManifestTest> cls) throws InitializationError {
+		super(cls);
+		this.manifestItem = manifestItem;
+	}
+
+	/**
+	 * Returns the name that describes {@code method} for {@link Description}s.
+	 * Default implementation is the method's name
+	 */
+	@Override
+	protected String testName(FrameworkMethod method) {
+		return manifestItem.getTestName();
+	}
+
+	/**
+	 * Returns the methods that run tests. Default implementation returns all
+	 * methods annotated with {@code @Test} on this class and superclasses that
+	 * are not overridden.
+	 */
+	@Override
+	protected List<FrameworkMethod> computeTestMethods() {
+		FrameworkMethod[] lst = new FrameworkMethod[1];
+
+		try {
+			lst[0] = new FrameworkMethod(getTestClass().getJavaClass()
+					.getMethod("runTest")) {
+
+				@Override
+				public String getName() {
+					return manifestItem.getTestName();
+				}
+			};
+		} catch (NoSuchMethodException e) {
+			throw new IllegalStateException(e);
+		} catch (SecurityException e) {
+			throw new IllegalStateException(e);
+		}
+		return Arrays.asList(lst);
+	}
+
+	@Override
+	public Description getDescription() {
+		return Description.createTestDescription(this.getTestClass()
+				.getJavaClass(), manifestItem.getTestName(), new Annotation[0]);
+	}
+
+	/**
+	 * Returns a new fixture for running a test. Default implementation executes
+	 * the test class's no-argument constructor (validation should have ensured
+	 * one exists).
+	 */
+	@Override
+	protected Object createTest() throws Exception {
+		ManifestTest instance = (ManifestTest) super.createTest();
+		instance.setManifestItem(manifestItem);
+		return instance;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/package-info.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/package-info.java b/jena-core/src/test/java/org/apache/jena/testing_framework/package-info.java
new file mode 100644
index 0000000..96f3e42
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/package-info.java
@@ -0,0 +1,109 @@
+/*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ */
+package org.apache.jena.testing_framework;
+
+/**
+ * Foo set of classes providing support for testing.
+ * <p>
+ * Testing guidelines/suggestions.
+ * </p><p>
+ * Interface tests are built so that developers may test that implementations meet the contract
+ * set out in the interface and accompanying documentation.
+ * </p>
+ * <h4>Producers</h4>
+ * <p>
+ * The test and suites use an instance of the [INTERFACE]ProducerInterface to create an instance
+ * of the the Object being tested.   
+ * </p>
+ * <h4>Tests</h4>
+ * <p>
+ * Interface tests are noted as Abstract[INTERFACE]Test.  Implementations of [INTERFACE] should
+ * create a concrete implementation of Abstract[INTERFACE]Test with an [INTERFACE]Producer to create
+ * instances of the Object.  Passing the test indicates a compliance with the base interface 
+ * definition.
+ * </p><p>
+ * In general to implement a test requires a few lines of code as is noted in the example below
+ * where the new Foo graph implementation is being tested.</p>
+ * <pre><code>
+ * public class FooGraphTest extends AbstractGraphTest {
+ * 
+ *   // the graph producer to use while running
+ *   GraphProducerInterface graphProducer = new FooGraphTest.GraphProducer();
+ * 
+ *   @Override
+ *   protected GraphProducerInterface getGraphProducer() {
+ *     return graphProducer;
+ *   }
+ * 
+ *   // the implementation of the graph producer.
+ *   public static class GraphProducer extends AbstractGraphProducer {
+ * 
+ *     @Override
+ *     protected Graph createNewGraph() {
+ *       return new FooGraph();
+ *     }
+ *   }
+ * }
+ * </code></pre>
+ * <h4>Suites</h4>
+ * <p>
+ * Test suites are named as Abstract[INTERFACE]Suite.  Suites contain several tests (see above)
+ * that exercise all of the tests for the components of the object under test.  For example the 
+ * graph suite includes tests for the graph itself, the reifier, finding literals, recursive 
+ * subgraph extraction, event manager, and transactions.  Running the suites is a bit more 
+ * complicated then running the tests.
+ * </p>
+ * Suites are created using the JUnit 4 <code>@RunWith(Suite.class)</code and 
+ * <code>@Suite.SuiteClasses({ })</code> annotations.  This has several effects that the developer 
+ * should know about:</p>
+ * <ul>
+ * <li>The suite class does not get instantiated during the run.</li>
+ * <li>The test class names must be known at coding time (not run time) as they are listed in the
+ * annotation.</li>
+ * <li>Configuration of the tests has to occur during the static initialization phase of class 
+ * loading.</li>
+ * </ul>
+ * <p>
+ * To meet these requirements the AbstractGraphSuite has a static variable that holds the instance
+ * of the GraphProducerInterface and a number of local static implementations of the Abstract tests
+ * that implement the "getGraphProducer()" method by returning the static instance.  The names of 
+ * the local graphs are then used in the @Suite.SuiteClasses annotation.  This makes creating an
+ * instance of the AbstractGraphSuite for a graph implementation fairly simple as is noted below.
+ * </p>
+ * <pre><code>
+ * public class FooGraphSuite extends AbstractGraphSuite {
+ *   @BeforeClass
+ *   public static void beforeClass() {
+ *     setGraphProducer(new GraphProducer());
+ *   }
+ *   
+ *   public static class GraphProducer extends AbstractGraphProducer {
+ *     @Override
+ *     protected Graph createNewGraph() {
+ *       return new FooGraph();
+ *     }
+ *   }
+ * }
+ * </code></pre>
+ * <p>
+ * <b>Note:</b> that the beforeClass() method is annotated with @BeforeClass.  the @BeforeClass 
+ * causes it to be run once before any of the test methods in the class. This will set the static
+ * instance of the graph producer before the suite is run so that it is provided to the enclosed
+ * tests.
+ * </p> 
+ */

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/tuples/TupleItem.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/tuples/TupleItem.java b/jena-core/src/test/java/org/apache/jena/testing_framework/tuples/TupleItem.java
new file mode 100644
index 0000000..65aff5b
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/tuples/TupleItem.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.testing_framework.tuples;
+
+/**
+ * The unit found in a line of a tuple. Can be a string (quoted, possibly with
+ * the datatype, or unquoted) or a URI.
+ */
+public class TupleItem {
+	public static final int URI = 0;
+	public static final int STRING = 1;
+	public static final int UNKNOWN = 2;
+	public static final int UNQUOTED = 3;
+	public static final int ANON = 4;
+
+	String rep;
+	String datatype;
+	String asFound;
+	int itemType;
+
+	TupleItem(String value, String valAsFound, int type, String dt) {
+		rep = value;
+		asFound = valAsFound;
+		itemType = type;
+		datatype = dt;
+	}
+
+	public int getType() {
+		return itemType;
+	}
+
+	public boolean isURI() {
+		return itemType == URI;
+	}
+
+	public boolean isString() {
+		return itemType == STRING;
+	}
+
+	public boolean isUnknown() {
+		return itemType == UNKNOWN;
+	}
+
+	public boolean isUnquoted() {
+		return itemType == UNQUOTED;
+	}
+
+	public boolean isAnon() {
+		return itemType == ANON;
+	}
+
+	public String get() {
+		return rep;
+	}
+
+	public String getDT() {
+		return datatype;
+	}
+
+	public String asQuotedString() {
+		return asFound;
+	}
+
+	@Override
+	public String toString() {
+		return rep;
+	}
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b293ee8a/jena-core/src/test/java/org/apache/jena/testing_framework/tuples/TupleSet.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/tuples/TupleSet.java b/jena-core/src/test/java/org/apache/jena/testing_framework/tuples/TupleSet.java
new file mode 100644
index 0000000..8e78879
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/tuples/TupleSet.java
@@ -0,0 +1,274 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.testing_framework.tuples;
+
+import java.io.*;
+import java.util.*;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TupleSet implements Iterator<List<TupleItem>> {
+	BufferedReader in;
+	public String line = null;
+	public int lineNumber = 0;
+
+	static final char COMMENTCHAR = '#';
+	List<TupleItem> current = null;
+	boolean finished = false;
+
+	protected static Logger logger = LoggerFactory.getLogger(TupleSet.class);
+
+	/** Creates new TupleSet */
+	public TupleSet(Reader r) {
+		if (!(r instanceof BufferedReader))
+			in = new BufferedReader(r);
+		else
+			in = (BufferedReader) r;
+	}
+
+	@Override
+	public boolean hasNext() {
+		if (finished)
+			return false;
+
+		if (current == null)
+			current = tuple();
+		return current != null;
+	}
+
+	@Override
+	public List<TupleItem> next() {
+		if (hasNext()) {
+			List<TupleItem> x = current;
+			current = null;
+			return x;
+		} else
+			return null;
+	}
+
+	@Override
+	public void remove() {
+		throw new java.lang.UnsupportedOperationException("TupleSet.remove");
+	}
+
+	private List<TupleItem> tuple() {
+
+		try {
+			lineNumber++;
+			line = in.readLine();
+		} catch (IOException e) {
+		}
+
+		if (line == null) {
+			finished = true;
+			return null;
+		}
+
+		// System.out.println("Line: "+line) ;
+		List<TupleItem> tuple = new ArrayList<TupleItem>();
+		int i = 0;
+		int j = 0;
+		boolean errorFound = false;
+
+		tupleLoop: for (;;) {
+			// Move to beginning of next item.
+			i = skipwhitespace(line, j);
+
+			if (i < 0)
+				break;
+
+			int iStart = -2; // Points to the beginning of the item as found
+			int jStart = -2; // Points to the item without quotes
+			int iFinish = -2; // Points after the end of the item as found
+			int jFinish = -2; // Points after the end of the item without quotes
+			int dtStart = -2; // Points to start of datatype (after < quote)
+			int dtFinish = -2; // Points to end of datatype
+			int type = TupleItem.UNKNOWN;
+
+			switch (line.charAt(i)) {
+			case COMMENTCHAR:
+				break tupleLoop;
+			case '<':
+				type = TupleItem.URI;
+				iStart = i;
+				jStart = i + 1;
+				int newPosn = parseURI(i, line);
+				if (newPosn < 0) {
+					errorFound = true;
+					break tupleLoop;
+				}
+				j = newPosn;
+
+				iFinish = j + 1;
+				jFinish = j;
+				break;
+			case '"':
+				type = TupleItem.STRING;
+				iStart = i;
+				jStart = i + 1;
+				boolean inEscape = false;
+				for (j = i + 1; j < line.length(); j++) {
+					char ch = line.charAt(j);
+					if (inEscape) {
+						// ToDo: escape
+						inEscape = false;
+						continue;
+					}
+					// Not an escape
+					if (ch == '"')
+						break;
+
+					if (ch == '\\')
+						inEscape = true;
+					if (ch == '\n' || ch == '\r') {
+						errorFound = true;
+						break tupleLoop;
+
+					}
+				}
+
+				// Malformed
+				if (j == line.length()) {
+					errorFound = true;
+					break tupleLoop;
+				}
+
+				iFinish = j + 1;
+				jFinish = j;
+				// RDF literals may be followed by their type.
+
+				if (j < line.length() - 3 && line.charAt(j + 1) == '^'
+						&& line.charAt(j + 2) == '^'
+						&& line.charAt(j + 3) == '<') {
+					dtFinish = parseURI(j + 3, line);
+					dtStart = j + 4;
+					if (dtFinish < 0) {
+						errorFound = true;
+						break tupleLoop;
+					}
+					j = dtFinish + 1;
+					// String dt = line.substring(dtStart, dtFinish) ;
+					// System.out.println("I see a datatype:"+dt) ;
+				}
+
+				break;
+			case '_':
+				type = TupleItem.ANON;
+				iStart = i;
+				for (j = i + 1; j < line.length(); j++) {
+					char ch = line.charAt(j);
+					if (ch == ' ' || ch == '\t' || ch == '.')
+						break;
+					if (!Character.isLetterOrDigit(ch) && !(ch == '_')
+							&& !(ch == ':')) {
+						errorFound = true;
+						break tupleLoop;
+					}
+				}
+				iFinish = j;
+				jStart = iStart;
+				jFinish = iFinish;
+				break;
+			case '.':
+			case '\n':
+			case '\r':
+				return tuple;
+			default:
+				type = TupleItem.UNQUOTED;
+				iStart = i;
+				jStart = i;
+				for (j = i + 1; j < line.length(); j++) {
+					char ch = line.charAt(j);
+					if (ch == ' ' || ch == '\t' || ch == '.')
+						break;
+
+					// if ( ! Character.isLetterOrDigit(line.charAt(i)) )
+					// {
+					// errorFound = true ;
+					// break tupleLoop;
+					// }
+				}
+				// Malformed
+				if (j == line.length() + 1) {
+					errorFound = true;
+					break tupleLoop;
+				}
+				iFinish = j;
+				jFinish = j;
+				break;
+			}
+			String item = line.substring(jStart, jFinish);
+			String literal = line.substring(iStart, iFinish);
+			String dt = null;
+			if (dtStart > 0)
+				dt = line.substring(dtStart, dtFinish);
+
+			tuple.add(new TupleItem(item, literal, type, dt));
+			j++;
+			// End of item.
+		}
+		// End of this line.
+		if (errorFound) {
+			logger.error("Error in TupleSet.tuple: " + line);
+
+			String s = "";
+			int k = 0;
+			for (; k < i; k++)
+				s = s + " ";
+			s = s + "^";
+			for (; k < j - 1; k++)
+				s = s + " ";
+			s = s + "^";
+			logger.error(s);
+			return null;
+		}
+
+		if (tuple.size() == 0) {
+			// Nothing found : loop by tail recursion
+			return tuple();
+		}
+		return tuple;
+	}
+
+	private int skipwhitespace(String s, int i) {
+		for (; i < s.length(); i++) {
+			char ch = s.charAt(i);
+			// Horizonal whitespace
+			if (ch != ' ' && ch != '\t')
+				return i;
+		}
+		return -1;
+	}
+
+	private int parseURI(int i, String line) {
+		int j;
+		for (j = i + 1; j < line.length(); j++) {
+			char ch = line.charAt(j);
+			if (ch == '>')
+				break;
+			if (ch == '\n' || ch == '\r')
+				return -1;
+		}
+		// Malformed
+		if (j == line.length())
+			return -2;
+		return j;
+	}
+}


[06/50] [abbrv] jena git commit: JENA-929: PR#54: Deprecating Map1 in favor of Java8 Function

Posted by cl...@apache.org.
JENA-929: PR#54: Deprecating Map1 in favor of Java8 Function


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/3656b686
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/3656b686
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/3656b686

Branch: refs/heads/add-contract-tests
Commit: 3656b686b7f9cfcf21fa14bb337342021a74c8f7
Parents: 5b55795
Author: Andy Seaborne <an...@apache.org>
Authored: Fri May 1 14:24:08 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri May 1 14:24:08 2015 +0100

----------------------------------------------------------------------
 jena-core/src/main/java/jena/schemagen.java     | 40 ++++++++++++--------
 .../apache/jena/assembler/AssemblerHelp.java    |  2 +-
 .../apache/jena/assembler/ModelExpansion.java   |  2 +-
 .../assembler/assemblers/AssemblerGroup.java    |  2 +-
 .../main/java/org/apache/jena/graph/Triple.java | 10 ++---
 .../apache/jena/ontology/impl/OntModelImpl.java |  1 -
 .../org/apache/jena/rdf/model/Statement.java    | 15 +-------
 .../org/apache/jena/graph/test/TestTriple.java  | 12 ++++--
 .../jena/rdf/model/test/TestResources.java      |  6 +--
 .../jena/rdf/model/test/TestStatements.java     | 11 ++----
 10 files changed, 46 insertions(+), 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/3656b686/jena-core/src/main/java/jena/schemagen.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/schemagen.java b/jena-core/src/main/java/jena/schemagen.java
index 50240ed..29642bc 100644
--- a/jena-core/src/main/java/jena/schemagen.java
+++ b/jena-core/src/main/java/jena/schemagen.java
@@ -23,25 +23,33 @@ package jena;
 
 // Imports
 ///////////////
-import static jena.cmdline.CmdLineUtils.setLog4jConfiguration;
-
-import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.function.Function;
-import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
-
-import org.apache.jena.ontology.* ;
+import static jena.cmdline.CmdLineUtils.setLog4jConfiguration ;
+
+import java.io.ByteArrayOutputStream ;
+import java.io.File ;
+import java.io.FileOutputStream ;
+import java.io.PrintStream ;
+import java.net.MalformedURLException ;
+import java.net.URL ;
+import java.text.SimpleDateFormat ;
+import java.util.* ;
+import java.util.regex.Pattern ;
+import java.util.regex.PatternSyntaxException ;
+
+import org.apache.jena.ontology.Individual ;
+import org.apache.jena.ontology.OntModel ;
+import org.apache.jena.ontology.OntModelSpec ;
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.shared.JenaException ;
 import org.apache.jena.util.FileManager ;
-import org.apache.jena.util.iterator.* ;
-import org.apache.jena.vocabulary.* ;
-import org.apache.xerces.util.XMLChar;
-import org.slf4j.LoggerFactory;
+import org.apache.jena.util.iterator.ExtendedIterator ;
+import org.apache.jena.util.iterator.WrappedIterator ;
+import org.apache.jena.vocabulary.OWL ;
+import org.apache.jena.vocabulary.RDF ;
+import org.apache.jena.vocabulary.RDFS ;
+import org.apache.jena.vocabulary.XSD ;
+import org.apache.xerces.util.XMLChar ;
+import org.slf4j.LoggerFactory ;
 
 
 

http://git-wip-us.apache.org/repos/asf/jena/blob/3656b686/jena-core/src/main/java/org/apache/jena/assembler/AssemblerHelp.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/assembler/AssemblerHelp.java b/jena-core/src/main/java/org/apache/jena/assembler/AssemblerHelp.java
index 6c0ad5a..ac5d031 100644
--- a/jena-core/src/main/java/org/apache/jena/assembler/AssemblerHelp.java
+++ b/jena-core/src/main/java/org/apache/jena/assembler/AssemblerHelp.java
@@ -208,7 +208,7 @@ public class AssemblerHelp
     */
     public static Set<Resource> findSpecificTypes( Resource root, Resource baseType )
         {
-        List<RDFNode> types = root.listProperties( RDF.type ).mapWith( Statement.Util.getObject ).toList();
+        List<RDFNode> types = root.listProperties( RDF.type ).mapWith( Statement::getObject ).toList();
         Set<Resource> results = new HashSet<>();
         for (int i = 0; i < types.size(); i += 1)
             {

http://git-wip-us.apache.org/repos/asf/jena/blob/3656b686/jena-core/src/main/java/org/apache/jena/assembler/ModelExpansion.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/assembler/ModelExpansion.java b/jena-core/src/main/java/org/apache/jena/assembler/ModelExpansion.java
index 7fcce36..45f3712 100644
--- a/jena-core/src/main/java/org/apache/jena/assembler/ModelExpansion.java
+++ b/jena-core/src/main/java/org/apache/jena/assembler/ModelExpansion.java
@@ -270,7 +270,7 @@ public class ModelExpansion
 
     private static Set<Resource> subjectSet( Model result, Resource S, Property P, RDFNode O )
         {
-        return result.listStatements( S, P, O ) .mapWith( Statement.Util.getSubject ).toSet();
+        return result.listStatements( S, P, O ) .mapWith( Statement::getSubject ).toSet();
         }
 
     private static List<RDFNode> asJavaList( Resource resource )

http://git-wip-us.apache.org/repos/asf/jena/blob/3656b686/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerGroup.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerGroup.java b/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerGroup.java
index 1daf679..02d21ca 100644
--- a/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerGroup.java
+++ b/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerGroup.java
@@ -99,7 +99,7 @@ public abstract class AssemblerGroup extends AssemblerBase implements Assembler
         
         public Set<Resource> implementsTypes()
             { 
-            return implementTypes.listStatements().mapWith( Statement.Util.getSubject ).toSet(); }
+            return implementTypes.listStatements().mapWith( Statement::getSubject ).toSet(); }
             }
     
     static class PlainAssemblerGroup extends AssemblerGroup

http://git-wip-us.apache.org/repos/asf/jena/blob/3656b686/jena-core/src/main/java/org/apache/jena/graph/Triple.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/graph/Triple.java b/jena-core/src/main/java/org/apache/jena/graph/Triple.java
index e3428f2..89d7238 100644
--- a/jena-core/src/main/java/org/apache/jena/graph/Triple.java
+++ b/jena-core/src/main/java/org/apache/jena/graph/Triple.java
@@ -19,7 +19,9 @@
 package org.apache.jena.graph;
 
 import org.apache.jena.shared.PrefixMapping ;
-import org.apache.jena.util.iterator.* ;
+import org.apache.jena.util.iterator.ExtendedIterator ;
+import org.apache.jena.util.iterator.Filter ;
+import org.apache.jena.util.iterator.NullIterator ;
 
 /**
     Triples are the basis for RDF statements; they have a subject, predicate, and
@@ -83,12 +85,6 @@ public class Triple
     public Node getMatchSubject()
         { return anyToNull( subj ); }
     
-    public static final Map1<Triple, Node> getSubject = t -> t.getSubject();
-        
-    public static final Map1<Triple, Node> getPredicate = t -> t.getPredicate();
-        
-    public static final Map1<Triple, Node> getObject = t -> t.getObject();
-
     /** Return predicate or null, not Node.ANY */ 
     public Node getMatchPredicate()
         { return anyToNull( pred ); }

http://git-wip-us.apache.org/repos/asf/jena/blob/3656b686/jena-core/src/main/java/org/apache/jena/ontology/impl/OntModelImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntModelImpl.java b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntModelImpl.java
index e6dc9af..458a945 100644
--- a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntModelImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntModelImpl.java
@@ -28,7 +28,6 @@ import java.io.OutputStream ;
 import java.io.Reader ;
 import java.io.Writer ;
 import java.util.* ;
-import java.util.function.Function;
 
 import org.apache.jena.enhanced.BuiltinPersonalities ;
 import org.apache.jena.enhanced.EnhNode ;

http://git-wip-us.apache.org/repos/asf/jena/blob/3656b686/jena-core/src/main/java/org/apache/jena/rdf/model/Statement.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/Statement.java b/jena-core/src/main/java/org/apache/jena/rdf/model/Statement.java
index 14bb52b..376659d 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/Statement.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/Statement.java
@@ -18,8 +18,7 @@
 
 package org.apache.jena.rdf.model;
 
-import org.apache.jena.graph.* ;
-import org.apache.jena.util.iterator.Map1 ;
+import org.apache.jena.graph.FrontsTriple ;
 
 /** An RDF Statement.
  *
@@ -390,16 +389,4 @@ public interface Statement extends FrontsTriple
      * removes all four triples of the reification quad.
      */
     void removeReification();
-    
-    /**
-        Utility constants -- in a nested class for namespace reasons.
-    */
-    public static class Util
-        {
-        public static final Map1<Statement, Resource> getSubject = s -> s.getSubject();
-            
-        public static final Map1<Statement, Property> getPredicate = s -> s.getPredicate();
-            
-        public static final Map1<Statement, RDFNode> getObject = s -> s.getObject();
-    }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/3656b686/jena-core/src/test/java/org/apache/jena/graph/test/TestTriple.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/test/TestTriple.java b/jena-core/src/test/java/org/apache/jena/graph/test/TestTriple.java
index 16fbcd7..6d72c1d 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/test/TestTriple.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/test/TestTriple.java
@@ -18,6 +18,8 @@
 
 package org.apache.jena.graph.test;
 
+import java.util.function.Function ;
+
 import junit.framework.TestSuite ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
@@ -258,10 +260,12 @@ public class TestTriple extends GraphTestBase
     
     public void testTripleMaps()
         {
-        assertEquals( node( "x" ), Triple.getSubject.apply( NodeCreateUtils.createTriple( "x P z" ) ) );
-        assertEquals( node( "P" ), Triple.getPredicate.apply( NodeCreateUtils.createTriple( "x P z" ) ) );
-        assertEquals( node( "z" ), Triple.getObject.apply( NodeCreateUtils.createTriple( "x P z" ) ) );
+        assertEquals( node( "x" ), getSubject.apply( NodeCreateUtils.createTriple( "x P z" ) ) );
+        assertEquals( node( "P" ), getPredicate.apply( NodeCreateUtils.createTriple( "x P z" ) ) );
+        assertEquals( node( "z" ), getObject.apply( NodeCreateUtils.createTriple( "x P z" ) ) );
         }
     
-
+    public static final Function<Triple, Node> getSubject = t -> t.getSubject();
+    public static final Function<Triple, Node> getPredicate = t -> t.getPredicate();
+    public static final Function<Triple, Node> getObject = t -> t.getObject();
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/3656b686/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestResources.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestResources.java b/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestResources.java
index c0262f1..a010812 100644
--- a/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestResources.java
+++ b/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestResources.java
@@ -314,21 +314,21 @@ public class TestResources extends AbstractModelTestBase
 		Assert.assertEquals(13,
 				GraphTestBase.iteratorToSet(r.listProperties(RDF.value)).size());
 		Assert.assertEquals(setOf(r), GraphTestBase.iteratorToSet(r
-				.listProperties(RDF.value).mapWith(Statement.Util.getSubject)));
+				.listProperties(RDF.value).mapWith(Statement::getSubject)));
 		//
 		Assert.assertEquals(0, GraphTestBase.iteratorToSet(r.listProperties(p))
 				.size());
 		Assert.assertEquals(
 				new HashSet<Resource>(),
 				GraphTestBase.iteratorToSet(r.listProperties(p).mapWith(
-						Statement.Util.getSubject)));
+						Statement::getSubject)));
 		//
 		Assert.assertEquals(13 + numProps,
 				GraphTestBase.iteratorToSet(r.listProperties()).size());
 		Assert.assertEquals(
 				setOf(r),
 				GraphTestBase.iteratorToSet(r.listProperties().mapWith(
-						Statement.Util.getSubject)));
+						Statement::getSubject)));
 		//
 		r.removeProperties();
 		Assert.assertEquals(0,

http://git-wip-us.apache.org/repos/asf/jena/blob/3656b686/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestStatements.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestStatements.java b/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestStatements.java
index 498f357..06126aa 100644
--- a/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestStatements.java
+++ b/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestStatements.java
@@ -115,13 +115,10 @@ public class TestStatements extends AbstractModelTestBase
 
 	public void testStatmentMap1Selectors()
 	{
-		final Statement s = ModelHelper.statement("sub pred obj");
-		Assert.assertEquals(ModelHelper.resource("sub"),
-				Statement.Util.getSubject.apply(s));
-		Assert.assertEquals(ModelHelper.resource("pred"),
-				Statement.Util.getPredicate.apply(s));
-		Assert.assertEquals(ModelHelper.resource("obj"),
-				Statement.Util.getObject.apply(s));
+		final Statement stmt = ModelHelper.statement("sub pred obj");
+		Assert.assertEquals(ModelHelper.resource("sub"), stmt.getSubject());
+		Assert.assertEquals(ModelHelper.resource("pred"), stmt.getPredicate()) ;
+		Assert.assertEquals(ModelHelper.resource("obj"), stmt.getObject()) ;
 	}
 
 	/**


[35/50] [abbrv] jena git commit: com.hp.hpl.jena -> org.apache.jena in log4j files

Posted by cl...@apache.org.
com.hp.hpl.jena -> org.apache.jena in log4j files


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/18aaf7da
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/18aaf7da
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/18aaf7da

Branch: refs/heads/add-contract-tests
Commit: 18aaf7dac20e50d2ea3a1f4fb678a4b83812cd6d
Parents: 0ec61c8
Author: Andy Seaborne <an...@apache.org>
Authored: Thu May 7 10:44:32 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu May 7 10:44:32 2015 +0100

----------------------------------------------------------------------
 jena-arq/src/test/resources/log4j-testing.properties | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/18aaf7da/jena-arq/src/test/resources/log4j-testing.properties
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/resources/log4j-testing.properties b/jena-arq/src/test/resources/log4j-testing.properties
index 8ff6f73..5480f7b 100644
--- a/jena-arq/src/test/resources/log4j-testing.properties
+++ b/jena-arq/src/test/resources/log4j-testing.properties
@@ -6,10 +6,11 @@ log4j.appender.stdlog.layout=org.apache.log4j.PatternLayout
 log4j.appender.stdlog.layout.ConversionPattern=%d{HH:mm:ss} %-5p %-25c{1} :: %m%n
 
 # Execution logging
-log4j.logger.com.hp.hpl.jena.arq.info=INFO
-log4j.logger.com.hp.hpl.jena.arq.exec=INFO
+log4j.logger.org.apache.jena.arq.info=INFO
+log4j.logger.org.apache.jena.arq.exec=INFO
 
 # Everything else in Jena
+log4j.logger.org.apache.jena=WARN
 log4j.logger.org.apache.jena.riot=INFO
 
 # Apache Commons HTTP


[20/50] [abbrv] jena git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/jena

Posted by cl...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/jena


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/44ece037
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/44ece037
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/44ece037

Branch: refs/heads/add-contract-tests
Commit: 44ece0373df887a587ad1e05a634f8e057daf025
Parents: 80bb3ed 26c97e6
Author: Andy Seaborne <an...@apache.org>
Authored: Mon May 4 18:12:26 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon May 4 18:12:26 2015 +0100

----------------------------------------------------------------------
 .../src/test/java/org/apache/jena/util/TestOneToManyMap.java     | 4 ++--
 .../org/apache/jena/util/iterator/test/TestResourceUtils.java    | 3 +++
 2 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------



[41/50] [abbrv] jena git commit: Fixed issues with plugin versions and repositories in the POM. added MIT license info to the NOTICE

Posted by cl...@apache.org.
Fixed issues with plugin versions and repositories in the POM.
added MIT license info to the NOTICE


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/eb7760db
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/eb7760db
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/eb7760db

Branch: refs/heads/add-contract-tests
Commit: eb7760dbf541ffb4d605cd069a2b9df91d6f3165
Parents: d2da6f7
Author: Claude Warren <cl...@apache.org>
Authored: Sat May 9 10:41:56 2015 +0100
Committer: Claude Warren <cl...@apache.org>
Committed: Sat May 9 10:41:56 2015 +0100

----------------------------------------------------------------------
 jena-permissions/NOTICE  |  6 +++++-
 jena-permissions/pom.xml | 15 ---------------
 2 files changed, 5 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/eb7760db/jena-permissions/NOTICE
----------------------------------------------------------------------
diff --git a/jena-permissions/NOTICE b/jena-permissions/NOTICE
index d4e11ad..c3cdfae 100644
--- a/jena-permissions/NOTICE
+++ b/jena-permissions/NOTICE
@@ -1,5 +1,9 @@
-Apache Jena - Security module
+Apache Jena - Permissions module
 Copyright 2011, 2012, 2013, 2014, 2015 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
+
+Built with Build Helper Maven Plugin licensed under MIT license.
+
+

http://git-wip-us.apache.org/repos/asf/jena/blob/eb7760db/jena-permissions/pom.xml
----------------------------------------------------------------------
diff --git a/jena-permissions/pom.xml b/jena-permissions/pom.xml
index 95fa648..48d9026 100644
--- a/jena-permissions/pom.xml
+++ b/jena-permissions/pom.xml
@@ -45,20 +45,6 @@
 		<url>http://issues.apache.org/jira/browse/JENA</url>
 		<system>JIRA</system>
 	</issueManagement>
-	<repositories>
-		<repository>
-			<id>apache-snapshots-repo</id>
-			<url>https://repository.apache.org/content/repositories/snapshots/</url>
-		</repository>
-		<repository>
-			<id>apache-staging-repo</id>
-			<url>https://repository.apache.org/content/repositories/staging/</url>
-		</repository>
-		<repository>
-			<id>apache-releases-repo</id>
-			<url>https://repository.apache.org/content/repositories/releases/</url>
-		</repository>
-	</repositories>
 	<build>
 		<plugins>
 			<plugin>
@@ -98,7 +84,6 @@
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-javadoc-plugin</artifactId>
-				<!--  <version>2.9</version> -->
 				<configuration>
 					<excludePackageNames>org.apache.jena.security.example:org.apache.jena.security.example.*</excludePackageNames>
 					<tags>


[31/50] [abbrv] jena git commit: Fix warnings after JENA-931

Posted by cl...@apache.org.
Fix warnings after JENA-931

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/fa3bae84
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/fa3bae84
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/fa3bae84

Branch: refs/heads/add-contract-tests
Commit: fa3bae848ab63855900627d8745246a1170eff7d
Parents: d480bd1
Author: Andy Seaborne <an...@apache.org>
Authored: Wed May 6 19:40:10 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed May 6 19:40:10 2015 +0100

----------------------------------------------------------------------
 .../apache/jena/sparql/engine/iterator/QueryIterGroup.java   | 1 -
 .../java/org/apache/jena/atlas/iterator/IteratorArray.java   | 2 +-
 .../main/java/org/apache/jena/atlas/lib/ActionKeyValue.java  | 2 +-
 .../src/main/java/org/apache/jena/atlas/lib/ListUtils.java   | 2 +-
 .../src/main/java/org/apache/jena/atlas/lib/StrUtils.java    | 8 +++-----
 .../org/apache/jena/atlas/iterator/TestIteratorArray.java    | 3 +++
 .../org/apache/jena/atlas/iterator/TestIteratorPeek.java     | 6 ++----
 .../jena/query/text/assembler/EntityDefinitionAssembler.java | 1 -
 8 files changed, 11 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/fa3bae84/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterGroup.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterGroup.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterGroup.java
index 2b2e194..6595533 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterGroup.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterGroup.java
@@ -26,7 +26,6 @@ import java.util.List ;
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.iterator.IteratorDelayedInitialization ;
 import org.apache.jena.atlas.lib.Pair ;
-import org.apache.jena.ext.com.google.common.collect.ArrayListMultimap;
 import org.apache.jena.ext.com.google.common.collect.HashMultimap;
 import org.apache.jena.ext.com.google.common.collect.Multimap;
 import org.apache.jena.graph.Node ;

http://git-wip-us.apache.org/repos/asf/jena/blob/fa3bae84/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java
index 2c97ca7..c73a8f7 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java
@@ -24,7 +24,7 @@ import java.util.NoSuchElementException ;
 
 /** Iterator over a Java base array */
 /**
- * @deprecated
+ * @deprecated 
  * Prefer {@link Arrays#asList(Object...)} with {@link Iterable#iterator()} or
  * {@link Arrays#spliterator(Object[])} or {@link Arrays#stream(Object[])}
  */

http://git-wip-us.apache.org/repos/asf/jena/blob/fa3bae84/jena-base/src/main/java/org/apache/jena/atlas/lib/ActionKeyValue.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/ActionKeyValue.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/ActionKeyValue.java
index 12dadab..3a51e64 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/ActionKeyValue.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/ActionKeyValue.java
@@ -21,7 +21,7 @@ package org.apache.jena.atlas.lib;
 import java.util.function.BiConsumer;
 
 /**
- * Prefer {@link BiConsumer<KeyType, ValueType>}.
+ * @drepecated Use {@link BiConsumer}.
  */
 @Deprecated
 public interface ActionKeyValue<KeyType, ValueType> extends BiConsumer<KeyType, ValueType>

http://git-wip-us.apache.org/repos/asf/jena/blob/fa3bae84/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
index 2d1345f..470ea08 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
@@ -75,7 +75,7 @@ public class ListUtils
     /** Return a list of lists of all the elements of collection in every order
      *  Easy to run out of heap memory.
      *  
-     *  See {@link com.google.common.collect.Collections2#permutations(Collection<E>)}
+     *  See {@link org.apache.jena.ext.com.google.common.collect.Collections2#permutations}
      */  
     static public <T> List<List<T>> permute(List<T> c)
     {

http://git-wip-us.apache.org/repos/asf/jena/blob/fa3bae84/jena-base/src/main/java/org/apache/jena/atlas/lib/StrUtils.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/StrUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/StrUtils.java
index a61af11..b0b4721 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/StrUtils.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/StrUtils.java
@@ -18,15 +18,13 @@
 
 package org.apache.jena.atlas.lib;
 
-import static java.util.Arrays.stream;
-import static java.util.stream.Collectors.joining;
-import static java.util.stream.Collectors.toList;
+import static java.util.Arrays.stream ;
+import static java.util.stream.Collectors.joining ;
+import static java.util.stream.Collectors.toList ;
 
 import java.io.UnsupportedEncodingException ;
-import java.util.ArrayList ;
 import java.util.List ;
 import java.util.Map ;
-import java.util.stream.Collectors;
 
 
 public class StrUtils //extends StringUtils

http://git-wip-us.apache.org/repos/asf/jena/blob/fa3bae84/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIteratorArray.java
----------------------------------------------------------------------
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIteratorArray.java b/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIteratorArray.java
index 5108865..f538558 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIteratorArray.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIteratorArray.java
@@ -25,8 +25,11 @@ import org.apache.jena.atlas.iterator.IteratorArray ;
 import org.apache.jena.atlas.junit.BaseTest ;
 import org.junit.Test ;
 
+// Legacy - to be removed sometime.
+@SuppressWarnings("deprecation")
 public class TestIteratorArray extends BaseTest
 {
+    
     IteratorArray<String> create(String ... a)
     {
         return IteratorArray.create(a) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/fa3bae84/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIteratorPeek.java
----------------------------------------------------------------------
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIteratorPeek.java b/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIteratorPeek.java
index 33f0b70..01581d6 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIteratorPeek.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIteratorPeek.java
@@ -21,10 +21,8 @@ package org.apache.jena.atlas.iterator;
 import java.util.ArrayList ;
 import java.util.List ;
 
-import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.IteratorArray ;
-import org.apache.jena.atlas.iterator.PeekIterator ;
 import org.apache.jena.atlas.junit.BaseTest ;
+import org.apache.jena.ext.com.google.common.collect.Iterators ;
 import org.junit.Test ;
 
 public class TestIteratorPeek extends BaseTest
@@ -61,7 +59,7 @@ public class TestIteratorPeek extends BaseTest
     
     private static PeekIterator<String> create(String...a)
     { 
-        return new PeekIterator<>(IteratorArray.create(a)) ;
+        return new PeekIterator<>(Iterators.forArray(a)) ;
     }
     
     @Test public void peek_1()

http://git-wip-us.apache.org/repos/asf/jena/blob/fa3bae84/jena-text/src/main/java/org/apache/jena/query/text/assembler/EntityDefinitionAssembler.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/assembler/EntityDefinitionAssembler.java b/jena-text/src/main/java/org/apache/jena/query/text/assembler/EntityDefinitionAssembler.java
index a54fc92..ca66f27 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/assembler/EntityDefinitionAssembler.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/assembler/EntityDefinitionAssembler.java
@@ -32,7 +32,6 @@ import org.apache.jena.atlas.lib.StrUtils ;
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.ext.com.google.common.collect.HashMultimap;
 import org.apache.jena.ext.com.google.common.collect.Multimap;
-import org.apache.jena.ext.com.google.common.collect.Multimaps;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.query.* ;
 import org.apache.jena.query.text.EntityDefinition ;


[33/50] [abbrv] jena git commit: Delete old dev code.

Posted by cl...@apache.org.
Delete old dev code.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/a55e1478
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/a55e1478
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/a55e1478

Branch: refs/heads/add-contract-tests
Commit: a55e14780ac58e5cc08dd64424ad8307195ed885
Parents: e81ee64
Author: Andy Seaborne <an...@apache.org>
Authored: Thu May 7 10:29:40 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu May 7 10:29:40 2015 +0100

----------------------------------------------------------------------
 jena-tdb/src-dev/dev/Tests.java             |  32 ----
 jena-tdb/src-dev/test/BPlusTreeRun.java     |  74 ---------
 jena-tdb/src-dev/test/ByteBufferTest.java   |  78 ---------
 jena-tdb/src-dev/test/ExtHashRun.java       | 200 -----------------------
 jena-tdb/src-dev/test/RunnerExecute.java    | 119 --------------
 jena-tdb/src-dev/test/RunnerRangeIndex.java | 149 -----------------
 6 files changed, 652 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/a55e1478/jena-tdb/src-dev/dev/Tests.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src-dev/dev/Tests.java b/jena-tdb/src-dev/dev/Tests.java
deleted file mode 100644
index 8802761..0000000
--- a/jena-tdb/src-dev/dev/Tests.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dev;
-
-import org.junit.runner.RunWith ;
-import org.junit.runners.Suite ;
-
-@RunWith(Suite.class)
-@Suite.SuiteClasses( {
-})
-
-public class Tests
-{
-
-}
-

http://git-wip-us.apache.org/repos/asf/jena/blob/a55e1478/jena-tdb/src-dev/test/BPlusTreeRun.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src-dev/test/BPlusTreeRun.java b/jena-tdb/src-dev/test/BPlusTreeRun.java
deleted file mode 100644
index 5e65f41..0000000
--- a/jena-tdb/src-dev/test/BPlusTreeRun.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package test;
-
-import org.openjena.atlas.logging.Log ;
-
-import com.hp.hpl.jena.tdb.base.file.BlockAccessMem ;
-import com.hp.hpl.jena.tdb.index.RangeIndexMaker ;
-import com.hp.hpl.jena.tdb.index.bplustree.BPlusTree ;
-import com.hp.hpl.jena.tdb.index.bplustree.BPlusTreeMaker ;
-import com.hp.hpl.jena.tdb.index.bplustree.BPlusTreeParams ;
-import com.hp.hpl.jena.tdb.sys.SystemTDB ;
-
-public class BPlusTreeRun extends RunnerRangeIndex
-{
-    static { Log.setLog4j() ; }
-    
-    static public void main(String...a)
-    {
-        new BPlusTreeRun().perform(a) ;
-    }
-    
-    @Override
-    protected RangeIndexMaker makeRangeIndexMaker()
-    {
-        BPlusTreeMaker maker = new BPlusTreeMaker(order, order, trackingBlocks) ;
-        
-        BPlusTree bpt = (BPlusTree)(maker.makeIndex()) ;
-        BPlusTreeParams param = bpt.getParams() ;
-        System.out.println(bpt.getParams()) ;
-        System.out.println("Block size = "+bpt.getParams().getCalcBlockSize()) ;
-        return maker ;
-    }
-
-    @Override
-    protected void initialize(RunType runType)
-    {
-        switch (runType)
-        {
-            case test:
-                showProgress = true ;
-                //BPlusTreeParams.checkAll() ;
-                BPlusTreeParams.CheckingTree = true ;
-                BPlusTreeParams.CheckingNode = true ;
-                SystemTDB.NullOut = true ;
-                BlockAccessMem.SafeMode = true ;
-                break ;
-            case perf:  
-                showProgress = false ;
-                BPlusTreeParams.CheckingTree = false ;
-                BPlusTreeParams.CheckingNode = false ;
-                SystemTDB.NullOut = false ;
-                BlockAccessMem.SafeMode = false ;
-                break ;
-        } 
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/a55e1478/jena-tdb/src-dev/test/ByteBufferTest.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src-dev/test/ByteBufferTest.java b/jena-tdb/src-dev/test/ByteBufferTest.java
deleted file mode 100644
index 7012530..0000000
--- a/jena-tdb/src-dev/test/ByteBufferTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package test ;
-import java.nio.ByteBuffer;
-
-import org.junit.Test;
-
-
-public class ByteBufferTest {
-    //@Test
-    public void direct0() {
-        testDirect("direct0");
-    }
-    @Test
-    public void heap1() {
-        testHeap("heap1");
-    }
-
-    @Test
-    public void direct1() {
-        testDirect("direct1");
-    }
-    
-    @Test
-    public void heap2() {
-        testHeap("heap2");
-    }
-
-    @Test
-    public void direct2() {
-        testDirect("direct2");
-    }
-
-    private void testHeap(String name) {
-        ByteBuffer buf = ByteBuffer.allocate(2048);
-        long startTime = System.currentTimeMillis();
-        for (int i = 1048576; i > 0; i --) {
-            buf.clear();
-            while (buf.hasRemaining()) {
-                buf.getInt(buf.position());
-                buf.putInt((byte) 0);
-            }
-        }
-        long endTime = System.currentTimeMillis();
-        System.out.println(name + ": " + (endTime - startTime));
-    }
-    
-    private void testDirect(String name) {
-        ByteBuffer buf = ByteBuffer.allocateDirect(2048);
-        long startTime = System.currentTimeMillis();
-        for (int i = 1048576; i > 0; i --) {
-            buf.clear();
-            while (buf.hasRemaining()) {
-                buf.getInt(buf.position());
-                buf.putInt((byte) 0);
-            }
-        }
-        long endTime = System.currentTimeMillis();
-        System.out.println(name + ": " + (endTime - startTime));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/a55e1478/jena-tdb/src-dev/test/ExtHashRun.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src-dev/test/ExtHashRun.java b/jena-tdb/src-dev/test/ExtHashRun.java
deleted file mode 100644
index 0f74037..0000000
--- a/jena-tdb/src-dev/test/ExtHashRun.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package test;
-
-import static org.openjena.atlas.lib.RandomLib.random;
-import static org.openjena.atlas.test.Gen.permute;
-import static org.openjena.atlas.test.Gen.rand;
-import static org.openjena.atlas.test.Gen.strings;
-
-import java.io.PrintStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.openjena.atlas.logging.Log ;
-
-
-import com.hp.hpl.jena.tdb.index.ext.ExtHash;
-import com.hp.hpl.jena.tdb.index.ext.ExtHashTestBase;
-import com.hp.hpl.jena.tdb.sys.SystemTDB;
-
-
-//import tdb.Cmd;
-
-public abstract class ExtHashRun
-{
-    static boolean showProgress = true ;
-    
-    static { Log.setLog4j() ; }
-
-    static public void main(String...a)
-    {
-        List<String> args = new ArrayList<String>(Arrays.asList(a)) ;
-        if ( args.size() == 0 )
-        {
-            System.err.println("No subcommand") ;
-            System.exit(1) ;
-        }
-        String subCmd = args.remove(0) ;
-        if ( "test".equalsIgnoreCase(subCmd) )
-            new Test().exec(args) ;
-        else if ( "perf".equalsIgnoreCase(subCmd) )
-            new Perf().exec(args) ;
-        else
-        {
-            System.err.println("Unknown subcommand: "+subCmd) ;
-            System.exit(1) ;
-        }
-    }
-    
-    public void exec(List<String> args)
-    {
-        args = processArgs(args) ;
-        int numKeys = Integer.parseInt(args.get(0)) ;
-        int iterations = Integer.parseInt(args.get(1)) ;
-        exec(numKeys, iterations) ;
-    }        
-    
-    protected abstract void exec(int numKeys, int iterations) ;
-    
-    // ---- Test
-    public static class Test extends ExtHashRun
-    {
-        @Override
-        protected void exec(int numKeys, int iterations)
-        {
-            ExtHash.Checking = true ;
-            ExtHashTestBase.randTests(10*numKeys, numKeys, iterations, showProgress) ;
-        }
-    }
-
-    // ---- Perfromance
-    public static class Perf extends ExtHashRun
-    {
-        @Override
-        public void exec(List<String> args)
-        {
-            showProgress = true ;
-            ExtHash.Checking = false ;
-            ExtHash.Logging = false ;
-            SystemTDB.NullOut = false ;
-            super.exec(args) ;
-        }
-        
-        @Override
-        protected void exec(int numKeys, int iterations)
-        {
-            RandomGen rand = new RandomGen(100*numKeys, numKeys) ;
-            org.openjena.atlas.test.RepeatExecution.repeatExecutions(rand, iterations, showProgress) ;
-        }
-    }
-    
-    static class RandomGen implements org.openjena.atlas.test.ExecGenerator
-    {
-        int maxNumKeys ;
-        int maxValue ;
-
-        RandomGen(int maxValue, int maxNumKeys)
-        {
-            if ( maxValue <= maxNumKeys )
-                throw new IllegalArgumentException("ExtHash: Max value less than number of keys") ;
-            this.maxValue = maxValue ; 
-            this.maxNumKeys = maxNumKeys ;
-        }
-
-        @Override
-        public void executeOneTest()
-        {
-            int numKeys = random.nextInt(maxNumKeys)+1 ;
-            perfTest(maxValue, numKeys) ;
-        }
-        
-        /* Performance test : print the keys if there was a problem */ 
-        public static void perfTest(int maxValue, int numKeys)
-        {
-//            if ( numKeys >= 3000 )
-//                System.err.printf("Warning: a lot of keys\n") ;
-                
-            int[] keys1 = rand(numKeys, 0, maxValue) ;
-            int[] keys2 = permute(keys1, numKeys) ;
-            try {
-                ExtHash extHash = ExtHashTestBase.create(keys1) ;
-                ExtHashTestBase.delete(extHash, keys2) ;
-            } catch (RuntimeException ex)
-            {
-                System.err.printf("int[] keys1 = {%s} ;\n", strings(keys1)) ;
-                System.err.printf("int[] keys2 = {%s}; \n", strings(keys2)) ;
-                throw ex ;
-            }
-        }
-    }
-
-    List<String> processArgs(List<String> args)
-    {
-        
-        int i = 0 ;
-        while ( args.size()>0 )
-        {
-            if ( !args.get(0).startsWith("-") )
-                break ;
-
-            String a = args.remove(0) ;
-            if ( a.startsWith("--") )
-                a = a.substring(2) ;
-            else
-                a = a.substring(1) ;
-
-            if ( a.equals("h") || a.equals("help") )
-            {
-                usage(System.out) ;
-                System.exit(0) ;
-            }
-            else if ( a.equals("v") )
-            {}
-            else if ( a.equalsIgnoreCase("check") )
-            {
-                ExtHash.Checking = true ;
-            }
-            else if ( a.equalsIgnoreCase("display") )
-            {
-                showProgress = ! showProgress ;
-            }
-            else   
-            {
-                System.err.println("Unknown argument: "+a) ;
-                System.exit(1) ;
-            }
-        }
-
-        if ( args.size() != 2 )
-        {
-            usage(System.err) ;
-            System.exit(1) ;
-        }
-        return args ;
-    }
-
-    public static void usage(PrintStream printStream)
-    {
-        printStream.println("Usage: OPTIONS NumKeys Iterations") ;
-        printStream.println("Options:") ;
-        printStream.println("   --check") ;
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/a55e1478/jena-tdb/src-dev/test/RunnerExecute.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src-dev/test/RunnerExecute.java b/jena-tdb/src-dev/test/RunnerExecute.java
deleted file mode 100644
index cd37329..0000000
--- a/jena-tdb/src-dev/test/RunnerExecute.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package test;
-
-import static org.openjena.atlas.test.Gen.permute ;
-import static org.openjena.atlas.test.Gen.rand ;
-import static org.openjena.atlas.test.Gen.strings ;
-
-import java.io.PrintStream ;
-import java.util.ArrayList ;
-import java.util.Arrays ;
-import java.util.List ;
-
-import org.openjena.atlas.test.ExecGenerator ;
-import org.openjena.atlas.test.RepeatExecution ;
-
-import com.hp.hpl.jena.tdb.index.Index ;
-import com.hp.hpl.jena.tdb.index.IndexMaker ;
-import com.hp.hpl.jena.tdb.index.IndexTestLib ;
-import com.hp.hpl.jena.tdb.index.bplustree.BPlusTreeMaker ;
-
-
-public abstract class RunnerExecute
-{
-    static enum RunType { test , perf }
-
-    static boolean showProgress = true ;
-    
-    public void perform(String...a)
-    {
-        List<String> args = new ArrayList<String>(Arrays.asList(a)) ;
-        if ( args.size() == 0 )
-        {
-            System.err.println("No subcommand") ;
-            System.exit(1) ;
-        }
-        System.out.println(args) ;
-        String subCmd = args.remove(0) ;
-        RunType runType = null ;
-        
-        if ( "test".equalsIgnoreCase(subCmd) )
-            runType = RunType.test ;
-        else if ( "perf".equalsIgnoreCase(subCmd) )
-            runType = RunType.perf ;
-        else
-        {
-            System.err.println("Unknown subcommand: "+subCmd) ;
-            System.exit(1) ;
-        }
-        
-        initialize(runType) ;
-        
-        args = processArgs(args) ;
-        int iterations = startRun(args, runType) ;
-        
-        ExecGenerator gen = execGenerator() ;
-        RepeatExecution.repeatExecutions(gen, iterations, showProgress) ;
-        finishRun() ;
-    }
-    
-    protected abstract void initialize(RunType runType) ;
-    protected abstract List<String> processArgs(List<String> args) ;
-
-    protected abstract ExecGenerator execGenerator() ;
-    protected abstract int startRun(List<String> args, RunType runType) ;
-    protected abstract void finishRun() ;
-    
-    public static void usage(PrintStream printStream)
-    {
-        printStream.println("Usage: OPTIONS Order NumKeys Iterations") ;
-        printStream.println("Options:") ;
-        printStream.println("   --display") ;
-        printStream.println("   --check (same as btree:checknode)") ;
-        printStream.println("   --bptree:check") ;
-        printStream.println("   --bptree:track") ;
-        printStream.println("   --bptree:checknode (expensive)") ;
-        printStream.println("   --bptree:log") ;
-        printStream.println("   --bptree:safe") ;
-    }
-    
-    /* Performance test : print the keys if there was a problem */ 
-    
-    public static void perfTest(int order, int maxValue, int numKeys)
-    {
-        // UNUSED.
-//        if ( numKeys >= 3000 )
-//            System.err.printf("Warning: too many keys\n") ;
-       
-        int[] keys1 = rand(numKeys, 0, maxValue) ;
-        int[] keys2 = permute(keys1, numKeys) ;
-        try {
-            IndexMaker maker = new BPlusTreeMaker(order, order, false) ;
-            Index rIndex = IndexTestLib.buildIndex(maker, keys1);
-            IndexTestLib.delete(rIndex, keys2) ;
-        } catch (RuntimeException ex)
-        {
-            System.err.printf("int order=%d ;\n", order) ;
-            System.err.printf("int[] keys1 = {%s} ;\n", strings(keys1)) ;
-            System.err.printf("int[] keys2 = {%s} ; \n", strings(keys2)) ;
-            throw ex ;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/a55e1478/jena-tdb/src-dev/test/RunnerRangeIndex.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src-dev/test/RunnerRangeIndex.java b/jena-tdb/src-dev/test/RunnerRangeIndex.java
deleted file mode 100644
index 38fe57e..0000000
--- a/jena-tdb/src-dev/test/RunnerRangeIndex.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package test;
-import java.util.List ;
-
-import org.apache.log4j.Level ;
-import org.openjena.atlas.test.ExecGenerator ;
-
-import com.hp.hpl.jena.tdb.base.file.BlockAccessMem ;
-import com.hp.hpl.jena.tdb.index.IndexTestGenerator ;
-import com.hp.hpl.jena.tdb.index.RangeIndexMaker ;
-import com.hp.hpl.jena.tdb.index.bplustree.BPlusTreeParams ;
-import com.hp.hpl.jena.tdb.sys.SystemTDB ;
-
-public abstract class RunnerRangeIndex extends RunnerExecute
-{
-    int order ;
-    int maxValue ; 
-    int maxNumKeys ;
-    
-    static boolean trackingBlocks = false ;
-    
-    protected abstract RangeIndexMaker makeRangeIndexMaker() ;
-    
-    @Override
-    protected ExecGenerator execGenerator()
-    {
-        RangeIndexMaker maker = makeRangeIndexMaker() ;
-        //new RangeIndexTestGenerator(maker, numKeys*100, numKeys) ;
-        IndexTestGenerator test = new IndexTestGenerator(maker, maxValue, maxNumKeys) ;
-        return test ;
-    }
-
-    @Override
-    protected int startRun(List<String> args, RunType runType)
-    {
-        order = Integer.parseInt(args.get(0)) ;
-        int numKeys = Integer.parseInt(args.get(1)) ;
-        int iterations = Integer.parseInt(args.get(2)) ;
-
-        maxValue = 10*numKeys ;  
-        maxNumKeys = numKeys ;
-        return iterations ;
-    }
-
-    @Override
-    protected void finishRun()
-    {}
-    
-    /** Process the arguments - return any to be done later (positionals) */  
-    @Override
-    protected List<String> processArgs(List<String> args)
-    {
-        int i = 0 ;
-        while ( args.size()>0 )
-        {
-            if ( !args.get(0).startsWith("-") )
-                break ;
-
-            String a = args.remove(0) ;
-            if ( a.startsWith("--") )
-                a = a.substring(2) ;
-            else
-                a = a.substring(1) ;
-            
-            if ( a.equals("h") || a.equals("help") )
-            {
-                usage(System.out) ;
-                System.exit(0) ;
-            }
-            else if ( a.equals("v") )
-                BPlusTreeParams.DumpTree = true ;
-            else if ( a.equalsIgnoreCase("bptree:check") )
-            {
-                BPlusTreeParams.CheckingTree = true ;
-                BPlusTreeParams.CheckingNode = false ;
-                SystemTDB.NullOut = true ;
-                BlockAccessMem.SafeMode = true ;
-            }
-            else if ( a.equalsIgnoreCase("bptree:checknode") )
-            {
-                BPlusTreeParams.CheckingTree = true ;
-                BPlusTreeParams.CheckingNode = true ;
-                SystemTDB.NullOut = true ;
-                BlockAccessMem.SafeMode = true ;
-            }
-            else if ( a.equalsIgnoreCase("bptree:log") )
-            {
-                showProgress = false ;
-                org.apache.log4j.LogManager.getLogger("bptree").setLevel(Level.DEBUG) ;
-                org.apache.log4j.LogManager.getLogger("bptree.block").setLevel(Level.INFO) ;
-            }
-            else if ( a.equalsIgnoreCase("block:log") )
-            {
-                showProgress = false ;
-                org.apache.log4j.LogManager.getLogger("bptree.block").setLevel(Level.DEBUG) ;
-            }
-            else if ( a.equalsIgnoreCase("block:safe") )
-                BlockAccessMem.SafeMode = true ;
-            else if ( a.equalsIgnoreCase("check") )
-            {
-                BPlusTreeParams.CheckingNode = false;
-                BPlusTreeParams.CheckingTree = false ;
-//                SystemTDB.NullOut = true ;
-//                FileAccessMem.SafeMode = true ;
-            }
-            else if ( a.equalsIgnoreCase("display") )
-            {
-                showProgress = ! showProgress ;
-            }
-            else if ( a.equalsIgnoreCase("bptree:track") )
-            {
-                BPlusTreeParams.CheckingTree = false ;
-                BPlusTreeParams.CheckingNode = false ;
-                trackingBlocks = true ;
-            }
-            else   
-            {
-                System.err.println("Unknown argument: "+a) ;
-                System.exit(1) ;
-            }
-        }
-        
-        if ( args.size() != 3 )
-        {
-            usage(System.err) ;
-            System.exit(1) ;
-        }
-        
-        return args ;
-    }
-    
-}


[09/50] [abbrv] jena git commit: JENA-907: Rename Util.splitNamespace as Util.splitNamespaceXML

Posted by cl...@apache.org.
JENA-907: Rename Util.splitNamespace as Util.splitNamespaceXML

This reflects its usage and enables a separation of use for
XML specifically and revising Node.getLocalName for Turtle.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/6d3a74ff
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/6d3a74ff
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/6d3a74ff

Branch: refs/heads/add-contract-tests
Commit: 6d3a74ff00339234d2ddc7792e0b8ea1f2db4b71
Parents: e7fbc0f
Author: Andy Seaborne <an...@apache.org>
Authored: Fri May 1 16:03:04 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri May 1 16:03:19 2015 +0100

----------------------------------------------------------------------
 .../java/org/apache/jena/graph/Node_URI.java     |  4 ++--
 .../org/apache/jena/rdf/model/impl/ModelCom.java |  2 +-
 .../org/apache/jena/rdf/model/impl/Util.java     | 19 +++++++++++--------
 .../rdfxml/xmloutput/impl/BaseXMLWriter.java     |  4 ++--
 .../jena/rdfxml/xmloutput/impl/Unparser.java     |  6 +++---
 .../jena/shared/impl/PrefixMappingImpl.java      |  2 +-
 .../org/apache/jena/graph/test/TestNode.java     |  2 +-
 .../test/java/org/apache/jena/util/TestUtil.java |  2 +-
 8 files changed, 22 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/6d3a74ff/jena-core/src/main/java/org/apache/jena/graph/Node_URI.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/graph/Node_URI.java b/jena-core/src/main/java/org/apache/jena/graph/Node_URI.java
index 7a45f80..331a383 100644
--- a/jena-core/src/main/java/org/apache/jena/graph/Node_URI.java
+++ b/jena-core/src/main/java/org/apache/jena/graph/Node_URI.java
@@ -65,14 +65,14 @@ public class Node_URI extends Node_Concrete
     public String getNameSpace()
         { 
         String s = (String) label;
-        return s.substring( 0, Util.splitNamespace( s ) );
+        return s.substring( 0, Util.splitNamespaceXML( s ) );
         }
     
     @Override
     public String getLocalName()
         {  
         String s = (String) label;
-        return s.substring( Util.splitNamespace( s ) );
+        return s.substring( Util.splitNamespaceXML( s ) );
         }
     
     @Override

http://git-wip-us.apache.org/repos/asf/jena/blob/6d3a74ff/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
index 7162678..a0ed407 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
@@ -943,7 +943,7 @@ implements Model, PrefixMapping, Lock
             if (node.isURI())
             {
                 String uri = node.getURI();
-                String ns = uri.substring( 0, Util.splitNamespace( uri ) );
+                String ns = uri.substring( 0, Util.splitNamespaceXML( uri ) );
                 // String ns = IteratorFactory.asResource( node, this ).getNameSpace();
                 set.add( ns );
             }

http://git-wip-us.apache.org/repos/asf/jena/blob/6d3a74ff/jena-core/src/main/java/org/apache/jena/rdf/model/impl/Util.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/Util.java b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/Util.java
index 1774ca7..5e3ec1b 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/Util.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/Util.java
@@ -32,17 +32,20 @@ import org.apache.xerces.util.XMLChar ;
  */
 public class Util extends Object {
 
-    /** Given an absolute URI, determine the split point between the namespace part
-     * and the localname part.
-     * If there is no valid localname part then the length of the
-     * string is returned.
-     * The algorithm tries to find the longest NCName at the end
-     * of the uri, not immediately preceeded by the first colon
-     * in the string.
+    /**
+     * Given an absolute URI, determine the split point between the namespace
+     * part and the localname part. If there is no valid localname part then the
+     * length of the string is returned. The algorithm tries to find the longest
+     * NCName at the end of the uri, not immediately preceeded by the first
+     * colon in the string.
+     * <p>
+     * This operation follows XML QName rules which are more complicated than
+     * needed for Turtle and TriG.   For example, QName can't start with a digit. 
+     * 
      * @param uri
      * @return the index of the first character of the localname
      */
-    public static int splitNamespace(String uri) {
+    public static int splitNamespaceXML(String uri) {
         
         // XML Namespaces 1.0:
         // A qname name is NCName ':' NCName

http://git-wip-us.apache.org/repos/asf/jena/blob/6d3a74ff/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/BaseXMLWriter.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/BaseXMLWriter.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/BaseXMLWriter.java
index c3a92fb..3cd8078 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/BaseXMLWriter.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/BaseXMLWriter.java
@@ -390,7 +390,7 @@ abstract public class BaseXMLWriter implements RDFXMLWriterI {
 	}
     
 	String splitTag(String uriref, int type) {
-		int split = Util.splitNamespace( uriref );
+		int split = Util.splitNamespaceXML( uriref );
 		if (split == uriref.length()) throw new InvalidPropertyURIException( uriref );
 		return tag( uriref.substring( 0, split ), uriref.substring( split ), type, true );
     }
@@ -525,7 +525,7 @@ abstract public class BaseXMLWriter implements RDFXMLWriterI {
             return attributeQuoted( substituted );
         else
             {
-            int split = Util.splitNamespace( substituted );
+            int split = Util.splitNamespaceXML( substituted );
             String namespace = substituted.substring(  0, split );
             String prefix = modelPrefixMapping.getNsURIPrefix( namespace );
             return prefix == null || isPredefinedEntityName( prefix )

http://git-wip-us.apache.org/repos/asf/jena/blob/6d3a74ff/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java
index 24d8ebf..2f35939 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java
@@ -1186,7 +1186,7 @@ class Unparser {
             throw new BrokenException("Internal error: getNameSpace(bNode)");
         }
         String uri = r.getURI();
-        int split = Util.splitNamespace(uri);
+        int split = Util.splitNamespaceXML(uri);
         return uri.substring(0, split);
 
     }
@@ -1223,7 +1223,7 @@ class Unparser {
             throw new BrokenException("Internal error: getLocalName(bNode)");
         }
         String uri = r.getURI();
-        int split = Util.splitNamespace(uri);
+        int split = Util.splitNamespaceXML(uri);
         return uri.substring(split);
 
     }
@@ -1505,7 +1505,7 @@ class Unparser {
         // Only allow resources with namespace and fragment ID
         String uri = ((Resource) n).getURI();
 
-        int split = Util.splitNamespace(uri);
+        int split = Util.splitNamespaceXML(uri);
         if (split == 0 || split == uri.length())
             return -1;
 

http://git-wip-us.apache.org/repos/asf/jena/blob/6d3a74ff/jena-core/src/main/java/org/apache/jena/shared/impl/PrefixMappingImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/shared/impl/PrefixMappingImpl.java b/jena-core/src/main/java/org/apache/jena/shared/impl/PrefixMappingImpl.java
index 36269c9..b2b23cb 100644
--- a/jena-core/src/main/java/org/apache/jena/shared/impl/PrefixMappingImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/shared/impl/PrefixMappingImpl.java
@@ -206,7 +206,7 @@ public class PrefixMappingImpl implements PrefixMapping
     @Override
     public String qnameFor( String uri )
         { 
-        int split = Util.splitNamespace( uri );
+        int split = Util.splitNamespaceXML( uri );
         String ns = uri.substring( 0, split ), local = uri.substring( split );
         if (local.equals( "" )) return null;
         String prefix = URItoPrefix.get( ns );

http://git-wip-us.apache.org/repos/asf/jena/blob/6d3a74ff/jena-core/src/test/java/org/apache/jena/graph/test/TestNode.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/test/TestNode.java b/jena-core/src/test/java/org/apache/jena/graph/test/TestNode.java
index 9683a59..0bfd21b 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/test/TestNode.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/test/TestNode.java
@@ -663,7 +663,7 @@ public class TestNode extends GraphTestBase
     {
         for ( String uri : someURIs )
         {
-            int split = Util.splitNamespace( uri );
+            int split = Util.splitNamespaceXML( uri );
             Node n = NodeCreateUtils.create( uri );
             assertEquals( "check namespace", uri.substring( 0, split ), n.getNameSpace() );
             assertEquals( "check localname", uri.substring( split ), n.getLocalName() );

http://git-wip-us.apache.org/repos/asf/jena/blob/6d3a74ff/jena-core/src/test/java/org/apache/jena/util/TestUtil.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/util/TestUtil.java b/jena-core/src/test/java/org/apache/jena/util/TestUtil.java
index 8bae423..9eb0538 100644
--- a/jena-core/src/test/java/org/apache/jena/util/TestUtil.java
+++ b/jena-core/src/test/java/org/apache/jena/util/TestUtil.java
@@ -118,7 +118,7 @@ public class TestUtil
         if ( namespace != null && localname == null )
             fail("Bad test - namespace is not null but local name is") ;
         
-        int idx = Util.splitNamespace(uriStr) ;
+        int idx = Util.splitNamespaceXML(uriStr) ;
         if ( idx == uriStr.length() ) 
         {
             // No split.


[08/50] [abbrv] jena git commit: JENA-608: Blank nodes in INSERT DATA GRAPH

Posted by cl...@apache.org.
JENA-608: Blank nodes in INSERT DATA GRAPH


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/e7fbc0f0
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/e7fbc0f0
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/e7fbc0f0

Branch: refs/heads/add-contract-tests
Commit: e7fbc0f00dcb414f21233e7390eab30eaf4275c4
Parents: c6e1970
Author: Andy Seaborne <an...@apache.org>
Authored: Fri May 1 15:18:13 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri May 1 15:18:43 2015 +0100

----------------------------------------------------------------------
 jena-arq/Grammar/arq.jj                         |   8 +-
 jena-arq/Grammar/master.jj                      |  21 +-
 jena-arq/Grammar/sparql_11.jj                   |   8 +-
 .../main/java/org/apache/jena/query/Syntax.java |   6 +-
 .../apache/jena/sparql/lang/arq/ARQParser.java  | 384 ++++++++++---------
 .../sparql/lang/sparql_11/SPARQLParser11.java   | 140 ++++---
 6 files changed, 322 insertions(+), 245 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/e7fbc0f0/jena-arq/Grammar/arq.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/arq.jj b/jena-arq/Grammar/arq.jj
index ac567a0..62ab2cb 100644
--- a/jena-arq/Grammar/arq.jj
+++ b/jena-arq/Grammar/arq.jj
@@ -492,7 +492,8 @@ void Quads(QuadAccSink acc) : { }
 }
 void QuadsNotTriples(QuadAccSink acc) : {Node gn ; Node prev = acc.getGraph() ; }
 {
-    <GRAPH> gn = VarOrIri()
+    <GRAPH>
+       gn = VarOrBlankNodeOrIri()
     { setAccGraph(acc, gn) ; }
     <LBRACE>
     (TriplesTemplate(acc))?
@@ -1116,6 +1117,11 @@ Node VarOrIri() : {Node n = null ; String iri ; }
   ( n = Var() | iri = iri() { n = createNode(iri) ; } )
   { return n ; }
 }
+Node VarOrBlankNodeOrIri() : {Node n = null ; String iri ; }
+{
+  ( n = Var() | n = BlankNode() | iri = iri() { n = createNode(iri) ; } )
+  { return n ; }
+}
 Var Var() : { Token t ;}
 {
     ( t = <VAR1> | t = <VAR2> )

http://git-wip-us.apache.org/repos/asf/jena/blob/e7fbc0f0/jena-arq/Grammar/master.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/master.jj b/jena-arq/Grammar/master.jj
index cd038e3..a8a189e 100644
--- a/jena-arq/Grammar/master.jj
+++ b/jena-arq/Grammar/master.jj
@@ -192,7 +192,7 @@ void SelectClause() : {  Var v ; Expr expr ; Node n ; }
     (
       v = Var()                     { getQuery().addResultVar(v) ; }
     | 
-#if ARQ
+#ifdef ARQ
       // Expressions without ()
       ( LOOKAHEAD(2)
         expr = BuiltInCall()        { getQuery().addResultVar((Var)null, expr) ; }
@@ -688,7 +688,13 @@ void Quads(QuadAccSink acc) : { }
 
 void QuadsNotTriples(QuadAccSink acc) : {Node gn ; Node prev = acc.getGraph() ; }
 {
-    <GRAPH> gn = VarOrIri()
+    <GRAPH>
+#ifdef SPARQL_11   
+       gn = VarOrIri()
+#endif
+#ifdef ARQ
+       gn = VarOrBlankNodeOrIri()
+#endif
     { setAccGraph(acc, gn) ; }
     <LBRACE> 
     (TriplesTemplate(acc))?
@@ -1115,7 +1121,7 @@ void PropertyListNotEmpty(Node s, TripleCollector acc) :
 Node Verb() : { Node p ;}
 {
 // Blank nodes as predicates
-//   ( p = VarOrBlankNodeOriri() | <KW_A> { p = nRDFtype ; } )
+//   ( p = VarOrBlankNodeOrIri() | <KW_A> { p = nRDFtype ; } )
   ( p = VarOrIri() | <KW_A> { p = nRDFtype ; } )
   { return p ; }
 }
@@ -1512,13 +1518,20 @@ Node VarOrTerm() : {Node n = null ; }
   { return n ; }
 }
 
-// Property (if no bNodes) + DESCRIBE
+// e.g. Property (if no bNodes) + DESCRIBE
 Node VarOrIri() : {Node n = null ; String iri ; }
 {
   ( n = Var() | iri = iri() { n = createNode(iri) ; } )
   { return n ; }
 }
 
+// e.g. INSERT DATA { GRAPH ... }
+Node VarOrBlankNodeOrIri() : {Node n = null ; String iri ; }
+{
+  ( n = Var() | n = BlankNode() | iri = iri() { n = createNode(iri) ; } )
+  { return n ; }
+}
+
 Var Var() : { Token t ;}
 {
     ( t = <VAR1> | t = <VAR2> )

http://git-wip-us.apache.org/repos/asf/jena/blob/e7fbc0f0/jena-arq/Grammar/sparql_11.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/sparql_11.jj b/jena-arq/Grammar/sparql_11.jj
index 2c51664..df2b3b8 100644
--- a/jena-arq/Grammar/sparql_11.jj
+++ b/jena-arq/Grammar/sparql_11.jj
@@ -470,7 +470,8 @@ void Quads(QuadAccSink acc) : { }
 }
 void QuadsNotTriples(QuadAccSink acc) : {Node gn ; Node prev = acc.getGraph() ; }
 {
-    <GRAPH> gn = VarOrIri()
+    <GRAPH>
+       gn = VarOrIri()
     { setAccGraph(acc, gn) ; }
     <LBRACE>
     (TriplesTemplate(acc))?
@@ -1017,6 +1018,11 @@ Node VarOrIri() : {Node n = null ; String iri ; }
   ( n = Var() | iri = iri() { n = createNode(iri) ; } )
   { return n ; }
 }
+Node VarOrBlankNodeOrIri() : {Node n = null ; String iri ; }
+{
+  ( n = Var() | n = BlankNode() | iri = iri() { n = createNode(iri) ; } )
+  { return n ; }
+}
 Var Var() : { Token t ;}
 {
     ( t = <VAR1> | t = <VAR2> )

http://git-wip-us.apache.org/repos/asf/jena/blob/e7fbc0f0/jena-arq/src/main/java/org/apache/jena/query/Syntax.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/query/Syntax.java b/jena-arq/src/main/java/org/apache/jena/query/Syntax.java
index 3c1d7e5..ef28127 100644
--- a/jena-arq/src/main/java/org/apache/jena/query/Syntax.java
+++ b/jena-arq/src/main/java/org/apache/jena/query/Syntax.java
@@ -85,9 +85,9 @@ public class Syntax extends Symbol
 
     public static TranslationTable<Syntax> updateSyntaxNames = new TranslationTable<>(true) ;
     static {
-        querySyntaxNames.put("sparql",      syntaxSPARQL) ;
-        querySyntaxNames.put("sparql_11",   syntaxSPARQL_11) ;
-        querySyntaxNames.put("arq",         syntaxARQ) ;
+        updateSyntaxNames.put("sparql",      syntaxSPARQL) ;
+        updateSyntaxNames.put("sparql_11",   syntaxSPARQL_11) ;
+        updateSyntaxNames.put("arq",         syntaxARQ) ;
     }
 
     protected Syntax(String s) { super(s) ; }

http://git-wip-us.apache.org/repos/asf/jena/blob/e7fbc0f0/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParser.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParser.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParser.java
index efe2f21..876a68b 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParser.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParser.java
@@ -1900,7 +1900,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
   final public void QuadsNotTriples(QuadAccSink acc) throws ParseException {
                                          Node gn ; Node prev = acc.getGraph() ;
     jj_consume_token(GRAPH);
-    gn = VarOrIri();
+    gn = VarOrBlankNodeOrIri();
       setAccGraph(acc, gn) ;
     jj_consume_token(LBRACE);
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -3748,6 +3748,32 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     throw new Error("Missing return statement in function");
   }
 
+  final public Node VarOrBlankNodeOrIri() throws ParseException {
+                              Node n = null ; String iri ;
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case VAR1:
+    case VAR2:
+      n = Var();
+      break;
+    case BLANK_NODE_LABEL:
+    case ANON:
+      n = BlankNode();
+      break;
+    case IRIref:
+    case PNAME_NS:
+    case PNAME_LN:
+      iri = iri();
+                                                n = createNode(iri) ;
+      break;
+    default:
+      jj_la1[126] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    {if (true) return n ;}
+    throw new Error("Missing return statement in function");
+  }
+
   final public Var Var() throws ParseException {
               Token t ;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -3758,7 +3784,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       t = jj_consume_token(VAR2);
       break;
     default:
-      jj_la1[126] = jj_gen;
+      jj_la1[127] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3809,7 +3835,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
           {if (true) return nRDFnil ;}
       break;
     default:
-      jj_la1[127] = jj_gen;
+      jj_la1[128] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3833,7 +3859,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[128] = jj_gen;
+        jj_la1[129] = jj_gen;
         break label_34;
       }
       jj_consume_token(SC_OR);
@@ -3854,7 +3880,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[129] = jj_gen;
+        jj_la1[130] = jj_gen;
         break label_35;
       }
       jj_consume_token(SC_AND);
@@ -3927,13 +3953,13 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         expr1 = new E_NotOneOf(expr1, a) ;
         break;
       default:
-        jj_la1[130] = jj_gen;
+        jj_la1[131] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
     default:
-      jj_la1[131] = jj_gen;
+      jj_la1[132] = jj_gen;
       ;
     }
       {if (true) return expr1 ;}
@@ -3964,7 +3990,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[132] = jj_gen;
+        jj_la1[133] = jj_gen;
         break label_36;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -4002,7 +4028,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
          addition = false ;
           break;
         default:
-          jj_la1[133] = jj_gen;
+          jj_la1[134] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
@@ -4014,7 +4040,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
             ;
             break;
           default:
-            jj_la1[134] = jj_gen;
+            jj_la1[135] = jj_gen;
             break label_37;
           }
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -4029,7 +4055,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                             expr2 = new E_Divide(expr2, expr3) ;
             break;
           default:
-            jj_la1[135] = jj_gen;
+            jj_la1[136] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
@@ -4040,7 +4066,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
          expr1 = new E_Subtract(expr1, expr2) ;
         break;
       default:
-        jj_la1[136] = jj_gen;
+        jj_la1[137] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -4060,7 +4086,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[137] = jj_gen;
+        jj_la1[138] = jj_gen;
         break label_38;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -4075,7 +4101,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       expr1 = new E_Divide(expr1, expr2) ;
         break;
       default:
-        jj_la1[138] = jj_gen;
+        jj_la1[139] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -4191,7 +4217,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                  {if (true) return expr ;}
       break;
     default:
-      jj_la1[139] = jj_gen;
+      jj_la1[140] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4308,7 +4334,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                  {if (true) return asExpr(gn) ;}
       break;
     default:
-      jj_la1[140] = jj_gen;
+      jj_la1[141] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4404,7 +4430,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
               {if (true) return new E_BNode() ;}
         break;
       default:
-        jj_la1[141] = jj_gen;
+        jj_la1[142] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -4657,7 +4683,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
           ;
           break;
         default:
-          jj_la1[142] = jj_gen;
+          jj_la1[143] = jj_gen;
           break label_39;
         }
         jj_consume_token(COMMA);
@@ -4753,7 +4779,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                              {if (true) return expr ;}
       break;
     default:
-      jj_la1[143] = jj_gen;
+      jj_la1[144] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4773,7 +4799,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       flagsExpr = Expression();
       break;
     default:
-      jj_la1[144] = jj_gen;
+      jj_la1[145] = jj_gen;
       ;
     }
     jj_consume_token(RPAREN);
@@ -4794,7 +4820,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       expr3 = Expression();
       break;
     default:
-      jj_la1[145] = jj_gen;
+      jj_la1[146] = jj_gen;
       ;
     }
     jj_consume_token(RPAREN);
@@ -4817,7 +4843,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       expr4 = Expression();
       break;
     default:
-      jj_la1[146] = jj_gen;
+      jj_la1[147] = jj_gen;
       ;
     }
     jj_consume_token(RPAREN);
@@ -4859,7 +4885,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                    distinct = true ;
         break;
       default:
-        jj_la1[147] = jj_gen;
+        jj_la1[148] = jj_gen;
         ;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -4957,7 +4983,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         expr = Expression();
         break;
       default:
-        jj_la1[148] = jj_gen;
+        jj_la1[149] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -4974,7 +5000,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                       distinct = true ;
         break;
       default:
-        jj_la1[149] = jj_gen;
+        jj_la1[150] = jj_gen;
         ;
       }
       expr = Expression();
@@ -4990,7 +5016,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                       distinct = true ;
         break;
       default:
-        jj_la1[150] = jj_gen;
+        jj_la1[151] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5006,7 +5032,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                       distinct = true ;
         break;
       default:
-        jj_la1[151] = jj_gen;
+        jj_la1[152] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5022,7 +5048,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                       distinct = true ;
         break;
       default:
-        jj_la1[152] = jj_gen;
+        jj_la1[153] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5038,7 +5064,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                          distinct = true ;
         break;
       default:
-        jj_la1[153] = jj_gen;
+        jj_la1[154] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5054,7 +5080,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                       distinct = true ;
         break;
       default:
-        jj_la1[154] = jj_gen;
+        jj_la1[155] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5075,7 +5101,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                                            ordered.add(expr2) ;
             break;
           default:
-            jj_la1[155] = jj_gen;
+            jj_la1[156] = jj_gen;
             ;
           }
         } else {
@@ -5088,14 +5114,14 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                                        ordered.add(expr2) ;
             break;
           default:
-            jj_la1[156] = jj_gen;
+            jj_la1[157] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
         }
         break;
       default:
-        jj_la1[157] = jj_gen;
+        jj_la1[158] = jj_gen;
         ;
       }
       jj_consume_token(RPAREN);
@@ -5109,7 +5135,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         agg = AggregatorFactory.createCustom(iri, a) ;
       break;
     default:
-      jj_la1[158] = jj_gen;
+      jj_la1[159] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5132,7 +5158,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       a = ArgList();
       break;
     default:
-      jj_la1[159] = jj_gen;
+      jj_la1[160] = jj_gen;
       ;
     }
     if ( a == null )
@@ -5165,13 +5191,13 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         uri = iri();
         break;
       default:
-        jj_la1[160] = jj_gen;
+        jj_la1[161] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
     default:
-      jj_la1[161] = jj_gen;
+      jj_la1[162] = jj_gen;
       ;
     }
       {if (true) return createLiteral(lex, lang, uri) ;}
@@ -5197,7 +5223,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       n = NumericLiteralNegative();
       break;
     default:
-      jj_la1[162] = jj_gen;
+      jj_la1[163] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5221,7 +5247,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                  {if (true) return createLiteralDouble(t.image) ;}
       break;
     default:
-      jj_la1[163] = jj_gen;
+      jj_la1[164] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5244,7 +5270,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                           {if (true) return createLiteralDouble(t.image) ;}
       break;
     default:
-      jj_la1[164] = jj_gen;
+      jj_la1[165] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5267,7 +5293,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                           {if (true) return createLiteralDouble(t.image) ;}
       break;
     default:
-      jj_la1[165] = jj_gen;
+      jj_la1[166] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5285,7 +5311,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
             {if (true) return XSD_FALSE ;}
       break;
     default:
-      jj_la1[166] = jj_gen;
+      jj_la1[167] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5312,7 +5338,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                  lex = stripQuotes3(t.image) ;
       break;
     default:
-      jj_la1[167] = jj_gen;
+      jj_la1[168] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5334,7 +5360,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                          {if (true) return iri ;}
       break;
     default:
-      jj_la1[168] = jj_gen;
+      jj_la1[169] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5353,7 +5379,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       {if (true) return resolvePName(t.image, t.beginLine, t.beginColumn) ;}
       break;
     default:
-      jj_la1[169] = jj_gen;
+      jj_la1[170] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5372,7 +5398,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                {if (true) return createBNode(t.beginLine, t.beginColumn) ;}
       break;
     default:
-      jj_la1[170] = jj_gen;
+      jj_la1[171] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5421,32 +5447,6 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     finally { jj_save(4, xla); }
   }
 
-  private boolean jj_3R_88() {
-    if (jj_scan_token(IF)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_164() {
-    if (jj_scan_token(STRING_LITERAL_LONG2)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_163() {
-    if (jj_scan_token(STRING_LITERAL_LONG1)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_162() {
-    if (jj_scan_token(STRING_LITERAL2)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_161() {
-    if (jj_scan_token(STRING_LITERAL1)) return true;
-    return false;
-  }
-
   private boolean jj_3R_153() {
     Token xsp;
     xsp = jj_scanpos;
@@ -5588,11 +5588,6 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_129() {
-    if (jj_3R_135()) return true;
-    return false;
-  }
-
   private boolean jj_3R_79() {
     if (jj_scan_token(STRUUID)) return true;
     if (jj_scan_token(NIL)) return true;
@@ -5656,6 +5651,11 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
+  private boolean jj_3R_129() {
+    if (jj_3R_135()) return true;
+    return false;
+  }
+
   private boolean jj_3R_74() {
     if (jj_scan_token(SECONDS)) return true;
     if (jj_scan_token(LPAREN)) return true;
@@ -5725,11 +5725,6 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_128() {
-    if (jj_3R_134()) return true;
-    return false;
-  }
-
   private boolean jj_3R_68() {
     if (jj_scan_token(STRAFTER)) return true;
     if (jj_scan_token(LPAREN)) return true;
@@ -5759,16 +5754,6 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_114() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_128()) {
-    jj_scanpos = xsp;
-    if (jj_3R_129()) return true;
-    }
-    return false;
-  }
-
   private boolean jj_3R_67() {
     if (jj_scan_token(STRBEFORE)) return true;
     if (jj_scan_token(LPAREN)) return true;
@@ -5781,6 +5766,11 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
+  private boolean jj_3R_128() {
+    if (jj_3R_134()) return true;
+    return false;
+  }
+
   private boolean jj_3R_156() {
     if (jj_3R_167()) return true;
     return false;
@@ -5797,6 +5787,16 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
+  private boolean jj_3R_114() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_128()) {
+    jj_scanpos = xsp;
+    if (jj_3R_129()) return true;
+    }
+    return false;
+  }
+
   private boolean jj_3R_154() {
     if (jj_3R_165()) return true;
     return false;
@@ -5917,6 +5917,24 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
+  private boolean jj_3R_50() {
+    if (jj_scan_token(URI)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_49() {
+    if (jj_scan_token(IRI)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_48() {
+    if (jj_scan_token(BOUND)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
   private boolean jj_3_2() {
     if (jj_scan_token(SEMICOLON)) return true;
     if (jj_3R_41()) return true;
@@ -5965,8 +5983,8 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_50() {
-    if (jj_scan_token(URI)) return true;
+  private boolean jj_3R_47() {
+    if (jj_scan_token(DTYPE)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
@@ -5976,30 +5994,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_49() {
-    if (jj_scan_token(IRI)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
   private boolean jj_3_3() {
     if (jj_scan_token(DOT)) return true;
     if (jj_3R_42()) return true;
     return false;
   }
 
-  private boolean jj_3R_48() {
-    if (jj_scan_token(BOUND)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_47() {
-    if (jj_scan_token(DTYPE)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
   private boolean jj_3R_46() {
     if (jj_scan_token(LANGMATCHES)) return true;
     if (jj_scan_token(LPAREN)) return true;
@@ -6209,17 +6209,17 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_136() {
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
   private boolean jj_3_5() {
     if (jj_scan_token(SEMICOLON)) return true;
     if (jj_scan_token(SEPARATOR)) return true;
     return false;
   }
 
+  private boolean jj_3R_136() {
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
   private boolean jj_3R_122() {
     if (jj_scan_token(GROUP_CONCAT)) return true;
     if (jj_scan_token(LPAREN)) return true;
@@ -6250,21 +6250,14 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_113() {
-    if (jj_3R_127()) return true;
-    return false;
-  }
-
   private boolean jj_3R_117() {
     if (jj_scan_token(SUM)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_127() {
-    if (jj_scan_token(PREFIX)) return true;
-    if (jj_scan_token(PNAME_NS)) return true;
-    if (jj_3R_133()) return true;
+  private boolean jj_3R_113() {
+    if (jj_3R_127()) return true;
     return false;
   }
 
@@ -6274,13 +6267,9 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_137() {
-    if (jj_scan_token(LBRACKET)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_126() {
-    if (jj_scan_token(BASE)) return true;
+  private boolean jj_3R_127() {
+    if (jj_scan_token(PREFIX)) return true;
+    if (jj_scan_token(PNAME_NS)) return true;
     if (jj_3R_133()) return true;
     return false;
   }
@@ -6313,18 +6302,14 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_112() {
-    if (jj_3R_126()) return true;
+  private boolean jj_3R_137() {
+    if (jj_scan_token(LBRACKET)) return true;
     return false;
   }
 
-  private boolean jj_3R_100() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_112()) {
-    jj_scanpos = xsp;
-    if (jj_3R_113()) return true;
-    }
+  private boolean jj_3R_126() {
+    if (jj_scan_token(BASE)) return true;
+    if (jj_3R_133()) return true;
     return false;
   }
 
@@ -6333,11 +6318,17 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_41() {
+  private boolean jj_3R_112() {
+    if (jj_3R_126()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_100() {
     Token xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_100()) { jj_scanpos = xsp; break; }
+    xsp = jj_scanpos;
+    if (jj_3R_112()) {
+    jj_scanpos = xsp;
+    if (jj_3R_113()) return true;
     }
     return false;
   }
@@ -6363,6 +6354,15 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
+  private boolean jj_3R_41() {
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_100()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
   private boolean jj_3R_110() {
     if (jj_scan_token(EXISTS)) return true;
     if (jj_3R_125()) return true;
@@ -6375,6 +6375,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
+  private boolean jj_3R_107() {
+    if (jj_scan_token(SUBSTR)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
   private boolean jj_3R_102() {
     if (jj_3R_115()) return true;
     return false;
@@ -6395,12 +6401,6 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_107() {
-    if (jj_scan_token(SUBSTR)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
   private boolean jj_3_4() {
     if (jj_scan_token(DOT)) return true;
     if (jj_3R_42()) return true;
@@ -6453,11 +6453,6 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_124() {
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
   private boolean jj_3R_96() {
     if (jj_scan_token(IS_NUMERIC)) return true;
     if (jj_scan_token(LPAREN)) return true;
@@ -6486,13 +6481,8 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_106() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(165)) {
-    jj_scanpos = xsp;
-    if (jj_3R_124()) return true;
-    }
+  private boolean jj_3R_124() {
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
@@ -6523,6 +6513,16 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
+  private boolean jj_3R_106() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(165)) {
+    jj_scanpos = xsp;
+    if (jj_3R_124()) return true;
+    }
+    return false;
+  }
+
   private boolean jj_3R_91() {
     if (jj_scan_token(SAME_TERM)) return true;
     if (jj_scan_token(LPAREN)) return true;
@@ -6556,6 +6556,32 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
+  private boolean jj_3R_88() {
+    if (jj_scan_token(IF)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_164() {
+    if (jj_scan_token(STRING_LITERAL_LONG2)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_163() {
+    if (jj_scan_token(STRING_LITERAL_LONG1)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_162() {
+    if (jj_scan_token(STRING_LITERAL2)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_161() {
+    if (jj_scan_token(STRING_LITERAL1)) return true;
+    return false;
+  }
+
   /** Generated Token Manager. */
   public ARQParserTokenManager token_source;
   JavaCharStream jj_input_stream;
@@ -6567,7 +6593,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
   private Token jj_scanpos, jj_lastpos;
   private int jj_la;
   private int jj_gen;
-  final private int[] jj_la1 = new int[171];
+  final private int[] jj_la1 = new int[172];
   static private int[] jj_la1_0;
   static private int[] jj_la1_1;
   static private int[] jj_la1_2;
@@ -6585,25 +6611,25 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       jj_la1_init_6();
    }
    private static void jj_la1_init_0() {
-      jj_la1_0 = new int[] {0xe400000,0x200,0x300000,0x300000,0x0,0x1800000,0x1800000,0x1c00,0x0,0xdc00,0xdc00,0xdc00,0x0,0x0,0xfc00,0x0,0xdc00,0xdc00,0x0,0x0,0x0,0x1c00,0x0,0x0,0x0,0x40000000,0x30000000,0xdc00,0x0,0xdc00,0x1c00,0xdc00,0x0,0xdc00,0xdc00,0x20000000,0x10000000,0x30000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c00,0x0,0x1c00,0x0,0xfc00,0x0,0x0,0xfc00,0xfc00,0x0,0x400000,0xfc00,0x0,0x0,0xfc00,0xfc00,0x0,0x0,0x0,0xc000,0x1c00,0xc000,0x0,0x0,0x1c00,0x0,0x1c00,0x0,0x1c00,0x800000,0x0,0x0,0x0,0x0,0xfc00,0x0,0xfc00,0x8dc00,0x0,0x8dc00,0x8dc00,0x0,0xfc00,0x88dc00,0x88dc00,0x0,0x88dc00,0x88dc00,0x0,0x0,0x0,0x0,0x0,0x881c00,0x0,0x0,0x0,0x0,0x881c00,0x0,0x81c00,0x81c00,0x81c00,0x81c00,0x0,0x0,0xfc00,0xfc00,0xfc00,0xfc00,0xfc00,0xdc00,0xc000,0x3c00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdc00,0xdc00,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0xdc00,0x800000,0x800000,0x800000,0x800000,0x800000,0x800000,0x0,0x0,0x0,0x0,0x0,0x10000,0x10000,0x0,0x0,0x0,0x0,0x0
 ,0x0,0x1c00,0x1800,0x2000,};
+      jj_la1_0 = new int[] {0xe400000,0x200,0x300000,0x300000,0x0,0x1800000,0x1800000,0x1c00,0x0,0xdc00,0xdc00,0xdc00,0x0,0x0,0xfc00,0x0,0xdc00,0xdc00,0x0,0x0,0x0,0x1c00,0x0,0x0,0x0,0x40000000,0x30000000,0xdc00,0x0,0xdc00,0x1c00,0xdc00,0x0,0xdc00,0xdc00,0x20000000,0x10000000,0x30000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c00,0x0,0x1c00,0x0,0xfc00,0x0,0x0,0xfc00,0xfc00,0x0,0x400000,0xfc00,0x0,0x0,0xfc00,0xfc00,0x0,0x0,0x0,0xc000,0x1c00,0xc000,0x0,0x0,0x1c00,0x0,0x1c00,0x0,0x1c00,0x800000,0x0,0x0,0x0,0x0,0xfc00,0x0,0xfc00,0x8dc00,0x0,0x8dc00,0x8dc00,0x0,0xfc00,0x88dc00,0x88dc00,0x0,0x88dc00,0x88dc00,0x0,0x0,0x0,0x0,0x0,0x881c00,0x0,0x0,0x0,0x0,0x881c00,0x0,0x81c00,0x81c00,0x81c00,0x81c00,0x0,0x0,0xfc00,0xfc00,0xfc00,0xfc00,0xfc00,0xdc00,0xfc00,0xc000,0x3c00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdc00,0xdc00,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0xdc00,0x800000,0x800000,0x800000,0x800000,0x800000,0x800000,0x0,0x0,0x0,0x0,0x0,0x10000,0x10000,0x0,0x0,0x0,
 0x0,0x0,0x0,0x1c00,0x1800,0x2000,};
    }
    private static void jj_la1_init_1() {
-      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x20000,0xb7e18000,0xb7e18000,0xb7e18000,0x20,0x20,0x0,0x60,0x0,0x0,0x20,0x40,0x20,0x10,0x40,0x40000,0x80000,0x0,0x0,0xb7e18000,0x20000,0xb7e18000,0xb7e18000,0xb7e1800c,0xc,0xb7e18000,0xb7e1800c,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x100,0x100,0x110,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x4001fb01,0x0,0x0,0x0,0x0,0x4001fb01,0x0,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x2,0x400,0xb7e18000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000,0x10000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb7e18000,0xb7e18000,0x0,0x0,0xb7e18000,0x0,0x0,0x0,0x0,0xb7e18000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x37e00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x20000,0xb7e18000,0xb7e18000,0xb7e18000,0x20,0x20,0x0,0x60,0x0,0x0,0x20,0x40,0x20,0x10,0x40,0x40000,0x80000,0x0,0x0,0xb7e18000,0x20000,0xb7e18000,0xb7e18000,0xb7e1800c,0xc,0xb7e18000,0xb7e1800c,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x100,0x100,0x110,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x4001fb01,0x0,0x0,0x0,0x0,0x4001fb01,0x0,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x2,0x400,0xb7e18000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000,0x10000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb7e18000,0xb7e18000,0x0,0x0,0xb7e18000,0x0,0x0,0x0,0x0,0xb7e18000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x37e00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
    }
    private static void jj_la1_init_2() {
-      jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffcbd,0xfffffcbd,0xfffffcbd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffcbd,0x0,0xfffffcbd,0xfffffcbd,0xfffffcbd,0x0,0xfffffcbd,0xfffffcbd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffcbd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x300,0x300,0x0,0x300,0x300,0x0,0x0,0x0,0x0,0x0,0x300,0x0,0x0,0x0,0x0,0x300,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffcbd,0xfffffcbd,0x0,0x0,0xfffffcbd,0x0,0x0,0x0,0x0,0xfffffcbd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+      jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffcbd,0xfffffcbd,0xfffffcbd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffcbd,0x0,0xfffffcbd,0xfffffcbd,0xfffffcbd,0x0,0xfffffcbd,0xfffffcbd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffcbd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x300,0x300,0x0,0x300,0x300,0x0,0x0,0x0,0x0,0x0,0x300,0x0,0x0,0x0,0x0,0x300,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffcbd,0xfffffcbd,0x0,0x0,0xfffffcbd,0x0,0x0,0x0,0x0,0xfffffcbd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
    }
    private static void jj_la1_init_3() {
-      jj_la1_3 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc000000,0x0,0xfbfffff,0xfbfffff,0xfbfffff,0x0,0x0,0xc000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3bfffff,0x0,0x3bfffff,0x3bfffff,0x3bfffff,0x0,0x3bfffff,0x3bfffff,0x0,0x0,0x0,0x0,0x0,0xe0000000,0xe0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x60000000,0x0,0x0,0x0,0x0,0x0,0xc000000,0x0,0x0,0xc000000,0xc000000,0x0,0x0,0xc000000,0x0,0x0,0xc000000,0xc000000,0x0,0x0,0x0,0x0,0xc000000,0x0,0x0,0x0,0xc000000,0x0,0xc000000,0x0,0x3bfffff,0x0,0x0,0x0,0x0,0x0,0xc000000,0x0,0xc000000,0x0,0x0,0x0,0x0,0x0,0xc000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc000000,0xc000000,0xc000000,0xc000000,0xc000000,0x0,0x0,0xc000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfbfffff,0xfbfffff,0x0,0x0,0x3bfffff,0x0,0x0,0x0,0x0,0xfbfffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc000000,0x0,0x0,0x0,0x0,};
+      jj_la1_3 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc000000,0x0,0xfbfffff,0xfbfffff,0xfbfffff,0x0,0x0,0xc000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3bfffff,0x0,0x3bfffff,0x3bfffff,0x3bfffff,0x0,0x3bfffff,0x3bfffff,0x0,0x0,0x0,0x0,0x0,0xe0000000,0xe0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x60000000,0x0,0x0,0x0,0x0,0x0,0xc000000,0x0,0x0,0xc000000,0xc000000,0x0,0x0,0xc000000,0x0,0x0,0xc000000,0xc000000,0x0,0x0,0x0,0x0,0xc000000,0x0,0x0,0x0,0xc000000,0x0,0xc000000,0x0,0x3bfffff,0x0,0x0,0x0,0x0,0x0,0xc000000,0x0,0xc000000,0x0,0x0,0x0,0x0,0x0,0xc000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc000000,0xc000000,0xc000000,0xc000000,0xc000000,0x0,0x0,0x0,0xc000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfbfffff,0xfbfffff,0x0,0x0,0x3bfffff,0x0,0x0,0x0,0x0,0xfbfffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc000000,0x0,0x0,0x0,0x0,};
    }
    private static void jj_la1_init_4() {
-      jj_la1_4 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x87fc0000,0x0,0x87fc0000,0x87fc0000,0x87fc0000,0x0,0x0,0x87fc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x84ff,0x84ff,0x200,0x800,0x200,0x200,0x200,0x200,0x200,0x200,0x8000,0x0,0x0,0x10000,0x0,0x0,0x2000,0x6000,0x87fc0000,0x0,0x0,0x87fc0000,0x87fc0000,0x0,0x0,0x87fc0000,0x0,0x0,0x87fc0000,0x87fc0000,0x0,0x0,0x200,0x0,0x87fc0000,0x0,0x0,0x0,0x87fc0000,0x0,0x87fc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x87fc0000,0x0,0x87fc0000,0x0,0x0,0x0,0x0,0x0,0x87fc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x87fc0000,0x87fc0000,0x87fc0000,0x87fc0000,0x87fc0000,0x0,0x0,0x87fc0000,0x0,0x0,0x0,0x0,0x7e00000,0x7e00000,0x0,0x0,0x7e00000,0x0,0x0,0x87fc0000,0x87fc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x87fc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7fc0000,0x1c0000,0xe00000,0x7000000,0x0,0x80000000,0x0,0x0,0x0,};
+      jj_la1_4 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x87fc0000,0x0,0x87fc0000,0x87fc0000,0x87fc0000,0x0,0x0,0x87fc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x84ff,0x84ff,0x200,0x800,0x200,0x200,0x200,0x200,0x200,0x200,0x8000,0x0,0x0,0x10000,0x0,0x0,0x2000,0x6000,0x87fc0000,0x0,0x0,0x87fc0000,0x87fc0000,0x0,0x0,0x87fc0000,0x0,0x0,0x87fc0000,0x87fc0000,0x0,0x0,0x200,0x0,0x87fc0000,0x0,0x0,0x0,0x87fc0000,0x0,0x87fc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x87fc0000,0x0,0x87fc0000,0x0,0x0,0x0,0x0,0x0,0x87fc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x87fc0000,0x87fc0000,0x87fc0000,0x87fc0000,0x87fc0000,0x0,0x0,0x0,0x87fc0000,0x0,0x0,0x0,0x0,0x7e00000,0x7e00000,0x0,0x0,0x7e00000,0x0,0x0,0x87fc0000,0x87fc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x87fc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7fc0000,0x1c0000,0xe00000,0x7000000,0x0,0x80000000,0x0,0x0,0x0,};
    }
    private static void jj_la1_init_5() {
-      jj_la1_5 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0xf,0xf,0x800000f,0x0,0x0,0x52f,0x40,0x0,0x8000000,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x8,0x8,0x8,0x0,0x8,0x8,0x0,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x52f,0x0,0x2000,0x52f,0x52f,0x2000,0x0,0x52f,0x40,0x2000,0x52f,0x52f,0x2000,0x40,0x0,0x28,0x7,0x0,0x28,0x28,0x7,0x28,0x7,0x0,0x8,0x0,0x1000,0x28,0x1000,0x28,0x52f,0x2000,0x52f,0x0,0x800,0x0,0x0,0x1000,0x52f,0x100008,0x100008,0x800,0x100008,0x100008,0x1000,0x0,0x10000000,0x10000000,0xa000040,0x100008,0x80,0x1080,0xa001000,0xa000040,0x100008,0x0,0x0,0x8,0x0,0x0,0x108,0x108,0x52f,0x52f,0x52f,0x52f,0x427,0x0,0x0,0x427,0x800000,0x1000000,0xfc000,0xfc000,0x6000000,0x0,0x18000000,0x18000000,0x6000000,0x18000000,0x18000000,0x610000f,0xf,0x28,0x1000,0x0,0x1000,0x1000,0x1000,0x0,0xe10000f,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x800,0x800,0x0,0x28,0x20000000,0x20000000,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x0,0x400,};
+      jj_la1_5 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0xf,0xf,0x800000f,0x0,0x0,0x52f,0x40,0x0,0x8000000,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x8,0x8,0x8,0x0,0x8,0x8,0x0,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x52f,0x0,0x2000,0x52f,0x52f,0x2000,0x0,0x52f,0x40,0x2000,0x52f,0x52f,0x2000,0x40,0x0,0x28,0x7,0x0,0x28,0x28,0x7,0x28,0x7,0x0,0x8,0x0,0x1000,0x28,0x1000,0x28,0x52f,0x2000,0x52f,0x0,0x800,0x0,0x0,0x1000,0x52f,0x100008,0x100008,0x800,0x100008,0x100008,0x1000,0x0,0x10000000,0x10000000,0xa000040,0x100008,0x80,0x1080,0xa001000,0xa000040,0x100008,0x0,0x0,0x8,0x0,0x0,0x108,0x108,0x52f,0x52f,0x52f,0x52f,0x427,0x0,0x400,0x0,0x427,0x800000,0x1000000,0xfc000,0xfc000,0x6000000,0x0,0x18000000,0x18000000,0x6000000,0x18000000,0x18000000,0x610000f,0xf,0x28,0x1000,0x0,0x1000,0x1000,0x1000,0x0,0xe10000f,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x800,0x800,0x0,0x28,0x20000000,0x20000000,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x0,0x400,};
    }
    private static void jj_la1_init_6() {
-      jj_la1_6 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0x0,0x2,0x2,0x0,0x1,0x2,0x2,0x10,0x2,0x0,0x0,0x0,0x10,0x0,0x1,0x2,0x2,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+      jj_la1_6 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0x0,0x2,0x2,0x0,0x1,0x2,0x2,0x10,0x2,0x0,0x0,0x0,0x10,0x0,0x1,0x2,0x2,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
    }
   final private JJCalls[] jj_2_rtns = new JJCalls[5];
   private boolean jj_rescan = false;
@@ -6620,7 +6646,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 171; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 172; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6635,7 +6661,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 171; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 172; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6646,7 +6672,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 171; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 172; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6657,7 +6683,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 171; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 172; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6667,7 +6693,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 171; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 172; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6677,7 +6703,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 171; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 172; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6797,7 +6823,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       la1tokens[jj_kind] = true;
       jj_kind = -1;
     }
-    for (int i = 0; i < 171; i++) {
+    for (int i = 0; i < 172; i++) {
       if (jj_la1[i] == jj_gen) {
         for (int j = 0; j < 32; j++) {
           if ((jj_la1_0[i] & (1<<j)) != 0) {

http://git-wip-us.apache.org/repos/asf/jena/blob/e7fbc0f0/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/SPARQLParser11.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/SPARQLParser11.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/SPARQLParser11.java
index e1cec3e..a6d961f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/SPARQLParser11.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/SPARQLParser11.java
@@ -3308,6 +3308,32 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
     throw new Error("Missing return statement in function");
   }
 
+  final public Node VarOrBlankNodeOrIri() throws ParseException {
+                              Node n = null ; String iri ;
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case VAR1:
+    case VAR2:
+      n = Var();
+      break;
+    case BLANK_NODE_LABEL:
+    case ANON:
+      n = BlankNode();
+      break;
+    case IRIref:
+    case PNAME_NS:
+    case PNAME_LN:
+      iri = iri();
+                                                n = createNode(iri) ;
+      break;
+    default:
+      jj_la1[122] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    {if (true) return n ;}
+    throw new Error("Missing return statement in function");
+  }
+
   final public Var Var() throws ParseException {
               Token t ;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -3318,7 +3344,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
       t = jj_consume_token(VAR2);
       break;
     default:
-      jj_la1[122] = jj_gen;
+      jj_la1[123] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3369,7 +3395,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
           {if (true) return nRDFnil ;}
       break;
     default:
-      jj_la1[123] = jj_gen;
+      jj_la1[124] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3393,7 +3419,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
         ;
         break;
       default:
-        jj_la1[124] = jj_gen;
+        jj_la1[125] = jj_gen;
         break label_31;
       }
       jj_consume_token(SC_OR);
@@ -3414,7 +3440,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
         ;
         break;
       default:
-        jj_la1[125] = jj_gen;
+        jj_la1[126] = jj_gen;
         break label_32;
       }
       jj_consume_token(SC_AND);
@@ -3487,13 +3513,13 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
         expr1 = new E_NotOneOf(expr1, a) ;
         break;
       default:
-        jj_la1[126] = jj_gen;
+        jj_la1[127] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
     default:
-      jj_la1[127] = jj_gen;
+      jj_la1[128] = jj_gen;
       ;
     }
       {if (true) return expr1 ;}
@@ -3524,7 +3550,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
         ;
         break;
       default:
-        jj_la1[128] = jj_gen;
+        jj_la1[129] = jj_gen;
         break label_33;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -3562,7 +3588,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
          addition = false ;
           break;
         default:
-          jj_la1[129] = jj_gen;
+          jj_la1[130] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
@@ -3574,7 +3600,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
             ;
             break;
           default:
-            jj_la1[130] = jj_gen;
+            jj_la1[131] = jj_gen;
             break label_34;
           }
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -3589,7 +3615,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
                                             expr2 = new E_Divide(expr2, expr3) ;
             break;
           default:
-            jj_la1[131] = jj_gen;
+            jj_la1[132] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
@@ -3600,7 +3626,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
          expr1 = new E_Subtract(expr1, expr2) ;
         break;
       default:
-        jj_la1[132] = jj_gen;
+        jj_la1[133] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -3620,7 +3646,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
         ;
         break;
       default:
-        jj_la1[133] = jj_gen;
+        jj_la1[134] = jj_gen;
         break label_35;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -3635,7 +3661,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
       expr1 = new E_Divide(expr1, expr2) ;
         break;
       default:
-        jj_la1[134] = jj_gen;
+        jj_la1[135] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -3748,7 +3774,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
                                  {if (true) return expr ;}
       break;
     default:
-      jj_la1[135] = jj_gen;
+      jj_la1[136] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3862,7 +3888,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
                  {if (true) return asExpr(gn) ;}
       break;
     default:
-      jj_la1[136] = jj_gen;
+      jj_la1[137] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3957,7 +3983,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
               {if (true) return new E_BNode() ;}
         break;
       default:
-        jj_la1[137] = jj_gen;
+        jj_la1[138] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -4278,7 +4304,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
                              {if (true) return expr ;}
       break;
     default:
-      jj_la1[138] = jj_gen;
+      jj_la1[139] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4298,7 +4324,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
       flagsExpr = Expression();
       break;
     default:
-      jj_la1[139] = jj_gen;
+      jj_la1[140] = jj_gen;
       ;
     }
     jj_consume_token(RPAREN);
@@ -4319,7 +4345,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
       expr3 = Expression();
       break;
     default:
-      jj_la1[140] = jj_gen;
+      jj_la1[141] = jj_gen;
       ;
     }
     jj_consume_token(RPAREN);
@@ -4342,7 +4368,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
       expr4 = Expression();
       break;
     default:
-      jj_la1[141] = jj_gen;
+      jj_la1[142] = jj_gen;
       ;
     }
     jj_consume_token(RPAREN);
@@ -4384,7 +4410,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
                    distinct = true ;
         break;
       default:
-        jj_la1[142] = jj_gen;
+        jj_la1[143] = jj_gen;
         ;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -4479,7 +4505,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
         expr = Expression();
         break;
       default:
-        jj_la1[143] = jj_gen;
+        jj_la1[144] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -4496,7 +4522,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
                                       distinct = true ;
         break;
       default:
-        jj_la1[144] = jj_gen;
+        jj_la1[145] = jj_gen;
         ;
       }
       expr = Expression();
@@ -4512,7 +4538,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
                                       distinct = true ;
         break;
       default:
-        jj_la1[145] = jj_gen;
+        jj_la1[146] = jj_gen;
         ;
       }
       expr = Expression();
@@ -4528,7 +4554,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
                                       distinct = true ;
         break;
       default:
-        jj_la1[146] = jj_gen;
+        jj_la1[147] = jj_gen;
         ;
       }
       expr = Expression();
@@ -4544,7 +4570,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
                                       distinct = true ;
         break;
       default:
-        jj_la1[147] = jj_gen;
+        jj_la1[148] = jj_gen;
         ;
       }
       expr = Expression();
@@ -4560,7 +4586,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
                                          distinct = true ;
         break;
       default:
-        jj_la1[148] = jj_gen;
+        jj_la1[149] = jj_gen;
         ;
       }
       expr = Expression();
@@ -4576,7 +4602,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
                       distinct = true ;
         break;
       default:
-        jj_la1[149] = jj_gen;
+        jj_la1[150] = jj_gen;
         ;
       }
       expr = Expression();
@@ -4589,14 +4615,14 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
         sep = String();
         break;
       default:
-        jj_la1[150] = jj_gen;
+        jj_la1[151] = jj_gen;
         ;
       }
       jj_consume_token(RPAREN);
       agg = AggregatorFactory.createGroupConcat(distinct, expr, sep, ordered) ;
       break;
     default:
-      jj_la1[151] = jj_gen;
+      jj_la1[152] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4619,7 +4645,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
       a = ArgList();
       break;
     default:
-      jj_la1[152] = jj_gen;
+      jj_la1[153] = jj_gen;
       ;
     }
     if ( a == null )
@@ -4652,13 +4678,13 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
         uri = iri();
         break;
       default:
-        jj_la1[153] = jj_gen;
+        jj_la1[154] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
     default:
-      jj_la1[154] = jj_gen;
+      jj_la1[155] = jj_gen;
       ;
     }
       {if (true) return createLiteral(lex, lang, uri) ;}
@@ -4684,7 +4710,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
       n = NumericLiteralNegative();
       break;
     default:
-      jj_la1[155] = jj_gen;
+      jj_la1[156] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4708,7 +4734,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
                  {if (true) return createLiteralDouble(t.image) ;}
       break;
     default:
-      jj_la1[156] = jj_gen;
+      jj_la1[157] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4731,7 +4757,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
                           {if (true) return createLiteralDouble(t.image) ;}
       break;
     default:
-      jj_la1[157] = jj_gen;
+      jj_la1[158] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4754,7 +4780,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
                           {if (true) return createLiteralDouble(t.image) ;}
       break;
     default:
-      jj_la1[158] = jj_gen;
+      jj_la1[159] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4772,7 +4798,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
             {if (true) return XSD_FALSE ;}
       break;
     default:
-      jj_la1[159] = jj_gen;
+      jj_la1[160] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4799,7 +4825,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
                                  lex = stripQuotes3(t.image) ;
       break;
     default:
-      jj_la1[160] = jj_gen;
+      jj_la1[161] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4821,7 +4847,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
                          {if (true) return iri ;}
       break;
     default:
-      jj_la1[161] = jj_gen;
+      jj_la1[162] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4840,7 +4866,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
       {if (true) return resolvePName(t.image, t.beginLine, t.beginColumn) ;}
       break;
     default:
-      jj_la1[162] = jj_gen;
+      jj_la1[163] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4859,7 +4885,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
                {if (true) return createBNode(t.beginLine, t.beginColumn) ;}
       break;
     default:
-      jj_la1[163] = jj_gen;
+      jj_la1[164] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4882,7 +4908,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
   public Token jj_nt;
   private int jj_ntk;
   private int jj_gen;
-  final private int[] jj_la1 = new int[164];
+  final private int[] jj_la1 = new int[165];
   static private int[] jj_la1_0;
   static private int[] jj_la1_1;
   static private int[] jj_la1_2;
@@ -4900,25 +4926,25 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
       jj_la1_init_6();
    }
    private static void jj_la1_init_0() {
-      jj_la1_0 = new int[] {0xe400000,0x200,0x300000,0x300000,0x0,0x1800000,0x1800000,0xc000,0xc000,0xc000,0x0,0x0,0xfc00,0x0,0xdc00,0xdc00,0x0,0x0,0x0,0x1c00,0x0,0x0,0x0,0x40000000,0x30000000,0xdc00,0x0,0xdc00,0x1c00,0xdc00,0x0,0xdc00,0xdc00,0x20000000,0x10000000,0x30000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c00,0x0,0x1c00,0x0,0xfc00,0x0,0x0,0xfc00,0xfc00,0xfc00,0x0,0x400000,0xfc00,0x0,0x0,0xfc00,0xfc00,0x0,0x0,0x0,0xc000,0x1c00,0xc000,0x0,0x0,0x1c00,0x0,0x1c00,0x0,0x1c00,0x800000,0x0,0x0,0x0,0x0,0xfc00,0xfc00,0x0,0xfc00,0x8dc00,0x0,0x8dc00,0x8dc00,0x0,0xfc00,0x8dc00,0x8dc00,0x0,0x8dc00,0x8dc00,0x0,0x0,0x0,0x0,0x81c00,0x0,0x81c00,0x0,0x81c00,0x81c00,0x81c00,0x81c00,0x0,0x0,0xfc00,0xfc00,0xfc00,0xfc00,0xfc00,0xdc00,0xc000,0x3c00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdc00,0xdc00,0x0,0x0,0x0,0x0,0x0,0x800000,0xdc00,0x800000,0x800000,0x800000,0x800000,0x800000,0x800000,0x0,0x0,0x0,0x10000,0x10000,0x0,0x0,0x0,0x0,0x0,0x0,0x1c00,0x1800,0x2000,};
+      jj_la1_0 = new int[] {0xe400000,0x200,0x300000,0x300000,0x0,0x1800000,0x1800000,0xc000,0xc000,0xc000,0x0,0x0,0xfc00,0x0,0xdc00,0xdc00,0x0,0x0,0x0,0x1c00,0x0,0x0,0x0,0x40000000,0x30000000,0xdc00,0x0,0xdc00,0x1c00,0xdc00,0x0,0xdc00,0xdc00,0x20000000,0x10000000,0x30000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c00,0x0,0x1c00,0x0,0xfc00,0x0,0x0,0xfc00,0xfc00,0xfc00,0x0,0x400000,0xfc00,0x0,0x0,0xfc00,0xfc00,0x0,0x0,0x0,0xc000,0x1c00,0xc000,0x0,0x0,0x1c00,0x0,0x1c00,0x0,0x1c00,0x800000,0x0,0x0,0x0,0x0,0xfc00,0xfc00,0x0,0xfc00,0x8dc00,0x0,0x8dc00,0x8dc00,0x0,0xfc00,0x8dc00,0x8dc00,0x0,0x8dc00,0x8dc00,0x0,0x0,0x0,0x0,0x81c00,0x0,0x81c00,0x0,0x81c00,0x81c00,0x81c00,0x81c00,0x0,0x0,0xfc00,0xfc00,0xfc00,0xfc00,0xfc00,0xdc00,0xfc00,0xc000,0x3c00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdc00,0xdc00,0x0,0x0,0x0,0x0,0x0,0x800000,0xdc00,0x800000,0x800000,0x800000,0x800000,0x800000,0x800000,0x0,0x0,0x0,0x10000,0x10000,0x0,0x0,0x0,0x0,0x0,0x0,0x1c00,0x1800,0x200
 0,};
    }
    private static void jj_la1_init_1() {
-      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x0,0x60,0x0,0x0,0x20,0x40,0x20,0x10,0x40,0x20000,0x40000,0x0,0x0,0xdbe0c000,0x10000,0xdbe0c000,0xdbe0c000,0xdbe0c00c,0xc,0xdbe0c000,0xdbe0c00c,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x100,0x100,0x110,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20003b01,0x0,0x0,0x0,0x0,0x20003b01,0x0,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x2,0x400,0xdbe0c000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000,0x8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdbe0c000,0xdbe0c000,0x0,0xdbe0c000,0x0,0x0,0x0,0x0,0xdbe0c000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1be00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x0,0x60,0x0,0x0,0x20,0x40,0x20,0x10,0x40,0x20000,0x40000,0x0,0x0,0xdbe0c000,0x10000,0xdbe0c000,0xdbe0c000,0xdbe0c00c,0xc,0xdbe0c000,0xdbe0c00c,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x100,0x100,0x110,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20003b01,0x0,0x0,0x0,0x0,0x20003b01,0x0,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x2,0x400,0xdbe0c000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000,0x8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdbe0c000,0xdbe0c000,0x0,0xdbe0c000,0x0,0x0,0x0,0x0,0xdbe0c000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1be00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
    }
    private static void jj_la1_init_2() {
-      jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffffe,0x0,0xfffffffe,0xfffffffe,0xfffffffe,0x0,0xfffffffe,0xfffffffe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffffe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffffe,0xfffffffe,0x0,0xfffffffe,0x0,0x0,0x0,0x0,0xfffffffe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+      jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffffe,0x0,0xfffffffe,0xfffffffe,0xfffffffe,0x0,0xfffffffe,0xfffffffe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffffe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffffe,0xfffffffe,0x0,0xfffffffe,0x0,0x0,0x0,0x0,0xfffffffe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
    }
    private static void jj_la1_init_3() {
-      jj_la1_3 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x300000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xeffff,0x0,0xeffff,0xeffff,0xeffff,0x0,0xeffff,0xeffff,0x0,0x0,0x0,0x0,0x0,0xff800000,0xff800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0x1800000,0x0,0x0,0x0,0x0,0x0,0x300000,0x0,0x0,0x300000,0x300000,0x300000,0x0,0x0,0x300000,0x0,0x0,0x300000,0x300000,0x0,0x0,0x0,0x0,0x300000,0x0,0x0,0x0,0x300000,0x0,0x300000,0x0,0xeffff,0x0,0x0,0x0,0x0,0x0,0x300000,0x300000,0x0,0x300000,0x0,0x0,0x0,0x0,0x0,0x300000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x300000,0x300000,0x300000,0x300000,0x300000,0x0,0x0,0x300000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3effff,0x3effff,0x0,0xeffff,0x0,0x0,0x0,0x0,0x3effff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x300000,0x0,0x0,0x0,0x0,};
+      jj_la1_3 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x300000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xeffff,0x0,0xeffff,0xeffff,0xeffff,0x0,0xeffff,0xeffff,0x0,0x0,0x0,0x0,0x0,0xff800000,0xff800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0x1800000,0x0,0x0,0x0,0x0,0x0,0x300000,0x0,0x0,0x300000,0x300000,0x300000,0x0,0x0,0x300000,0x0,0x0,0x300000,0x300000,0x0,0x0,0x0,0x0,0x300000,0x0,0x0,0x0,0x300000,0x0,0x300000,0x0,0xeffff,0x0,0x0,0x0,0x0,0x0,0x300000,0x300000,0x0,0x300000,0x0,0x0,0x0,0x0,0x0,0x300000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x300000,0x300000,0x300000,0x300000,0x300000,0x0,0x0,0x0,0x300000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3effff,0x3effff,0x0,0xeffff,0x0,0x0,0x0,0x0,0x3effff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x300000,0x0,0x0,0x0,0x0,};
    }
    private static void jj_la1_init_4() {
-      jj_la1_4 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x20000000,0x20000000,0x0,0x0,0xbe1ff000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x20000000,0x20000000,0x20000000,0x0,0x20000000,0x20000000,0x0,0x0,0x0,0x0,0x0,0x213,0x213,0x8,0x20,0x8,0x8,0x8,0x8,0x8,0x8,0x200,0x0,0x0,0x400,0x0,0x0,0x80,0x180,0xbe1ff000,0x0,0x0,0xbe1ff000,0xbe1ff000,0xbe1ff000,0x0,0x0,0xbe1ff000,0x0,0x0,0xbe1ff000,0xbe1ff000,0x0,0x0,0x8,0xa0000000,0x1e1ff000,0x0,0xa0000000,0xa0000000,0x1e1ff000,0xa0000000,0x1e1ff000,0x0,0x20000000,0x0,0x0,0xa0000000,0x0,0xa0000000,0xbe1ff000,0xbe1ff000,0x0,0xbe1ff000,0x0,0x0,0x0,0x0,0x0,0xbe1ff000,0x20000000,0x20000000,0x0,0x20000000,0x20000000,0x0,0x0,0x0,0x0,0x20000000,0x0,0x20000000,0x0,0x0,0x20000000,0x0,0x0,0x20000000,0x20000000,0xbe1ff000,0xbe1ff000,0xbe1ff000,0xbe1ff000,0x9e1ff000,0x0,0x0,0x9e1ff000,0x0,0x0,0x0,0x0,0x1f8000,0x1f8000,0x0,0x0,0x1f8000,0x0,0x0,0x3e1ff000,0x3e1ff000,0xa0000000,0x0,0x0,0x0,0x0,0x0,0x3e1ff000,0x0,0x0,0x0,0x0,
 0x0,0x0,0x0,0x0,0xa0000000,0x0,0x0,0x1ff000,0x7000,0x38000,0x1c0000,0x0,0x1e000000,0x0,0x0,0x0,};
+      jj_la1_4 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x20000000,0x20000000,0x0,0x0,0xbe1ff000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x20000000,0x20000000,0x20000000,0x0,0x20000000,0x20000000,0x0,0x0,0x0,0x0,0x0,0x213,0x213,0x8,0x20,0x8,0x8,0x8,0x8,0x8,0x8,0x200,0x0,0x0,0x400,0x0,0x0,0x80,0x180,0xbe1ff000,0x0,0x0,0xbe1ff000,0xbe1ff000,0xbe1ff000,0x0,0x0,0xbe1ff000,0x0,0x0,0xbe1ff000,0xbe1ff000,0x0,0x0,0x8,0xa0000000,0x1e1ff000,0x0,0xa0000000,0xa0000000,0x1e1ff000,0xa0000000,0x1e1ff000,0x0,0x20000000,0x0,0x0,0xa0000000,0x0,0xa0000000,0xbe1ff000,0xbe1ff000,0x0,0xbe1ff000,0x0,0x0,0x0,0x0,0x0,0xbe1ff000,0x20000000,0x20000000,0x0,0x20000000,0x20000000,0x0,0x0,0x0,0x0,0x20000000,0x0,0x20000000,0x0,0x0,0x20000000,0x0,0x0,0x20000000,0x20000000,0xbe1ff000,0xbe1ff000,0xbe1ff000,0xbe1ff000,0x9e1ff000,0x0,0x0,0x0,0x9e1ff000,0x0,0x0,0x0,0x0,0x1f8000,0x1f8000,0x0,0x0,0x1f8000,0x0,0x0,0x3e1ff000,0x3e1ff000,0xa0000000,0x0,0x0,0x0,0x0,0x0,0x3e1ff000,0x0,0x0,0x0,
 0x0,0x0,0x0,0x0,0x0,0xa0000000,0x0,0x0,0x1ff000,0x7000,0x38000,0x1c0000,0x0,0x1e000000,0x0,0x0,0x0,};
    }
    private static void jj_la1_init_5() {
-      jj_la1_5 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x14,0x1,0x0,0x200000,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x14,0x0,0x80,0x14,0x14,0x14,0x80,0x0,0x14,0x1,0x80,0x14,0x14,0x80,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x40,0x0,0x14,0x14,0x80,0x14,0x0,0x20,0x0,0x0,0x40,0x14,0x4004000,0x4004000,0x20,0x4004000,0x4004000,0x40,0x2000000,0x400000,0x20280000,0x4004000,0x20280000,0x4000,0x2000000,0x4000000,0x4000000,0x0,0x4000000,0x4,0x4,0x14,0x14,0x14,0x14,0x10,0x0,0x0,0x10,0x20000,0x40000,0x3f00,0x3f00,0x180000,0x0,0x600000,0x600000,0x180000,0x600000,0x600000,0x184000,0x0,0x0,0x0,0x40,0x40,0x40,0x0,0x384000,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x800000,0x800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,};
+      jj_la1_5 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x14,0x1,0x0,0x200000,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x14,0x0,0x80,0x14,0x14,0x14,0x80,0x0,0x14,0x1,0x80,0x14,0x14,0x80,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x40,0x0,0x14,0x14,0x80,0x14,0x0,0x20,0x0,0x0,0x40,0x14,0x4004000,0x4004000,0x20,0x4004000,0x4004000,0x40,0x2000000,0x400000,0x20280000,0x4004000,0x20280000,0x4000,0x2000000,0x4000000,0x4000000,0x0,0x4000000,0x4,0x4,0x14,0x14,0x14,0x14,0x10,0x0,0x10,0x0,0x10,0x20000,0x40000,0x3f00,0x3f00,0x180000,0x0,0x600000,0x600000,0x180000,0x600000,0x600000,0x184000,0x0,0x0,0x0,0x40,0x40,0x40,0x0,0x384000,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x800000,0x800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,};
    }
    private static void jj_la1_init_6() {
-      jj_la1_6 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+      jj_la1_6 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
    }
 
   /** Constructor with InputStream. */
@@ -4932,7 +4958,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 164; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 165; i++) jj_la1[i] = -1;
   }
 
   /** Reinitialise. */
@@ -4946,7 +4972,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 164; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 165; i++) jj_la1[i] = -1;
   }
 
   /** Constructor. */
@@ -4956,7 +4982,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 164; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 165; i++) jj_la1[i] = -1;
   }
 
   /** Reinitialise. */
@@ -4966,7 +4992,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 164; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 165; i++) jj_la1[i] = -1;
   }
 
   /** Constructor with generated Token Manager. */
@@ -4975,7 +5001,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 164; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 165; i++) jj_la1[i] = -1;
   }
 
   /** Reinitialise. */
@@ -4984,7 +5010,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 164; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 165; i++) jj_la1[i] = -1;
   }
 
   private Token jj_consume_token(int kind) throws ParseException {
@@ -5040,7 +5066,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
       la1tokens[jj_kind] = true;
       jj_kind = -1;
     }
-    for (int i = 0; i < 164; i++) {
+    for (int i = 0; i < 165; i++) {
       if (jj_la1[i] == jj_gen) {
         for (int j = 0; j < 32; j++) {
           if ((jj_la1_0[i] & (1<<j)) != 0) {


[13/50] [abbrv] jena git commit: JENA-929: Migrate Filter to Java 8 Predicate

Posted by cl...@apache.org.
JENA-929: Migrate Filter to Java 8 Predicate

This closes #55


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/c3346910
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/c3346910
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/c3346910

Branch: refs/heads/add-contract-tests
Commit: c33469108b52b77f821f0efe17206e00e9b6c8e2
Parents: b4b5c1d
Author: ajs6f <aj...@virginia.edu>
Authored: Fri May 1 12:20:17 2015 -0400
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat May 2 18:18:37 2015 +0100

----------------------------------------------------------------------
 .../apache/jena/sparql/graph/GraphMemPlain.java |   6 +-
 .../sparql/util/graph/GraphContainerUtils.java  |   6 +-
 .../main/java/org/apache/jena/graph/Triple.java |  26 ++-
 .../jena/graph/compose/CompositionBase.java     |  47 ++----
 .../apache/jena/graph/impl/CollectionGraph.java |  21 +--
 .../apache/jena/graph/impl/GraphMatcher.java    |  34 ++--
 .../org/apache/jena/mem/NodeToTriplesMap.java   |  25 ++-
 .../apache/jena/mem/NodeToTriplesMapMem.java    |  11 +-
 .../java/org/apache/jena/ontology/OntTools.java |   8 +-
 .../apache/jena/ontology/impl/OntClassImpl.java |  14 +-
 .../apache/jena/ontology/impl/OntModelImpl.java |  33 +---
 .../jena/ontology/impl/OntPropertyImpl.java     |  14 +-
 .../jena/ontology/impl/OntResourceImpl.java     |  17 +-
 .../org/apache/jena/rdf/model/Selector.java     |   9 +-
 .../apache/jena/rdf/model/impl/ModelCom.java    |  70 +++-----
 .../apache/jena/rdf/model/impl/ReifierStd.java  |  10 +-
 .../jena/rdfxml/xmloutput/impl/Unparser.java    |  69 ++++----
 .../jena/reasoner/rulesys/FBRuleInfGraph.java   |   5 +-
 .../apache/jena/reasoner/rulesys/Functor.java   |   9 +-
 .../jena/reasoner/rulesys/impl/SafeGraph.java   |  11 +-
 .../jena/util/iterator/ExtendedIterator.java    |   5 +-
 .../org/apache/jena/util/iterator/Filter.java   | 165 ++++++++++++-------
 .../jena/util/iterator/FilterDropIterator.java  |  34 ----
 .../jena/util/iterator/FilterIterator.java      |  14 +-
 .../jena/util/iterator/FilterKeepIterator.java  |  34 ----
 .../apache/jena/util/iterator/LazyIterator.java |   5 +-
 .../apache/jena/util/iterator/NiceIterator.java |   9 +-
 .../apache/jena/util/iterator/UniqueFilter.java |   5 +-
 .../apache/jena/graph/test/TestTripleField.java |  23 +--
 .../apache/jena/ontology/impl/TestOntTools.java |   5 +-
 .../jena/util/iterator/test/TestFilters.java    |  82 +--------
 .../propertytable/graph/GraphPropertyTable.java |  10 +-
 .../model/impl/SecuredModelImpl.java            |  12 +-
 .../model/impl/SecuredNodeIterator.java         |   6 +-
 .../model/impl/SecuredRSIterator.java           |  10 +-
 .../model/impl/SecuredResIterator.java          |   6 +-
 .../permissions/model/impl/SecuredSeqImpl.java  |   7 +-
 .../model/impl/SecuredStatementIterator.java    |   6 +-
 .../jena/permissions/utils/ContainerFilter.java |   7 +-
 .../permissions/utils/PermStatementFilter.java  |   6 +-
 .../permissions/utils/PermTripleFilter.java     |   6 +-
 .../permissions/utils/RDFListSecFilter.java     |   6 +-
 42 files changed, 338 insertions(+), 570 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-arq/src/main/java/org/apache/jena/sparql/graph/GraphMemPlain.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/GraphMemPlain.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/GraphMemPlain.java
index bd8fd10..8630b8b 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/GraphMemPlain.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/GraphMemPlain.java
@@ -22,6 +22,7 @@ import java.util.HashSet ;
 import java.util.Iterator ;
 import java.util.Locale ;
 import java.util.Set ;
+import java.util.function.Predicate;
 
 import org.apache.jena.graph.Capabilities ;
 import org.apache.jena.graph.Node ;
@@ -31,7 +32,6 @@ import org.apache.jena.graph.impl.GraphBase ;
 import org.apache.jena.graph.impl.SimpleEventManager ;
 import org.apache.jena.util.iterator.ClosableIterator ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Filter ;
 
 /**
  * A version of Graph that does term equality only 
@@ -114,7 +114,7 @@ public class GraphMemPlain extends GraphBase
         return node ; 
     }
     
-    static class TripleMatchFilterEquality extends Filter<Triple>
+    static class TripleMatchFilterEquality implements Predicate<Triple>
     {
         final protected Triple tMatch;
     
@@ -123,7 +123,7 @@ public class GraphMemPlain extends GraphBase
             { this.tMatch = tMatch; }
         
         @Override
-        public boolean accept(Triple t)
+        public boolean test(Triple t)
         {
             return tripleContained(tMatch, t) ;
         }

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphContainerUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphContainerUtils.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphContainerUtils.java
index f35fb25..c3ea9e6 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphContainerUtils.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphContainerUtils.java
@@ -22,6 +22,7 @@ import java.util.Collection ;
 import java.util.Iterator ;
 import java.util.SortedMap ;
 import java.util.TreeMap ;
+import java.util.function.Predicate;
 import java.util.regex.Matcher ;
 import java.util.regex.Pattern ;
 
@@ -31,7 +32,6 @@ import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.sparql.expr.Expr ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Filter ;
 import org.apache.jena.vocabulary.RDF ;
 import org.apache.jena.vocabulary.RDFS ;
 
@@ -98,9 +98,9 @@ public class GraphContainerUtils
     }
     
     private static Node RDFSmember = RDFS.member.asNode() ;
-    private static Filter<Triple> filterRDFSmember = new Filter<Triple>() {
+    private static Predicate<Triple> filterRDFSmember = new Predicate<Triple>() {
         @Override
-        public boolean accept(Triple triple) {
+        public boolean test(Triple triple) {
             Node p = triple.getPredicate() ;
             if ( ! triple.getPredicate().isURI() )
                 return false ;

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/graph/Triple.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/graph/Triple.java b/jena-core/src/main/java/org/apache/jena/graph/Triple.java
index 89d7238..ee3f0e2 100644
--- a/jena-core/src/main/java/org/apache/jena/graph/Triple.java
+++ b/jena-core/src/main/java/org/apache/jena/graph/Triple.java
@@ -18,9 +18,10 @@
 
 package org.apache.jena.graph;
 
+import java.util.function.Predicate;
+
 import org.apache.jena.shared.PrefixMapping ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Filter ;
 import org.apache.jena.util.iterator.NullIterator ;
 
 /**
@@ -173,23 +174,22 @@ public class Triple
         {
         public abstract Node getField( Triple t );
         
-        public abstract Filter<Triple> filterOn( Node n );
+        public abstract Predicate<Triple> filterOn( Node n );
         
-        public final Filter<Triple> filterOn( Triple t )
+        public final Predicate<Triple> filterOn( Triple t )
             { return filterOn( getField( t ) ); }
         
-        protected static final Filter<Triple> anyTriple = Filter.any();
+        protected static final Predicate<Triple> anyTriple = t -> true;
         
         public static final Field fieldSubject = new Field() 
             { 
             @Override public Node getField( Triple t ) 
                 { return t.subj; }
             
-            @Override public Filter<Triple> filterOn( final Node n )
+            @Override public Predicate<Triple> filterOn( final Node n )
                 { 
                 return n.isConcrete() 
-                    ? new Filter<Triple>() 
-                        { @Override public boolean accept( Triple x ) { return n.equals( x.subj ); } }
+                    ? x -> n.equals( x.subj )
                     : anyTriple
                     ;
                 }
@@ -200,11 +200,9 @@ public class Triple
             @Override public Node getField( Triple t ) 
                 { return t.obj; } 
             
-            @Override public Filter<Triple> filterOn( final Node n )
+            @Override public Predicate<Triple> filterOn( final Node n )
                 { return n.isConcrete() 
-                    ? new Filter<Triple>() 
-                        { @Override public boolean accept( Triple x ) 
-                            { return n.sameValueAs( x.obj ); } }
+                    ? x -> n.sameValueAs( x.obj )
                     : anyTriple; 
                 }
             };
@@ -214,11 +212,9 @@ public class Triple
             @Override public Node getField( Triple t ) 
                 { return t.pred; } 
             
-            @Override public Filter<Triple> filterOn( final Node n )
+            @Override public Predicate<Triple> filterOn( final Node n )
                 { return n.isConcrete()
-                    ? new Filter<Triple>() 
-                        { @Override
-                        public boolean accept( Triple x ) { return n.equals( x.pred ); } }
+                    ? x -> n.equals( x.pred )
                     : anyTriple; 
                 }
             };

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/graph/compose/CompositionBase.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/graph/compose/CompositionBase.java b/jena-core/src/main/java/org/apache/jena/graph/compose/CompositionBase.java
index 7c02bca..a28fec4 100755
--- a/jena-core/src/main/java/org/apache/jena/graph/compose/CompositionBase.java
+++ b/jena-core/src/main/java/org/apache/jena/graph/compose/CompositionBase.java
@@ -24,6 +24,7 @@ package org.apache.jena.graph.compose;
 // Imports
 ///////////////
 import java.util.*;
+import java.util.function.Predicate;
 
 import org.apache.jena.graph.* ;
 import org.apache.jena.graph.impl.* ;
@@ -42,18 +43,17 @@ public abstract class CompositionBase extends GraphBase
 {
     /**
      * <p>
-     * Answer a {@link Filter} that will reject any element that is a member of iterator i.
+     * Answer a {@link Predicate} that will reject any element that is a member of iterator i.
      * As a side-effect, i will be closed. 
      * </p>
      * 
      * @param i A closable iterator
-     * @return A Filter that will accept any object not a member of i.
+     * @return A Predicate that will accept any object not a member of i.
      */
-    public static <T> Filter<T> reject( final ClosableIterator<? extends T> i )
+    public static <T> Predicate<T> reject( final ClosableIterator<? extends T> i )
         {
         final Set< ? extends T> suppress = IteratorCollection.iteratorToSet( i );
-        return new Filter<T>()
-            { @Override public boolean accept( T o ) { return !suppress.contains( o ); } };
+        return o -> !suppress.contains( o );
         }
         
     /**
@@ -117,10 +117,7 @@ public abstract class CompositionBase extends GraphBase
      */
     public static ExtendedIterator<Triple> rejecting( final ExtendedIterator<Triple> i, final Set<Triple> seen )
         {
-        Filter<Triple> seenFilter = new Filter<Triple>()
-            { @Override
-            public boolean accept( Triple x ) { return seen.contains( x ); } };
-        return i.filterDrop( seenFilter );
+        return i.filterDrop( seen::contains );
         }
         
     /**
@@ -129,50 +126,36 @@ public abstract class CompositionBase extends GraphBase
     */
     public static ExtendedIterator<Triple> rejecting( final ExtendedIterator<Triple> i, final Graph seen )
         {
-        Filter<Triple> seenFilter = new Filter<Triple>()
-            { @Override public boolean accept( Triple x ) { return seen.contains( x ); } };
-        return i.filterDrop( seenFilter );
+        return i.filterDrop( seen::contains );
         }
   
     /**
      * <p>
-     * Answer a {@link Filter} that will accept any object that is an element of 
+     * Answer a {@link Predicate} that will accept any object that is an element of 
      * iterator i.  As a side-effect, i will be evaluated and closed. 
      * </p>
      * 
      * @param i A closable iterator 
-     * @return A Filter that will accept any object in iterator i.
+     * @return A Predicate that will accept any object in iterator i.
      */
-    public static <T> Filter<T> ifIn( final ClosableIterator<T> i )
+    public static <T> Predicate<T> ifIn( final ClosableIterator<T> i )
         {
         final Set<T> allow = IteratorCollection.iteratorToSet( i );
-        return new Filter<T>()
-            { @Override public boolean accept( T x ) { return allow.contains( x ); } };
+        return allow::contains;
         }
         
     /**
      * <p>
-     * Answer a {@link Filter} that will accept any triple that is an edge of 
+     * Answer a {@link Predicate} that will accept any triple that is an edge of 
      * graph g. 
      * </p>
      * 
      * @param g A graph 
-     * @return A Filter that will accept any triple that is an edge in g.
+     * @return A Predicate that will accept any triple that is an edge in g.
      */
-    public static Filter<Triple> ifIn( final Graph g )
+    public static Predicate<Triple> ifIn( final Graph g )
         {
-        return new Filter<Triple>()
-            { @Override public boolean accept( Triple x ) { return g.contains( x ); } };
+        return g::contains;
         }
         
-
-    // Internal implementation methods
-    //////////////////////////////////
-
-
-    //==============================================================================
-    // Inner class definitions
-    //==============================================================================
-
-
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/graph/impl/CollectionGraph.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/graph/impl/CollectionGraph.java b/jena-core/src/main/java/org/apache/jena/graph/impl/CollectionGraph.java
index 8fd02f8..f20e41f 100644
--- a/jena-core/src/main/java/org/apache/jena/graph/impl/CollectionGraph.java
+++ b/jena-core/src/main/java/org/apache/jena/graph/impl/CollectionGraph.java
@@ -21,13 +21,11 @@ import java.util.Collection ;
 import java.util.HashSet ;
 import java.util.Locale ;
 import java.util.Set ;
-
 import org.apache.jena.graph.Capabilities ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Filter ;
 import org.apache.jena.util.iterator.WrappedIterator ;
 
 /**
@@ -64,21 +62,6 @@ public class CollectionGraph extends GraphBase
 		
 	};
 	
-	static class TripleMatchFilterEquality extends Filter<Triple>
-    {
-        final protected Triple tMatch;
-    
-        /** Creates new TripleMatchFilter */
-        public TripleMatchFilterEquality(Triple tMatch) 
-            { this.tMatch = tMatch; }
-        
-        @Override
-        public boolean accept(Triple t)
-        {
-            return tripleContained(tMatch, t) ;
-        }
-        
-    }
 	static boolean tripleContained(Triple patternTriple, Triple dataTriple)
     {
         return
@@ -122,7 +105,7 @@ public class CollectionGraph extends GraphBase
 	 */
 	public CollectionGraph()
 	{
-		this(new HashSet<Triple>(), true);
+		this(new HashSet<>(), true);
 	}
 
 	/**
@@ -163,7 +146,7 @@ public class CollectionGraph extends GraphBase
 		{
 			iter = WrappedIterator.createNoRemove( triples.iterator() );
 		}
-		return iter.filterKeep ( new TripleMatchFilterEquality( m ) );
+		return iter.filterKeep ( t -> tripleContained(m, t) );
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/graph/impl/GraphMatcher.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/graph/impl/GraphMatcher.java b/jena-core/src/main/java/org/apache/jena/graph/impl/GraphMatcher.java
index 6268283..55c9f85 100644
--- a/jena-core/src/main/java/org/apache/jena/graph/impl/GraphMatcher.java
+++ b/jena-core/src/main/java/org/apache/jena/graph/impl/GraphMatcher.java
@@ -17,6 +17,8 @@
  */
 
 package org.apache.jena.graph.impl;
+import static org.apache.jena.util.iterator.WrappedIterator.create;
+
 import java.util.*;
 
 import org.apache.jena.graph.* ;
@@ -256,25 +258,19 @@ public class GraphMatcher extends java.lang.Object {
         // Otherwise if some member of the bucket has friends
         // we can refine the hash, and we set refinableHash.
         check(HASH_OK);
-        return new FilterIterator<>(
-        new Filter<Bucket>() {
-            @Override public boolean accept(Bucket o) {
-                Bucket b = o;
-                if (b.size()==1)
-                    return true;
-                if (!refinableHash) {
-                    Iterator<AnonResource> it = b.members();
-                    while ( it.hasNext() )
-                        if (!it.next()
-                        .friends.isEmpty()) {
-                            refinableHash = true;
-                            break;
-                        }
-                }
-                return false;
-            }
-        },table.values().iterator());
-        
+		return create(table.values().iterator()).filterKeep(b -> {
+			if (b.size() == 1)
+				return true;
+			if (!refinableHash) {
+				Iterator<AnonResource> it = b.members();
+				while (it.hasNext())
+					if (!it.next().friends.isEmpty()) {
+						refinableHash = true;
+						break;
+					}
+			}
+			return false;
+		});
     }
     private void unbindAll(Set<AnonResource> s)  {
         for ( AnonResource value : s )

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/mem/NodeToTriplesMap.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/mem/NodeToTriplesMap.java b/jena-core/src/main/java/org/apache/jena/mem/NodeToTriplesMap.java
index a31a186..3342241 100644
--- a/jena-core/src/main/java/org/apache/jena/mem/NodeToTriplesMap.java
+++ b/jena-core/src/main/java/org/apache/jena/mem/NodeToTriplesMap.java
@@ -18,7 +18,10 @@
 
 package org.apache.jena.mem;
 
+import static org.apache.jena.util.iterator.WrappedIterator.create;
+
 import java.util.*;
+import java.util.function.Predicate;
 
 import org.apache.jena.graph.* ;
 import org.apache.jena.graph.Triple.* ;
@@ -106,24 +109,18 @@ public class NodeToTriplesMap extends NodeToTriplesMapBase
             }
         }
     
-    public ExtendedIterator<Triple> iterateAll( Triple pattern )
-        {
-        return
-            indexField.filterOn( pattern )
-            .and( f2.filterOn( pattern ) )
-            .and( f3.filterOn( pattern ) )
-            .filterKeep( iterateAll() )
-            ;
-        }
+	public ExtendedIterator<Triple> iterateAll(Triple pattern) {
+		Predicate<Triple> filter = indexField.filterOn(pattern)
+				.and(f2.filterOn(pattern)).and(f3.filterOn(pattern));
+		return create(iterateAll()).filterKeep(filter);  
+	}
 
     @Override public ExtendedIterator<Triple> iterator( Node index, Node n2, Node n3 )
         {
         TripleBunch s = bunchMap.get( index.getIndexingValue() );
-        return s == null
-            ? NullIterator.<Triple>instance()
-            : f2.filterOn( n2 ).and( f3.filterOn( n3 ) )
-                .filterKeep( s.iterator() )
-            ;
+        if (s == null) return NullIterator.<Triple>instance();
+        final Predicate<Triple> filter = f2.filterOn( n2 ).and( f3.filterOn( n3 ) );
+        return create(s.iterator()).filterKeep(filter);    
         }
 
     /**

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/mem/NodeToTriplesMapMem.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/mem/NodeToTriplesMapMem.java b/jena-core/src/main/java/org/apache/jena/mem/NodeToTriplesMapMem.java
index 43e528e..107cf3b 100644
--- a/jena-core/src/main/java/org/apache/jena/mem/NodeToTriplesMapMem.java
+++ b/jena-core/src/main/java/org/apache/jena/mem/NodeToTriplesMapMem.java
@@ -18,7 +18,10 @@
 
 package org.apache.jena.mem;
 
+import static org.apache.jena.util.iterator.WrappedIterator.create;
+
 import java.util.Iterator ;
+import java.util.function.Predicate;
 
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -122,11 +125,9 @@ public class NodeToTriplesMapMem extends NodeToTriplesMapBase
        Object indexValue = index.getIndexingValue();
        TripleBunch s = bunchMap.get( indexValue );
 //       System.err.println( ">> ntmf::iterator: " + (s == null ? (Object) "None" : s.getClass()) );
-       return s == null
-           ? NullIterator.<Triple>instance()
-           : f2.filterOn( n2 ).and( f3.filterOn( n3 ) )
-               .filterKeep( s.iterator( new NotifyMe( indexValue ) ) )
-           ;
+       if (s == null) return NullIterator.<Triple>instance();
+       final Predicate<Triple> filter = f2.filterOn( n2 ).and( f3.filterOn( n3 ) );
+       return create(s.iterator( new NotifyMe( indexValue ))).filterKeep(filter);
        }    
 
     protected TripleBunch get( Object index )

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/ontology/OntTools.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/ontology/OntTools.java b/jena-core/src/main/java/org/apache/jena/ontology/OntTools.java
index 594321a..bb3b2a3 100755
--- a/jena-core/src/main/java/org/apache/jena/ontology/OntTools.java
+++ b/jena-core/src/main/java/org/apache/jena/ontology/OntTools.java
@@ -24,10 +24,10 @@ package org.apache.jena.ontology;
 // Imports
 ///////////////
 import java.util.*;
+import java.util.function.Predicate;
 
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.shared.JenaException ;
-import org.apache.jena.util.iterator.Filter ;
 
 
 /**
@@ -152,7 +152,7 @@ public class OntTools
      * @return A path, consisting of a list of statements whose first subject is <code>start</code>,
      * and whose last object is <code>end</code>, or null if no such path exists.
      */
-    public static Path findShortestPath( Model m, Resource start, RDFNode end, Filter<Statement> onPath ) {
+    public static Path findShortestPath( Model m, Resource start, RDFNode end, Predicate<Statement> onPath ) {
         List<Path> bfs = new LinkedList<>();
         Set<Resource> seen = new HashSet<>();
 
@@ -585,7 +585,7 @@ public class OntTools
      * A filter which accepts statements whose predicate matches one of a collection
      * of predicates held by the filter object.
      */
-    public static class PredicatesFilter extends Filter<Statement>
+    public static class PredicatesFilter implements Predicate<Statement>
     {
         public Collection<Property> m_preds;
 
@@ -609,7 +609,7 @@ public class OntTools
             m_preds.add( pred );
         }
 
-        @Override public boolean accept( Statement s ) {
+        @Override public boolean test( Statement s ) {
             return m_preds.contains( s.getPredicate() );
         }
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/ontology/impl/OntClassImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntClassImpl.java b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntClassImpl.java
index 8397e1f..e2aae36 100644
--- a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntClassImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntClassImpl.java
@@ -34,7 +34,6 @@ import org.apache.jena.ontology.* ;
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.reasoner.InfGraph ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Filter ;
 import org.apache.jena.util.iterator.UniqueFilter ;
 import org.apache.jena.util.iterator.WrappedIterator ;
 import org.apache.jena.vocabulary.OWL ;
@@ -72,7 +71,6 @@ public class OntClassImpl
      * Note: should not be invoked directly by user code: use
      * {@link org.apache.jena.rdf.model.RDFNode#as as()} instead.
      */
-    @SuppressWarnings("hiding")
     public static Implementation factory = new Implementation() {
         @Override
         public EnhNode wrap( Node n, EnhGraph eg ) {
@@ -177,7 +175,7 @@ public class OntClassImpl
     @Override
     public ExtendedIterator<OntClass> listSuperClasses( boolean direct ) {
         return listDirectPropertyValues( getProfile().SUB_CLASS_OF(), "SUB_CLASS_OF", OntClass.class, getProfile().SUB_CLASS_OF(), direct, false )
-                .filterDrop( new SingleEqualityFilter<OntClass>( this ) ).filterKeep( new UniqueFilter<OntClass>());
+                .filterDrop( this::equals ).filterKeep( new UniqueFilter<OntClass>());
     }
 
     /**
@@ -367,7 +365,7 @@ public class OntClassImpl
     @Override
     public ExtendedIterator<OntClass> listSubClasses( boolean direct ) {
         return listDirectPropertyValues( getProfile().SUB_CLASS_OF(), "SUB_CLASS_OF", OntClass.class, getProfile().SUB_CLASS_OF(), direct, true )
-                .filterDrop( new SingleEqualityFilter<OntClass>( this ) ).filterKeep( new UniqueFilter<OntClass>());
+                .filterDrop( this::equals ).filterKeep( new UniqueFilter<OntClass>());
     }
 
 
@@ -670,12 +668,8 @@ public class OntClassImpl
         return getModel()
                 .listStatements( null, RDF.type, this )
                 .mapWith( s -> s.getSubject().as( Individual.class ) )
-                .filterKeep( new Filter<Individual>() {
-                    @Override
-                    public boolean accept( Individual o ) {
-                        // if direct, ignore the sub-class typed resources
-                        return o.hasRDFType( OntClassImpl.this, direct );
-                    }} ).filterKeep( new UniqueFilter<Individual>());
+                .filterKeep( o -> o.hasRDFType( OntClassImpl.this, direct ))
+                .filterKeep( new UniqueFilter<Individual>());
     }
 
 

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/ontology/impl/OntModelImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntModelImpl.java b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntModelImpl.java
index 458a945..0aac74a 100644
--- a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntModelImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntModelImpl.java
@@ -28,6 +28,7 @@ import java.io.OutputStream ;
 import java.io.Reader ;
 import java.io.Writer ;
 import java.util.* ;
+import java.util.function.Predicate;
 
 import org.apache.jena.enhanced.BuiltinPersonalities ;
 import org.apache.jena.enhanced.EnhNode ;
@@ -536,17 +537,8 @@ public class OntModelImpl extends ModelCom implements OntModel
 
         // no easy shortcut, so we use brute force
         return listClasses()
-                 .filterDrop( new Filter<OntClass>() {
-                     @Override
-                    public boolean accept( OntClass o ) {
-                         return ((OntResource) o).isOntLanguageTerm();
-                     }} )
-                 .filterKeep( new Filter<OntClass>() {
-                     @Override
-                    public boolean accept( OntClass o ) {
-                         return o.isHierarchyRoot();
-                     }} )
-                    ;
+                 .filterDrop( OntResource::isOntLanguageTerm )
+                 .filterKeep( OntClass::isHierarchyRoot );
     }
 
 
@@ -658,14 +650,7 @@ public class OntModelImpl extends ModelCom implements OntModel
      */
     @Override
     public ExtendedIterator<OntClass> listNamedClasses() {
-        return listClasses().filterDrop(
-            new Filter<OntClass>() {
-                @Override
-                public boolean accept( OntClass x ) {
-                    return x.isAnon();
-                }
-            }
-        );
+        return listClasses().filterDrop( OntClass::isAnon );
     }
 
 
@@ -3112,13 +3097,13 @@ public class OntModelImpl extends ModelCom implements OntModel
     // Inner class definitions
     //==============================================================================
 
-    protected class NodeCanAs<T extends RDFNode> extends Filter<Node>
+    protected class NodeCanAs<T extends RDFNode> implements Predicate<Node>
     {
         protected Class<T> m_asKey;
         protected NodeCanAs( Class<T> asKey ) { m_asKey = asKey; }
 
         @Override
-        public boolean accept( Node x ) {
+        public boolean test( Node x ) {
                 try { getNodeAs( x, m_asKey );  }
                 catch (Exception ignore) { return false; }
         return true;
@@ -3127,14 +3112,14 @@ public class OntModelImpl extends ModelCom implements OntModel
 
     }
 
-    /** Filter that accepts nodes that can be mapped to the given facet */
-    protected class SubjectNodeCanAs<T extends RDFNode> extends Filter<T>
+    /** Predicate that accepts nodes that can be mapped to the given facet */
+    protected class SubjectNodeCanAs<T extends RDFNode> implements Predicate<T>
     {
         protected Class<T> m_asKey;
         protected SubjectNodeCanAs( Class<T> asKey ) { m_asKey = asKey; }
 
         @Override
-        public boolean accept( T x ) {
+        public boolean test( T x ) {
             Node n = (x instanceof Triple)
                     ? ((Triple) x).getSubject()
                     : ((x instanceof EnhNode) ? ((EnhNode) x).asNode() :  (Node) x);

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/ontology/impl/OntPropertyImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntPropertyImpl.java b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntPropertyImpl.java
index 8d11a72..2280299 100644
--- a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntPropertyImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntPropertyImpl.java
@@ -24,6 +24,7 @@ package org.apache.jena.ontology.impl;
 // Imports
 ///////////////
 import java.util.*;
+import java.util.function.Predicate;
 
 import org.apache.jena.enhanced.* ;
 import org.apache.jena.graph.* ;
@@ -53,7 +54,6 @@ public class OntPropertyImpl
      * Note: should not be invoked directly by user code: use
      * {@link org.apache.jena.rdf.model.RDFNode#as as()} instead.
      */
-    @SuppressWarnings("hiding")
     public static Implementation factory = new Implementation() {
         @Override
         public EnhNode wrap( Node n, EnhGraph eg ) {
@@ -175,7 +175,7 @@ public class OntPropertyImpl
     @Override
     public ExtendedIterator<OntProperty> listSuperProperties( boolean direct ) {
         return listDirectPropertyValues( getProfile().SUB_PROPERTY_OF(), "SUB_PROPERTY_OF", OntProperty.class, getProfile().SUB_PROPERTY_OF(), direct, false )
-                        .filterDrop( new SingleEqualityFilter<OntProperty>( this ) );
+                        .filterDrop( this::equals );
     }
 
     /**
@@ -835,11 +835,7 @@ public class OntPropertyImpl
                 // in the non-direct case, global properties appear in the ldp
                 // of all classes, but we ignore the built-in classes
                 return ((OntModel) getModel()).listClasses()
-                                              .filterDrop( new Filter<OntClass>() {
-                                                @Override
-                                                public boolean accept( OntClass c ) {
-                                                    return c.isOntLanguageTerm();
-                                                }} );
+                                              .filterDrop( OntClass::isOntLanguageTerm );
             }
             else {
                 // in the direct case, global properties only attach to the
@@ -902,7 +898,7 @@ public class OntPropertyImpl
      * <p>Filter that accepts classes which have the given property as one of
      * their declared properties.</p>
      */
-    private class FilterDeclaringClass extends Filter<OntClass>
+    private class FilterDeclaringClass implements Predicate<OntClass>
     {
         private boolean m_direct;
         private Property m_prop;
@@ -912,7 +908,7 @@ public class OntPropertyImpl
             m_direct = direct;
         }
 
-        @Override public boolean accept( OntClass o ) {
+        @Override public boolean test( OntClass o ) {
             return o.hasDeclaredProperty( m_prop, m_direct );
         }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/ontology/impl/OntResourceImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntResourceImpl.java b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntResourceImpl.java
index cdd18fe..97911de 100644
--- a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntResourceImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntResourceImpl.java
@@ -25,6 +25,7 @@ package org.apache.jena.ontology.impl;
 ///////////////
 import java.util.*;
 import java.util.function.Function;
+import java.util.function.Predicate;
 
 import org.apache.jena.datatypes.xsd.XSDDatatype ;
 import org.apache.jena.enhanced.* ;
@@ -68,7 +69,6 @@ public class OntResourceImpl
      * Note: should not be invoked directly by user code: use
      * {@link org.apache.jena.rdf.model.RDFNode#as as()} instead.
      */
-    @SuppressWarnings("hiding")
     public static Implementation factory = new Implementation() {
         @Override
         public EnhNode wrap( Node n, EnhGraph eg ) {
@@ -1654,23 +1654,14 @@ public class OntResourceImpl
 
 
     /** Filter for matching language tags on the objects of statements */
-    protected class LangTagFilter extends Filter<Statement>
+    protected class LangTagFilter implements Predicate<Statement>
     {
         protected String m_lang;
         public LangTagFilter( String lang ) { m_lang = lang; }
         @Override
-        public boolean accept( Statement x ) {
+        public boolean test( Statement x ) {
             RDFNode o = x.getObject();
-            return o.isLiteral() && langTagMatch( m_lang, ((Literal) o).getLanguage() );
+            return o.isLiteral() && langTagMatch( m_lang, o.asLiteral().getLanguage() );
         }
     }
-
-    /** Filter for accepting only the given value, based on .equals() */
-    protected class SingleEqualityFilter<T>
-        extends Filter<T>
-    {
-        private T m_obj;
-        public SingleEqualityFilter( T x ) { m_obj = x; }
-        @Override public boolean accept( T x ) {return m_obj.equals( x );}
-    }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/rdf/model/Selector.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/Selector.java b/jena-core/src/main/java/org/apache/jena/rdf/model/Selector.java
index 7bf1125..415c596 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/Selector.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/Selector.java
@@ -18,6 +18,8 @@
 
 package org.apache.jena.rdf.model;
 
+import java.util.function.Predicate;
+
 /** A Statement selector.
  *
  * <p>Model includes list and query methods which will return all the
@@ -26,12 +28,7 @@ package org.apache.jena.rdf.model;
  *
 */
 
-public interface Selector {
-    /** Determine whether a Statement should be selected.
-     * @param s The statement to be considered.
-     * @return true if the statement has been selected.
-     */
-    boolean test( Statement s );
+public interface Selector extends Predicate<Statement> {
     
     /**
         Answer true iff this Selector is completely characterised by its subject,

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
index a0ed407..e644f55 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
@@ -21,7 +21,6 @@ package org.apache.jena.rdf.model.impl;
 import java.io.* ;
 import java.net.URL ;
 import java.util.* ;
-
 import org.apache.jena.datatypes.DatatypeFormatException ;
 import org.apache.jena.datatypes.RDFDatatype ;
 import org.apache.jena.datatypes.TypeMapper ;
@@ -494,39 +493,34 @@ implements Model, PrefixMapping, Lock
         }
     }
     
-    private class StringFilteredStmtIterator extends FilterKeepIterator<Statement> implements StmtIterator {
-        public StringFilteredStmtIterator(final String str, Iterator<Statement> it ) {
-            super(
-                    new Filter<Statement>() {
-                        @Override public boolean accept(Statement s) {
-                            RDFNode o = s.getObject();
-                            if (o instanceof Literal) {
-                                if (str == null) return true; // should not happen
-                                return (str.equals(((Literal) o).getString()));
-                            } 
-                            return false;
-                        }
-              }, 
-              it );
-        }
+	private class StringFilteredStmtIterator extends FilterIterator<Statement>
+			implements StmtIterator {
+		public StringFilteredStmtIterator(final String str, Iterator<Statement> it) {
+			super(s -> {
+				RDFNode o = s.getObject();
+				if (o instanceof Literal) {
+					if (str == null)
+						return true; // should not happen
+				return (str.equals(o.asLiteral().getString()));
+			}
+			return false;
+		}, it);
+		}
         @Override public Statement nextStatement() { return next(); }
     }
     
-    private class LangFilteredStmtIterator extends FilterKeepIterator<Statement> implements StmtIterator {
-        public LangFilteredStmtIterator(final String l, Iterator<Statement> it ) {
-            super(
-                    new Filter<Statement>() {
-                        @Override public boolean accept(Statement s) {
-                            RDFNode o = s.getObject();
-                            if (o instanceof Literal) {
-                                if (l == null) return true;
-                                return (l.equals(((Literal) o).getLanguage()));
-                            } 
-                            return false;
-                        }
-              }, 
-              it );
-        }
+    private class LangFilteredStmtIterator extends FilterIterator<Statement> implements StmtIterator {
+		public LangFilteredStmtIterator(final String l, Iterator<Statement> it) {
+			super(s -> {
+				RDFNode o = s.getObject();
+				if (o instanceof Literal) {
+					if (l == null)
+						return true;
+					return (l.equals(o.asLiteral().getLanguage()));
+				}
+				return false;
+			}, it);
+		}
         @Override public Statement nextStatement() { return next(); }
     }
   
@@ -1286,22 +1280,10 @@ implements Model, PrefixMapping, Lock
         StmtIterator sts = IteratorFactory.asStmtIterator( findTriplesFrom( selector ), this );
         return selector.isSimple() 
             ? sts 
-            : new StmtIteratorImpl( sts .filterKeep ( asFilter( selector ) ) )
+            : new StmtIteratorImpl( sts .filterKeep ( selector ) )
         ;
     }
 
-    /**
-        Answer a Filter that filters exactly those things the Selector selects.
-
-        @param s a Selector on statements
-        @return a Filter that accepts statements that s passes tests on
-     */
-     public Filter<Statement> asFilter( final Selector s )
-     { return new Filter<Statement>()
-         { @Override public boolean accept( Statement x ) { return s.test( x ); } };
-     }
-
-
      /**
         Answer an [extended] iterator which returns the triples in this graph which
         are selected by the (S, P, O) triple in the selector, ignoring any special

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ReifierStd.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ReifierStd.java b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ReifierStd.java
index 5180d7a..0bf7d26 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ReifierStd.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ReifierStd.java
@@ -20,12 +20,12 @@ package org.apache.jena.rdf.model.impl;
 
 
 import java.util.* ;
+import java.util.function.Predicate;
 
 import org.apache.jena.graph.* ;
 import org.apache.jena.shared.AlreadyReifiedException ;
 import org.apache.jena.shared.CannotReifyException ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Filter ;
 import org.apache.jena.util.iterator.NullIterator ;
 import org.apache.jena.util.iterator.WrappedIterator ;
 import org.apache.jena.vocabulary.RDF ;
@@ -60,16 +60,10 @@ public class ReifierStd
             return graph.find(match) ;
     }
     
-    static Filter<Triple> filterReif = new Filter<Triple>() {
-        @Override
-        public boolean accept(Triple triple)
-        {
-            return triple.getPredicate().equals(subject) ||
+    static Predicate<Triple> filterReif = triple -> triple.getPredicate().equals(subject) ||
                    triple.getPredicate().equals(predicate) ||
                    triple.getPredicate().equals(object) ||
                    ( triple.getPredicate().equals(rdfType) && triple.getObject().equals(statement) ) ;
-        }
-    } ; 
 
     /**
         Answer an iterator over all the reification triples that this Reifier exposes

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java
index 409bbd9..8e6d765 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java
@@ -115,6 +115,8 @@ package org.apache.jena.rdfxml.xmloutput.impl;
  * 
  * [6.34] literal ::= (any well-formed XML)
  */
+import static org.apache.jena.util.iterator.WrappedIterator.create;
+
 import java.io.PrintWriter ;
 import java.util.* ;
 
@@ -1542,12 +1544,12 @@ class Unparser {
      * This class is an iterator over the set infinite, but we wait until it is
      * used before instantiating the underlying iterator.
      */
-    private Iterator<Resource> allInfiniteLeft() {
-        return new LateBindingIterator<Resource>() {
+    private ExtendedIterator<Resource> allInfiniteLeft() {
+        return create(new LateBindingIterator<Resource>() {
             @Override public Iterator<Resource> create() {
                 return infinite.iterator();
             }
-        };
+        });
     }
 
     private Iterator<Resource> pleasingTypeIterator() {
@@ -1630,13 +1632,14 @@ class Unparser {
 
         // Subjects that are not objects of anything.
 //        Iterator<Resource> nonObjects = new FilterIterator<Resource>(new Filter<Resource>() {
-//            @Override public boolean accept( Resource o ) {
+//            @Override public boolean test( Resource o ) {
 //                return (!objectTable.containsKey(o))
 //                        && (!wantReification(o));
 //            }
 //        }, modelListSubjects());
-        Iterator<Resource> nonObjects = modelListSubjects().filterKeep( new Filter<Resource>() {@Override public boolean accept( Resource o ) { return (!objectTable.containsKey(o))  && (!wantReification(o) ); } } );
-        
+		Iterator<Resource> nonObjects = modelListSubjects()
+				.filterKeep( o -> !objectTable.containsKey(o) && !wantReification(o));
+
         // At these stage we evaluate a dependency graph of the remaining
         // resources.
         // This is stuck in the master iterator so that it's hasNext is called
@@ -1652,26 +1655,22 @@ class Unparser {
         };
         // non-anonymous resources that are the object of more than one
         // triple that are in infinite cycles.
-        Iterator<Resource> firstChoiceCyclic = new FilterIterator<>(new Filter<Resource>() {
-            @Override
-            public boolean accept(Resource r) {
-                codeCoverage[4]++;
-                if (r.isAnon())
-                    return false;
-                Integer cnt = objectTable.get(r);
-                if (cnt == null || cnt.intValue() <= 1)
-                    return false;
-                return true;
-            }
-        }, this.allInfiniteLeft());
+		Iterator<Resource> firstChoiceCyclic = allInfiniteLeft()
+				.filterKeep(r -> {
+					codeCoverage[4]++;
+					if (r.isAnon())
+						return false;
+					Integer cnt = objectTable.get(r);
+					if (cnt == null || cnt.intValue() <= 1)
+						return false;
+					return true;
+				});
         // any non genuinely anonymous resources that are in infinite cycles
-        Iterator<Resource> nonAnonInfinite = new FilterIterator<>(new Filter<Resource>() {
-            @Override
-            public boolean accept(Resource r) {
-                codeCoverage[5]++;
-                return !isGenuineAnon(r);
-            }
-        }, allInfiniteLeft());
+		Iterator<Resource> nonAnonInfinite = allInfiniteLeft()
+				.filterKeep(r -> {
+					codeCoverage[5]++;
+					return !isGenuineAnon(r);
+				});
         // any other resource in an infinite cyle
         Iterator<Resource> inf = allInfiniteLeft();
         Iterator<Resource> anotherFake = new NullIterator<Resource>() {
@@ -1681,13 +1680,10 @@ class Unparser {
                 return false;
             }
         };
-        Iterator<Resource> reifications = new FilterIterator<>(new Filter<Resource>() {
-            @Override
-            public boolean accept(Resource r) {
-                codeCoverage[6]++;
-                return res2statement.containsKey(r);
-            }
-        }, allInfiniteLeft());
+		Iterator<Resource> reifications = allInfiniteLeft().filterKeep(r -> {
+			codeCoverage[6]++;
+			return res2statement.containsKey(r);
+		});
         // any other resource.
         Iterator<Resource> backStop = modelListSubjects();
 
@@ -1703,15 +1699,10 @@ class Unparser {
                                 return false;
                             }
                         }, backStop };
-        Iterator<Resource> allAsOne = WrappedIterator.createIteratorIterator( Arrays.asList(all).iterator() );
+        ExtendedIterator<Resource> allAsOne = WrappedIterator.createIteratorIterator( Arrays.asList(all).iterator() );
         		
         // Filter for those that still have something to list.
-        return new FilterIterator<>(new Filter<Resource>() {
-            @Override
-            public boolean accept(Resource r) {
-                return hasProperties(r);
-            }
-        }, allAsOne);
+        return allAsOne.filterKeep(this::hasProperties);
     }
 
     private Set<ResIterator> openResIterators = new HashSet<>();

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/FBRuleInfGraph.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/FBRuleInfGraph.java b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/FBRuleInfGraph.java
index 6aa6a85..34f2e72 100644
--- a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/FBRuleInfGraph.java
+++ b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/FBRuleInfGraph.java
@@ -36,7 +36,6 @@ import org.apache.jena.shared.impl.JenaParameters ;
 import org.apache.jena.util.OneToManyMap ;
 import org.apache.jena.util.PrintUtil ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Filter ;
 import org.apache.jena.util.iterator.UniqueFilter ;
 import org.apache.jena.vocabulary.RDFS ;
 import org.apache.jena.vocabulary.ReasonerVocabulary ;
@@ -562,9 +561,7 @@ public class FBRuleInfGraph  extends BasicForwardRuleInfGraph implements Backwar
         }
         if (filterFunctors) {
 //            return result.filterDrop(Functor.acceptFilter);
-            return result.filterDrop( new Filter<Triple>() {
-                @Override public boolean accept( Triple o )
-                    { return FBRuleInfGraph.this.accept( o ); }} );
+            return result.filterDrop( t -> FBRuleInfGraph.this.accept( t ) );
         } else {
             return result;
         }

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/Functor.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/Functor.java b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/Functor.java
index b6054cf..27217e6 100755
--- a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/Functor.java
+++ b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/Functor.java
@@ -21,11 +21,11 @@ package org.apache.jena.reasoner.rulesys;
 import org.apache.jena.datatypes.* ;
 import org.apache.jena.graph.* ;
 import org.apache.jena.util.PrintUtil ;
-import org.apache.jena.util.iterator.Filter ;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.*;
+import java.util.function.Predicate;
 
 /**
  * A functor comprises a functor name and a list of 
@@ -46,14 +46,11 @@ public class Functor implements ClauseEntry {
     /** A built in that implements the functor */
     protected Builtin implementor;
     
-    /** A static Filter instance that detects triples with Functor objects */
-    public static final Filter<Triple> acceptFilter = new Filter<Triple>() {
-                @Override
-                public boolean accept( Triple t) {
+    /** A static Predicate instance that detects triples with Functor objects */
+    public static final Predicate<Triple> acceptFilter = t ->  {
                     if (t.getSubject().isLiteral()) return true;
                     Node n = t.getObject();
                     return n.isLiteral() && n.getLiteralDatatype() == FunctorDatatype.theFunctorDatatype;
-                }
             };
     
     protected static Logger logger = LoggerFactory.getLogger(Functor.class);

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/SafeGraph.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/SafeGraph.java b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/SafeGraph.java
index 8a545fa..cc05561 100644
--- a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/SafeGraph.java
+++ b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/SafeGraph.java
@@ -24,7 +24,6 @@ import org.apache.jena.graph.Triple ;
 import org.apache.jena.graph.impl.SimpleEventManager ;
 import org.apache.jena.graph.impl.WrappedGraph ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Filter ;
 
 /**
  * A SafeGraph wraps a graph which might contain generalized RDF
@@ -46,14 +45,8 @@ public class SafeGraph extends WrappedGraph implements Graph {
     @Override
     public ExtendedIterator<Triple> find( Node s, Node p, Node o ) {
         return SimpleEventManager.notifyingRemove( this, 
-                base.find( s, p, o ).filterDrop( new Filter<Triple>() {
-                    @Override
-                    public boolean accept(Triple t) {
-                        if (t.getSubject().isLiteral()) return true;
-                        if (t.getPredicate().isBlank() || t.getPredicate().isLiteral()) return true;
-                        return false;
-                    }
-                } ) );
+                base.find( s, p, o ).filterDrop( t -> t.getSubject().isLiteral() ||
+                		t.getPredicate().isBlank() || t.getPredicate().isLiteral() ) );
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/util/iterator/ExtendedIterator.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/util/iterator/ExtendedIterator.java b/jena-core/src/main/java/org/apache/jena/util/iterator/ExtendedIterator.java
index 2a0eeb6..9953286 100644
--- a/jena-core/src/main/java/org/apache/jena/util/iterator/ExtendedIterator.java
+++ b/jena-core/src/main/java/org/apache/jena/util/iterator/ExtendedIterator.java
@@ -20,6 +20,7 @@ package org.apache.jena.util.iterator;
 
 import java.util.*;
 import java.util.function.Function;
+import java.util.function.Predicate;
 
 /**
     an ExtendedIterator is a ClosableIterator on which other operations are
@@ -54,14 +55,14 @@ public interface ExtendedIterator<T> extends ClosableIterator<T>
          pass the filter _f_. The order of the elements is preserved. Does not
          copy _this_, which is consumed as the result is consumed.
      */
-     public ExtendedIterator<T> filterKeep( Filter<T> f );
+     public ExtendedIterator<T> filterKeep( Predicate<T> f );
 
      /**
          return a new iterator containing only the elements of _this_ which
          are rejected by the filter _f_. The order of the elements is preserved.
          Does not copy _this_, which is consumed as the result is consumed.
      */
-     public ExtendedIterator<T> filterDrop( Filter<T> f );
+     public ExtendedIterator<T> filterDrop( Predicate<T> f );
 
      /**
          return a new iterator where each element is the result of applying

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/util/iterator/Filter.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/util/iterator/Filter.java b/jena-core/src/main/java/org/apache/jena/util/iterator/Filter.java
index 5c7faaf..6c85c28 100644
--- a/jena-core/src/main/java/org/apache/jena/util/iterator/Filter.java
+++ b/jena-core/src/main/java/org/apache/jena/util/iterator/Filter.java
@@ -19,66 +19,107 @@
 package org.apache.jena.util.iterator;
 
 import java.util.Iterator;
+import java.util.function.Predicate;
 
-/** 
-    boolean functions wrapped to be used in filtering iterators.
-*/
-public abstract class Filter<T>
-    {
-    /**
-        Answer true iff the object <code>o</code> is acceptable. This method
-        may also throw an exception if the argument is of a wrong type; it
-        is not required to return <code>false</code> in such a case.
-    */
-	public abstract boolean accept( T o );
-    
-    public ExtendedIterator<T> filterKeep( Iterator<T> it )
-        { return new FilterKeepIterator<>( this, it ); }
-    
-    public Filter<T> and( final Filter<T> other )
-        { return other.isAny() ? this : new Filter<T>()
-            { @Override public boolean accept( T x ) 
-                { return Filter.this.accept( x ) && other.accept( x ); } 
-            };
-        }
-    
-    /**
-        Answer true iff this filter will deliver true for any argument. Should never
-        be overridden except by classes generated by any() below.
-    */
-    public boolean isAny()
-        { return false; }
-    
-    /** 
-        A Filter that accepts everything it's offered.
-        @deprecated use Filter.any()
-    */
-    @SuppressWarnings({"unchecked", "rawtypes"})
-    // Knowingly suppressed - maximum backward compatibility. 
-    @Deprecated public static final Filter any = new Filter()
-        { 
-        @Override public final boolean isAny() { return true; }
-        
-        @Override public final boolean accept( Object o ) { return true; } 
-        
-        @Override public Filter and( Filter other ) { return other; }
-        
-        @Override public ExtendedIterator filterKeep( Iterator it )
-            { return WrappedIterator.create( it ); }
-        };
-        
-    public static <T> Filter<T> any() 
-        {  
-        return new Filter<T>()
-            {
-            @Override public final boolean isAny() { return true; }
-            
-            @Override public final boolean accept( T o ) { return true; } 
-            
-            @Override public Filter<T> and( Filter<T> other ) { return other; }
-            
-            @Override public ExtendedIterator<T> filterKeep( Iterator<T> it )
-                { return WrappedIterator.create( it ); }
-            };
-        }
-    }
+/**
+ * boolean functions wrapped to be used in filtering iterators.
+ * 
+ * Deprecated in favor of {@link Predicate}.
+ */
+@Deprecated
+public abstract class Filter<T> implements Predicate<T> {
+
+	public boolean test(T o) {
+		return accept(o);
+	}
+
+	@Deprecated
+	public abstract boolean accept(T o);
+
+	@Deprecated
+	public ExtendedIterator<T> filterKeep(Iterator<T> it) {
+		return new FilterIterator<>(this, it);
+	}
+
+	/**
+	 * Use {@link #and(Predicate)} instead.
+	 */
+	@Deprecated
+	public Filter<T> and(final Filter<T> other) {
+		return other.isAny() ? this : new Filter<T>() {
+			@Override
+			public boolean accept(T x) {
+				return Filter.this.accept(x) && other.accept(x);
+			}
+		};
+	}
+
+	/**
+	 * Answer true iff this filter will deliver true for any argument. Should
+	 * never be overridden except by classes generated by any() below.
+	 * 
+	 * No longer needed after Java 8: optimizations of this kind are now a compiler/JVM concern.
+	 */
+	@Deprecated
+	public boolean isAny() {
+		return false;
+	}
+
+	/**
+	 * A Filter that accepts everything it's offered.
+	 * 
+	 * @deprecated use Filter.any()
+	 */
+	@SuppressWarnings({ "unchecked", "rawtypes" })
+	// Knowingly suppressed - maximum backward compatibility.
+	@Deprecated
+	public static final Filter any = new Filter() {
+		@Override
+		public final boolean isAny() {
+			return true;
+		}
+
+		@Override
+		public final boolean accept(Object o) {
+			return true;
+		}
+
+		@Override
+		public Filter and(Filter other) {
+			return other;
+		}
+
+		@Override
+		public ExtendedIterator filterKeep(Iterator it) {
+			return WrappedIterator.create(it);
+		}
+	};
+
+	/**
+	 * Use Java 8's lambda syntax, e.g. x -> true.
+	 */
+	@Deprecated
+	public static <T> Filter<T> any() {
+		return new Filter<T>() {
+			@Override
+			public final boolean isAny() {
+				return true;
+			}
+
+			@Override
+			public final boolean accept(T o) {
+				return true;
+			}
+
+			@Override
+			public Filter<T> and(Filter<T> other) {
+				return other;
+			}
+
+			@Override
+			public ExtendedIterator<T> filterKeep(Iterator<T> it) {
+				return WrappedIterator.create(it);
+			}
+		};
+	}
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/util/iterator/FilterDropIterator.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/util/iterator/FilterDropIterator.java b/jena-core/src/main/java/org/apache/jena/util/iterator/FilterDropIterator.java
deleted file mode 100644
index 3c442a4..0000000
--- a/jena-core/src/main/java/org/apache/jena/util/iterator/FilterDropIterator.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.util.iterator;
-
-import java.util.Iterator;
-
-/**
-    A subclass of FiterIterator which discards the elements that pass the
-    filter.
- */
-public class FilterDropIterator<T> extends FilterIterator<T> implements Iterator<T>
-    {
-    public FilterDropIterator( Filter<T> f, Iterator<T> it )
-        { super( f, it ); }
-    
-    @Override protected boolean accept( T x )
-        { return !f.accept( x ); }
-    }

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/util/iterator/FilterIterator.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/util/iterator/FilterIterator.java b/jena-core/src/main/java/org/apache/jena/util/iterator/FilterIterator.java
index 6ae9042..c5ddb83 100644
--- a/jena-core/src/main/java/org/apache/jena/util/iterator/FilterIterator.java
+++ b/jena-core/src/main/java/org/apache/jena/util/iterator/FilterIterator.java
@@ -20,6 +20,7 @@ package org.apache.jena.util.iterator;
 
 import java.util.Iterator;
 import java.util.NoSuchElementException;
+import java.util.function.Predicate;
 
 /** 
      Creates a sub-Iterator by filtering. This class should not be used
@@ -28,7 +29,7 @@ import java.util.NoSuchElementException;
  */
 public class FilterIterator<T> extends WrappedIterator<T>
     {
-	protected final Filter<T> f;
+	protected final Predicate<T> f;
 	protected T current;
     protected boolean canRemove;
     protected boolean hasCurrent;
@@ -38,7 +39,7 @@ public class FilterIterator<T> extends WrappedIterator<T>
         @param fl An object is included if it is accepted by this Filter.
         @param e The base Iterator.
     */        
-	public FilterIterator( Filter<T> fl, Iterator<T> e ) 
+	public FilterIterator( Predicate<T> fl, Iterator<T> e ) 
         {
 		super( e );
 		f = fl;
@@ -52,18 +53,11 @@ public class FilterIterator<T> extends WrappedIterator<T>
 	@Override public boolean hasNext() 
         {
 	    while (!hasCurrent && super.hasNext())
-            hasCurrent = accept( current = super.next() );
+            hasCurrent = f.test( current = super.next() );
         canRemove = false;
         return hasCurrent;
         }
 
-    /**
-        Overridden in Drop/Keep as appropriate. Answer true if the object is
-        to be kept in the output, false if it is to be dropped.
-    */
-    protected boolean accept( T x )
-        { return f.accept( x ); }
-    
     /** 
          Remove the current member from the underlying iterator. Legal only
          after a .next() but before any subsequent .hasNext(), because that

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/util/iterator/FilterKeepIterator.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/util/iterator/FilterKeepIterator.java b/jena-core/src/main/java/org/apache/jena/util/iterator/FilterKeepIterator.java
deleted file mode 100644
index 10220d8..0000000
--- a/jena-core/src/main/java/org/apache/jena/util/iterator/FilterKeepIterator.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.util.iterator;
-
-import java.util.Iterator;
-
-/**
-    A subclass of FilterIterator which keeps the elements that pass the
-    test.
-*/
-public class FilterKeepIterator<T> extends FilterIterator<T> implements Iterator<T>
-    {
-    public FilterKeepIterator( Filter<T> f, Iterator<T> it )
-        { super( f, it ); }
-    
-    @Override protected boolean accept( T x )
-        { return f.accept( x ); }
-    }

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/util/iterator/LazyIterator.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/util/iterator/LazyIterator.java b/jena-core/src/main/java/org/apache/jena/util/iterator/LazyIterator.java
index 2411413..8a26180 100644
--- a/jena-core/src/main/java/org/apache/jena/util/iterator/LazyIterator.java
+++ b/jena-core/src/main/java/org/apache/jena/util/iterator/LazyIterator.java
@@ -19,6 +19,7 @@
 package org.apache.jena.util.iterator;
 
 import java.util.function.Function;
+import java.util.function.Predicate;
 
 /** An ExtendedIterator that is created lazily.
  * This is useful when constructing an iterator is expensive and 
@@ -64,13 +65,13 @@ abstract public class LazyIterator<T> implements ExtendedIterator<T> {
 	}
 
 	@Override
-    public ExtendedIterator<T> filterKeep(Filter<T> f) {
+    public ExtendedIterator<T> filterKeep(Predicate<T> f) {
 		lazy();
 		return it.filterKeep(f);
 	}
 
 	@Override
-    public ExtendedIterator<T> filterDrop(Filter<T> f) {
+    public ExtendedIterator<T> filterDrop(Predicate<T> f) {
 		lazy();
 		return it.filterDrop(f);
 	}

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/util/iterator/NiceIterator.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/util/iterator/NiceIterator.java b/jena-core/src/main/java/org/apache/jena/util/iterator/NiceIterator.java
index 6e0432f..5ebfee1 100644
--- a/jena-core/src/main/java/org/apache/jena/util/iterator/NiceIterator.java
+++ b/jena-core/src/main/java/org/apache/jena/util/iterator/NiceIterator.java
@@ -20,6 +20,7 @@ package org.apache.jena.util.iterator;
 
 import java.util.*;
 import java.util.function.Function;
+import java.util.function.Predicate;
 
 /**
     NiceIterator is the standard base class implementing ExtendedIterator. It provides
@@ -152,15 +153,15 @@ public class NiceIterator<T> implements ExtendedIterator<T>
         make a new iterator, which is our elements that pass the filter
     */
     @Override
-    public ExtendedIterator<T> filterKeep( Filter<T> f )
-        { return new FilterKeepIterator<>( f, this ); }
+    public FilterIterator<T> filterKeep( Predicate<T> f )
+        { return new FilterIterator<>( f, this ); }
 
     /**
         make a new iterator, which is our elements that do not pass the filter
     */        
     @Override
-    public ExtendedIterator<T> filterDrop( final Filter<T> f )
-        { return new FilterDropIterator<>( f, this ); }
+    public FilterIterator<T> filterDrop( final Predicate<T> f )
+        { return new FilterIterator<>( f.negate(), this ); }
    
     /**
         make a new iterator which is the elementwise _map1_ of the base iterator.

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/main/java/org/apache/jena/util/iterator/UniqueFilter.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/util/iterator/UniqueFilter.java b/jena-core/src/main/java/org/apache/jena/util/iterator/UniqueFilter.java
index 1e82306..bc3be53 100644
--- a/jena-core/src/main/java/org/apache/jena/util/iterator/UniqueFilter.java
+++ b/jena-core/src/main/java/org/apache/jena/util/iterator/UniqueFilter.java
@@ -20,17 +20,18 @@ package org.apache.jena.util.iterator;
 
 import java.util.HashSet;
 import java.util.Set;
+import java.util.function.Predicate;
 
 /**
  * A Filter that filters out duplicate values.  
  */
-public class UniqueFilter<T> extends Filter<T> {
+public class UniqueFilter<T> implements Predicate<T> {
 
     /** The set of objects already seen */
     protected Set<T> seen = new HashSet<>();
 
 	@Override
-	public boolean accept(T o) {
+	public boolean test(T o) {
 		boolean retval = !seen.contains(o);
 		if (retval)
 		{

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/test/java/org/apache/jena/graph/test/TestTripleField.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/test/TestTripleField.java b/jena-core/src/test/java/org/apache/jena/graph/test/TestTripleField.java
index 80147ba..46d3b6d 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/test/TestTripleField.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/test/TestTripleField.java
@@ -54,32 +54,25 @@ public class TestTripleField extends GraphTestBase
     
     public void testFilterSubject()
         {
-        assertTrue( Field.fieldSubject.filterOn( node( "a" ) ).accept( triple( "a P b" ) ) );
-        assertFalse( Field.fieldSubject.filterOn( node( "x" ) ).accept( triple( "a P b" ) ) );
+        assertTrue( Field.fieldSubject.filterOn( node( "a" ) ).test( triple( "a P b" ) ) );
+        assertFalse( Field.fieldSubject.filterOn( node( "x" ) ).test( triple( "a P b" ) ) );
         }    
     
     public void testFilterObject()
         {
-        assertTrue( Field.fieldObject.filterOn( node( "b" ) ).accept( triple( "a P b" ) ) );
-        assertFalse( Field.fieldObject.filterOn( node( "c" ) ).accept( triple( "a P b" ) ) );
+        assertTrue( Field.fieldObject.filterOn( node( "b" ) ).test( triple( "a P b" ) ) );
+        assertFalse( Field.fieldObject.filterOn( node( "c" ) ).test( triple( "a P b" ) ) );
         }
     
     public void testFilterPredicate()
         {
-        assertTrue( Field.fieldPredicate.filterOn( node( "P" ) ).accept( triple( "a P b" ) ) );
-        assertFalse( Field.fieldPredicate.filterOn( node( "Q" ) ).accept( triple( "a P b" ) ) );
+        assertTrue( Field.fieldPredicate.filterOn( node( "P" ) ).test( triple( "a P b" ) ) );
+        assertFalse( Field.fieldPredicate.filterOn( node( "Q" ) ).test( triple( "a P b" ) ) );
         }
     
     public void testFilterByTriple()
         {
-        assertTrue( Field.fieldSubject.filterOn( triple( "s P o" ) ).accept( triple( "s Q p" ) ) );
-        assertFalse( Field.fieldSubject.filterOn( triple( "s P o" ) ).accept( triple( "x Q p" ) ) );
-        }
-    
-    public void testWildcardFilterIsAny()
-        {
-        assertTrue( Field.fieldSubject.filterOn( triple( "?x R s" ) ).isAny() );
-        assertTrue( Field.fieldObject.filterOn( triple( "x R ?s" ) ).isAny() );
-        assertTrue( Field.fieldPredicate.filterOn( triple( "x ?R s" ) ).isAny() );
+        assertTrue( Field.fieldSubject.filterOn( triple( "s P o" ) ).test( triple( "s Q p" ) ) );
+        assertFalse( Field.fieldSubject.filterOn( triple( "s P o" ) ).test( triple( "x Q p" ) ) );
         }
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/test/java/org/apache/jena/ontology/impl/TestOntTools.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/ontology/impl/TestOntTools.java b/jena-core/src/test/java/org/apache/jena/ontology/impl/TestOntTools.java
index 7bef377..f57a48d 100644
--- a/jena-core/src/test/java/org/apache/jena/ontology/impl/TestOntTools.java
+++ b/jena-core/src/test/java/org/apache/jena/ontology/impl/TestOntTools.java
@@ -24,8 +24,10 @@ package org.apache.jena.ontology.impl;
 // Imports
 ///////////////
 import java.util.List ;
+import java.util.function.Predicate;
 
 import junit.framework.TestCase ;
+
 import org.apache.jena.ontology.OntClass ;
 import org.apache.jena.ontology.OntModel ;
 import org.apache.jena.ontology.OntModelSpec ;
@@ -34,7 +36,6 @@ import org.apache.jena.rdf.model.ModelFactory ;
 import org.apache.jena.rdf.model.Property ;
 import org.apache.jena.rdf.model.ResourceFactory ;
 import org.apache.jena.rdf.model.Statement ;
-import org.apache.jena.util.iterator.Filter ;
 import org.apache.jena.vocabulary.OWL ;
 
 
@@ -227,7 +228,7 @@ public class TestOntTools
 
     /** Shortest path tests */
 
-    static final Filter<Statement> ANY = Filter.any();
+    static final Predicate<Statement> ANY = s -> true;
 
     public void testShortestPath0() {
         Property p = m_model.createProperty( NS + "p" );

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-core/src/test/java/org/apache/jena/util/iterator/test/TestFilters.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/util/iterator/test/TestFilters.java b/jena-core/src/test/java/org/apache/jena/util/iterator/test/TestFilters.java
index ac984c5..66e589c 100644
--- a/jena-core/src/test/java/org/apache/jena/util/iterator/test/TestFilters.java
+++ b/jena-core/src/test/java/org/apache/jena/util/iterator/test/TestFilters.java
@@ -19,10 +19,11 @@
 package org.apache.jena.util.iterator.test;
 
 import java.util.*;
+import java.util.function.Predicate;
 
 import junit.framework.TestSuite;
+
 import org.apache.jena.rdf.model.test.ModelTestBase ;
-import org.apache.jena.shared.JenaException ;
 import org.apache.jena.util.iterator.* ;
 
 public class TestFilters extends ModelTestBase
@@ -32,86 +33,13 @@ public class TestFilters extends ModelTestBase
     
     public static TestSuite suite()
         { return new TestSuite( TestFilters.class ); }
-    
-    public void testFilterAnyExists()
-        { assertInstanceOf( Filter.class, Filter.any() ); }
-    
-    public void testFilterAnyAcceptsThings()
-        {
-        assertTrue( Filter.any().accept( "hello" ) );
-        assertTrue( Filter.any().accept( 17 ) );
-        assertTrue( Filter.any().accept( node( "frodo" ) ) );
-        assertTrue( Filter.any().accept( node( "_cheshire" ) ) );
-        assertTrue( Filter.any().accept( node( "17" ) ) );
-        assertTrue( Filter.any().accept( triple( "s p o" ) ) );
-        assertTrue( Filter.any().accept( Filter.any() ) );
-        assertTrue( Filter.any().accept( this ) );
-        }
-    
-    public void testFilterFilterMethod()
-        {
-        assertFalse( Filter.any().filterKeep( NullIterator.instance() ).hasNext() );
-        }
-    
-    public void testFilteringThings()
-        {
-        ExtendedIterator<String> it = iteratorOfStrings( "gab geb bag big lava hall end" );
-        Filter<String> f = new Filter<String>() 
-            {
-            @Override public boolean accept( String o )
-                { return o.charAt( 1 ) == 'a'; }
-            };
-        assertEquals( listOfStrings( "gab bag lava hall" ), iteratorToList( f.filterKeep( it ) ) );
-        }
-    
-    public void testAnyFilterSimple()
-        {
-        ExtendedIterator<String> it = iteratorOfStrings( "" );
-        assertSame( it, Filter.<String>any().filterKeep( it ) );
-        }
 
-    protected Filter<String> containsA = new Filter<String>() 
-        { @Override public boolean accept( String o ) { return contains( o, 'a' ); } };
-    
-    public void testFilterAnd()
-        {
-        Filter<String> containsB = new Filter<String>() 
-            { @Override public boolean accept( String o ) { return contains( o, 'b' ); } };
-        Filter<String> f12 = containsA.and( containsB );
-        assertFalse( f12.accept( "a" ) );
-        assertFalse( f12.accept( "b" ) );
-        assertTrue( f12.accept( "ab" ) );
-        assertTrue( f12.accept( "xyzapqrbijk" ) );
-        assertTrue( f12.accept( "ba" ) );
-        }
-    
-    public void testFilterShortcircuit()
-        {
-        Filter<String> oops = new Filter<String>() 
-            { @Override public boolean accept( String o ) { throw new JenaException( "oops" ); } };
-        Filter<String> f12 = containsA.and( oops );
-        assertFalse( f12.accept( "z" ) );
-        try { f12.accept( "a" ); fail( "oops" ); }
-        catch (JenaException e) { assertEquals( "oops", e.getMessage() ); }
-        }
-    
-    public void testAnyAndTrivial()
-        { assertSame( containsA, Filter.<String>any().and( containsA ) ); }
-    
-    public void testSomethingAndAny()
-        { assertSame( containsA, containsA.and( Filter.<String>any() ) ); }
-    
-    public void testFilterDropIterator()
-        {
-        Iterator<String> i = iteratorOfStrings( "there's an a in some animals" );
-        Iterator<String> it = new FilterDropIterator<>( containsA, i );
-        assertEquals( listOfStrings( "there's in some" ), iteratorToList( it ) );
-        }
+    protected Predicate<String> containsA = o -> contains( o, 'a' );    
     
-    public void testFilterKeepIterator()
+    public void testFilterIterator()
         {
         Iterator<String> i = iteratorOfStrings( "there's an a in some animals" );
-        Iterator<String> it = new FilterKeepIterator<>( containsA, i );
+        Iterator<String> it = new FilterIterator<>( containsA, i );
         assertEquals( listOfStrings( "an a animals" ), iteratorToList( it ) );
         }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-csv/src/main/java/org/apache/jena/propertytable/graph/GraphPropertyTable.java
----------------------------------------------------------------------
diff --git a/jena-csv/src/main/java/org/apache/jena/propertytable/graph/GraphPropertyTable.java b/jena-csv/src/main/java/org/apache/jena/propertytable/graph/GraphPropertyTable.java
index 3a5b2af..7e5e5b5 100644
--- a/jena-csv/src/main/java/org/apache/jena/propertytable/graph/GraphPropertyTable.java
+++ b/jena-csv/src/main/java/org/apache/jena/propertytable/graph/GraphPropertyTable.java
@@ -20,6 +20,7 @@ package org.apache.jena.propertytable.graph;
 
 import java.util.ArrayList ;
 import java.util.Locale ;
+import java.util.function.Predicate;
 
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
@@ -30,7 +31,6 @@ import org.apache.jena.propertytable.PropertyTable ;
 import org.apache.jena.propertytable.Row ;
 import org.apache.jena.sparql.core.BasicPattern ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Filter ;
 import org.apache.jena.util.iterator.NullIterator ;
 import org.apache.jena.util.iterator.WrappedIterator ;
 
@@ -117,7 +117,7 @@ public class GraphPropertyTable extends GraphBase {
 		
 	}
 	
-	static class RowMatchFilterEquality extends Filter<Row> {
+	static class RowMatchFilterEquality implements Predicate<Row> {
 		final protected RowMatch rMatch;
 
 		public RowMatchFilterEquality(RowMatch rMatch) {
@@ -125,7 +125,7 @@ public class GraphPropertyTable extends GraphBase {
 		}
 
 		@Override
-		public boolean accept(Row r) {
+		public boolean test(Row r) {
 			return rowContained(rMatch, r);
 		}
 
@@ -147,7 +147,7 @@ public class GraphPropertyTable extends GraphBase {
 	}
 	
 
-	static class TripleMatchFilterEquality extends Filter<Triple> {
+	static class TripleMatchFilterEquality implements Predicate<Triple> {
 		final protected Triple tMatch;
 
 		/** Creates new TripleMatchFilter */
@@ -156,7 +156,7 @@ public class GraphPropertyTable extends GraphBase {
 		}
 
 		@Override
-		public boolean accept(Triple t) {
+		public boolean test(Triple t) {
 			return tripleContained(tMatch, t);
 		}
 

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredModelImpl.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredModelImpl.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredModelImpl.java
index 072396f..37d856b 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredModelImpl.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredModelImpl.java
@@ -20,6 +20,7 @@ package org.apache.jena.permissions.model.impl;
 import java.io.* ;
 import java.net.URL ;
 import java.util.* ;
+import java.util.function.Predicate;
 
 import org.apache.jena.datatypes.RDFDatatype ;
 import org.apache.jena.graph.Node ;
@@ -40,7 +41,6 @@ import org.apache.jena.rdf.model.* ;
 import org.apache.jena.rdf.model.impl.RDFReaderFImpl ;
 import org.apache.jena.shared.* ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Filter ;
 import org.apache.jena.util.iterator.WrappedIterator ;
 import org.apache.jena.vocabulary.RDF ;
 
@@ -265,7 +265,7 @@ public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel
 			this.p = p;
 		}
 		@Override
-		public boolean accept(Resource o) {
+		public boolean test(Resource o) {
 			Triple t = new Triple( r.asNode(), p.asNode(), o.asNode());
 			return si.canRead( SecuredItemImpl.convert( t ) );
 		}};
@@ -2673,7 +2673,7 @@ public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel
 
 	}
 	
-	private class ResourceFilter extends Filter<Resource> {
+	private class ResourceFilter implements Predicate<Resource> {
 		Property p;
 		RDFNode o;
 		
@@ -2693,7 +2693,7 @@ public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel
 		}
 		
 		@Override
-		public boolean accept(Resource s) {
+		public boolean test(Resource s) {
 			StmtIterator iter = listStatements(s, p, o);
 			try {
 				return iter.hasNext();
@@ -2705,7 +2705,7 @@ public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel
 		
 	}
 	
-	private class ObjectFilter extends Filter<RDFNode> {
+	private class ObjectFilter implements Predicate<RDFNode> {
 		Resource s;
 		Property p;
 
@@ -2725,7 +2725,7 @@ public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel
 		}
 		
 		@Override
-		public boolean accept(RDFNode o) {
+		public boolean test(RDFNode o) {
 			StmtIterator iter = listStatements(s, p, o);
 			try {
 				return iter.hasNext();

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredNodeIterator.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredNodeIterator.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredNodeIterator.java
index 558f184..c9df0ba 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredNodeIterator.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredNodeIterator.java
@@ -22,13 +22,13 @@ import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.Set;
 import java.util.function.Function;
+import java.util.function.Predicate;
 
 import org.apache.jena.permissions.model.SecuredModel;
 import org.apache.jena.permissions.model.SecuredRDFNode;
 import org.apache.jena.rdf.model.NodeIterator ;
 import org.apache.jena.rdf.model.RDFNode ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Filter ;
 
 /**
  * A secured RDFNode iterator implementation
@@ -82,13 +82,13 @@ public class SecuredNodeIterator<T extends RDFNode> implements NodeIterator
 	}
 
 	@Override
-	public ExtendedIterator<RDFNode> filterDrop( final Filter<RDFNode> f )
+	public ExtendedIterator<RDFNode> filterDrop( final Predicate<RDFNode> f )
 	{
 		return iter.filterDrop(f);
 	}
 
 	@Override
-	public ExtendedIterator<RDFNode> filterKeep( final Filter<RDFNode> f )
+	public ExtendedIterator<RDFNode> filterKeep( final Predicate<RDFNode> f )
 	{
 		return iter.filterKeep(f);
 	}

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRSIterator.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRSIterator.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRSIterator.java
index 2160880..2fbbb40 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRSIterator.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRSIterator.java
@@ -21,6 +21,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 import java.util.function.Function;
+import java.util.function.Predicate;
 
 import org.apache.jena.permissions.SecurityEvaluator;
 import org.apache.jena.permissions.SecurityEvaluator.Action;
@@ -30,14 +31,13 @@ import org.apache.jena.permissions.model.SecuredModel;
 import org.apache.jena.rdf.model.RSIterator ;
 import org.apache.jena.rdf.model.ReifiedStatement ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Filter ;
 
 /**
  * A secured RSIterator implementation
  */
 public class SecuredRSIterator implements RSIterator
 {
-	private class PermReifiedStatementFilter extends Filter<ReifiedStatement>
+	private class PermReifiedStatementFilter implements Predicate<ReifiedStatement>
 	{
 		private final SecurityEvaluator evaluator;
 		private final SecNode modelNode;
@@ -52,7 +52,7 @@ public class SecuredRSIterator implements RSIterator
 		}
 
 		@Override
-		public boolean accept( final ReifiedStatement t )
+		public boolean test( final ReifiedStatement t )
 		{
 			return evaluator.evaluateAny(evaluator.getPrincipal(), actions, modelNode,
 					SecuredItemImpl.convert(t.getStatement().asTriple()));
@@ -111,14 +111,14 @@ public class SecuredRSIterator implements RSIterator
 
 	@Override
 	public ExtendedIterator<ReifiedStatement> filterDrop(
-			final Filter<ReifiedStatement> f )
+			final Predicate<ReifiedStatement> f )
 	{
 		return iter.filterDrop(f);
 	}
 
 	@Override
 	public ExtendedIterator<ReifiedStatement> filterKeep(
-			final Filter<ReifiedStatement> f )
+			final Predicate<ReifiedStatement> f )
 	{
 		return iter.filterKeep(f);
 	}


[12/50] [abbrv] jena git commit: JENA-929: Migrate Filter to Java 8 Predicate

Posted by cl...@apache.org.
http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredResIterator.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredResIterator.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredResIterator.java
index 4baa134..86599e0 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredResIterator.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredResIterator.java
@@ -21,13 +21,13 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 import java.util.function.Function;
+import java.util.function.Predicate;
 
 import org.apache.jena.permissions.model.SecuredModel;
 import org.apache.jena.permissions.model.SecuredResource;
 import org.apache.jena.rdf.model.ResIterator ;
 import org.apache.jena.rdf.model.Resource ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Filter ;
 
 public class SecuredResIterator implements ResIterator
 {
@@ -72,13 +72,13 @@ public class SecuredResIterator implements ResIterator
 	}
 
 	@Override
-	public ExtendedIterator<Resource> filterDrop( final Filter<Resource> f )
+	public ExtendedIterator<Resource> filterDrop( final Predicate<Resource> f )
 	{
 		return iter.filterDrop(f);
 	}
 
 	@Override
-	public ExtendedIterator<Resource> filterKeep( final Filter<Resource> f )
+	public ExtendedIterator<Resource> filterKeep( final Predicate<Resource> f )
 	{
 		return iter.filterKeep(f);
 	}

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredSeqImpl.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredSeqImpl.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredSeqImpl.java
index c85ea19..d2515b8 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredSeqImpl.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredSeqImpl.java
@@ -17,13 +17,14 @@
  */
 package org.apache.jena.permissions.model.impl;
 
+import java.util.function.Predicate;
+
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.permissions.impl.ItemHolder;
 import org.apache.jena.permissions.impl.SecuredItemInvoker;
 import org.apache.jena.permissions.model.*;
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Filter ;
 import org.apache.jena.vocabulary.RDF ;
 
 /**
@@ -35,7 +36,7 @@ import org.apache.jena.vocabulary.RDF ;
  */
 public class SecuredSeqImpl extends SecuredContainerImpl implements SecuredSeq
 {
-	private class RDFNodeFilter extends Filter<Statement>
+	private class RDFNodeFilter implements Predicate<Statement>
 	{
 		private final RDFNode n;
 
@@ -45,7 +46,7 @@ public class SecuredSeqImpl extends SecuredContainerImpl implements SecuredSeq
 		}
 
 		@Override
-		public boolean accept( final Statement o )
+		public boolean test( final Statement o )
 		{
 			return (o.getPredicate().getOrdinal() != 0)
 					&& n.equals(o.getObject());

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementIterator.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementIterator.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementIterator.java
index 81df811..29a54c4 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementIterator.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementIterator.java
@@ -22,6 +22,7 @@ import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.Set;
 import java.util.function.Function;
+import java.util.function.Predicate;
 
 import org.apache.jena.permissions.SecurityEvaluator.Action;
 import org.apache.jena.permissions.model.SecuredModel;
@@ -30,7 +31,6 @@ import org.apache.jena.permissions.utils.PermStatementFilter;
 import org.apache.jena.rdf.model.Statement ;
 import org.apache.jena.rdf.model.StmtIterator ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Filter ;
 
 /**
  * A secured StatementIterator implementation
@@ -87,13 +87,13 @@ public class SecuredStatementIterator implements StmtIterator
 	}
 
 	@Override
-	public ExtendedIterator<Statement> filterDrop( final Filter<Statement> f )
+	public ExtendedIterator<Statement> filterDrop( final Predicate<Statement> f )
 	{
 		return iter.filterDrop(f);
 	}
 
 	@Override
-	public ExtendedIterator<Statement> filterKeep( final Filter<Statement> f )
+	public ExtendedIterator<Statement> filterKeep( final Predicate<Statement> f )
 	{
 		return iter.filterKeep(f);
 	}

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-permissions/src/main/java/org/apache/jena/permissions/utils/ContainerFilter.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/utils/ContainerFilter.java b/jena-permissions/src/main/java/org/apache/jena/permissions/utils/ContainerFilter.java
index f9ae910..7b6e74f 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/utils/ContainerFilter.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/utils/ContainerFilter.java
@@ -17,16 +17,17 @@
  */
 package org.apache.jena.permissions.utils;
 
+import java.util.function.Predicate;
+
 import org.apache.jena.rdf.model.Property ;
 import org.apache.jena.rdf.model.Statement ;
-import org.apache.jena.util.iterator.Filter ;
 import org.apache.jena.vocabulary.RDF ;
 
-public class ContainerFilter extends Filter<Statement>
+public class ContainerFilter implements Predicate<Statement>
 {
 
 	@Override
-	public boolean accept( final Statement o )
+	public boolean test( final Statement o )
 	{
 		final Property p = o.getPredicate();
 		if (p.getNameSpace().equals(RDF.getURI())

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermStatementFilter.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermStatementFilter.java b/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermStatementFilter.java
index b8549bb..ba03fd8 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermStatementFilter.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermStatementFilter.java
@@ -19,6 +19,7 @@ package org.apache.jena.permissions.utils;
 
 import java.util.Collection;
 import java.util.Set;
+import java.util.function.Predicate;
 
 import org.apache.jena.permissions.SecurityEvaluator;
 import org.apache.jena.permissions.SecurityEvaluator.Action;
@@ -26,14 +27,13 @@ import org.apache.jena.permissions.SecurityEvaluator.SecNode;
 import org.apache.jena.permissions.impl.SecuredItem;
 import org.apache.jena.permissions.impl.SecuredItemImpl;
 import org.apache.jena.rdf.model.Statement ;
-import org.apache.jena.util.iterator.Filter ;
 
 /**
  * A filter for to filter ExtendedIterators on Statements.
  * This filter removes any triple that the user can not perform all
  * the actions on.
  */
-public class PermStatementFilter extends Filter<Statement>
+public class PermStatementFilter implements Predicate<Statement>
 {
 	private final SecurityEvaluator evaluator;
 	private final SecNode modelNode;
@@ -155,7 +155,7 @@ public class PermStatementFilter extends Filter<Statement>
 	}
 
 	@Override
-	public boolean accept( final Statement s )
+	public boolean test( final Statement s )
 	{
 		return evaluator.evaluateAny(principal, actions, modelNode,
 				SecuredItemImpl.convert(s.asTriple()));

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermTripleFilter.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermTripleFilter.java b/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermTripleFilter.java
index a96a2cc..5f54814 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermTripleFilter.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermTripleFilter.java
@@ -19,6 +19,7 @@ package org.apache.jena.permissions.utils;
 
 import java.util.Collection;
 import java.util.Set;
+import java.util.function.Predicate;
 
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.permissions.SecurityEvaluator;
@@ -26,14 +27,13 @@ import org.apache.jena.permissions.SecurityEvaluator.Action;
 import org.apache.jena.permissions.SecurityEvaluator.SecNode;
 import org.apache.jena.permissions.impl.SecuredItem;
 import org.apache.jena.permissions.impl.SecuredItemImpl;
-import org.apache.jena.util.iterator.Filter ;
 
 /**
  * A filter for to filter ExtendedIterators on Triples.
  * This filter removes any triple that the user can not perform all
  * the actions on.
  */
-public class PermTripleFilter extends Filter<Triple>
+public class PermTripleFilter implements Predicate<Triple>
 {
 	private final SecurityEvaluator evaluator;
 	private final SecNode modelNode;
@@ -154,7 +154,7 @@ public class PermTripleFilter extends Filter<Triple>
 	}
 
 	@Override
-	public boolean accept( final Triple t )
+	public boolean test( final Triple t )
 	{
 		return evaluator.evaluateAny(principal, actions, modelNode,
 				SecuredItemImpl.convert(t));

http://git-wip-us.apache.org/repos/asf/jena/blob/c3346910/jena-permissions/src/main/java/org/apache/jena/permissions/utils/RDFListSecFilter.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/utils/RDFListSecFilter.java b/jena-permissions/src/main/java/org/apache/jena/permissions/utils/RDFListSecFilter.java
index efa87a1..7d08a21 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/utils/RDFListSecFilter.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/utils/RDFListSecFilter.java
@@ -18,6 +18,7 @@
 package org.apache.jena.permissions.utils;
 
 import java.util.Set;
+import java.util.function.Predicate;
 
 import org.apache.jena.permissions.SecurityEvaluator;
 import org.apache.jena.permissions.SecurityEvaluator.Action;
@@ -25,10 +26,9 @@ import org.apache.jena.permissions.impl.SecuredItem;
 import org.apache.jena.permissions.impl.SecuredItemImpl;
 import org.apache.jena.rdf.model.RDFList ;
 import org.apache.jena.rdf.model.Statement ;
-import org.apache.jena.util.iterator.Filter ;
 import org.apache.jena.vocabulary.RDF ;
 
-public class RDFListSecFilter<T extends RDFList> extends Filter<T>
+public class RDFListSecFilter<T extends RDFList> implements Predicate<T>
 {
 	private final SecuredItem securedItem;
 	private final Set<Action> perms;
@@ -48,7 +48,7 @@ public class RDFListSecFilter<T extends RDFList> extends Filter<T>
 	}
 
 	@Override
-	public boolean accept( final RDFList o )
+	public boolean test( final RDFList o )
 	{
 		final Statement s = o.getRequiredProperty(RDF.first);
 		return securedItem.getSecurityEvaluator().evaluate(principal, perms,


[18/50] [abbrv] jena git commit: Rename parameters to shorten version

Posted by cl...@apache.org.
Rename parameters to shorten version


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/ada26f25
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/ada26f25
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/ada26f25

Branch: refs/heads/add-contract-tests
Commit: ada26f256ef40931a191da87371a2fbad35ff4fd
Parents: 461cf36
Author: Bruno P. Kinoshita <br...@yahoo.com.br>
Authored: Mon May 4 21:48:21 2015 +1200
Committer: Bruno P. Kinoshita <br...@yahoo.com.br>
Committed: Mon May 4 21:48:21 2015 +1200

----------------------------------------------------------------------
 .../src/test/java/org/apache/jena/util/TestOneToManyMap.java     | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/ada26f25/jena-core/src/test/java/org/apache/jena/util/TestOneToManyMap.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/util/TestOneToManyMap.java b/jena-core/src/test/java/org/apache/jena/util/TestOneToManyMap.java
index 0a1d3d9..2e673a7 100644
--- a/jena-core/src/test/java/org/apache/jena/util/TestOneToManyMap.java
+++ b/jena-core/src/test/java/org/apache/jena/util/TestOneToManyMap.java
@@ -83,12 +83,12 @@ public class TestOneToManyMap
         assertTrue( map0.contains( s0, s1 ) );
         
         OneToManyMap<String, String> map1 = new OneToManyMap<>( map0 );
-        assertTrue( map0.contains( s0, s1 ) );
+        assertTrue( map1.contains( s0, s1 ) );
         
         map0.put( s0, s2 );
         assertTrue( map0.contains( s0, s2 ) );
+        assertFalse( map1.contains( s0, s2 ) );
         assertFalse( map0.contains( s1, s2 ) );
-        
     }
     
     public void testClear() {


[47/50] [abbrv] jena git commit: updated contract tests.

Posted by cl...@apache.org.
updated contract tests.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/608c2b40
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/608c2b40
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/608c2b40

Branch: refs/heads/add-contract-tests
Commit: 608c2b402af7bb8367599502cc7e34dd226a77d0
Parents: d12bd57
Author: Claude Warren <cl...@apache.org>
Authored: Mon Apr 27 22:40:03 2015 +0100
Committer: Claude Warren <cl...@apache.org>
Committed: Sat May 9 16:15:24 2015 +0100

----------------------------------------------------------------------
 jena-core/pom.xml                               |   1 +
 .../apache/jena/graph/GraphContractTest.java    |   4 +-
 .../graph/GraphEventManagerContractTest.java    |  14 ---
 .../jena/graph/GraphMakerContractTest.java      |  23 +---
 .../graph/GraphWithPerformContractTest.java     |  37 +++---
 .../graph/TransactionHandlerContractTest.java   |  13 ---
 .../jena/graph/impl/CollectionGraph_CS.java     |  67 +++++++++++
 .../jena/graph/impl/FileGraphMaker_CS.java      |  81 +++++++++++++
 .../impl/FileGraphTransactionHandler_CS.java    |  56 +++++++++
 .../apache/jena/graph/impl/FileGraph_CS.java    |  78 +++++++++++++
 .../jena/graph/impl/SimpleEventManager_CS.java  |  54 +++++++++
 .../jena/graph/impl/SimpleGraphMaker_CS.java    |  54 +++++++++
 .../graph/impl/SimpleTransactionHandler_CS.java |  54 +++++++++
 .../jena/graph/impl/TestCollectionGraph.java    |  67 -----------
 .../jena/graph/impl/TestWrappedGraph.java       |  63 ----------
 .../graph/impl/TripleStoreContractTest.java     |  16 ---
 .../apache/jena/graph/impl/WrappedGraph_CS.java |  63 ++++++++++
 .../java/org/apache/jena/mem/ArrayBunch_CS.java |  52 +++++++++
 .../java/org/apache/jena/mem/GraphMemTest.java  | 115 -------------------
 .../java/org/apache/jena/mem/GraphMem_CS.java   | 115 +++++++++++++++++++
 .../apache/jena/mem/GraphTripleStoreMem_CS.java |  51 ++++++++
 .../apache/jena/mem/GraphTripleStoreTest.java   |  51 --------
 .../apache/jena/mem/GraphTripleStore_CS.java    |  51 ++++++++
 .../org/apache/jena/mem/HashedBunchMap_CS.java  |  52 +++++++++
 .../apache/jena/mem/HashedTripleBunch_CS.java   |  50 ++++++++
 .../java/org/apache/jena/mem/SetBunch_CS.java   |  50 ++++++++
 .../org/apache/jena/mem/WrappedHashMap_CS.java  |  52 +++++++++
 .../testing_framework/ContractTemplate.java     |  18 +++
 .../GraphProducerInterface.java                 |  41 -------
 .../testing_framework/IContainerProducer.java   |  18 +++
 .../testing_framework/IIteratorProducer.java    |  18 +++
 .../testing_framework/IResourceProducer.java    |  18 +++
 .../jena/testing_framework/TestFileData.java    |  18 +++
 .../manifest/ManifestItem.java                  |  18 +++
 .../manifest/ManifestTest.java                  |  18 +++
 .../manifest/ManifestTestRunner.java            |  18 +++
 36 files changed, 1146 insertions(+), 423 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/pom.xml
----------------------------------------------------------------------
diff --git a/jena-core/pom.xml b/jena-core/pom.xml
index a29e559..e18d331 100644
--- a/jena-core/pom.xml
+++ b/jena-core/pom.xml
@@ -136,6 +136,7 @@
           </systemProperties>
           <includes>
             <include>org/apache/jena/test/TestPackage.java</include>
+						<include>**/*_CS.java</include>
           </includes>
         </configuration>
       </plugin>

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java b/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
index a989bae..55ad955 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
@@ -57,9 +57,7 @@ import org.apache.jena.util.iterator.Map1;
 import static org.apache.jena.testing_framework.GraphHelper.*;
 
 /**
- * AbstractTestGraph provides a bunch of basic tests for something that purports
- * to be a Graph. The abstract method getGraph must be overridden in subclasses
- * to deliver a Graph of interest.
+ * Graph contract test.
  */
 @Contract(Graph.class)
 public class GraphContractTest<T extends Graph> extends

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/graph/GraphEventManagerContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/GraphEventManagerContractTest.java b/jena-core/src/test/java/org/apache/jena/graph/GraphEventManagerContractTest.java
index 426002d..d18bd52 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/GraphEventManagerContractTest.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/GraphEventManagerContractTest.java
@@ -33,7 +33,6 @@ import static org.junit.Assert.*;
 import org.apache.jena.graph.Graph;
 import org.apache.jena.graph.GraphEventManager;
 import org.apache.jena.graph.Triple;
-import org.apache.jena.graph.Factory;
 import org.apache.jena.testing_framework.ContractTemplate;
 import org.apache.jena.testing_framework.GraphHelper;
 import org.xenei.junit.contract.IProducer;
@@ -61,19 +60,6 @@ public class GraphEventManagerContractTest<T extends GraphEventManager> extends
 	private GraphEventManager gem;
 
 	public GraphEventManagerContractTest() {
-//		setProducer(new IProducer<T>() {
-//
-//			@SuppressWarnings("unchecked")
-//			@Override
-//			public T newInstance() {
-//				return (T) Factory.createGraphMem().getEventManager();
-//			}
-//
-//			@Override
-//			public void cleanUp() {
-//			}
-//		});
-
 	}
 
 	@Contract.Inject

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/graph/GraphMakerContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/GraphMakerContractTest.java b/jena-core/src/test/java/org/apache/jena/graph/GraphMakerContractTest.java
index 5fbd9c2..d5a3657 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/GraphMakerContractTest.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/GraphMakerContractTest.java
@@ -30,7 +30,6 @@ import org.apache.jena.graph.Graph;
 import org.apache.jena.graph.GraphMaker;
 import org.apache.jena.graph.Node;
 import org.apache.jena.graph.Triple;
-import org.apache.jena.graph.impl.SimpleGraphMaker;
 import org.apache.jena.shared.AlreadyExistsException;
 import org.apache.jena.shared.DoesNotExistException;
 import org.apache.jena.testing_framework.GraphHelper;
@@ -38,14 +37,8 @@ import org.xenei.junit.contract.IProducer;
 import org.apache.jena.testing_framework.TestUtils;
 
 /**
- * Abstract base class for testing graph factories. Subclasses define the method
- * <code>getGraphFactory()</code> which supplies a new graph factory to be
- * tested: ATGF invokes that during <code>setUp</code> and closes it in
- * <code>tearDown</code>.
- * <p>
- * This bunch of tests is not remotely exhaustive, but it was sufficent to drive
- * the development of the first full graph factory. (Although at the time it
- * wasn't abstract.)
+ * GraphMaker contract test.
+ *
  */
 @Contract(GraphMaker.class)
 public class GraphMakerContractTest {
@@ -55,18 +48,6 @@ public class GraphMakerContractTest {
 	private GraphMaker graphMaker;
 
 	public GraphMakerContractTest() {
-//		producer = new IProducer<GraphMaker>() {
-//
-//			@Override
-//			public GraphMaker newInstance() {
-//				return new SimpleGraphMaker();
-//			}
-//
-//			@Override
-//			public void cleanUp() {
-//
-//			}
-//		};
 	}
 
 	@Contract.Inject

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/graph/GraphWithPerformContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/GraphWithPerformContractTest.java b/jena-core/src/test/java/org/apache/jena/graph/GraphWithPerformContractTest.java
index aaaa85a..a4e233f 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/GraphWithPerformContractTest.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/GraphWithPerformContractTest.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.jena.graph;
 
 import static org.apache.jena.testing_framework.GraphHelper.graphWith;
@@ -8,13 +26,10 @@ import static org.apache.jena.testing_framework.GraphHelper.txnCommit;
 import static org.junit.Assert.*;
 
 import org.junit.After;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.xenei.junit.contract.Contract;
 import org.xenei.junit.contract.ContractTest;
 
 import org.apache.jena.graph.impl.GraphWithPerform;
-import org.apache.jena.mem.GraphMem;
 import org.apache.jena.testing_framework.ContractTemplate;
 
 import org.xenei.junit.contract.IProducer;
@@ -30,23 +45,7 @@ public class GraphWithPerformContractTest<T extends GraphWithPerform> extends
 	// Recording listener for tests
 	protected RecordingGraphListener GL = new RecordingGraphListener();
 
-	private static final Logger LOG = LoggerFactory
-			.getLogger(GraphWithPerformContractTest.class);
-
-	@SuppressWarnings("unchecked")
 	public GraphWithPerformContractTest() {
-//		setProducer((IProducer<T>) new IProducer<GraphWithPerform>() {
-//
-//			@Override
-//			public GraphWithPerform newInstance() {
-//				return new GraphMem();
-//			}
-//
-//			@Override
-//			public void cleanUp() {
-//
-//			}
-//		});
 	}
 
 	@Contract.Inject

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/graph/TransactionHandlerContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/TransactionHandlerContractTest.java b/jena-core/src/test/java/org/apache/jena/graph/TransactionHandlerContractTest.java
index d26d7e9..8ffddbc 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/TransactionHandlerContractTest.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/TransactionHandlerContractTest.java
@@ -29,7 +29,6 @@ import static org.junit.Assert.*;
 
 import org.apache.jena.graph.TransactionHandler;
 import org.apache.jena.graph.Triple;
-import org.apache.jena.graph.impl.SimpleTransactionHandler;
 import org.apache.jena.shared.Command;
 import org.apache.jena.shared.JenaException;
 import org.xenei.junit.contract.IProducer;
@@ -47,18 +46,6 @@ public class TransactionHandlerContractTest {
 	private IProducer<TransactionHandler> producer;
 
 	public TransactionHandlerContractTest() {
-//		producer = new IProducer<TransactionHandler>() {
-//
-//			@Override
-//			public TransactionHandler newInstance() {
-//				return new SimpleTransactionHandler();
-//			}
-//
-//			@Override
-//			public void cleanUp() {
-//
-//			}
-//		};
 	}
 
 	@Contract.Inject

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/graph/impl/CollectionGraph_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/impl/CollectionGraph_CS.java b/jena-core/src/test/java/org/apache/jena/graph/impl/CollectionGraph_CS.java
new file mode 100644
index 0000000..b246f2b
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/impl/CollectionGraph_CS.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.graph.impl;
+
+import static org.apache.jena.testing_framework.GraphHelper.memGraph;
+
+import java.util.HashSet;
+
+import org.apache.jena.graph.Graph ;
+import org.apache.jena.graph.Triple ;
+import org.apache.jena.graph.impl.CollectionGraph ;
+import org.apache.jena.testing_framework.AbstractGraphProducer;
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(CollectionGraph.class)
+public class CollectionGraph_CS {
+	 
+	protected IProducer<CollectionGraph> graphProducer;
+	
+	public CollectionGraph_CS() {
+		graphProducer = new AbstractGraphProducer<CollectionGraph>() {
+			
+			@Override
+			protected CollectionGraph createNewGraph() {
+				return new CollectionGraph( new HashSet<Triple>() );
+			}
+
+			@Override
+			public Graph[] getDependsOn(Graph d) {
+				return null;
+			}
+
+			@Override
+			public Graph[] getNotDependsOn(Graph g) {
+				return new Graph[] { memGraph() };
+			}
+
+		};
+	}
+
+	@Contract.Inject
+	public final IProducer<CollectionGraph> getCollectionTestProducer() {
+		return graphProducer;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraphMaker_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraphMaker_CS.java b/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraphMaker_CS.java
new file mode 100644
index 0000000..5f1d36d
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraphMaker_CS.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.graph.impl;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(FileGraphMaker.class)
+public class FileGraphMaker_CS {
+	 
+	protected IProducer<FileGraphMaker> graphProducer;
+	
+	public FileGraphMaker_CS() throws IOException {
+		graphProducer = new FileGraphMakerProducer();
+	}
+
+	@Contract.Inject
+	public final IProducer<FileGraphMaker> getCollectionTestProducer() {
+		return graphProducer;
+	}
+	
+	private static class FileGraphMakerProducer implements IProducer<FileGraphMaker> {
+		private Map<Path,FileGraphMaker> map;
+		
+		public FileGraphMakerProducer () throws IOException {
+			map = new HashMap<Path,FileGraphMaker>();
+		}
+		
+		
+		@Override
+		public FileGraphMaker newInstance() {
+			Path p;
+			try {
+				p = Files.createTempDirectory("fgm_CS");
+			} catch (IOException e) {
+				throw new RuntimeException( "Unable to create temp directory", e );
+			}
+			FileGraphMaker fgm = new FileGraphMaker( p.toString(), true);
+			map.put(p, fgm);
+			return fgm;
+		}
+
+		@Override
+		public void cleanUp() {
+			for (Path p : map.keySet())
+			{
+				map.get(p).close();
+				p.toFile().delete();
+			}
+			map.clear();
+		}
+
+	};
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraphTransactionHandler_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraphTransactionHandler_CS.java b/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraphTransactionHandler_CS.java
new file mode 100644
index 0000000..5e0feb4
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraphTransactionHandler_CS.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.graph.impl;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(FileGraphTransactionHandler.class)
+public class FileGraphTransactionHandler_CS {
+	 
+	protected IProducer<FileGraphTransactionHandler> graphProducer;
+	
+	public FileGraphTransactionHandler_CS() {
+		graphProducer = new IProducer<FileGraphTransactionHandler>() {
+			
+			private FileGraph_CS.FileGraphProducer fgp = new FileGraph_CS.FileGraphProducer();
+			
+			@Override
+			public FileGraphTransactionHandler newInstance() {
+				return new FileGraphTransactionHandler( fgp.newInstance() );
+			}
+
+			@Override
+			public void cleanUp() {
+				fgp.cleanUp();
+			}
+
+		};
+	}
+
+	@Contract.Inject
+	public final IProducer<FileGraphTransactionHandler> getCollectionTestProducer() {
+		return graphProducer;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraph_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraph_CS.java b/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraph_CS.java
new file mode 100644
index 0000000..b7bb6c3
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraph_CS.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.graph.impl;
+
+import static org.apache.jena.testing_framework.GraphHelper.memGraph;
+
+import java.io.File;
+import java.io.IOException;
+import org.apache.jena.graph.Graph ;
+import org.apache.jena.testing_framework.AbstractGraphProducer;
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(FileGraph.class)
+public class FileGraph_CS {
+	 
+	protected IProducer<FileGraph> graphProducer;
+	
+	public FileGraph_CS() {
+		graphProducer = new FileGraphProducer();
+	}
+
+	@Contract.Inject
+	public final IProducer<FileGraph> getCollectionTestProducer() {
+		return graphProducer;
+	}
+	
+	public static class FileGraphProducer extends AbstractGraphProducer<FileGraph> {
+		
+		@Override
+		protected FileGraph createNewGraph() {
+			File f;
+			try {
+				f = File.createTempFile("fgp", ".ttl" );
+			} catch (IOException e) {
+				throw new RuntimeException( "Can not create file", e );
+			}
+			return new FileGraph( f, false, true );
+		}
+
+		@Override
+		public Graph[] getDependsOn(Graph d) {
+			return null;
+		}
+
+		@Override
+		public Graph[] getNotDependsOn(Graph g) {
+			return new Graph[] { memGraph() };
+		}
+		
+		@Override
+		protected void afterClose(Graph g) {
+			((FileGraph)g).name.delete();
+		}
+
+	};
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/graph/impl/SimpleEventManager_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/impl/SimpleEventManager_CS.java b/jena-core/src/test/java/org/apache/jena/graph/impl/SimpleEventManager_CS.java
new file mode 100644
index 0000000..bfe7a3c
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/impl/SimpleEventManager_CS.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.graph.impl;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+
+import org.xenei.junit.contract.IProducer;
+
+/**
+ * Test the SimpleGraphFactory by extending AbstractTestGraphFactory and
+ * supplying new SimplGraphFactorys via getGraph.
+ */
+@RunWith(ContractSuite.class)
+@ContractImpl(SimpleEventManager.class)
+public class SimpleEventManager_CS {
+
+	private IProducer<SimpleEventManager> producer = new IProducer<SimpleEventManager>() {
+
+		@Override
+		public SimpleEventManager newInstance() {
+			return new SimpleEventManager();
+		}
+
+		@Override
+		public void cleanUp() {
+			// nothing to do.
+		}
+	};
+
+	@Contract.Inject
+	public IProducer<SimpleEventManager> getEventManagerProducer() {
+		return producer;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/graph/impl/SimpleGraphMaker_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/impl/SimpleGraphMaker_CS.java b/jena-core/src/test/java/org/apache/jena/graph/impl/SimpleGraphMaker_CS.java
new file mode 100644
index 0000000..43dac19
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/impl/SimpleGraphMaker_CS.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.graph.impl;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(SimpleGraphMaker.class)
+public class SimpleGraphMaker_CS {
+	 
+	protected IProducer<SimpleGraphMaker> graphProducer;
+	
+	public SimpleGraphMaker_CS() {
+		graphProducer = new IProducer<SimpleGraphMaker>() {
+			
+			@Override
+			public SimpleGraphMaker newInstance() {
+				return new SimpleGraphMaker();
+			}
+
+			@Override
+			public void cleanUp() {
+				// nothing to do
+			}
+
+		};
+	}
+
+	@Contract.Inject
+	public final IProducer<SimpleGraphMaker> getCollectionTestProducer() {
+		return graphProducer;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/graph/impl/SimpleTransactionHandler_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/impl/SimpleTransactionHandler_CS.java b/jena-core/src/test/java/org/apache/jena/graph/impl/SimpleTransactionHandler_CS.java
new file mode 100644
index 0000000..da845ec
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/impl/SimpleTransactionHandler_CS.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.graph.impl;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(SimpleTransactionHandler.class)
+public class SimpleTransactionHandler_CS {
+	 
+	protected IProducer<SimpleTransactionHandler> graphProducer;
+	
+	public SimpleTransactionHandler_CS() {
+		graphProducer = new IProducer<SimpleTransactionHandler>() {
+			
+			@Override
+			public SimpleTransactionHandler newInstance() {
+				return new SimpleTransactionHandler();
+			}
+
+			@Override
+			public void cleanUp() {
+				// nothing to do
+			}
+
+		};
+	}
+
+	@Contract.Inject
+	public final IProducer<SimpleTransactionHandler> getCollectionTestProducer() {
+		return graphProducer;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/graph/impl/TestCollectionGraph.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/impl/TestCollectionGraph.java b/jena-core/src/test/java/org/apache/jena/graph/impl/TestCollectionGraph.java
deleted file mode 100644
index 4d9f40d..0000000
--- a/jena-core/src/test/java/org/apache/jena/graph/impl/TestCollectionGraph.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.graph.impl;
-
-import static org.apache.jena.testing_framework.GraphHelper.memGraph;
-
-import java.util.HashSet;
-
-import org.apache.jena.graph.Graph ;
-import org.apache.jena.graph.Triple ;
-import org.apache.jena.graph.impl.CollectionGraph ;
-import org.apache.jena.testing_framework.AbstractGraphProducer;
-import org.junit.runner.RunWith;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractImpl;
-import org.xenei.junit.contract.ContractSuite;
-import org.xenei.junit.contract.IProducer;
-
-@RunWith(ContractSuite.class)
-@ContractImpl(CollectionGraph.class)
-public class TestCollectionGraph {
-	 
-	protected IProducer<CollectionGraph> graphProducer;
-	
-	public TestCollectionGraph() {
-		graphProducer = new AbstractGraphProducer<CollectionGraph>() {
-			
-			@Override
-			protected CollectionGraph createNewGraph() {
-				return new CollectionGraph( new HashSet<Triple>() );
-			}
-
-			@Override
-			public Graph[] getDependsOn(Graph d) {
-				return null;
-			}
-
-			@Override
-			public Graph[] getNotDependsOn(Graph g) {
-				return new Graph[] { memGraph() };
-			}
-
-		};
-	}
-
-	@Contract.Inject
-	public final IProducer<CollectionGraph> getDeltaTestProducer() {
-		return graphProducer;
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/graph/impl/TestWrappedGraph.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/impl/TestWrappedGraph.java b/jena-core/src/test/java/org/apache/jena/graph/impl/TestWrappedGraph.java
deleted file mode 100644
index 7910660..0000000
--- a/jena-core/src/test/java/org/apache/jena/graph/impl/TestWrappedGraph.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.graph.impl;
-
-import static org.apache.jena.testing_framework.GraphHelper.memGraph;
-
-import org.apache.jena.graph.Graph ;
-import org.apache.jena.testing_framework.AbstractGraphProducer;
-import org.junit.runner.RunWith;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractImpl;
-import org.xenei.junit.contract.ContractSuite;
-import org.xenei.junit.contract.IProducer;
-
-@RunWith(ContractSuite.class)
-@ContractImpl(WrappedGraph.class)
-public class TestWrappedGraph {
-	 
-	protected IProducer<WrappedGraph> graphProducer;
-	
-	public TestWrappedGraph() {
-		graphProducer = new AbstractGraphProducer<WrappedGraph>() {
-			
-			@Override
-			protected WrappedGraph createNewGraph() {
-				return new WrappedGraph( memGraph() );
-			}
-
-			@Override
-			public Graph[] getDependsOn(Graph d) {
-				return null;
-			}
-
-			@Override
-			public Graph[] getNotDependsOn(Graph g) {
-				return new Graph[] { memGraph() };
-			}
-
-		};
-	}
-
-	@Contract.Inject
-	public final IProducer<WrappedGraph> getDeltaTestProducer() {
-		return graphProducer;
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/graph/impl/TripleStoreContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/impl/TripleStoreContractTest.java b/jena-core/src/test/java/org/apache/jena/graph/impl/TripleStoreContractTest.java
index 0b074aa..815a40d 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/impl/TripleStoreContractTest.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/impl/TripleStoreContractTest.java
@@ -26,7 +26,6 @@ import org.xenei.junit.contract.ContractTest;
 import static org.junit.Assert.*;
 
 import static org.apache.jena.testing_framework.GraphHelper.*;
-import org.apache.jena.mem.GraphTripleStore;
 import org.apache.jena.graph.impl.TripleStore;
 import org.apache.jena.testing_framework.ContractTemplate;
 
@@ -43,21 +42,6 @@ public class TripleStoreContractTest<T extends TripleStore> extends
 	protected TripleStore store;
 
 	public TripleStoreContractTest() {
-		IProducer<TripleStore> producer = new IProducer<TripleStore>() {
-
-			@Override
-			public TripleStore newInstance() {
-				return new GraphTripleStore(memGraph());
-			}
-
-			@Override
-			public void cleanUp() {
-				// TODO Auto-generated method stub
-
-			}
-
-		};
-		setProducer((IProducer<T>) producer);
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/graph/impl/WrappedGraph_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/impl/WrappedGraph_CS.java b/jena-core/src/test/java/org/apache/jena/graph/impl/WrappedGraph_CS.java
new file mode 100644
index 0000000..3cc5b1c
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/impl/WrappedGraph_CS.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.graph.impl;
+
+import static org.apache.jena.testing_framework.GraphHelper.memGraph;
+
+import org.apache.jena.graph.Graph ;
+import org.apache.jena.testing_framework.AbstractGraphProducer;
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(WrappedGraph.class)
+public class WrappedGraph_CS {
+	 
+	protected IProducer<WrappedGraph> graphProducer;
+	
+	public WrappedGraph_CS() {
+		graphProducer = new AbstractGraphProducer<WrappedGraph>() {
+			
+			@Override
+			protected WrappedGraph createNewGraph() {
+				return new WrappedGraph( memGraph() );
+			}
+
+			@Override
+			public Graph[] getDependsOn(Graph d) {
+				return null;
+			}
+
+			@Override
+			public Graph[] getNotDependsOn(Graph g) {
+				return new Graph[] { memGraph() };
+			}
+
+		};
+	}
+
+	@Contract.Inject
+	public final IProducer<WrappedGraph> getDeltaTestProducer() {
+		return graphProducer;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/mem/ArrayBunch_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/mem/ArrayBunch_CS.java b/jena-core/src/test/java/org/apache/jena/mem/ArrayBunch_CS.java
new file mode 100644
index 0000000..df8438e
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/mem/ArrayBunch_CS.java
@@ -0,0 +1,52 @@
+/*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ */
+package org.apache.jena.mem;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract.Inject;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(ArrayBunch.class)
+public class ArrayBunch_CS {
+
+	protected IProducer<ArrayBunch> mapProducer = new IProducer<ArrayBunch>() {
+
+		@Override
+		public ArrayBunch newInstance() {
+			return new ArrayBunch();
+		}
+
+		@Override
+		public void cleanUp() {
+			// nothing to do
+		}
+
+		
+
+	};
+
+	@Inject
+	public IProducer<ArrayBunch> getGraphProducer() {
+		return mapProducer;
+	}
+
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/mem/GraphMemTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/mem/GraphMemTest.java b/jena-core/src/test/java/org/apache/jena/mem/GraphMemTest.java
deleted file mode 100644
index 8fed109..0000000
--- a/jena-core/src/test/java/org/apache/jena/mem/GraphMemTest.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
- */
-package org.apache.jena.mem;
-
-import static org.apache.jena.testing_framework.GraphHelper.*;
-import static org.junit.Assert.*;
-
-import java.util.Iterator;
-
-import org.junit.runner.RunWith;
-import org.xenei.junit.contract.Contract.Inject;
-import org.xenei.junit.contract.ContractImpl;
-import org.xenei.junit.contract.ContractSuite;
-import org.xenei.junit.contract.ContractTest;
-
-import org.apache.jena.graph.Graph;
-import org.apache.jena.graph.GraphStatisticsHandler;
-import org.apache.jena.graph.Node;
-import org.apache.jena.graph.Node_URI;
-import org.apache.jena.graph.Triple;
-import org.apache.jena.shared.JenaException;
-import org.apache.jena.testing_framework.AbstractGraphProducer;
-import org.xenei.junit.contract.IProducer;
-import org.apache.jena.util.iterator.ExtendedIterator;
-
-@RunWith(ContractSuite.class)
-@ContractImpl(GraphMem.class)
-public class GraphMemTest {
-
-	protected IProducer<GraphMem> graphProducer = new AbstractGraphProducer<GraphMem>() {
-
-		@Override
-		protected GraphMem createNewGraph() {
-			return new GraphMem();
-		}
-
-		@Override
-		public Graph[] getDependsOn(Graph g) {
-			return null;
-		}
-
-		@Override
-		public Graph[] getNotDependsOn(Graph g) {
-			return new Graph[] { memGraph() };
-		}
-
-	};
-
-	@Inject
-	public IProducer<GraphMem> getGraphProducer() {
-		return graphProducer;
-	}
-
-	@ContractTest
-	public void testHasStatistics() {
-		GraphStatisticsHandler h = graphProducer.newInstance()
-				.getStatisticsHandler();
-		assertNotNull(h);
-	}
-
-	@ContractTest
-	public void testContainsConcreteDoesntUseFind() {
-		Graph g = new GraphMemWithoutFind();
-		graphAdd(g, "x P y; a Q b");
-		assertTrue(g.contains(triple("x P y")));
-		assertTrue(g.contains(triple("a Q b")));
-		assertFalse(g.contains(triple("a P y")));
-		assertFalse(g.contains(triple("y R b")));
-	}
-
-	protected final class GraphMemWithoutFind extends GraphMem {
-		@Override
-		public ExtendedIterator<Triple> graphBaseFind(Triple t) {
-			throw new JenaException("find is Not Allowed");
-		}
-	}
-
-	@ContractTest
-	public void testUnnecessaryMatches() {
-		Node special = new Node_URI("eg:foo") {
-			@Override
-			public boolean matches(Node s) {
-				fail("Matched called superfluously.");
-				return true;
-			}
-		};
-		Graph g = graphWith(graphProducer.newInstance(), "x p y");
-		g.add(new Triple(special, special, special));
-		exhaust(g.find(special, Node.ANY, Node.ANY));
-		exhaust(g.find(Node.ANY, special, Node.ANY));
-		exhaust(g.find(Node.ANY, Node.ANY, special));
-
-	}
-
-	protected void exhaust(Iterator<?> it) {
-		while (it.hasNext())
-			it.next();
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/mem/GraphMem_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/mem/GraphMem_CS.java b/jena-core/src/test/java/org/apache/jena/mem/GraphMem_CS.java
new file mode 100644
index 0000000..718432b
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/mem/GraphMem_CS.java
@@ -0,0 +1,115 @@
+/*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ */
+package org.apache.jena.mem;
+
+import static org.apache.jena.testing_framework.GraphHelper.*;
+import static org.junit.Assert.*;
+
+import java.util.Iterator;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract.Inject;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.ContractTest;
+
+import org.apache.jena.graph.Graph;
+import org.apache.jena.graph.GraphStatisticsHandler;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.Node_URI;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.shared.JenaException;
+import org.apache.jena.testing_framework.AbstractGraphProducer;
+import org.xenei.junit.contract.IProducer;
+import org.apache.jena.util.iterator.ExtendedIterator;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(GraphMem.class)
+public class GraphMem_CS {
+
+	protected IProducer<GraphMem> graphProducer = new AbstractGraphProducer<GraphMem>() {
+
+		@Override
+		protected GraphMem createNewGraph() {
+			return new GraphMem();
+		}
+
+		@Override
+		public Graph[] getDependsOn(Graph g) {
+			return null;
+		}
+
+		@Override
+		public Graph[] getNotDependsOn(Graph g) {
+			return new Graph[] { memGraph() };
+		}
+
+	};
+
+	@Inject
+	public IProducer<GraphMem> getGraphProducer() {
+		return graphProducer;
+	}
+
+	@ContractTest
+	public void testHasStatistics() {
+		GraphStatisticsHandler h = graphProducer.newInstance()
+				.getStatisticsHandler();
+		assertNotNull(h);
+	}
+
+	@ContractTest
+	public void testContainsConcreteDoesntUseFind() {
+		Graph g = new GraphMemWithoutFind();
+		graphAdd(g, "x P y; a Q b");
+		assertTrue(g.contains(triple("x P y")));
+		assertTrue(g.contains(triple("a Q b")));
+		assertFalse(g.contains(triple("a P y")));
+		assertFalse(g.contains(triple("y R b")));
+	}
+
+	protected final class GraphMemWithoutFind extends GraphMem {
+		@Override
+		public ExtendedIterator<Triple> graphBaseFind(Triple t) {
+			throw new JenaException("find is Not Allowed");
+		}
+	}
+
+	@ContractTest
+	public void testUnnecessaryMatches() {
+		Node special = new Node_URI("eg:foo") {
+			@Override
+			public boolean matches(Node s) {
+				fail("Matched called superfluously.");
+				return true;
+			}
+		};
+		Graph g = graphWith(graphProducer.newInstance(), "x p y");
+		g.add(new Triple(special, special, special));
+		exhaust(g.find(special, Node.ANY, Node.ANY));
+		exhaust(g.find(Node.ANY, special, Node.ANY));
+		exhaust(g.find(Node.ANY, Node.ANY, special));
+
+	}
+
+	protected void exhaust(Iterator<?> it) {
+		while (it.hasNext())
+			it.next();
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/mem/GraphTripleStoreMem_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/mem/GraphTripleStoreMem_CS.java b/jena-core/src/test/java/org/apache/jena/mem/GraphTripleStoreMem_CS.java
new file mode 100644
index 0000000..129e706
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/mem/GraphTripleStoreMem_CS.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.mem;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+
+import org.apache.jena.graph.Graph;
+import org.apache.jena.mem.GraphTripleStore;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(GraphTripleStore.class)
+public class GraphTripleStoreMem_CS {
+
+	private IProducer<GraphTripleStoreMem> producer = new IProducer<GraphTripleStoreMem>() {
+
+		@Override
+		public GraphTripleStoreMem newInstance() {
+			return new GraphTripleStoreMem(Graph.emptyGraph);
+		}
+
+		@Override
+		public void cleanUp() {
+		}
+
+	};
+
+	@Contract.Inject
+	public IProducer<GraphTripleStoreMem> getTripleStore() {
+		return producer;
+	}
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/mem/GraphTripleStoreTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/mem/GraphTripleStoreTest.java b/jena-core/src/test/java/org/apache/jena/mem/GraphTripleStoreTest.java
deleted file mode 100644
index 1f82935..0000000
--- a/jena-core/src/test/java/org/apache/jena/mem/GraphTripleStoreTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.mem;
-
-import org.junit.runner.RunWith;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractImpl;
-import org.xenei.junit.contract.ContractSuite;
-
-import org.apache.jena.graph.Graph;
-import org.apache.jena.mem.GraphTripleStore;
-import org.xenei.junit.contract.IProducer;
-
-@RunWith(ContractSuite.class)
-@ContractImpl(GraphTripleStore.class)
-public class GraphTripleStoreTest {
-
-	private IProducer<GraphTripleStore> producer = new IProducer<GraphTripleStore>() {
-
-		@Override
-		public GraphTripleStore newInstance() {
-			return new GraphTripleStore(Graph.emptyGraph);
-		}
-
-		@Override
-		public void cleanUp() {
-		}
-
-	};
-
-	@Contract.Inject
-	public IProducer<GraphTripleStore> getTripleStore() {
-		return producer;
-	}
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/mem/GraphTripleStore_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/mem/GraphTripleStore_CS.java b/jena-core/src/test/java/org/apache/jena/mem/GraphTripleStore_CS.java
new file mode 100644
index 0000000..c2a2d1c
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/mem/GraphTripleStore_CS.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.mem;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+
+import org.apache.jena.graph.Graph;
+import org.apache.jena.mem.GraphTripleStore;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(GraphTripleStore.class)
+public class GraphTripleStore_CS {
+
+	private IProducer<GraphTripleStore> producer = new IProducer<GraphTripleStore>() {
+
+		@Override
+		public GraphTripleStore newInstance() {
+			return new GraphTripleStore(Graph.emptyGraph);
+		}
+
+		@Override
+		public void cleanUp() {
+		}
+
+	};
+
+	@Contract.Inject
+	public IProducer<GraphTripleStore> getTripleStore() {
+		return producer;
+	}
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/mem/HashedBunchMap_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/mem/HashedBunchMap_CS.java b/jena-core/src/test/java/org/apache/jena/mem/HashedBunchMap_CS.java
new file mode 100644
index 0000000..cb64b57
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/mem/HashedBunchMap_CS.java
@@ -0,0 +1,52 @@
+/*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ */
+package org.apache.jena.mem;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract.Inject;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(WrappedHashMap.class)
+public class HashedBunchMap_CS {
+
+	protected IProducer<HashedBunchMap> mapProducer = new IProducer<HashedBunchMap>() {
+
+		@Override
+		public HashedBunchMap newInstance() {
+			return new HashedBunchMap();
+		}
+
+		@Override
+		public void cleanUp() {
+			// nothing to do
+		}
+
+		
+
+	};
+
+	@Inject
+	public IProducer<HashedBunchMap> getGraphProducer() {
+		return mapProducer;
+	}
+
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/mem/HashedTripleBunch_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/mem/HashedTripleBunch_CS.java b/jena-core/src/test/java/org/apache/jena/mem/HashedTripleBunch_CS.java
new file mode 100644
index 0000000..5db46a3
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/mem/HashedTripleBunch_CS.java
@@ -0,0 +1,50 @@
+/*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ */
+package org.apache.jena.mem;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract.Inject;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(HashedTripleBunch.class)
+public class HashedTripleBunch_CS {
+
+	protected IProducer<HashedTripleBunch> mapProducer = new IProducer<HashedTripleBunch>() {
+
+		@Override
+		public HashedTripleBunch newInstance() {
+			return new HashedTripleBunch( new ArrayBunch() );
+		}
+
+		@Override
+		public void cleanUp() {
+			// nothing to do
+		}
+
+	};
+
+	@Inject
+	public IProducer<HashedTripleBunch> getGraphProducer() {
+		return mapProducer;
+	}
+
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/mem/SetBunch_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/mem/SetBunch_CS.java b/jena-core/src/test/java/org/apache/jena/mem/SetBunch_CS.java
new file mode 100644
index 0000000..b6b1f69
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/mem/SetBunch_CS.java
@@ -0,0 +1,50 @@
+/*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ */
+package org.apache.jena.mem;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract.Inject;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(SetBunch.class)
+public class SetBunch_CS {
+
+	protected IProducer<SetBunch> mapProducer = new IProducer<SetBunch>() {
+
+		@Override
+		public SetBunch newInstance() {
+			return new SetBunch( new ArrayBunch() );
+		}
+
+		@Override
+		public void cleanUp() {
+			// nothing to do
+		}
+
+	};
+
+	@Inject
+	public IProducer<SetBunch> getGraphProducer() {
+		return mapProducer;
+	}
+
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/mem/WrappedHashMap_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/mem/WrappedHashMap_CS.java b/jena-core/src/test/java/org/apache/jena/mem/WrappedHashMap_CS.java
new file mode 100644
index 0000000..25c2bb6
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/mem/WrappedHashMap_CS.java
@@ -0,0 +1,52 @@
+/*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ */
+package org.apache.jena.mem;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract.Inject;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(WrappedHashMap.class)
+public class WrappedHashMap_CS {
+
+	protected IProducer<WrappedHashMap> mapProducer = new IProducer<WrappedHashMap>() {
+
+		@Override
+		public WrappedHashMap newInstance() {
+			return new WrappedHashMap();
+		}
+
+		@Override
+		public void cleanUp() {
+			// nothing to do
+		}
+
+		
+
+	};
+
+	@Inject
+	public IProducer<WrappedHashMap> getGraphProducer() {
+		return mapProducer;
+	}
+
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/testing_framework/ContractTemplate.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/ContractTemplate.java b/jena-core/src/test/java/org/apache/jena/testing_framework/ContractTemplate.java
index f7a16e5..d981b10 100644
--- a/jena-core/src/test/java/org/apache/jena/testing_framework/ContractTemplate.java
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/ContractTemplate.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.jena.testing_framework;
 
 import org.xenei.junit.contract.IProducer;

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/testing_framework/GraphProducerInterface.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/GraphProducerInterface.java b/jena-core/src/test/java/org/apache/jena/testing_framework/GraphProducerInterface.java
deleted file mode 100644
index 8c33eb1..0000000
--- a/jena-core/src/test/java/org/apache/jena/testing_framework/GraphProducerInterface.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
- */
-package org.apache.jena.testing_framework;
-
-/**
- * Creates the graph for testing. Implementations must track the creation of
- * graphs created with newGraph and close them when closeGraphs is called.
- * 
- */
-//public interface GraphProducerInterface<T> {
-//
-//	/**
-//	 * Returns a new Graph to take part in the test.
-//	 * 
-//	 * @return The graph implementation to test.
-//	 */
-//	public abstract Graph newGraph();
-//
-//	/**
-//	 * provides a hook to close down graphs. When called all graphs created by
-//	 * the newGraph() method should be closed. Note that some graphs may have
-//	 * been closed during the test, so graphs should be tested for being closed
-//	 * prior to closing.
-//	 */
-//	public abstract void closeGraphs();
-// }

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/testing_framework/IContainerProducer.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/IContainerProducer.java b/jena-core/src/test/java/org/apache/jena/testing_framework/IContainerProducer.java
index 41bc6df..6d43847 100644
--- a/jena-core/src/test/java/org/apache/jena/testing_framework/IContainerProducer.java
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/IContainerProducer.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.jena.testing_framework;
 
 import org.apache.jena.rdf.model.Container;

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/testing_framework/IIteratorProducer.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/IIteratorProducer.java b/jena-core/src/test/java/org/apache/jena/testing_framework/IIteratorProducer.java
index 3178692..8e17cec 100644
--- a/jena-core/src/test/java/org/apache/jena/testing_framework/IIteratorProducer.java
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/IIteratorProducer.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.jena.testing_framework;
 
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/testing_framework/IResourceProducer.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/IResourceProducer.java b/jena-core/src/test/java/org/apache/jena/testing_framework/IResourceProducer.java
index ef9eead..3c74fb2 100644
--- a/jena-core/src/test/java/org/apache/jena/testing_framework/IResourceProducer.java
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/IResourceProducer.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.jena.testing_framework;
 
 import org.apache.jena.rdf.model.Resource;

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/testing_framework/TestFileData.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/TestFileData.java b/jena-core/src/test/java/org/apache/jena/testing_framework/TestFileData.java
index 7b46366..d839c82 100644
--- a/jena-core/src/test/java/org/apache/jena/testing_framework/TestFileData.java
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/TestFileData.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.jena.testing_framework;
 
 import java.io.ByteArrayInputStream;

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestItem.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestItem.java b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestItem.java
index 81999bd..9ba9028 100644
--- a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestItem.java
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestItem.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.jena.testing_framework.manifest;
 
 import org.apache.jena.n3.turtle.TurtleTestVocab;

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestTest.java b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestTest.java
index cfde240..f0d66b8 100644
--- a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestTest.java
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestTest.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.jena.testing_framework.manifest;
 
 public abstract class ManifestTest {

http://git-wip-us.apache.org/repos/asf/jena/blob/608c2b40/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestTestRunner.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestTestRunner.java b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestTestRunner.java
index 616b444..ef38c7b 100644
--- a/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestTestRunner.java
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/manifest/ManifestTestRunner.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.jena.testing_framework.manifest;
 
 import java.lang.annotation.Annotation;


[49/50] [abbrv] jena git commit: Removed FileGraph tests as FileGraph was deleted. Fixed contract tests

Posted by cl...@apache.org.
Removed FileGraph tests as FileGraph was deleted.
Fixed contract tests


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/335a7617
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/335a7617
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/335a7617

Branch: refs/heads/add-contract-tests
Commit: 335a7617cb73ccf97e3a42f3ae4e9afcc3dbd484
Parents: c004d80
Author: Claude Warren <cl...@apache.org>
Authored: Sun May 10 13:30:17 2015 +0100
Committer: Claude Warren <cl...@apache.org>
Committed: Sun May 10 13:30:17 2015 +0100

----------------------------------------------------------------------
 jena-core/pom.xml                               |  2 +-
 .../jena/assembler/test/TestAssemblerGroup.java |  8 +-
 .../apache/jena/graph/GraphContractTest.java    |  9 ++-
 .../jena/graph/impl/FileGraphMaker_CS.java      | 81 --------------------
 .../impl/FileGraphTransactionHandler_CS.java    | 56 --------------
 .../apache/jena/graph/impl/FileGraph_CS.java    | 79 -------------------
 6 files changed, 12 insertions(+), 223 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/335a7617/jena-core/pom.xml
----------------------------------------------------------------------
diff --git a/jena-core/pom.xml b/jena-core/pom.xml
index e18d331..d64e195 100644
--- a/jena-core/pom.xml
+++ b/jena-core/pom.xml
@@ -78,7 +78,7 @@
 	<dependency>
 		<groupId>org.xenei</groupId>
 		<artifactId>junit-contracts</artifactId>
-		<version>0.0.5</version>
+		<version>0.1.1</version>
 		<scope>test</scope>
 	</dependency>
 	

http://git-wip-us.apache.org/repos/asf/jena/blob/335a7617/jena-core/src/test/java/org/apache/jena/assembler/test/TestAssemblerGroup.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/assembler/test/TestAssemblerGroup.java b/jena-core/src/test/java/org/apache/jena/assembler/test/TestAssemblerGroup.java
index f424993..8b38e5a 100644
--- a/jena-core/src/test/java/org/apache/jena/assembler/test/TestAssemblerGroup.java
+++ b/jena-core/src/test/java/org/apache/jena/assembler/test/TestAssemblerGroup.java
@@ -18,9 +18,11 @@
 
 package org.apache.jena.assembler.test;
 
+import java.util.Map;
+
 import org.apache.jena.assembler.* ;
 import org.apache.jena.assembler.assemblers.* ;
-import org.apache.jena.assembler.assemblers.AssemblerGroup.ExpandingAssemblerGroup ;
+import org.apache.jena.assembler.assemblers.AssemblerGroup.ExpandingAssemblerGroup;
 import org.apache.jena.assembler.exceptions.* ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.mem.GraphMemBase ;
@@ -66,7 +68,9 @@ public class TestAssemblerGroup extends AssemblerTestBase
     
     public static class Trivial
         {
-        static { loaded = true; }
+        static { 
+        	loaded = true;
+        }
         }
     
     public void testLoadsClasses()

http://git-wip-us.apache.org/repos/asf/jena/blob/335a7617/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java b/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
index 55ad955..589f095 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
@@ -25,6 +25,8 @@ import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
+import java.util.function.Function;
+
 import org.junit.After;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -52,7 +54,6 @@ import org.apache.jena.testing_framework.ContractTemplate;
 import org.apache.jena.testing_framework.NodeCreateUtils;
 import org.apache.jena.util.iterator.ClosableIterator;
 import org.apache.jena.util.iterator.ExtendedIterator;
-import org.apache.jena.util.iterator.Map1;
 
 import static org.apache.jena.testing_framework.GraphHelper.*;
 
@@ -1452,10 +1453,10 @@ public class GraphContractTest<T extends Graph> extends
 	//
 
 	// used to find the object set from the returned set for literal testing
-	private static final Map1<Triple, Node> getObject = new Map1<Triple, Node>() {
+	private static final Function<Triple, Node> getObject = new Function<Triple, Node>() {
 		@Override
-		public Node map1(Triple o) {
-			return o.getObject();
+		public Node apply(Triple t) {
+			return t.getObject();
 		}
 	};
 

http://git-wip-us.apache.org/repos/asf/jena/blob/335a7617/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraphMaker_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraphMaker_CS.java b/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraphMaker_CS.java
deleted file mode 100644
index 5f1d36d..0000000
--- a/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraphMaker_CS.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.graph.impl;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.junit.runner.RunWith;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractImpl;
-import org.xenei.junit.contract.ContractSuite;
-import org.xenei.junit.contract.IProducer;
-
-@RunWith(ContractSuite.class)
-@ContractImpl(FileGraphMaker.class)
-public class FileGraphMaker_CS {
-	 
-	protected IProducer<FileGraphMaker> graphProducer;
-	
-	public FileGraphMaker_CS() throws IOException {
-		graphProducer = new FileGraphMakerProducer();
-	}
-
-	@Contract.Inject
-	public final IProducer<FileGraphMaker> getCollectionTestProducer() {
-		return graphProducer;
-	}
-	
-	private static class FileGraphMakerProducer implements IProducer<FileGraphMaker> {
-		private Map<Path,FileGraphMaker> map;
-		
-		public FileGraphMakerProducer () throws IOException {
-			map = new HashMap<Path,FileGraphMaker>();
-		}
-		
-		
-		@Override
-		public FileGraphMaker newInstance() {
-			Path p;
-			try {
-				p = Files.createTempDirectory("fgm_CS");
-			} catch (IOException e) {
-				throw new RuntimeException( "Unable to create temp directory", e );
-			}
-			FileGraphMaker fgm = new FileGraphMaker( p.toString(), true);
-			map.put(p, fgm);
-			return fgm;
-		}
-
-		@Override
-		public void cleanUp() {
-			for (Path p : map.keySet())
-			{
-				map.get(p).close();
-				p.toFile().delete();
-			}
-			map.clear();
-		}
-
-	};
-
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/335a7617/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraphTransactionHandler_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraphTransactionHandler_CS.java b/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraphTransactionHandler_CS.java
deleted file mode 100644
index 5e0feb4..0000000
--- a/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraphTransactionHandler_CS.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.graph.impl;
-
-import org.junit.runner.RunWith;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractImpl;
-import org.xenei.junit.contract.ContractSuite;
-import org.xenei.junit.contract.IProducer;
-
-@RunWith(ContractSuite.class)
-@ContractImpl(FileGraphTransactionHandler.class)
-public class FileGraphTransactionHandler_CS {
-	 
-	protected IProducer<FileGraphTransactionHandler> graphProducer;
-	
-	public FileGraphTransactionHandler_CS() {
-		graphProducer = new IProducer<FileGraphTransactionHandler>() {
-			
-			private FileGraph_CS.FileGraphProducer fgp = new FileGraph_CS.FileGraphProducer();
-			
-			@Override
-			public FileGraphTransactionHandler newInstance() {
-				return new FileGraphTransactionHandler( fgp.newInstance() );
-			}
-
-			@Override
-			public void cleanUp() {
-				fgp.cleanUp();
-			}
-
-		};
-	}
-
-	@Contract.Inject
-	public final IProducer<FileGraphTransactionHandler> getCollectionTestProducer() {
-		return graphProducer;
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/335a7617/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraph_CS.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraph_CS.java b/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraph_CS.java
deleted file mode 100644
index 1b4d321..0000000
--- a/jena-core/src/test/java/org/apache/jena/graph/impl/FileGraph_CS.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.graph.impl;
-
-import static org.apache.jena.testing_framework.GraphHelper.memGraph;
-
-import java.io.File;
-import java.io.IOException;
-import org.apache.jena.graph.Graph ;
-import org.apache.jena.testing_framework.AbstractGraphProducer;
-import org.junit.runner.RunWith;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractImpl;
-import org.xenei.junit.contract.ContractSuite;
-import org.xenei.junit.contract.IProducer;
-
-//@RunWith(ContractSuite.class)
-//@ContractImpl(FileGraph.class)
-public class FileGraph_CS {
-	 
-	protected IProducer<FileGraph> graphProducer;
-	
-	public FileGraph_CS() {
-		graphProducer = new FileGraphProducer();
-	}
-
-	@Contract.Inject
-	public final IProducer<FileGraph> getCollectionTestProducer() {
-		return graphProducer;
-	}
-	
-	public static class FileGraphProducer extends AbstractGraphProducer<FileGraph> {
-		
-		@Override
-		protected FileGraph createNewGraph() {
-			File f;
-			try {
-				f = File.createTempFile("fgp", ".ttl" );
-				f.delete();
-			} catch (IOException e) {
-				throw new RuntimeException( "Can not create file", e );
-			}
-			return new FileGraph( f, true, true );
-		}
-
-		@Override
-		public Graph[] getDependsOn(Graph d) {
-			return null;
-		}
-
-		@Override
-		public Graph[] getNotDependsOn(Graph g) {
-			return new Graph[] { memGraph() };
-		}
-		
-		@Override
-		protected void afterClose(Graph g) {
-			((FileGraph)g).name.delete();
-		}
-
-	};
-
-}


[28/50] [abbrv] jena git commit: Bringing back NodeTransform

Posted by cl...@apache.org.
Bringing back NodeTransform


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/0ef8184f
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/0ef8184f
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/0ef8184f

Branch: refs/heads/add-contract-tests
Commit: 0ef8184f7b8b49cd2c7a9fdf702649495e62d435
Parents: 6711901
Author: ajs6f <aj...@virginia.edu>
Authored: Tue May 5 12:50:11 2015 -0400
Committer: ajs6f <aj...@virginia.edu>
Committed: Tue May 5 12:50:11 2015 -0400

----------------------------------------------------------------------
 .../org/apache/jena/sparql/engine/Rename.java   | 19 +++++++------
 .../org/apache/jena/sparql/expr/E_Exists.java   |  6 ++---
 .../apache/jena/sparql/expr/E_NotExists.java    |  6 ++---
 .../java/org/apache/jena/sparql/expr/Expr.java  |  6 ++---
 .../apache/jena/sparql/expr/ExprAggregator.java |  5 ++--
 .../apache/jena/sparql/expr/ExprFunction0.java  |  6 ++---
 .../apache/jena/sparql/expr/ExprFunction1.java  |  6 ++---
 .../apache/jena/sparql/expr/ExprFunction2.java  |  6 ++---
 .../apache/jena/sparql/expr/ExprFunction3.java  |  6 ++---
 .../apache/jena/sparql/expr/ExprFunctionN.java  |  6 ++---
 .../org/apache/jena/sparql/expr/ExprList.java   |  6 ++---
 .../org/apache/jena/sparql/expr/ExprNode.java   |  6 ++---
 .../org/apache/jena/sparql/expr/ExprVar.java    |  5 ++--
 .../org/apache/jena/sparql/expr/NodeValue.java  |  5 ++--
 .../jena/sparql/expr/aggregate/Aggregator.java  |  5 ++--
 .../sparql/expr/aggregate/AggregatorBase.java   |  5 ++--
 .../apache/jena/sparql/graph/NodeTransform.java |  6 +----
 .../jena/sparql/graph/NodeTransformLib.java     | 28 +++++++++-----------
 .../jena/sparql/graph/NodeTransformOp.java      |  6 ++---
 .../modify/NodeTransformBNodesToVariables.java  |  5 ++--
 .../jena/sparql/modify/UpdateEngineWorker.java  |  5 ++--
 .../jena/sparql/resultset/ResultSetCompare.java | 13 ++-------
 .../org/apache/jena/sparql/util/NodeUtils.java  |  5 +++-
 .../jena/riot/thrift/TestResultSetThrift.java   | 11 --------
 .../query/rewriter/SecuredFunction.java         |  5 ++--
 25 files changed, 67 insertions(+), 121 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java
index bc1d4ea..966941d 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java
@@ -22,14 +22,13 @@ import java.util.Collection ;
 import java.util.HashMap ;
 import java.util.Map ;
 import java.util.Set ;
-import java.util.function.Function;
-
 import org.apache.jena.graph.Node ;
 import org.apache.jena.sparql.ARQConstants ;
 import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.expr.Expr ;
 import org.apache.jena.sparql.expr.ExprList ;
+import org.apache.jena.sparql.graph.NodeTransform;
 import org.apache.jena.sparql.graph.NodeTransformLib ;
 
 /** Support for renaming all the variables in an algebra expession
@@ -49,14 +48,14 @@ public class Rename
     /** Rename one node to another */
     public static Op renameNode(Op op, Node oldName, Node newName)
     {
-    		Function<Node, Node> renamer = new RenameNode(oldName, newName) ;
+    		NodeTransform renamer = new RenameNode(oldName, newName) ;
         return NodeTransformLib.transform(renamer, op) ;
     }
 
     /** Rename one variable to another */
     public static Op renameVar(Op op, Var oldName, Var newName)
     {
-    		Function<Node, Node> renamer = new RenameNode(oldName, newName) ;
+    		NodeTransform renamer = new RenameNode(oldName, newName) ;
         return NodeTransformLib.transform(renamer, op) ;
     }
     
@@ -76,13 +75,13 @@ public class Rename
     /** Rename all variables in an expression, EXCEPT for those named as constant */ 
     public static ExprList renameVars(ExprList exprList, Set<Var> constants)
     {
-    		Function<Node, Node> renamer = new RenameAnyVars(constants, prefix) ;
+    		NodeTransform renamer = new RenameAnyVars(constants, prefix) ;
         return NodeTransformLib.transform(renamer, exprList) ;
     }
         
     public static Expr renameVars(Expr expr, Set<Var> constants)
     {
-    		Function<Node, Node> renamer = new RenameAnyVars(constants, prefix) ;
+    		NodeTransform renamer = new RenameAnyVars(constants, prefix) ;
         return NodeTransformLib.transform(renamer, expr) ;
     }
     
@@ -90,13 +89,13 @@ public class Rename
      * This assumes the op was renamed by VarRename.rename */
     public static Op reverseVarRename(Op op, boolean repeatedly)
     {
-    		Function<Node, Node> renamer = new UnrenameAnyVars(prefix, repeatedly) ;
+    		NodeTransform renamer = new UnrenameAnyVars(prefix, repeatedly) ;
         return NodeTransformLib.transform(renamer, op) ;
     }
     
     // ---- Transforms that do the renaming and unrenaming.
     
-    static class RenameNode implements Function<Node, Node>
+    static class RenameNode implements NodeTransform
     {
         private final Node oldName ;
         private final Node newName ;
@@ -116,7 +115,7 @@ public class Rename
         
     }
     
-    static class RenameAnyVars implements Function<Node, Node>
+    static class RenameAnyVars implements NodeTransform
     {
         private final Map<Var, Var> aliases = new HashMap<>() ;
         private final Collection<Var> constants ;
@@ -151,7 +150,7 @@ public class Rename
     }
 
     /** Reverse a renaming (assuming renaming was done by prefixing variable names) */
-    static class UnrenameAnyVars implements Function<Node, Node>
+    static class UnrenameAnyVars implements NodeTransform
     {
         private final String varPrefix ;
         private final boolean repeatedly ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java
index 0445350..c33839e 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java
@@ -18,15 +18,13 @@
 
 package org.apache.jena.sparql.expr;
 
-import java.util.function.Function;
-
-import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.algebra.Algebra ;
 import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.core.Substitute ;
 import org.apache.jena.sparql.engine.QueryIterator ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
+import org.apache.jena.sparql.graph.NodeTransform;
 import org.apache.jena.sparql.graph.NodeTransformLib ;
 import org.apache.jena.sparql.sse.Tags ;
 import org.apache.jena.sparql.syntax.Element ;
@@ -58,7 +56,7 @@ public class E_Exists extends ExprFunctionOp
     }
 
     @Override
-    public Expr applyNodeTransform(Function<Node, Node> nodeTransform)
+    public Expr applyNodeTransform(NodeTransform nodeTransform)
     {
         Op op2 = NodeTransformLib.transform(nodeTransform, getGraphPattern()) ;
         return new E_Exists(getElement(), op2) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java
index 250d105..e236970 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java
@@ -18,15 +18,13 @@
 
 package org.apache.jena.sparql.expr;
 
-import java.util.function.Function;
-
-import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.algebra.Algebra ;
 import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.core.Substitute ;
 import org.apache.jena.sparql.engine.QueryIterator ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
+import org.apache.jena.sparql.graph.NodeTransform;
 import org.apache.jena.sparql.graph.NodeTransformLib ;
 import org.apache.jena.sparql.sse.Tags ;
 import org.apache.jena.sparql.syntax.Element ;
@@ -59,7 +57,7 @@ public class E_NotExists extends ExprFunctionOp
     }
 
     @Override
-    public Expr applyNodeTransform(Function<Node, Node> nodeTransform)
+    public Expr applyNodeTransform(NodeTransform nodeTransform)
     {
         Op op2 = NodeTransformLib.transform(nodeTransform, getGraphPattern()) ;
         return new E_NotExists(getElement(), op2) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java
index 124a842..3358575 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java
@@ -20,14 +20,12 @@ package org.apache.jena.sparql.expr;
 
 import java.util.Collection ;
 import java.util.Set ;
-import java.util.function.Function;
-
 import javax.xml.datatype.DatatypeConstants ;
 
-import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
+import org.apache.jena.sparql.graph.NodeTransform;
 
 public interface Expr
 {
@@ -64,7 +62,7 @@ public interface Expr
     /**
      * Rewrite, applying a node->node transformation
      */
-    public Expr applyNodeTransform(Function<Node, Node> transform) ;
+    public Expr applyNodeTransform(NodeTransform transform) ;
 
     /** Deep copy */
     public Expr deepCopy() ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java
index 24a2fa5..ed79caf 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java
@@ -19,8 +19,6 @@
 package org.apache.jena.sparql.expr;
 
 import java.util.Objects;
-import java.util.function.Function;
-
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.graph.Node ;
@@ -29,6 +27,7 @@ import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.expr.aggregate.Aggregator ;
 import org.apache.jena.sparql.function.FunctionEnv ;
+import org.apache.jena.sparql.graph.NodeTransform;
 import org.apache.jena.sparql.serializer.SerializationContext ;
 
 /** Group aggregation functions calculated a value during grouping and
@@ -108,7 +107,7 @@ public class ExprAggregator extends ExprNode
     }
     
     @Override
-    public ExprAggregator applyNodeTransform(Function<Node, Node> transform)
+    public ExprAggregator applyNodeTransform(NodeTransform transform)
     {
         // Can't rewrite this to a non-variable.
         Node node = transform.apply(var) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java
index 696393c..8175b12 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java
@@ -18,11 +18,9 @@
 
 package org.apache.jena.sparql.expr;
 
-import java.util.function.Function;
-
-import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
+import org.apache.jena.sparql.graph.NodeTransform;
 
 /** An expression that is constant (does not depend on evaluating a sub expression). */
 
@@ -55,7 +53,7 @@ public abstract class ExprFunction0 extends ExprFunction
     public abstract NodeValue eval(FunctionEnv env)  ;
     
     @Override
-    final public Expr applyNodeTransform(Function<Node, Node> transform)
+    final public Expr applyNodeTransform(NodeTransform transform)
     {
         // Nothing to transform. 
         return copy() ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java
index e55548d..8c91cb3 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java
@@ -18,12 +18,10 @@
 
 package org.apache.jena.sparql.expr;
 
-import java.util.function.Function;
-
 import org.apache.jena.atlas.lib.Lib ;
-import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
+import org.apache.jena.sparql.graph.NodeTransform;
 
 /** A function that has a single argument */
  
@@ -86,7 +84,7 @@ public abstract class ExprFunction1 extends ExprFunction
     }
 
     @Override
-    final public Expr applyNodeTransform(Function<Node, Node> transform)
+    final public Expr applyNodeTransform(NodeTransform transform)
     {
         Expr e = (expr == null ? null : expr.applyNodeTransform(transform)) ;
         return copy(e) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java
index 79a824f..06cb6ea 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java
@@ -18,12 +18,10 @@
 
 package org.apache.jena.sparql.expr;
 
-import java.util.function.Function;
-
 import org.apache.jena.atlas.lib.Lib ;
-import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
+import org.apache.jena.sparql.graph.NodeTransform;
 
 
 /** A function of two arguments */
@@ -97,7 +95,7 @@ public abstract class ExprFunction2 extends ExprFunction
     
 
     @Override
-    final public Expr applyNodeTransform(Function<Node, Node> transform)
+    final public Expr applyNodeTransform(NodeTransform transform)
     {
         Expr e1 = (expr1 == null ? null : expr1.applyNodeTransform(transform)) ;
         Expr e2 = (expr2 == null ? null : expr2.applyNodeTransform(transform)) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java
index f6d9a41..d003ed2 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java
@@ -18,12 +18,10 @@
 
 package org.apache.jena.sparql.expr;
 
-import java.util.function.Function;
-
 import org.apache.jena.atlas.lib.Lib ;
-import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
+import org.apache.jena.sparql.graph.NodeTransform;
 
 
 /** A function of three arguments */
@@ -107,7 +105,7 @@ public abstract class ExprFunction3 extends ExprFunction
     
 
     @Override
-    final public Expr applyNodeTransform(Function<Node, Node> transform)
+    final public Expr applyNodeTransform(NodeTransform transform)
     {
         Expr e1 = (expr1 == null ? null : expr1.applyNodeTransform(transform)) ;
         Expr e2 = (expr2 == null ? null : expr2.applyNodeTransform(transform)) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java
index d2cf110..76300ad 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java
@@ -20,11 +20,9 @@ package org.apache.jena.sparql.expr;
 
 import java.util.ArrayList ;
 import java.util.List ;
-import java.util.function.Function;
-
-import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
+import org.apache.jena.sparql.graph.NodeTransform;
 
 /** A function which takes N arguments (N may be variable e.g. regex) */
  
@@ -82,7 +80,7 @@ public abstract class ExprFunctionN extends ExprFunction
     }
 
     @Override
-    public Expr applyNodeTransform(Function<Node, Node> transform)
+    public Expr applyNodeTransform(NodeTransform transform)
     {
         ExprList newArgs = new ExprList() ;
         for ( int i = 1 ; i <= numArgs() ; i++ )

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java
index d526bba..9e56851 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java
@@ -19,12 +19,10 @@
 package org.apache.jena.sparql.expr;
 
 import java.util.* ;
-import java.util.function.Function;
-
-import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.ExecutionContext ;
 import org.apache.jena.sparql.engine.binding.Binding ;
+import org.apache.jena.sparql.graph.NodeTransform;
 import org.apache.jena.sparql.util.Context ;
 
 public class ExprList implements Iterable<Expr>
@@ -77,7 +75,7 @@ public class ExprList implements Iterable<Expr>
     /**
      * Rewrite, applying a node->node transformation
      */
-    public ExprList applyNodeTransform(Function<Node, Node> transform) {
+    public ExprList applyNodeTransform(NodeTransform transform) {
         ExprList x = new ExprList() ;
         for ( Expr e : expressions)
             x.add(e.applyNodeTransform(transform));

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java
index 87eec7f..9b8c45f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java
@@ -20,14 +20,12 @@ package org.apache.jena.sparql.expr;
 
 import java.util.Collection ;
 import java.util.Set ;
-import java.util.function.Function;
-
-import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.expr.nodevalue.XSDFuncOp ;
 import org.apache.jena.sparql.function.FunctionEnv ;
+import org.apache.jena.sparql.graph.NodeTransform;
 import org.apache.jena.sparql.util.ExprUtils ;
 
 
@@ -86,7 +84,7 @@ public abstract class ExprNode implements Expr
     public abstract Expr copySubstitute(Binding binding) ;
     
     @Override
-    public abstract Expr applyNodeTransform(Function<Node, Node> transform) ;
+    public abstract Expr applyNodeTransform(NodeTransform transform) ;
 
         
     // ---- Default implementations

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java
index a1a589f..df07897 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java
@@ -18,8 +18,6 @@
 
 package org.apache.jena.sparql.expr;
 
-import java.util.function.Function;
-
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.query.Query ;
@@ -27,6 +25,7 @@ import org.apache.jena.sparql.ARQInternalErrorException ;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
+import org.apache.jena.sparql.graph.NodeTransform;
 
 /** An expression that is a variable in an expression. */
  
@@ -76,7 +75,7 @@ public class ExprVar extends ExprNode
     }
     
     @Override
-    public Expr applyNodeTransform(Function<Node, Node> transform)
+    public Expr applyNodeTransform(NodeTransform transform)
     {
         Node node = transform.apply(varNode) ;
         if ( Var.isVar(node))

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
index d960de1..8cff836 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
@@ -51,8 +51,6 @@ import java.util.Calendar ;
 import java.util.Iterator ;
 import java.util.Properties ;
 import java.util.ServiceLoader ;
-import java.util.function.Function;
-
 import javax.xml.datatype.DatatypeConfigurationException ;
 import javax.xml.datatype.DatatypeFactory ;
 import javax.xml.datatype.Duration ;
@@ -76,6 +74,7 @@ import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.expr.nodevalue.* ;
 import org.apache.jena.sparql.function.FunctionEnv ;
 import org.apache.jena.sparql.graph.NodeConst ;
+import org.apache.jena.sparql.graph.NodeTransform;
 import org.apache.jena.sparql.serializer.SerializationContext ;
 import org.apache.jena.sparql.util.* ;
 import org.apache.jena.vocabulary.RDF ;
@@ -468,7 +467,7 @@ public abstract class NodeValue extends ExprNode
     }
     
     @Override
-    public Expr applyNodeTransform(Function<Node, Node> transform)
+    public Expr applyNodeTransform(NodeTransform transform)
     { 
         Node n = asNode() ;
         n = transform.apply(n) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java
index 553202c..a3d6a6f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java
@@ -18,10 +18,9 @@
 
 package org.apache.jena.sparql.expr.aggregate;
 
-import java.util.function.Function;
-
 import org.apache.jena.graph.Node ;
 import org.apache.jena.sparql.expr.ExprList ;
+import org.apache.jena.sparql.graph.NodeTransform;
 import org.apache.jena.sparql.serializer.SerializationContext ;
 
 /** An Aggregator is the processor for the whole result stream.
@@ -47,7 +46,7 @@ public interface Aggregator
     
     public ExprList getExprList() ;
     public Aggregator copy(ExprList exprs) ;
-    public Aggregator copyTransform(Function<Node, Node> transform) ;
+    public Aggregator copyTransform(NodeTransform transform) ;
     
     @Override
     public int hashCode() ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java
index 7fb321b..23c5ccd 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java
@@ -21,8 +21,6 @@ package org.apache.jena.sparql.expr.aggregate;
 import java.util.HashMap ;
 import java.util.Locale ;
 import java.util.Map ;
-import java.util.function.Function;
-
 import org.apache.jena.atlas.io.IndentedLineBuffer ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.sparql.ARQInternalErrorException ;
@@ -30,6 +28,7 @@ import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.expr.Expr ;
 import org.apache.jena.sparql.expr.ExprList ;
 import org.apache.jena.sparql.expr.NodeValue ;
+import org.apache.jena.sparql.graph.NodeTransform;
 import org.apache.jena.sparql.serializer.SerializationContext ;
 import org.apache.jena.sparql.sse.writers.WriterExpr ;
 import org.apache.jena.sparql.util.ExprUtils ;
@@ -86,7 +85,7 @@ public abstract class AggregatorBase implements Aggregator
     public String key() {  return toPrefixString() ; }
     
     @Override
-    public final Aggregator copyTransform(Function<Node, Node> transform)
+    public final Aggregator copyTransform(NodeTransform transform)
     {
         ExprList e = getExprList() ;
         if ( e != null )

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java
index a22da5f..90de6fe 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java
@@ -23,11 +23,7 @@ import java.util.function.Function;
 import org.apache.jena.graph.Node ;
 
 /** Convert nodes to nodes - Vars may need to be translated into Vars. */
-/**
- * Prefer {@link Function<Node, Node>}.
- *
- */
-@Deprecated
+@FunctionalInterface
 public interface NodeTransform extends Function<Node, Node>
 {
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java
index 34ba4fb..ce0c517 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java
@@ -22,8 +22,6 @@ import java.util.ArrayList ;
 import java.util.Iterator ;
 import java.util.List ;
 import java.util.Objects;
-import java.util.function.Function;
-
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -43,14 +41,14 @@ import org.apache.jena.sparql.expr.ExprList ;
 public class NodeTransformLib
 {
     /** Do a node->node conversion of an Op - return original BGP for "no change" */
-    public static Op transform(Function<Node, Node> nodeTransform, Op op)
+    public static Op transform(NodeTransform nodeTransform, Op op)
     {
         Transform opTransform = new NodeTransformOp(nodeTransform) ; 
         return Transformer.transform(opTransform, null, op) ;   // No expr transform - we do it ourselves.
     }
     
     /** Do a node->node conversion of a BGP - return original BGP for "no change" */
-    public static BasicPattern transform(Function<Node, Node> nodeTransform, BasicPattern pattern)  
+    public static BasicPattern transform(NodeTransform nodeTransform, BasicPattern pattern)  
     {
         BasicPattern bgp2 = new BasicPattern() ;
         boolean changed = false ;
@@ -67,7 +65,7 @@ public class NodeTransformLib
     }
 
     /** Do a node->node conversion of a QuadPattern - return original QuadPattern for "no change" */
-    public static QuadPattern transform(Function<Node, Node> nodeTransform, QuadPattern pattern)  
+    public static QuadPattern transform(NodeTransform nodeTransform, QuadPattern pattern)  
     {
         QuadPattern qp2 = new QuadPattern() ;
         boolean changed = false ;
@@ -84,7 +82,7 @@ public class NodeTransformLib
     }
 
     /** Do a node->node conversion of a Triple - return original Triple for "no change" */
-    public static Triple transform(Function<Node, Node> nodeTransform, Triple triple)  
+    public static Triple transform(NodeTransform nodeTransform, Triple triple)  
     {
         boolean change = false ;
         Node s = triple.getSubject() ;
@@ -104,7 +102,7 @@ public class NodeTransformLib
     }
 
     /** Do a node->node conversion of a Quad - return original Quad for "no change" */
-    public static Quad transform(Function<Node, Node> nodeTransform, Quad quad)  
+    public static Quad transform(NodeTransform nodeTransform, Quad quad)  
     {
         boolean change = false ;
         Node s = quad.getSubject() ;
@@ -126,7 +124,7 @@ public class NodeTransformLib
         return new Quad(g,s,p,o) ;
     }
     
-    public static Table transform(Table table, Function<Node, Node> transform) {
+    public static Table transform(Table table, NodeTransform transform) {
         // Non-streaming rewrite 
         List<Var> vars = transformVars(transform, table.getVars()) ;
         Iterator<Binding> iter = table.rows() ; 
@@ -139,7 +137,7 @@ public class NodeTransformLib
         return new TableData(vars, newRows) ;
     }
     
-    public static Binding transform(Binding b, Function<Node, Node> transform) {
+    public static Binding transform(Binding b, NodeTransform transform) {
         BindingMap b2 = BindingFactory.create() ;
         List<Var> vars = Iter.toList(b.vars()) ;
         for ( Var v : vars ) {
@@ -152,7 +150,7 @@ public class NodeTransformLib
 
 
     /** Do a node->node conversion of a List&lt;Quad&gt; - return original List&lt;Quad&gt; for "no change" */
-    public static List<Quad> transformQuads(Function<Node, Node> nodeTransform, List<Quad> quads)
+    public static List<Quad> transformQuads(NodeTransform nodeTransform, List<Quad> quads)
     {
         List<Quad> x = new ArrayList<>() ;
         boolean changed = false ; 
@@ -169,7 +167,7 @@ public class NodeTransformLib
     }
 
     /** Do a node->node conversion of a VarExprList - return original VarExprList for "no change" */
-    public static VarExprList transform(Function<Node, Node> nodeTransform, VarExprList varExprList)
+    public static VarExprList transform(NodeTransform nodeTransform, VarExprList varExprList)
     {
         VarExprList varExprList2 = new VarExprList() ;
         boolean changed = false ;
@@ -188,7 +186,7 @@ public class NodeTransformLib
         return varExprList2 ;
     }
 
-    public static List<Var> transformVars(Function<Node, Node> nodeTransform, List<Var> varList)
+    public static List<Var> transformVars(NodeTransform nodeTransform, List<Var> varList)
     {
         List<Var> varList2 = new ArrayList<>(varList.size()) ;
         boolean changed = false ;
@@ -204,7 +202,7 @@ public class NodeTransformLib
         return varList2 ;
     }
 
-    public static ExprList transform(Function<Node, Node> nodeTransform, ExprList exprList)
+    public static ExprList transform(NodeTransform nodeTransform, ExprList exprList)
     {
           ExprList exprList2 = new ExprList() ;
           boolean changed = false ;
@@ -219,12 +217,12 @@ public class NodeTransformLib
           return exprList2 ;
     }
 
-    public static Expr transform(Function<Node, Node> nodeTransform, Expr expr)
+    public static Expr transform(NodeTransform nodeTransform, Expr expr)
     {
         return expr.applyNodeTransform(nodeTransform) ;
     }
 
-    public static List<SortCondition> transform(Function<Node, Node> nodeTransform, List<SortCondition> conditions)
+    public static List<SortCondition> transform(NodeTransform nodeTransform, List<SortCondition> conditions)
     {
         List<SortCondition> conditions2 = new ArrayList<>() ;
         boolean same = true ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java
index d62d176..c6c60af 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java
@@ -20,8 +20,6 @@ package org.apache.jena.sparql.graph;
 
 import java.util.ArrayList ;
 import java.util.List ;
-import java.util.function.Function;
-
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.query.SortCondition ;
@@ -51,8 +49,8 @@ class NodeTransformOp extends TransformCopy
     // Not:
     //   Conditional (no expression)
     
-    private final Function<Node, Node> transform ;
-    NodeTransformOp(Function<Node, Node> transform)
+    private final NodeTransform transform ;
+    NodeTransformOp(NodeTransform transform)
     {
         this.transform = transform ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java b/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java
index 85ab116..0ae775f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java
@@ -20,14 +20,13 @@ package org.apache.jena.sparql.modify;
 
 import java.util.HashMap ;
 import java.util.Map ;
-import java.util.function.Function;
-
 import org.apache.jena.graph.Node ;
 import org.apache.jena.sparql.ARQConstants ;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.core.VarAlloc ;
+import org.apache.jena.sparql.graph.NodeTransform;
 
-public class NodeTransformBNodesToVariables implements Function<Node, Node>
+public class NodeTransformBNodesToVariables implements NodeTransform
 {
     private VarAlloc varAlloc = new VarAlloc(ARQConstants.allocVarBNodeToVar) ;
     private Map<Node, Var> mapping ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java
index e97a796..46b2ef9 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java
@@ -22,8 +22,6 @@ import static org.apache.jena.sparql.modify.TemplateLib.template ;
 
 import java.util.Iterator ;
 import java.util.List ;
-import java.util.function.Function;
-
 import org.apache.jena.atlas.data.BagFactory ;
 import org.apache.jena.atlas.data.DataBag ;
 import org.apache.jena.atlas.data.ThresholdPolicy ;
@@ -51,6 +49,7 @@ import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.engine.binding.BindingRoot ;
 import org.apache.jena.sparql.graph.GraphFactory ;
 import org.apache.jena.sparql.graph.GraphOps ;
+import org.apache.jena.sparql.graph.NodeTransform;
 import org.apache.jena.sparql.graph.NodeTransformLib ;
 import org.apache.jena.sparql.modify.request.* ;
 import org.apache.jena.sparql.syntax.Element ;
@@ -474,7 +473,7 @@ public class UpdateEngineWorker implements UpdateVisitor
     
     protected static List<Quad> unused_convertBNodesToVariables(List<Quad> quads)
     {
-    		Function<Node, Node> bnodesToVariables = new NodeTransformBNodesToVariables() ;
+    		NodeTransform bnodesToVariables = new NodeTransformBNodesToVariables() ;
         return NodeTransformLib.transformQuads(bnodesToVariables, quads) ;
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java
index d0dfa27..34e793a 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java
@@ -174,9 +174,7 @@ public class ResultSetCompare
         if ( ! compareHeader(rs1, rs2) ) return false ;
         return equivalentByOrder(convert(rs1) , convert(rs2), new BNodeIso(NodeUtils.sameTerm)) ;
     }
-    
-    private static EqualityTest nodeExactTest = new EqualityTestExact() ;
-    
+
     /** compare two result sets for exact equality equivalence.
      * Exact equalitymeans:
      * Each row in rs1 matches the same index row in rs2.
@@ -192,7 +190,7 @@ public class ResultSetCompare
     {
         if ( ! compareHeader(rs1, rs2) ) return false ;
 
-        return equivalentByOrder(convert(rs1) , convert(rs2), nodeExactTest) ;
+        return equivalentByOrder(convert(rs1) , convert(rs2), new EqualityTest(){}) ;
     }
 
     /** Compare two result sets for bNode isomorphism equivalence.
@@ -329,11 +327,4 @@ public class ResultSetCompare
             return false ;
         }
     }
-
-    private static class EqualityTestExact implements EqualityTest {
-        @Override
-        public boolean equal(Node n1, Node n2) {
-            return Objects.equals(n1, n2) ;
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java
index b2a124a..09a4467 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java
@@ -21,6 +21,7 @@ package org.apache.jena.sparql.util;
 import java.util.Collection ;
 import java.util.HashSet ;
 import java.util.Iterator ;
+import java.util.Objects;
 import java.util.Set ;
 
 import org.apache.jena.atlas.lib.StrUtils ;
@@ -44,7 +45,9 @@ import org.apache.jena.util.iterator.WrappedIterator ;
 public class NodeUtils
 {
     public interface EqualityTest {
-        boolean equal(Node n1, Node n2) ;
+        default boolean equal(Node n1, Node n2) {
+			return Objects.equals(n1, n2) ;
+		}
     }
 
     /** IRI to Node */ 

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestResultSetThrift.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestResultSetThrift.java b/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestResultSetThrift.java
index 1d4874a..72e77a2 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestResultSetThrift.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestResultSetThrift.java
@@ -26,7 +26,6 @@ import java.io.InputStream ;
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.junit.BaseTest ;
 import org.apache.jena.atlas.lib.StrUtils ;
-import org.apache.jena.graph.Node ;
 import org.apache.jena.query.ResultSet ;
 import org.apache.jena.query.ResultSetFactory ;
 import org.apache.jena.query.ResultSetRewindable ;
@@ -35,7 +34,6 @@ import org.apache.jena.sparql.resultset.ResultSetCompare ;
 import org.apache.jena.sparql.sse.Item ;
 import org.apache.jena.sparql.sse.SSE ;
 import org.apache.jena.sparql.sse.builders.BuilderResultSet ;
-import org.apache.jena.sparql.util.NodeUtils.EqualityTest ;
 import org.junit.Test ;
 
 public class TestResultSetThrift extends BaseTest {
@@ -64,15 +62,6 @@ public class TestResultSetThrift extends BaseTest {
          , ")"
          ) ;
 
-    
-    static class EqualityTestExact implements EqualityTest {
-        @Override
-        public boolean equal(Node n1, Node n2) {
-            return n1.equals(n2) ;
-        }
-    }
-    private static EqualityTest exactTest = new EqualityTestExact() ;
-    
     @Test public void resultSet_01() { test(rs0) ; }
     
     @Test public void resultSet_02() { 

http://git-wip-us.apache.org/repos/asf/jena/blob/0ef8184f/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java b/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java
index 6f262a5..6690d62 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java
@@ -18,8 +18,6 @@
 package org.apache.jena.permissions.query.rewriter;
 
 import java.util.List;
-import java.util.function.Function;
-
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.permissions.SecurityEvaluator;
@@ -31,6 +29,7 @@ import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.expr.* ;
 import org.apache.jena.sparql.function.FunctionEnv ;
+import org.apache.jena.sparql.graph.NodeTransform;
 
 public class SecuredFunction extends ExprFunctionN
 {
@@ -103,7 +102,7 @@ public class SecuredFunction extends ExprFunctionN
 	}
 
 	@Override
-	public Expr applyNodeTransform( Function<Node, Node> transform )
+	public Expr applyNodeTransform( NodeTransform transform )
 	{
 		return this;
 	}


[30/50] [abbrv] jena git commit: JENA-931: Merge commit 'refs/pull/56/head' of github.com:apache/jena

Posted by cl...@apache.org.
JENA-931: Merge commit 'refs/pull/56/head' of github.com:apache/jena

This closes #56


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/d480bd1f
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/d480bd1f
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/d480bd1f

Branch: refs/heads/add-contract-tests
Commit: d480bd1fc36d4f7a9b286a607dbc66ea4988b64d
Parents: bc438d8 0ef8184
Author: Andy Seaborne <an...@apache.org>
Authored: Wed May 6 19:27:12 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed May 6 19:29:13 2015 +0100

----------------------------------------------------------------------
 .../org/apache/jena/atlas/csv/CSVParser.java    |   9 +-
 .../org/apache/jena/atlas/json/JsonBuilder.java |   4 +-
 .../org/apache/jena/atlas/web/MediaType.java    |   4 +-
 .../org/apache/jena/query/SortCondition.java    |   5 +-
 .../java/org/apache/jena/riot/RDFFormat.java    |   7 +-
 .../org/apache/jena/riot/RDFFormatVariant.java  |   5 +-
 .../org/apache/jena/riot/RDFWriterRegistry.java |  29 ++-
 .../jena/riot/adapters/RDFReaderRIOT_Web.java   |   4 +-
 .../org/apache/jena/riot/lang/JsonLDReader.java |   4 +-
 .../jena/riot/other/BatchedStreamRDF.java       |   6 +-
 .../java/org/apache/jena/riot/other/GLib.java   |  58 +----
 .../org/apache/jena/riot/out/JsonLDWriter.java  |   8 +-
 .../jena/riot/out/SinkQuadBracedOutput.java     |   4 +-
 .../process/normalize/CanonicalizeLiteral.java  |   6 +-
 .../apache/jena/riot/system/PrefixMapBase.java  |  25 +--
 .../org/apache/jena/riot/thrift/BinRDF.java     |  12 +-
 .../java/org/apache/jena/riot/tokens/Token.java |  10 +-
 .../apache/jena/riot/writer/TurtleShell.java    |   5 +-
 .../riot/writer/WriterStreamRDFBatched.java     |   6 +-
 .../jena/riot/writer/WriterStreamRDFBlocks.java |   8 +-
 .../apache/jena/sparql/algebra/op/OpAssign.java |   5 +-
 .../apache/jena/sparql/algebra/op/OpExtend.java |   5 +-
 .../apache/jena/sparql/algebra/op/OpGroup.java  |   6 +-
 .../apache/jena/sparql/algebra/op/OpLabel.java  |   6 +-
 .../jena/sparql/algebra/op/OpProject.java       |   4 +-
 .../optimize/TransformFilterPlacement.java      |   3 +-
 .../jena/sparql/core/DatasetChangesBatched.java |   8 +-
 .../jena/sparql/core/DatasetGraphBase.java      |  12 +-
 .../sparql/core/DatasetGraphCollection.java     |   4 +-
 .../jena/sparql/core/DatasetGraphQuad.java      |  13 +-
 .../org/apache/jena/sparql/core/Prologue.java   |   7 +-
 .../java/org/apache/jena/sparql/core/Quad.java  |   7 +-
 .../apache/jena/sparql/core/QueryCompare.java   |   4 +-
 .../apache/jena/sparql/core/VarExprList.java    |   4 +-
 .../org/apache/jena/sparql/engine/Rename.java   |  19 +-
 .../jena/sparql/engine/binding/BindingBase.java |   4 +-
 .../sparql/engine/iterator/QueryIterGroup.java  |  22 +-
 .../sparql/engine/iterator/QueryIterTopN.java   |   8 +-
 .../ReorderTransformationSubstitution.java      |  12 +-
 .../org/apache/jena/sparql/expr/E_Exists.java   |   2 +-
 .../apache/jena/sparql/expr/E_NotExists.java    |   2 +-
 .../java/org/apache/jena/sparql/expr/Expr.java  |   3 +-
 .../apache/jena/sparql/expr/ExprAggregator.java |  10 +-
 .../apache/jena/sparql/expr/ExprFunction.java   |   4 +-
 .../apache/jena/sparql/expr/ExprFunction0.java  |   2 +-
 .../apache/jena/sparql/expr/ExprFunction1.java  |   2 +-
 .../apache/jena/sparql/expr/ExprFunction2.java  |   2 +-
 .../apache/jena/sparql/expr/ExprFunction3.java  |   2 +-
 .../apache/jena/sparql/expr/ExprFunctionN.java  |   3 +-
 .../org/apache/jena/sparql/expr/ExprList.java   |   3 +-
 .../org/apache/jena/sparql/expr/ExprNode.java   |   3 +-
 .../org/apache/jena/sparql/expr/ExprVar.java    |   4 +-
 .../org/apache/jena/sparql/expr/NodeValue.java  |   5 +-
 .../jena/sparql/expr/aggregate/AggCustom.java   |   6 +-
 .../sparql/expr/aggregate/AggGroupConcat.java   |   5 +-
 .../expr/aggregate/AggGroupConcatDistinct.java  |   5 +-
 .../jena/sparql/expr/aggregate/AggMax.java      |   5 +-
 .../sparql/expr/aggregate/AggMaxDistinct.java   |   5 +-
 .../jena/sparql/expr/aggregate/AggMin.java      |   5 +-
 .../sparql/expr/aggregate/AggMinDistinct.java   |   5 +-
 .../jena/sparql/expr/aggregate/AggSample.java   |   5 +-
 .../jena/sparql/expr/aggregate/Aggregator.java  |   2 +-
 .../sparql/expr/aggregate/AggregatorBase.java   |   3 +-
 .../apache/jena/sparql/graph/NodeTransform.java |   8 +-
 .../jena/sparql/graph/NodeTransformLib.java     |  27 ++-
 .../jena/sparql/graph/NodeTransformOp.java      |  11 +-
 .../modify/NodeTransformBNodesToVariables.java  |   5 +-
 .../apache/jena/sparql/modify/TemplateLib.java  |  31 ++-
 .../jena/sparql/modify/UpdateEngineWorker.java  |   5 +-
 .../jena/sparql/modify/request/UpdateLoad.java  |   5 +-
 .../org/apache/jena/sparql/path/PathLib.java    |   6 +-
 .../jena/sparql/path/eval/PathEngine.java       |  25 +--
 .../jena/sparql/path/eval/PathEvaluator.java    |   6 +-
 .../jena/sparql/pfunction/library/strSplit.java |  12 +-
 .../apache/jena/sparql/resultset/CSVInput.java  |   6 +-
 .../jena/sparql/resultset/ResultSetCompare.java |  25 +--
 .../org/apache/jena/sparql/util/Context.java    |   2 +-
 .../org/apache/jena/sparql/util/ModelUtils.java |  19 +-
 .../org/apache/jena/sparql/util/NodeUtils.java  |   5 +-
 .../jena/sparql/util/graph/GraphList.java       |  12 +-
 .../jena/riot/process/TestNormalization.java    |   4 +-
 .../jena/riot/thrift/TestResultSetThrift.java   |  11 -
 .../jena/riot/thrift/TestStreamRDFThrift.java   |  13 +-
 .../org/apache/jena/atlas/iterator/Action.java  |  10 +-
 .../apache/jena/atlas/iterator/ActionCount.java |   6 +-
 .../jena/atlas/iterator/ActionNothing.java      |  26 ---
 .../org/apache/jena/atlas/iterator/Filter.java  |   9 +-
 .../atlas/iterator/FilterDistinctAdjacent.java  |  11 +-
 .../jena/atlas/iterator/FilterOutNulls.java     |  32 ---
 .../apache/jena/atlas/iterator/FilterStack.java |  16 +-
 .../jena/atlas/iterator/FilterUnique.java       |  12 +-
 .../org/apache/jena/atlas/iterator/Iter.java    | 211 +++++-------------
 .../jena/atlas/iterator/IteratorArray.java      |   7 +
 .../apache/jena/atlas/iterator/MapUtils.java    |  36 ---
 .../apache/jena/atlas/iterator/Transform.java   |   9 +-
 .../apache/jena/atlas/lib/ActionKeyValue.java   |   9 +-
 .../org/apache/jena/atlas/lib/Allocator.java    |  28 ---
 .../java/org/apache/jena/atlas/lib/Cache.java   |   3 +-
 .../org/apache/jena/atlas/lib/CacheSet.java     |   4 +-
 .../org/apache/jena/atlas/lib/Callback.java     |   5 +-
 .../java/org/apache/jena/atlas/lib/Cell.java    |  99 ---------
 .../apache/jena/atlas/lib/CollectionUtils.java  |  27 +--
 .../java/org/apache/jena/atlas/lib/FileOps.java |  18 +-
 .../java/org/apache/jena/atlas/lib/Lib.java     |  14 +-
 .../org/apache/jena/atlas/lib/ListUtils.java    |  66 ++----
 .../org/apache/jena/atlas/lib/MapUtils.java     |  45 ----
 .../org/apache/jena/atlas/lib/MultiMap.java     | 146 -------------
 .../apache/jena/atlas/lib/MultiMapToList.java   |  43 ----
 .../apache/jena/atlas/lib/MultiMapToSet.java    |  47 ----
 .../org/apache/jena/atlas/lib/MultiSet.java     | 218 -------------------
 .../java/org/apache/jena/atlas/lib/Pair.java    |   4 +-
 .../java/org/apache/jena/atlas/lib/Problem.java |  25 ---
 .../apache/jena/atlas/lib/PropertyUtils.java    |   4 +-
 .../org/apache/jena/atlas/lib/SetUtils.java     |  26 +--
 .../org/apache/jena/atlas/lib/StrUtils.java     |  41 +---
 .../java/org/apache/jena/atlas/lib/Tuple.java   |  28 +--
 .../org/apache/jena/atlas/lib/TupleBuilder.java |  50 -----
 .../org/apache/jena/atlas/lib/cache/Cache0.java |   4 +-
 .../org/apache/jena/atlas/lib/cache/Cache1.java |  12 +-
 .../apache/jena/atlas/lib/cache/CacheGuava.java |   9 +-
 .../jena/atlas/lib/cache/CacheSetImpl.java      |  16 +-
 .../jena/atlas/lib/cache/CacheSetSync.java      |   5 +-
 .../jena/atlas/lib/cache/CacheSetWrapper.java   |   5 +-
 .../jena/atlas/lib/cache/CacheSimple.java       |  13 +-
 .../jena/atlas/lib/cache/CacheWrapper.java      |   4 +-
 .../org/apache/jena/atlas/lib/cache/Getter.java |  25 ---
 .../java/org/apache/jena/base/Closeable.java    |  27 ---
 .../apache/jena/atlas/iterator/TestIter.java    | 134 +-----------
 .../java/org/apache/jena/atlas/lib/TS_Lib.java  |   1 -
 .../org/apache/jena/atlas/lib/TestMultiSet.java | 143 ------------
 .../impl/PropertyTableHashMapImpl.java          |  19 +-
 .../java/org/apache/jena/fuseki/FusekiCmd.java  |   5 +-
 .../java/org/apache/jena/fuseki/FusekiLib.java  |   8 +-
 .../jena/fuseki/servlets/ResponseResultSet.java |  16 +-
 .../jena/fuseki/servlets/SPARQL_Protocol.java   |  12 +-
 .../java/org/apache/jena/fuseki/FusekiLib.java  |   8 +-
 .../apache/jena/fuseki/server/DataService.java  |   6 +-
 .../apache/jena/fuseki/server/FusekiServer.java |   5 +-
 .../jena/fuseki/servlets/ResponseResultSet.java |  16 +-
 .../jena/fuseki/servlets/SPARQL_Protocol.java   |  10 +-
 .../query/rewriter/SecuredFunction.java         |   3 +-
 .../org/apache/jena/sdb/compiler/QuadBlock.java |   6 +-
 .../org/apache/jena/sdb/compiler/SDB_QC.java    |  14 +-
 .../apache/jena/sdb/compiler/TransformSDB.java  |   4 +-
 .../org/apache/jena/sdb/core/ScopeEntry.java    |  28 +--
 .../org/apache/jena/sdb/core/ScopeRename.java   |  21 --
 .../sdb/core/sqlnode/GenerateSQLVisitor.java    |   9 +-
 .../org/apache/jena/sdb/print/ActionPrint.java  |   7 +-
 .../java/org/apache/jena/sdb/util/Pair.java     |   5 +-
 .../jena/sdb/test/junit/ParamAllStoreDesc.java  |  11 +-
 .../jena/sdb/test/junit/ParamAllStores.java     |  11 +-
 .../apache/jena/sdb/test/junit/StoreList.java   |  21 +-
 .../spatial/SpatialDocProducerTriples.java      |  19 --
 .../jena/tdb/base/block/BlockMgrCache.java      |   6 +-
 .../jena/tdb/base/block/BlockMgrTracker.java    |  31 +--
 .../org/apache/jena/tdb/base/file/Location.java |   4 +-
 .../org/apache/jena/tdb/base/file/MetaFile.java |   5 +-
 .../tdb/index/bplustree/BPlusTreeRewriter.java  |  10 +-
 .../java/org/apache/jena/tdb/lib/NodeLib.java   |   9 +-
 .../java/org/apache/jena/tdb/lib/TupleLib.java  |  34 +--
 .../apache/jena/tdb/solver/OpExecutorTDB1.java  |  11 +-
 .../java/org/apache/jena/tdb/solver/QC2.java    |   9 +-
 .../org/apache/jena/tdb/solver/SolverLib.java   |  52 ++---
 .../tdb/solver/StageGeneratorDirectTDB.java     |   9 +-
 .../apache/jena/tdb/solver/StageMatchTuple.java |  34 +--
 .../tdb/solver/stats/StatsCollectorBase.java    |   5 +-
 .../apache/jena/tdb/store/DatasetGraphTDB.java  |  13 +-
 .../org/apache/jena/tdb/store/GraphTDB.java     |  19 +-
 .../org/apache/jena/tdb/store/QuadTable.java    |   9 -
 .../org/apache/jena/tdb/store/TripleTable.java  |   9 -
 .../store/bulkloader2/CmdNodeTableBuilder.java  |   5 +-
 .../tdb/store/nodetable/NodeTableNative.java    |  35 +--
 .../tdb/store/tupletable/TupleIndexRecord.java  |  18 +-
 .../java/org/apache/jena/tdb/sys/FileRef.java   |   4 +-
 .../apache/jena/tdb/base/record/RecordLib.java  |   9 +-
 .../apache/jena/tdb/store/TestQuadFilter.java   |  20 +-
 .../jena/query/text/EntityDefinition.java       |   5 +-
 .../assembler/EntityDefinitionAssembler.java    |  19 +-
 178 files changed, 665 insertions(+), 2419 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/d480bd1f/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java
----------------------------------------------------------------------


[10/50] [abbrv] jena git commit: JENA-907: Rename to getXMLLocalName and getXMLNameSpace

Posted by cl...@apache.org.
JENA-907: Rename to getXMLLocalName and getXMLNameSpace


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/103776ed
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/103776ed
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/103776ed

Branch: refs/heads/add-contract-tests
Commit: 103776ed71efb5f6ca963260637274ea3356cea8
Parents: 6d3a74f
Author: Andy Seaborne <an...@apache.org>
Authored: Fri May 1 16:15:01 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri May 1 16:15:01 2015 +0100

----------------------------------------------------------------------
 .../apache/jena/rdfxml/xmloutput/impl/Unparser.java   | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/103776ed/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java
index 2f35939..409bbd9 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java
@@ -901,7 +901,7 @@ class Unparser {
             print(" ");
             printRdfAt("ID");
             print("=");
-            print(quote(getLocalName(r)));
+            print(quote(getXMLLocalName(r)));
             return true;
 
         }
@@ -956,7 +956,7 @@ class Unparser {
             print(" ");
             printRdfAt("ID");
             print("=");
-            print(quote(getLocalName(res)));
+            print(quote(getXMLLocalName(res)));
             haveReified.add(res);
         }
     }
@@ -1180,7 +1180,7 @@ class Unparser {
         }
     }
 
-    private String getNameSpace(Resource r) {
+    private String getXMLNameSpace(Resource r) {
         if (r.isAnon()) {
             logger.error("Internal error - Unparser.getNameSpace; giving up");
             throw new BrokenException("Internal error: getNameSpace(bNode)");
@@ -1204,8 +1204,8 @@ class Unparser {
     }
 
     private boolean isLocalReference(Resource r) {
-        return (!r.isAnon()) && getNameSpace(r).equals(localName + "#")
-                && XMLChar.isValidNCName(getLocalName(r));
+        return (!r.isAnon()) && getXMLNameSpace(r).equals(localName + "#")
+                && XMLChar.isValidNCName(getXMLLocalName(r));
     }
 
     /*
@@ -1217,7 +1217,7 @@ class Unparser {
      * return getSuffix(more) + new Character((char) ('a' + suffixId % 26)); } }
      */
 
-    private String getLocalName(Resource r) {
+    private String getXMLLocalName(Resource r) {
         if (r.isAnon()) {
             logger.error("Internal error - giving up - Unparser.getLocalName");
             throw new BrokenException("Internal error: getLocalName(bNode)");
@@ -1343,7 +1343,7 @@ class Unparser {
 
             if (l.getLanguage().equals("")) {
                 // j.cook.up bug fix
-                if (prettyWriter.isDefaultNamespace(getNameSpace(p)))
+                if (prettyWriter.isDefaultNamespace(getXMLNameSpace(p)))
                     return false;
 
                 String str = l.getString();


[27/50] [abbrv] jena git commit: Emendations in response to comments from @afs

Posted by cl...@apache.org.
Emendations in response to comments from @afs


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/6711901a
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/6711901a
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/6711901a

Branch: refs/heads/add-contract-tests
Commit: 6711901ab0a0d23dfb99794c8daf5dbf6d0a7e37
Parents: a664cb6
Author: ajs6f <aj...@virginia.edu>
Authored: Tue May 5 11:30:54 2015 -0400
Committer: ajs6f <aj...@virginia.edu>
Committed: Tue May 5 11:30:54 2015 -0400

----------------------------------------------------------------------
 .../org/apache/jena/atlas/json/JsonBuilder.java |  4 +--
 .../org/apache/jena/atlas/web/MediaType.java    |  4 +--
 .../org/apache/jena/query/SortCondition.java    |  5 ++--
 .../java/org/apache/jena/riot/RDFFormat.java    |  7 +++--
 .../org/apache/jena/riot/RDFFormatVariant.java  |  5 ++--
 .../org/apache/jena/riot/RDFWriterRegistry.java | 29 ++++++++++----------
 .../jena/riot/adapters/RDFReaderRIOT_Web.java   |  4 +--
 .../org/apache/jena/riot/lang/JsonLDReader.java |  4 +--
 .../jena/riot/other/BatchedStreamRDF.java       |  6 ++--
 .../jena/riot/out/SinkQuadBracedOutput.java     |  4 +--
 .../java/org/apache/jena/riot/tokens/Token.java | 10 +++----
 .../apache/jena/riot/writer/TurtleShell.java    |  5 ++--
 .../riot/writer/WriterStreamRDFBatched.java     |  6 ++--
 .../jena/riot/writer/WriterStreamRDFBlocks.java |  8 ++----
 .../apache/jena/sparql/algebra/op/OpAssign.java |  5 ++--
 .../apache/jena/sparql/algebra/op/OpExtend.java |  5 ++--
 .../apache/jena/sparql/algebra/op/OpGroup.java  |  6 ++--
 .../apache/jena/sparql/algebra/op/OpLabel.java  |  6 ++--
 .../jena/sparql/algebra/op/OpProject.java       |  4 +--
 .../optimize/TransformFilterPlacement.java      |  3 +-
 .../jena/sparql/core/DatasetChangesBatched.java |  8 +++---
 .../sparql/core/DatasetGraphCollection.java     |  4 +--
 .../org/apache/jena/sparql/core/Prologue.java   |  7 +++--
 .../java/org/apache/jena/sparql/core/Quad.java  |  7 +++--
 .../apache/jena/sparql/core/QueryCompare.java   |  4 ++-
 .../apache/jena/sparql/core/VarExprList.java    |  4 +--
 .../jena/sparql/engine/binding/BindingBase.java |  4 +--
 .../apache/jena/sparql/expr/ExprAggregator.java |  7 ++---
 .../apache/jena/sparql/expr/ExprFunction.java   |  4 +--
 .../jena/sparql/expr/aggregate/AggCustom.java   |  6 ++--
 .../sparql/expr/aggregate/AggGroupConcat.java   |  5 ++--
 .../expr/aggregate/AggGroupConcatDistinct.java  |  5 ++--
 .../jena/sparql/expr/aggregate/AggMax.java      |  5 ++--
 .../sparql/expr/aggregate/AggMaxDistinct.java   |  5 ++--
 .../jena/sparql/expr/aggregate/AggMin.java      |  5 ++--
 .../sparql/expr/aggregate/AggMinDistinct.java   |  5 ++--
 .../jena/sparql/expr/aggregate/AggSample.java   |  5 ++--
 .../jena/sparql/graph/NodeTransformLib.java     |  7 ++---
 .../jena/sparql/modify/request/UpdateLoad.java  |  5 ++--
 .../org/apache/jena/sparql/path/PathLib.java    |  4 +--
 .../jena/sparql/resultset/ResultSetCompare.java |  4 +--
 .../org/apache/jena/atlas/iterator/Action.java  |  1 +
 .../org/apache/jena/atlas/iterator/Filter.java  |  1 +
 .../atlas/iterator/FilterDistinctAdjacent.java  |  5 ++--
 .../jena/atlas/iterator/IteratorArray.java      |  2 +-
 .../apache/jena/atlas/iterator/Transform.java   |  1 +
 .../org/apache/jena/atlas/lib/Closeable.java    |  2 +-
 .../java/org/apache/jena/atlas/lib/Lib.java     |  1 +
 .../java/org/apache/jena/atlas/lib/Pair.java    |  4 ++-
 .../org/apache/jena/atlas/lib/cache/Cache1.java |  4 +--
 .../java/org/apache/jena/fuseki/FusekiCmd.java  |  5 ++--
 .../jena/fuseki/servlets/ResponseResultSet.java | 16 +++++------
 .../apache/jena/fuseki/server/FusekiServer.java |  5 ++--
 .../jena/fuseki/servlets/ResponseResultSet.java | 16 +++++------
 .../java/org/apache/jena/sdb/util/Pair.java     |  5 ++--
 .../org/apache/jena/tdb/base/file/Location.java |  4 +--
 .../org/apache/jena/tdb/base/file/MetaFile.java |  5 ++--
 .../store/bulkloader2/CmdNodeTableBuilder.java  |  5 ++--
 .../java/org/apache/jena/tdb/sys/FileRef.java   |  4 +--
 59 files changed, 175 insertions(+), 151 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/atlas/json/JsonBuilder.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/json/JsonBuilder.java b/jena-arq/src/main/java/org/apache/jena/atlas/json/JsonBuilder.java
index feb3072..50336f1 100644
--- a/jena-arq/src/main/java/org/apache/jena/atlas/json/JsonBuilder.java
+++ b/jena-arq/src/main/java/org/apache/jena/atlas/json/JsonBuilder.java
@@ -21,8 +21,8 @@ package org.apache.jena.atlas.json ;
 import java.math.BigDecimal ;
 import java.util.ArrayDeque ;
 import java.util.Deque ;
+import java.util.Objects;
 
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.atlas.logging.Log ;
 
 /* Builder pattern for JSON.
@@ -90,7 +90,7 @@ public class JsonBuilder {
         if ( stack.isEmpty() )
             builtValue = value ;
         String startMarker = markers.pop(); 
-        if ( ! Lib.equal(startMarker, finishMarker) )
+        if ( ! Objects.equals(startMarker, finishMarker) )
             throw new JsonException("JSON build error : start/finish alignment error: start="+startMarker+"  finish="+finishMarker) ;
         return this ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/atlas/web/MediaType.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/web/MediaType.java b/jena-arq/src/main/java/org/apache/jena/atlas/web/MediaType.java
index b911250..3cafb3e 100644
--- a/jena-arq/src/main/java/org/apache/jena/atlas/web/MediaType.java
+++ b/jena-arq/src/main/java/org/apache/jena/atlas/web/MediaType.java
@@ -18,11 +18,11 @@
 
 package org.apache.jena.atlas.web ;
 
-import static org.apache.jena.atlas.lib.Lib.equal ;
 import static org.apache.jena.atlas.lib.Lib.hashCodeObject ;
 
 import java.util.LinkedHashMap ;
 import java.util.Map ;
+import java.util.Objects;
 
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
@@ -172,7 +172,7 @@ public class MediaType {
         if ( !(object instanceof MediaType) )
             return false ;
         MediaType mt = (MediaType)object ;
-        return equal(type, mt.type) && equal(subType, mt.subType) && equal(params, mt.params) ;
+        return Objects.equals(type, mt.type) && Objects.equals(subType, mt.subType) && Objects.equals(params, mt.params) ;
     }
 
     public String getParameter(String name) {

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/query/SortCondition.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/query/SortCondition.java b/jena-arq/src/main/java/org/apache/jena/query/SortCondition.java
index 424960e..021f70d 100644
--- a/jena-arq/src/main/java/org/apache/jena/query/SortCondition.java
+++ b/jena-arq/src/main/java/org/apache/jena/query/SortCondition.java
@@ -18,8 +18,9 @@
 
 package org.apache.jena.query;
 
+import java.util.Objects;
+
 import org.apache.jena.atlas.io.IndentedWriter ;
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.sparql.core.Var ;
@@ -125,7 +126,7 @@ public class SortCondition extends PrintSerializableBase
         if ( sc.getDirection() != this.getDirection() )
             return false ;
         
-        if ( ! Lib.equal(this.getExpression(), sc.getExpression()) )
+        if ( ! Objects.equals(this.getExpression(), sc.getExpression()) )
             return false ;
         
 //        if ( ! Utils.eq(this.getVariable(), sc.getVariable()) )

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/riot/RDFFormat.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFFormat.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFFormat.java
index ae99481..5297ca7 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFFormat.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFFormat.java
@@ -19,7 +19,8 @@
 package org.apache.jena.riot ;
 
 import static org.apache.jena.riot.RDFLanguages.THRIFT ;
-import org.apache.jena.atlas.lib.Lib ;
+
+import java.util.Objects;
 
 /** Constants for writable formats */
 public class RDFFormat {
@@ -144,9 +145,9 @@ public class RDFFormat {
         if ( getClass() != obj.getClass() )
             return false ;
         RDFFormat other = (RDFFormat)obj ;
-        if ( !Lib.equal(lang, other.lang) )
+        if ( !Objects.equals(lang, other.lang) )
             return false ;
-        if ( !Lib.equal(variant, other.variant) )
+        if ( !Objects.equals(variant, other.variant) )
             return false ;
         return true ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/riot/RDFFormatVariant.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFFormatVariant.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFFormatVariant.java
index 2bda6f4..24ae2fa 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFFormatVariant.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFFormatVariant.java
@@ -18,7 +18,8 @@
 
 package org.apache.jena.riot ;
 
-import org.apache.jena.atlas.lib.Lib ;
+import java.util.Objects;
+
 import org.apache.jena.sparql.util.Symbol ;
 
 /** Modifier for an RDF Format */
@@ -46,7 +47,7 @@ public class RDFFormatVariant {
         if ( getClass() != obj.getClass() )
             return false ;
         RDFFormatVariant other = (RDFFormatVariant)obj ;
-        if ( !Lib.equal(symbol, other.symbol) )
+        if ( !Objects.equals(symbol, other.symbol) )
             return false ;
         return true ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterRegistry.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterRegistry.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterRegistry.java
index dd238d1..aeb37fc 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterRegistry.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterRegistry.java
@@ -20,7 +20,6 @@ package org.apache.jena.riot;
 
 import java.util.* ;
 
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.riot.out.CharSpace ;
 import org.apache.jena.riot.out.JsonLDWriter ;
 import org.apache.jena.riot.system.RiotLib ;
@@ -48,23 +47,23 @@ public class RDFWriterRegistry
         {
             // Built-ins
             
-            if ( Lib.equal(RDFFormat.TURTLE_PRETTY, serialization) )
+            if ( Objects.equals(RDFFormat.TURTLE_PRETTY, serialization) )
                 return new TurtleWriter() ;
-            if ( Lib.equal(RDFFormat.TURTLE_BLOCKS, serialization) )
+            if ( Objects.equals(RDFFormat.TURTLE_BLOCKS, serialization) )
                 return new TurtleWriterBlocks() ;
-            if ( Lib.equal(RDFFormat.TURTLE_FLAT, serialization) )
+            if ( Objects.equals(RDFFormat.TURTLE_FLAT, serialization) )
                 return new TurtleWriterFlat() ;
             
-            if ( Lib.equal(RDFFormat.NTRIPLES_UTF8, serialization) )
+            if ( Objects.equals(RDFFormat.NTRIPLES_UTF8, serialization) )
                 return new NTriplesWriter() ;
-            if ( Lib.equal(RDFFormat.NTRIPLES_ASCII, serialization) )
+            if ( Objects.equals(RDFFormat.NTRIPLES_ASCII, serialization) )
                 return new NTriplesWriter(CharSpace.ASCII) ;
             
-            if ( Lib.equal(RDFFormat.RDFJSON, serialization) )
+            if ( Objects.equals(RDFFormat.RDFJSON, serialization) )
                 return new RDFJSONWriter() ;
-            if ( Lib.equal(RDFFormat.RDFXML_PRETTY, serialization) )
+            if ( Objects.equals(RDFFormat.RDFXML_PRETTY, serialization) )
                 return new RDFXMLAbbrevWriter() ;
-            if ( Lib.equal(RDFFormat.RDFXML_PLAIN, serialization) )
+            if ( Objects.equals(RDFFormat.RDFXML_PLAIN, serialization) )
                 return new RDFXMLPlainWriter() ;
             
             WriterDatasetRIOT dsw = wdsfactory.create(serialization) ;
@@ -78,17 +77,17 @@ public class RDFWriterRegistry
         @Override
         public WriterDatasetRIOT create(RDFFormat serialization)
         {
-            if ( Lib.equal(RDFFormat.TRIG_PRETTY, serialization) )
+            if ( Objects.equals(RDFFormat.TRIG_PRETTY, serialization) )
                 return new TriGWriter() ;
-            if ( Lib.equal(RDFFormat.TRIG_BLOCKS, serialization) )
+            if ( Objects.equals(RDFFormat.TRIG_BLOCKS, serialization) )
                 return new TriGWriterBlocks() ;
-            if ( Lib.equal(RDFFormat.TRIG_FLAT, serialization) )
+            if ( Objects.equals(RDFFormat.TRIG_FLAT, serialization) )
                 return new TriGWriterFlat() ;
-            if ( Lib.equal(RDFFormat.NQUADS_UTF8, serialization) )
+            if ( Objects.equals(RDFFormat.NQUADS_UTF8, serialization) )
                 return new NQuadsWriter() ;
-            if ( Lib.equal(RDFFormat.NQUADS_ASCII, serialization) )
+            if ( Objects.equals(RDFFormat.NQUADS_ASCII, serialization) )
                 return new NQuadsWriter(CharSpace.ASCII) ;
-            if ( Lib.equal(RDFFormat.RDFNULL, serialization) )
+            if ( Objects.equals(RDFFormat.RDFNULL, serialization) )
                 return NullWriter.factory.create(RDFFormat.RDFNULL) ;
             return null ;
     }} ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_Web.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_Web.java b/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_Web.java
index a324222..6d58bf7 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_Web.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_Web.java
@@ -20,8 +20,8 @@ package org.apache.jena.riot.adapters;
 
 import java.io.InputStream ;
 import java.io.Reader ;
+import java.util.Objects;
 
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.atlas.web.TypedInputStream ;
 import org.apache.jena.rdf.model.Model ;
 import org.apache.jena.riot.Lang ;
@@ -74,7 +74,7 @@ public class RDFReaderRIOT_Web extends RDFReaderRIOT
         // Reading a URL, no hint language provided.
         // Use the URL structure as the hint.
         Lang lang = null ;
-        if ( ! Lib.equal(contentType, WebContent.contentTypeTextPlain) )
+        if ( ! Objects.equals(contentType, WebContent.contentTypeTextPlain) )
             lang = RDFLanguages.contentTypeToLang(contentType) ; 
         
         if ( lang == null )

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java
index f381123..e7b758e 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java
@@ -23,11 +23,11 @@ import java.io.InputStream ;
 import java.io.Reader ;
 import java.util.List ;
 import java.util.Map ;
+import java.util.Objects;
 import java.util.Map.Entry;
 
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.lib.InternalErrorException ;
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.atlas.web.ContentType ;
 import org.apache.jena.datatypes.RDFDatatype ;
 import org.apache.jena.datatypes.xsd.XSDDatatype ;
@@ -155,7 +155,7 @@ public class JsonLDReader implements ReaderRIOT
         else if ( type.equals(LITERAL) ) {
             String lang = (String)map.get("language") ;
             String datatype = (String)map.get("datatype") ;
-            if ( Lib.equal(xsdString, datatype) )
+            if ( Objects.equals(xsdString, datatype) )
                 // In RDF 1.1, simple literals and xsd:string are the same.
                 // During migration, we prefer simple literals to xsd:strings. 
                 datatype = null ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/riot/other/BatchedStreamRDF.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/other/BatchedStreamRDF.java b/jena-arq/src/main/java/org/apache/jena/riot/other/BatchedStreamRDF.java
index e39209c..d3eedd5 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/other/BatchedStreamRDF.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/other/BatchedStreamRDF.java
@@ -20,8 +20,8 @@ package org.apache.jena.riot.other;
 
 import java.util.ArrayList ;
 import java.util.List ;
+import java.util.Objects;
 
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.riot.system.StreamRDF ;
@@ -64,7 +64,7 @@ public class BatchedStreamRDF implements StreamRDF
 //        Node p = triple.getPredicate() ;
 //        Node o = triple.getObject() ;
 
-        if ( ! Lib.equal(s, currentSubject) )
+        if ( ! Objects.equals(s, currentSubject) )
         {
             if ( currentSubject != null )
                 finishBatchTriple(currentSubject) ;
@@ -110,7 +110,7 @@ public class BatchedStreamRDF implements StreamRDF
 //            Node p = triple.getPredicate() ;
 //            Node o = triple.getObject() ;
         
-        if ( ! Lib.equal(g, currentGraph) || ! Lib.equal(s,  currentSubject) )
+        if ( ! Objects.equals(g, currentGraph) || ! Objects.equals(s,  currentSubject) )
         {
             if ( currentSubject != null )
                 finishBatchQuad(currentGraph, currentSubject) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/riot/out/SinkQuadBracedOutput.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/out/SinkQuadBracedOutput.java b/jena-arq/src/main/java/org/apache/jena/riot/out/SinkQuadBracedOutput.java
index 0e0c8af..0841c50 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/out/SinkQuadBracedOutput.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/out/SinkQuadBracedOutput.java
@@ -19,10 +19,10 @@
 package org.apache.jena.riot.out ;
 
 import java.io.OutputStream ;
+import java.util.Objects;
 
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.atlas.lib.Closeable ;
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.atlas.lib.Sink ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -83,7 +83,7 @@ public class SinkQuadBracedOutput implements Sink<Quad>, Closeable
             graphName = null ;
         }
 
-        if ( !Lib.equal(currentGraph, graphName) ) {
+        if ( !Objects.equals(currentGraph, graphName) ) {
             if ( null != currentGraph ) {
                 out.decIndent(BLOCK_INDENT) ;
                 out.println("}") ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java b/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java
index 4f39429..7046545 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java
@@ -27,7 +27,6 @@ import static org.apache.jena.atlas.lib.Chars.CH_RBRACE ;
 import static org.apache.jena.atlas.lib.Chars.CH_RBRACKET ;
 import static org.apache.jena.atlas.lib.Chars.CH_RPAREN ;
 import static org.apache.jena.atlas.lib.Chars.CH_SEMICOLON ;
-import static org.apache.jena.atlas.lib.Lib.equal ;
 import static org.apache.jena.atlas.lib.Lib.hashCodeObject ;
 import static org.apache.jena.riot.tokens.TokenType.BNODE ;
 import static org.apache.jena.riot.tokens.TokenType.DECIMAL ;
@@ -41,6 +40,7 @@ import static org.apache.jena.riot.tokens.TokenType.VAR ;
 
 import java.util.ArrayList ;
 import java.util.List ;
+import java.util.Objects;
 
 import org.apache.jena.atlas.io.PeekReader ;
 import org.apache.jena.atlas.iterator.Iter ;
@@ -498,10 +498,10 @@ public final class Token
     {
         if ( ! ( other instanceof Token ) ) return false ;
         Token t = (Token)other ;
-        return  equal(tokenType, t.tokenType) &&
-                equal(tokenImage, t.tokenImage) &&
-                equal(tokenImage2, t.tokenImage2) &&
-                equal(cntrlCode, t.cntrlCode) ;
+        return  Objects.equals(tokenType, t.tokenType) &&
+        		Objects.equals(tokenImage, t.tokenImage) &&
+        		Objects.equals(tokenImage2, t.tokenImage2) &&
+        		Objects.equals(cntrlCode, t.cntrlCode) ;
     }
     
     public static Token tokenForChar(char character)

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleShell.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleShell.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleShell.java
index e3acd10..9b1bb21 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleShell.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleShell.java
@@ -38,7 +38,6 @@ import java.util.* ;
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.lib.InternalErrorException ;
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.atlas.lib.Pair ;
 import org.apache.jena.atlas.lib.SetUtils ;
 import org.apache.jena.graph.Graph ;
@@ -299,14 +298,14 @@ public abstract class TurtleShell {
                 if ( ! isDefaultGraph(graphName) )
                     return false ;
             } else { 
-                if ( ! Lib.equal(gn, graphName) )
+                if ( ! Objects.equals(gn, graphName) )
                     // Not both same named graph
                     return false ;
             }
             // Check rest of iterator.
             for ( ; iter.hasNext() ; ) {
                 Quad q2 = iter.next() ;
-                if ( ! Lib.equal(gn, q2.getGraph()) )
+                if ( ! Objects.equals(gn, q2.getGraph()) )
                     return false ;    
             }
             return true ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBatched.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBatched.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBatched.java
index fb16cee..87573d5 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBatched.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBatched.java
@@ -22,9 +22,9 @@ import java.io.OutputStream ;
 import java.io.Writer ;
 import java.util.ArrayList ;
 import java.util.List ;
+import java.util.Objects;
 
 import org.apache.jena.atlas.io.IndentedWriter ;
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.sparql.core.Quad ;
@@ -79,7 +79,7 @@ abstract class WriterStreamRDFBatched extends WriterStreamRDFBase
         Node g = quad.getGraph() ;
         Node s = quad.getSubject() ;
 
-        if ( !Lib.equal(g, currentGraph) || !Lib.equal(s, currentSubject) ) {
+        if ( !Objects.equals(g, currentGraph) || !Objects.equals(s, currentSubject) ) {
             if ( currentSubject != null ) {
                 if ( currentGraph == null )
                     finishBatchTriples(currentSubject) ;
@@ -96,7 +96,7 @@ abstract class WriterStreamRDFBatched extends WriterStreamRDFBase
     @Override
     protected final void print(Triple triple) {
         Node s = triple.getSubject() ;
-        if ( !Lib.equal(s, currentSubject) ) {
+        if ( !Objects.equals(s, currentSubject) ) {
             if ( currentSubject != null )
                 finishBatchTriples(currentSubject) ;
             startBatchTriple(s) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java
index 6173bdb..64b4297 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java
@@ -18,15 +18,13 @@
 
 package org.apache.jena.riot.writer;
 
-import static org.apache.jena.atlas.lib.Lib.equal ;
-
 import java.io.OutputStream ;
 import java.io.Writer ;
 import java.util.Collection ;
 import java.util.List ;
+import java.util.Objects;
 
 import org.apache.jena.atlas.io.IndentedWriter ;
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.riot.other.GLib ;
@@ -85,7 +83,7 @@ public class WriterStreamRDFBlocks extends WriterStreamRDFBatched
     protected void printBatchQuads(Node g, Node s, List<Quad> quads) {
         if ( g == null )
             g = Quad.defaultGraphNodeGenerated ;
-        if ( Lib.equal(g, lastGraph) ) {
+        if ( Objects.equals(g, lastGraph) ) {
             // Same graph, different subject.
             out.println(" .") ;
             out.println() ;
@@ -195,7 +193,7 @@ public class WriterStreamRDFBlocks extends WriterStreamRDFBatched
             return ;
 
         // End of graph
-        if ( !equal(lastGraph, g) ) {
+        if ( !Objects.equals(lastGraph, g) ) {
             boolean NL_END = (dftGraph(g) ? NL_GDFT_END : NL_GNMD_END) ;
 
             if ( lastSubject != null )

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpAssign.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpAssign.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpAssign.java
index 290af42..8eafaca 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpAssign.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpAssign.java
@@ -18,7 +18,8 @@
 
 package org.apache.jena.sparql.algebra.op ;
 
-import org.apache.jena.atlas.lib.Lib ;
+import java.util.Objects;
+
 import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.algebra.OpVisitor ;
 import org.apache.jena.sparql.algebra.Transform ;
@@ -108,7 +109,7 @@ public class OpAssign extends OpExtendAssign {
             return false ;
         OpAssign assign = (OpAssign)other ;
 
-        if ( !Lib.equal(assignments, assign.assignments) )
+        if ( !Objects.equals(assignments, assign.assignments) )
             return false ;
         return getSubOp().equalTo(assign.getSubOp(), labelMap) ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpExtend.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpExtend.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpExtend.java
index 32c4daf..88c1cbe 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpExtend.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpExtend.java
@@ -18,7 +18,8 @@
 
 package org.apache.jena.sparql.algebra.op ;
 
-import org.apache.jena.atlas.lib.Lib ;
+import java.util.Objects;
+
 import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.algebra.OpVisitor ;
 import org.apache.jena.sparql.algebra.Transform ;
@@ -112,7 +113,7 @@ public class OpExtend extends OpExtendAssign {
             return false ;
         OpExtend assign = (OpExtend)other ;
 
-        if ( !Lib.equal(assignments, assign.assignments) )
+        if ( !Objects.equals(assignments, assign.assignments) )
             return false ;
         return getSubOp().equalTo(assign.getSubOp(), labelMap) ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpGroup.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpGroup.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpGroup.java
index b80c0f1..73b2a9c 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpGroup.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpGroup.java
@@ -19,8 +19,8 @@
 package org.apache.jena.sparql.algebra.op;
 
 import java.util.List ;
+import java.util.Objects;
 
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.algebra.OpVisitor ;
 import org.apache.jena.sparql.algebra.Transform ;
@@ -71,9 +71,9 @@ public class OpGroup extends Op1
     {
         if ( ! (other instanceof OpGroup) ) return false ;
         OpGroup opGroup = (OpGroup)other ;
-        if ( ! Lib.equal(groupVars, opGroup.groupVars) ) 
+        if ( ! Objects.equals(groupVars, opGroup.groupVars) ) 
             return false ;
-        if ( ! Lib.equal(aggregators, opGroup.aggregators) )
+        if ( ! Objects.equals(aggregators, opGroup.aggregators) )
             return false ;
             
         return getSubOp().equalTo(opGroup.getSubOp(), labelMap) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpLabel.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpLabel.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpLabel.java
index 2d9449f..d2f4764 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpLabel.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpLabel.java
@@ -18,6 +18,8 @@
 
 package org.apache.jena.sparql.algebra.op;
 
+import java.util.Objects;
+
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.algebra.OpVisitor ;
@@ -51,10 +53,10 @@ public class OpLabel extends Op1
         if ( !(other instanceof OpLabel) )
             return false ;
         OpLabel opLabel = (OpLabel)other ;
-        if ( !Lib.equal(object, opLabel.object) )
+        if ( !Objects.equals(object, opLabel.object) )
             return false ;
 
-        return Lib.equal(getSubOp(), opLabel.getSubOp()) ;
+        return Objects.equals(getSubOp(), opLabel.getSubOp()) ;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpProject.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpProject.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpProject.java
index 978a48f..8b8eda2 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpProject.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpProject.java
@@ -20,8 +20,8 @@ package org.apache.jena.sparql.algebra.op;
 
 import java.util.ArrayList ;
 import java.util.List ;
+import java.util.Objects;
 
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.algebra.OpVisitor ;
 import org.apache.jena.sparql.algebra.Transform ;
@@ -63,7 +63,7 @@ public class OpProject extends OpModifier
     {
         if ( ! (other instanceof OpProject) ) return false ;
         OpProject opProject = (OpProject)other ;
-        if ( ! Lib.equal(vars, opProject.vars ) )
+        if ( ! Objects.equals(vars, opProject.vars ) )
             return false ;
         return getSubOp().equalTo(opProject.getSubOp(), labelMap) ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformFilterPlacement.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformFilterPlacement.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformFilterPlacement.java
index 9dff996..fb90412 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformFilterPlacement.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformFilterPlacement.java
@@ -21,6 +21,7 @@ package org.apache.jena.sparql.algebra.optimize ;
 import java.util.Collection ;
 import java.util.Iterator ;
 import java.util.List ;
+import java.util.Objects;
 import java.util.Set ;
 
 import org.apache.jena.atlas.lib.CollectionUtils ;
@@ -68,7 +69,7 @@ public class TransformFilterPlacement extends TransformCopy {
             if ( obj == null ) return false ;
             if ( getClass() != obj.getClass() ) return false ;
             Placement other = (Placement)obj ;
-            return Lib.equal(op, other.op) && Lib.equal(unplaced, other.unplaced) ;
+            return Objects.equals(op, other.op) && Objects.equals(unplaced, other.unplaced) ;
         }
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetChangesBatched.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetChangesBatched.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetChangesBatched.java
index af1ad1f..5e71afd 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetChangesBatched.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetChangesBatched.java
@@ -20,8 +20,8 @@ package org.apache.jena.sparql.core;
 
 import java.util.ArrayList ;
 import java.util.List ;
+import java.util.Objects;
 
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.graph.Node ;
 
 /** Collect a stream of DatasetChanges into batches.
@@ -69,9 +69,9 @@ public abstract class DatasetChangesBatched implements DatasetChanges
                 startBatch() ;
             // Drop and through and include in the current batch.
         }
-        else if ( ! Lib.equal(currentAction, qaction) ||
-                  ! Lib.equal(currentGraph, g) ||
-                  ! Lib.equal(currentSubject, s) )
+        else if ( ! Objects.equals(currentAction, qaction) ||
+                  ! Objects.equals(currentGraph, g) ||
+                  ! Objects.equals(currentSubject, s) )
         {
             finishBatch() ;
             startBatch() ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphCollection.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphCollection.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphCollection.java
index b48769b..7b66d64 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphCollection.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphCollection.java
@@ -19,10 +19,10 @@
 package org.apache.jena.sparql.core;
 
 import java.util.Iterator ;
+import java.util.Objects;
 
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.iterator.IteratorConcat;
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.shared.JenaException ;
@@ -100,7 +100,7 @@ public abstract class DatasetGraphCollection extends DatasetGraphBaseFind
     
     protected Graph fetchGraph(Node gn)
     {
-        if ( Quad.isDefaultGraph(gn) || Lib.equal(gn,Quad.tripleInQuad)) // Not preferred style
+        if ( Quad.isDefaultGraph(gn) || Objects.equals(gn,Quad.tripleInQuad)) // Not preferred style
             return getDefaultGraph() ;
         else
             return getGraph(gn) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/core/Prologue.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/Prologue.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/Prologue.java
index c2a839b..ca4ff73 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/Prologue.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/Prologue.java
@@ -18,7 +18,8 @@
 
 package org.apache.jena.sparql.core;
 
-import org.apache.jena.atlas.lib.Lib ;
+import java.util.Objects;
+
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.riot.system.IRIResolver ;
 import org.apache.jena.shared.PrefixMapping ;
@@ -137,7 +138,7 @@ public class Prologue
             // Removal may involve regeneration of the reverse mapping
             // so only do if needed.   
             String oldExpansion = prefixMap.getNsPrefixURI(prefix) ;
-            if ( Lib.equal(oldExpansion, expansion) )
+            if ( Objects.equals(oldExpansion, expansion) )
                 return ;
             if ( oldExpansion != null )
                 prefixMap.removeNsPrefix(prefix) ;
@@ -199,7 +200,7 @@ public class Prologue
         // Prologue are mutable and superclasses so .equals is left as the default.
         String base1 = explicitlySetBaseURI() ? getBaseURI() : null ;
         String base2 = other.explicitlySetBaseURI() ? other.getBaseURI() : null ;        
-        if (! Lib.equal(base1,  base2) )
+        if (! Objects.equals(base1,  base2) )
             return false ;
         if ( getPrefixMapping() == null && other.getPrefixMapping() == null )
             return true ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/core/Quad.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/Quad.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/Quad.java
index 8720fc6..f21266d 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/Quad.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/Quad.java
@@ -18,7 +18,8 @@
 
 package org.apache.jena.sparql.core;
 
-import static org.apache.jena.atlas.lib.Lib.equal ;
+import java.util.Objects;
+
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
 import org.apache.jena.graph.Triple ;
@@ -138,7 +139,7 @@ public class Quad
     public boolean isUnionGraph()           { return isUnionGraph(graph) ; }
 
     /** Is it really a triple? */  
-    public boolean isTriple()               { return equal(graph, tripleInQuad) ; } 
+    public boolean isTriple()               { return Objects.equals(graph, tripleInQuad) ; } 
 
     /** Is this quad a legal data quad (legal data triple, IRI for graph) */   
     public boolean isLegalAsData()
@@ -190,7 +191,7 @@ public class Quad
             return false ;
         Quad quad = (Quad)other ;
         
-        if ( ! equal(graph, quad.graph) ) return false ;
+        if ( ! Objects.equals(graph, quad.graph) ) return false ;
         if ( ! subject.equals(quad.subject) ) return false ;
         if ( ! predicate.equals(quad.predicate) ) return false ;
         if ( ! object.equals(quad.object) ) return false ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/core/QueryCompare.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/QueryCompare.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/QueryCompare.java
index b64209e..a2c2ea9 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/QueryCompare.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/QueryCompare.java
@@ -18,6 +18,8 @@
 
 package org.apache.jena.sparql.core ;
 
+import java.util.Objects;
+
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.query.Query ;
 import org.apache.jena.query.QueryVisitor ;
@@ -171,7 +173,7 @@ public class QueryCompare implements QueryVisitor
     
     private void check(String msg, Object obj1, Object obj2)
     {
-        check(msg, Lib.equal(obj1,obj2)) ;
+        check(msg, Objects.equals(obj1,obj2)) ;
     }
     
     private void check(String msg, boolean b)

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/core/VarExprList.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/VarExprList.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/VarExprList.java
index a45e154..3e641f7 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/VarExprList.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/VarExprList.java
@@ -22,8 +22,8 @@ import java.util.ArrayList ;
 import java.util.HashMap ;
 import java.util.List ;
 import java.util.Map ;
+import java.util.Objects;
 
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.sparql.ARQInternalErrorException ;
 import org.apache.jena.sparql.engine.binding.Binding ;
@@ -141,7 +141,7 @@ public class VarExprList
         if ( ! ( other instanceof VarExprList ) )
             return false ;
         VarExprList x = (VarExprList)other ;
-        return Lib.equal(vars, x.vars) && Lib.equal(exprs, x.exprs) ;
+        return Objects.equals(vars, x.vars) && Objects.equals(exprs, x.exprs) ;
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingBase.java
index e16e786..cc024b8 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingBase.java
@@ -19,9 +19,9 @@
 package org.apache.jena.sparql.engine.binding;
 
 import java.util.Iterator ;
+import java.util.Objects;
 
 import org.apache.jena.atlas.iterator.IteratorConcat ;
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.util.FmtUtils ;
@@ -219,7 +219,7 @@ abstract public class BindingBase implements Binding
             Var var = iter1.next() ; 
             Node node1 = bind1.get(var) ;
             Node node2 = bind2.get(var) ;
-            if ( ! Lib.equal(node1, node2) )
+            if ( ! Objects.equals(node1, node2) )
                 return false ;
         }
         

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java
index 5f1794e..24a2fa5 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java
@@ -18,8 +18,7 @@
 
 package org.apache.jena.sparql.expr;
 
-import static org.apache.jena.atlas.lib.Lib.equal ;
-
+import java.util.Objects;
 import java.util.function.Function;
 
 import org.apache.jena.atlas.lib.Lib ;
@@ -80,9 +79,9 @@ public class ExprAggregator extends ExprNode
         if ( ! ( other instanceof ExprAggregator ) )
             return false ;
         ExprAggregator agg = (ExprAggregator)other ;
-        if ( ! equal(var, agg.var) )
+        if ( ! Objects.equals(var, agg.var) )
             return false ;
-        return equal(aggregator, agg.aggregator) ;
+        return Objects.equals(aggregator, agg.aggregator) ;
     }
 
     // Ensure no confusion - in an old design, an ExprAggregator was a subclass of ExprVar. 

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction.java
index a9a8f59..f568d89 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction.java
@@ -20,8 +20,8 @@ package org.apache.jena.sparql.expr;
 
 import java.util.ArrayList ;
 import java.util.List ;
+import java.util.Objects;
 
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.sparql.serializer.SerializationContext ;
 
 /** A function in the expression hierarchy.
@@ -98,7 +98,7 @@ public abstract class ExprFunction extends ExprNode
         {
             Expr a1 = this.getArg(i) ;
             Expr a2 = ex.getArg(i) ;
-            if ( ! Lib.equal(a1, a2) )
+            if ( ! Objects.equals(a1, a2) )
                 return false ;
         }
         return true ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCustom.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCustom.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCustom.java
index cc09301..db3c0f9 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCustom.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCustom.java
@@ -19,9 +19,9 @@
 package org.apache.jena.sparql.expr.aggregate;
 
 import java.util.Locale ;
+import java.util.Objects;
 
 import org.apache.jena.atlas.io.IndentedLineBuffer ;
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.query.QueryExecException ;
 import org.apache.jena.sparql.engine.binding.Binding ;
@@ -142,9 +142,9 @@ public class AggCustom extends AggregatorBase
             return false ;
         AggCustom agg = (AggCustom)other ;
         return 
-            Lib.equal(this.iri, agg.iri) &&
+        		Objects.equals(this.iri, agg.iri) &&
             this.isDistinct == agg.isDistinct &&
-            Lib.equal(this.getExprList(), agg.getExprList()) ;
+            	Objects.equals(this.getExprList(), agg.getExprList()) ;
     } 
 
     public static Accumulator createAccNull() { return new  AccCustom() ; }

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcat.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcat.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcat.java
index 9d076d1..700b18c 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcat.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcat.java
@@ -18,8 +18,9 @@
 
 package org.apache.jena.sparql.expr.aggregate;
 
+import java.util.Objects;
+
 import org.apache.jena.atlas.io.IndentedLineBuffer ;
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.atlas.lib.StrUtils ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.sparql.engine.binding.Binding ;
@@ -129,7 +130,7 @@ public class AggGroupConcat extends AggregatorBase
         if ( ! ( other instanceof AggGroupConcat ) )
             return false ;
         AggGroupConcat agg = (AggGroupConcat)other ;
-        return Lib.equal(agg.getSeparator(),getSeparator()) && agg.getExpr().equals(getExpr()) ;
+        return Objects.equals(agg.getSeparator(),getSeparator()) && agg.getExpr().equals(getExpr()) ;
     }
 
     // ---- Accumulator

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcatDistinct.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcatDistinct.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcatDistinct.java
index 9f99594..ad3b422 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcatDistinct.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcatDistinct.java
@@ -18,7 +18,8 @@
 
 package org.apache.jena.sparql.expr.aggregate;
 
-import org.apache.jena.atlas.lib.Lib ;
+import java.util.Objects;
+
 import org.apache.jena.graph.Node ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.expr.Expr ;
@@ -80,7 +81,7 @@ public class AggGroupConcatDistinct extends AggregatorBase
         if ( ! ( other instanceof AggGroupConcatDistinct ) )
             return false ;
         AggGroupConcatDistinct agg = (AggGroupConcatDistinct)other ;
-        return Lib.equal(agg.getSeparator(),getSeparator()) && agg.getExpr().equals(getExpr()) ;
+        return Objects.equals(agg.getSeparator(),getSeparator()) && agg.getExpr().equals(getExpr()) ;
     }
     
     // ---- Accumulator

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMax.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMax.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMax.java
index acf31a5..539a1ab 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMax.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMax.java
@@ -18,7 +18,8 @@
 
 package org.apache.jena.sparql.expr.aggregate;
 
-import org.apache.jena.atlas.lib.Lib ;
+import java.util.Objects;
+
 import org.apache.jena.sparql.expr.Expr ;
 import org.apache.jena.sparql.expr.ExprList ;
 
@@ -39,6 +40,6 @@ public class AggMax extends AggMaxBase
         if ( ! ( other instanceof AggMax ) )
             return false ;
         AggMax agg = (AggMax)other ;
-        return Lib.equal(exprList, agg.exprList) ;
+        return Objects.equals(exprList, agg.exprList) ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMaxDistinct.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMaxDistinct.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMaxDistinct.java
index f3c576a..c994c2c 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMaxDistinct.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMaxDistinct.java
@@ -18,7 +18,8 @@
 
 package org.apache.jena.sparql.expr.aggregate;
 
-import org.apache.jena.atlas.lib.Lib ;
+import java.util.Objects;
+
 import org.apache.jena.sparql.expr.Expr ;
 import org.apache.jena.sparql.expr.ExprList ;
 
@@ -39,7 +40,7 @@ public class AggMaxDistinct extends AggMaxBase
         if ( ! ( other instanceof AggMaxDistinct ) )
             return false ;
         AggMaxDistinct agg = (AggMaxDistinct)other ;
-        return Lib.equal(exprList, agg.exprList) ;
+        return Objects.equals(exprList, agg.exprList) ;
     }
 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMin.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMin.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMin.java
index f5a567f..79e634a 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMin.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMin.java
@@ -18,7 +18,8 @@
 
 package org.apache.jena.sparql.expr.aggregate;
 
-import org.apache.jena.atlas.lib.Lib ;
+import java.util.Objects;
+
 import org.apache.jena.sparql.expr.Expr ;
 import org.apache.jena.sparql.expr.ExprList ;
 
@@ -39,6 +40,6 @@ public class AggMin extends AggMinBase
         if ( ! ( other instanceof AggMin ) )
             return false ;
         AggMin agg = (AggMin)other ;
-        return Lib.equal(exprList, agg.exprList) ;
+        return Objects.equals(exprList, agg.exprList) ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMinDistinct.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMinDistinct.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMinDistinct.java
index c7c388c..be774d7 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMinDistinct.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMinDistinct.java
@@ -18,7 +18,8 @@
 
 package org.apache.jena.sparql.expr.aggregate;
 
-import org.apache.jena.atlas.lib.Lib ;
+import java.util.Objects;
+
 import org.apache.jena.sparql.expr.Expr ;
 import org.apache.jena.sparql.expr.ExprList ;
 
@@ -38,6 +39,6 @@ public class AggMinDistinct extends AggMinBase
         if ( ! ( other instanceof AggMinDistinct ) )
             return false ;
         AggMinDistinct agg = (AggMinDistinct)other ;
-        return Lib.equal(exprList, agg.exprList) ;
+        return Objects.equals(exprList, agg.exprList) ;
     } 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSample.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSample.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSample.java
index 912ff39..c153af0 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSample.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSample.java
@@ -18,7 +18,8 @@
 
 package org.apache.jena.sparql.expr.aggregate;
 
-import org.apache.jena.atlas.lib.Lib ;
+import java.util.Objects;
+
 import org.apache.jena.graph.Node ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.expr.Expr ;
@@ -52,7 +53,7 @@ public class AggSample extends AggregatorBase
         if ( ! ( other instanceof AggSample ) )
             return false ;
         AggSample agg = (AggSample)other ;
-        return Lib.equal(this.exprList, agg.exprList) ;
+        return Objects.equals(this.exprList, agg.exprList) ;
     } 
 
     // ---- Accumulator

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java
index 94314c2..34ba4fb 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java
@@ -21,6 +21,7 @@ package org.apache.jena.sparql.graph;
 import java.util.ArrayList ;
 import java.util.Iterator ;
 import java.util.List ;
+import java.util.Objects;
 import java.util.function.Function;
 
 import org.apache.jena.atlas.iterator.Iter ;
@@ -39,8 +40,6 @@ import org.apache.jena.sparql.engine.binding.BindingMap ;
 import org.apache.jena.sparql.expr.Expr ;
 import org.apache.jena.sparql.expr.ExprList ;
 
-import static org.apache.jena.atlas.lib.Lib.equal ;
-
 public class NodeTransformLib
 {
     /** Do a node->node conversion of an Op - return original BGP for "no change" */
@@ -180,7 +179,7 @@ public class NodeTransformLib
             Var v2 = (Var)nodeTransform.apply(v) ;
             Expr expr2 = ( expr != null ) ? transform(nodeTransform, expr) : null ;
             
-            if ( ! equal(v, v2) || ! equal(expr, expr2) )
+            if ( ! Objects.equals(v, v2) || ! Objects.equals(expr, expr2) )
                 changed = true ;
             varExprList2.add(v2, expr2) ;
         }
@@ -197,7 +196,7 @@ public class NodeTransformLib
         {
             Var v2 = (Var)nodeTransform.apply(v) ;
             varList2.add(v2) ;
-            if ( !equal(v, v2) )
+            if ( !Objects.equals(v, v2) )
                 changed = true ;
         }
         if ( ! changed )

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/modify/request/UpdateLoad.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/modify/request/UpdateLoad.java b/jena-arq/src/main/java/org/apache/jena/sparql/modify/request/UpdateLoad.java
index fc0a1dd..efb605b 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/request/UpdateLoad.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/request/UpdateLoad.java
@@ -18,7 +18,8 @@
 
 package org.apache.jena.sparql.modify.request;
 
-import org.apache.jena.atlas.lib.Lib ;
+import java.util.Objects;
+
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
 import org.apache.jena.sparql.util.Iso ;
@@ -73,7 +74,7 @@ public class UpdateLoad extends Update
         UpdateLoad other = (UpdateLoad)obj ;
         return 
             silent == other.silent &&
-            Lib.equal(source, other.source) &&
+            	Objects.equals(source, other.source) &&
             Iso.nodeIso(dest, other.dest, isoMap) ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java b/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
index c2db208..465f359 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
@@ -21,10 +21,10 @@ package org.apache.jena.sparql.path;
 import java.util.ArrayList ;
 import java.util.Iterator ;
 import java.util.List ;
+import java.util.Objects;
 import java.util.function.Predicate;
 
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.sparql.ARQInternalErrorException ;
@@ -247,7 +247,7 @@ public class PathLib
         if ( ! subject.isConcrete() || !object.isConcrete() )
             throw new ARQInternalErrorException("Non concrete node for existsPath evaluation") ;
         Iterator<Node> iter = PathEval.eval(graph, subject, path, execCxt.getContext()) ;
-        Predicate<Node> filter = node -> Lib.equal(node,  object); 
+        Predicate<Node> filter = node -> Objects.equals(node,  object); 
         // See if we got to the node we're interested in finishing at.
         iter = Iter.filter(iter, filter) ;
         long x = Iter.count(iter) ; 

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java
index 99413a5..d0dfa27 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java
@@ -19,8 +19,8 @@
 package org.apache.jena.sparql.resultset;
 
 import java.util.* ;
+
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.query.* ;
 import org.apache.jena.rdf.model.Model ;
@@ -333,7 +333,7 @@ public class ResultSetCompare
     private static class EqualityTestExact implements EqualityTest {
         @Override
         public boolean equal(Node n1, Node n2) {
-            return Lib.equal(n1, n2) ;
+            return Objects.equals(n1, n2) ;
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Action.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Action.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Action.java
index d9c14ab..73756dc 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Action.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Action.java
@@ -21,6 +21,7 @@ package org.apache.jena.atlas.iterator;
 import java.util.function.Consumer;
 
 /**
+ * @deprecated
  * Prefer {@link Consumer}
  */
 @Deprecated

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Filter.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Filter.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Filter.java
index 689f5bc..8545eab 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Filter.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Filter.java
@@ -21,6 +21,7 @@ package org.apache.jena.atlas.iterator;
 import java.util.function.Predicate;
 
 /**
+ * @deprecated
  * Prefer {@link Predicate}.
  */
 @FunctionalInterface

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterDistinctAdjacent.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterDistinctAdjacent.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterDistinctAdjacent.java
index e2bc4b4..f4c0ddf 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterDistinctAdjacent.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterDistinctAdjacent.java
@@ -18,10 +18,9 @@
 
 package org.apache.jena.atlas.iterator;
 
+import java.util.Objects;
 import java.util.function.Predicate;
 
-import org.apache.jena.atlas.lib.Lib ;
-
 public class FilterDistinctAdjacent<T> implements Predicate<T>
 {
     private boolean isSet = false ;
@@ -30,7 +29,7 @@ public class FilterDistinctAdjacent<T> implements Predicate<T>
     @Override
     public boolean test(T item)
     {
-        if ( isSet && Lib.equal(last, item) )
+        if ( isSet && Objects.equals(last, item) )
             return false ;
         last = item ;
         isSet = true ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java
index 70a8f26..2c97ca7 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java
@@ -21,10 +21,10 @@ package org.apache.jena.atlas.iterator;
 import java.util.Arrays;
 import java.util.Iterator ;
 import java.util.NoSuchElementException ;
-import java.util.Spliterator;
 
 /** Iterator over a Java base array */
 /**
+ * @deprecated
  * Prefer {@link Arrays#asList(Object...)} with {@link Iterable#iterator()} or
  * {@link Arrays#spliterator(Object[])} or {@link Arrays#stream(Object[])}
  */

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Transform.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Transform.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Transform.java
index 67fc3af..2a070ab 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Transform.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Transform.java
@@ -21,6 +21,7 @@ package org.apache.jena.atlas.iterator;
 import java.util.function.Function;
 
 /**
+ * @deprecated
  * Prefer {@link Function}.
  */
 @Deprecated

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-base/src/main/java/org/apache/jena/atlas/lib/Closeable.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Closeable.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Closeable.java
index e2f6dfd..2b6002a 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Closeable.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Closeable.java
@@ -21,7 +21,7 @@ package org.apache.jena.atlas.lib;
 /** Close this object.
  *  This form does not allow Exceptions (it does allow RuntimeExceptions).  
  */
-public interface Closeable extends java.io.Closeable
+public interface Closeable
 {
     public void close() ;
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java
index a866d59..181fe88 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java
@@ -37,6 +37,7 @@ public class Lib
     }
     
     /** Return true if obj1 and obj are both null or are .equals, else return false 
+     * @deprecated
      * Prefer {@link Objects#equal(Object, Object)}
      */
     @Deprecated

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-base/src/main/java/org/apache/jena/atlas/lib/Pair.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Pair.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Pair.java
index 4f3b055..b472f3d 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Pair.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Pair.java
@@ -21,6 +21,8 @@ package org.apache.jena.atlas.lib;
 import static org.apache.jena.atlas.lib.Lib.hashCodeObject ;
 import static org.apache.jena.atlas.lib.StrUtils.str ;
 
+import java.util.Objects;
+
 public class Pair<A, B>
 {
     public static <L, R> Pair<L,R> create(L x, R y) { return new Pair<>(x,y) ; }
@@ -54,7 +56,7 @@ public class Pair<A, B>
         
         if( ! ( other instanceof Pair<?,?> ) ) return false ;
         Pair<?,?> p2 = (Pair<?,?>)other ;
-        return  Lib.equal(car(), p2.car()) && Lib.equal(cdr(), p2.cdr()) ;
+        return Objects.equals(car(), p2.car()) && Objects.equals(cdr(), p2.cdr()) ;
     }
     
     @Override 

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache1.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache1.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache1.java
index ffa6e0a..31436b1 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache1.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache1.java
@@ -19,12 +19,12 @@
 package org.apache.jena.atlas.lib.cache;
 
 import java.util.Iterator ;
+import java.util.Objects;
 import java.util.concurrent.Callable ;
 import java.util.function.BiConsumer;
 
 import org.apache.jena.atlas.iterator.SingletonIterator ;
 import org.apache.jena.atlas.lib.Cache ;
-import org.apache.jena.atlas.lib.Lib ;
 
 /** A one-slot cache.*/
 public class Cache1<K, V> implements Cache<K,V>
@@ -85,7 +85,7 @@ public class Cache1<K, V> implements Cache<K,V>
     @Override
     public void put(K key, V thing)
     {
-        if ( Lib.equal(cacheKey, key) && Lib.equal(cacheValue, thing) )
+        if ( Objects.equals(cacheKey, key) && Objects.equals(cacheValue, thing) )
             // No change.
             return ;
 

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiCmd.java
----------------------------------------------------------------------
diff --git a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiCmd.java b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiCmd.java
index 2ee8248..995c5d7 100644
--- a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiCmd.java
+++ b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiCmd.java
@@ -23,10 +23,10 @@ import static org.apache.jena.fuseki.Fuseki.serverLog ;
 import java.io.File ;
 import java.io.InputStream ;
 import java.util.List ;
+import java.util.Objects;
 
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.lib.FileOps ;
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.atlas.lib.StrUtils ;
 import org.apache.jena.atlas.logging.LogCtl ;
 import org.apache.jena.fuseki.mgt.ManagementServer ;
@@ -47,6 +47,7 @@ import org.apache.jena.tdb.sys.Names ;
 import org.apache.jena.tdb.transaction.TransactionManager ;
 import org.eclipse.jetty.server.Server ;
 import org.slf4j.Logger ;
+
 import arq.cmd.ArgDecl ;
 import arq.cmd.CmdException ;
 import arq.cmdline.CmdARQ ;
@@ -289,7 +290,7 @@ public class FusekiCmd extends CmdARQ
         {
             String dir = getValue(argTDB) ;
             
-            if ( Lib.equal(dir, Names.memName) ) {
+            if ( Objects.equals(dir, Names.memName) ) {
                 log.info("TDB dataset: in-memory") ;
             } else {
                 if ( ! FileOps.exists(dir) )

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
----------------------------------------------------------------------
diff --git a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
index 4278426..35daf70 100644
--- a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
+++ b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
@@ -19,7 +19,6 @@
 package org.apache.jena.fuseki.servlets;
 
 import static java.lang.String.format ;
-import static org.apache.jena.atlas.lib.Lib.equal ;
 import static org.apache.jena.fuseki.servlets.ServletBase.errorBadRequest ;
 import static org.apache.jena.fuseki.servlets.ServletBase.errorOccurred ;
 import static org.apache.jena.fuseki.servlets.ServletBase.log ;
@@ -27,6 +26,7 @@ import static org.apache.jena.fuseki.servlets.ServletBase.log ;
 import java.io.IOException ;
 import java.util.HashMap ;
 import java.util.Map ;
+import java.util.Objects;
 
 import javax.servlet.ServletOutputStream ;
 import javax.servlet.http.HttpServletRequest ;
@@ -129,7 +129,7 @@ public class ResponseResultSet
              
         // Stylesheet - change to application/xml.
         final String stylesheetURL = ResponseOps.paramStylesheet(request) ;
-        if ( stylesheetURL != null && equal(serializationType,WebContent.contentTypeResultsXML) )
+        if ( stylesheetURL != null && Objects.equals(serializationType,WebContent.contentTypeResultsXML) )
             contentType = WebContent.contentTypeXML ;
         
         // Force to text/plain?
@@ -139,17 +139,17 @@ public class ResponseResultSet
 
         // Better : dispatch on MediaType
         // Fuseki2 uses the SPARQL parser/write registry.
-        if ( equal(serializationType, WebContent.contentTypeResultsXML) )
+        if ( Objects.equals(serializationType, WebContent.contentTypeResultsXML) )
             sparqlXMLOutput(action, contentType, resultSet, stylesheetURL, booleanResult) ;
-        else if ( equal(serializationType, WebContent.contentTypeResultsJSON) )
+        else if ( Objects.equals(serializationType, WebContent.contentTypeResultsJSON) )
             jsonOutput(action, contentType, resultSet, booleanResult) ;
-        else if ( equal(serializationType, WebContent.contentTypeTextPlain) )
+        else if ( Objects.equals(serializationType, WebContent.contentTypeTextPlain) )
             textOutput(action, contentType, resultSet, qPrologue, booleanResult) ;
-        else if ( equal(serializationType, WebContent.contentTypeTextCSV) ) 
+        else if ( Objects.equals(serializationType, WebContent.contentTypeTextCSV) ) 
             csvOutput(action, contentType, resultSet, booleanResult) ;
-        else if (equal(serializationType, WebContent.contentTypeTextTSV) )
+        else if (Objects.equals(serializationType, WebContent.contentTypeTextTSV) )
             tsvOutput(action, contentType, resultSet, booleanResult) ;
-        else if (equal(serializationType, WebContent.contentTypeResultsThrift) )
+        else if (Objects.equals(serializationType, WebContent.contentTypeResultsThrift) )
             thriftOutput(action, contentType, resultSet, booleanResult) ;
         else
             errorBadRequest("Can't determine output serialization: "+serializationType) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiServer.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiServer.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiServer.java
index 70a02e0..f6488c5 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiServer.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiServer.java
@@ -29,13 +29,14 @@ import java.util.ArrayList ;
 import java.util.HashMap ;
 import java.util.List ;
 import java.util.Map ;
+import java.util.Objects;
 
 import arq.cmd.CmdException ;
+
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.lib.DS ;
 import org.apache.jena.atlas.lib.FileOps ;
 import org.apache.jena.atlas.lib.InternalErrorException ;
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.fuseki.Fuseki ;
 import org.apache.jena.fuseki.FusekiConfigException ;
 import org.apache.jena.fuseki.build.Builder ;
@@ -256,7 +257,7 @@ public class FusekiServer
             Fuseki.configLog.info("Template file: " + params.templateFile) ;
             String dir = params.params.get(Template.DIR) ;
             if ( dir != null ) {
-                if ( Lib.equal(dir, Names.memName) ) {
+                if ( Objects.equals(dir, Names.memName) ) {
                     Fuseki.configLog.info("TDB dataset: in-memory") ;
                 } else {
                     if ( !FileOps.exists(dir) )

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
index 2ab529b..e22ab13 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
@@ -19,7 +19,6 @@
 package org.apache.jena.fuseki.servlets;
 
 import static java.lang.String.format ;
-import static org.apache.jena.atlas.lib.Lib.equal ;
 import static org.apache.jena.riot.WebContent.charsetUTF8 ;
 import static org.apache.jena.riot.WebContent.contentTypeRDFXML ;
 import static org.apache.jena.riot.WebContent.contentTypeResultsJSON ;
@@ -33,6 +32,7 @@ import static org.apache.jena.riot.WebContent.contentTypeXML ;
 import java.io.IOException ;
 import java.util.HashMap ;
 import java.util.Map ;
+import java.util.Objects;
 
 import javax.servlet.ServletOutputStream ;
 import javax.servlet.http.HttpServletRequest ;
@@ -134,7 +134,7 @@ public class ResponseResultSet
              
         // Stylesheet - change to application/xml.
         final String stylesheetURL = ResponseOps.paramStylesheet(request) ;
-        if ( stylesheetURL != null && equal(serializationType,contentTypeResultsXML) )
+        if ( stylesheetURL != null && Objects.equals(serializationType,contentTypeResultsXML) )
             contentType = contentTypeXML ;
         
         // Force to text/plain?
@@ -143,17 +143,17 @@ public class ResponseResultSet
             contentType = contentTypeTextPlain ;
 
         // Better : dispatch on MediaType
-        if ( equal(serializationType, contentTypeResultsXML) )
+        if ( Objects.equals(serializationType, contentTypeResultsXML) )
             sparqlXMLOutput(action, contentType, resultSet, stylesheetURL, booleanResult) ;
-        else if ( equal(serializationType, contentTypeResultsJSON) )
+        else if ( Objects.equals(serializationType, contentTypeResultsJSON) )
             jsonOutput(action, contentType, resultSet, booleanResult) ;
-        else if ( equal(serializationType, contentTypeTextPlain) )
+        else if ( Objects.equals(serializationType, contentTypeTextPlain) )
             textOutput(action, contentType, resultSet, qPrologue, booleanResult) ;
-        else if ( equal(serializationType, contentTypeTextCSV) ) 
+        else if ( Objects.equals(serializationType, contentTypeTextCSV) ) 
             csvOutput(action, contentType, resultSet, booleanResult) ;
-        else if (equal(serializationType, contentTypeTextTSV) )
+        else if (Objects.equals(serializationType, contentTypeTextTSV) )
             tsvOutput(action, contentType, resultSet, booleanResult) ;
-        else if (equal(serializationType, WebContent.contentTypeResultsThrift) )
+        else if (Objects.equals(serializationType, WebContent.contentTypeResultsThrift) )
             thriftOutput(action, contentType, resultSet, booleanResult) ;
         else
             ServletOps.errorBadRequest("Can't determine output serialization: "+serializationType) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-sdb/src/main/java/org/apache/jena/sdb/util/Pair.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/util/Pair.java b/jena-sdb/src/main/java/org/apache/jena/sdb/util/Pair.java
index 5228e98..acd5abe 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/util/Pair.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/util/Pair.java
@@ -20,7 +20,8 @@ package org.apache.jena.sdb.util;
 
 import static org.apache.jena.atlas.lib.Lib.hashCodeObject ;
 import static org.apache.jena.atlas.lib.StrUtils.str ;
-import org.apache.jena.atlas.lib.Lib ;
+
+import java.util.Objects;
 
 public class Pair<A, B>
 {
@@ -53,7 +54,7 @@ public class Pair<A, B>
         
         if( ! ( other instanceof Pair<?,?> ) ) return false ;
         Pair<?,?> p2 = (Pair<?,?>)other ;
-        return Lib.equal(car(), p2.car()) && Lib.equal(cdr(), p2.cdr()) ;
+        return Objects.equals(car(), p2.car()) && Objects.equals(cdr(), p2.cdr()) ;
     }
     
     @Override 

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-tdb/src/main/java/org/apache/jena/tdb/base/file/Location.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/base/file/Location.java b/jena-tdb/src/main/java/org/apache/jena/tdb/base/file/Location.java
index 780ec0d..a012a5c 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/base/file/Location.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/base/file/Location.java
@@ -20,8 +20,8 @@ package org.apache.jena.tdb.base.file ;
 
 import java.io.File ;
 import java.io.IOException ;
+import java.util.Objects;
 
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.tdb.sys.Names ;
 
 /**
@@ -256,7 +256,7 @@ public class Location {
         if ( isMemUnique )
             return false ;
 
-        return Lib.equal(pathname, other.pathname) ;
+        return Objects.equals(pathname, other.pathname) ;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-tdb/src/main/java/org/apache/jena/tdb/base/file/MetaFile.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/base/file/MetaFile.java b/jena-tdb/src/main/java/org/apache/jena/tdb/base/file/MetaFile.java
index 66d979a..4062f01 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/base/file/MetaFile.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/base/file/MetaFile.java
@@ -25,6 +25,7 @@ import java.io.IOException ;
 import java.io.InputStream ;
 import java.io.PrintStream ;
 import java.util.Comparator ;
+import java.util.Objects;
 import java.util.Properties ;
 import java.util.SortedSet ;
 import java.util.TreeSet ;
@@ -160,7 +161,7 @@ public class MetaFile implements Sync, Closeable
     /** Test whether a property has a value.  Null tests equal to not present. */
     public boolean propertyEquals(String key, String value)
     {
-        return Lib.equal(getProperty(key), value) ;
+        return Objects.equals(getProperty(key), value) ;
     }
 
     /** Set property if not already set. */
@@ -201,7 +202,7 @@ public class MetaFile implements Sync, Closeable
     {
         String value = getProperty(key) ;
         
-        if ( ! Lib.equal(value, value) )
+        if ( ! Objects.equals(value, value) )
             inconsistent(key, value, expected) ;
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-tdb/src/main/java/org/apache/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java b/jena-tdb/src/main/java/org/apache/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java
index 3196182..9662c03 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java
@@ -23,12 +23,12 @@ import java.io.FileOutputStream ;
 import java.io.OutputStream ;
 import java.util.Arrays ;
 import java.util.List ;
+import java.util.Objects;
 
 import org.apache.jena.atlas.AtlasException ;
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.lib.DateTimeUtils ;
 import org.apache.jena.atlas.lib.FileOps ;
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.atlas.logging.LogCtl ;
 import org.apache.jena.atlas.logging.ProgressLogger ;
 import org.apache.jena.graph.Node ;
@@ -50,6 +50,7 @@ import org.apache.jena.tdb.store.nodetable.NodeTable ;
 import org.apache.jena.tdb.store.nodetupletable.NodeTupleTable ;
 import org.apache.jena.tdb.sys.Names ;
 import org.slf4j.Logger ;
+
 import tdb.cmdline.CmdTDB ;
 import arq.cmd.ArgDecl ;
 import arq.cmd.CmdException ;
@@ -107,7 +108,7 @@ public class CmdNodeTableBuilder extends CmdGeneral
         if ( dataFileQuads == null )
             dataFileQuads = location.getPath("quads", "tmp") ;
         
-        if ( Lib.equal(dataFileTriples, dataFileQuads) )
+        if ( Objects.equals(dataFileTriples, dataFileQuads) )
             cmdError("Triples and Quads work files are the same") ;
         
         if ( super.contains(argNoStats) )

http://git-wip-us.apache.org/repos/asf/jena/blob/6711901a/jena-tdb/src/main/java/org/apache/jena/tdb/sys/FileRef.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/sys/FileRef.java b/jena-tdb/src/main/java/org/apache/jena/tdb/sys/FileRef.java
index c16180c..af70467 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/sys/FileRef.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/sys/FileRef.java
@@ -20,10 +20,10 @@ package org.apache.jena.tdb.sys;
 
 import java.util.HashMap ;
 import java.util.Map ;
+import java.util.Objects;
 import java.util.TreeMap ;
 
 import org.apache.jena.atlas.lib.FileOps ;
-import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.atlas.lib.Tuple ;
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.tdb.TDBException ;
@@ -182,7 +182,7 @@ public class FileRef
         if ( id != other.id )
             return false ;
         // Should not be needed.
-        if ( ! Lib.equal(filename, other.filename) ) return false ;
+        if ( ! Objects.equals(filename, other.filename) ) return false ;
         return true ;
     }
 }


[29/50] [abbrv] jena git commit: JENA-934: Skip a prefix of the empty string - not allowed in JSON-LD

Posted by cl...@apache.org.
JENA-934: Skip a prefix of the empty string - not allowed in JSON-LD


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/bc438d84
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/bc438d84
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/bc438d84

Branch: refs/heads/add-contract-tests
Commit: bc438d84975c7d2d480ba29d30678f467030166f
Parents: 2257377
Author: Andy Seaborne <an...@apache.org>
Authored: Tue May 5 18:39:57 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue May 5 18:41:23 2015 +0100

----------------------------------------------------------------------
 .../org/apache/jena/riot/out/JsonLDWriter.java  |   3 +
 .../jena/riot/system/TestJsonLDReadWrite.java   |   7 +-
 jena-arq/testing/RIOT/jsonld/graph1.jsonld      | 108 ++++++++++---------
 jena-arq/testing/RIOT/jsonld/graph2.jsonld      |  63 +++++++++++
 jena-arq/testing/RIOT/jsonld/graph2.ttl         |  15 +++
 5 files changed, 147 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/bc438d84/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java b/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java
index dbd8fff..c7ed85a 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java
@@ -115,6 +115,9 @@ public class JsonLDWriter extends WriterDatasetRIOTBase
         Map<String, IRI> pmap = prefixMap.getMapping() ;
         for ( Entry<String, IRI> e : pmap.entrySet() ) {
             String key = e.getKey() ;
+            if ( key.isEmpty() )
+                // Prefix "" is not allowed in JSON-LD
+                continue ;
             IRI iri = e.getValue() ;
             ctx.put(e.getKey(), e.getValue().toString()) ;
         }

http://git-wip-us.apache.org/repos/asf/jena/blob/bc438d84/jena-arq/src/test/java/org/apache/jena/riot/system/TestJsonLDReadWrite.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/system/TestJsonLDReadWrite.java b/jena-arq/src/test/java/org/apache/jena/riot/system/TestJsonLDReadWrite.java
index 3f3e949..b83e666 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/system/TestJsonLDReadWrite.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/system/TestJsonLDReadWrite.java
@@ -43,9 +43,13 @@ public class TestJsonLDReadWrite extends BaseTest
     
     @Test public void read_g01() { graphJ2R("graph1.jsonld", "graph1.ttl") ; }
 
+    @Test public void read_g02() { graphJ2R("graph2.jsonld", "graph2.ttl") ; }
+
     @Test public void read_ds01() { datasetJ2R("graph1.jsonld", "graph1.ttl") ; }
 
-    @Test public void read_ds02() { datasetJ2R("dataset1.jsonld", "dataset1.trig") ; }
+    @Test public void read_ds02() { datasetJ2R("graph2.jsonld", "graph2.ttl") ; }
+
+    @Test public void read_ds03() { datasetJ2R("dataset1.jsonld", "dataset1.trig") ; }
 
     private void graphJ2R(String inFile, String outFile)
     {
@@ -144,6 +148,7 @@ public class TestJsonLDReadWrite extends BaseTest
     	if (namespaces == null) return;
     	
     	for (String prefix : namespaces.keySet()) {
+    	    if ( ! prefix.isEmpty() )
     		Assert.assertEquals("Model does contain expected namespace " + prefix + ": <" + namespaces.get(prefix) + ">", namespaces.get(prefix), m.getNsPrefixURI(prefix));
     	}
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/bc438d84/jena-arq/testing/RIOT/jsonld/graph1.jsonld
----------------------------------------------------------------------
diff --git a/jena-arq/testing/RIOT/jsonld/graph1.jsonld b/jena-arq/testing/RIOT/jsonld/graph1.jsonld
index 0f092dc..9b60955 100644
--- a/jena-arq/testing/RIOT/jsonld/graph1.jsonld
+++ b/jena-arq/testing/RIOT/jsonld/graph1.jsonld
@@ -1,50 +1,62 @@
-[ {
-  "@id" : "_:b0",
-  "http://example/r" : [ {
-    "@value" : "4.5",
-    "@type" : "http://www.w3.org/2001/XMLSchema#decimal"
-  } ]
-}, {
-  "@id" : "_:b3"
-}, {
-  "@id" : "http://example/a"
-}, {
-  "@id" : "http://example/s",
-  "http://example/p" : [ {
-    "@value" : 2
+{
+  "@graph" : [ {
+    "@id" : "_:b2",
+    "r" : "4.5"
   }, {
-    "@value" : 1
-  } ]
-}, {
-  "@id" : "http://example/s1",
-  "http://example/b" : [ {
-    "@id" : "http://example/a"
-  } ]
-}, {
-  "@id" : "http://example/s2",
-  "http://example/b2" : [ {
-    "@id" : "_:b3"
+    "@id" : "http://example/s",
+    "http://example/p" : [ 2, 1 ]
+  }, {
+    "@id" : "http://example/s1",
+    "b" : "http://example/a"
+  }, {
+    "@id" : "http://example/s2",
+    "b" : "http://example/a",
+    "b2" : "_:b3"
+  }, {
+    "@id" : "http://example/s3",
+    "b1" : "_:b3"
+  }, {
+    "@id" : "http://example/x1",
+    "http://example/q" : {
+      "@list" : [ "a", "b" ]
+    }
+  }, {
+    "@id" : "http://example/x2",
+    "q" : "_:b2"
   } ],
-  "http://example/b" : [ {
-    "@id" : "http://example/a"
-  } ]
-}, {
-  "@id" : "http://example/s3",
-  "http://example/b1" : [ {
-    "@id" : "_:b3"
-  } ]
-}, {
-  "@id" : "http://example/x1",
-  "http://example/q" : [ {
-    "@list" : [ {
-      "@value" : "a"
-    }, {
-      "@value" : "b"
-    } ]
-  } ]
-}, {
-  "@id" : "http://example/x2",
-  "http://example/q" : [ {
-    "@id" : "_:b0"
-  } ]
-} ]
+  "@context" : {
+    "rest" : {
+      "@id" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#rest",
+      "@type" : "@id"
+    },
+    "first" : {
+      "@id" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#first",
+      "@type" : "http://www.w3.org/2001/XMLSchema#string"
+    },
+    "q" : {
+      "@id" : "http://example/q",
+      "@type" : "@id"
+    },
+    "r" : {
+      "@id" : "http://example/r",
+      "@type" : "http://www.w3.org/2001/XMLSchema#decimal"
+    },
+    "b2" : {
+      "@id" : "http://example/b2",
+      "@type" : "@id"
+    },
+    "b" : {
+      "@id" : "http://example/b",
+      "@type" : "@id"
+    },
+    "p" : {
+      "@id" : "http://example/p",
+      "@type" : "http://www.w3.org/2001/XMLSchema#integer"
+    },
+    "b1" : {
+      "@id" : "http://example/b1",
+      "@type" : "@id"
+    },
+    "xsd" : "http://www.w3.org/2001/XMLSchema#"
+  }
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/bc438d84/jena-arq/testing/RIOT/jsonld/graph2.jsonld
----------------------------------------------------------------------
diff --git a/jena-arq/testing/RIOT/jsonld/graph2.jsonld b/jena-arq/testing/RIOT/jsonld/graph2.jsonld
new file mode 100644
index 0000000..60fbd22
--- /dev/null
+++ b/jena-arq/testing/RIOT/jsonld/graph2.jsonld
@@ -0,0 +1,63 @@
+{
+  "@graph" : [ {
+    "@id" : "_:b1",
+    "r" : "4.5"
+  }, {
+    "@id" : "http://example/s",
+    "ns:p" : [ 2, 1 ]
+  }, {
+    "@id" : "http://example/s1",
+    "b" : "ns:a"
+  }, {
+    "@id" : "http://example/s2",
+    "b2" : "_:b2",
+    "b" : "ns:a"
+  }, {
+    "@id" : "http://example/s3",
+    "b1" : "_:b2"
+  }, {
+    "@id" : "http://example/x1",
+    "ns:q" : {
+      "@list" : [ "a", "b" ]
+    }
+  }, {
+    "@id" : "http://example/x2",
+    "q" : "_:b1"
+  } ],
+  "@context" : {
+    "rest" : {
+      "@id" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#rest",
+      "@type" : "@id"
+    },
+    "first" : {
+      "@id" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#first",
+      "@type" : "http://www.w3.org/2001/XMLSchema#string"
+    },
+    "q" : {
+      "@id" : "http://example/q",
+      "@type" : "@id"
+    },
+    "b2" : {
+      "@id" : "http://example/b2",
+      "@type" : "@id"
+    },
+    "b" : {
+      "@id" : "http://example/ns#b",
+      "@type" : "@id"
+    },
+    "r" : {
+      "@id" : "http://example/r",
+      "@type" : "http://www.w3.org/2001/XMLSchema#decimal"
+    },
+    "p" : {
+      "@id" : "http://example/ns#p",
+      "@type" : "http://www.w3.org/2001/XMLSchema#integer"
+    },
+    "b1" : {
+      "@id" : "http://example/b1",
+      "@type" : "@id"
+    },
+    "ns" : "http://example/ns#",
+    "xsd" : "http://www.w3.org/2001/XMLSchema#"
+  }
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/bc438d84/jena-arq/testing/RIOT/jsonld/graph2.ttl
----------------------------------------------------------------------
diff --git a/jena-arq/testing/RIOT/jsonld/graph2.ttl b/jena-arq/testing/RIOT/jsonld/graph2.ttl
new file mode 100644
index 0000000..4a3277c
--- /dev/null
+++ b/jena-arq/testing/RIOT/jsonld/graph2.ttl
@@ -0,0 +1,15 @@
+@prefix : <http://example/> .
+@prefix ns: <http://example/ns#> .
+@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
+
+:s ns:p 1 , 2 .
+
+:x1 ns:q ("a" "b") .
+
+:s1 ns:b ns:a .
+:s2 ns:b ns:a .
+
+:s3 :b1 _:aa .
+:s2 :b2 _:aa .
+
+:x2 :q [ :r 4.5 ] .


[40/50] [abbrv] jena git commit: Rename in NodeFactory: createUncachedLiteral -> createLiteralByValue.

Posted by cl...@apache.org.
Rename in NodeFactory: createUncachedLiteral -> createLiteralByValue.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/d2da6f7a
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/d2da6f7a
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/d2da6f7a

Branch: refs/heads/add-contract-tests
Commit: d2da6f7a95e2bdaeb0fb92cd637813b0264f13b4
Parents: 1119bf8
Author: Andy Seaborne <an...@apache.org>
Authored: Fri May 8 14:06:33 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri May 8 14:06:33 2015 +0100

----------------------------------------------------------------------
 .../apache/jena/sparql/util/TestFmtUtils.java   | 10 ++---
 .../java/org/apache/jena/graph/NodeFactory.java | 39 ++++++++++++++++++--
 .../jena/graph/impl/LiteralLabelFactory.java    |  6 +--
 .../apache/jena/rdf/model/ResourceFactory.java  |  2 +-
 .../apache/jena/rdf/model/impl/ModelCom.java    |  6 +--
 .../apache/jena/reasoner/rulesys/Functor.java   |  2 +-
 .../jena/graph/test/TestLiteralLabels.java      | 10 ++---
 .../org/apache/jena/graph/test/TestNode.java    |  4 +-
 .../jena/graph/test/TestTypedLiterals.java      |  2 +-
 9 files changed, 57 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/d2da6f7a/jena-arq/src/test/java/org/apache/jena/sparql/util/TestFmtUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/util/TestFmtUtils.java b/jena-arq/src/test/java/org/apache/jena/sparql/util/TestFmtUtils.java
index b801e93..1e5b033 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/util/TestFmtUtils.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/util/TestFmtUtils.java
@@ -101,31 +101,31 @@ public class TestFmtUtils
 
     @Test
     public void stringLiteral() throws Exception {
-        Node_Literal nl = (Node_Literal)NodeFactory.createUncachedLiteral("abc", "no", new XSDDatatype("string")) ;
+        Node_Literal nl = (Node_Literal)NodeFactory.createLiteral("abc", "no", new XSDDatatype("string")) ;
         assertEquals("\"abc\"@no", FmtUtils.stringForLiteral(nl, getContext())) ;
     }
 
     @Test
     public void integerLiteral() throws Exception {
-        Node_Literal nl = (Node_Literal)NodeFactory.createUncachedLiteral("2", new XSDDatatype("int")) ;
+        Node_Literal nl = (Node_Literal)NodeFactory.createLiteral("2", new XSDDatatype("int")) ;
         assertEquals("\"2\"^^<http://www.w3.org/2001/XMLSchema#int>", FmtUtils.stringForLiteral(nl, getContext())) ;
     }
 
     @Test
     public void doubleLiteral() throws Exception {
-        Node_Literal nl = (Node_Literal)NodeFactory.createUncachedLiteral("2.1e2", new XSDDatatype("double")) ;
+        Node_Literal nl = (Node_Literal)NodeFactory.createLiteral("2.1e2", new XSDDatatype("double")) ;
         assertEquals("2.1e2", FmtUtils.stringForLiteral(nl, getContext())) ;
     }
 
     @Test
     public void decimalLiteral() throws Exception {
-        Node_Literal nl = (Node_Literal)NodeFactory.createUncachedLiteral("2.4", new XSDDatatype("decimal")) ;
+        Node_Literal nl = (Node_Literal)NodeFactory.createLiteral("2.4", new XSDDatatype("decimal")) ;
         assertEquals("2.4", FmtUtils.stringForLiteral(nl, getContext())) ;
     }
 
     @Test
     public void booleanLiteral() throws Exception {
-        Node_Literal nl = (Node_Literal)NodeFactory.createUncachedLiteral("false", new XSDDatatype("boolean")) ;
+        Node_Literal nl = (Node_Literal)NodeFactory.createLiteral("false", new XSDDatatype("boolean")) ;
         assertEquals("false", FmtUtils.stringForLiteral(nl, getContext())) ;
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/d2da6f7a/jena-core/src/main/java/org/apache/jena/graph/NodeFactory.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/graph/NodeFactory.java b/jena-core/src/main/java/org/apache/jena/graph/NodeFactory.java
index 35e9cd9..3f9951a 100644
--- a/jena-core/src/main/java/org/apache/jena/graph/NodeFactory.java
+++ b/jena-core/src/main/java/org/apache/jena/graph/NodeFactory.java
@@ -126,12 +126,45 @@ public class NodeFactory {
         return createLiteral(LiteralLabelFactory.create(lex, dtype)) ;
     }
 
-    public static Node createUncachedLiteral(Object value, String lang, RDFDatatype dtype) throws DatatypeFormatException {
-        return new Node_Literal(LiteralLabelFactory.create(value, lang, dtype)) ;
+    /** Create a Node based on the value
+     * If the value is a string we
+     * assume this is inteded to be a lexical form after all.
+     * @param value
+     *          The value, mapped according to registered types. 
+     * @param dtype
+     *          RDF Datatype.
+     * @return Node
+     * @throws DatatypeFormatException
+     */
+    public static Node createLiteralByValue(Object value, RDFDatatype dtype) throws DatatypeFormatException {
+        return new Node_Literal(LiteralLabelFactory.createByValue(value, "", dtype)) ;
+    }
+
+    /** Create a Node based on the value
+     * If the value is a string we
+     * assume this is inteded to be a lexical form after all.
+     * @param value
+     *          The value, mapped according to registered types. 
+     * @param lang
+     *          (optional) Language tag, if a string. 
+     * @param dtype
+     *          RDF Datatype.
+     * @return Node
+     * @throws DatatypeFormatException
+     */
+    public static Node createLiteralByValue(Object value, String lang, RDFDatatype dtype) throws DatatypeFormatException {
+        return new Node_Literal(LiteralLabelFactory.createByValue(value, lang, dtype)) ;
     }
 
+    /** @deprecated To be removed: Use {@link #createLiteralByValue(Object, RDFDatatype)} */ 
+    @Deprecated
     public static Node createUncachedLiteral(Object value, RDFDatatype dtype) throws DatatypeFormatException {
-        return new Node_Literal(LiteralLabelFactory.create(value, "", dtype)) ;
+        return createLiteralByValue(value, dtype) ;
     }
 
+    /** @deprecated To be removed: Use {@link #createLiteralByValue(Object, String, RDFDatatype)} */ 
+    @Deprecated
+    public static Node createUncachedLiteral(Object value, String lang, RDFDatatype dtype) throws DatatypeFormatException {
+        return createLiteralByValue(value, lang, dtype) ;
+    }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/d2da6f7a/jena-core/src/main/java/org/apache/jena/graph/impl/LiteralLabelFactory.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/graph/impl/LiteralLabelFactory.java b/jena-core/src/main/java/org/apache/jena/graph/impl/LiteralLabelFactory.java
index 9f1c8ee..fbfc522 100644
--- a/jena-core/src/main/java/org/apache/jena/graph/impl/LiteralLabelFactory.java
+++ b/jena-core/src/main/java/org/apache/jena/graph/impl/LiteralLabelFactory.java
@@ -75,9 +75,9 @@ public class LiteralLabelFactory
      * 
      * @param value the value of the literal
      * @param lang the optional language tag, only relevant for plain literals
-     * @param dtype the type of the literal, null for old style "plain" literals
+     * @param dtype the type of the literal, null for old style "plain" literals (which become xsd:string in RDF 1.1)
      */
-    public static LiteralLabel create(Object value, String lang, RDFDatatype dtype) throws DatatypeFormatException {
+    public static LiteralLabel createByValue(Object value, String lang, RDFDatatype dtype) throws DatatypeFormatException {
         dtype = fixDatatype(dtype, lang) ;
         return new LiteralLabelImpl(value, lang, dtype) ; 
     }
@@ -92,7 +92,7 @@ public class LiteralLabelFactory
      * Build a typed literal label from its value form using
      * whatever datatype is currently registered as the the default
      * representation for this java class. No language tag is supplied.
-     * A plain strign becomes an xsd:string.
+     * A plain string becomes an xsd:string.
      * @param value the literal value to encapsulate
      */
     public static LiteralLabel createTypedLiteral(Object value) {

http://git-wip-us.apache.org/repos/asf/jena/blob/d2da6f7a/jena-core/src/main/java/org/apache/jena/rdf/model/ResourceFactory.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/ResourceFactory.java b/jena-core/src/main/java/org/apache/jena/rdf/model/ResourceFactory.java
index 57e0bbb..b70493a 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/ResourceFactory.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/ResourceFactory.java
@@ -284,7 +284,7 @@ public class ResourceFactory {
             LiteralLabel ll = null;
             if (value instanceof Calendar) {
                 Object valuec = new XSDDateTime( (Calendar) value);
-                ll = LiteralLabelFactory.create(valuec, "", XSDDatatype.XSDdateTime);
+                ll = LiteralLabelFactory.createByValue(valuec, "", XSDDatatype.XSDdateTime);
             } else {
                 ll =  LiteralLabelFactory.createTypedLiteral(value);
             }

http://git-wip-us.apache.org/repos/asf/jena/blob/d2da6f7a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
index e644f55..8d25a3e 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
@@ -692,7 +692,7 @@ implements Model, PrefixMapping, Lock
     @Override
     public Literal createTypedLiteral(Calendar cal) {
         Object value = new XSDDateTime(cal);
-        LiteralLabel ll = LiteralLabelFactory.create(value, "", XSDDatatype.XSDdateTime);
+        LiteralLabel ll = LiteralLabelFactory.createByValue(value, "", XSDDatatype.XSDdateTime);
         return new LiteralImpl(NodeFactory.createLiteral(ll), this);
 
     }
@@ -720,7 +720,7 @@ implements Model, PrefixMapping, Lock
      */
     @Override
     public Literal createTypedLiteral(Object value, RDFDatatype dtype) {
-        LiteralLabel ll = LiteralLabelFactory.create(value, "", dtype);
+        LiteralLabel ll = LiteralLabelFactory.createByValue(value, "", dtype);
         return new LiteralImpl( NodeFactory.createLiteral(ll), this );
     }
 
@@ -749,7 +749,7 @@ implements Model, PrefixMapping, Lock
     @Override
     public Literal createTypedLiteral(Object value, String typeURI) {
         RDFDatatype dt = TypeMapper.getInstance().getSafeTypeByName(typeURI);
-        LiteralLabel ll = LiteralLabelFactory.create(value, "", dt);
+        LiteralLabel ll = LiteralLabelFactory.createByValue(value, "", dt);
         return new LiteralImpl(NodeFactory.createLiteral(ll), this);
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/d2da6f7a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/Functor.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/Functor.java b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/Functor.java
index 27217e6..2eb22e5 100755
--- a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/Functor.java
+++ b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/Functor.java
@@ -278,7 +278,7 @@ public class Functor implements ClauseEntry {
      * @param f the functor data structure to be wrapped in a node.
      */
     public static Node makeFunctorNode(Functor f) {
-        return NodeFactory.createUncachedLiteral(f, FunctorDatatype.theFunctorDatatype);
+        return NodeFactory.createLiteralByValue(f, FunctorDatatype.theFunctorDatatype);
     }
     
    /**

http://git-wip-us.apache.org/repos/asf/jena/blob/d2da6f7a/jena-core/src/test/java/org/apache/jena/graph/test/TestLiteralLabels.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/test/TestLiteralLabels.java b/jena-core/src/test/java/org/apache/jena/graph/test/TestLiteralLabels.java
index 97c6552..4bc39ab 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/test/TestLiteralLabels.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/test/TestLiteralLabels.java
@@ -40,14 +40,14 @@ public class TestLiteralLabels extends GraphTestBase
 
     public void testHashCode()
     {
-        LiteralLabel ll = LiteralLabelFactory.create("test", "", null) ;
+        LiteralLabel ll = LiteralLabelFactory.createByValue("test", "", null) ;
         ll.hashCode() ;
     }
 
     public void testHashCode2()
     {
-        LiteralLabel ll1 = LiteralLabelFactory.create("test", "", null) ;
-        LiteralLabel ll2 = LiteralLabelFactory.create("test", "", null) ;
+        LiteralLabel ll1 = LiteralLabelFactory.createByValue("test", "", null) ;
+        LiteralLabel ll2 = LiteralLabelFactory.createByValue("test", "", null) ;
         assertEquals(ll1.hashCode(), ll2.hashCode()) ;
     }
 
@@ -89,8 +89,8 @@ public class TestLiteralLabels extends GraphTestBase
                 return false ;
             }
         } ;
-        LiteralLabel A = LiteralLabelFactory.create("17", "", d) ;
-        LiteralLabel B = LiteralLabelFactory.create("17", "", null) ;
+        LiteralLabel A = LiteralLabelFactory.createByValue("17", "", d) ;
+        LiteralLabel B = LiteralLabelFactory.createByValue("17", "", null) ;
         assertFalse(A.sameValueAs(B)) ;
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/d2da6f7a/jena-core/src/test/java/org/apache/jena/graph/test/TestNode.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/test/TestNode.java b/jena-core/src/test/java/org/apache/jena/graph/test/TestNode.java
index 0bfd21b..3be7ac8 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/test/TestNode.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/test/TestNode.java
@@ -117,8 +117,8 @@ public class TestNode extends GraphTestBase
         AnonId id = AnonId.create();
         LiteralLabel L2 = LiteralLabelFactory.create( id.toString(), "", false );
 
-        LiteralLabel LLang1 = LiteralLabelFactory.create( "xyz", "en", null) ;
-        LiteralLabel LLang2 = LiteralLabelFactory.create( "xyz", "EN", null) ;
+        LiteralLabel LLang1 = LiteralLabelFactory.createByValue( "xyz", "en", null) ;
+        LiteralLabel LLang2 = LiteralLabelFactory.createByValue( "xyz", "EN", null) ;
 
         String U2 = id.toString();
         String N2 = id.toString();

http://git-wip-us.apache.org/repos/asf/jena/blob/d2da6f7a/jena-core/src/test/java/org/apache/jena/graph/test/TestTypedLiterals.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/test/TestTypedLiterals.java b/jena-core/src/test/java/org/apache/jena/graph/test/TestTypedLiterals.java
index 954410a..7f5b674 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/test/TestTypedLiterals.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/test/TestTypedLiterals.java
@@ -678,7 +678,7 @@ public class TestTypedLiterals extends TestCase {
             calM1.set(Calendar.MONTH, 10);
             calM1.set(Calendar.DATE,  23);
             XSDDateTime xdtM = new XSDDateTime(calM1);
-            LiteralLabel xdtM_ll = LiteralLabelFactory.create(xdtM, "", XSDDatatype.XSDdateTime);
+            LiteralLabel xdtM_ll = LiteralLabelFactory.createByValue(xdtM, "", XSDDatatype.XSDdateTime);
             
             assertTrue("Pre-1000 calendar value", xdtM_ll.getLexicalForm().matches("-?[0-9]{4}-.*")) ;
             assertTrue("Pre-1000 calendar value", xdtM_ll.isWellFormed()) ;


[38/50] [abbrv] jena git commit: Typo

Posted by cl...@apache.org.
Typo

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/e15c2240
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/e15c2240
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/e15c2240

Branch: refs/heads/add-contract-tests
Commit: e15c224068e5a201f438f3ba16022487b8335326
Parents: 473c3e4
Author: Andy Seaborne <an...@apache.org>
Authored: Fri May 8 14:04:58 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri May 8 14:04:58 2015 +0100

----------------------------------------------------------------------
 jena-arq/Grammar/BinaryRDF.thrift | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/e15c2240/jena-arq/Grammar/BinaryRDF.thrift
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/BinaryRDF.thrift b/jena-arq/Grammar/BinaryRDF.thrift
index 841d7e7..e695472 100644
--- a/jena-arq/Grammar/BinaryRDF.thrift
+++ b/jena-arq/Grammar/BinaryRDF.thrift
@@ -70,7 +70,7 @@ struct RDF_REPEAT { }
 union RDF_Term {
 1: RDF_IRI          iri
 2: RDF_BNode        bnode
-3: RDF_Literal      literal     # Full form lexical form/datattype/langtag
+3: RDF_Literal      literal     # Full form lexical form/datatype/langtag
 4: RDF_PrefixName   prefixName 
 5: RDF_VAR          variable
 6: RDF_ANY          any


[36/50] [abbrv] jena git commit: Fix XML error in POM

Posted by cl...@apache.org.
Fix XML error in POM


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/806aafc5
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/806aafc5
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/806aafc5

Branch: refs/heads/add-contract-tests
Commit: 806aafc56d408bccb248a30b08f5b9f1beb97436
Parents: 18aaf7d
Author: Andy Seaborne <an...@apache.org>
Authored: Thu May 7 17:41:04 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu May 7 17:41:04 2015 +0100

----------------------------------------------------------------------
 jena-maven-tools/src/it/schemagen-integration-0/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/806aafc5/jena-maven-tools/src/it/schemagen-integration-0/pom.xml
----------------------------------------------------------------------
diff --git a/jena-maven-tools/src/it/schemagen-integration-0/pom.xml b/jena-maven-tools/src/it/schemagen-integration-0/pom.xml
index 732a38d..f2f1e57 100644
--- a/jena-maven-tools/src/it/schemagen-integration-0/pom.xml
+++ b/jena-maven-tools/src/it/schemagen-integration-0/pom.xml
@@ -1,4 +1,4 @@
-f<!--
+<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information


[16/50] [abbrv] jena git commit: Surppress hiding warnings

Posted by cl...@apache.org.
Surppress hiding warnings


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/461cf36f
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/461cf36f
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/461cf36f

Branch: refs/heads/add-contract-tests
Commit: 461cf36f6cdba77ca6b35f874995019453a9fbe8
Parents: b755fc1
Author: Andy Seaborne <an...@apache.org>
Authored: Sat May 2 18:22:29 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat May 2 18:22:29 2015 +0100

----------------------------------------------------------------------
 .../src/main/java/org/apache/jena/ontology/impl/OntClassImpl.java   | 1 +
 .../main/java/org/apache/jena/ontology/impl/OntPropertyImpl.java    | 1 +
 .../main/java/org/apache/jena/ontology/impl/OntResourceImpl.java    | 1 +
 3 files changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/461cf36f/jena-core/src/main/java/org/apache/jena/ontology/impl/OntClassImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntClassImpl.java b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntClassImpl.java
index e2aae36..bbbe316 100644
--- a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntClassImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntClassImpl.java
@@ -71,6 +71,7 @@ public class OntClassImpl
      * Note: should not be invoked directly by user code: use
      * {@link org.apache.jena.rdf.model.RDFNode#as as()} instead.
      */
+    @SuppressWarnings("hiding")
     public static Implementation factory = new Implementation() {
         @Override
         public EnhNode wrap( Node n, EnhGraph eg ) {

http://git-wip-us.apache.org/repos/asf/jena/blob/461cf36f/jena-core/src/main/java/org/apache/jena/ontology/impl/OntPropertyImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntPropertyImpl.java b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntPropertyImpl.java
index 2280299..1b9400a 100644
--- a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntPropertyImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntPropertyImpl.java
@@ -54,6 +54,7 @@ public class OntPropertyImpl
      * Note: should not be invoked directly by user code: use
      * {@link org.apache.jena.rdf.model.RDFNode#as as()} instead.
      */
+    @SuppressWarnings("hiding")
     public static Implementation factory = new Implementation() {
         @Override
         public EnhNode wrap( Node n, EnhGraph eg ) {

http://git-wip-us.apache.org/repos/asf/jena/blob/461cf36f/jena-core/src/main/java/org/apache/jena/ontology/impl/OntResourceImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntResourceImpl.java b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntResourceImpl.java
index 97911de..fe9038b 100644
--- a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntResourceImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntResourceImpl.java
@@ -69,6 +69,7 @@ public class OntResourceImpl
      * Note: should not be invoked directly by user code: use
      * {@link org.apache.jena.rdf.model.RDFNode#as as()} instead.
      */
+    @SuppressWarnings("hiding")
     public static Implementation factory = new Implementation() {
         @Override
         public EnhNode wrap( Node n, EnhGraph eg ) {


[21/50] [abbrv] jena git commit: Don't expect service name when config file given

Posted by cl...@apache.org.
Don't expect service name when config file given


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/547b50a1
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/547b50a1
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/547b50a1

Branch: refs/heads/add-contract-tests
Commit: 547b50a164234bb4454e24ec53e2cc6472c85e64
Parents: 44ece03
Author: Andy Seaborne <an...@apache.org>
Authored: Mon May 4 18:13:27 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon May 4 18:13:27 2015 +0100

----------------------------------------------------------------------
 .../src/main/java/org/apache/jena/fuseki/cmd/FusekiCmd.java    | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/547b50a1/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/cmd/FusekiCmd.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/cmd/FusekiCmd.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/cmd/FusekiCmd.java
index 3d91de4..5da6b07 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/cmd/FusekiCmd.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/cmd/FusekiCmd.java
@@ -185,7 +185,7 @@ public class FusekiCmd {
                     throw new CmdException("Multiple ways providing a dataset. Only one of --mem, --file, --loc or --desc") ;
             }
             
-            boolean configPresent = ( x != 0 ) || ( cmdLineDataset.fusekiConfigFile != null ) ;
+            boolean cmdlineConfigPresent = ( x != 0 ) ;
 
             if ( contains(argMem) ) {
                 log.info("Dataset: in-memory") ;
@@ -232,9 +232,9 @@ public class FusekiCmd {
                 //cmdLineDataset.dsg = ds.asDatasetGraph() ;
             }
             
-            if ( configPresent && getPositional().size() == 0 )
+            if ( cmdlineConfigPresent && getPositional().size() == 0 )
                 throw new CmdException("Missing service name") ;
-            if ( !configPresent && getPositional().size() > 0 )
+            if ( !cmdlineConfigPresent && getPositional().size() > 0 )
                 throw new CmdException("Service name given but no configuration argument to match") ;
 
             if ( cmdLineDataset != null ) {


[04/50] [abbrv] jena git commit: Deprecating Map1 in favor of Java8 Function

Posted by cl...@apache.org.
Deprecating Map1 in favor of Java8 Function


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/65ce6b50
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/65ce6b50
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/65ce6b50

Branch: refs/heads/add-contract-tests
Commit: 65ce6b50a8672b16e7a120e8319a706068a315d6
Parents: fe98924
Author: ajs6f <aj...@virginia.edu>
Authored: Thu Apr 30 15:27:16 2015 -0400
Committer: ajs6f <aj...@virginia.edu>
Committed: Fri May 1 09:07:09 2015 -0400

----------------------------------------------------------------------
 jena-core/src/main/java/jena/schemagen.java     |  8 +-
 .../assembler/assemblers/AssemblerBase.java     | 17 +---
 .../assembler/assemblers/ModelAssembler.java    | 26 ++----
 .../java/org/apache/jena/graph/GraphUtil.java   | 30 +------
 .../main/java/org/apache/jena/graph/Triple.java | 12 +--
 .../apache/jena/mem/GraphTripleStoreBase.java   |  6 +-
 .../jena/ontology/impl/AllDifferentImpl.java    |  7 +-
 .../impl/BooleanClassDescriptionImpl.java       |  2 +-
 .../jena/ontology/impl/DataRangeImpl.java       |  2 +-
 .../jena/ontology/impl/EnumeratedClassImpl.java |  2 +-
 .../jena/ontology/impl/IndividualImpl.java      |  2 +-
 .../apache/jena/ontology/impl/OntClassImpl.java |  4 +-
 .../apache/jena/ontology/impl/OntModelImpl.java | 44 ++--------
 .../jena/ontology/impl/OntPropertyImpl.java     |  4 +-
 .../jena/ontology/impl/OntResourceImpl.java     | 91 +++-----------------
 .../java/org/apache/jena/rdf/model/RDFList.java |  5 +-
 .../org/apache/jena/rdf/model/Statement.java    | 20 +----
 .../jena/rdf/model/impl/IteratorFactory.java    | 15 +---
 .../apache/jena/rdf/model/impl/ModelCom.java    | 13 +--
 .../jena/rdf/model/impl/ModelReifier.java       | 15 +---
 .../apache/jena/rdf/model/impl/RDFListImpl.java |  3 +-
 .../jena/rdfxml/xmloutput/impl/Relation.java    | 27 +-----
 .../jena/rdfxml/xmloutput/impl/Unparser.java    | 12 +--
 .../jena/util/iterator/ExtendedIterator.java    |  3 +-
 .../apache/jena/util/iterator/LazyIterator.java |  4 +-
 .../org/apache/jena/util/iterator/Map1.java     | 17 ++--
 .../apache/jena/util/iterator/Map1Iterator.java |  7 +-
 .../apache/jena/util/iterator/NiceIterator.java |  3 +-
 .../jena/graph/test/TestFindLiterals.java       |  9 +-
 .../org/apache/jena/graph/test/TestTriple.java  |  6 +-
 .../apache/jena/rdf/model/test/TestList.java    |  9 +-
 .../jena/rdf/model/test/TestStatements.java     |  6 +-
 .../util/iterator/test/TestMapIterators.java    |  8 +-
 .../model/impl/SecuredContainerImpl.java        | 23 +----
 .../model/impl/SecuredNodeIterator.java         |  8 +-
 .../model/impl/SecuredRDFListImpl.java          | 29 +++----
 .../model/impl/SecuredRSIterator.java           |  9 +-
 .../model/impl/SecuredResIterator.java          |  8 +-
 .../model/impl/SecuredStatementIterator.java    |  8 +-
 39 files changed, 124 insertions(+), 400 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/jena/schemagen.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/schemagen.java b/jena-core/src/main/java/jena/schemagen.java
index 63aed08..50240ed 100644
--- a/jena-core/src/main/java/jena/schemagen.java
+++ b/jena-core/src/main/java/jena/schemagen.java
@@ -30,6 +30,7 @@ import java.net.MalformedURLException;
 import java.net.URL;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.function.Function;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
 
@@ -972,12 +973,7 @@ public class schemagen {
         }
 
         // collect the classes to list
-        List<Resource> classes = m_source.listStatements( null, RDF.type, cls ).mapWith( new Map1<Statement, Resource>() {
-                                                            @Override
-                                                            public Resource map1( Statement s ) {
-                                                                return s.getSubject();
-                                                            }}
-                                                          ).toList();
+        List<Resource> classes = m_source.listStatements( null, RDF.type, cls ).mapWith( s -> s.getSubject()).toList();
 
         for (Iterator<? extends RDFNode> i = sorted( classes ); i.hasNext(); ) {
             writeValue( (Resource) i.next(), template, "Resource", "createResource", "_CLASS" );

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java b/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
index df63b68..560eada 100644
--- a/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
+++ b/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
@@ -19,30 +19,15 @@
 package org.apache.jena.assembler.assemblers;
 
 import java.util.List;
-
 import org.apache.jena.assembler.* ;
 import org.apache.jena.assembler.exceptions.* ;
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.shared.JenaException ;
-import org.apache.jena.util.iterator.Map1 ;
 import org.apache.jena.vocabulary.RDF ;
 
 public abstract class AssemblerBase implements Assembler
     {
-    protected static class MapObjectToContent implements Map1<Statement, Content>
-        {
-        protected final Assembler a;
-        
-        public MapObjectToContent( Assembler a ) 
-            { this.a = a; }
-        
-        @Override
-        public Content map1( Statement o )
-            { return (Content) a.open( getResource( o ) ); }
-        }
 
-    protected static final Map1<Statement, RDFNode> getObject = Statement.Util.getObject;
-        
     @Override
     public final Object open( Resource root )
         { return open( this, root ); }
@@ -70,7 +55,7 @@ public abstract class AssemblerBase implements Assembler
     
     protected static RDFNode getUnique( Resource root, Property property )
         {
-        List<RDFNode> nodes = root.listProperties( property ) .mapWith( getObject ).toList();
+        List<RDFNode> nodes = root.listProperties( property ) .mapWith( s -> s.getObject() ).toList();
         if (nodes.size() == 0) return null;
         if (nodes.size() == 1) return nodes.get(0);
         throw new NotUniqueException( root, property );

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/assembler/assemblers/ModelAssembler.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/assembler/assemblers/ModelAssembler.java b/jena-core/src/main/java/org/apache/jena/assembler/assemblers/ModelAssembler.java
index 1468293..35d7491 100644
--- a/jena-core/src/main/java/org/apache/jena/assembler/assemblers/ModelAssembler.java
+++ b/jena-core/src/main/java/org/apache/jena/assembler/assemblers/ModelAssembler.java
@@ -19,12 +19,12 @@
 package org.apache.jena.assembler.assemblers;
 
 import java.util.*;
+import java.util.function.Function;
 
 import org.apache.jena.assembler.* ;
 import org.apache.jena.assembler.exceptions.* ;
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.shared.* ;
-import org.apache.jena.util.iterator.Map1 ;
 import org.apache.jena.vocabulary.RDF ;
 
 public abstract class ModelAssembler extends AssemblerBase implements Assembler
@@ -107,27 +107,17 @@ public abstract class ModelAssembler extends AssemblerBase implements Assembler
 
     private void transferContentProperties( Model partial, Resource someInitial, Resource combined )
         {
-        Map1<Statement, Statement> replace = replaceSubjectMap( partial, combined );
-            for ( Property contentProperty : ContentAssembler.contentProperties )
+     	for ( Property contentProperty : ContentAssembler.contentProperties )
             {
-                partial.add( copyProperties( someInitial, replace, contentProperty ) );
+                partial.add( copyProperties( someInitial, replaceSubjectMap( partial, combined ), contentProperty ) );
             }
         }
     
-    private List<Statement> copyProperties( Resource root, Map1<Statement, Statement> replace, Property property )
+    private List<Statement> copyProperties( Resource root, Function<Statement, Statement> replace, Property property )
         { return root.listProperties( property  ).mapWith( replace ).toList(); }
 
-    private Map1<Statement, Statement> replaceSubjectMap( final Model inModel, final Resource newSubject )
-        {
-        Map1<Statement, Statement> replace = new Map1<Statement, Statement>() 
-            {
-            @Override
-            public Statement map1( Statement o )
-                { 
-                Statement s = o;
-                return inModel.createStatement( newSubject, s.getPredicate(), s.getObject() );
-                }
-            };
-        return replace;
-        }
+	private Function<Statement, Statement> replaceSubjectMap( final Model inModel, final Resource newSubject ) {
+		return s -> inModel.createStatement(newSubject, s.getPredicate(), s.getObject());
+	}
+	
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/graph/GraphUtil.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/graph/GraphUtil.java b/jena-core/src/main/java/org/apache/jena/graph/GraphUtil.java
index 932c55a..8b3da79 100644
--- a/jena-core/src/main/java/org/apache/jena/graph/GraphUtil.java
+++ b/jena-core/src/main/java/org/apache/jena/graph/GraphUtil.java
@@ -21,11 +21,9 @@ package org.apache.jena.graph;
 import java.util.Iterator ;
 import java.util.List ;
 import java.util.Set ;
-
 import org.apache.jena.graph.impl.GraphWithPerform ;
 import org.apache.jena.util.IteratorCollection ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Map1 ;
 import org.apache.jena.util.iterator.WrappedIterator ;
 
 /**
@@ -38,28 +36,6 @@ public class GraphUtil
      */
     private GraphUtil()
     {}
-    
-    private static Map1<Triple, Node> mapSubject   = new Map1<Triple, Node>() {
-        @Override
-        public Node map1(Triple triple)
-        {
-            return triple.getSubject() ;
-        }
-    } ;
-    private static Map1<Triple, Node> mapPredicate = new Map1<Triple, Node>() {
-        @Override
-        public Node map1(Triple triple)
-        {
-            return triple.getPredicate() ;
-        }
-    } ;
-    private static Map1<Triple, Node> mapObject    = new Map1<Triple, Node>() {
-        @Override
-        public Node map1(Triple triple)
-        {
-            return triple.getObject() ;
-        }
-    } ;
 
     /** Return an iterator over the unique subjects with predciate p and object o.
      * p and o can be wildcards (Node.ANY)
@@ -71,7 +47,7 @@ public class GraphUtil
     public static ExtendedIterator<Node> listSubjects(Graph g, Node p, Node o) { 
         // Restore a minimal QueryHandler?
         ExtendedIterator<Triple> iter = g.find(Node.ANY, p, o) ;
-        Set<Node> nodes = iter.mapWith(mapSubject).toSet() ;
+        Set<Node> nodes = iter.mapWith(t -> t.getSubject()).toSet() ;
         return WrappedIterator.createNoRemove(nodes.iterator()) ;
     }
     
@@ -84,7 +60,7 @@ public class GraphUtil
      */
     public static ExtendedIterator<Node> listPredicates(Graph g, Node s, Node o) {
         ExtendedIterator<Triple> iter = g.find(s,Node.ANY, o) ;
-        Set<Node> nodes = iter.mapWith(mapPredicate).toSet() ;
+        Set<Node> nodes = iter.mapWith(t -> t.getPredicate()).toSet() ;
         return WrappedIterator.createNoRemove(nodes.iterator()) ;
     }
     
@@ -97,7 +73,7 @@ public class GraphUtil
      */
     public static ExtendedIterator<Node> listObjects(Graph g, Node s, Node p) {
         ExtendedIterator<Triple> iter = g.find(s, p, Node.ANY) ;
-        Set<Node> nodes = iter.mapWith(mapObject).toSet() ;
+        Set<Node> nodes = iter.mapWith(t -> t.getObject()).toSet() ;
         return WrappedIterator.createNoRemove(nodes.iterator()) ;
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/graph/Triple.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/graph/Triple.java b/jena-core/src/main/java/org/apache/jena/graph/Triple.java
index b0f748e..e3428f2 100644
--- a/jena-core/src/main/java/org/apache/jena/graph/Triple.java
+++ b/jena-core/src/main/java/org/apache/jena/graph/Triple.java
@@ -83,17 +83,11 @@ public class Triple
     public Node getMatchSubject()
         { return anyToNull( subj ); }
     
-    public static final Map1<Triple, Node> getSubject = new Map1<Triple, Node>() 
-        { @Override
-        public Node map1( Triple t ) { return t.getSubject(); } };
+    public static final Map1<Triple, Node> getSubject = t -> t.getSubject();
         
-    public static final Map1<Triple, Node> getPredicate = new Map1<Triple, Node>() 
-        { @Override
-        public Node map1( Triple t ) { return t.getPredicate(); } };
+    public static final Map1<Triple, Node> getPredicate = t -> t.getPredicate();
         
-    public static final Map1<Triple, Node> getObject = new Map1<Triple, Node>() 
-        { @Override
-        public Node map1( Triple t ) { return t.getObject(); } };
+    public static final Map1<Triple, Node> getObject = t -> t.getObject();
 
     /** Return predicate or null, not Node.ANY */ 
     public Node getMatchPredicate()

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/mem/GraphTripleStoreBase.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/mem/GraphTripleStoreBase.java b/jena-core/src/main/java/org/apache/jena/mem/GraphTripleStoreBase.java
index 0708efa..80b46a8 100644
--- a/jena-core/src/main/java/org/apache/jena/mem/GraphTripleStoreBase.java
+++ b/jena-core/src/main/java/org/apache/jena/mem/GraphTripleStoreBase.java
@@ -111,11 +111,7 @@ public abstract class GraphTripleStoreBase implements TripleStore
          { return expectOnlyNodes( predicates.domain() ); }
     
      private ExtendedIterator<Node> expectOnlyNodes( Iterator<Object> elements )
-        { return WrappedIterator.createNoRemove( elements ).mapWith( expectNode ); }
-     
-     private static final Map1<Object, Node> expectNode = new Map1<Object, Node>()
-         { @Override
-        public Node map1( Object o ) { return (Node) o; }};
+        { return WrappedIterator.createNoRemove( elements ).mapWith( o -> (Node) o ); }
      
      @Override
     public ExtendedIterator<Node> listObjects()

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/ontology/impl/AllDifferentImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/ontology/impl/AllDifferentImpl.java b/jena-core/src/main/java/org/apache/jena/ontology/impl/AllDifferentImpl.java
index 02d4e3f..d72e5d7 100644
--- a/jena-core/src/main/java/org/apache/jena/ontology/impl/AllDifferentImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/ontology/impl/AllDifferentImpl.java
@@ -30,7 +30,6 @@ import org.apache.jena.graph.* ;
 import org.apache.jena.ontology.* ;
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Map1 ;
 
 
 /**
@@ -149,11 +148,7 @@ public class AllDifferentImpl
      */
     @Override
     public ExtendedIterator<? extends OntResource> listDistinctMembers() {
-        return getDistinctMembers().mapWith( new Map1<RDFNode,OntResource>() {
-            @Override
-            public OntResource map1( RDFNode o ) {
-                return ((Resource) o).as( OntResource.class );
-            }} );
+        return getDistinctMembers().mapWith( o -> ((Resource) o).as( OntResource.class ));
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/ontology/impl/BooleanClassDescriptionImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/ontology/impl/BooleanClassDescriptionImpl.java b/jena-core/src/main/java/org/apache/jena/ontology/impl/BooleanClassDescriptionImpl.java
index 0c89cbb..203f3a3 100644
--- a/jena-core/src/main/java/org/apache/jena/ontology/impl/BooleanClassDescriptionImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/ontology/impl/BooleanClassDescriptionImpl.java
@@ -125,7 +125,7 @@ public abstract class BooleanClassDescriptionImpl
      */
     @Override
     public ExtendedIterator<? extends OntClass> listOperands() {
-        return getOperands().iterator().mapWith( new AsMapper<>( OntClass.class ) );
+        return getOperands().iterator().mapWith( n -> n.as( OntClass.class ) );
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/ontology/impl/DataRangeImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/ontology/impl/DataRangeImpl.java b/jena-core/src/main/java/org/apache/jena/ontology/impl/DataRangeImpl.java
index bdb2856..557e73c 100644
--- a/jena-core/src/main/java/org/apache/jena/ontology/impl/DataRangeImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/ontology/impl/DataRangeImpl.java
@@ -153,7 +153,7 @@ public class DataRangeImpl
      */
     @Override
     public ExtendedIterator<Literal> listOneOf() {
-        return getOneOf().iterator().mapWith( new AsMapper<>( Literal.class ) );
+        return getOneOf().iterator().mapWith( n -> n.as( Literal.class ) );
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/ontology/impl/EnumeratedClassImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/ontology/impl/EnumeratedClassImpl.java b/jena-core/src/main/java/org/apache/jena/ontology/impl/EnumeratedClassImpl.java
index 915fb6e..71f29d6 100644
--- a/jena-core/src/main/java/org/apache/jena/ontology/impl/EnumeratedClassImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/ontology/impl/EnumeratedClassImpl.java
@@ -151,7 +151,7 @@ public class EnumeratedClassImpl
      */
     @Override
     public ExtendedIterator<? extends OntResource> listOneOf() {
-        return getOneOf().iterator().mapWith( new AsMapper<>( OntResource.class ) );
+        return getOneOf().iterator().mapWith( n -> n.as( OntResource.class ) );
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/ontology/impl/IndividualImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/ontology/impl/IndividualImpl.java b/jena-core/src/main/java/org/apache/jena/ontology/impl/IndividualImpl.java
index 1c0f9b9..56c249d 100644
--- a/jena-core/src/main/java/org/apache/jena/ontology/impl/IndividualImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/ontology/impl/IndividualImpl.java
@@ -189,7 +189,7 @@ public class IndividualImpl
     public <T extends OntClass> ExtendedIterator<T> listOntClasses( boolean direct ) {
         @SuppressWarnings("unchecked")
         ExtendedIterator<T> iter = 
-            (ExtendedIterator<T>)listRDFTypes( direct ).mapWith( new ResourceAsMapper<>( OntClass.class ) );
+            (ExtendedIterator<T>)listRDFTypes( direct ).mapWith( r -> r.as( OntClass.class ) );
         return iter ;
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/ontology/impl/OntClassImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntClassImpl.java b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntClassImpl.java
index 651cefa..8397e1f 100644
--- a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntClassImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntClassImpl.java
@@ -624,7 +624,7 @@ public class OntClassImpl
 
         // return the results, using the ont property facet
         return WrappedIterator.create( cands.iterator() )
-                              .mapWith( new AsMapper<>( OntProperty.class ) );
+                              .mapWith( n -> n.as( OntProperty.class ) );
     }
 
 
@@ -669,7 +669,7 @@ public class OntClassImpl
     public ExtendedIterator<Individual> listInstances( final boolean direct ) {
         return getModel()
                 .listStatements( null, RDF.type, this )
-                .mapWith( new SubjectAsMapper<>( Individual.class ) )
+                .mapWith( s -> s.getSubject().as( Individual.class ) )
                 .filterKeep( new Filter<Individual>() {
                     @Override
                     public boolean accept( Individual o ) {

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/ontology/impl/OntModelImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntModelImpl.java b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntModelImpl.java
index 5496823..e6dc9af 100644
--- a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntModelImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntModelImpl.java
@@ -28,6 +28,7 @@ import java.io.OutputStream ;
 import java.io.Reader ;
 import java.io.Writer ;
 import java.util.* ;
+import java.util.function.Function;
 
 import org.apache.jena.enhanced.BuiltinPersonalities ;
 import org.apache.jena.enhanced.EnhNode ;
@@ -530,7 +531,7 @@ public class OntModelImpl extends ModelCom implements OntModel
             {
                 // we have have both direct sub-class of and a :Thing class to test against
                 return listStatements( null, ReasonerVocabulary.directSubClassOf, getProfile().THING() )
-                       .mapWith( new OntResourceImpl.SubjectAsMapper<>( OntClass.class ));
+                       .mapWith( s -> s.getSubject().as( OntClass.class ));
             }
         }
 
@@ -750,7 +751,7 @@ public class OntModelImpl extends ModelCom implements OntModel
         }
         else {
             return findByType( r )
-            		.mapWith( new SubjectNodeAs<>( AnnotationProperty.class ) )
+            		.mapWith( p -> getNodeAs( p.getSubject(), AnnotationProperty.class ) )
             		.filterKeep( new UniqueFilter<AnnotationProperty>());
         }
     }
@@ -2314,13 +2315,12 @@ public class OntModelImpl extends ModelCom implements OntModel
     public ExtendedIterator<OntModel> listSubModels( final boolean withImports ) {
         ExtendedIterator<Graph> i = WrappedIterator.create( getSubGraphs().iterator() );
 
-        return i.mapWith( new Map1<Graph, OntModel>() {
-                    @Override
-                    public OntModel map1( Graph o ) {
+        return i.mapWith( 
+                    o -> {
                         Model base = ModelFactory.createModelForGraph( o );
                         OntModel om = new OntModelImpl( m_spec, base, withImports );
                         return om;
-                    }} );
+                    } );
     }
 
 
@@ -2934,7 +2934,7 @@ public class OntModelImpl extends ModelCom implements OntModel
      * @return An iterator over all triples <code>_x rdf:type type</code>
      */
     protected <T extends RDFNode> ExtendedIterator<T> findByTypeAs( Resource type, Iterator<Resource> types, Class<T> asKey ) {
-        return findByType( type, types ).mapWith( new SubjectNodeAs<>( asKey ) );
+        return findByType( type, types ).mapWith( p -> getNodeAs( p.getSubject(), asKey ) );
     }
 
     /**
@@ -2967,7 +2967,7 @@ public class OntModelImpl extends ModelCom implements OntModel
      * the given polymorphic class.
      */
     protected <T extends RDFNode> ExtendedIterator<T> findByTypeAs( Resource type, Class<T> asKey ) {
-        return findByType( type ).mapWith( new SubjectNodeAs<>( asKey ) );
+        return findByType( type ).mapWith( p -> getNodeAs( p.getSubject(), asKey ) );
     }
 
     /**
@@ -2994,7 +2994,7 @@ public class OntModelImpl extends ModelCom implements OntModel
      * @return ExtendedIterator over subjects of p, presented as the facet.
      */
     protected <T extends RDFNode> ExtendedIterator<T> findByDefiningPropertyAs( Property p, Class<T> asKey ) {
-        return findByDefiningProperty( p ).mapWith( new SubjectNodeAs<>( asKey ) );
+        return findByDefiningProperty( p ).mapWith( x -> getNodeAs( x.getSubject(), asKey ) );
     }
 
 
@@ -3113,32 +3113,6 @@ public class OntModelImpl extends ModelCom implements OntModel
     // Inner class definitions
     //==============================================================================
 
-    /** Map triple subjects or single nodes to subject enh nodes, presented as() the given class */
-    protected class SubjectNodeAs<To extends RDFNode> implements Map1<Triple, To>
-    {
-        protected Class<To> m_asKey;
-
-        protected SubjectNodeAs( Class<To> asKey ) { m_asKey = asKey; }
-
-        @Override
-        public To map1( Triple x ) {
-            return getNodeAs( x.getSubject(), m_asKey );
-        }
-
-    }
-
-    /** Map triple subjects or single nodes to subject enh nodes, presented as() the given class */
-    protected class NodeAs<To extends RDFNode> implements Map1<Node, To>
-    {
-        protected Class<To> m_asKey;
-        protected NodeAs( Class<To> asKey ) { m_asKey = asKey; }
-
-        @Override
-        public To map1( Node x ) {
-            return getNodeAs( x, m_asKey );
-        }
-    }
-
     protected class NodeCanAs<T extends RDFNode> extends Filter<Node>
     {
         protected Class<T> m_asKey;

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/ontology/impl/OntPropertyImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntPropertyImpl.java b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntPropertyImpl.java
index def160d..8d11a72 100644
--- a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntPropertyImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntPropertyImpl.java
@@ -762,7 +762,7 @@ public class OntPropertyImpl
      */
     @Override
     public ExtendedIterator<OntProperty> listInverse() {
-        return getModel().listStatements( null, getProfile().INVERSE_OF(), this ).mapWith( new SubjectAsMapper<>( OntProperty.class ) );
+        return getModel().listStatements( null, getProfile().INVERSE_OF(), this ).mapWith( s -> s.getSubject().as( OntProperty.class ) );
     }
 
     /**
@@ -874,7 +874,7 @@ public class OntPropertyImpl
     @Override
     public ExtendedIterator<Restriction> listReferringRestrictions() {
         return getModel().listStatements( null, getProfile().ON_PROPERTY(), this )
-                         .mapWith( new SubjectAsMapper<>( Restriction.class ) );
+                         .mapWith( s -> s.getSubject().as( Restriction.class ) );
     }
 
 

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/ontology/impl/OntResourceImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntResourceImpl.java b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntResourceImpl.java
index 64d14c4..cdd18fe 100644
--- a/jena-core/src/main/java/org/apache/jena/ontology/impl/OntResourceImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/ontology/impl/OntResourceImpl.java
@@ -24,6 +24,7 @@ package org.apache.jena.ontology.impl;
 // Imports
 ///////////////
 import java.util.*;
+import java.util.function.Function;
 
 import org.apache.jena.datatypes.xsd.XSDDatatype ;
 import org.apache.jena.enhanced.* ;
@@ -338,7 +339,7 @@ public class OntResourceImpl
     public ExtendedIterator<RDFNode> listSeeAlso() {
         checkProfile( getProfile().SEE_ALSO(), "SEE_ALSO" );
         return WrappedIterator.create( listProperties( getProfile().SEE_ALSO() ) )
-               .mapWith( new ObjectAsOntResourceMapper() );
+               .mapWith( s -> asOntResource( s.getObject() ) );
     }
 
     /**
@@ -406,7 +407,7 @@ public class OntResourceImpl
     public ExtendedIterator<RDFNode> listIsDefinedBy() {
         checkProfile( getProfile().IS_DEFINED_BY(), "IS_DEFINED_BY" );
         return WrappedIterator.create( listProperties( getProfile().IS_DEFINED_BY() ) )
-               .mapWith( new ObjectAsOntResourceMapper() );
+               .mapWith( s -> asOntResource( s.getObject() ) );
     }
 
     /**
@@ -482,7 +483,7 @@ public class OntResourceImpl
     public ExtendedIterator<String> listVersionInfo() {
         checkProfile( getProfile().VERSION_INFO(), "VERSION_INFO" );
         return WrappedIterator.create( listProperties( getProfile().VERSION_INFO() ) )
-               .mapWith( new ObjectAsStringMapper() );
+               .mapWith( s -> s.getString() );
     }
 
     /**
@@ -583,7 +584,7 @@ public class OntResourceImpl
         checkProfile( getProfile().LABEL(), "LABEL" );
         return WrappedIterator.create( listProperties( getProfile().LABEL() ) )
                .filterKeep( new LangTagFilter( lang ) )
-               .mapWith( new ObjectMapper() );
+               .mapWith( s -> s.getObject() );
     }
 
     /**
@@ -713,7 +714,7 @@ public class OntResourceImpl
         checkProfile( getProfile().COMMENT(), "COMMENT" );
         return WrappedIterator.create( listProperties( getProfile().COMMENT() ) )
                .filterKeep( new LangTagFilter( lang ) )
-               .mapWith( new ObjectMapper() );
+               .mapWith( s -> s.getObject() );
     }
 
     /**
@@ -1014,7 +1015,7 @@ public class OntResourceImpl
      */
     @Override
     public NodeIterator listPropertyValues( Property property ) {
-        return new NodeIteratorImpl( listProperties( property ).mapWith( new ObjectAsOntResourceMapper() ), null );
+        return new NodeIteratorImpl( listProperties( property ).mapWith( s -> asOntResource( s.getObject() ) ), null );
     }
 
     /**
@@ -1438,7 +1439,7 @@ public class OntResourceImpl
     /** Answer an iterator for the given property, whose values are .as() some class */
     protected <T extends RDFNode> ExtendedIterator<T> listAs( Property p, String name, Class<T> cls ) {
         checkProfile( p, name );
-        return WrappedIterator.create( listProperties( p ) ).mapWith( new ObjectAsMapper<>( cls ) );
+        return WrappedIterator.create( listProperties( p ) ).mapWith( s -> s.getObject().as( cls ) );
     }
 
 
@@ -1531,7 +1532,7 @@ public class OntResourceImpl
         // determine the subject and object pairs for the list statements calls
         Resource subject = inverse ? null : this;
         Resource object  = inverse ? this : null;
-        Map1<Statement, T> mapper      = inverse ? new SubjectAsMapper<>( cls ) : new ObjectAsMapper<>( cls );
+        Function<Statement, T> mapper      = inverse ? s -> s.getSubject().as( cls ) : s -> s.getObject().as( cls );
 
         // are we working on an inference graph?
         OntModel m = (OntModel) getGraph();
@@ -1567,7 +1568,7 @@ public class OntResourceImpl
      * @return
      */
     @SuppressWarnings("unchecked")
-    private <T extends Resource> Iterator<T> computeDirectValues( Property p, Property orderRel, boolean inverse, Resource subject, Resource object, Map1<Statement, T> mapper ) {
+    private <T extends Resource> Iterator<T> computeDirectValues( Property p, Property orderRel, boolean inverse, Resource subject, Resource object, Function<Statement, T> mapper ) {
         // graph does not support direct directly
         ExtendedIterator<T> j = getModel().listStatements( subject, p, object )
                                        .mapWith( mapper );
@@ -1651,78 +1652,6 @@ public class OntResourceImpl
     // Inner class definitions
     //==============================================================================
 
-    /** Implementation of Map1 that performs as( Class ) for a given class, against an argument {@link RDFNode} */
-    protected static class AsMapper<T extends RDFNode> implements Map1<RDFNode, T>
-    {
-        private Class<T> m_as;
-        public AsMapper( Class<T> as ) { m_as = as; }
-        @Override
-        public T map1( RDFNode x ) { return x.as( m_as ); }
-    }
-
-    /** Implementation of Map1 that performs as( Class ) for a given class, against an argument {@link Resource} */
-    protected static class ResourceAsMapper<T extends RDFNode> implements Map1<Resource, T>
-    {
-        private Class<T> m_as;
-        public ResourceAsMapper( Class<T> as ) { m_as = as; }
-        @Override
-        public T map1( Resource x ) { return x.as( m_as ); }
-    }
-
-    /** Implementation of Map1 that performs as( Class ) for a given class, on the subject of a statement */
-    protected static class SubjectAsMapper<T extends RDFNode> implements Map1<Statement, T>
-    {
-        private Class<T> m_as;
-        public SubjectAsMapper( Class<T> as ) { m_as = as; }
-        @Override
-        public T map1( Statement x ) {
-            return x.getSubject().as( m_as );
-        }
-    }
-
-    /** Implementation of Map1 that extracts the subject of a statement */
-    protected static class SubjectMapper implements Map1<Statement, Resource>
-    {
-        @Override
-        public Resource map1( Statement x ) {
-            return x.getSubject();
-        }
-    }
-
-    /** Implementation of Map1 that performs as( Class ) for a given class, on the object of a statement */
-    protected static class ObjectAsMapper<T extends RDFNode> implements Map1<Statement, T>
-    {
-        private Class<T> m_as;
-        public ObjectAsMapper( Class<T> as )
-            { m_as = as; }
-        @Override
-        public T map1( Statement x ) {
-            return x.getObject().as( m_as );
-        }
-    }
-
-    /** Implementation of Map1 that performs getString on the object of a statement */
-    protected class ObjectAsStringMapper implements Map1<Statement, String>
-    {
-        @Override
-        public String map1( Statement x ) { return x.getString(); }
-    }
-
-    /** Implementation of Map1 that returns the object of a statement */
-    protected static class ObjectMapper implements Map1<Statement, RDFNode>
-    {
-        @Override
-        public RDFNode map1( Statement x ) { return x.getObject(); }
-    }
-
-    /** Implementation of Map1 that returns the object of a statement as an ont resource */
-    protected static class ObjectAsOntResourceMapper implements Map1<Statement, RDFNode>
-    {
-        @Override
-        public RDFNode map1( Statement x ) {
-            return asOntResource( x.getObject() );
-        }
-    }
 
     /** Filter for matching language tags on the objects of statements */
     protected class LangTagFilter extends Filter<Statement>

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/rdf/model/RDFList.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/RDFList.java b/jena-core/src/main/java/org/apache/jena/rdf/model/RDFList.java
index 0c58f5c..668974f 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/RDFList.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/RDFList.java
@@ -24,6 +24,7 @@ package org.apache.jena.rdf.model;
 // Imports
 ///////////////
 import java.util.*;
+import java.util.function.Function;
 
 import org.apache.jena.util.iterator.* ;
 
@@ -348,10 +349,10 @@ public interface RDFList
     /**
      * <p>Answer an iterator of the elements of this list, to each of which
      * the given map function has been applied.</p>
-     * @param fn A Map function
+     * @param fn A mapping function
      * @return The iterator of the elements of this list mapped with the given map function.
      */
-    public <T> ExtendedIterator<T> mapWith( Map1<RDFNode, T> fn );
+    public <T> ExtendedIterator<T> mapWith( Function<RDFNode, T> fn );
 
 
     /**

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/rdf/model/Statement.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/Statement.java b/jena-core/src/main/java/org/apache/jena/rdf/model/Statement.java
index a1aecd1..14bb52b 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/Statement.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/Statement.java
@@ -396,22 +396,10 @@ public interface Statement extends FrontsTriple
     */
     public static class Util
         {
-        public static final Map1<Statement, Resource> getSubject = new Map1<Statement, Resource>() 
-            {
-            @Override
-            public Resource map1( Statement o ) { return o.getSubject(); }
-            };
+        public static final Map1<Statement, Resource> getSubject = s -> s.getSubject();
             
-        public static final Map1<Statement, Property> getPredicate = new Map1<Statement, Property>() 
-            {
-            @Override
-            public Property map1( Statement o ) { return o.getPredicate(); }
-            };
+        public static final Map1<Statement, Property> getPredicate = s -> s.getPredicate();
             
-        public static final Map1<Statement, RDFNode> getObject = new Map1<Statement, RDFNode>() 
-            {
-            @Override
-            public RDFNode map1( Statement o ) { return o.getObject(); }
-            };
-        }
+        public static final Map1<Statement, RDFNode> getObject = s -> s.getObject();
+    }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/rdf/model/impl/IteratorFactory.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/IteratorFactory.java b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/IteratorFactory.java
index f6f8b45..622d347 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/IteratorFactory.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/IteratorFactory.java
@@ -39,10 +39,7 @@ public final class IteratorFactory
 	 */
 	static public StmtIterator asStmtIterator( Iterator<Triple> i, final ModelCom m ) 
 	    {
-	    Map1<Triple, Statement> asStatement = new Map1<Triple, Statement>() 
-	        { @Override
-            public Statement map1( Triple t ) { return m.asStatement( t ); }};
-	    return new StmtIteratorImpl( WrappedIterator.create( i ).mapWith( asStatement ) );
+	    return new StmtIteratorImpl( WrappedIterator.create( i ).mapWith( t ->  m.asStatement( t ) ) );
 	   }
 
 	/**
@@ -50,10 +47,7 @@ public final class IteratorFactory
 	 */
 	static public ResIterator asResIterator( Iterator<Node> i, final ModelCom m) 
 	    {
-		Map1<Node, Resource> asResource = new Map1<Node, Resource>() 
-		    { @Override
-            public Resource map1( Node o) { return (Resource) m.asRDFNode( o ); }};
-		return new ResIteratorImpl( WrappedIterator.create( i ).mapWith( asResource ), null );
+		return new ResIteratorImpl( WrappedIterator.create( i ).mapWith( o -> (Resource) m.asRDFNode( o ) ), null );
 	    }
 
 	/**
@@ -61,10 +55,7 @@ public final class IteratorFactory
 	 */
 	static public NodeIterator asRDFNodeIterator( Iterator<Node> i, final ModelCom m) 
 	    {      
-	    Map1<Node, RDFNode> asRDFNode = new Map1<Node, RDFNode>() 
-	        { @Override
-            public RDFNode map1( Node o) { return m.asRDFNode( o ); }};
-	    return new NodeIteratorImpl( WrappedIterator.create( i ).mapWith( asRDFNode ), null );
+	    return new NodeIteratorImpl( WrappedIterator.create( i ).mapWith( o -> m.asRDFNode( o ) ), null );
 	    }
 	    
     static  Resource asResource( Node n, ModelCom m )  

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
index 4410186..7162678 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
@@ -1120,13 +1120,8 @@ implements Model, PrefixMapping, Lock
     }
 
     private Iterator<Triple> asTriples( StmtIterator it )
-    { return it.mapWith( mapAsTriple ); }
+    { return it.mapWith( s -> s.asTriple() ); }
 
-    private Map1<Statement, Triple> mapAsTriple = new Map1<Statement, Triple>() {
-        @Override
-        public Triple map1( Statement s ) { return s.asTriple(); } 
-    };
-    
     /**
         remove all the Statements from the model by converting them to triples and
         removing those triples from the underlying graph.        
@@ -1413,11 +1408,7 @@ implements Model, PrefixMapping, Lock
       { return new ModelCom( g ); }
 
       public StmtIterator asStatements( final Iterator<Triple> it ) 
-      { return new StmtIteratorImpl( new Map1Iterator<>( mapAsStatement, it ) ); }
-
-      protected Map1<Triple, Statement> mapAsStatement = new Map1<Triple, Statement>()
-          { @Override
-          public Statement map1( Triple t ) { return asStatement( t ); } };
+      { return new StmtIteratorImpl( new Map1Iterator<>( t -> asStatement( t ), it ) ); }
 
           public StmtIterator listBySubject( Container cont )
           { return listStatements( cont, null, (RDFNode) null ); }

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelReifier.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelReifier.java b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelReifier.java
index c5a6933..5f9be14 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelReifier.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelReifier.java
@@ -24,7 +24,6 @@ import org.apache.jena.graph.Triple ;
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.shared.AlreadyReifiedException ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Map1 ;
 
 /**
     This class impedance-matches the reification requests of Model[Com] to the operations
@@ -151,22 +150,12 @@ public class ModelReifier
             createReifiedStatement( rs.getURI(), rs.getStatement() );
             }
         }
-        
-    /**
-        A mapper that maps modes to their corresponding ReifiedStatement objects. This
-        cannot be static: getRS cannot be static, because the mapping is model-specific.
-    */
-    protected final Map1<Node, ReifiedStatement> mapToRS = new Map1<Node, ReifiedStatement>()
-        {
-        @Override
-        public ReifiedStatement map1( Node node ) { return getRS( node ); }
-        };
 
     private ExtendedIterator<ReifiedStatement> findReifiedStatements()
-        { return ReifierStd .allNodes(model.getGraph()) .mapWith( mapToRS ); }
+        { return ReifierStd .allNodes(model.getGraph()) .mapWith( n -> getRS( n ) ); }
 
     private ExtendedIterator<ReifiedStatement> findReifiedStatements( Triple t )
-        { return ReifierStd .allNodes(model.getGraph(), t ) .mapWith( mapToRS ); }
+        { return ReifierStd .allNodes(model.getGraph(), t ) .mapWith( n -> getRS( n ) ); }
         
     /**
         Answer a ReifiedStatement that is based on the given node. 

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/rdf/model/impl/RDFListImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/RDFListImpl.java b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/RDFListImpl.java
index a99ae92..d9f5e6d 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/RDFListImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/RDFListImpl.java
@@ -24,6 +24,7 @@ package org.apache.jena.rdf.model.impl;
 // Imports
 ///////////////
 import java.util.*;
+import java.util.function.Function;
 
 import org.apache.jena.enhanced.* ;
 import org.apache.jena.graph.* ;
@@ -669,7 +670,7 @@ public class RDFListImpl
      * @return The iterator of the elements of this list mapped with the given map function.
      */
     @Override
-    public <T> ExtendedIterator<T> mapWith( Map1<RDFNode, T> fn ) {
+    public <T> ExtendedIterator<T> mapWith( Function<RDFNode, T> fn ) {
         return iterator().mapWith( fn );
     }
         

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Relation.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Relation.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Relation.java
index 60e43d9..111ab6d 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Relation.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Relation.java
@@ -23,9 +23,6 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
-import java.util.Map.Entry;
-
-import org.apache.jena.util.iterator.Map1 ;
 import org.apache.jena.util.iterator.Map1Iterator ;
 import org.apache.jena.util.iterator.WrappedIterator ;
 
@@ -207,23 +204,11 @@ class Relation<T> {
         return cols.get(b);
     }
  
-    // ------------
-    private static <X> Map1<X, PairEntry<X, X>> inner(final X a)
-    {
-        return new Map1<X, PairEntry<X, X>>() {
-            @Override
-            public PairEntry<X, X> map1(X b)
-            {
-                return new PairEntry<>(a, b) ;
-            }
-        } ;
-    }
-
     private static <T> Iterator<PairEntry<T, T>> pairEntry(Map.Entry<T, Set<T>> pair)
     {
         final T a = pair.getKey() ;
         Set<T> bs = pair.getValue() ;
-        return new Map1Iterator<>(inner(a), bs.iterator()) ;
+        return new Map1Iterator<>(b -> new PairEntry<>(a, b), bs.iterator()) ;
     }
 
     /**
@@ -235,16 +220,8 @@ class Relation<T> {
      */   
     public Iterator<PairEntry<T, T>> iterator()
     {
-        Map1<Map.Entry<T, Set<T>>, Iterator<PairEntry<T, T>>> m1 = 
-        new Map1<Map.Entry<T, Set<T>>, Iterator<PairEntry<T, T>>>(){
-            @Override
-            public Iterator<PairEntry<T, T>> map1(Entry<T, Set<T>> entry)
-            {
-                return pairEntry(entry) ;
-            }} ;
-        
         Map1Iterator<Map.Entry<T, Set<T>>,Iterator<PairEntry<T, T>>> iter1 =
-            new Map1Iterator<>(m1 , rows.entrySet().iterator()) ;
+            new Map1Iterator<>( entry -> pairEntry(entry) , rows.entrySet().iterator()) ;
         // And now flatten it.
         Iterator<PairEntry<T, T>> iter2 = WrappedIterator.createIteratorIterator(iter1) ;
         return iter2 ;

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java
index 9253d3f..24d8ebf 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/Unparser.java
@@ -1587,16 +1587,8 @@ class Unparser {
         // Now all the pleasing resources are in the buckets.
         // Add all their iterators togethor:
 
-        Map1<Set<Resource>, Iterator<Resource>> mapper = new Map1<Set<Resource>, Iterator<Resource>>() {
-
-            @Override
-            public Iterator<Resource> map1(Set<Resource> bkt)
-            {
-                return bkt.iterator() ;
-            }} ;
-        
-            return WrappedIterator.createIteratorIterator(
-            		new Map1Iterator<>(mapper,
+        return WrappedIterator.createIteratorIterator(
+            		new Map1Iterator<>(bkt -> bkt.iterator(),
             				Arrays.asList(bucketArray).iterator()));
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/util/iterator/ExtendedIterator.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/util/iterator/ExtendedIterator.java b/jena-core/src/main/java/org/apache/jena/util/iterator/ExtendedIterator.java
index af83581..2a0eeb6 100644
--- a/jena-core/src/main/java/org/apache/jena/util/iterator/ExtendedIterator.java
+++ b/jena-core/src/main/java/org/apache/jena/util/iterator/ExtendedIterator.java
@@ -19,6 +19,7 @@
 package org.apache.jena.util.iterator;
 
 import java.util.*;
+import java.util.function.Function;
 
 /**
     an ExtendedIterator is a ClosableIterator on which other operations are
@@ -67,7 +68,7 @@ public interface ExtendedIterator<T> extends ClosableIterator<T>
          _map1_ to the corresponding element of _this_. _this_ is not
          copied; it is consumed as the result is consumed.
      */
-     public <U> ExtendedIterator<U> mapWith( Map1<T, U> map1 );
+     public <U> ExtendedIterator<U> mapWith( Function<T, U> map1 );
 
     /**
          Answer a list of the [remaining] elements of this iterator, in order,

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/util/iterator/LazyIterator.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/util/iterator/LazyIterator.java b/jena-core/src/main/java/org/apache/jena/util/iterator/LazyIterator.java
index 4d3b3a4..2411413 100644
--- a/jena-core/src/main/java/org/apache/jena/util/iterator/LazyIterator.java
+++ b/jena-core/src/main/java/org/apache/jena/util/iterator/LazyIterator.java
@@ -18,6 +18,8 @@
 
 package org.apache.jena.util.iterator;
 
+import java.util.function.Function;
+
 /** An ExtendedIterator that is created lazily.
  * This is useful when constructing an iterator is expensive and 
  * you'd prefer to delay doing it until certain it's actually needed.
@@ -74,7 +76,7 @@ abstract public class LazyIterator<T> implements ExtendedIterator<T> {
 	}
 
 	@Override
-    public <U> ExtendedIterator<U> mapWith(Map1<T,U> map1) {
+    public <U> ExtendedIterator<U> mapWith(Function<T,U> map1) {
 		lazy();
 		return it.mapWith(map1);
 	}

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/util/iterator/Map1.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/util/iterator/Map1.java b/jena-core/src/main/java/org/apache/jena/util/iterator/Map1.java
index 799f555..bb2fb59 100644
--- a/jena-core/src/main/java/org/apache/jena/util/iterator/Map1.java
+++ b/jena-core/src/main/java/org/apache/jena/util/iterator/Map1.java
@@ -18,13 +18,16 @@
 
 package org.apache.jena.util.iterator;
 
+import java.util.function.Function;
+
 /** Converts an Object to another Object.
  */
-public interface Map1<From, To>
-{  /** Convert an object.
-    * @param o The thing to be converted.
-    * @return The converted thing.
-    * 
-    */
-    To map1( From o );
+@Deprecated
+public interface Map1<From, To> extends Function<From, To>
+{
+	@Deprecated
+	default To map1(From input) {
+		return apply(input);
+	}
+	
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/util/iterator/Map1Iterator.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/util/iterator/Map1Iterator.java b/jena-core/src/main/java/org/apache/jena/util/iterator/Map1Iterator.java
index ac90c3f..ea79c7a 100644
--- a/jena-core/src/main/java/org/apache/jena/util/iterator/Map1Iterator.java
+++ b/jena-core/src/main/java/org/apache/jena/util/iterator/Map1Iterator.java
@@ -19,6 +19,7 @@
 package org.apache.jena.util.iterator;
 
 import java.util.Iterator;
+import java.util.function.Function;
 
 /**
     An iterator that consumes an underlying iterator and maps its results before
@@ -27,7 +28,7 @@ import java.util.Iterator;
 
 public class Map1Iterator<From, To> extends NiceIterator<To> implements ClosableIterator<To>
     {
-	private Map1<From, To> map;
+	private Function<From, To> map;
 	private Iterator<From> base;
 	
         /**
@@ -35,14 +36,14 @@ public class Map1Iterator<From, To> extends NiceIterator<To> implements Closable
          * @param map The conversion to apply.
          * @param base the iterator of elements to convert
          */
-	public Map1Iterator( Map1<From, To> map, Iterator<From> base ) 
+	public Map1Iterator( Function<From, To> map, Iterator<From> base ) 
         {
         this.map = map;
         this.base = base;
         }
     
 	public @Override To next() 
-        { return map.map1( base.next() ); }
+        { return map.apply( base.next() ); }
 	
 	public @Override boolean hasNext()
 	    { return base.hasNext(); }

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/main/java/org/apache/jena/util/iterator/NiceIterator.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/util/iterator/NiceIterator.java b/jena-core/src/main/java/org/apache/jena/util/iterator/NiceIterator.java
index 23db070..6e0432f 100644
--- a/jena-core/src/main/java/org/apache/jena/util/iterator/NiceIterator.java
+++ b/jena-core/src/main/java/org/apache/jena/util/iterator/NiceIterator.java
@@ -19,6 +19,7 @@
 package org.apache.jena.util.iterator;
 
 import java.util.*;
+import java.util.function.Function;
 
 /**
     NiceIterator is the standard base class implementing ExtendedIterator. It provides
@@ -165,7 +166,7 @@ public class NiceIterator<T> implements ExtendedIterator<T>
         make a new iterator which is the elementwise _map1_ of the base iterator.
     */     
     @Override
-    public <U> ExtendedIterator<U> mapWith( Map1<T, U> map1 )
+    public <U> ExtendedIterator<U> mapWith( Function<T, U> map1 )
         { return new Map1Iterator<>( map1, this ); }
 
     /**

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/test/java/org/apache/jena/graph/test/TestFindLiterals.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/test/TestFindLiterals.java b/jena-core/src/test/java/org/apache/jena/graph/test/TestFindLiterals.java
index 3c2bdfa..bbe93e9 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/test/TestFindLiterals.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/test/TestFindLiterals.java
@@ -27,18 +27,11 @@ import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.graph.impl.LiteralLabelFactory ;
-import org.apache.jena.util.iterator.Map1 ;
 
 public class TestFindLiterals extends GraphTestBase
     {
     public TestFindLiterals( String name )
         { super( name ); }
-
-    static final Map1<Triple, Node> getObject = new Map1<Triple, Node>() 
-        {
-        @Override
-        public Node map1( Triple o ) { return o.getObject(); }
-        };
     
     public static TestFindLiterals aTest
         ( final String graph, final int size, final String search, final String results )
@@ -56,7 +49,7 @@ public class TestFindLiterals extends GraphTestBase
                 Node literal = NodeCreateUtils.create( search );
             //
                 assertEquals( "graph has wrong size", size, g.size() );
-                Set<Node> got = g.find( Node.ANY, Node.ANY, literal ).mapWith( getObject ).toSet();
+                Set<Node> got = g.find( Node.ANY, Node.ANY, literal ).mapWith( t -> t.getObject() ).toSet();
                 assertEquals( nodeSet( results ), got );
                 }
             };

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/test/java/org/apache/jena/graph/test/TestTriple.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/test/TestTriple.java b/jena-core/src/test/java/org/apache/jena/graph/test/TestTriple.java
index c21d34e..16fbcd7 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/test/TestTriple.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/test/TestTriple.java
@@ -258,9 +258,9 @@ public class TestTriple extends GraphTestBase
     
     public void testTripleMaps()
         {
-        assertEquals( node( "x" ), Triple.getSubject.map1( NodeCreateUtils.createTriple( "x P z" ) ) );
-        assertEquals( node( "P" ), Triple.getPredicate.map1( NodeCreateUtils.createTriple( "x P z" ) ) );
-        assertEquals( node( "z" ), Triple.getObject.map1( NodeCreateUtils.createTriple( "x P z" ) ) );
+        assertEquals( node( "x" ), Triple.getSubject.apply( NodeCreateUtils.createTriple( "x P z" ) ) );
+        assertEquals( node( "P" ), Triple.getPredicate.apply( NodeCreateUtils.createTriple( "x P z" ) ) );
+        assertEquals( node( "z" ), Triple.getObject.apply( NodeCreateUtils.createTriple( "x P z" ) ) );
         }
     
 

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestList.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestList.java b/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestList.java
index 0672bbf..826c3aa 100644
--- a/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestList.java
+++ b/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestList.java
@@ -29,7 +29,6 @@ import java.util.List;
 
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.rdf.model.test.helpers.TestingModelFactory ;
-import org.apache.jena.util.iterator.Map1 ;
 import org.apache.jena.vocabulary.RDF ;
 import org.junit.Assert;
 import org.slf4j.Logger;
@@ -548,13 +547,7 @@ public class TestList extends AbstractModelTestBase
 		model.read(getFileName("ontology/list5.rdf"));
 
 		final RDFList root = getListRoot(model);
-		TestList.iteratorTest(root.mapWith(new Map1<RDFNode, String>() {
-			@Override
-			public String map1( final RDFNode x )
-			{
-				return ((Resource) x).getLocalName();
-			}
-		}), new Object[] { "a", "b", "c", "d", "e" });
+		TestList.iteratorTest(root.mapWith(n ->((Resource) n).getLocalName()), new Object[] { "a", "b", "c", "d", "e" });
 
 	}
 

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestStatements.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestStatements.java b/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestStatements.java
index dd0fef0..498f357 100644
--- a/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestStatements.java
+++ b/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestStatements.java
@@ -117,11 +117,11 @@ public class TestStatements extends AbstractModelTestBase
 	{
 		final Statement s = ModelHelper.statement("sub pred obj");
 		Assert.assertEquals(ModelHelper.resource("sub"),
-				Statement.Util.getSubject.map1(s));
+				Statement.Util.getSubject.apply(s));
 		Assert.assertEquals(ModelHelper.resource("pred"),
-				Statement.Util.getPredicate.map1(s));
+				Statement.Util.getPredicate.apply(s));
 		Assert.assertEquals(ModelHelper.resource("obj"),
-				Statement.Util.getObject.map1(s));
+				Statement.Util.getObject.apply(s));
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-core/src/test/java/org/apache/jena/util/iterator/test/TestMapIterators.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/util/iterator/test/TestMapIterators.java b/jena-core/src/test/java/org/apache/jena/util/iterator/test/TestMapIterators.java
index 333547a..ca1d9d4 100644
--- a/jena-core/src/test/java/org/apache/jena/util/iterator/test/TestMapIterators.java
+++ b/jena-core/src/test/java/org/apache/jena/util/iterator/test/TestMapIterators.java
@@ -30,14 +30,8 @@ public class TestMapIterators extends ModelTestBase
 
     public void testCloseClosesBaseIterator()
         {
-        Map1<String, String> map = new Map1<String, String>() 
-            {
-            @Override
-            public String map1( String o )
-                { return null; }
-            };
         LoggingClosableIterator<String> base = new LoggingClosableIterator<>( null );
-        Map1Iterator<String, String> mit = new Map1Iterator<>( map, base );
+        Map1Iterator<String, String> mit = new Map1Iterator<>( s -> null, base );
         mit.close();
         assertTrue( "base must have been closed by closing map", base.isClosed() );
         }

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredContainerImpl.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredContainerImpl.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredContainerImpl.java
index 0339c8b..1f7f969 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredContainerImpl.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredContainerImpl.java
@@ -35,7 +35,6 @@ import org.apache.jena.permissions.utils.ContainerFilter;
 import org.apache.jena.permissions.utils.PermStatementFilter;
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Map1 ;
 import org.apache.jena.util.iterator.WrappedIterator ;
 import org.apache.jena.vocabulary.RDF ;
 
@@ -342,7 +341,7 @@ public class SecuredContainerImpl extends SecuredResourceImpl implements
 	        		result.add( stmt );
 	        	}
 	        }
-	        return new SecuredNodeIterator<RDFNode>(getModel(), new StatementRemovingIterator(result.iterator()).mapWith( new NodeMap() ) );
+	        return new SecuredNodeIterator<RDFNode>(getModel(), new StatementRemovingIterator(result.iterator()).mapWith( s -> s.getObject() ) );
         }
         finally {
         	iter.close();
@@ -356,14 +355,7 @@ public class SecuredContainerImpl extends SecuredResourceImpl implements
 		final Set<Action> permsCopy = new HashSet<Action>(perms);
 		permsCopy.add(Action.Read);
 		final ExtendedIterator<RDFNode> ni = getStatementIterator(perms)
-				.mapWith(new Map1<Statement, RDFNode>() {
-
-					@Override
-					public RDFNode map1( final Statement o )
-					{
-						return o.getObject();
-					}
-				});
+				.mapWith(o -> o.getObject());
 		return new SecuredNodeIterator<RDFNode>(getModel(), ni);
 
 	}
@@ -525,18 +517,7 @@ public class SecuredContainerImpl extends SecuredResourceImpl implements
 	 * 
 	 * }
 	 */
-	
-	static class NodeMap implements Map1<Statement,RDFNode>
-	{
 
-		@Override
-		public RDFNode map1( Statement o )
-		{
-			return o.getObject();
-		}
-		
-	}
-	
 	static class ContainerComparator implements Comparator<Statement>
 	{
 

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredNodeIterator.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredNodeIterator.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredNodeIterator.java
index 33b0119..558f184 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredNodeIterator.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredNodeIterator.java
@@ -21,6 +21,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.Set;
+import java.util.function.Function;
 
 import org.apache.jena.permissions.model.SecuredModel;
 import org.apache.jena.permissions.model.SecuredRDFNode;
@@ -28,14 +29,13 @@ import org.apache.jena.rdf.model.NodeIterator ;
 import org.apache.jena.rdf.model.RDFNode ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
 import org.apache.jena.util.iterator.Filter ;
-import org.apache.jena.util.iterator.Map1 ;
 
 /**
  * A secured RDFNode iterator implementation
  */
 public class SecuredNodeIterator<T extends RDFNode> implements NodeIterator
 {
-	private class PermNodeMap<N extends RDFNode> implements Map1<N, RDFNode>
+	private class PermNodeMap<N extends RDFNode> implements Function<N, RDFNode>
 	{
 		private final SecuredModel securedModel;
 
@@ -45,7 +45,7 @@ public class SecuredNodeIterator<T extends RDFNode> implements NodeIterator
 		}
 
 		@Override
-		public SecuredRDFNode map1( final RDFNode o )
+		public SecuredRDFNode apply( final RDFNode o )
 		{
 			return SecuredRDFNodeImpl.getInstance(securedModel, o);
 		}
@@ -100,7 +100,7 @@ public class SecuredNodeIterator<T extends RDFNode> implements NodeIterator
 	}
 
 	@Override
-	public <U> ExtendedIterator<U> mapWith( final Map1<RDFNode, U> map1 )
+	public <U> ExtendedIterator<U> mapWith( final Function<RDFNode, U> map1 )
 	{
 		return iter.mapWith(map1);
 	}

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRDFListImpl.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRDFListImpl.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRDFListImpl.java
index 060dca4..8056c1e 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRDFListImpl.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRDFListImpl.java
@@ -22,6 +22,7 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
+import java.util.function.Function;
 
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -38,7 +39,6 @@ import org.apache.jena.permissions.utils.RDFListIterator;
 import org.apache.jena.permissions.utils.RDFListSecFilter;
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.Map1 ;
 import org.apache.jena.util.iterator.WrappedIterator ;
 import org.apache.jena.vocabulary.RDF ;
 
@@ -46,11 +46,11 @@ public class SecuredRDFListImpl extends SecuredResourceImpl implements
 		SecuredRDFList
 {
 	// called plain node but still returns a secured node
-	private class PlainNodeMap implements Map1<RDFList, RDFNode>
+	private class PlainNodeMap implements Function<RDFList, RDFNode>
 	{
 
 		@Override
-		public RDFNode map1( final RDFList o )
+		public RDFNode apply( final RDFList o )
 		{
 			return SecuredRDFNodeImpl.getInstance(getModel(), o
 					.getRequiredProperty(listFirst()).getObject());
@@ -58,18 +58,18 @@ public class SecuredRDFListImpl extends SecuredResourceImpl implements
 
 	}
 
-	private class SecuredListMap implements Map1<RDFList, SecuredRDFList>
+	private class SecuredListMap implements Function<RDFList, SecuredRDFList>
 	{
 
 		@Override
-		public SecuredRDFList map1( final RDFList o )
+		public SecuredRDFList apply( final RDFList o )
 		{
 			return SecuredRDFListImpl.getInstance(getModel(), o);
 		}
 
 	}
 
-	private class SecuredNodeMap implements Map1<RDFList, SecuredRDFNode>
+	private class SecuredNodeMap implements Function<RDFList, SecuredRDFNode>
 	{
 
 		private Property p;
@@ -79,7 +79,7 @@ public class SecuredRDFListImpl extends SecuredResourceImpl implements
 		}
 		
 		@Override
-		public SecuredRDFNode map1( final RDFList o )
+		public SecuredRDFNode apply( final RDFList o )
 		{
 			return SecuredRDFNodeImpl.getInstance(getModel(), o
 					.getRequiredProperty(p).getObject());
@@ -525,16 +525,7 @@ public class SecuredRDFListImpl extends SecuredResourceImpl implements
 		if (canRead())
 		{
 			final ExtendedIterator<RDFNode> iter = getSecuredRDFListIterator(Action.Read)
-					.mapWith( new Map1<RDFList, RDFNode>()
-					{
-
-						@Override
-						public RDFNode map1( final RDFList o )
-						{
-							return  o.getRequiredProperty(listFirst()).getObject();
-						}
-
-					});
+					.mapWith( list -> list.getRequiredProperty(listFirst()).getObject());
 			if (iter.hasNext())
 			{
 				retval = getModel().createList(iter);
@@ -756,7 +747,7 @@ public class SecuredRDFListImpl extends SecuredResourceImpl implements
 	}
 
 	@Override
-	public <T> ExtendedIterator<T> mapWith( final Map1<RDFNode, T> fn )
+	public <T> ExtendedIterator<T> mapWith( final Function<RDFNode, T> fn )
 	{
 		return iterator().mapWith(fn);
 	}
@@ -917,7 +908,7 @@ public class SecuredRDFListImpl extends SecuredResourceImpl implements
 				if (i == idx)
 				{
 					final SecuredRDFList list = iter.next();
-					final SecuredRDFNode retval = map.map1(list);
+					final SecuredRDFNode retval = map.apply(list);
 					final Triple t = new Triple(list.asNode(), listFirst()
 							.asNode(), retval.asNode());
 					final Triple t2 = new Triple(list.asNode(), listFirst()

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRSIterator.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRSIterator.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRSIterator.java
index 6151b58..2160880 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRSIterator.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRSIterator.java
@@ -20,6 +20,7 @@ package org.apache.jena.permissions.model.impl;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
+import java.util.function.Function;
 
 import org.apache.jena.permissions.SecurityEvaluator;
 import org.apache.jena.permissions.SecurityEvaluator.Action;
@@ -30,7 +31,6 @@ import org.apache.jena.rdf.model.RSIterator ;
 import org.apache.jena.rdf.model.ReifiedStatement ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
 import org.apache.jena.util.iterator.Filter ;
-import org.apache.jena.util.iterator.Map1 ;
 
 /**
  * A secured RSIterator implementation
@@ -60,8 +60,7 @@ public class SecuredRSIterator implements RSIterator
 
 	}
 
-	private class PermReifiedStatementMap implements
-			Map1<ReifiedStatement, ReifiedStatement>
+	private class PermReifiedStatementMap implements Function<ReifiedStatement, ReifiedStatement>
 	{
 		private final SecuredModel securedModel;
 
@@ -71,7 +70,7 @@ public class SecuredRSIterator implements RSIterator
 		}
 
 		@Override
-		public ReifiedStatement map1( final ReifiedStatement o )
+		public ReifiedStatement apply( final ReifiedStatement o )
 		{
 			return SecuredReifiedStatementImpl.getInstance(securedModel, o);
 		}
@@ -131,7 +130,7 @@ public class SecuredRSIterator implements RSIterator
 	}
 
 	@Override
-	public <U> ExtendedIterator<U> mapWith( final Map1<ReifiedStatement, U> map1 )
+	public <U> ExtendedIterator<U> mapWith( final Function<ReifiedStatement, U> map1 )
 	{
 		return iter.mapWith(map1);
 	}

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredResIterator.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredResIterator.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredResIterator.java
index e681de3..4baa134 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredResIterator.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredResIterator.java
@@ -20,6 +20,7 @@ package org.apache.jena.permissions.model.impl;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
+import java.util.function.Function;
 
 import org.apache.jena.permissions.model.SecuredModel;
 import org.apache.jena.permissions.model.SecuredResource;
@@ -27,12 +28,11 @@ import org.apache.jena.rdf.model.ResIterator ;
 import org.apache.jena.rdf.model.Resource ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
 import org.apache.jena.util.iterator.Filter ;
-import org.apache.jena.util.iterator.Map1 ;
 
 public class SecuredResIterator implements ResIterator
 {
 
-	private class PermResourceMap implements Map1<Resource, Resource>
+	private class PermResourceMap implements Function<Resource, Resource>
 	{
 		private final SecuredModel securedModel;
 
@@ -42,7 +42,7 @@ public class SecuredResIterator implements ResIterator
 		}
 
 		@Override
-		public SecuredResource map1( final Resource o )
+		public SecuredResource apply( final Resource o )
 		{
 			return SecuredResourceImpl.getInstance(securedModel, o);
 		}
@@ -90,7 +90,7 @@ public class SecuredResIterator implements ResIterator
 	}
 
 	@Override
-	public <U> ExtendedIterator<U> mapWith( final Map1<Resource, U> map1 )
+	public <U> ExtendedIterator<U> mapWith( final Function<Resource, U> map1 )
 	{
 		return iter.mapWith(map1);
 	}

http://git-wip-us.apache.org/repos/asf/jena/blob/65ce6b50/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementIterator.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementIterator.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementIterator.java
index 96a991d..81df811 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementIterator.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementIterator.java
@@ -21,6 +21,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.Set;
+import java.util.function.Function;
 
 import org.apache.jena.permissions.SecurityEvaluator.Action;
 import org.apache.jena.permissions.model.SecuredModel;
@@ -30,7 +31,6 @@ import org.apache.jena.rdf.model.Statement ;
 import org.apache.jena.rdf.model.StmtIterator ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
 import org.apache.jena.util.iterator.Filter ;
-import org.apache.jena.util.iterator.Map1 ;
 
 /**
  * A secured StatementIterator implementation
@@ -38,7 +38,7 @@ import org.apache.jena.util.iterator.Map1 ;
 public class SecuredStatementIterator implements StmtIterator
 {
 
-	private class PermStatementMap implements Map1<Statement, Statement>
+	private class PermStatementMap implements Function<Statement, Statement>
 	{
 		private final SecuredModel securedModel;
 
@@ -48,7 +48,7 @@ public class SecuredStatementIterator implements StmtIterator
 		}
 
 		@Override
-		public SecuredStatement map1( final Statement o )
+		public SecuredStatement apply( final Statement o )
 		{
 			return SecuredStatementImpl.getInstance(securedModel, o);
 		}
@@ -105,7 +105,7 @@ public class SecuredStatementIterator implements StmtIterator
 	}
 
 	@Override
-	public <U> ExtendedIterator<U> mapWith( final Map1<Statement, U> map1 )
+	public <U> ExtendedIterator<U> mapWith( final Function<Statement, U> map1 )
 	{
 		return iter.mapWith(map1);
 	}


[07/50] [abbrv] jena git commit: Handle --syntax

Posted by cl...@apache.org.
Handle --syntax


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/c6e1970e
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/c6e1970e
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/c6e1970e

Branch: refs/heads/add-contract-tests
Commit: c6e1970e8b7c89bdabb9615cfc23598be3968c86
Parents: 3656b68
Author: Andy Seaborne <an...@apache.org>
Authored: Fri May 1 15:10:09 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri May 1 15:18:37 2015 +0100

----------------------------------------------------------------------
 jena-arq/src/main/java/arq/uparse.java | 51 ++++++++++++++++++-----------
 1 file changed, 32 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/c6e1970e/jena-arq/src/main/java/arq/uparse.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/arq/uparse.java b/jena-arq/src/main/java/arq/uparse.java
index 12b7108..2e930ff 100644
--- a/jena-arq/src/main/java/arq/uparse.java
+++ b/jena-arq/src/main/java/arq/uparse.java
@@ -39,7 +39,7 @@ public class uparse extends CmdARQ
     protected static final ArgDecl syntaxArg        = new ArgDecl(ArgDecl.HasValue, "syntax", "syn") ;
     protected static final ArgDecl argDeclPrint     = new ArgDecl(ArgDecl.HasValue, "print") ;
     List<String> requestFiles = null ;
-    protected Syntax updateSyntax = Syntax.defaultUpdateSyntax ;
+    protected Syntax updateSyntax = null ;
     private boolean printUpdate = false ;
     private boolean printNone  = false ;
     
@@ -62,21 +62,24 @@ public class uparse extends CmdARQ
         if ( super.cmdStrictMode )
             updateSyntax = Syntax.syntaxSPARQL_11 ;
 
+        // Set syntax
+        if ( super.contains(syntaxArg) ) {
+            // short name
+            String s = super.getValue(syntaxArg) ;
+            Syntax syn = Syntax.lookup(s) ;
+            if ( syn == null )
+                super.cmdError("Unrecognized syntax: " + s) ;
+            updateSyntax = syn ;
+        }
+        
         for ( String arg : getValues( argDeclPrint ) )
         {
             if ( arg.equalsIgnoreCase( "query" ) )
-            {
                 printUpdate = true;
-            }
             else if ( arg.equalsIgnoreCase( "none" ) )
-            {
                 printNone = true;
-            }
             else
-            {
-                throw new CmdException(
-                    "Not a recognized print form: " + arg + " : Choices are: update, none" );
-            }
+                throw new CmdException("Not a recognized print form: " + arg + " : Choices are: update, none" );
         }
         
         if ( !printUpdate && ! printNone )
@@ -95,17 +98,27 @@ public class uparse extends CmdARQ
     {
         for ( String filename : requestFiles )
         {
+            Syntax syntax = updateSyntax ;
+            if ( syntax == null )
+                syntax = Syntax.guessUpdateFileSyntax(filename) ;
             String x = oneFile( filename );
             if ( x != null )
-            {
-                execOne( x );
-            }
+                execOne( x, syntax );
         }
 
-        for ( String x : super.positionals )
-        {
-            x = indirect( x );
-            execOne( x );
+        
+        
+        
+        for ( String x : super.positionals ) {
+            Syntax syntax = updateSyntax ;    
+            if ( matchesIndirect(x) ) {
+                if ( syntax == null )
+                    syntax = Syntax.guessUpdateFileSyntax(x) ;
+                x = indirect( x );
+            }
+            if ( syntax == null )
+                syntax = Syntax.defaultUpdateSyntax ;
+            execOne( x, syntax );
         }
 
     }
@@ -123,11 +136,11 @@ public class uparse extends CmdARQ
         }
     }
     
-    private void execOne(String updateString)
+    private void execOne(String updateString, Syntax syntax)
     {
         UpdateRequest req ; 
         try {
-            req = UpdateFactory.create(updateString, updateSyntax) ;
+            req = UpdateFactory.create(updateString, syntax) ;
         } catch (QueryParseException ex)
         {
             System.err.print("Parse error: ") ;
@@ -147,7 +160,7 @@ public class uparse extends CmdARQ
         String updateString2 = w.asString() ;
         UpdateRequest req2 = null ;
         try {
-            req2 = UpdateFactory.create(updateString2, updateSyntax) ;
+            req2 = UpdateFactory.create(updateString2, syntax) ;
         } catch (QueryParseException ex)
         {
             System.err.println("Can not reparse update after serialization") ;


[03/50] [abbrv] jena git commit: JENA-904: This closes #46

Posted by cl...@apache.org.
JENA-904: This closes #46


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/3573bd76
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/3573bd76
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/3573bd76

Branch: refs/heads/add-contract-tests
Commit: 3573bd76d5ed31a9ad89b0d62f8c62d497b9c1fa
Parents: 4edc6d3
Author: Andy Seaborne <an...@apache.org>
Authored: Fri May 1 12:57:10 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri May 1 12:57:10 2015 +0100

----------------------------------------------------------------------

----------------------------------------------------------------------



[34/50] [abbrv] jena git commit: openjena -> apache.jena

Posted by cl...@apache.org.
openjena -> apache.jena


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/0ec61c85
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/0ec61c85
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/0ec61c85

Branch: refs/heads/add-contract-tests
Commit: 0ec61c8579af4c8cbfae8df85fc534d80fb4c9b0
Parents: a55e147
Author: Andy Seaborne <an...@apache.org>
Authored: Thu May 7 10:42:27 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu May 7 10:42:27 2015 +0100

----------------------------------------------------------------------
 .../org/apache/jena/atlas/data/ThresholdPolicyCount.java  | 10 ----------
 .../org/apache/jena/atlas/data/ThresholdPolicyMemory.java |  5 -----
 .../main/java/org/apache/jena/riot/lang/LangRDFJSON.java  |  2 +-
 jena-arq/src/test/resources/log4j-testing.properties      |  4 +---
 jena-arq/src/test/resources/log4j.properties              |  3 +--
 .../src/main/java/org/apache/jena/atlas/lib/Cache.java    |  2 +-
 .../main/java/org/apache/jena/atlas/logging/LogCtl.java   |  3 +--
 jena-core/testing/reasoners/bugs/layeredValidation.owl    |  2 +-
 jena-csv/src/test/resources/log4j.properties              |  3 +--
 .../src/test/resources/log4j.properties                   |  3 +--
 .../src/main/java/org/apache/jena/fuseki/FusekiCmd.java   |  1 -
 .../main/java/org/apache/jena/fuseki/FusekiLogging.java   |  1 -
 jena-maven-tools/README                                   |  2 +-
 jena-maven-tools/src/it/schemagen-integration-0/pom.xml   |  4 ++--
 jena-maven-tools/src/it/schemagen-integration-1/pom.xml   |  2 +-
 jena-maven-tools/src/it/schemagen-integration-2/pom.xml   |  2 +-
 jena-maven-tools/src/it/schemagen-integration-3/pom.xml   |  2 +-
 jena-spatial/src/test/resources/geoarq-query-1.rq         |  2 +-
 .../org/apache/jena/tdb/store/bulkloader/BulkLoader.java  |  6 +-----
 .../java/org/apache/jena/tdb/extra/T_TxnDeadlockTest.java |  8 ++++----
 20 files changed, 20 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-arq/src/main/java/org/apache/jena/atlas/data/ThresholdPolicyCount.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/data/ThresholdPolicyCount.java b/jena-arq/src/main/java/org/apache/jena/atlas/data/ThresholdPolicyCount.java
index 640bdd2..1612098 100644
--- a/jena-arq/src/main/java/org/apache/jena/atlas/data/ThresholdPolicyCount.java
+++ b/jena-arq/src/main/java/org/apache/jena/atlas/data/ThresholdPolicyCount.java
@@ -36,28 +36,18 @@ public class ThresholdPolicyCount<T> implements ThresholdPolicy<T>
         reset();
     }
 
-    /* (non-Javadoc)
-     * @see org.openjena.atlas.io.ThresholdPolicy#increment(java.lang.Object)
-     */
     @Override
     public void increment(T item)
     {
         count++;
     }
 
-    /* (non-Javadoc)
-     * @see org.openjena.atlas.io.ThresholdPolicy#isThresholdExceeded()
-     */
     @Override
     public boolean isThresholdExceeded()
     {
         return (count >= threshold);
     }
 
-    /*
-     * (non-Javadoc)
-     * @see org.openjena.atlas.data.ThresholdPolicy#reset()
-     */
     @Override
     public void reset()
     {

http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-arq/src/main/java/org/apache/jena/atlas/data/ThresholdPolicyMemory.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/data/ThresholdPolicyMemory.java b/jena-arq/src/main/java/org/apache/jena/atlas/data/ThresholdPolicyMemory.java
index 15af2c4..00ea7b8 100644
--- a/jena-arq/src/main/java/org/apache/jena/atlas/data/ThresholdPolicyMemory.java
+++ b/jena-arq/src/main/java/org/apache/jena/atlas/data/ThresholdPolicyMemory.java
@@ -61,11 +61,6 @@ public class ThresholdPolicyMemory<T> implements ThresholdPolicy<T> {
         return (size >= threshold) ;
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.openjena.atlas.data.ThresholdPolicy#reset()
-     */
     @Override
     public void reset() {
         count = 0 ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-arq/src/main/java/org/apache/jena/riot/lang/LangRDFJSON.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangRDFJSON.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangRDFJSON.java
index d529763..d495e07 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangRDFJSON.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangRDFJSON.java
@@ -43,7 +43,7 @@ public class LangRDFJSON extends LangBase
 		super(tokenizer, profile, dest) ;
 		if (!(tokenizer instanceof TokenizerJSON))
 		{
-			throw new IllegalArgumentException("Tokenizer for the RDF/JSON parser must be an instance of org.openjena.atlas.json.io.parser.TokenizerJSON") ;
+			throw new IllegalArgumentException("Tokenizer for the RDF/JSON parser must be an instance of "+TokenizerJSON.class.getName()) ;
 		}
 	}
 

http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-arq/src/test/resources/log4j-testing.properties
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/resources/log4j-testing.properties b/jena-arq/src/test/resources/log4j-testing.properties
index 17c9cc6..8ff6f73 100644
--- a/jena-arq/src/test/resources/log4j-testing.properties
+++ b/jena-arq/src/test/resources/log4j-testing.properties
@@ -10,9 +10,7 @@ log4j.logger.com.hp.hpl.jena.arq.info=INFO
 log4j.logger.com.hp.hpl.jena.arq.exec=INFO
 
 # Everything else in Jena
-log4j.logger.com.hp.hpl.jena=WARN
-log4j.logger.org.openjena=WARN
-log4j.logger.org.openjena.riot=INFO
+log4j.logger.org.apache.jena.riot=INFO
 
 # Apache Commons HTTP
 # May be useful to switch to DEBUG if aiming to debug any HTTP communication issues

http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-arq/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/resources/log4j.properties b/jena-arq/src/test/resources/log4j.properties
index 247e450..5cedb50 100644
--- a/jena-arq/src/test/resources/log4j.properties
+++ b/jena-arq/src/test/resources/log4j.properties
@@ -11,8 +11,7 @@ log4j.logger.org.apache.jena.arq.exec=INFO
 
 # Everything else in Jena
 log4j.logger.org.apache.jena=WARN
-log4j.logger.org.openjena=WARN
-log4j.logger.org.openjena.riot=INFO
+log4j.logger.org.apache.jena.riot=INFO
 
 # Apache Commons HTTP
 # May be useful to turn up to DEBUG if debugging HTTP communication issues

http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-base/src/main/java/org/apache/jena/atlas/lib/Cache.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Cache.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Cache.java
index 8ebf2d7..69d6544 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Cache.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Cache.java
@@ -33,7 +33,7 @@ public interface Cache<Key, Value>
     public Value getIfPresent(Key key) ;
     
     /** Get from cache, of not present, call the {@code callable}
-     *  to try to fill the cache.
+     *  to try to fill the cache. This operation should be atomic.
      */
     public Value getOrFill(Key key, Callable<Value> callable) ;
 

http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-base/src/main/java/org/apache/jena/atlas/logging/LogCtl.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/logging/LogCtl.java b/jena-base/src/main/java/org/apache/jena/atlas/logging/LogCtl.java
index ad1adce..9e067bc 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/logging/LogCtl.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/logging/LogCtl.java
@@ -179,7 +179,6 @@ public class LogCtl {
     
      , "## Everything", "log4j.rootLogger=INFO, jena.plainlevel",
      "log4j.logger.com.hp.hpl.jena=WARN",
-     "log4j.logger.org.openjena=WARN",
      "log4j.logger.org.apache.jena=WARN",
      "log4j.logger.org.apache.jena.tdb.loader=INFO"
     
@@ -195,7 +194,7 @@ public class LogCtl {
          // "handlers=java.util.logging.ConsoleHandler,org.apache.jena.atlas.logging.java.ConsoleHandlerStdout",
     
          // Atlas.
-         "handlers=org.openjena.atlas.logging.java.ConsoleHandlerStdout",
+         "handlers=org.apache.jena.atlas.logging.java.ConsoleHandlerStdout",
          "org.apache.atlas.jena.logging.java.ConsoleHandlerStdout.level=INFO",
          "java.util.logging.ConsoleHandler.formatter=atlas.logging.java.TextFormatter"
     ) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-core/testing/reasoners/bugs/layeredValidation.owl
----------------------------------------------------------------------
diff --git a/jena-core/testing/reasoners/bugs/layeredValidation.owl b/jena-core/testing/reasoners/bugs/layeredValidation.owl
index a177cf7..8c7964b 100644
--- a/jena-core/testing/reasoners/bugs/layeredValidation.owl
+++ b/jena-core/testing/reasoners/bugs/layeredValidation.owl
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE owl [
-     <!ENTITY eg    "http://www.openjena.org/bugs#" >
+     <!ENTITY eg    "http://example.jena.apache.org/bugs#" >
      <!ENTITY rdfs  "http://www.w3.org/2000/01/rdf-schema#" >
      <!ENTITY rdf  "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
      <!ENTITY owl  "http://www.w3.org/2002/07/owl#" >

http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-csv/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/jena-csv/src/test/resources/log4j.properties b/jena-csv/src/test/resources/log4j.properties
index 247e450..5cedb50 100644
--- a/jena-csv/src/test/resources/log4j.properties
+++ b/jena-csv/src/test/resources/log4j.properties
@@ -11,8 +11,7 @@ log4j.logger.org.apache.jena.arq.exec=INFO
 
 # Everything else in Jena
 log4j.logger.org.apache.jena=WARN
-log4j.logger.org.openjena=WARN
-log4j.logger.org.openjena.riot=INFO
+log4j.logger.org.apache.jena.riot=INFO
 
 # Apache Commons HTTP
 # May be useful to turn up to DEBUG if debugging HTTP communication issues

http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-elephas/jena-elephas-common/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/jena-elephas/jena-elephas-common/src/test/resources/log4j.properties b/jena-elephas/jena-elephas-common/src/test/resources/log4j.properties
index 247e450..5cedb50 100644
--- a/jena-elephas/jena-elephas-common/src/test/resources/log4j.properties
+++ b/jena-elephas/jena-elephas-common/src/test/resources/log4j.properties
@@ -11,8 +11,7 @@ log4j.logger.org.apache.jena.arq.exec=INFO
 
 # Everything else in Jena
 log4j.logger.org.apache.jena=WARN
-log4j.logger.org.openjena=WARN
-log4j.logger.org.openjena.riot=INFO
+log4j.logger.org.apache.jena.riot=INFO
 
 # Apache Commons HTTP
 # May be useful to turn up to DEBUG if debugging HTTP communication issues

http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiCmd.java
----------------------------------------------------------------------
diff --git a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiCmd.java b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiCmd.java
index 995c5d7..6e79cee 100644
--- a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiCmd.java
+++ b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiCmd.java
@@ -71,7 +71,6 @@ public class FusekiCmd extends CmdARQ
           , "## Everything"
           , "log4j.rootLogger=INFO, jena.plain"
           , "log4j.logger.com.hp.hpl.jena=WARN"
-          , "log4j.logger.org.openjena=WARN"
           , "log4j.logger.org.apache.jena=WARN"
           
           , "# Server log."

http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/FusekiLogging.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/FusekiLogging.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/FusekiLogging.java
index 003b38d..1810f1e 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/FusekiLogging.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/FusekiLogging.java
@@ -151,7 +151,6 @@ public class FusekiLogging
              "## Most things", 
              "log4j.rootLogger=INFO, jena.plainstdout",
              "log4j.logger.com.hp.hpl.jena=WARN",
-             "log4j.logger.org.openjena=WARN",
              "log4j.logger.org.apache.jena=WARN",
 
              "# Fuseki System logs.",

http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-maven-tools/README
----------------------------------------------------------------------
diff --git a/jena-maven-tools/README b/jena-maven-tools/README
index ba8bbb6..e7f5f03 100644
--- a/jena-maven-tools/README
+++ b/jena-maven-tools/README
@@ -15,7 +15,7 @@ Changes
 
 Version 0.4
 
-  * Moved source code from org.openjena package tree to org.apache.jena
+  * Moved source code to org.apache.jena
   * Removed some obsolete project artefacts (e.g. src/site)
   * Added license headers to conform to Apache Software Foundation policy,
     and added a rat:check target to the pom file.

http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-maven-tools/src/it/schemagen-integration-0/pom.xml
----------------------------------------------------------------------
diff --git a/jena-maven-tools/src/it/schemagen-integration-0/pom.xml b/jena-maven-tools/src/it/schemagen-integration-0/pom.xml
index 97ccf1c..732a38d 100644
--- a/jena-maven-tools/src/it/schemagen-integration-0/pom.xml
+++ b/jena-maven-tools/src/it/schemagen-integration-0/pom.xml
@@ -1,4 +1,4 @@
-<!--
+f<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
@@ -18,7 +18,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.openjena.tools</groupId>
+  <groupId>org.apache.jena.tools</groupId>
   <artifactId>schemagen-test</artifactId>
   <version>@project.version@</version>
   <packaging>jar</packaging>

http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-maven-tools/src/it/schemagen-integration-1/pom.xml
----------------------------------------------------------------------
diff --git a/jena-maven-tools/src/it/schemagen-integration-1/pom.xml b/jena-maven-tools/src/it/schemagen-integration-1/pom.xml
index bc3c94d..858da18 100644
--- a/jena-maven-tools/src/it/schemagen-integration-1/pom.xml
+++ b/jena-maven-tools/src/it/schemagen-integration-1/pom.xml
@@ -18,7 +18,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.openjena.tools</groupId>
+  <groupId>org.apache.jena.tools</groupId>
   <artifactId>schemagen-test</artifactId>
   <version>@project.version@</version>
   <packaging>jar</packaging>

http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-maven-tools/src/it/schemagen-integration-2/pom.xml
----------------------------------------------------------------------
diff --git a/jena-maven-tools/src/it/schemagen-integration-2/pom.xml b/jena-maven-tools/src/it/schemagen-integration-2/pom.xml
index 225ce2f..ef4cf8f 100644
--- a/jena-maven-tools/src/it/schemagen-integration-2/pom.xml
+++ b/jena-maven-tools/src/it/schemagen-integration-2/pom.xml
@@ -18,7 +18,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.openjena.tools</groupId>
+  <groupId>org.apache.jena.tools</groupId>
   <artifactId>schemagen-test</artifactId>
   <version>@project.version@</version>
   <packaging>jar</packaging>

http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-maven-tools/src/it/schemagen-integration-3/pom.xml
----------------------------------------------------------------------
diff --git a/jena-maven-tools/src/it/schemagen-integration-3/pom.xml b/jena-maven-tools/src/it/schemagen-integration-3/pom.xml
index 890aafd..a746421 100644
--- a/jena-maven-tools/src/it/schemagen-integration-3/pom.xml
+++ b/jena-maven-tools/src/it/schemagen-integration-3/pom.xml
@@ -18,7 +18,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.openjena.tools</groupId>
+  <groupId>org.apache.jena.tools</groupId>
   <artifactId>schemagen-test</artifactId>
   <version>@project.version@</version>
   <packaging>jar</packaging>

http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-spatial/src/test/resources/geoarq-query-1.rq
----------------------------------------------------------------------
diff --git a/jena-spatial/src/test/resources/geoarq-query-1.rq b/jena-spatial/src/test/resources/geoarq-query-1.rq
index a189da9..7f7bb64 100644
--- a/jena-spatial/src/test/resources/geoarq-query-1.rq
+++ b/jena-spatial/src/test/resources/geoarq-query-1.rq
@@ -1,6 +1,6 @@
 PREFIX : <http://example/>
 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
-PREFIX geoarq: <http://openjena.org/GeoARQ/property#>
+PREFIX geoarq: <http://jena.apache.org/GeoARQ/property#>
 
 SELECT ?airport {
     ?s geoarq:nearby (51.3000 -2.71000) .

http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-tdb/src/main/java/org/apache/jena/tdb/store/bulkloader/BulkLoader.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/store/bulkloader/BulkLoader.java b/jena-tdb/src/main/java/org/apache/jena/tdb/store/bulkloader/BulkLoader.java
index 0d162d2..04b4108 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/store/bulkloader/BulkLoader.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/store/bulkloader/BulkLoader.java
@@ -52,11 +52,7 @@ public class BulkLoader {
     /** Number of ticks per super tick */
     public static int       superTick             = 10 ;
 
-    // Events.
-    // private static String baseNameGeneral = "http://openjena.org/TDB/event#"
-    // ;
-
-    private static String   baseName              = "http://openjena.org/TDB/bulkload/event#" ;
+    private static String   baseName              = "http://jena.apache.org/TDB/bulkload/event#" ;
 
     public static EventType evStartBulkload       = new EventType(baseName + "start-bulkload") ;
     public static EventType evFinishBulkload      = new EventType(baseName + "finish-bulkload") ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0ec61c85/jena-tdb/src/test/java/org/apache/jena/tdb/extra/T_TxnDeadlockTest.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/org/apache/jena/tdb/extra/T_TxnDeadlockTest.java b/jena-tdb/src/test/java/org/apache/jena/tdb/extra/T_TxnDeadlockTest.java
index 269a498..a3f4413 100644
--- a/jena-tdb/src/test/java/org/apache/jena/tdb/extra/T_TxnDeadlockTest.java
+++ b/jena-tdb/src/test/java/org/apache/jena/tdb/extra/T_TxnDeadlockTest.java
@@ -81,13 +81,13 @@ public class T_TxnDeadlockTest {
                             DatasetGraphTxn txnGraph =
                                     storeConnection.begin(ReadWrite.WRITE);
                             txnGraph.add(new Quad(
-                                    NodeFactory.createURI("http://openjena.org/"
+                                    NodeFactory.createURI("http://jena-example.org/"
                                             + numberGenerator.nextInt()),
-                                    NodeFactory.createURI("http://openjena.org/"
+                                    NodeFactory.createURI("http://jena-example.org/"
                                             + numberGenerator.nextInt()),
-                                    NodeFactory.createURI("http://openjena.org/"
+                                    NodeFactory.createURI("http://jena-example.org/"
                                             + numberGenerator.nextInt()),
-                                    NodeFactory.createURI("http://openjena.org/"
+                                    NodeFactory.createURI("http://jena-example.org/"
                                             + numberGenerator.nextInt())));
                             txnGraph.commit();
                             txnGraph.end();