protected Statement peekNextStatement() throws Exception {
   if (!statefulHasNext()) return null;
   Map.Entry<Key, Value> entry = iter.peek();
   Key key = entry.getKey();
   if (DOC.equals(key.getColumnFamily()))
     return readStatement(
         ByteStreams.newDataInput(key.getColumnQualifier().getBytes()), VALUE_FACTORY);
   else
     return readStatement(
         ByteStreams.newDataInput(key.getColumnQualifier().getBytes()), VALUE_FACTORY, false);
 }
 public static Namespace getNamespace(Iterator<Entry<Key, Value>> rowResults) {
   for (; rowResults.hasNext(); ) {
     Entry<Key, Value> next = rowResults.next();
     Key key = next.getKey();
     Value val = next.getValue();
     String cf = key.getColumnFamily().toString();
     String cq = key.getColumnQualifier().toString();
     return new NamespaceImpl(key.getRow().toString(), new String(val.get()));
   }
   return null;
 }
  protected List<Statement> nextDocument() throws QueryEvaluationException {
    try {
      Map.Entry<Key, Value> entry = iter.peek();
      Key key = entry.getKey();
      Value value = entry.getValue();

      if (value.getSize() == 0) {
        // not an aggregate document
        return nextNonAggregateDocument();
        //                return
        // Collections.singletonList(RdfIO.readStatement(ByteStreams.newDataInput(key.getColumnQualifier().getBytes()), VALUE_FACTORY, true));
      }

      List<Statement> document = new ArrayList<Statement>();

      org.openrdf.model.Value subj =
          RdfIO.readValue(
              ByteStreams.newDataInput(key.getColumnQualifier().getBytes()),
              VALUE_FACTORY,
              FAMILY_DELIM);
      Map<String, String> map = converter.toMap(entry.getKey(), value);
      for (Map.Entry<String, String> e : map.entrySet()) {
        String predObj = e.getKey();
        String[] split = predObj.split(FAMILY_DELIM_STR);
        document.add(
            new StatementImpl(
                (Resource) subj,
                VALUE_FACTORY.createURI(split[0]),
                RdfIO.readValue(
                    ByteStreams.newDataInput(split[1].getBytes()), VALUE_FACTORY, FAMILY_DELIM)));
      }
      iter.next();
      return document;
    } catch (Exception e) {
      throw new QueryEvaluationException("Error retrieving document", e);
    }
  }