http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-csv/src/test/java/org/apache/jena/propertytable/AbstractRowTest.java
----------------------------------------------------------------------
diff --cc 
jena-csv/src/test/java/org/apache/jena/propertytable/AbstractRowTest.java
index 3e16033,3e16033..20598a9
--- a/jena-csv/src/test/java/org/apache/jena/propertytable/AbstractRowTest.java
+++ b/jena-csv/src/test/java/org/apache/jena/propertytable/AbstractRowTest.java
@@@ -1,105 -1,105 +1,105 @@@
--/*
-- * 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.propertytable;
--
--import org.apache.jena.graph.Node ;
--import org.apache.jena.graph.NodeFactory ;
--import org.junit.Assert;
--import org.junit.Test;
--
--/**
-- * Tests related to Row.
-- *
-- */
--public abstract class AbstractRowTest extends AbstractColumnTest{
--
--      @Test
--      public void testAddRowValue() {
--
--              Column something = table.createColumn(URI("something"));
--              Column somethingElse = table.createColumn(URI("somethingElse"));
--
--              row.setValue(something, URI("apple"));
--              row.setValue(somethingElse, URI("orange"));
--
--              Assert.assertEquals(URI("apple"), row.getValue(something));
--              Assert.assertEquals(URI("orange"), row.getValue(somethingElse));
--      }
--      
--      @Test
--      public void testUnsetRowValue() {
--              Column something = table.createColumn(URI("something"));
--              row.setValue( something , URI("apple"));
--              Assert.assertEquals(URI("apple"), row.getValue(something));
--              row.setValue( something , null);
--              Assert.assertEquals(null, row.getValue(something));
--      }
--      
--      @Test(expected=NullPointerException.class)
--      public void testGetRowWithNullKey() {
--              table.getRow(null);
--      }
--      
--      @Test(expected = NullPointerException.class)
--      public void testAddValueToNotExistingColumn() {
--              row.setValue(table.getColumn(URI("something")), URI("apple"));
--      }
--      
--
--      
--      @Test(expected=IllegalArgumentException.class)
--      public void testGetListWithANonExistantColumn() {
--              Assert.assertNull(row.getValue( NodeFactory.createBlankNode() 
));
--      }
--      
--      @Test
--      public void testGetListWithAnMissingRowValue() {
--              Column something = table.createColumn(URI("something"));
--              Assert.assertNull(row.getValue(something));
--      }
--
--    @Test
--    public void testGetValue() {
--      Column something = table.createColumn(URI("something"));
--        row.setValue(something, URI("apple"));
--        Node value = row.getValue(something);
--        Assert.assertEquals(URI("apple"), value);
--    }
--    
--    @Test
--    public void testRowExistsFalse(){
--      Assert.assertNull(table.getRow(NodeFactory.createBlankNode()));
--    }
--    
--    @Test
--    public void testRowExistsTrue() {
--              Assert.assertNotNull(table.getRow(rowSubject));
--    }
--
--    @Test
--    public void testGetRowFalseAndDoesntCreateRow() {
--      Assert.assertNull(table.getRow(NodeFactory.createBlankNode()));
--      Assert.assertNull(table.getRow(NodeFactory.createBlankNode()));
--    }
--    
--    @Test(expected=IllegalArgumentException.class)
--      public void testGetValueBeforeColumnExists() {
--              row.getValue(URI("nonexistentColumnX"));
--      }
--}
++/*
++ * 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.propertytable;
++
++import org.apache.jena.graph.Node ;
++import org.apache.jena.graph.NodeFactory ;
++import org.junit.Assert;
++import org.junit.Test;
++
++/**
++ * Tests related to Row.
++ *
++ */
++public abstract class AbstractRowTest extends AbstractColumnTest{
++
++      @Test
++      public void testAddRowValue() {
++
++              Column something = table.createColumn(URI("something"));
++              Column somethingElse = table.createColumn(URI("somethingElse"));
++
++              row.setValue(something, URI("apple"));
++              row.setValue(somethingElse, URI("orange"));
++
++              Assert.assertEquals(URI("apple"), row.getValue(something));
++              Assert.assertEquals(URI("orange"), row.getValue(somethingElse));
++      }
++      
++      @Test
++      public void testUnsetRowValue() {
++              Column something = table.createColumn(URI("something"));
++              row.setValue( something , URI("apple"));
++              Assert.assertEquals(URI("apple"), row.getValue(something));
++              row.setValue( something , null);
++              Assert.assertEquals(null, row.getValue(something));
++      }
++      
++      @Test(expected=NullPointerException.class)
++      public void testGetRowWithNullKey() {
++              table.getRow(null);
++      }
++      
++      @Test(expected = NullPointerException.class)
++      public void testAddValueToNotExistingColumn() {
++              row.setValue(table.getColumn(URI("something")), URI("apple"));
++      }
++      
++
++      
++      @Test(expected=IllegalArgumentException.class)
++      public void testGetListWithANonExistantColumn() {
++              Assert.assertNull(row.getValue( NodeFactory.createBlankNode() 
));
++      }
++      
++      @Test
++      public void testGetListWithAnMissingRowValue() {
++              Column something = table.createColumn(URI("something"));
++              Assert.assertNull(row.getValue(something));
++      }
++
++    @Test
++    public void testGetValue() {
++      Column something = table.createColumn(URI("something"));
++        row.setValue(something, URI("apple"));
++        Node value = row.getValue(something);
++        Assert.assertEquals(URI("apple"), value);
++    }
++    
++    @Test
++    public void testRowExistsFalse(){
++      Assert.assertNull(table.getRow(NodeFactory.createBlankNode()));
++    }
++    
++    @Test
++    public void testRowExistsTrue() {
++              Assert.assertNotNull(table.getRow(rowSubject));
++    }
++
++    @Test
++    public void testGetRowFalseAndDoesntCreateRow() {
++      Assert.assertNull(table.getRow(NodeFactory.createBlankNode()));
++      Assert.assertNull(table.getRow(NodeFactory.createBlankNode()));
++    }
++    
++    @Test(expected=IllegalArgumentException.class)
++      public void testGetValueBeforeColumnExists() {
++              row.getValue(URI("nonexistentColumnX"));
++      }
++}

