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.
|