Search in sources :

Example 11 with BNode

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);
    }
}
Also used : IRI(org.eclipse.rdf4j.model.IRI) BNode(org.eclipse.rdf4j.model.BNode) RDFHandlerException(org.eclipse.rdf4j.rio.RDFHandlerException) Resource(org.eclipse.rdf4j.model.Resource) Value(org.eclipse.rdf4j.model.Value) RDF4JException(org.eclipse.rdf4j.RDF4JException)

Example 12 with BNode

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;
}
Also used : IRI(org.eclipse.rdf4j.model.IRI) BNode(org.eclipse.rdf4j.model.BNode) Resource(org.eclipse.rdf4j.model.Resource) Value(org.eclipse.rdf4j.model.Value)

Example 13 with BNode

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;
}
Also used : BNode(org.eclipse.rdf4j.model.BNode)

Example 14 with BNode

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();
}
Also used : IRI(org.eclipse.rdf4j.model.IRI) BNode(org.eclipse.rdf4j.model.BNode) TupleQueryResultHandlerException(org.eclipse.rdf4j.query.TupleQueryResultHandlerException) Literal(org.eclipse.rdf4j.model.Literal)

Example 15 with BNode

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());
}
Also used : BNode(org.eclipse.rdf4j.model.BNode) LinkedHashModel(org.eclipse.rdf4j.model.impl.LinkedHashModel) Model(org.eclipse.rdf4j.model.Model) StringReader(java.io.StringReader) Test(org.junit.Test)

Aggregations

BNode (org.eclipse.rdf4j.model.BNode)40 IRI (org.eclipse.rdf4j.model.IRI)16 Literal (org.eclipse.rdf4j.model.Literal)14 Test (org.junit.Test)12 Resource (org.eclipse.rdf4j.model.Resource)10 Model (org.eclipse.rdf4j.model.Model)9 Value (org.eclipse.rdf4j.model.Value)7 LinkedHashModel (org.eclipse.rdf4j.model.impl.LinkedHashModel)7 StringReader (java.io.StringReader)6 RDFHandlerException (org.eclipse.rdf4j.rio.RDFHandlerException)6 Statement (org.eclipse.rdf4j.model.Statement)5 Binding (org.eclipse.rdf4j.query.Binding)4 BindingSet (org.eclipse.rdf4j.query.BindingSet)4 IOException (java.io.IOException)3 HashMap (java.util.HashMap)3 ParsedIRI (org.eclipse.rdf4j.common.net.ParsedIRI)3 ValueFactory (org.eclipse.rdf4j.model.ValueFactory)3 SimpleValueFactory (org.eclipse.rdf4j.model.impl.SimpleValueFactory)3 InputStream (java.io.InputStream)2 ModelBuilder (org.eclipse.rdf4j.model.util.ModelBuilder)2