http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-csv/src/test/java/org/apache/jena/propertytable/BaseTest.java
----------------------------------------------------------------------
diff --cc jena-csv/src/test/java/org/apache/jena/propertytable/BaseTest.java
index 8e36236,8e36236..f0f6093
--- a/jena-csv/src/test/java/org/apache/jena/propertytable/BaseTest.java
+++ b/jena-csv/src/test/java/org/apache/jena/propertytable/BaseTest.java
@@@ -1,47 -1,47 +1,47 @@@
--/*
-- * 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.propertytable;
--
--import java.util.Collection;
--
--import org.apache.jena.graph.Node ;
--import org.apache.jena.graph.NodeFactory ;
--
--public abstract class BaseTest {
--      protected PropertyTable table;
--      protected PropertyTable table2;
--      protected Row row;
--      private static final String ns = "eh:foo/bar#";
--      protected static final Node rowSubject = URI("rowSubject");
--      protected static final String csvFilePath = 
"src/test/resources/test.csv";
--      
--      
--      protected static Node URI(String localName) {
--              return NodeFactory.createURI(ns + localName);
--      }
--      
--      protected static boolean collectionContains(
--                      final Collection<Column> columns, final Node columnkey) 
{
--              for (final Column column : columns) {
--                      if (column.getColumnKey().equals(columnkey))
--                              return true;
--              }
--              return false;
--      }
--}
++/*
++ * 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.propertytable;
++
++import java.util.Collection;
++
++import org.apache.jena.graph.Node ;
++import org.apache.jena.graph.NodeFactory ;
++
++public abstract class BaseTest {
++      protected PropertyTable table;
++      protected PropertyTable table2;
++      protected Row row;
++      private static final String ns = "eh:foo/bar#";
++      protected static final Node rowSubject = URI("rowSubject");
++      protected static final String csvFilePath = 
"src/test/resources/test.csv";
++      
++      
++      protected static Node URI(String localName) {
++              return NodeFactory.createURI(ns + localName);
++      }
++      
++      protected static boolean collectionContains(
++                      final Collection<Column> columns, final Node columnkey) 
{
++              for (final Column column : columns) {
++                      if (column.getColumnKey().equals(columnkey))
++                              return true;
++              }
++              return false;
++      }
++}

http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-csv/src/test/java/org/apache/jena/propertytable/TS_PropertyTable.java
----------------------------------------------------------------------
diff --cc 
jena-csv/src/test/java/org/apache/jena/propertytable/TS_PropertyTable.java
index 084365d,084365d..d6a0d2a
--- a/jena-csv/src/test/java/org/apache/jena/propertytable/TS_PropertyTable.java
+++ b/jena-csv/src/test/java/org/apache/jena/propertytable/TS_PropertyTable.java
@@@ -1,42 -1,42 +1,42 @@@
--/*
-- * 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.propertytable;
--
--import org.apache.jena.propertytable.graph.GraphCSVTest;
--import org.apache.jena.propertytable.impl.PropertyTableArrayImplTest;
--import 
org.apache.jena.propertytable.impl.PropertyTableBuilderForArrayImplTest;
--import 
org.apache.jena.propertytable.impl.PropertyTableBuilderForHashMapImplTest;
--import org.apache.jena.propertytable.impl.PropertyTableHashMapImplTest;
--import org.apache.jena.propertytable.lang.TestLangCSV;
--import org.junit.runner.RunWith;
--import org.junit.runners.Suite;
--
--
--@RunWith(Suite.class)
[email protected]( {
--      PropertyTableArrayImplTest.class,
--      PropertyTableHashMapImplTest.class,
--      GraphCSVTest.class,
--      PropertyTableBuilderForArrayImplTest.class,
--      PropertyTableBuilderForHashMapImplTest.class,
--      TestLangCSV.class
--})
--public class TS_PropertyTable {
--
--}
++/*
++ * 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.propertytable;
++
++import org.apache.jena.propertytable.graph.GraphCSVTest;
++import org.apache.jena.propertytable.impl.PropertyTableArrayImplTest;
++import 
org.apache.jena.propertytable.impl.PropertyTableBuilderForArrayImplTest;
++import 
org.apache.jena.propertytable.impl.PropertyTableBuilderForHashMapImplTest;
++import org.apache.jena.propertytable.impl.PropertyTableHashMapImplTest;
++import org.apache.jena.propertytable.lang.TestLangCSV;
++import org.junit.runner.RunWith;
++import org.junit.runners.Suite;
++
++
++@RunWith(Suite.class)
[email protected]( {
++      PropertyTableArrayImplTest.class,
++      PropertyTableHashMapImplTest.class,
++      GraphCSVTest.class,
++      PropertyTableBuilderForArrayImplTest.class,
++      PropertyTableBuilderForHashMapImplTest.class,
++      TestLangCSV.class
++})
++public class TS_PropertyTable {
++
++}

http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-csv/src/test/java/org/apache/jena/propertytable/graph/GraphCSVTest.java
----------------------------------------------------------------------
diff --cc 
jena-csv/src/test/java/org/apache/jena/propertytable/graph/GraphCSVTest.java
index b81f37f,b81f37f..2534287
--- 
a/jena-csv/src/test/java/org/apache/jena/propertytable/graph/GraphCSVTest.java
+++ 
b/jena-csv/src/test/java/org/apache/jena/propertytable/graph/GraphCSVTest.java
@@@ -1,154 -1,154 +1,154 @@@
--/*
-- * 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.propertytable.graph;
--
--import org.apache.jena.atlas.lib.StrUtils ;
--import org.apache.jena.propertytable.lang.CSV2RDF ;
--import org.apache.jena.query.* ;
--import org.apache.jena.rdf.model.Model ;
--import org.apache.jena.rdf.model.ModelFactory ;
--import org.apache.jena.sparql.engine.main.StageBuilder ;
--import org.apache.jena.sparql.engine.main.StageGenerator ;
--import org.junit.Assert ;
--import org.junit.BeforeClass ;
--import org.junit.Test ;
--
--/**
-- * Tests related to GraphCSV with some real world data.
-- */
--public class GraphCSVTest extends Assert {
--      
--      @BeforeClass
--      public static void init(){
--              CSV2RDF.init() ;
--      }
--      
--      @Test
--      public void testGraphCSV() {
--              //String file = 
"src/test/resources/HEFCE_organogram_senior_data_31032011.csv";test.csv
--              String file = "src/test/resources/test.csv";
--              
--              Model csv = ModelFactory.createModelForGraph(new 
GraphCSV(file));
--              assertEquals(12, csv.size());
--
--              Query query = QueryFactory
--                              .create("PREFIX : 
<src/test/resources/test.csv#> SELECT ?townName ?pop {?x :Town ?townName ; 
:Population ?pop ; :Predicate%20With%20Space 'PredicateWithSpace2' . 
FILTER(?pop > 500000)}");
--              
--              QueryExecution qexec = QueryExecutionFactory.create(query, csv);
--              ResultSet results = qexec.execSelect();
--              
--              assertTrue(results.hasNext());
--              QuerySolution soln = results.nextSolution();
--              assertEquals( "Northville", 
soln.getLiteral("townName").getString());
--              assertTrue( 654000 == soln.getLiteral("pop").getInt());
--              
--              assertFalse(results.hasNext());
--      }
--      
--      @Test 
--      public void stageGeneratorTest(){
--              wireIntoExecution();
--              testGraphCSV();
--      }
--      
--    private static void wireIntoExecution() {
--        StageGenerator orig = 
(StageGenerator)ARQ.getContext().get(ARQ.stageGenerator) ;
--        StageGenerator stageGenerator = new StageGeneratorPropertyTable(orig) 
;
--        StageBuilder.setGenerator(ARQ.getContext(), stageGenerator) ;
--    }
--      
--      //http://www.w3.org/TR/csvw-ucr/#UC-OrganogramData
--      //2.4 Use Case #4 - Publication of public sector roles and salaries
--      @Test
--      public void testUseCase4(){
--              String file = 
"src/test/resources/HEFCE_organogram_senior_data_31032011.csv";
--              
--              Model csv = ModelFactory.createModelForGraph(new 
GraphCSV(file));
--              assertEquals(72, csv.size());
--
--              String x = StrUtils.strjoinNL
--                  ("PREFIX : 
<src/test/resources/HEFCE_organogram_senior_data_31032011.csv#>"
--                  ,"SELECT ?name ?unit"
--                  ,"{ ?x :Name ?name ;"
--                  ,"     :Unit ?unit ;"
--                  ,"     :Actual%20Pay%20Floor%20%28%A3%29 ?floor ;"
--                  ,"     :Actual%20Pay%20Ceiling%20%28%A3%29 ?ceiling ."
--                  ,"FILTER(?floor > 100000 && ?ceiling <120000 )"
--                  ,"}");
--              
--              Query query = QueryFactory.create(x) ;
--              
--              QueryExecution qexec = QueryExecutionFactory.create(query, csv);
--              ResultSet results = qexec.execSelect();
--              
--              assertTrue(results.hasNext());
--              QuerySolution soln = results.nextSolution();
--              assertEquals( "David Sweeney", 
soln.getLiteral("name").getString());
--              assertEquals( "Research, Innovation and Skills", 
soln.getLiteral("unit").getString());
--              
--              assertFalse(results.hasNext());
--      }
--      
--      
--      //http://www.w3.org/TR/csvw-ucr/#UC-JournalArticleSearch
--      //2.6 Use Case #6 - Journal Article Solr Search Results
--      @Test
--      public void testUseCase6(){
--              String file = "src/test/resources/PLOSone-search-results.csv";
--              
--              Model csv = ModelFactory.createModelForGraph(new 
GraphCSV(file));
--              assertEquals(30, csv.size());
--
--              Query query = QueryFactory
--                              .create("PREFIX : 
<src/test/resources/PLOSone-search-results.csv#> SELECT ?author {?x :author 
?author ; :doi '10.1371/journal.pone.0095156' }");
--              
--              QueryExecution qexec = QueryExecutionFactory.create(query, csv);
--              ResultSet results = qexec.execSelect();
--              
--              assertTrue(results.hasNext());
--              QuerySolution soln = results.nextSolution();
--              assertEquals( "Oshrat Raz,Dorit L Lev,Alexander Battler,Eli I 
Lev", soln.getLiteral("author").getString());
--              
--              assertFalse(results.hasNext());
--      }
--      
--      //http://www.w3.org/TR/csvw-ucr/#UC-PaloAltoTreeData
--      //2.11 Use Case #11 - City of Palo Alto Tree Data
--      @Test
--      public void testUseCase11(){
--              String file = "src/test/resources/Palo_Alto_Trees.csv";
--              
--              Model csv = ModelFactory.createModelForGraph(new 
GraphCSV(file));
--              assertEquals(199, csv.size());
--
--              Query query = QueryFactory
--                              .create("PREFIX : 
<src/test/resources/Palo_Alto_Trees.csv#> SELECT ?longitude ?latitude {?x 
:Longitude ?longitude ; :Latitude ?latitude ; :Distance%20from%20Property 
?distance . FILTER(?distance > 50 )}");
--              
--              QueryExecution qexec = QueryExecutionFactory.create(query, csv);
--              ResultSet results = qexec.execSelect();
--              
--              assertTrue(results.hasNext());
--              QuerySolution soln = results.nextSolution();
--              assertEquals( -122.1566921, 
soln.getLiteral("longitude").getDouble(), 0);
--              assertEquals( 37.4408948, 
soln.getLiteral("latitude").getDouble(), 0);
--              
--              assertFalse(results.hasNext());
--      }
--
--}
++/*
++ * 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.propertytable.graph;
++
++import org.apache.jena.atlas.lib.StrUtils ;
++import org.apache.jena.propertytable.lang.CSV2RDF ;
++import org.apache.jena.query.* ;
++import org.apache.jena.rdf.model.Model ;
++import org.apache.jena.rdf.model.ModelFactory ;
++import org.apache.jena.sparql.engine.main.StageBuilder ;
++import org.apache.jena.sparql.engine.main.StageGenerator ;
++import org.junit.Assert ;
++import org.junit.BeforeClass ;
++import org.junit.Test ;
++
++/**
++ * Tests related to GraphCSV with some real world data.
++ */
++public class GraphCSVTest extends Assert {
++      
++      @BeforeClass
++      public static void init(){
++              CSV2RDF.init() ;
++      }
++      
++      @Test
++      public void testGraphCSV() {
++              //String file = 
"src/test/resources/HEFCE_organogram_senior_data_31032011.csv";test.csv
++              String file = "src/test/resources/test.csv";
++              
++              Model csv = ModelFactory.createModelForGraph(new 
GraphCSV(file));
++              assertEquals(12, csv.size());
++
++              Query query = QueryFactory
++                              .create("PREFIX : 
<src/test/resources/test.csv#> SELECT ?townName ?pop {?x :Town ?townName ; 
:Population ?pop ; :Predicate%20With%20Space 'PredicateWithSpace2' . 
FILTER(?pop > 500000)}");
++              
++              QueryExecution qexec = QueryExecutionFactory.create(query, csv);
++              ResultSet results = qexec.execSelect();
++              
++              assertTrue(results.hasNext());
++              QuerySolution soln = results.nextSolution();
++              assertEquals( "Northville", 
soln.getLiteral("townName").getString());
++              assertTrue( 654000 == soln.getLiteral("pop").getInt());
++              
++              assertFalse(results.hasNext());
++      }
++      
++      @Test 
++      public void stageGeneratorTest(){
++              wireIntoExecution();
++              testGraphCSV();
++      }
++      
++    private static void wireIntoExecution() {
++        StageGenerator orig = 
(StageGenerator)ARQ.getContext().get(ARQ.stageGenerator) ;
++        StageGenerator stageGenerator = new StageGeneratorPropertyTable(orig) 
;
++        StageBuilder.setGenerator(ARQ.getContext(), stageGenerator) ;
++    }
++      
++      //http://www.w3.org/TR/csvw-ucr/#UC-OrganogramData
++      //2.4 Use Case #4 - Publication of public sector roles and salaries
++      @Test
++      public void testUseCase4(){
++              String file = 
"src/test/resources/HEFCE_organogram_senior_data_31032011.csv";
++              
++              Model csv = ModelFactory.createModelForGraph(new 
GraphCSV(file));
++              assertEquals(72, csv.size());
++
++              String x = StrUtils.strjoinNL
++                  ("PREFIX : 
<src/test/resources/HEFCE_organogram_senior_data_31032011.csv#>"
++                  ,"SELECT ?name ?unit"
++                  ,"{ ?x :Name ?name ;"
++                  ,"     :Unit ?unit ;"
++                  ,"     :Actual%20Pay%20Floor%20%28%A3%29 ?floor ;"
++                  ,"     :Actual%20Pay%20Ceiling%20%28%A3%29 ?ceiling ."
++                  ,"FILTER(?floor > 100000 && ?ceiling <120000 )"
++                  ,"}");
++              
++              Query query = QueryFactory.create(x) ;
++              
++              QueryExecution qexec = QueryExecutionFactory.create(query, csv);
++              ResultSet results = qexec.execSelect();
++              
++              assertTrue(results.hasNext());
++              QuerySolution soln = results.nextSolution();
++              assertEquals( "David Sweeney", 
soln.getLiteral("name").getString());
++              assertEquals( "Research, Innovation and Skills", 
soln.getLiteral("unit").getString());
++              
++              assertFalse(results.hasNext());
++      }
++      
++      
++      //http://www.w3.org/TR/csvw-ucr/#UC-JournalArticleSearch
++      //2.6 Use Case #6 - Journal Article Solr Search Results
++      @Test
++      public void testUseCase6(){
++              String file = "src/test/resources/PLOSone-search-results.csv";
++              
++              Model csv = ModelFactory.createModelForGraph(new 
GraphCSV(file));
++              assertEquals(30, csv.size());
++
++              Query query = QueryFactory
++                              .create("PREFIX : 
<src/test/resources/PLOSone-search-results.csv#> SELECT ?author {?x :author 
?author ; :doi '10.1371/journal.pone.0095156' }");
++              
++              QueryExecution qexec = QueryExecutionFactory.create(query, csv);
++              ResultSet results = qexec.execSelect();
++              
++              assertTrue(results.hasNext());
++              QuerySolution soln = results.nextSolution();
++              assertEquals( "Oshrat Raz,Dorit L Lev,Alexander Battler,Eli I 
Lev", soln.getLiteral("author").getString());
++              
++              assertFalse(results.hasNext());
++      }
++      
++      //http://www.w3.org/TR/csvw-ucr/#UC-PaloAltoTreeData
++      //2.11 Use Case #11 - City of Palo Alto Tree Data
++      @Test
++      public void testUseCase11(){
++              String file = "src/test/resources/Palo_Alto_Trees.csv";
++              
++              Model csv = ModelFactory.createModelForGraph(new 
GraphCSV(file));
++              assertEquals(199, csv.size());
++
++              Query query = QueryFactory
++                              .create("PREFIX : 
<src/test/resources/Palo_Alto_Trees.csv#> SELECT ?longitude ?latitude {?x 
:Longitude ?longitude ; :Latitude ?latitude ; :Distance%20from%20Property 
?distance . FILTER(?distance > 50 )}");
++              
++              QueryExecution qexec = QueryExecutionFactory.create(query, csv);
++              ResultSet results = qexec.execSelect();
++              
++              assertTrue(results.hasNext());
++              QuerySolution soln = results.nextSolution();
++              assertEquals( -122.1566921, 
soln.getLiteral("longitude").getDouble(), 0);
++              assertEquals( 37.4408948, 
soln.getLiteral("latitude").getDouble(), 0);
++              
++              assertFalse(results.hasNext());
++      }
++
++}

http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-csv/src/test/java/org/apache/jena/propertytable/impl/AbstractPropertyTableBuilderTest.java
----------------------------------------------------------------------
diff --cc 
jena-csv/src/test/java/org/apache/jena/propertytable/impl/AbstractPropertyTableBuilderTest.java
index a00d3fd,a00d3fd..9100096
--- 
a/jena-csv/src/test/java/org/apache/jena/propertytable/impl/AbstractPropertyTableBuilderTest.java
+++ 
b/jena-csv/src/test/java/org/apache/jena/propertytable/impl/AbstractPropertyTableBuilderTest.java
@@@ -1,138 -1,138 +1,138 @@@
--/*
-- * 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.propertytable.impl;
--
--import java.io.StringReader ;
--
--import org.apache.jena.atlas.csv.CSVParser ;
--import org.apache.jena.graph.Node ;
--import org.apache.jena.graph.NodeFactory ;
--import org.apache.jena.propertytable.BaseTest ;
--import org.apache.jena.propertytable.Row ;
--import org.junit.Assert ;
--import org.junit.Test ;
--
--
--/**
-- * Tests related to PropertyTableBuilder, or more explicitly for the CSV 
parser in the current release.
-- *
-- */
--public abstract class AbstractPropertyTableBuilderTest extends BaseTest {
--
--      @Test
--      public void testFillPropertyTable() {
--              CSVParser iterator = csv("a,b\nc,d\ne,f");
--              PropertyTableBuilder.fillPropertyTable(table, iterator, 
csvFilePath);
--
--              Assert.assertEquals(3, table.getColumns().size());
--              containsColumn(PropertyTableBuilder.CSV_ROW_NODE);
--              containsColumn("a");
--              containsColumn("b");
--
--              Assert.assertEquals(2, table.getAllRows().size());
--              containsValue(0, "a", "c");
--              containsValue(0, "b", "d");
--
--              containsValue(1, "a", "e");
--              containsValue(1, "b", "f");
--
--      }
--
--      @Test
--      public void testIrregularTable1() {
--              CSVParser iterator = csv("a,b\nc\ne,f");
--              PropertyTableBuilder.fillPropertyTable(table, iterator, 
csvFilePath);
--
--              Assert.assertEquals(3, table.getColumns().size());
--              containsColumn(PropertyTableBuilder.CSV_ROW_NODE);
--              containsColumn("a");
--              containsColumn("b");
--
--              Assert.assertEquals(2, table.getAllRows().size());
--              containsValue(0, "a", "c");
--              nullValue(0, "b");
--
--              containsValue(1, "a", "e");
--              containsValue(1, "b", "f");
--      }
--
--      @Test
--      public void testIrregularTable2() {
--              CSVParser iterator = csv("a,b\nc,d1,d2\ne,f");
--              PropertyTableBuilder.fillPropertyTable(table, iterator, 
csvFilePath);
--
--              Assert.assertEquals(3, table.getColumns().size());
--              containsColumn(PropertyTableBuilder.CSV_ROW_NODE);
--              containsColumn("a");
--              containsColumn("b");
--
--              Assert.assertEquals(2, table.getAllRows().size());
--              containsValue(0, "a", "c");
--              containsValue(0, "b", "d1");
--
--              containsValue(1, "a", "e");
--              containsValue(1, "b", "f");
--      }
--
--      @Test
--      public void testIrregularTable3() {
--              CSVParser iterator = csv("a,b\n,d\ne,f");
--              PropertyTableBuilder.fillPropertyTable(table, iterator, 
csvFilePath);
--
--              Assert.assertEquals(3, table.getColumns().size());
--              containsColumn(PropertyTableBuilder.CSV_ROW_NODE);
--              containsColumn("a");
--              containsColumn("b");
--
--              Assert.assertEquals(2, table.getAllRows().size());
--              nullValue(0, "a");
--              containsValue(0, "b", "d");
--
--              containsValue(1, "a", "e");
--              containsValue(1, "b", "f");
--      }
--
--      private void nullValue(int rowIndex, String column) {
--              Row row = table.getAllRows().get(rowIndex);
--              Node v = 
row.getValue(NodeFactory.createURI(getColumnKey(column)));
--              Assert.assertEquals(null, v);
--      }
--
--      private void containsValue(int rowIndex, String column, String value) {
--              Row row = table.getAllRows().get(rowIndex);
--              Node v = 
row.getValue(NodeFactory.createURI(getColumnKey(column)));
--              Assert.assertEquals(value, v.getLiteralValue());
--      }
--
--      private String getColumnKey(String column) {
--              return PropertyTableBuilder.createColumnKeyURI(csvFilePath, 
column);
--      }
--
--      private void containsColumn(String column) {
--              containsColumn(NodeFactory.createURI(getColumnKey(column)));
--      }
--
--      private void containsColumn(Node columnKey) {
--              Assert.assertTrue(collectionContains(table.getColumns(), 
columnKey));
--      }
--
--      private CSVParser csv(String input) {
--          return CSVParser.create(new StringReader(input));
--      }
--}
++/*
++ * 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.propertytable.impl;
++
++import java.io.StringReader ;
++
++import org.apache.jena.atlas.csv.CSVParser ;
++import org.apache.jena.graph.Node ;
++import org.apache.jena.graph.NodeFactory ;
++import org.apache.jena.propertytable.BaseTest ;
++import org.apache.jena.propertytable.Row ;
++import org.junit.Assert ;
++import org.junit.Test ;
++
++
++/**
++ * Tests related to PropertyTableBuilder, or more explicitly for the CSV 
parser in the current release.
++ *
++ */
++public abstract class AbstractPropertyTableBuilderTest extends BaseTest {
++
++      @Test
++      public void testFillPropertyTable() {
++              CSVParser iterator = csv("a,b\nc,d\ne,f");
++              PropertyTableBuilder.fillPropertyTable(table, iterator, 
csvFilePath);
++
++              Assert.assertEquals(3, table.getColumns().size());
++              containsColumn(PropertyTableBuilder.CSV_ROW_NODE);
++              containsColumn("a");
++              containsColumn("b");
++
++              Assert.assertEquals(2, table.getAllRows().size());
++              containsValue(0, "a", "c");
++              containsValue(0, "b", "d");
++
++              containsValue(1, "a", "e");
++              containsValue(1, "b", "f");
++
++      }
++
++      @Test
++      public void testIrregularTable1() {
++              CSVParser iterator = csv("a,b\nc\ne,f");
++              PropertyTableBuilder.fillPropertyTable(table, iterator, 
csvFilePath);
++
++              Assert.assertEquals(3, table.getColumns().size());
++              containsColumn(PropertyTableBuilder.CSV_ROW_NODE);
++              containsColumn("a");
++              containsColumn("b");
++
++              Assert.assertEquals(2, table.getAllRows().size());
++              containsValue(0, "a", "c");
++              nullValue(0, "b");
++
++              containsValue(1, "a", "e");
++              containsValue(1, "b", "f");
++      }
++
++      @Test
++      public void testIrregularTable2() {
++              CSVParser iterator = csv("a,b\nc,d1,d2\ne,f");
++              PropertyTableBuilder.fillPropertyTable(table, iterator, 
csvFilePath);
++
++              Assert.assertEquals(3, table.getColumns().size());
++              containsColumn(PropertyTableBuilder.CSV_ROW_NODE);
++              containsColumn("a");
++              containsColumn("b");
++
++              Assert.assertEquals(2, table.getAllRows().size());
++              containsValue(0, "a", "c");
++              containsValue(0, "b", "d1");
++
++              containsValue(1, "a", "e");
++              containsValue(1, "b", "f");
++      }
++
++      @Test
++      public void testIrregularTable3() {
++              CSVParser iterator = csv("a,b\n,d\ne,f");
++              PropertyTableBuilder.fillPropertyTable(table, iterator, 
csvFilePath);
++
++              Assert.assertEquals(3, table.getColumns().size());
++              containsColumn(PropertyTableBuilder.CSV_ROW_NODE);
++              containsColumn("a");
++              containsColumn("b");
++
++              Assert.assertEquals(2, table.getAllRows().size());
++              nullValue(0, "a");
++              containsValue(0, "b", "d");
++
++              containsValue(1, "a", "e");
++              containsValue(1, "b", "f");
++      }
++
++      private void nullValue(int rowIndex, String column) {
++              Row row = table.getAllRows().get(rowIndex);
++              Node v = 
row.getValue(NodeFactory.createURI(getColumnKey(column)));
++              Assert.assertEquals(null, v);
++      }
++
++      private void containsValue(int rowIndex, String column, String value) {
++              Row row = table.getAllRows().get(rowIndex);
++              Node v = 
row.getValue(NodeFactory.createURI(getColumnKey(column)));
++              Assert.assertEquals(value, v.getLiteralValue());
++      }
++
++      private String getColumnKey(String column) {
++              return PropertyTableBuilder.createColumnKeyURI(csvFilePath, 
column);
++      }
++
++      private void containsColumn(String column) {
++              containsColumn(NodeFactory.createURI(getColumnKey(column)));
++      }
++
++      private void containsColumn(Node columnKey) {
++              Assert.assertTrue(collectionContains(table.getColumns(), 
columnKey));
++      }
++
++      private CSVParser csv(String input) {
++          return CSVParser.create(new StringReader(input));
++      }
++}

http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableArrayImplTest.java
----------------------------------------------------------------------
diff --cc 
jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableArrayImplTest.java
index ba1ca2d,ba1ca2d..fe5fa55
--- 
a/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableArrayImplTest.java
+++ 
b/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableArrayImplTest.java
@@@ -1,84 -1,84 +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.propertytable.impl;
--
--import org.apache.jena.propertytable.AbstractPropertyTableTest;
--import org.junit.After;
--import org.junit.Assert;
--import org.junit.Before;
--import org.junit.Test;
--
--/**
-- * Tests for PropertyTableArrayImpl
-- *
-- */
--public class PropertyTableArrayImplTest extends AbstractPropertyTableTest{
--      
--      private static int rowNum = 10;
--      private static int columnNum = 10 ;
--      
--      @Before
--      public void setUp() {
--              table = new PropertyTableArrayImpl(rowNum, columnNum);
--              table2 = new PropertyTableArrayImpl(rowNum, columnNum);
--              row = table.createRow(rowSubject);
--
--      }
--
--      @After
--      public void tearDown() {
--              table = null;
--              table2 = null;
--              row = null;
--      }
--      
--      @Test
--      public void testColumnOutofBounds1() {
--              for (int i=0;i<columnNum;i++){
--                      table.createColumn(URI("something_"+i));
--              }
--              Assert.assertEquals(columnNum, table.getColumns().size());
--      }
--      
--      @Test(expected = IllegalArgumentException.class)
--      public void testColumnOutofBounds2() {
--              for (int i=0;i<columnNum+1;i++){
--                      table.createColumn(URI("something_"+i));
--              }
--      }
--      
--      @Test
--      public void testRowOutofBounds1() {
--              
--              // we've already created a new Row in @Before
--              for (int i=0;i<rowNum-1;i++){
--                      table.createRow(URI("something_"+i));
--              }
--              Assert.assertEquals(rowNum, table.getAllRows().size());
--      }
--      
--      @Test(expected = IllegalArgumentException.class)
--      public void testRowOutofBounds2() {
--              
--              // we've already created a new Row in @Before
--              for (int i=0;i<rowNum;i++){
--                      table.createRow(URI("something_"+i));
--              }
--      }
--}
++/*
++ * 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.propertytable.impl;
++
++import org.apache.jena.propertytable.AbstractPropertyTableTest;
++import org.junit.After;
++import org.junit.Assert;
++import org.junit.Before;
++import org.junit.Test;
++
++/**
++ * Tests for PropertyTableArrayImpl
++ *
++ */
++public class PropertyTableArrayImplTest extends AbstractPropertyTableTest{
++      
++      private static int rowNum = 10;
++      private static int columnNum = 10 ;
++      
++      @Before
++      public void setUp() {
++              table = new PropertyTableArrayImpl(rowNum, columnNum);
++              table2 = new PropertyTableArrayImpl(rowNum, columnNum);
++              row = table.createRow(rowSubject);
++
++      }
++
++      @After
++      public void tearDown() {
++              table = null;
++              table2 = null;
++              row = null;
++      }
++      
++      @Test
++      public void testColumnOutofBounds1() {
++              for (int i=0;i<columnNum;i++){
++                      table.createColumn(URI("something_"+i));
++              }
++              Assert.assertEquals(columnNum, table.getColumns().size());
++      }
++      
++      @Test(expected = IllegalArgumentException.class)
++      public void testColumnOutofBounds2() {
++              for (int i=0;i<columnNum+1;i++){
++                      table.createColumn(URI("something_"+i));
++              }
++      }
++      
++      @Test
++      public void testRowOutofBounds1() {
++              
++              // we've already created a new Row in @Before
++              for (int i=0;i<rowNum-1;i++){
++                      table.createRow(URI("something_"+i));
++              }
++              Assert.assertEquals(rowNum, table.getAllRows().size());
++      }
++      
++      @Test(expected = IllegalArgumentException.class)
++      public void testRowOutofBounds2() {
++              
++              // we've already created a new Row in @Before
++              for (int i=0;i<rowNum;i++){
++                      table.createRow(URI("something_"+i));
++              }
++      }
++}

http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableBuilderForArrayImplTest.java
----------------------------------------------------------------------
diff --cc 
jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableBuilderForArrayImplTest.java
index 7b7e0c8,7b7e0c8..8021678
--- 
a/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableBuilderForArrayImplTest.java
+++ 
b/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableBuilderForArrayImplTest.java
@@@ -1,39 -1,39 +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.propertytable.impl;
--
--import org.junit.After;
--import org.junit.Before;
--
--public class PropertyTableBuilderForArrayImplTest extends 
AbstractPropertyTableBuilderTest{
--      
--      private static int rowNum = 10;
--      private static int columnNum = 10 ;
--      
--      @Before
--      public void setUp() {
--              table = new PropertyTableArrayImpl(rowNum, columnNum);
--      }
--
--      @After
--      public void tearDown() {
--              table = null;
--      }
--
--}
++/*
++ * 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.propertytable.impl;
++
++import org.junit.After;
++import org.junit.Before;
++
++public class PropertyTableBuilderForArrayImplTest extends 
AbstractPropertyTableBuilderTest{
++      
++      private static int rowNum = 10;
++      private static int columnNum = 10 ;
++      
++      @Before
++      public void setUp() {
++              table = new PropertyTableArrayImpl(rowNum, columnNum);
++      }
++
++      @After
++      public void tearDown() {
++              table = null;
++      }
++
++}

http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableBuilderForHashMapImplTest.java
----------------------------------------------------------------------
diff --cc 
jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableBuilderForHashMapImplTest.java
index f2768f5,f2768f5..8cd6cdc
--- 
a/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableBuilderForHashMapImplTest.java
+++ 
b/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableBuilderForHashMapImplTest.java
@@@ -1,34 -1,34 +1,34 @@@
--/*
-- * 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.propertytable.impl;
--
--import org.junit.After;
--import org.junit.Before;
--
--public class PropertyTableBuilderForHashMapImplTest extends 
AbstractPropertyTableBuilderTest{
--      @Before
--      public void setUp() {
--              table = new PropertyTableHashMapImpl();
--      }
--
--      @After
--      public void tearDown() {
--              table = null;
--      }
--}
++/*
++ * 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.propertytable.impl;
++
++import org.junit.After;
++import org.junit.Before;
++
++public class PropertyTableBuilderForHashMapImplTest extends 
AbstractPropertyTableBuilderTest{
++      @Before
++      public void setUp() {
++              table = new PropertyTableHashMapImpl();
++      }
++
++      @After
++      public void tearDown() {
++              table = null;
++      }
++}

http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableHashMapImplTest.java
----------------------------------------------------------------------
diff --cc 
jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableHashMapImplTest.java
index 33d95ae,33d95ae..68f87cf
--- 
a/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableHashMapImplTest.java
+++ 
b/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableHashMapImplTest.java
@@@ -1,46 -1,46 +1,46 @@@
--/*
-- * 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.propertytable.impl;
--
--import org.apache.jena.propertytable.AbstractPropertyTableTest;
--import org.junit.After;
--import org.junit.Before;
--
--/**
-- * Tests for PropertyTableHashMapImpl
-- *
-- */
--public class PropertyTableHashMapImplTest extends AbstractPropertyTableTest{
--      
--      @Before
--      public void setUp() {
--              table = new PropertyTableHashMapImpl();
--              table2 = new PropertyTableHashMapImpl();
--              row = table.createRow(rowSubject);
--
--      }
--
--      @After
--      public void tearDown() {
--              table = null;
--              table2 = null;
--              row = null;
--      }
--
--}
++/*
++ * 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.propertytable.impl;
++
++import org.apache.jena.propertytable.AbstractPropertyTableTest;
++import org.junit.After;
++import org.junit.Before;
++
++/**
++ * Tests for PropertyTableHashMapImpl
++ *
++ */
++public class PropertyTableHashMapImplTest extends AbstractPropertyTableTest{
++      
++      @Before
++      public void setUp() {
++              table = new PropertyTableHashMapImpl();
++              table2 = new PropertyTableHashMapImpl();
++              row = table.createRow(rowSubject);
++
++      }
++
++      @After
++      public void tearDown() {
++              table = null;
++              table2 = null;
++              row = null;
++      }
++
++}

http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-csv/src/test/resources/test.csv
----------------------------------------------------------------------
diff --cc jena-csv/src/test/resources/test.csv
index b9ac0e1,b9ac0e1..306e493
--- a/jena-csv/src/test/resources/test.csv
+++ b/jena-csv/src/test/resources/test.csv
@@@ -1,3 -1,3 +1,3 @@@
--Town,Population,Predicate With Space,`~!@#$%^&*()-_=+[{]}|\;:'"<.>/?,1234
--Southton,123000.0,PredicateWithSpace1,NonURICharacters1,DigitalLocalName1
--Northville,654000,PredicateWithSpace2,NonURICharacters2,DigitalLocalName2
++Town,Population,Predicate With Space,`~!@#$%^&*()-_=+[{]}|\;:'"<.>/?,1234
++Southton,123000.0,PredicateWithSpace1,NonURICharacters1,DigitalLocalName1
++Northville,654000,PredicateWithSpace2,NonURICharacters2,DigitalLocalName2

http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/AbstractNodeTupleWritable.java
----------------------------------------------------------------------
diff --cc 
jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/AbstractNodeTupleWritable.java
index 4449cc7,4449cc7..c9750f2
--- 
a/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/AbstractNodeTupleWritable.java
+++ 
b/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/AbstractNodeTupleWritable.java
@@@ -1,194 -1,194 +1,194 @@@
--/*
-- * 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.hadoop.rdf.types;
--
--import java.io.DataInput;
--import java.io.DataOutput;
--import java.io.IOException;
--
--import org.apache.hadoop.io.WritableComparable;
--import org.apache.hadoop.io.WritableUtils;
--import org.apache.jena.graph.Node ;
--import org.apache.jena.sparql.util.NodeUtils ;
--
--/**
-- * A abstract general purpose writable where the actual class represented is
-- * composed of a number of {@link Node} instances
-- * <p>
-- * The binary encoding of this base implementation is just a variable integer
-- * indicating the number of nodes present followed by the binary encodings of
-- * the {@link NodeWritable} instances. Derived implementations may wish to
-- * override the {@link #readFields(DataInput)} and {@link #write(DataOutput)}
-- * methods in order to use more specialised encodings.
-- * </p>
-- * 
-- * @param <T>
-- *            Tuple type
-- */
--public abstract class AbstractNodeTupleWritable<T> implements 
WritableComparable<AbstractNodeTupleWritable<T>> {
--
--    private T tuple;
--
--    /**
--     * Creates a new empty instance
--     */
--    protected AbstractNodeTupleWritable() {
--        this(null);
--    }
--
--    /**
--     * Creates a new instance with the given value
--     * 
--     * @param tuple
--     *            Tuple value
--     */
--    protected AbstractNodeTupleWritable(T tuple) {
--        this.tuple = tuple;
--    }
--
--    /**
--     * Gets the tuple
--     * 
--     * @return Tuple
--     */
--    public T get() {
--        return this.tuple;
--    }
--
--    /**
--     * Sets the tuple
--     * 
--     * @param tuple
--     *            Tuple
--     */
--    public void set(T tuple) {
--        this.tuple = tuple;
--    }
--
--    @Override
--    public void readFields(DataInput input) throws IOException {
--        // Determine how many nodes
--        int size = WritableUtils.readVInt(input);
--        Node[] ns = new Node[size];
--
--        NodeWritable nw = new NodeWritable();
--        for (int i = 0; i < ns.length; i++) {
--            nw.readFields(input);
--            ns[i] = nw.get();
--        }
--
--        // Load the tuple
--        this.tuple = this.createTuple(ns);
--    }
--
--    /**
--     * Creates the actual tuple type from an array of nodes
--     * 
--     * @param ns
--     *            Nodes
--     * @return Tuple
--     */
--    protected abstract T createTuple(Node[] ns);
--
--    @Override
--    public void write(DataOutput output) throws IOException {
--        // Determine how many nodes
--        Node[] ns = this.createNodes(this.tuple);
--        WritableUtils.writeVInt(output, ns.length);
--
--        // Write out nodes
--        NodeWritable nw = new NodeWritable();
--        for (int i = 0; i < ns.length; i++) {
--            nw.set(ns[i]);
--            nw.write(output);
--        }
--    }
--
--    /**
--     * Sets the tuple value
--     * <p>
--     * Intended only for internal use i.e. when a derived implementation
--     * overrides {@link #readFields(DataInput)} and needs to set the tuple 
value
--     * directly i.e. when a derived implementation is using a custom encoding
--     * scheme
--     * </p>
--     * 
--     * @param tuple
--     *            Tuple
--     */
--    protected final void setInternal(T tuple) {
--        this.tuple = tuple;
--    }
--
--    /**
--     * Converts the actual tuple type into an array of nodes
--     * 
--     * @param tuple
--     *            Tuples
--     * @return Nodes
--     */
--    protected abstract Node[] createNodes(T tuple);
--
--    /**
--     * Compares instances node by node
--     * <p>
--     * Derived implementations may wish to override this and substitute native
--     * tuple based comparisons
--     * </p>
--     * 
--     * @param other
--     *            Instance to compare with
--     */
--    @Override
--    public int compareTo(AbstractNodeTupleWritable<T> other) {
--        Node[] ns = this.createNodes(this.tuple);
--        Node[] otherNs = this.createNodes(other.tuple);
--
--        if (ns.length < otherNs.length) {
--            return -1;
--        } else if (ns.length > otherNs.length) {
--            return 1;
--        }
--        // Compare node by node
--        for (int i = 0; i < ns.length; i++) {
--            int c = NodeUtils.compareRDFTerms(ns[i], otherNs[i]);
--            if (c != 0)
--                return c;
--        }
--        return 0;
--    }
--
--    @Override
--    public String toString() {
--        return this.get().toString();
--    }
--
--    @Override
--    public int hashCode() {
--        return this.get().hashCode();
--    }
--
--    @SuppressWarnings("unchecked")
--    @Override
--    public boolean equals(Object other) {
--        if (!(other instanceof AbstractNodeTupleWritable))
--            return false;
--        return this.compareTo((AbstractNodeTupleWritable<T>) other) == 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.hadoop.rdf.types;
++
++import java.io.DataInput;
++import java.io.DataOutput;
++import java.io.IOException;
++
++import org.apache.hadoop.io.WritableComparable;
++import org.apache.hadoop.io.WritableUtils;
++import org.apache.jena.graph.Node ;
++import org.apache.jena.sparql.util.NodeUtils ;
++
++/**
++ * A abstract general purpose writable where the actual class represented is
++ * composed of a number of {@link Node} instances
++ * <p>
++ * The binary encoding of this base implementation is just a variable integer
++ * indicating the number of nodes present followed by the binary encodings of
++ * the {@link NodeWritable} instances. Derived implementations may wish to
++ * override the {@link #readFields(DataInput)} and {@link #write(DataOutput)}
++ * methods in order to use more specialised encodings.
++ * </p>
++ * 
++ * @param <T>
++ *            Tuple type
++ */
++public abstract class AbstractNodeTupleWritable<T> implements 
WritableComparable<AbstractNodeTupleWritable<T>> {
++
++    private T tuple;
++
++    /**
++     * Creates a new empty instance
++     */
++    protected AbstractNodeTupleWritable() {
++        this(null);
++    }
++
++    /**
++     * Creates a new instance with the given value
++     * 
++     * @param tuple
++     *            Tuple value
++     */
++    protected AbstractNodeTupleWritable(T tuple) {
++        this.tuple = tuple;
++    }
++
++    /**
++     * Gets the tuple
++     * 
++     * @return Tuple
++     */
++    public T get() {
++        return this.tuple;
++    }
++
++    /**
++     * Sets the tuple
++     * 
++     * @param tuple
++     *            Tuple
++     */
++    public void set(T tuple) {
++        this.tuple = tuple;
++    }
++
++    @Override
++    public void readFields(DataInput input) throws IOException {
++        // Determine how many nodes
++        int size = WritableUtils.readVInt(input);
++        Node[] ns = new Node[size];
++
++        NodeWritable nw = new NodeWritable();
++        for (int i = 0; i < ns.length; i++) {
++            nw.readFields(input);
++            ns[i] = nw.get();
++        }
++
++        // Load the tuple
++        this.tuple = this.createTuple(ns);
++    }
++
++    /**
++     * Creates the actual tuple type from an array of nodes
++     * 
++     * @param ns
++     *            Nodes
++     * @return Tuple
++     */
++    protected abstract T createTuple(Node[] ns);
++
++    @Override
++    public void write(DataOutput output) throws IOException {
++        // Determine how many nodes
++        Node[] ns = this.createNodes(this.tuple);
++        WritableUtils.writeVInt(output, ns.length);
++
++        // Write out nodes
++        NodeWritable nw = new NodeWritable();
++        for (int i = 0; i < ns.length; i++) {
++            nw.set(ns[i]);
++            nw.write(output);
++        }
++    }
++
++    /**
++     * Sets the tuple value
++     * <p>
++     * Intended only for internal use i.e. when a derived implementation
++     * overrides {@link #readFields(DataInput)} and needs to set the tuple 
value
++     * directly i.e. when a derived implementation is using a custom encoding
++     * scheme
++     * </p>
++     * 
++     * @param tuple
++     *            Tuple
++     */
++    protected final void setInternal(T tuple) {
++        this.tuple = tuple;
++    }
++
++    /**
++     * Converts the actual tuple type into an array of nodes
++     * 
++     * @param tuple
++     *            Tuples
++     * @return Nodes
++     */
++    protected abstract Node[] createNodes(T tuple);
++
++    /**
++     * Compares instances node by node
++     * <p>
++     * Derived implementations may wish to override this and substitute native
++     * tuple based comparisons
++     * </p>
++     * 
++     * @param other
++     *            Instance to compare with
++     */
++    @Override
++    public int compareTo(AbstractNodeTupleWritable<T> other) {
++        Node[] ns = this.createNodes(this.tuple);
++        Node[] otherNs = this.createNodes(other.tuple);
++
++        if (ns.length < otherNs.length) {
++            return -1;
++        } else if (ns.length > otherNs.length) {
++            return 1;
++        }
++        // Compare node by node
++        for (int i = 0; i < ns.length; i++) {
++            int c = NodeUtils.compareRDFTerms(ns[i], otherNs[i]);
++            if (c != 0)
++                return c;
++        }
++        return 0;
++    }
++
++    @Override
++    public String toString() {
++        return this.get().toString();
++    }
++
++    @Override
++    public int hashCode() {
++        return this.get().hashCode();
++    }
++
++    @SuppressWarnings("unchecked")
++    @Override
++    public boolean equals(Object other) {
++        if (!(other instanceof AbstractNodeTupleWritable))
++            return false;
++        return this.compareTo((AbstractNodeTupleWritable<T>) other) == 0;
++    }
++}

http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/CharacteristicSetWritable.java
----------------------------------------------------------------------
diff --cc 
jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/CharacteristicSetWritable.java
index 4a29ec4,4a29ec4..39599fa
--- 
a/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/CharacteristicSetWritable.java
+++ 
b/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/CharacteristicSetWritable.java
@@@ -1,21 -1,21 +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.
-- */
--
++/*
++ * 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.hadoop.rdf.types;
  
  import java.io.DataInput;
@@@ -24,12 -24,12 +24,12 @@@ import java.io.IOException
  import java.util.Iterator;
  import java.util.Map;
  import java.util.TreeMap;
--
++
  import org.apache.hadoop.io.LongWritable;
  import org.apache.hadoop.io.WritableComparable;
  import org.apache.hadoop.io.WritableUtils;
--import org.apache.jena.graph.Node ;
--import org.apache.jena.graph.NodeFactory ;
++import org.apache.jena.graph.Node ;
++import org.apache.jena.graph.NodeFactory ;
  
  /**
   * Represents a characteristic set which is comprised of a count of nodes for

http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/CharacteristicWritable.java
----------------------------------------------------------------------
diff --cc 
jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/CharacteristicWritable.java
index cfb9606,cfb9606..9fc8a08
--- 
a/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/CharacteristicWritable.java
+++ 
b/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/CharacteristicWritable.java
@@@ -1,30 -1,30 +1,30 @@@
--/*
-- * 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.
-- */
--
++/*
++ * 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.hadoop.rdf.types;
  
  import java.io.DataInput;
  import java.io.DataOutput;
  import java.io.IOException;
--
++
  import org.apache.hadoop.io.LongWritable;
  import org.apache.hadoop.io.WritableComparable;
--import org.apache.jena.graph.Node ;
++import org.apache.jena.graph.Node ;
  
  /**
   * Represents a characteristic for a single node and contains the node and a

http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/NodeTupleWritable.java
----------------------------------------------------------------------
diff --cc 
jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/NodeTupleWritable.java
index 9bf7309,9bf7309..d65860b
--- 
a/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/NodeTupleWritable.java
+++ 
b/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/NodeTupleWritable.java
@@@ -1,29 -1,29 +1,29 @@@
--/*
-- * 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.
-- */
--
++/*
++ * 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.hadoop.rdf.types;
  
--import java.io.DataInput;
--import java.io.IOException;
--
--import org.apache.jena.atlas.lib.tuple.Tuple ;
--import org.apache.jena.atlas.lib.tuple.TupleFactory ;
--import org.apache.jena.graph.Node ;
++import java.io.DataInput;
++import java.io.IOException;
++
++import org.apache.jena.atlas.lib.tuple.Tuple ;
++import org.apache.jena.atlas.lib.tuple.TupleFactory ;
++import org.apache.jena.graph.Node ;
  
  /**
   * A writable RDF tuple
@@@ -75,9 -75,9 +75,9 @@@ public class NodeTupleWritable extends 
      }
  
      @Override
--    protected Node[] createNodes(Tuple<Node> tuple) {
++    protected Node[] createNodes(Tuple<Node> tuple) {
          Node n[] = new Node[tuple.len()] ;
--        tuple.copyInto(n);
++        tuple.copyInto(n);
          return n ;
      }
  }

http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/NodeWritable.java
----------------------------------------------------------------------
diff --cc 
jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/NodeWritable.java
index 2316ae9,2316ae9..7b21b26
--- 
a/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/NodeWritable.java
+++ 
b/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/NodeWritable.java
@@@ -1,188 -1,188 +1,188 @@@
--/*
-- * 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.hadoop.rdf.types;
--
--import java.io.DataInput;
--import java.io.DataOutput;
--import java.io.IOException;
--
--import org.apache.hadoop.io.WritableComparable;
--import org.apache.hadoop.io.WritableComparator;
--import org.apache.jena.graph.Node ;
--import org.apache.jena.hadoop.rdf.types.comparators.SimpleBinaryComparator;
--import org.apache.jena.hadoop.rdf.types.converters.ThriftConverter;
--import org.apache.jena.riot.thrift.TRDF;
--import org.apache.jena.riot.thrift.ThriftConvert;
--import org.apache.jena.riot.thrift.wire.RDF_Term;
--import org.apache.jena.sparql.util.NodeUtils ;
--import org.apache.thrift.TException;
--
--/**
-- * A writable for {@link Node} instances
-- * <p>
-- * This uses <a
-- * href="http://afs.github.io/rdf-thrift/rdf-binary-thrift.html";>RDF 
Thrift</a>
-- * for the binary encoding of terms. The in-memory storage for this type is 
both
-- * a {@link Node} and a {@link RDF_Term} with lazy conversion between the two
-- * forms as necessary.
-- * </p>
-- */
--public class NodeWritable implements WritableComparable<NodeWritable> {
--
--    static {
--        WritableComparator.define(NodeWritable.class, new 
SimpleBinaryComparator());
--    }
--
--    private Node node;
--    private RDF_Term term = new RDF_Term();
--
--    /**
--     * Creates an empty writable
--     */
--    public NodeWritable() {
--        this(null);
--    }
--
--    /**
--     * Creates a new instance from the given input
--     * 
--     * @param input
--     *            Input
--     * @return New instance
--     * @throws IOException
--     */
--    public static NodeWritable read(DataInput input) throws IOException {
--        NodeWritable nw = new NodeWritable();
--        nw.readFields(input);
--        return nw;
--    }
--
--    /**
--     * Creates a new writable with the given value
--     * 
--     * @param n
--     *            Node
--     */
--    public NodeWritable(Node n) {
--        this.set(n);
--    }
--
--    /**
--     * Gets the node
--     * 
--     * @return Node
--     */
--    public Node get() {
--        // We may not have yet loaded the node
--        if (this.node == null) {
--            // If term is set to undefined then node is supposed to be null
--            if (this.term.isSet() && !this.term.isSetUndefined()) {
--                this.node = ThriftConvert.convert(this.term);
--            }
--        }
--        return this.node;
--    }
--
--    /**
--     * Sets the node
--     * 
--     * @param n
--     *            Node
--     */
--    public void set(Node n) {
--        this.node = n;
--        // Clear the term for now
--        // We only convert the Node to a term as and when we want to write it
--        // out in order to not waste effort if the value is never written out
--        this.term.clear();
--    }
--
--    @Override
--    public void readFields(DataInput input) throws IOException {
--        // Clear previous value
--        this.node = null;
--        this.term.clear();
--
--        // Read in the new value
--        int termLength = input.readInt();
--        byte[] buffer = new byte[termLength];
--        input.readFully(buffer);
--        try {
--            ThriftConverter.fromBytes(buffer, this.term);
--        } catch (TException e) {
--            throw new IOException(e);
--        }
--
--        // Note that we don't convert it back into a Node at this time
--    }
--
--    @Override
--    public void write(DataOutput output) throws IOException {
--        // May not yet have prepared the Thrift term
--        if (!this.term.isSet()) {
--            if (this.node == null) {
--                this.term.setUndefined(TRDF.UNDEF);
--            } else {
--                ThriftConvert.toThrift(this.node, null, this.term, false);
--            }
--        }
--
--        // Write out the Thrift term
--        byte[] buffer;
--        try {
--            buffer = ThriftConverter.toBytes(this.term);
--        } catch (TException e) {
--            throw new IOException(e);
--        }
--        output.writeInt(buffer.length);
--        output.write(buffer);
--    }
--
--    @Override
--    public int compareTo(NodeWritable other) {
--        // Use get() rather than accessing the field directly because the node
--        // field is lazily instantiated from the Thrift term
--        return NodeUtils.compareRDFTerms(this.get(), other.get());
--    }
--
--    @Override
--    public String toString() {
--        // Use get() rather than accessing the field directly because the node
--        // field is lazily instantiated from the Thrift term
--        Node n = this.get();
--        if (n == null)
--            return "";
--        return n.toString();
--    }
--
--    @Override
--    public int hashCode() {
--        // Use get() rather than accessing the field directly because the node
--        // field is lazily instantiated from the Thrift term
--        Node n = this.get();
--        return n != null ? this.get().hashCode() : 0;
--    }
--
--    @Override
--    public boolean equals(Object other) {
--        if (!(other instanceof NodeWritable))
--            return false;
--        return this.compareTo((NodeWritable) other) == 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.hadoop.rdf.types;
++
++import java.io.DataInput;
++import java.io.DataOutput;
++import java.io.IOException;
++
++import org.apache.hadoop.io.WritableComparable;
++import org.apache.hadoop.io.WritableComparator;
++import org.apache.jena.graph.Node ;
++import org.apache.jena.hadoop.rdf.types.comparators.SimpleBinaryComparator;
++import org.apache.jena.hadoop.rdf.types.converters.ThriftConverter;
++import org.apache.jena.riot.thrift.TRDF;
++import org.apache.jena.riot.thrift.ThriftConvert;
++import org.apache.jena.riot.thrift.wire.RDF_Term;
++import org.apache.jena.sparql.util.NodeUtils ;
++import org.apache.thrift.TException;
++
++/**
++ * A writable for {@link Node} instances
++ * <p>
++ * This uses <a
++ * href="http://afs.github.io/rdf-thrift/rdf-binary-thrift.html";>RDF 
Thrift</a>
++ * for the binary encoding of terms. The in-memory storage for this type is 
both
++ * a {@link Node} and a {@link RDF_Term} with lazy conversion between the two
++ * forms as necessary.
++ * </p>
++ */
++public class NodeWritable implements WritableComparable<NodeWritable> {
++
++    static {
++        WritableComparator.define(NodeWritable.class, new 
SimpleBinaryComparator());
++    }
++
++    private Node node;
++    private RDF_Term term = new RDF_Term();
++
++    /**
++     * Creates an empty writable
++     */
++    public NodeWritable() {
++        this(null);
++    }
++
++    /**
++     * Creates a new instance from the given input
++     * 
++     * @param input
++     *            Input
++     * @return New instance
++     * @throws IOException
++     */
++    public static NodeWritable read(DataInput input) throws IOException {
++        NodeWritable nw = new NodeWritable();
++        nw.readFields(input);
++        return nw;
++    }
++
++    /**
++     * Creates a new writable with the given value
++     * 
++     * @param n
++     *            Node
++     */
++    public NodeWritable(Node n) {
++        this.set(n);
++    }
++
++    /**
++     * Gets the node
++     * 
++     * @return Node
++     */
++    public Node get() {
++        // We may not have yet loaded the node
++        if (this.node == null) {
++            // If term is set to undefined then node is supposed to be null
++            if (this.term.isSet() && !this.term.isSetUndefined()) {
++                this.node = ThriftConvert.convert(this.term);
++            }
++        }
++        return this.node;
++    }
++
++    /**
++     * Sets the node
++     * 
++     * @param n
++     *            Node
++     */
++    public void set(Node n) {
++        this.node = n;
++        // Clear the term for now
++        // We only convert the Node to a term as and when we want to write it
++        // out in order to not waste effort if the value is never written out
++        this.term.clear();
++    }
++
++    @Override
++    public void readFields(DataInput input) throws IOException {
++        // Clear previous value
++        this.node = null;
++        this.term.clear();
++
++        // Read in the new value
++        int termLength = input.readInt();
++        byte[] buffer = new byte[termLength];
++        input.readFully(buffer);
++        try {
++            ThriftConverter.fromBytes(buffer, this.term);
++        } catch (TException e) {
++            throw new IOException(e);
++        }
++
++        // Note that we don't convert it back into a Node at this time
++    }
++
++    @Override
++    public void write(DataOutput output) throws IOException {
++        // May not yet have prepared the Thrift term
++        if (!this.term.isSet()) {
++            if (this.node == null) {
++                this.term.setUndefined(TRDF.UNDEF);
++            } else {
++                ThriftConvert.toThrift(this.node, null, this.term, false);
++            }
++        }
++
++        // Write out the Thrift term
++        byte[] buffer;
++        try {
++            buffer = ThriftConverter.toBytes(this.term);
++        } catch (TException e) {
++            throw new IOException(e);
++        }
++        output.writeInt(buffer.length);
++        output.write(buffer);
++    }
++
++    @Override
++    public int compareTo(NodeWritable other) {
++        // Use get() rather than accessing the field directly because the node
++        // field is lazily instantiated from the Thrift term
++        return NodeUtils.compareRDFTerms(this.get(), other.get());
++    }
++
++    @Override
++    public String toString() {
++        // Use get() rather than accessing the field directly because the node
++        // field is lazily instantiated from the Thrift term
++        Node n = this.get();
++        if (n == null)
++            return "";
++        return n.toString();
++    }
++
++    @Override
++    public int hashCode() {
++        // Use get() rather than accessing the field directly because the node
++        // field is lazily instantiated from the Thrift term
++        Node n = this.get();
++        return n != null ? this.get().hashCode() : 0;
++    }
++
++    @Override
++    public boolean equals(Object other) {
++        if (!(other instanceof NodeWritable))
++            return false;
++        return this.compareTo((NodeWritable) other) == 0;
++    }
++}

Reply via email to