use of org.eclipse.rdf4j.model.BNode in project rdf4j by eclipse.
the class AbstractRDFInserter method handleStatement.
@Override
public void handleStatement(Statement st) throws RDFHandlerException {
Resource subj = st.getSubject();
IRI pred = st.getPredicate();
Value obj = st.getObject();
Resource ctxt = st.getContext();
if (!preserveBNodeIDs) {
if (subj instanceof BNode) {
subj = mapBNode((BNode) subj);
}
if (obj instanceof BNode) {
obj = mapBNode((BNode) obj);
}
if (!enforcesContext() && ctxt instanceof BNode) {
ctxt = mapBNode((BNode) ctxt);
}
}
try {
addStatement(subj, pred, obj, ctxt);
} catch (RDF4JException e) {
throw new RDFHandlerException(e);
}
}
use of org.eclipse.rdf4j.model.BNode in project rdf4j by eclipse.
the class RepositoryUtil method statementsMatch.
private static boolean statementsMatch(Statement st1, Statement st2, Map<BNode, BNode> bNodeMapping) {
IRI pred1 = st1.getPredicate();
IRI pred2 = st2.getPredicate();
if (!pred1.equals(pred2)) {
// predicates don't match
return false;
}
Resource subj1 = st1.getSubject();
Resource subj2 = st2.getSubject();
if (!(subj1 instanceof BNode)) {
if (!subj1.equals(subj2)) {
// subjects are not bNodes and don't match
return false;
}
} else {
// subj1 instanceof BNode
BNode mappedBNode = bNodeMapping.get(subj1);
if (mappedBNode != null) {
// bNode 'subj1' was already mapped to some other bNode
if (!subj2.equals(mappedBNode)) {
// 'subj1' and 'subj2' do not match
return false;
}
} else {
// possible mapping candidate
if (bNodeMapping.containsValue(subj2)) {
// 'subj2' is already mapped to some other value.
return false;
}
}
}
Value obj1 = st1.getObject();
Value obj2 = st2.getObject();
if (!(obj1 instanceof BNode)) {
if (!obj1.equals(obj2)) {
// objects are not bNodes and don't match
return false;
}
} else {
// obj1 instanceof BNode
BNode mappedBNode = bNodeMapping.get(obj1);
if (mappedBNode != null) {
// bNode 'obj1' was already mapped to some other bNode
if (!obj2.equals(mappedBNode)) {
// 'obj1' and 'obj2' do not match
return false;
}
} else {
// possible mapping candidate
if (bNodeMapping.containsValue(obj2)) {
// 'obj2' is already mapped to some other value.
return false;
}
}
}
return true;
}
use of org.eclipse.rdf4j.model.BNode in project rdf4j by eclipse.
the class AbstractRDFInserter method mapBNode.
/**
* Maps the supplied BNode, which comes from the data, to a new BNode object. Consecutive calls with equal
* BNode objects returns the same object everytime.
*
* @throws RepositoryException
*/
private BNode mapBNode(BNode bNode) {
BNode result = bNodesMap.get(bNode.getID());
if (result == null) {
result = valueFactory.createBNode();
bNodesMap.put(bNode.getID(), result);
}
return result;
}
use of org.eclipse.rdf4j.model.BNode in project rdf4j by eclipse.
the class AbstractSPARQLJSONWriter method writeValue.
protected void writeValue(Value value) throws IOException, QueryResultHandlerException {
jg.writeStartObject();
if (value instanceof IRI) {
jg.writeStringField("type", "uri");
jg.writeStringField("value", ((IRI) value).toString());
} else if (value instanceof BNode) {
jg.writeStringField("type", "bnode");
jg.writeStringField("value", ((BNode) value).getID());
} else if (value instanceof Literal) {
Literal lit = (Literal) value;
if (Literals.isLanguageLiteral(lit)) {
jg.writeObjectField("xml:lang", lit.getLanguage().orElse(null));
} else {
IRI datatype = lit.getDatatype();
boolean ignoreDatatype = datatype.equals(XMLSchema.STRING) && xsdStringToPlainLiteral();
if (!ignoreDatatype) {
jg.writeObjectField("datatype", lit.getDatatype().stringValue());
}
}
jg.writeObjectField("type", "literal");
jg.writeObjectField("value", lit.getLabel());
} else {
throw new TupleQueryResultHandlerException("Unknown Value object type: " + value.getClass());
}
jg.writeEndObject();
}
use of org.eclipse.rdf4j.model.BNode in project rdf4j by eclipse.
the class TriGParserCustomTest method testGraphLocalNameGraph.
@Test
public void testGraphLocalNameGraph() throws Exception {
Model model = Rio.parse(new StringReader("@prefix graph: <urn:> .\n graph:a { [] <http://www.example.net/test> \"Foo\" }"), "", RDFFormat.TRIG);
assertEquals(1, model.size());
assertNotNull(model.contexts().iterator().next());
assertEquals("urn:a", model.contexts().iterator().next().stringValue());
assertTrue(model.subjects().iterator().next() instanceof BNode);
assertEquals("http://www.example.net/test", model.predicates().iterator().next().stringValue());
assertEquals("Foo", model.objects().iterator().next().stringValue());
}
Aggregations