InlineVocabEqBOp.java
package org.wikidata.query.rdf.blazegraph.constraints;
import com.bigdata.bop.BOp;
import com.bigdata.bop.IBindingSet;
import com.bigdata.rdf.error.SparqlTypeErrorException;
import com.bigdata.rdf.internal.IV;
import com.bigdata.rdf.internal.constraints.XSDBooleanIVValueExpression;
import com.bigdata.rdf.internal.impl.uri.URIExtensionIV;
import com.bigdata.rdf.model.BigdataURI;
public class InlineVocabEqBOp extends XSDBooleanIVValueExpression {
private final IV uriPrefix;
public InlineVocabEqBOp(BOp[] args, IV inlineVocab) {
super(args, NOANNS);
this.uriPrefix = inlineVocab;
if (args.length != 1 || args[0] == null) {
throw new IllegalArgumentException();
}
}
@Override
protected boolean accept(IBindingSet bs) {
final IV iv = get(0).get(bs);
// not yet bound
if (iv == null)
throw new SparqlTypeErrorException();
if (!iv.isInline()) {
return false;
}
if (iv instanceof URIExtensionIV) {
IV<BigdataURI, ?> extensionIV = ((URIExtensionIV<?>) iv).getExtensionIV();
return uriPrefix.equals(extensionIV);
}
return false;
}
}