use of org.apache.rya.api.resolver.RyaContext in project incubator-rya by apache.
the class StarQuery method nodeToTextColumn.
// assumes nodes forms valid star query with only one common variable
// assumes nodes and commonVar has been set
private TextColumn nodeToTextColumn(final StatementPattern node, final int i) throws RyaTypeResolverException {
final RyaContext rc = RyaContext.getInstance();
final Var subjVar = node.getSubjectVar();
final Var predVar = node.getPredicateVar();
final Var objVar = node.getObjectVar();
final RyaURI predURI = (RyaURI) RdfToRyaConversions.convertValue(node.getPredicateVar().getValue());
// assumes StatementPattern contains at least on variable
if (subjVar.isConstant()) {
if (commonVarConstant()) {
varPos.put(objVar.getName(), i);
return new TextColumn(new Text(predURI.getData()), new Text("object"));
} else {
return new TextColumn(new Text(predURI.getData()), new Text("subject" + "\u0000" + subjVar.getValue().stringValue()));
}
} else if (objVar.isConstant()) {
if (commonVarConstant()) {
varPos.put(subjVar.getName(), i);
return new TextColumn(new Text(predURI.getData()), new Text("subject"));
} else {
isCommonVarURI = true;
final RyaType objType = RdfToRyaConversions.convertValue(objVar.getValue());
final byte[][] b1 = rc.serializeType(objType);
final byte[] b2 = Bytes.concat("object".getBytes(StandardCharsets.UTF_8), "\u0000".getBytes(StandardCharsets.UTF_8), b1[0], b1[1]);
return new TextColumn(new Text(predURI.getData()), new Text(b2));
}
} else {
if (subjVar.getName().equals(commonVarName)) {
isCommonVarURI = true;
varPos.put(objVar.getName(), i);
final TextColumn tc = new TextColumn(new Text(predURI.getData()), new Text("object"));
tc.setIsPrefix(true);
return tc;
} else {
varPos.put(subjVar.getName(), i);
final TextColumn tc = new TextColumn(new Text(predURI.getData()), new Text("subject"));
tc.setIsPrefix(true);
return tc;
}
}
}
use of org.apache.rya.api.resolver.RyaContext in project incubator-rya by apache.
the class HashedSpoWholeRowTriplePatternStrategy method defineRange.
@Override
public Map.Entry<TABLE_LAYOUT, ByteRange> defineRange(final RyaURI subject, final RyaURI predicate, final RyaType object, final RyaURI context, final RdfCloudTripleStoreConfiguration conf) throws IOException {
try {
// s_r(p)(ng)
if (!handles(subject, predicate, object, context)) {
return null;
}
final MessageDigest md = MessageDigest.getInstance("MD5");
final RyaContext ryaContext = RyaContext.getInstance();
final TABLE_LAYOUT table_layout = TABLE_LAYOUT.SPO;
byte[] start;
byte[] stop;
if (predicate != null) {
if (object != null) {
if (object instanceof RyaRange) {
// sp_r(o)
// range = sp_r(o.s)->sp_r(o.e) (remove last byte to remove type info)
RyaRange rv = (RyaRange) object;
rv = ryaContext.transformRange(rv);
final byte[] objStartBytes = ryaContext.serializeType(rv.getStart())[0];
final byte[] objEndBytes = ryaContext.serializeType(rv.getStop())[0];
final byte[] subjBytes = subject.getData().getBytes(StandardCharsets.UTF_8);
final byte[] hashSubj = Hex.encodeHexString(md.digest(subjBytes)).getBytes(StandardCharsets.UTF_8);
final byte[] predBytes = predicate.getData().getBytes(StandardCharsets.UTF_8);
start = Bytes.concat(hashSubj, DELIM_BYTES, subjBytes, DELIM_BYTES, predBytes, DELIM_BYTES, objStartBytes);
stop = Bytes.concat(hashSubj, DELIM_BYTES, subjBytes, DELIM_BYTES, predBytes, DELIM_BYTES, objEndBytes, DELIM_BYTES, LAST_BYTES);
} else {
// spo
// range = spo->spo (remove last byte to remove type info)
// TODO: There must be a better way than creating multiple byte[]
final byte[] subjBytes = subject.getData().getBytes(StandardCharsets.UTF_8);
final byte[] hashSubj = Hex.encodeHexString(md.digest(subjBytes)).getBytes(StandardCharsets.UTF_8);
final byte[] objBytes = ryaContext.serializeType(object)[0];
start = Bytes.concat(hashSubj, DELIM_BYTES, subjBytes, DELIM_BYTES, predicate.getData().getBytes(StandardCharsets.UTF_8), DELIM_BYTES, objBytes, TYPE_DELIM_BYTES);
stop = Bytes.concat(start, LAST_BYTES);
}
} else if (predicate instanceof RyaRange) {
// s_r(p)
// range = s_r(p.s)->s_r(p.e)
RyaRange rv = (RyaRange) predicate;
rv = ryaContext.transformRange(rv);
final byte[] subjBytes = subject.getData().getBytes(StandardCharsets.UTF_8);
final byte[] hashSubj = Hex.encodeHexString(md.digest(subjBytes)).getBytes(StandardCharsets.UTF_8);
final byte[] predStartBytes = rv.getStart().getData().getBytes(StandardCharsets.UTF_8);
final byte[] predStopBytes = rv.getStop().getData().getBytes(StandardCharsets.UTF_8);
start = Bytes.concat(hashSubj, DELIM_BYTES, subjBytes, DELIM_BYTES, predStartBytes);
stop = Bytes.concat(hashSubj, DELIM_BYTES, subjBytes, DELIM_BYTES, predStopBytes, DELIM_BYTES, LAST_BYTES);
} else {
// sp
// range = sp
final byte[] subjBytes = subject.getData().getBytes(StandardCharsets.UTF_8);
final byte[] hashSubj = Hex.encodeHexString(md.digest(subjBytes)).getBytes(StandardCharsets.UTF_8);
start = Bytes.concat(hashSubj, DELIM_BYTES, subjBytes, DELIM_BYTES, predicate.getData().getBytes(StandardCharsets.UTF_8), DELIM_BYTES);
stop = Bytes.concat(start, LAST_BYTES);
}
} else {
// s
// range = s
final byte[] subjBytes = subject.getData().getBytes(StandardCharsets.UTF_8);
final byte[] hashSubj = Hex.encodeHexString(md.digest(subjBytes)).getBytes(StandardCharsets.UTF_8);
start = Bytes.concat(hashSubj, DELIM_BYTES, subjBytes, DELIM_BYTES);
stop = Bytes.concat(start, LAST_BYTES);
}
return new RdfCloudTripleStoreUtils.CustomEntry<TABLE_LAYOUT, ByteRange>(table_layout, new ByteRange(start, stop));
} catch (final RyaTypeResolverException e) {
throw new IOException(e);
} catch (final NoSuchAlgorithmException e) {
throw new IOException(e);
}
}
use of org.apache.rya.api.resolver.RyaContext in project incubator-rya by apache.
the class OspWholeRowTriplePatternStrategy method defineRange.
@Override
public Map.Entry<TABLE_LAYOUT, ByteRange> defineRange(final RyaURI subject, final RyaURI predicate, final RyaType object, final RyaURI context, final RdfCloudTripleStoreConfiguration conf) throws IOException {
try {
// r(o)
if (!handles(subject, predicate, object, context)) {
return null;
}
final RyaContext ryaContext = RyaContext.getInstance();
final TABLE_LAYOUT table_layout = TABLE_LAYOUT.OSP;
byte[] start, stop;
if (subject != null) {
if (subject instanceof RyaRange) {
// o_r(s)
RyaRange ru = (RyaRange) subject;
ru = ryaContext.transformRange(ru);
final byte[] subjStartBytes = ru.getStart().getData().getBytes(StandardCharsets.UTF_8);
final byte[] subjEndBytes = ru.getStop().getData().getBytes(StandardCharsets.UTF_8);
final byte[] objBytes = ryaContext.serializeType(object)[0];
start = Bytes.concat(objBytes, DELIM_BYTES, subjStartBytes);
stop = Bytes.concat(objBytes, DELIM_BYTES, subjEndBytes, DELIM_BYTES, LAST_BYTES);
} else {
// os
final byte[] objBytes = ryaContext.serializeType(object)[0];
start = Bytes.concat(objBytes, DELIM_BYTES, subject.getData().getBytes(StandardCharsets.UTF_8), DELIM_BYTES);
stop = Bytes.concat(start, LAST_BYTES);
}
} else {
if (object instanceof RyaRange) {
// r(o)
RyaRange rv = (RyaRange) object;
rv = ryaContext.transformRange(rv);
start = ryaContext.serializeType(rv.getStart())[0];
stop = Bytes.concat(ryaContext.serializeType(rv.getStop())[0], DELIM_BYTES, LAST_BYTES);
} else {
// o
start = Bytes.concat(ryaContext.serializeType(object)[0], DELIM_BYTES);
stop = Bytes.concat(start, LAST_BYTES);
}
}
return new RdfCloudTripleStoreUtils.CustomEntry<TABLE_LAYOUT, ByteRange>(table_layout, new ByteRange(start, stop));
} catch (final RyaTypeResolverException e) {
throw new IOException(e);
}
}
use of org.apache.rya.api.resolver.RyaContext in project incubator-rya by apache.
the class HashedPoWholeRowTriplePatternStrategy method defineRange.
@Override
public Map.Entry<RdfCloudTripleStoreConstants.TABLE_LAYOUT, ByteRange> defineRange(final RyaURI subject, final RyaURI predicate, final RyaType object, final RyaURI context, final RdfCloudTripleStoreConfiguration conf) throws IOException {
try {
// r(p)(ng)
if (!handles(subject, predicate, object, context)) {
return null;
}
final RyaContext ryaContext = RyaContext.getInstance();
final MessageDigest md = MessageDigest.getInstance("MD5");
final RdfCloudTripleStoreConstants.TABLE_LAYOUT table_layout = RdfCloudTripleStoreConstants.TABLE_LAYOUT.PO;
byte[] start, stop;
if (object != null) {
if (object instanceof RyaRange) {
// p_r(o)
RyaRange rv = (RyaRange) object;
rv = ryaContext.transformRange(rv);
final byte[] objStartBytes = ryaContext.serializeType(rv.getStart())[0];
final byte[] objEndBytes = ryaContext.serializeType(rv.getStop())[0];
final byte[] predBytes = predicate.getData().getBytes(StandardCharsets.UTF_8);
final byte[] predHash = Hex.encodeHexString(md.digest(predBytes)).getBytes(StandardCharsets.UTF_8);
start = Bytes.concat(predHash, DELIM_BYTES, predBytes, DELIM_BYTES, objStartBytes);
stop = Bytes.concat(predHash, DELIM_BYTES, predBytes, DELIM_BYTES, objEndBytes, DELIM_BYTES, LAST_BYTES);
} else {
if (subject != null && subject instanceof RyaRange) {
// po_r(s)
RyaRange ru = (RyaRange) subject;
ru = ryaContext.transformRange(ru);
final byte[] subjStartBytes = ru.getStart().getData().getBytes(StandardCharsets.UTF_8);
final byte[] subjStopBytes = ru.getStop().getData().getBytes(StandardCharsets.UTF_8);
final byte[] predBytes = predicate.getData().getBytes(StandardCharsets.UTF_8);
final byte[] predHash = Hex.encodeHexString(md.digest(predBytes)).getBytes(StandardCharsets.UTF_8);
final byte[] objBytes = ryaContext.serializeType(object)[0];
start = Bytes.concat(predHash, DELIM_BYTES, predBytes, DELIM_BYTES, objBytes, DELIM_BYTES, subjStartBytes);
stop = Bytes.concat(predHash, DELIM_BYTES, predBytes, DELIM_BYTES, objBytes, DELIM_BYTES, subjStopBytes, TYPE_DELIM_BYTES, LAST_BYTES);
} else {
// po
// TODO: There must be a better way than creating multiple byte[]
final byte[] predBytes = predicate.getData().getBytes(StandardCharsets.UTF_8);
final byte[] predHash = Hex.encodeHexString(md.digest(predBytes)).getBytes(StandardCharsets.UTF_8);
final byte[] objBytes = ryaContext.serializeType(object)[0];
start = Bytes.concat(predHash, DELIM_BYTES, predBytes, DELIM_BYTES, objBytes, DELIM_BYTES);
stop = Bytes.concat(start, LAST_BYTES);
}
}
} else {
// p
final byte[] predBytes = predicate.getData().getBytes(StandardCharsets.UTF_8);
final byte[] predHash = Hex.encodeHexString(md.digest(predBytes)).getBytes(StandardCharsets.UTF_8);
start = Bytes.concat(predHash, DELIM_BYTES, predBytes, DELIM_BYTES);
stop = Bytes.concat(start, LAST_BYTES);
}
return new RdfCloudTripleStoreUtils.CustomEntry<RdfCloudTripleStoreConstants.TABLE_LAYOUT, ByteRange>(table_layout, new ByteRange(start, stop));
} catch (final RyaTypeResolverException e) {
throw new IOException(e);
} catch (final NoSuchAlgorithmException e) {
throw new IOException(e);
}
}
use of org.apache.rya.api.resolver.RyaContext in project incubator-rya by apache.
the class PoWholeRowTriplePatternStrategy method defineRange.
@Override
public Map.Entry<RdfCloudTripleStoreConstants.TABLE_LAYOUT, ByteRange> defineRange(final RyaURI subject, final RyaURI predicate, final RyaType object, final RyaURI context, final RdfCloudTripleStoreConfiguration conf) throws IOException {
try {
// r(p)(ng)
if (!handles(subject, predicate, object, context)) {
return null;
}
final RyaContext ryaContext = RyaContext.getInstance();
final RdfCloudTripleStoreConstants.TABLE_LAYOUT table_layout = RdfCloudTripleStoreConstants.TABLE_LAYOUT.PO;
byte[] start, stop;
if (object != null) {
if (object instanceof RyaRange) {
// p_r(o)
RyaRange rv = (RyaRange) object;
rv = ryaContext.transformRange(rv);
final byte[] objStartBytes = ryaContext.serializeType(rv.getStart())[0];
final byte[] objEndBytes = ryaContext.serializeType(rv.getStop())[0];
final byte[] predBytes = predicate.getData().getBytes(StandardCharsets.UTF_8);
start = Bytes.concat(predBytes, DELIM_BYTES, objStartBytes);
stop = Bytes.concat(predBytes, DELIM_BYTES, objEndBytes, DELIM_BYTES, LAST_BYTES);
} else {
if (subject != null && subject instanceof RyaRange) {
// po_r(s)
RyaRange ru = (RyaRange) subject;
ru = ryaContext.transformRange(ru);
final byte[] subjStartBytes = ru.getStart().getData().getBytes(StandardCharsets.UTF_8);
final byte[] subjStopBytes = ru.getStop().getData().getBytes(StandardCharsets.UTF_8);
final byte[] predBytes = predicate.getData().getBytes(StandardCharsets.UTF_8);
final byte[] objBytes = ryaContext.serializeType(object)[0];
start = Bytes.concat(predBytes, DELIM_BYTES, objBytes, DELIM_BYTES, subjStartBytes);
stop = Bytes.concat(predBytes, DELIM_BYTES, objBytes, DELIM_BYTES, subjStopBytes, TYPE_DELIM_BYTES, LAST_BYTES);
} else {
// po
// TODO: There must be a better way than creating multiple byte[]
final byte[] objBytes = ryaContext.serializeType(object)[0];
start = Bytes.concat(predicate.getData().getBytes(StandardCharsets.UTF_8), DELIM_BYTES, objBytes, DELIM_BYTES);
stop = Bytes.concat(start, LAST_BYTES);
}
}
} else if (predicate instanceof RyaRange) {
// r(p)
RyaRange rv = (RyaRange) predicate;
rv = ryaContext.transformRange(rv);
start = rv.getStart().getData().getBytes(StandardCharsets.UTF_8);
stop = Bytes.concat(rv.getStop().getData().getBytes(StandardCharsets.UTF_8), DELIM_BYTES, LAST_BYTES);
} else {
// p
start = Bytes.concat(predicate.getData().getBytes(StandardCharsets.UTF_8), DELIM_BYTES);
stop = Bytes.concat(start, LAST_BYTES);
}
return new RdfCloudTripleStoreUtils.CustomEntry<RdfCloudTripleStoreConstants.TABLE_LAYOUT, ByteRange>(table_layout, new ByteRange(start, stop));
} catch (final RyaTypeResolverException e) {
throw new IOException(e);
}
}
Aggregations