private void doFetchNext() { hasMoreTriples = false; while(iterator.hasNext()) { TripleID next = iterator.next(); if(next.match(pattern)) { hasMoreTriples = true; hasPreviousTriples = true; nextTriple.assign(next); break; } } }
private void doFetchPrevious() { hasPreviousTriples = false; while(iterator.hasPrevious()){ TripleID previous = iterator.previous(); if(previous.match(pattern)) { hasPreviousTriples = true; hasMoreTriples = true; previousTriple.assign(previous); break; } } }
@Override public TripleID previous() { if(goingUp) { goingUp = false; if(hasMoreTriples) { doFetchPrevious(); } doFetchPrevious(); } returnTriple.assign(previousTriple); doFetchPrevious(); return returnTriple; }
@Override public TripleID next() { if(!goingUp) { goingUp = true; if(hasPreviousTriples) { doFetchNext(); } doFetchNext(); } returnTriple.assign(nextTriple); doFetchNext(); return returnTriple; }
public void newSearch(TripleID pattern) { this.pattern.assign(pattern); TripleOrderConvert.swapComponentOrder(this.pattern, TripleComponentOrder.SPO, triples.order); patX = this.pattern.getSubject(); patY = this.pattern.getPredicate(); patZ = this.pattern.getObject(); adjY = triples.adjY; adjZ = triples.adjZ; // ((BitSequence375)triples.bitmapZ).dump(); findRange(); goToStart(); }