private int statementSize(final RyaStatement ryaStatement) { final RyaIRI subject = ryaStatement.getSubject(); final RyaIRI predicate = ryaStatement.getPredicate(); final RyaType object = ryaStatement.getObject(); final RyaIRI context = ryaStatement.getContext(); int size = 3 + subject.getData().length() + predicate.getData().length() + object.getData().length(); if (!XMLSchema.ANYURI.equals(object.getDataType())) { size += 2 + object.getDataType().toString().length(); } if (context != null) { size += context.getData().length(); } return size; }
public TriplePatternStrategy retrieveStrategy(final RyaStatement stmt) { return retrieveStrategy(stmt.getSubject(), stmt.getPredicate(), stmt.getObject(), stmt.getContext()); }
private int statementSize(final RyaStatement ryaStatement) { final RyaURI subject = ryaStatement.getSubject(); final RyaURI predicate = ryaStatement.getPredicate(); final RyaType object = ryaStatement.getObject(); final RyaURI context = ryaStatement.getContext(); int size = 3 + subject.getData().length() + predicate.getData().length() + object.getData().length(); if (!XMLSchema.ANYURI.equals(object.getDataType())) { size += 2 + object.getDataType().toString().length(); } if (context != null) { size += context.getData().length(); } return size; }
public TriplePatternStrategy retrieveStrategy(final RyaStatement stmt) { return retrieveStrategy(stmt.getSubject(), stmt.getPredicate(), stmt.getObject(), stmt.getContext()); }
private static boolean isResultForQuery(final RyaStatement query, final RyaStatement result) { return isResult(query.getSubject(), result.getSubject()) && isResult(query.getPredicate(), result.getPredicate()) && isResult(query.getObject(), result.getObject()) && isResult(query.getContext(), result.getContext()); }
private static boolean isResultForQuery(final RyaStatement query, final RyaStatement result) { return isResult(query.getSubject(), result.getSubject()) && isResult(query.getPredicate(), result.getPredicate()) && isResult(query.getObject(), result.getObject()) && isResult(query.getContext(), result.getContext()); }
/** * Writes a (key,value) pair to Rya. Adds the statement to a buffer, and * flushes the statement buffer to the database if full. * @param key Arbitrary Writable, not used. * @param value Contains statement to insert to Rya. * @throws IOException if writing to Accumulo fails. */ @Override public void write(final Writable key, final RyaStatementWritable value) throws IOException { final RyaStatement ryaStatement = value.getRyaStatement(); if (ryaStatement.getColumnVisibility() == null) { ryaStatement.setColumnVisibility(cv); } if (ryaStatement.getContext() == null) { ryaStatement.setContext(defaultContext); } buffer.add(ryaStatement); bufferCurrentSize += statementSize(ryaStatement); if (bufferCurrentSize >= bufferSizeLimit) { flushBuffer(); } }
/** * Writes a (key,value) pair to Rya. Adds the statement to a buffer, and * flushes the statement buffer to the database if full. * @param key Arbitrary Writable, not used. * @param value Contains statement to insert to Rya. * @throws IOException if writing to Accumulo fails. */ @Override public void write(final Writable key, final RyaStatementWritable value) throws IOException { final RyaStatement ryaStatement = value.getRyaStatement(); if (ryaStatement.getColumnVisibility() == null) { ryaStatement.setColumnVisibility(cv); } if (ryaStatement.getContext() == null) { ryaStatement.setContext(defaultContext); } buffer.add(ryaStatement); bufferCurrentSize += statementSize(ryaStatement); if (bufferCurrentSize >= bufferSizeLimit) { flushBuffer(); } }
private static List<TripleRow> serializeStatement(final RyaStatement stmt) throws RyaTypeResolverException { final RyaURI subject = stmt.getSubject(); final RyaURI predicate = stmt.getPredicate(); final RyaType object = stmt.getObject(); final RyaURI context = stmt.getContext(); final Long timestamp = stmt.getTimestamp(); final byte[] columnVisibility = stmt.getColumnVisibility(); final byte[] value = stmt.getValue(); assert subject != null && predicate != null && object != null; final byte[] cf = (context == null) ? EMPTY_BYTES : context.getData().getBytes(StandardCharsets.UTF_8); final byte[] subjBytes = subject.getData().getBytes(StandardCharsets.UTF_8); final byte[] predBytes = predicate.getData().getBytes(StandardCharsets.UTF_8); final byte[][] objBytes = RyaContext.getInstance().serializeType(object); return Lists.newArrayList(new TripleRow(subjBytes, predBytes, Bytes.concat(cf, DELIM_BYTES, OBJECT.getBytes(StandardCharsets.UTF_8), DELIM_BYTES, objBytes[0], objBytes[1]), timestamp, columnVisibility, value), new TripleRow(objBytes[0], predBytes, Bytes.concat(cf, DELIM_BYTES, SUBJECT.getBytes(StandardCharsets.UTF_8), DELIM_BYTES, subjBytes, objBytes[1]), timestamp, columnVisibility, value)); }
private static List<TripleRow> serializeStatement(final RyaStatement stmt) throws RyaTypeResolverException { final RyaIRI subject = stmt.getSubject(); final RyaIRI predicate = stmt.getPredicate(); final RyaType object = stmt.getObject(); final RyaIRI context = stmt.getContext(); final Long timestamp = stmt.getTimestamp(); final byte[] columnVisibility = stmt.getColumnVisibility(); final byte[] value = stmt.getValue(); assert subject != null && predicate != null && object != null; final byte[] cf = (context == null) ? EMPTY_BYTES : context.getData().getBytes(StandardCharsets.UTF_8); final byte[] subjBytes = subject.getData().getBytes(StandardCharsets.UTF_8); final byte[] predBytes = predicate.getData().getBytes(StandardCharsets.UTF_8); final byte[][] objBytes = RyaContext.getInstance().serializeType(object); return Lists.newArrayList(new TripleRow(subjBytes, predBytes, Bytes.concat(cf, DELIM_BYTES, OBJECT.getBytes(StandardCharsets.UTF_8), DELIM_BYTES, objBytes[0], objBytes[1]), timestamp, columnVisibility, value), new TripleRow(objBytes[0], predBytes, Bytes.concat(cf, DELIM_BYTES, SUBJECT.getBytes(StandardCharsets.UTF_8), DELIM_BYTES, subjBytes, objBytes[1]), timestamp, columnVisibility, value)); }
public static Statement convertStatement(RyaStatement statement) { assert statement != null; if (statement.getContext() != null) { return new ContextStatementImpl(convertURI(statement.getSubject()), convertURI(statement.getPredicate()), convertValue(statement.getObject()), convertURI(statement.getContext())); } else { return new StatementImpl(convertURI(statement.getSubject()), convertURI(statement.getPredicate()), convertValue(statement.getObject())); } }
private static RyaStatement updateRyaStatementColumnVisibility(final RyaStatement ryaStatement, final ColumnVisibility newCv) { final RyaStatement newCvRyaStatement = new RyaStatement(ryaStatement.getSubject(), ryaStatement.getPredicate(), ryaStatement.getObject(), ryaStatement.getContext(), ryaStatement.getQualifer(), newCv.getExpression(), ryaStatement.getValue(), ryaStatement.getTimestamp()); return newCvRyaStatement; }
/** * Converts a {@link RyaStatement} into a {@link Statement} representation * of the {@code ryaStatement}. * @param ryaStatement the {@link RyaStatement} to convert. * @return the {@link Statement} representation of the {@code ryaStatement}. */ public static Statement convertStatement(final RyaStatement ryaStatement) { assert ryaStatement != null; if (ryaStatement.getContext() != null) { return VF.createStatement(convertIRI(ryaStatement.getSubject()), convertIRI(ryaStatement.getPredicate()), convertValue(ryaStatement.getObject()), convertIRI(ryaStatement.getContext())); } else { return VF.createStatement(convertIRI(ryaStatement.getSubject()), convertIRI(ryaStatement.getPredicate()), convertValue(ryaStatement.getObject())); } } }
@Override public Tuple getNext() throws IOException { try { if (reader.nextKeyValue()) { Key key = reader.getCurrentKey(); org.apache.accumulo.core.data.Value value = reader.getCurrentValue(); ByteArrayDataInput input = ByteStreams.newDataInput(key.getRow().getBytes()); RyaStatement ryaStatement = ryaContext.deserializeTriple(layout, new TripleRow(key.getRow().getBytes(), key.getColumnFamily().getBytes(), key.getColumnQualifier().getBytes())); Tuple tuple = TupleFactory.getInstance().newTuple(7); tuple.set(0, ryaStatement.getSubject().getData()); tuple.set(1, ryaStatement.getPredicate().getData()); tuple.set(2, ryaStatement.getObject().getData()); tuple.set(3, (ryaStatement.getContext() != null) ? (ryaStatement.getContext().getData()) : (null)); tuple.set(4, ryaStatement.getSubject().getDataType()); tuple.set(5, ryaStatement.getPredicate().getDataType()); tuple.set(6, ryaStatement.getObject().getDataType()); return tuple; } } catch (Exception e) { throw new IOException(e); } return null; } }
public BasicDBObject serializeInternal(final RyaStatement statement){ String context = ""; if (statement.getContext() != null){ context = statement.getContext().getData();
@Override public DBObject getQuery(final RyaStatement stmt) { final RyaURI subject = stmt.getSubject(); final RyaURI predicate = stmt.getPredicate(); final RyaType object = stmt.getObject(); final RyaURI context = stmt.getContext(); final BasicDBObject query = new BasicDBObject(); if (subject != null){ query.append(SUBJECT_HASH, hash(subject.getData())); } if (object != null){ query.append(OBJECT_HASH, hash(object.getData())); query.append(OBJECT_TYPE, object.getDataType().toString()); } if (predicate != null){ query.append(PREDICATE_HASH, hash(predicate.getData())); } if (context != null){ query.append(CONTEXT, context.getData()); } return query; }
/** * Turn a single StatementPattern into a Range. * @param conf * @throws IOException if the range can't be resolved */ private Map.Entry<TABLE_LAYOUT, ByteRange> getRange(final StatementPattern sp) throws IOException { final Var context = sp.getContextVar(); final Statement stmt = new NullableStatementImpl((Resource) sp.getSubjectVar().getValue(), (IRI) sp.getPredicateVar().getValue(), sp.getObjectVar().getValue(), context == null ? null : (Resource) context.getValue()); final RyaStatement rs = RdfToRyaConversions.convertStatement(stmt); final TriplePatternStrategy strategy = ryaContext.retrieveStrategy(rs); final Map.Entry<TABLE_LAYOUT, ByteRange> entry = strategy.defineRange(rs.getSubject(), rs.getPredicate(), rs.getObject(), rs.getContext(), conf); return entry; }
@Override public DBObject getQuery(final RyaStatement stmt) { final RyaIRI subject = stmt.getSubject(); final RyaIRI predicate = stmt.getPredicate(); final RyaType object = stmt.getObject(); final RyaIRI context = stmt.getContext(); final BasicDBObject query = new BasicDBObject(); if (subject != null){ query.append(SUBJECT_HASH, hash(subject.getData())); } if (object != null){ query.append(OBJECT_HASH, hash(object.getData())); query.append(OBJECT_TYPE, object.getDataType().toString()); query.append(OBJECT_LANGUAGE, object.getLanguage()); } if (predicate != null){ query.append(PREDICATE_HASH, hash(predicate.getData())); } if (context != null){ query.append(CONTEXT, context.getData()); } return query; }
/** * Comparison method for natural ordering. Compares based on the logical * triple (the s/p/o/context information in the underlying RyaStatement) * and then by the metadata contained in the RyaStatement if the triples are * the same. * @return Zero if both RyaStatementWritables contain equivalent statements * or both have null statements; otherwise, an integer whose sign * corresponds to a consistent ordering. */ @Override public int compareTo(RyaStatementWritable other) { CompareToBuilder builder = new CompareToBuilder(); RyaStatement rsThis = this.getRyaStatement(); RyaStatement rsOther = other.getRyaStatement(); // should throw NPE if other is null, as per Comparable contract builder.append(rsThis == null, rsOther == null); if (rsThis != null && rsOther != null) { builder.append(rsThis.getSubject(), rsOther.getSubject()); builder.append(rsThis.getPredicate(), rsOther.getPredicate()); builder.append(rsThis.getObject(), rsOther.getObject()); builder.append(rsThis.getContext(), rsOther.getContext()); builder.append(rsThis.getQualifer(), rsOther.getQualifer()); builder.append(rsThis.getColumnVisibility(), rsOther.getColumnVisibility()); builder.append(rsThis.getValue(), rsOther.getValue()); builder.append(rsThis.getTimestamp(), rsOther.getTimestamp()); } return builder.toComparison(); }
/** * Comparison method for natural ordering. Compares based on the logical * triple (the s/p/o/context information in the underlying RyaStatement) * and then by the metadata contained in the RyaStatement if the triples are * the same. * @return Zero if both RyaStatementWritables contain equivalent statements * or both have null statements; otherwise, an integer whose sign * corresponds to a consistent ordering. */ @Override public int compareTo(RyaStatementWritable other) { CompareToBuilder builder = new CompareToBuilder(); RyaStatement rsThis = this.getRyaStatement(); RyaStatement rsOther = other.getRyaStatement(); // should throw NPE if other is null, as per Comparable contract builder.append(rsThis == null, rsOther == null); if (rsThis != null && rsOther != null) { builder.append(rsThis.getSubject(), rsOther.getSubject()); builder.append(rsThis.getPredicate(), rsOther.getPredicate()); builder.append(rsThis.getObject(), rsOther.getObject()); builder.append(rsThis.getContext(), rsOther.getContext()); builder.append(rsThis.getQualifer(), rsOther.getQualifer()); builder.append(rsThis.getColumnVisibility(), rsOther.getColumnVisibility()); builder.append(rsThis.getValue(), rsOther.getValue()); builder.append(rsThis.getTimestamp(), rsOther.getTimestamp()); } return builder.toComparison(); }