From: <mrp...@us...> - 2010-09-29 22:50:38
|
Revision: 3687 http://bigdata.svn.sourceforge.net/bigdata/?rev=3687&view=rev Author: mrpersonick Date: 2010-09-29 22:50:32 +0000 (Wed, 29 Sep 2010) Log Message: ----------- fixed a problem with null c in SPO ctor Modified Paths: -------------- branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/BackchainTypeResourceIterator.java Modified: branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/BackchainTypeResourceIterator.java =================================================================== --- branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/BackchainTypeResourceIterator.java 2010-09-29 20:59:24 UTC (rev 3686) +++ branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/BackchainTypeResourceIterator.java 2010-09-29 22:50:32 UTC (rev 3687) @@ -30,9 +30,9 @@ import java.util.Arrays; import java.util.Iterator; import java.util.NoSuchElementException; - import org.apache.log4j.Logger; - +import com.bigdata.bop.IPredicate; +import com.bigdata.bop.IVariableOrConstant; import com.bigdata.rdf.internal.IV; import com.bigdata.rdf.lexicon.ITermIVFilter; import com.bigdata.rdf.model.StatementEnum; @@ -49,7 +49,6 @@ import com.bigdata.striterator.IChunkedOrderedIterator; import com.bigdata.striterator.ICloseableIterator; import com.bigdata.striterator.IKeyOrder; - import cutthecrap.utils.striterators.Filter; import cutthecrap.utils.striterators.FilterBase; import cutthecrap.utils.striterators.Resolver; @@ -155,10 +154,14 @@ if (accessPath == null) throw new IllegalArgumentException(); - final SPO spo = new SPO(accessPath.getPredicate()); +// final SPO spo = new SPO(accessPath.getPredicate()); + final IPredicate<ISPO> pred = accessPath.getPredicate(); + final IV s = getTerm(pred, 0); + final IV p = getTerm(pred, 1); + final IV o = getTerm(pred, 2); - if (((spo.o == null || spo.o.equals(rdfsResource)) && - (spo.p == null || spo.p.equals(rdfType))) == false) { + if (((o == null || o.equals(rdfsResource)) && + (p == null || p.equals(rdfType))) == false) { /* * Backchain will not generate any statements. @@ -189,7 +192,7 @@ */ final PushbackIterator<IV> posItr; - if (spo.s == null) { + if (s == null) { /* * Backchain will generate one statement for each distinct subject @@ -293,6 +296,14 @@ } + private static IV getTerm(final IPredicate<ISPO> pred, final int pos) { + + final IVariableOrConstant<IV> term = pred.get(pos); + + return term == null || term.isVar() ? null : term.get(); + + } + /** * Create an iterator that will visit all statements in the source iterator * and also backchain any entailments of the form (x rdf:type rdfs:Resource) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |