You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2016/05/14 14:03:22 UTC
[23/42] jena git commit: Merge commit 'refs/pull/143/head' of
github.com:apache/jena
http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-core/testing/wg/localtests/ManifestRestriction001.rdf
----------------------------------------------------------------------
diff --cc jena-core/testing/wg/localtests/ManifestRestriction001.rdf
index 1cee138,1cee138..b125d17
--- a/jena-core/testing/wg/localtests/ManifestRestriction001.rdf
+++ b/jena-core/testing/wg/localtests/ManifestRestriction001.rdf
@@@ -1,30 -1,30 +1,30 @@@
--<!--
-- Local test files use in Jena2 development
---->
--<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
-- xmlns:rdfs='http://www.w3.org/2000/01/rdf-schema#'
-- xmlns:rtest='http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#'
-- xmlns:otest='http://www.w3.org/2002/03owlt/testOntology#'
-- xmlns:dc='http://purl.org/dc/elements/1.0/'
-- xmlns='http://www.w3.org/2002/03owlt/localtests/ManifestRestriction001#'
-- xmlns:owl='http://www.w3.org/2002/07/owl#'
-- xml:base='http://www.w3.org/2002/03owlt/localtests/ManifestRestriction001'
-->
--<otest:PositiveEntailmentTest rdf:ID='intersection1'>
-- <rtest:status>Jena internal</rtest:status>
-- <dc:creator>Dave Reynolds</dc:creator>
-- <rtest:description rdf:parseType='Literal'>
-- Test core intersectionOf processing - 'if' direction.
-- </rtest:description>
-- <rtest:premiseDocument>
-- <rtest:RDF-XML-Document rdf:about='premisesRestriction001' >
-- <otest:level rdf:resource='http://www.w3.org/2002/03owlt/testOntology#Lite' />
-- </rtest:RDF-XML-Document>
-- </rtest:premiseDocument>
-- <rtest:conclusionDocument>
-- <rtest:RDF-XML-Document rdf:about='conclusionsRestriction001' >
-- <otest:level rdf:resource='http://www.w3.org/2002/03owlt/testOntology#Lite' />
-- </rtest:RDF-XML-Document>
-- </rtest:conclusionDocument>
--</otest:PositiveEntailmentTest >
--</rdf:RDF>
++<!--
++ Local test files use in Jena2 development
++-->
++<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
++ xmlns:rdfs='http://www.w3.org/2000/01/rdf-schema#'
++ xmlns:rtest='http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#'
++ xmlns:otest='http://www.w3.org/2002/03owlt/testOntology#'
++ xmlns:dc='http://purl.org/dc/elements/1.0/'
++ xmlns='http://www.w3.org/2002/03owlt/localtests/ManifestRestriction001#'
++ xmlns:owl='http://www.w3.org/2002/07/owl#'
++ xml:base='http://www.w3.org/2002/03owlt/localtests/ManifestRestriction001'
++>
++<otest:PositiveEntailmentTest rdf:ID='intersection1'>
++ <rtest:status>Jena internal</rtest:status>
++ <dc:creator>Dave Reynolds</dc:creator>
++ <rtest:description rdf:parseType='Literal'>
++ Test core intersectionOf processing - 'if' direction.
++ </rtest:description>
++ <rtest:premiseDocument>
++ <rtest:RDF-XML-Document rdf:about='premisesRestriction001' >
++ <otest:level rdf:resource='http://www.w3.org/2002/03owlt/testOntology#Lite' />
++ </rtest:RDF-XML-Document>
++ </rtest:premiseDocument>
++ <rtest:conclusionDocument>
++ <rtest:RDF-XML-Document rdf:about='conclusionsRestriction001' >
++ <otest:level rdf:resource='http://www.w3.org/2002/03owlt/testOntology#Lite' />
++ </rtest:RDF-XML-Document>
++ </rtest:conclusionDocument>
++</otest:PositiveEntailmentTest >
++</rdf:RDF>
http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-core/testing/wg/localtests/ManifestSubclass001.rdf
----------------------------------------------------------------------
diff --cc jena-core/testing/wg/localtests/ManifestSubclass001.rdf
index b91aa4a,b91aa4a..603a183
--- a/jena-core/testing/wg/localtests/ManifestSubclass001.rdf
+++ b/jena-core/testing/wg/localtests/ManifestSubclass001.rdf
@@@ -1,30 -1,30 +1,30 @@@
--<!--
-- Local test files use in Jena2 development
---->
--<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
-- xmlns:rdfs='http://www.w3.org/2000/01/rdf-schema#'
-- xmlns:rtest='http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#'
-- xmlns:otest='http://www.w3.org/2002/03owlt/testOntology#'
-- xmlns:dc='http://purl.org/dc/elements/1.0/'
-- xmlns='http://www.w3.org/2002/03owlt/localtests/ManifestSubclass001#'
-- xmlns:owl='http://www.w3.org/2002/07/owl#'
-- xml:base='http://www.w3.org/2002/03owlt/localtests/ManifestSubclass001'
-->
--<otest:PositiveEntailmentTest rdf:ID='intersection1'>
-- <rtest:status>Jena internal</rtest:status>
-- <dc:creator>Dave Reynolds</dc:creator>
-- <rtest:description rdf:parseType='Literal'>
-- Basic subclass closure checking.
-- </rtest:description>
-- <rtest:premiseDocument>
-- <rtest:RDF-XML-Document rdf:about='premisesSubclass001' >
-- <otest:level rdf:resource='http://www.w3.org/2002/03owlt/testOntology#Lite' />
-- </rtest:RDF-XML-Document>
-- </rtest:premiseDocument>
-- <rtest:conclusionDocument>
-- <rtest:RDF-XML-Document rdf:about='conclusionsSubclass001' >
-- <otest:level rdf:resource='http://www.w3.org/2002/03owlt/testOntology#Lite' />
-- </rtest:RDF-XML-Document>
-- </rtest:conclusionDocument>
--</otest:PositiveEntailmentTest >
--</rdf:RDF>
++<!--
++ Local test files use in Jena2 development
++-->
++<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
++ xmlns:rdfs='http://www.w3.org/2000/01/rdf-schema#'
++ xmlns:rtest='http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#'
++ xmlns:otest='http://www.w3.org/2002/03owlt/testOntology#'
++ xmlns:dc='http://purl.org/dc/elements/1.0/'
++ xmlns='http://www.w3.org/2002/03owlt/localtests/ManifestSubclass001#'
++ xmlns:owl='http://www.w3.org/2002/07/owl#'
++ xml:base='http://www.w3.org/2002/03owlt/localtests/ManifestSubclass001'
++>
++<otest:PositiveEntailmentTest rdf:ID='intersection1'>
++ <rtest:status>Jena internal</rtest:status>
++ <dc:creator>Dave Reynolds</dc:creator>
++ <rtest:description rdf:parseType='Literal'>
++ Basic subclass closure checking.
++ </rtest:description>
++ <rtest:premiseDocument>
++ <rtest:RDF-XML-Document rdf:about='premisesSubclass001' >
++ <otest:level rdf:resource='http://www.w3.org/2002/03owlt/testOntology#Lite' />
++ </rtest:RDF-XML-Document>
++ </rtest:premiseDocument>
++ <rtest:conclusionDocument>
++ <rtest:RDF-XML-Document rdf:about='conclusionsSubclass001' >
++ <otest:level rdf:resource='http://www.w3.org/2002/03owlt/testOntology#Lite' />
++ </rtest:RDF-XML-Document>
++ </rtest:conclusionDocument>
++</otest:PositiveEntailmentTest >
++</rdf:RDF>
http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-core/testing/wg/localtests/conclusions008.rdf
----------------------------------------------------------------------
diff --cc jena-core/testing/wg/localtests/conclusions008.rdf
index 394347b,394347b..4aec7e5
--- a/jena-core/testing/wg/localtests/conclusions008.rdf
+++ b/jena-core/testing/wg/localtests/conclusions008.rdf
@@@ -1,24 -1,24 +1,24 @@@
--<?xml version="1.0"?>
--<!--
-- Local test files use in Jena2 development
--
-- Infer domain/range from inverseof
---->
--
--<!DOCTYPE rdf:RDF [
-- <!ENTITY eg 'urn:x-hp:eg'>
-- <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
-- <!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
-- <!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>
-- <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
--]>
--
--<rdf:RDF xmlns:rdf="&rdf;" xmlns:rdfs="&rdfs;" xmlns:xsd="&xsd;" xmlns:owl="&owl;"
-- xml:base="⪚" xmlns="⪚#">
--
-- <owl:ObjectProperty rdf:about="#q">
-- <rdfs:domain rdf:resource="⪚#B" />
-- <rdfs:range rdf:resource="⪚#A" />
-- </owl:ObjectProperty>
--
--</rdf:RDF>
++<?xml version="1.0"?>
++<!--
++ Local test files use in Jena2 development
++
++ Infer domain/range from inverseof
++-->
++
++<!DOCTYPE rdf:RDF [
++ <!ENTITY eg 'urn:x-hp:eg'>
++ <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
++ <!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
++ <!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>
++ <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
++]>
++
++<rdf:RDF xmlns:rdf="&rdf;" xmlns:rdfs="&rdfs;" xmlns:xsd="&xsd;" xmlns:owl="&owl;"
++ xml:base="⪚" xmlns="⪚#">
++
++ <owl:ObjectProperty rdf:about="#q">
++ <rdfs:domain rdf:resource="⪚#B" />
++ <rdfs:range rdf:resource="⪚#A" />
++ </owl:ObjectProperty>
++
++</rdf:RDF>
http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-core/testing/wg/localtests/conclusionsRestriction001.rdf
----------------------------------------------------------------------
diff --cc jena-core/testing/wg/localtests/conclusionsRestriction001.rdf
index 90a6ff9,90a6ff9..20de9e2
--- a/jena-core/testing/wg/localtests/conclusionsRestriction001.rdf
+++ b/jena-core/testing/wg/localtests/conclusionsRestriction001.rdf
@@@ -1,17 -1,17 +1,17 @@@
--<!--
-- Local test files use in Jena2 development
--
-- Test core intersectionOf processing - 'if' direction.
---->
--<rdf:RDF
-- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-- xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
-- xmlns:owl="http://www.w3.org/2002/07/owl#"
-- xml:base="http://www.w3.org/2002/03owlt/equivalentClass/premisesRestriction001" >
--
-- <owl:Class rdf:ID="c1">
-- <!-- <owl:equivalentClass rdf:resource="#c2" /> -->
-- <rdfs:subClassOf rdf:resource="#c2" />
-- </owl:Class>
--
--</rdf:RDF>
++<!--
++ Local test files use in Jena2 development
++
++ Test core intersectionOf processing - 'if' direction.
++-->
++<rdf:RDF
++ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
++ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
++ xmlns:owl="http://www.w3.org/2002/07/owl#"
++ xml:base="http://www.w3.org/2002/03owlt/equivalentClass/premisesRestriction001" >
++
++ <owl:Class rdf:ID="c1">
++ <!-- <owl:equivalentClass rdf:resource="#c2" /> -->
++ <rdfs:subClassOf rdf:resource="#c2" />
++ </owl:Class>
++
++</rdf:RDF>
http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-core/testing/wg/localtests/conclusionsSubclass001.rdf
----------------------------------------------------------------------
diff --cc jena-core/testing/wg/localtests/conclusionsSubclass001.rdf
index 269c1d3,269c1d3..fa2fe3a
--- a/jena-core/testing/wg/localtests/conclusionsSubclass001.rdf
+++ b/jena-core/testing/wg/localtests/conclusionsSubclass001.rdf
@@@ -1,20 -1,20 +1,20 @@@
--<!--
-- Local test files use in Jena2 development
--
-- Test core intersectionOf processing - 'if' direction.
---->
--<rdf:RDF
-- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-- xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
-- xmlns:owl="http://www.w3.org/2002/07/owl#"
-- xml:base="http://www.w3.org/2002/03owlt/equivalentClass/premisesSubclass001" >
--
-- <rdf:Description rdf:about="#a">
-- <rdfs:subClassOf rdf:resource="#c"/>
-- </rdf:Description>
--
-- <rdf:Description rdf:about="http://www.w3.org/2002/07/owl#Thing">
-- <owl:equivalentClass rdf:resource="#d"/>
-- </rdf:Description>
--
--</rdf:RDF>
++<!--
++ Local test files use in Jena2 development
++
++ Test core intersectionOf processing - 'if' direction.
++-->
++<rdf:RDF
++ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
++ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
++ xmlns:owl="http://www.w3.org/2002/07/owl#"
++ xml:base="http://www.w3.org/2002/03owlt/equivalentClass/premisesSubclass001" >
++
++ <rdf:Description rdf:about="#a">
++ <rdfs:subClassOf rdf:resource="#c"/>
++ </rdf:Description>
++
++ <rdf:Description rdf:about="http://www.w3.org/2002/07/owl#Thing">
++ <owl:equivalentClass rdf:resource="#d"/>
++ </rdf:Description>
++
++</rdf:RDF>
http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-core/testing/wg/localtests/premises008.rdf
----------------------------------------------------------------------
diff --cc jena-core/testing/wg/localtests/premises008.rdf
index 9df8af7,9df8af7..f85c1f5
--- a/jena-core/testing/wg/localtests/premises008.rdf
+++ b/jena-core/testing/wg/localtests/premises008.rdf
@@@ -1,31 -1,31 +1,31 @@@
--<?xml version="1.0"?>
--<!--
-- Local test files use in Jena2 development
--
-- Infer domain/range from inverseof
---->
--
--<!DOCTYPE rdf:RDF [
-- <!ENTITY eg 'urn:x-hp:eg'>
-- <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
-- <!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
-- <!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>
-- <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
--]>
--
--<rdf:RDF xmlns:rdf="&rdf;" xmlns:rdfs="&rdfs;" xmlns:xsd="&xsd;" xmlns:owl="&owl;"
-- xml:base="⪚" xmlns="⪚#">
--
-- <owl:Class rdf:about="#A" />
-- <owl:Class rdf:about="#B" />
--
-- <owl:ObjectProperty rdf:about="#p">
-- <rdfs:domain rdf:resource="⪚#A" />
-- <rdfs:range rdf:resource="⪚#B" />
-- </owl:ObjectProperty>
--
-- <owl:ObjectProperty rdf:about="#q">
-- <owl:inverseOf rdf:resource="⪚#p"/>
-- </owl:ObjectProperty>
--
--</rdf:RDF>
++<?xml version="1.0"?>
++<!--
++ Local test files use in Jena2 development
++
++ Infer domain/range from inverseof
++-->
++
++<!DOCTYPE rdf:RDF [
++ <!ENTITY eg 'urn:x-hp:eg'>
++ <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
++ <!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
++ <!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>
++ <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
++]>
++
++<rdf:RDF xmlns:rdf="&rdf;" xmlns:rdfs="&rdfs;" xmlns:xsd="&xsd;" xmlns:owl="&owl;"
++ xml:base="⪚" xmlns="⪚#">
++
++ <owl:Class rdf:about="#A" />
++ <owl:Class rdf:about="#B" />
++
++ <owl:ObjectProperty rdf:about="#p">
++ <rdfs:domain rdf:resource="⪚#A" />
++ <rdfs:range rdf:resource="⪚#B" />
++ </owl:ObjectProperty>
++
++ <owl:ObjectProperty rdf:about="#q">
++ <owl:inverseOf rdf:resource="⪚#p"/>
++ </owl:ObjectProperty>
++
++</rdf:RDF>
http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-core/testing/wg/localtests/premisesRestriction001.rdf
----------------------------------------------------------------------
diff --cc jena-core/testing/wg/localtests/premisesRestriction001.rdf
index 1ecf367,1ecf367..2e724bc
--- a/jena-core/testing/wg/localtests/premisesRestriction001.rdf
+++ b/jena-core/testing/wg/localtests/premisesRestriction001.rdf
@@@ -1,33 -1,33 +1,33 @@@
--<!--
-- Local test files use in Jena2 development
--
-- Test core intersectionOf processing - 'if' direction.
---->
--<rdf:RDF
-- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-- xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
-- xmlns:owl="http://www.w3.org/2002/07/owl#"
-- xml:base="http://www.w3.org/2002/03owlt/equivalentClass/premisesRestriction001" >
--
-- <owl:Class rdf:about="#d" />
-- <owl:ObjectProperty rdf:about="#p" />
--
-- <owl:Class rdf:ID="c1">
-- <owl:equivalentClass>
-- <owl:Restriction>
-- <owl:onProperty rdf:resource="#p"/>
-- <owl:someValuesFrom rdf:resource="#d" />
-- </owl:Restriction>
-- </owl:equivalentClass>
-- </owl:Class>
--
-- <owl:Class rdf:ID="c2">
-- <owl:equivalentClass>
-- <owl:Restriction>
-- <owl:onProperty rdf:resource="#p"/>
-- <owl:someValuesFrom rdf:resource="#d" />
-- </owl:Restriction>
-- </owl:equivalentClass>
-- </owl:Class>
--
--</rdf:RDF>
++<!--
++ Local test files use in Jena2 development
++
++ Test core intersectionOf processing - 'if' direction.
++-->
++<rdf:RDF
++ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
++ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
++ xmlns:owl="http://www.w3.org/2002/07/owl#"
++ xml:base="http://www.w3.org/2002/03owlt/equivalentClass/premisesRestriction001" >
++
++ <owl:Class rdf:about="#d" />
++ <owl:ObjectProperty rdf:about="#p" />
++
++ <owl:Class rdf:ID="c1">
++ <owl:equivalentClass>
++ <owl:Restriction>
++ <owl:onProperty rdf:resource="#p"/>
++ <owl:someValuesFrom rdf:resource="#d" />
++ </owl:Restriction>
++ </owl:equivalentClass>
++ </owl:Class>
++
++ <owl:Class rdf:ID="c2">
++ <owl:equivalentClass>
++ <owl:Restriction>
++ <owl:onProperty rdf:resource="#p"/>
++ <owl:someValuesFrom rdf:resource="#d" />
++ </owl:Restriction>
++ </owl:equivalentClass>
++ </owl:Class>
++
++</rdf:RDF>
http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-core/testing/wg/localtests/premisesSubclass001.rdf
----------------------------------------------------------------------
diff --cc jena-core/testing/wg/localtests/premisesSubclass001.rdf
index d61c3b9,d61c3b9..e80bf40
--- a/jena-core/testing/wg/localtests/premisesSubclass001.rdf
+++ b/jena-core/testing/wg/localtests/premisesSubclass001.rdf
@@@ -1,31 -1,31 +1,31 @@@
--<!--
-- Local test files use in Jena2 development
--
-- Test core intersectionOf processing - 'if' direction.
---->
--<rdf:RDF
-- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-- xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
-- xmlns:owl="http://www.w3.org/2002/07/owl#"
-- xml:base="http://www.w3.org/2002/03owlt/equivalentClass/premisesSubclass001" >
--
-- <owl:Class rdf:about="#a">
-- <rdfs:subClassOf rdf:resource="#b"/>
-- </owl:Class>
--
-- <owl:Class rdf:about="#b">
-- <rdfs:subClassOf rdf:resource="#c"/>
-- </owl:Class>
--
-- <owl:Class rdf:about="#c">
-- <rdfs:subClassOf rdf:resource="#d"/>
-- </owl:Class>
--
-- <owl:Class rdf:about="#d">
-- </owl:Class>
--
-- <rdf:Description rdf:about="http://www.w3.org/2002/07/owl#Thing">
-- <rdfs:subClassOf rdf:resource="#d"/>
-- </rdf:Description>
--
--</rdf:RDF>
++<!--
++ Local test files use in Jena2 development
++
++ Test core intersectionOf processing - 'if' direction.
++-->
++<rdf:RDF
++ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
++ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
++ xmlns:owl="http://www.w3.org/2002/07/owl#"
++ xml:base="http://www.w3.org/2002/03owlt/equivalentClass/premisesSubclass001" >
++
++ <owl:Class rdf:about="#a">
++ <rdfs:subClassOf rdf:resource="#b"/>
++ </owl:Class>
++
++ <owl:Class rdf:about="#b">
++ <rdfs:subClassOf rdf:resource="#c"/>
++ </owl:Class>
++
++ <owl:Class rdf:about="#c">
++ <rdfs:subClassOf rdf:resource="#d"/>
++ </owl:Class>
++
++ <owl:Class rdf:about="#d">
++ </owl:Class>
++
++ <rdf:Description rdf:about="http://www.w3.org/2002/07/owl#Thing">
++ <rdfs:subClassOf rdf:resource="#d"/>
++ </rdf:Description>
++
++</rdf:RDF>
http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-csv/src/main/java/org/apache/jena/propertytable/Column.java
----------------------------------------------------------------------
diff --cc jena-csv/src/main/java/org/apache/jena/propertytable/Column.java
index 5650d07,5650d07..50d7ebf
--- a/jena-csv/src/main/java/org/apache/jena/propertytable/Column.java
+++ b/jena-csv/src/main/java/org/apache/jena/propertytable/Column.java
@@@ -1,45 -1,45 +1,45 @@@
--/*
-- * Licensed to the Apache Software Foundation (ASF) under one
-- * or more contributor license agreements. See the NOTICE file
-- * distributed with this work for additional information
-- * regarding copyright ownership. The ASF licenses this file
-- * to you under the Apache License, Version 2.0 (the
-- * "License"); you may not use this file except in compliance
-- * with the License. You may obtain a copy of the License at
-- *
-- * http://www.apache.org/licenses/LICENSE-2.0
-- *
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- */
--package org.apache.jena.propertytable;
--
--import java.util.List;
--
--import org.apache.jena.graph.Node ;
--
--/**
-- * Each Column of the PropertyTable has an unique columnKey Node of the predicate (or p for short).
-- *
-- */
--public interface Column {
--
-- /**
-- * @return the PropertyTable it belongs to
-- */
-- PropertyTable getTable();
--
-- /**
-- * @return the columnKey Node of the predicate
-- */
-- Node getColumnKey();
--
-- /**
-- * @return all the values within a Column
-- */
-- List<Node> getValues();
--
--}
++/*
++ * 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.List;
++
++import org.apache.jena.graph.Node ;
++
++/**
++ * Each Column of the PropertyTable has an unique columnKey Node of the predicate (or p for short).
++ *
++ */
++public interface Column {
++
++ /**
++ * @return the PropertyTable it belongs to
++ */
++ PropertyTable getTable();
++
++ /**
++ * @return the columnKey Node of the predicate
++ */
++ Node getColumnKey();
++
++ /**
++ * @return all the values within a Column
++ */
++ List<Node> getValues();
++
++}
http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-csv/src/main/java/org/apache/jena/propertytable/PropertyTable.java
----------------------------------------------------------------------
diff --cc jena-csv/src/main/java/org/apache/jena/propertytable/PropertyTable.java
index 93b68c1,93b68c1..78c6967
--- a/jena-csv/src/main/java/org/apache/jena/propertytable/PropertyTable.java
+++ b/jena-csv/src/main/java/org/apache/jena/propertytable/PropertyTable.java
@@@ -1,126 -1,126 +1,126 @@@
--/*
-- * 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 java.util.List;
--
--import org.apache.jena.graph.Node ;
--import org.apache.jena.graph.Triple ;
--import org.apache.jena.util.iterator.ExtendedIterator ;
--
--/**
-- * PropertyTable is designed to be a table of RDF terms, or Nodes in Jena.
-- * Each Column of the PropertyTable has an unique columnKey Node of the predicate (or p for short).
-- * Each Row of the PropertyTable has an unique rowKey Node of the subject (or s for short).
-- * You can use getColumn() to get the Column by its columnKey Node of the predicate, while getRow() for Row.
-- *
-- */
--public interface PropertyTable {
--
-- /**
-- * Query for ?s <p> <o>
-- * @param column the Column with the columnKey Node of the predicate
-- * @param value the object (or value) Node
-- * @return the ExtendedIterator of the matching Triples
-- */
-- ExtendedIterator<Triple> getTripleIterator(Column column, Node value);
--
-- /**
-- * Query for ?s <p> ?o
-- * @param column the Column with the columnKey Node of the predicate
-- * @return the ExtendedIterator of the matching Triples
-- */
-- ExtendedIterator<Triple> getTripleIterator(Column column);
--
-- /**
-- * Query for ?s ?p <o>
-- * @param value the object (or value) Node
-- * @return the ExtendedIterator of the matching Triples
-- */
-- ExtendedIterator<Triple> getTripleIterator(Node value);
--
-- /**
-- * Query for <s> ?p ?o
-- * @param row the Row with the rowKey Node of the subject
-- * @return the ExtendedIterator of the matching Triples
-- */
-- ExtendedIterator<Triple> getTripleIterator(Row row);
--
-- /**
-- * Query for ?s ?p ?o
-- * @return all of the Triples of the PropertyTable
-- */
-- ExtendedIterator<Triple> getTripleIterator();
--
-- /**
-- * @return all of the Columns of the PropertyTable
-- */
-- Collection<Column> getColumns();
--
-- /**
-- * Get Column by its columnKey Node of the predicate
-- * @param p columnKey Node of the predicate
-- * @return the Column
-- */
-- Column getColumn(Node p);
--
-- /**
-- * Create a Column by its columnKey Node of the predicate
-- * @param p
-- */
-- Column createColumn(Node p);
--
-- /**
-- * Get Row by its rowKey Node of the subject
-- * @param s rowKey Node of the subject
-- * @return the Row
-- */
-- Row getRow(Node s);
--
--
-- /**
-- * Create Row by its rowKey Node of the subject
-- * @param s rowKey Node of the subject
-- * @return the Row created
-- */
-- Row createRow(Node s);
--
--
-- /**
-- * Get all of the rows
-- */
-- List<Row> getAllRows() ;
--
--
-- /**
-- * Get all the values within a Column
-- * @param column
-- * @return the values
-- */
-- List<Node> getColumnValues(Column column);
--
-- /**
-- * Get the Rows matching the value of a Column
-- * @param column the Column with the columnKey Node of the predicate
-- * @param value the object (or value) Node
-- * @return the matching Rows
-- */
-- Collection<Row> getMatchingRows(Column column, Node value);
--
--}
++/*
++ * 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 java.util.List;
++
++import org.apache.jena.graph.Node ;
++import org.apache.jena.graph.Triple ;
++import org.apache.jena.util.iterator.ExtendedIterator ;
++
++/**
++ * PropertyTable is designed to be a table of RDF terms, or Nodes in Jena.
++ * Each Column of the PropertyTable has an unique columnKey Node of the predicate (or p for short).
++ * Each Row of the PropertyTable has an unique rowKey Node of the subject (or s for short).
++ * You can use getColumn() to get the Column by its columnKey Node of the predicate, while getRow() for Row.
++ *
++ */
++public interface PropertyTable {
++
++ /**
++ * Query for ?s <p> <o>
++ * @param column the Column with the columnKey Node of the predicate
++ * @param value the object (or value) Node
++ * @return the ExtendedIterator of the matching Triples
++ */
++ ExtendedIterator<Triple> getTripleIterator(Column column, Node value);
++
++ /**
++ * Query for ?s <p> ?o
++ * @param column the Column with the columnKey Node of the predicate
++ * @return the ExtendedIterator of the matching Triples
++ */
++ ExtendedIterator<Triple> getTripleIterator(Column column);
++
++ /**
++ * Query for ?s ?p <o>
++ * @param value the object (or value) Node
++ * @return the ExtendedIterator of the matching Triples
++ */
++ ExtendedIterator<Triple> getTripleIterator(Node value);
++
++ /**
++ * Query for <s> ?p ?o
++ * @param row the Row with the rowKey Node of the subject
++ * @return the ExtendedIterator of the matching Triples
++ */
++ ExtendedIterator<Triple> getTripleIterator(Row row);
++
++ /**
++ * Query for ?s ?p ?o
++ * @return all of the Triples of the PropertyTable
++ */
++ ExtendedIterator<Triple> getTripleIterator();
++
++ /**
++ * @return all of the Columns of the PropertyTable
++ */
++ Collection<Column> getColumns();
++
++ /**
++ * Get Column by its columnKey Node of the predicate
++ * @param p columnKey Node of the predicate
++ * @return the Column
++ */
++ Column getColumn(Node p);
++
++ /**
++ * Create a Column by its columnKey Node of the predicate
++ * @param p
++ */
++ Column createColumn(Node p);
++
++ /**
++ * Get Row by its rowKey Node of the subject
++ * @param s rowKey Node of the subject
++ * @return the Row
++ */
++ Row getRow(Node s);
++
++
++ /**
++ * Create Row by its rowKey Node of the subject
++ * @param s rowKey Node of the subject
++ * @return the Row created
++ */
++ Row createRow(Node s);
++
++
++ /**
++ * Get all of the rows
++ */
++ List<Row> getAllRows() ;
++
++
++ /**
++ * Get all the values within a Column
++ * @param column
++ * @return the values
++ */
++ List<Node> getColumnValues(Column column);
++
++ /**
++ * Get the Rows matching the value of a Column
++ * @param column the Column with the columnKey Node of the predicate
++ * @param value the object (or value) Node
++ * @return the matching Rows
++ */
++ Collection<Row> getMatchingRows(Column column, Node value);
++
++}
http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-csv/src/main/java/org/apache/jena/propertytable/Row.java
----------------------------------------------------------------------
diff --cc jena-csv/src/main/java/org/apache/jena/propertytable/Row.java
index 3824d8f,3824d8f..cb2ae9b
--- a/jena-csv/src/main/java/org/apache/jena/propertytable/Row.java
+++ b/jena-csv/src/main/java/org/apache/jena/propertytable/Row.java
@@@ -1,75 -1,75 +1,75 @@@
--/*
-- * 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.Triple ;
--import org.apache.jena.util.iterator.ExtendedIterator ;
--
--/**
-- * Each Row of the PropertyTable has an unique rowKey Node of the subject (or s for short).
-- *
-- */
--public interface Row {
--
-- /**
-- * @return the PropertyTable it belongs to
-- */
-- PropertyTable getTable();
--
-- /**
-- * Set the value of the Column in this Row
-- * @param column
-- * @param value
-- */
-- void setValue(Column column, Node value);
--
-- /**
-- * Get the value of the Column in this Row
-- * @param column
-- * @return value
-- */
-- Node getValue(Column column);
--
--
-- /**
-- * Get the value of the Column in this Row
-- * @param ColumnKey
-- * @return value
-- */
-- Node getValue(Node ColumnKey);
--
-- /**
-- * @return the rowKey Node of the subject
-- */
-- Node getRowKey();
--
-- /**
-- * @return the Triple Iterator over the values in this Row
-- */
-- ExtendedIterator<Triple> getTripleIterator();
--
-- /**
-- * @return all of the Columns of the PropertyTable
-- */
-- Collection<Column> getColumns();
--
--}
++/*
++ * 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.Triple ;
++import org.apache.jena.util.iterator.ExtendedIterator ;
++
++/**
++ * Each Row of the PropertyTable has an unique rowKey Node of the subject (or s for short).
++ *
++ */
++public interface Row {
++
++ /**
++ * @return the PropertyTable it belongs to
++ */
++ PropertyTable getTable();
++
++ /**
++ * Set the value of the Column in this Row
++ * @param column
++ * @param value
++ */
++ void setValue(Column column, Node value);
++
++ /**
++ * Get the value of the Column in this Row
++ * @param column
++ * @return value
++ */
++ Node getValue(Column column);
++
++
++ /**
++ * Get the value of the Column in this Row
++ * @param ColumnKey
++ * @return value
++ */
++ Node getValue(Node ColumnKey);
++
++ /**
++ * @return the rowKey Node of the subject
++ */
++ Node getRowKey();
++
++ /**
++ * @return the Triple Iterator over the values in this Row
++ */
++ ExtendedIterator<Triple> getTripleIterator();
++
++ /**
++ * @return all of the Columns of the PropertyTable
++ */
++ Collection<Column> getColumns();
++
++}
http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-csv/src/main/java/org/apache/jena/propertytable/graph/GraphCSV.java
----------------------------------------------------------------------
diff --cc jena-csv/src/main/java/org/apache/jena/propertytable/graph/GraphCSV.java
index d002ec6,d002ec6..4f2e3fd
--- a/jena-csv/src/main/java/org/apache/jena/propertytable/graph/GraphCSV.java
+++ b/jena-csv/src/main/java/org/apache/jena/propertytable/graph/GraphCSV.java
@@@ -1,62 -1,62 +1,62 @@@
--/*
-- * 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.propertytable.PropertyTable;
--import org.apache.jena.propertytable.impl.PropertyTableBuilder;
--
--
--/**
-- * GraphCSV is a sub class of GraphPropertyTable aiming at CSV data.
-- * Its constructor takes a CSV file path as the parameter, parse the file using a CSV Parser,
-- * and makes a PropertyTable through PropertyTableBuilder.
-- *
-- */
--public class GraphCSV extends GraphPropertyTable {
--
-- public static GraphCSV createHashMapImpl( String csvFilePath ){
-- return new GraphCSVHashMapImpl(csvFilePath);
-- }
--
-- public static GraphCSV createArrayImpl( String csvFilePath ){
-- return new GraphCSVArrayImpl(csvFilePath);
-- }
--
-- protected GraphCSV (PropertyTable table) {
-- super(table);
-- }
--
-- // use the Java array implementation of PropertyTable for default
-- public GraphCSV ( String csvFilePath ){
-- super(PropertyTableBuilder.buildPropetyTableArrayImplFromCsv(csvFilePath));
-- }
--}
--
--
--class GraphCSVHashMapImpl extends GraphCSV{
-- protected GraphCSVHashMapImpl(String csvFilePath){
-- super(PropertyTableBuilder.buildPropetyTableHashMapImplFromCsv(csvFilePath));
-- }
--}
--
--class GraphCSVArrayImpl extends GraphCSV{
-- protected GraphCSVArrayImpl(String csvFilePath){
-- super(PropertyTableBuilder.buildPropetyTableArrayImplFromCsv(csvFilePath));
-- }
--}
++/*
++ * 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.propertytable.PropertyTable;
++import org.apache.jena.propertytable.impl.PropertyTableBuilder;
++
++
++/**
++ * GraphCSV is a sub class of GraphPropertyTable aiming at CSV data.
++ * Its constructor takes a CSV file path as the parameter, parse the file using a CSV Parser,
++ * and makes a PropertyTable through PropertyTableBuilder.
++ *
++ */
++public class GraphCSV extends GraphPropertyTable {
++
++ public static GraphCSV createHashMapImpl( String csvFilePath ){
++ return new GraphCSVHashMapImpl(csvFilePath);
++ }
++
++ public static GraphCSV createArrayImpl( String csvFilePath ){
++ return new GraphCSVArrayImpl(csvFilePath);
++ }
++
++ protected GraphCSV (PropertyTable table) {
++ super(table);
++ }
++
++ // use the Java array implementation of PropertyTable for default
++ public GraphCSV ( String csvFilePath ){
++ super(PropertyTableBuilder.buildPropetyTableArrayImplFromCsv(csvFilePath));
++ }
++}
++
++
++class GraphCSVHashMapImpl extends GraphCSV{
++ protected GraphCSVHashMapImpl(String csvFilePath){
++ super(PropertyTableBuilder.buildPropetyTableHashMapImplFromCsv(csvFilePath));
++ }
++}
++
++class GraphCSVArrayImpl extends GraphCSV{
++ protected GraphCSVArrayImpl(String csvFilePath){
++ super(PropertyTableBuilder.buildPropetyTableArrayImplFromCsv(csvFilePath));
++ }
++}
http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-csv/src/main/java/org/apache/jena/propertytable/graph/GraphPropertyTable.java
----------------------------------------------------------------------
diff --cc jena-csv/src/main/java/org/apache/jena/propertytable/graph/GraphPropertyTable.java
index 7e5e5b5,7e5e5b5..b538173
--- a/jena-csv/src/main/java/org/apache/jena/propertytable/graph/GraphPropertyTable.java
+++ b/jena-csv/src/main/java/org/apache/jena/propertytable/graph/GraphPropertyTable.java
@@@ -1,200 -1,200 +1,200 @@@
--/*
-- * 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 java.util.ArrayList ;
--import java.util.Locale ;
--import java.util.function.Predicate;
--
--import org.apache.jena.graph.Node ;
--import org.apache.jena.graph.NodeFactory ;
--import org.apache.jena.graph.Triple ;
--import org.apache.jena.graph.impl.GraphBase ;
--import org.apache.jena.propertytable.Column ;
--import org.apache.jena.propertytable.PropertyTable ;
--import org.apache.jena.propertytable.Row ;
--import org.apache.jena.sparql.core.BasicPattern ;
--import org.apache.jena.util.iterator.ExtendedIterator ;
--import org.apache.jena.util.iterator.NullIterator ;
--import org.apache.jena.util.iterator.WrappedIterator ;
--
--/**
-- * GraphPropertyTable implements the Graph interface (read-only) over a PropertyTable.
-- * This is subclass from GraphBase and implements find().
-- * The graphBaseFind()(for matching a Triple) and propertyTableBaseFind()(for matching a whole Row) methods can choose the access route based on the find arguments.
-- * GraphPropertyTable holds/wraps an reference of the PropertyTable instance, so that such a Graph can be treated in a more table-like fashion.
-- *
-- */
--public class GraphPropertyTable extends GraphBase {
--
-- private PropertyTable pt;
--
-- public GraphPropertyTable(PropertyTable pt) {
-- this.pt = pt;
-- }
--
-- public PropertyTable getPropertyTable() {
-- return pt;
-- }
--
-- @Override
-- protected ExtendedIterator<Triple> graphBaseFind(Triple triple) {
-- //System.out.println(m);
--
-- if (this.pt == null) {
-- return NullIterator.instance();
-- }
--
-- ExtendedIterator<Triple> iter = null;
--
-- Node s = triple.getMatchSubject();
-- Node p = triple.getMatchPredicate();
-- Node o = triple.getMatchObject();
--
-- if (isConcrete(p) && isConcrete(o)) {
-- //System.out.println("1");
-- iter = pt.getTripleIterator(pt.getColumn(p), o);
-- } else if (isConcrete(p)) {
-- //System.out.println("2");
-- Column column = this.pt.getColumn(p);
-- if (column != null) {
-- iter = pt.getTripleIterator(column);
-- } else {
-- return NullIterator.instance();
-- }
-- } else if (isConcrete(o)) {
-- //System.out.println("3");
-- iter = pt.getTripleIterator(o);
-- } else{
-- //System.out.println("4");
-- iter = pt.getTripleIterator();
-- }
--
-- return iter.filterKeep(new TripleMatchFilterEquality(triple));
--
-- }
--
-- protected ExtendedIterator<Row> propertyTableBaseFind(RowMatch m) {
--
-- if (this.pt == null) {
-- return NullIterator.instance();
-- }
--
-- ExtendedIterator<Row> iter = null;
--
-- Node s = m.getMatchSubject();
--
-- if ( isConcrete(s) ){
-- Row row= pt.getRow(s);
-- if (row == null){
-- return NullIterator.instance();
-- } else {
-- ArrayList<Row> rows = new ArrayList<Row>();
-- rows.add(row);
-- return WrappedIterator.create(rows.iterator());
-- }
-- } else {
-- iter = WrappedIterator.create(pt.getAllRows().iterator());
-- }
--
-- return iter.filterKeep(new RowMatchFilterEquality( m ));
--
-- }
--
-- static class RowMatchFilterEquality implements Predicate<Row> {
-- final protected RowMatch rMatch;
--
-- public RowMatchFilterEquality(RowMatch rMatch) {
-- this.rMatch = rMatch;
-- }
--
-- @Override
-- public boolean test(Row r) {
-- return rowContained(rMatch, r);
-- }
--
-- }
--
-- static boolean rowContained(RowMatch rMatch, Row row) {
--
-- boolean contained = equalNode(rMatch.getSubject(), row.getRowKey());
-- if(contained){
-- BasicPattern pattern =rMatch.getBasicPattern();
-- for(Triple triple: pattern ){
-- contained = equalNode(triple.getObject(), row.getValue( triple.getPredicate()) );
-- if (! contained){
-- break;
-- }
-- }
-- }
-- return contained;
-- }
--
--
-- static class TripleMatchFilterEquality implements Predicate<Triple> {
-- final protected Triple tMatch;
--
-- /** Creates new TripleMatchFilter */
-- public TripleMatchFilterEquality(Triple tMatch) {
-- this.tMatch = tMatch;
-- }
--
-- @Override
-- public boolean test(Triple t) {
-- return tripleContained(tMatch, t);
-- }
--
-- }
--
-- static boolean tripleContained(Triple patternTriple, Triple dataTriple) {
-- return equalNode(patternTriple.getSubject(), dataTriple.getSubject())
-- && equalNode(patternTriple.getPredicate(),
-- dataTriple.getPredicate())
-- && equalNode(patternTriple.getObject(), dataTriple.getObject());
-- }
--
-- private static boolean equalNode(Node m, Node n) {
-- // m should not be null unless .getMatchXXXX used to get the node.
-- // Language tag canonicalization
-- n = fixupNode(n);
-- m = fixupNode(m);
-- return (m == null) || (m == Node.ANY) || m.equals(n);
-- }
--
-- private static Node fixupNode(Node node) {
-- if (node == null || node == Node.ANY)
-- return node;
--
-- // RDF says ... language tags should be canonicalized to lower case.
-- if (node.isLiteral()) {
-- String lang = node.getLiteralLanguage();
-- if (lang != null && !lang.equals(""))
-- node = NodeFactory.createLiteral(node.getLiteralLexicalForm(),
-- lang.toLowerCase(Locale.ROOT),
-- node.getLiteralDatatype());
-- }
-- return node;
-- }
--
-- private boolean isConcrete(Node node) {
-- boolean wild = (node == null || node == Node.ANY);
-- return !wild;
-- }
--
--}
++/*
++ * 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 java.util.ArrayList ;
++import java.util.Locale ;
++import java.util.function.Predicate;
++
++import org.apache.jena.graph.Node ;
++import org.apache.jena.graph.NodeFactory ;
++import org.apache.jena.graph.Triple ;
++import org.apache.jena.graph.impl.GraphBase ;
++import org.apache.jena.propertytable.Column ;
++import org.apache.jena.propertytable.PropertyTable ;
++import org.apache.jena.propertytable.Row ;
++import org.apache.jena.sparql.core.BasicPattern ;
++import org.apache.jena.util.iterator.ExtendedIterator ;
++import org.apache.jena.util.iterator.NullIterator ;
++import org.apache.jena.util.iterator.WrappedIterator ;
++
++/**
++ * GraphPropertyTable implements the Graph interface (read-only) over a PropertyTable.
++ * This is subclass from GraphBase and implements find().
++ * The graphBaseFind()(for matching a Triple) and propertyTableBaseFind()(for matching a whole Row) methods can choose the access route based on the find arguments.
++ * GraphPropertyTable holds/wraps an reference of the PropertyTable instance, so that such a Graph can be treated in a more table-like fashion.
++ *
++ */
++public class GraphPropertyTable extends GraphBase {
++
++ private PropertyTable pt;
++
++ public GraphPropertyTable(PropertyTable pt) {
++ this.pt = pt;
++ }
++
++ public PropertyTable getPropertyTable() {
++ return pt;
++ }
++
++ @Override
++ protected ExtendedIterator<Triple> graphBaseFind(Triple triple) {
++ //System.out.println(m);
++
++ if (this.pt == null) {
++ return NullIterator.instance();
++ }
++
++ ExtendedIterator<Triple> iter = null;
++
++ Node s = triple.getMatchSubject();
++ Node p = triple.getMatchPredicate();
++ Node o = triple.getMatchObject();
++
++ if (isConcrete(p) && isConcrete(o)) {
++ //System.out.println("1");
++ iter = pt.getTripleIterator(pt.getColumn(p), o);
++ } else if (isConcrete(p)) {
++ //System.out.println("2");
++ Column column = this.pt.getColumn(p);
++ if (column != null) {
++ iter = pt.getTripleIterator(column);
++ } else {
++ return NullIterator.instance();
++ }
++ } else if (isConcrete(o)) {
++ //System.out.println("3");
++ iter = pt.getTripleIterator(o);
++ } else{
++ //System.out.println("4");
++ iter = pt.getTripleIterator();
++ }
++
++ return iter.filterKeep(new TripleMatchFilterEquality(triple));
++
++ }
++
++ protected ExtendedIterator<Row> propertyTableBaseFind(RowMatch m) {
++
++ if (this.pt == null) {
++ return NullIterator.instance();
++ }
++
++ ExtendedIterator<Row> iter = null;
++
++ Node s = m.getMatchSubject();
++
++ if ( isConcrete(s) ){
++ Row row= pt.getRow(s);
++ if (row == null){
++ return NullIterator.instance();
++ } else {
++ ArrayList<Row> rows = new ArrayList<Row>();
++ rows.add(row);
++ return WrappedIterator.create(rows.iterator());
++ }
++ } else {
++ iter = WrappedIterator.create(pt.getAllRows().iterator());
++ }
++
++ return iter.filterKeep(new RowMatchFilterEquality( m ));
++
++ }
++
++ static class RowMatchFilterEquality implements Predicate<Row> {
++ final protected RowMatch rMatch;
++
++ public RowMatchFilterEquality(RowMatch rMatch) {
++ this.rMatch = rMatch;
++ }
++
++ @Override
++ public boolean test(Row r) {
++ return rowContained(rMatch, r);
++ }
++
++ }
++
++ static boolean rowContained(RowMatch rMatch, Row row) {
++
++ boolean contained = equalNode(rMatch.getSubject(), row.getRowKey());
++ if(contained){
++ BasicPattern pattern =rMatch.getBasicPattern();
++ for(Triple triple: pattern ){
++ contained = equalNode(triple.getObject(), row.getValue( triple.getPredicate()) );
++ if (! contained){
++ break;
++ }
++ }
++ }
++ return contained;
++ }
++
++
++ static class TripleMatchFilterEquality implements Predicate<Triple> {
++ final protected Triple tMatch;
++
++ /** Creates new TripleMatchFilter */
++ public TripleMatchFilterEquality(Triple tMatch) {
++ this.tMatch = tMatch;
++ }
++
++ @Override
++ public boolean test(Triple t) {
++ return tripleContained(tMatch, t);
++ }
++
++ }
++
++ static boolean tripleContained(Triple patternTriple, Triple dataTriple) {
++ return equalNode(patternTriple.getSubject(), dataTriple.getSubject())
++ && equalNode(patternTriple.getPredicate(),
++ dataTriple.getPredicate())
++ && equalNode(patternTriple.getObject(), dataTriple.getObject());
++ }
++
++ private static boolean equalNode(Node m, Node n) {
++ // m should not be null unless .getMatchXXXX used to get the node.
++ // Language tag canonicalization
++ n = fixupNode(n);
++ m = fixupNode(m);
++ return (m == null) || (m == Node.ANY) || m.equals(n);
++ }
++
++ private static Node fixupNode(Node node) {
++ if (node == null || node == Node.ANY)
++ return node;
++
++ // RDF says ... language tags should be canonicalized to lower case.
++ if (node.isLiteral()) {
++ String lang = node.getLiteralLanguage();
++ if (lang != null && !lang.equals(""))
++ node = NodeFactory.createLiteral(node.getLiteralLexicalForm(),
++ lang.toLowerCase(Locale.ROOT),
++ node.getLiteralDatatype());
++ }
++ return node;
++ }
++
++ private boolean isConcrete(Node node) {
++ boolean wild = (node == null || node == Node.ANY);
++ return !wild;
++ }
++
++}
http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-csv/src/main/java/org/apache/jena/propertytable/graph/QueryIterPropertyTable.java
----------------------------------------------------------------------
diff --cc jena-csv/src/main/java/org/apache/jena/propertytable/graph/QueryIterPropertyTable.java
index 8ebfa72,8ebfa72..4349623
--- a/jena-csv/src/main/java/org/apache/jena/propertytable/graph/QueryIterPropertyTable.java
+++ b/jena-csv/src/main/java/org/apache/jena/propertytable/graph/QueryIterPropertyTable.java
@@@ -1,114 -1,114 +1,114 @@@
--/*
-- * 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 java.util.ArrayList ;
--import java.util.Collection ;
--import java.util.HashMap ;
--import java.util.List ;
--
--import org.apache.jena.atlas.io.IndentedWriter ;
--import org.apache.jena.atlas.lib.Lib ;
--import org.apache.jena.graph.Graph ;
--import org.apache.jena.graph.Node ;
--import org.apache.jena.graph.Triple ;
--import org.apache.jena.sparql.core.BasicPattern ;
--import org.apache.jena.sparql.engine.ExecutionContext ;
--import org.apache.jena.sparql.engine.QueryIterator ;
--import org.apache.jena.sparql.engine.binding.Binding ;
--import org.apache.jena.sparql.engine.iterator.QueryIter1 ;
--import org.apache.jena.sparql.serializer.SerializationContext ;
--import org.apache.jena.sparql.util.FmtUtils ;
--
--/**
-- * Split the incoming BasicPattern by subjects, (i.e. it becomes multiple sub BasicPatterns grouped by the same subjects.
-- *
-- */
--public class QueryIterPropertyTable extends QueryIter1 {
--
-- private BasicPattern pattern;
-- private Graph graph;
-- private QueryIterator output;
--
-- public static QueryIterator create(QueryIterator input,
-- BasicPattern pattern, ExecutionContext execContext) {
-- return new QueryIterPropertyTable(input, pattern, execContext);
-- }
--
-- private QueryIterPropertyTable(QueryIterator input, BasicPattern pattern,
-- ExecutionContext execContext) {
-- super(input, execContext);
-- this.pattern = pattern;
-- graph = execContext.getActiveGraph();
-- // Create a chain of triple iterators.
-- QueryIterator chain = getInput();
-- Collection<BasicPattern> patterns = sort(pattern);
-- for (BasicPattern p : patterns)
-- chain = new QueryIterPropertyTableRow(chain, p, execContext);
-- output = chain;
-- }
--
-- private Collection<BasicPattern> sort(BasicPattern pattern) {
-- HashMap<Node, BasicPattern> map = new HashMap<Node, BasicPattern>();
-- for (Triple triple : pattern.getList()) {
-- Node subject = triple.getSubject();
-- if (!map.containsKey(subject)) {
-- List<Triple> triples = new ArrayList<Triple>();
-- BasicPattern p = BasicPattern.wrap(triples);
-- map.put(subject, p);
-- p.add(triple);
-- } else {
-- map.get(subject).add(triple);
-- }
-- }
-- return map.values();
-- }
--
-- @Override
-- protected boolean hasNextBinding() {
-- return output.hasNext();
-- }
--
-- @Override
-- protected Binding moveToNextBinding() {
-- return output.nextBinding();
-- }
--
-- @Override
-- protected void closeSubIterator() {
-- if (output != null)
-- output.close();
-- output = null;
-- }
--
-- @Override
-- protected void requestSubCancel() {
-- if (output != null)
-- output.cancel();
-- }
--
-- @Override
-- protected void details(IndentedWriter out, SerializationContext sCxt) {
-- out.print(Lib.className(this));
-- out.println();
-- out.incIndent();
-- FmtUtils.formatPattern(out, pattern, sCxt);
-- out.decIndent();
-- }
--}
++/*
++ * 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 java.util.ArrayList ;
++import java.util.Collection ;
++import java.util.HashMap ;
++import java.util.List ;
++
++import org.apache.jena.atlas.io.IndentedWriter ;
++import org.apache.jena.atlas.lib.Lib ;
++import org.apache.jena.graph.Graph ;
++import org.apache.jena.graph.Node ;
++import org.apache.jena.graph.Triple ;
++import org.apache.jena.sparql.core.BasicPattern ;
++import org.apache.jena.sparql.engine.ExecutionContext ;
++import org.apache.jena.sparql.engine.QueryIterator ;
++import org.apache.jena.sparql.engine.binding.Binding ;
++import org.apache.jena.sparql.engine.iterator.QueryIter1 ;
++import org.apache.jena.sparql.serializer.SerializationContext ;
++import org.apache.jena.sparql.util.FmtUtils ;
++
++/**
++ * Split the incoming BasicPattern by subjects, (i.e. it becomes multiple sub BasicPatterns grouped by the same subjects.
++ *
++ */
++public class QueryIterPropertyTable extends QueryIter1 {
++
++ private BasicPattern pattern;
++ private Graph graph;
++ private QueryIterator output;
++
++ public static QueryIterator create(QueryIterator input,
++ BasicPattern pattern, ExecutionContext execContext) {
++ return new QueryIterPropertyTable(input, pattern, execContext);
++ }
++
++ private QueryIterPropertyTable(QueryIterator input, BasicPattern pattern,
++ ExecutionContext execContext) {
++ super(input, execContext);
++ this.pattern = pattern;
++ graph = execContext.getActiveGraph();
++ // Create a chain of triple iterators.
++ QueryIterator chain = getInput();
++ Collection<BasicPattern> patterns = sort(pattern);
++ for (BasicPattern p : patterns)
++ chain = new QueryIterPropertyTableRow(chain, p, execContext);
++ output = chain;
++ }
++
++ private Collection<BasicPattern> sort(BasicPattern pattern) {
++ HashMap<Node, BasicPattern> map = new HashMap<Node, BasicPattern>();
++ for (Triple triple : pattern.getList()) {
++ Node subject = triple.getSubject();
++ if (!map.containsKey(subject)) {
++ List<Triple> triples = new ArrayList<Triple>();
++ BasicPattern p = BasicPattern.wrap(triples);
++ map.put(subject, p);
++ p.add(triple);
++ } else {
++ map.get(subject).add(triple);
++ }
++ }
++ return map.values();
++ }
++
++ @Override
++ protected boolean hasNextBinding() {
++ return output.hasNext();
++ }
++
++ @Override
++ protected Binding moveToNextBinding() {
++ return output.nextBinding();
++ }
++
++ @Override
++ protected void closeSubIterator() {
++ if (output != null)
++ output.close();
++ output = null;
++ }
++
++ @Override
++ protected void requestSubCancel() {
++ if (output != null)
++ output.cancel();
++ }
++
++ @Override
++ protected void details(IndentedWriter out, SerializationContext sCxt) {
++ out.print(Lib.className(this));
++ out.println();
++ out.incIndent();
++ FmtUtils.formatPattern(out, pattern, sCxt);
++ out.decIndent();
++ }
++}
http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-csv/src/main/java/org/apache/jena/propertytable/graph/QueryIterPropertyTableRow.java
----------------------------------------------------------------------
diff --cc jena-csv/src/main/java/org/apache/jena/propertytable/graph/QueryIterPropertyTableRow.java
index 8aeec57,8aeec57..3b28f24
--- a/jena-csv/src/main/java/org/apache/jena/propertytable/graph/QueryIterPropertyTableRow.java
+++ b/jena-csv/src/main/java/org/apache/jena/propertytable/graph/QueryIterPropertyTableRow.java
@@@ -1,243 -1,243 +1,243 @@@
--/*
-- * 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 java.util.ArrayList;
--import java.util.List;
--
--import org.apache.jena.graph.Node ;
--import org.apache.jena.graph.Triple ;
--import org.apache.jena.propertytable.PropertyTable;
--import org.apache.jena.propertytable.Row;
--
--
--import org.apache.jena.sparql.ARQInternalErrorException ;
--import org.apache.jena.sparql.core.BasicPattern ;
--import org.apache.jena.sparql.core.Var ;
--import org.apache.jena.sparql.engine.ExecutionContext ;
--import org.apache.jena.sparql.engine.QueryIterator ;
--import org.apache.jena.sparql.engine.binding.Binding ;
--import org.apache.jena.sparql.engine.binding.BindingFactory ;
--import org.apache.jena.sparql.engine.binding.BindingMap ;
--import org.apache.jena.sparql.engine.iterator.QueryIter ;
--import org.apache.jena.sparql.engine.iterator.QueryIterRepeatApply ;
--import org.apache.jena.util.iterator.ClosableIterator ;
--import org.apache.jena.util.iterator.ExtendedIterator ;
--import org.apache.jena.util.iterator.NiceIterator ;
--import org.apache.jena.util.iterator.WrappedIterator ;
--
--/**
-- * If the triple size within a BasicePattern is greater than 1 (i.e. at least 2 triples), it's turned into a row querying.
-- *
-- */
--public class QueryIterPropertyTableRow extends QueryIterRepeatApply{
--
--
-- private final BasicPattern pattern ;
--
-- public QueryIterPropertyTableRow( QueryIterator input,
-- BasicPattern pattern ,
-- ExecutionContext cxt)
-- {
-- super(input, cxt) ;
-- this.pattern = pattern ;
-- }
--
-- @Override
-- protected QueryIterator nextStage(Binding binding)
-- {
-- return new RowMapper(binding, pattern, getExecContext()) ;
-- }
--
-- static int countMapper = 0 ;
-- static class RowMapper extends QueryIter
-- {
-- private PropertyTable table;
--
-- private BasicPattern pattern;
-- private Binding binding ;
-- private ClosableIterator<Row> graphIter ;
-- private Binding slot = null ;
-- private boolean finished = false ;
-- private volatile boolean cancelled = false ;
--
-- RowMapper(Binding binding, BasicPattern pattern, ExecutionContext cxt)
-- {
-- super(cxt) ;
-- GraphPropertyTable graph = (GraphPropertyTable)cxt.getActiveGraph() ;
--
-- this.pattern = substitute(pattern, binding);
-- this.binding = binding ;
-- BasicPattern pattern2 = tripleNode(pattern);
--
-- ExtendedIterator<Row> iter = graph.propertyTableBaseFind( new RowMatch( pattern2) );
--
-- if ( false )
-- {
-- // Materialize the results now. Debugging only.
-- List<Row> x = iter.toList() ;
-- this.graphIter = WrappedIterator.create(x.iterator()) ;
-- iter.close();
-- }
-- else
-- // Stream.
-- this.graphIter = iter ;
-- }
--
-- private static Node tripleNode(Node node)
-- {
-- if ( node.isVariable() )
-- return Node.ANY ;
-- return node ;
-- }
--
-- private static BasicPattern tripleNode(BasicPattern pattern)
-- {
-- List<Triple> triples = new ArrayList<Triple>();
-- for (Triple triple: pattern){
-- triples.add( tripleNode(triple) );
-- }
-- return BasicPattern.wrap(triples);
-- }
--
-- private static Triple tripleNode(Triple triple){
-- Node s = tripleNode(triple.getSubject()) ;
-- Node p = tripleNode(triple.getPredicate()) ;
-- Node o = tripleNode(triple.getObject()) ;
-- return Triple.create(s, p, o);
-- }
--
-- private static Node substitute(Node node, Binding binding)
-- {
-- if ( Var.isVar(node) )
-- {
-- Node x = binding.get(Var.alloc(node)) ;
-- if ( x != null )
-- return x ;
-- }
-- return node ;
-- }
--
-- private static Triple substitute(Triple triple, Binding binding){
-- Node s = substitute(triple.getSubject(), binding) ;
-- Node p = substitute(triple.getPredicate(), binding) ;
-- Node o = substitute(triple.getObject(), binding) ;
-- return Triple.create(s, p, o);
-- }
--
-- private static BasicPattern substitute(BasicPattern pattern , Binding binding)
-- {
-- List<Triple> triples = new ArrayList<Triple>();
-- for (Triple triple: pattern){
-- triples.add( substitute(triple,binding) );
-- }
-- return BasicPattern.wrap(triples);
-- }
--
-- private Binding mapper(Row r)
-- {
-- BindingMap results = BindingFactory.create(binding) ;
--
-- if ( ! insert(pattern, r, results) )
-- return null ;
-- return results ;
-- }
--
-- private static boolean insert(BasicPattern input, Row output, BindingMap results)
-- {
-- for (Triple triple: input){
-- if (! insert(triple, output, results) ){
-- return false;
-- }
-- }
-- return true;
-- }
--
-- private static boolean insert(Triple input, Row output, BindingMap results){
-- if ( ! insert(input.getSubject(), output.getRowKey(), results) )
-- return false ;
--// if ( ! insert(input.getPredicate(), output.get, results) )
--// return false ;
-- if ( ! insert(input.getObject(), output.getValue( input.getPredicate() ), results) )
-- return false ;
-- return true;
-- }
--
-- private static boolean insert(Node inputNode, Node outputNode, BindingMap results)
-- {
-- if ( ! Var.isVar(inputNode) )
-- return true ;
--
-- Var v = Var.alloc(inputNode) ;
-- Node x = results.get(v) ;
-- if ( x != null )
-- return outputNode.equals(x) ;
--
-- results.add(v, outputNode) ;
-- return true ;
-- }
--
-- @Override
-- protected boolean hasNextBinding()
-- {
-- if ( finished ) return false ;
-- if ( slot != null ) return true ;
-- if ( cancelled )
-- {
-- graphIter.close() ;
-- finished = true ;
-- return false ;
-- }
--
-- while(graphIter.hasNext() && slot == null )
-- {
-- Row r = graphIter.next() ;
-- slot = mapper(r) ;
-- }
-- if ( slot == null )
-- finished = true ;
-- return slot != null ;
-- }
--
-- @Override
-- protected Binding moveToNextBinding()
-- {
-- if ( ! hasNextBinding() )
-- throw new ARQInternalErrorException() ;
-- Binding r = slot ;
-- slot = null ;
-- return r ;
-- }
--
-- @Override
-- protected void closeIterator()
-- {
-- if ( graphIter != null )
-- NiceIterator.close(graphIter) ;
-- graphIter = null ;
-- }
--
-- @Override
-- protected void requestCancel()
-- {
-- // The QueryIteratorBase machinary will do the real work.
-- cancelled = true ;
-- }
-- }
--}
++/*
++ * 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 java.util.ArrayList;
++import java.util.List;
++
++import org.apache.jena.graph.Node ;
++import org.apache.jena.graph.Triple ;
++import org.apache.jena.propertytable.PropertyTable;
++import org.apache.jena.propertytable.Row;
++
++
++import org.apache.jena.sparql.ARQInternalErrorException ;
++import org.apache.jena.sparql.core.BasicPattern ;
++import org.apache.jena.sparql.core.Var ;
++import org.apache.jena.sparql.engine.ExecutionContext ;
++import org.apache.jena.sparql.engine.QueryIterator ;
++import org.apache.jena.sparql.engine.binding.Binding ;
++import org.apache.jena.sparql.engine.binding.BindingFactory ;
++import org.apache.jena.sparql.engine.binding.BindingMap ;
++import org.apache.jena.sparql.engine.iterator.QueryIter ;
++import org.apache.jena.sparql.engine.iterator.QueryIterRepeatApply ;
++import org.apache.jena.util.iterator.ClosableIterator ;
++import org.apache.jena.util.iterator.ExtendedIterator ;
++import org.apache.jena.util.iterator.NiceIterator ;
++import org.apache.jena.util.iterator.WrappedIterator ;
++
++/**
++ * If the triple size within a BasicePattern is greater than 1 (i.e. at least 2 triples), it's turned into a row querying.
++ *
++ */
++public class QueryIterPropertyTableRow extends QueryIterRepeatApply{
++
++
++ private final BasicPattern pattern ;
++
++ public QueryIterPropertyTableRow( QueryIterator input,
++ BasicPattern pattern ,
++ ExecutionContext cxt)
++ {
++ super(input, cxt) ;
++ this.pattern = pattern ;
++ }
++
++ @Override
++ protected QueryIterator nextStage(Binding binding)
++ {
++ return new RowMapper(binding, pattern, getExecContext()) ;
++ }
++
++ static int countMapper = 0 ;
++ static class RowMapper extends QueryIter
++ {
++ private PropertyTable table;
++
++ private BasicPattern pattern;
++ private Binding binding ;
++ private ClosableIterator<Row> graphIter ;
++ private Binding slot = null ;
++ private boolean finished = false ;
++ private volatile boolean cancelled = false ;
++
++ RowMapper(Binding binding, BasicPattern pattern, ExecutionContext cxt)
++ {
++ super(cxt) ;
++ GraphPropertyTable graph = (GraphPropertyTable)cxt.getActiveGraph() ;
++
++ this.pattern = substitute(pattern, binding);
++ this.binding = binding ;
++ BasicPattern pattern2 = tripleNode(pattern);
++
++ ExtendedIterator<Row> iter = graph.propertyTableBaseFind( new RowMatch( pattern2) );
++
++ if ( false )
++ {
++ // Materialize the results now. Debugging only.
++ List<Row> x = iter.toList() ;
++ this.graphIter = WrappedIterator.create(x.iterator()) ;
++ iter.close();
++ }
++ else
++ // Stream.
++ this.graphIter = iter ;
++ }
++
++ private static Node tripleNode(Node node)
++ {
++ if ( node.isVariable() )
++ return Node.ANY ;
++ return node ;
++ }
++
++ private static BasicPattern tripleNode(BasicPattern pattern)
++ {
++ List<Triple> triples = new ArrayList<Triple>();
++ for (Triple triple: pattern){
++ triples.add( tripleNode(triple) );
++ }
++ return BasicPattern.wrap(triples);
++ }
++
++ private static Triple tripleNode(Triple triple){
++ Node s = tripleNode(triple.getSubject()) ;
++ Node p = tripleNode(triple.getPredicate()) ;
++ Node o = tripleNode(triple.getObject()) ;
++ return Triple.create(s, p, o);
++ }
++
++ private static Node substitute(Node node, Binding binding)
++ {
++ if ( Var.isVar(node) )
++ {
++ Node x = binding.get(Var.alloc(node)) ;
++ if ( x != null )
++ return x ;
++ }
++ return node ;
++ }
++
++ private static Triple substitute(Triple triple, Binding binding){
++ Node s = substitute(triple.getSubject(), binding) ;
++ Node p = substitute(triple.getPredicate(), binding) ;
++ Node o = substitute(triple.getObject(), binding) ;
++ return Triple.create(s, p, o);
++ }
++
++ private static BasicPattern substitute(BasicPattern pattern , Binding binding)
++ {
++ List<Triple> triples = new ArrayList<Triple>();
++ for (Triple triple: pattern){
++ triples.add( substitute(triple,binding) );
++ }
++ return BasicPattern.wrap(triples);
++ }
++
++ private Binding mapper(Row r)
++ {
++ BindingMap results = BindingFactory.create(binding) ;
++
++ if ( ! insert(pattern, r, results) )
++ return null ;
++ return results ;
++ }
++
++ private static boolean insert(BasicPattern input, Row output, BindingMap results)
++ {
++ for (Triple triple: input){
++ if (! insert(triple, output, results) ){
++ return false;
++ }
++ }
++ return true;
++ }
++
++ private static boolean insert(Triple input, Row output, BindingMap results){
++ if ( ! insert(input.getSubject(), output.getRowKey(), results) )
++ return false ;
++// if ( ! insert(input.getPredicate(), output.get, results) )
++// return false ;
++ if ( ! insert(input.getObject(), output.getValue( input.getPredicate() ), results) )
++ return false ;
++ return true;
++ }
++
++ private static boolean insert(Node inputNode, Node outputNode, BindingMap results)
++ {
++ if ( ! Var.isVar(inputNode) )
++ return true ;
++
++ Var v = Var.alloc(inputNode) ;
++ Node x = results.get(v) ;
++ if ( x != null )
++ return outputNode.equals(x) ;
++
++ results.add(v, outputNode) ;
++ return true ;
++ }
++
++ @Override
++ protected boolean hasNextBinding()
++ {
++ if ( finished ) return false ;
++ if ( slot != null ) return true ;
++ if ( cancelled )
++ {
++ graphIter.close() ;
++ finished = true ;
++ return false ;
++ }
++
++ while(graphIter.hasNext() && slot == null )
++ {
++ Row r = graphIter.next() ;
++ slot = mapper(r) ;
++ }
++ if ( slot == null )
++ finished = true ;
++ return slot != null ;
++ }
++
++ @Override
++ protected Binding moveToNextBinding()
++ {
++ if ( ! hasNextBinding() )
++ throw new ARQInternalErrorException() ;
++ Binding r = slot ;
++ slot = null ;
++ return r ;
++ }
++
++ @Override
++ protected void closeIterator()
++ {
++ if ( graphIter != null )
++ NiceIterator.close(graphIter) ;
++ graphIter = null ;
++ }
++
++ @Override
++ protected void requestCancel()
++ {
++ // The QueryIteratorBase machinary will do the real work.
++ cancelled = true ;
++ }
++ }
++}
http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-csv/src/main/java/org/apache/jena/propertytable/graph/RowMatch.java
----------------------------------------------------------------------
diff --cc jena-csv/src/main/java/org/apache/jena/propertytable/graph/RowMatch.java
index 971438b,971438b..f5b9c18
--- a/jena-csv/src/main/java/org/apache/jena/propertytable/graph/RowMatch.java
+++ b/jena-csv/src/main/java/org/apache/jena/propertytable/graph/RowMatch.java
@@@ -1,48 -1,48 +1,48 @@@
--/*
-- * Licensed to the Apache Software Foundation (ASF) under one
-- * or more contributor license agreements. See the NOTICE file
-- * distributed with this work for additional information
-- * regarding copyright ownership. The ASF licenses this file
-- * to you under the Apache License, Version 2.0 (the
-- * "License"); you may not use this file except in compliance
-- * with the License. You may obtain a copy of the License at
-- *
-- * http://www.apache.org/licenses/LICENSE-2.0
-- *
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- */
--
--package org.apache.jena.propertytable.graph;
--
--import org.apache.jena.graph.Node ;
--import org.apache.jena.sparql.core.BasicPattern ;
--
--/**
-- * The data structure for matching a Row
-- *
-- */
--public class RowMatch {
--
-- private BasicPattern pattern;
--
-- public RowMatch( BasicPattern pattern ){
-- this.pattern=pattern;
-- }
--
-- public Node getMatchSubject(){
-- return pattern.get(0).getMatchSubject();
-- }
--
-- public Node getSubject(){
-- return pattern.get(0).getSubject();
-- }
--
-- public BasicPattern getBasicPattern(){
-- return pattern;
-- }
--
--}
++/*
++ * 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.graph.Node ;
++import org.apache.jena.sparql.core.BasicPattern ;
++
++/**
++ * The data structure for matching a Row
++ *
++ */
++public class RowMatch {
++
++ private BasicPattern pattern;
++
++ public RowMatch( BasicPattern pattern ){
++ this.pattern=pattern;
++ }
++
++ public Node getMatchSubject(){
++ return pattern.get(0).getMatchSubject();
++ }
++
++ public Node getSubject(){
++ return pattern.get(0).getSubject();
++ }
++
++ public BasicPattern getBasicPattern(){
++ return pattern;
++ }
++
++}
http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-csv/src/main/java/org/apache/jena/propertytable/graph/StageGeneratorPropertyTable.java
----------------------------------------------------------------------
diff --cc jena-csv/src/main/java/org/apache/jena/propertytable/graph/StageGeneratorPropertyTable.java
index 53df0c9,53df0c9..4692472
--- a/jena-csv/src/main/java/org/apache/jena/propertytable/graph/StageGeneratorPropertyTable.java
+++ b/jena-csv/src/main/java/org/apache/jena/propertytable/graph/StageGeneratorPropertyTable.java
@@@ -1,57 -1,57 +1,57 @@@
--/*
-- * 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.graph.Graph ;
--import org.apache.jena.sparql.core.BasicPattern ;
--import org.apache.jena.sparql.engine.ExecutionContext ;
--import org.apache.jena.sparql.engine.QueryIterator ;
--import org.apache.jena.sparql.engine.main.StageGenerator ;
--
--/**
-- * The extension of StageGenerator for querying a Row.
-- *
-- */
--public class StageGeneratorPropertyTable implements StageGenerator {
--
-- // Using OpExecutor is preferred.
-- StageGenerator above = null ;
--
-- public StageGeneratorPropertyTable(StageGenerator original)
-- {
-- above = original ;
-- }
--
-- @Override
-- public QueryIterator execute(BasicPattern pattern, QueryIterator input, ExecutionContext execCxt)
-- {
-- // --- In case this isn't for GraphPropertyTable
-- Graph g = execCxt.getActiveGraph() ;
--
-- if ( ! ( g instanceof GraphPropertyTable ) )
-- return above.execute(pattern, input, execCxt) ;
-- if (pattern.size() <= 1){
-- return above.execute(pattern, input, execCxt) ;
-- }
-- return QueryIterPropertyTable.create(input, pattern, execCxt);
-- }
--
--
--}
++/*
++ * 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.graph.Graph ;
++import org.apache.jena.sparql.core.BasicPattern ;
++import org.apache.jena.sparql.engine.ExecutionContext ;
++import org.apache.jena.sparql.engine.QueryIterator ;
++import org.apache.jena.sparql.engine.main.StageGenerator ;
++
++/**
++ * The extension of StageGenerator for querying a Row.
++ *
++ */
++public class StageGeneratorPropertyTable implements StageGenerator {
++
++ // Using OpExecutor is preferred.
++ StageGenerator above = null ;
++
++ public StageGeneratorPropertyTable(StageGenerator original)
++ {
++ above = original ;
++ }
++
++ @Override
++ public QueryIterator execute(BasicPattern pattern, QueryIterator input, ExecutionContext execCxt)
++ {
++ // --- In case this isn't for GraphPropertyTable
++ Graph g = execCxt.getActiveGraph() ;
++
++ if ( ! ( g instanceof GraphPropertyTable ) )
++ return above.execute(pattern, input, execCxt) ;
++ if (pattern.size() <= 1){
++ return above.execute(pattern, input, execCxt) ;
++ }
++ return QueryIterPropertyTable.create(input, pattern, execCxt);
++ }
++
++
++}