@Override
public Tuple<TripleKey, Integer> getNextInnerNodeEntry(
final TripleKey lastKey, final InputStream in) {
try {
BitVector bits;
try {
bits = new BitVector(in, 7);
} catch (final EOFException e) {
return null;
}
if (!bits.get(0)) {
final boolean subjectDifferentFromPreviousTriple = bits.get(1);
final boolean predicateDifferentFromPreviousTriple = bits
.get(2);
final boolean objectDifferentFromPreviousTriple = bits.get(3);
int index = 3;
final int filenameSize = getIntSize(bits, index, in);
index = (index + 2) % 8;
final int numberOfTriplesSize = getIntSize(bits, index, in);
index = (index + 2) % 8;
final int numberDistinctSubjectsSize = getIntSize(bits, index,
in);
index = (index + 2) % 8;
final int numberDistinctPredicatesSize = getIntSize(bits,
index, in);
index = (index + 2) % 8;
final int numberDistinctObjectsSize = getIntSize(bits, index,
in);
index = (index + 2) % 8;
final int fileName = getInt(filenameSize + 1, in);
final int numberOfTriples = getInt(numberOfTriplesSize + 1, in);
final int numberDistinctSubjects = getInt(
numberDistinctSubjectsSize + 1, in);
final int numberDistinctPredicates = getInt(
numberDistinctPredicatesSize + 1, in);
final int numberDistinctObjects = getInt(
numberDistinctObjectsSize + 1, in);
return new Tuple<TripleKey, Integer>(null, fileName);
}
final Triple lastTriple = (lastKey == null) ? null : lastKey
.getTriple();
final boolean objectIsLazyLiteralOriginalContent = bits.get(1);
int whereDifferentLiteral = 0;
if (bits.get(2)) {
whereDifferentLiteral = 2;
}
if (bits.get(3)) {
whereDifferentLiteral += 1;
}
final int numberDifferent = (whereDifferentLiteral == 3) ? 3
: 3 - whereDifferentLiteral;
final int[] numberBytesForInt = new int[numberDifferent];