Search in sources :

Example 36 with BNode

use of org.eclipse.rdf4j.model.BNode in project rdf4j by eclipse.

the class TriGWriter method handleStatementInternal.

protected void handleStatementInternal(Statement st, boolean endRDFCalled, boolean canShortenSubject, boolean canShortenObject) {
    // them if they are sent here
    if (prettyPrintModel != null && !endRDFCalled) {
        prettyPrintModel.add(st);
        return;
    }
    try {
        Resource context = st.getContext();
        if (inActiveContext && !contextsEquals(context, currentContext)) {
            closePreviousStatement();
            closeActiveContext();
        }
        if (!inActiveContext) {
            writer.writeEOL();
            if (context != null) {
                boolean canShortenContext = false;
                if (context instanceof BNode) {
                    if (prettyPrintModel != null && !prettyPrintModel.contains(context, null, null) && !prettyPrintModel.contains(null, null, context)) {
                        canShortenContext = true;
                    }
                }
                writeResource(context, canShortenContext);
                writer.write(" ");
            }
            writer.write("{");
            writer.increaseIndentation();
            currentContext = context;
            inActiveContext = true;
        }
    } catch (IOException e) {
        throw new RDFHandlerException(e);
    }
    // If we get to this point, switch endRDFCalled to true so writing occurs
    super.handleStatementInternal(st, true, canShortenSubject, canShortenObject);
}
Also used : BNode(org.eclipse.rdf4j.model.BNode) RDFHandlerException(org.eclipse.rdf4j.rio.RDFHandlerException) Resource(org.eclipse.rdf4j.model.Resource) IOException(java.io.IOException)

Example 37 with BNode

use of org.eclipse.rdf4j.model.BNode in project rdf4j by eclipse.

the class RDFXMLPrettyWriter method writeAbbreviatedPredicate.

/**
 * Write out an empty property element.
 */
private void writeAbbreviatedPredicate(IRI pred, Value obj) throws IOException, RDFHandlerException {
    writeStartOfStartTag(pred.getNamespace(), pred.getLocalName());
    if (obj instanceof Resource) {
        Resource objRes = (Resource) obj;
        if (objRes instanceof IRI) {
            IRI uri = (IRI) objRes;
            writeAttribute(RDF.NAMESPACE, "resource", uri.toString());
        } else {
            BNode bNode = (BNode) objRes;
            writeAttribute(RDF.NAMESPACE, "nodeID", getValidNodeId(bNode));
        }
        writeEndOfEmptyTag();
    } else if (obj instanceof Literal) {
        Literal objLit = (Literal) obj;
        // datatype attribute
        IRI datatype = objLit.getDatatype();
        // Check if datatype is rdf:XMLLiteral
        boolean isXmlLiteral = datatype.equals(RDF.XMLLITERAL);
        // language attribute
        if (Literals.isLanguageLiteral(objLit)) {
            writeAttribute("xml:lang", objLit.getLanguage().get());
        } else {
            if (isXmlLiteral) {
                writeAttribute(RDF.NAMESPACE, "parseType", "Literal");
            } else {
                writeAttribute(RDF.NAMESPACE, "datatype", datatype.toString());
            }
        }
        writeEndOfStartTag();
        // label
        if (isXmlLiteral) {
            // Write XML literal as plain XML
            writer.write(objLit.getLabel());
        } else {
            writeCharacterData(objLit.getLabel());
        }
        writeEndTag(pred.getNamespace(), pred.getLocalName());
    }
    writeNewLine();
}
Also used : ParsedIRI(org.eclipse.rdf4j.common.net.ParsedIRI) IRI(org.eclipse.rdf4j.model.IRI) BNode(org.eclipse.rdf4j.model.BNode) Literal(org.eclipse.rdf4j.model.Literal) Resource(org.eclipse.rdf4j.model.Resource)

Example 38 with BNode

use of org.eclipse.rdf4j.model.BNode in project rdf4j by eclipse.

the class RDFXMLPrettyWriter method writeNodeStartOfStartTag.

/**
 * Write out the opening tag of the subject or object of a statement up to (but not including) the end of
 * the tag. Used both in writeStartSubject and writeEmptySubject.
 */
private void writeNodeStartOfStartTag(Node node) throws IOException, RDFHandlerException {
    Value value = node.getValue();
    if (node.hasType()) {
        // We can use abbreviated syntax
        writeStartOfStartTag(node.getType().getNamespace(), node.getType().getLocalName());
    } else {
        // We cannot use abbreviated syntax
        writeStartOfStartTag(RDF.NAMESPACE, "Description");
    }
    if (value instanceof IRI) {
        IRI uri = (IRI) value;
        writeAttribute(RDF.NAMESPACE, "about", uri.toString());
    } else {
        BNode bNode = (BNode) value;
        writeAttribute(RDF.NAMESPACE, "nodeID", getValidNodeId(bNode));
    }
}
Also used : ParsedIRI(org.eclipse.rdf4j.common.net.ParsedIRI) IRI(org.eclipse.rdf4j.model.IRI) BNode(org.eclipse.rdf4j.model.BNode) Value(org.eclipse.rdf4j.model.Value)

Example 39 with BNode

use of org.eclipse.rdf4j.model.BNode in project rdf4j by eclipse.

the class ArrangedWriter method nextStatement.

private synchronized Statement nextStatement() {
    if (stmtBySubject.isEmpty() && blanks.isEmpty()) {
        assert queueSize == 0;
        return null;
    }
    Set<Statement> stmts = null;
    while (stmts == null) {
        SubjectInContext last = stack.peekLast();
        stmts = stmtBySubject.get(last);
        if (stmts == null && last != null && blanks.contains(last.getSubject(), null, null, last.getContext())) {
            stmts = queueBlankStatements(last);
        } else if (stmts == null) {
            stack.pollLast();
        }
        if (stack.isEmpty() && stmtBySubject.isEmpty()) {
            Statement st = blanks.iterator().next();
            stmts = queueBlankStatements(new SubjectInContext(st));
        } else if (stack.isEmpty()) {
            stmts = stmtBySubject.values().iterator().next();
        }
    }
    Iterator<Statement> iter = stmts.iterator();
    Statement next = iter.next();
    queueSize--;
    iter.remove();
    SubjectInContext key = new SubjectInContext(next);
    if (!key.equals(stack.peekLast())) {
        stack.addLast(key);
    }
    if (!iter.hasNext()) {
        stmtBySubject.remove(key);
    }
    Value obj = next.getObject();
    if (obj instanceof BNode) {
        // follow blank nodes before continuing with this subject
        SubjectInContext bkey = new SubjectInContext((BNode) obj, next.getContext());
        if (stack.contains(bkey)) {
            // cycle detected
            if (repeatBlankNodes) {
                throw new RDFHandlerException("Blank node cycle detected. Try disabling " + BasicWriterSettings.INLINE_BLANK_NODES.getKey());
            }
        } else {
            stack.addLast(bkey);
        }
    }
    return next;
}
Also used : BNode(org.eclipse.rdf4j.model.BNode) RDFHandlerException(org.eclipse.rdf4j.rio.RDFHandlerException) Statement(org.eclipse.rdf4j.model.Statement) Value(org.eclipse.rdf4j.model.Value)

Example 40 with BNode

use of org.eclipse.rdf4j.model.BNode in project rdf4j by eclipse.

the class RenderUtils method toSPARQL.

/**
 * Append the SPARQL query string rendering of the {@link org.eclipse.rdf4j.model.Value} to the supplied
 * {@link StringBuilder}.
 *
 * @param value
 *        the value to render
 * @param builder
 *        the {@link StringBuilder} to append to
 * @return the original {@link StringBuilder} with the value appended.
 */
public static StringBuilder toSPARQL(Value value, StringBuilder builder) {
    if (value instanceof IRI) {
        IRI aURI = (IRI) value;
        builder.append("<").append(aURI.toString()).append(">");
    } else if (value instanceof BNode) {
        builder.append("_:").append(((BNode) value).getID());
    } else if (value instanceof Literal) {
        Literal aLit = (Literal) value;
        builder.append("\"\"\"").append(escape(aLit.getLabel())).append("\"\"\"");
        if (Literals.isLanguageLiteral(aLit)) {
            aLit.getLanguage().ifPresent(lang -> builder.append("@").append(lang));
        } else {
            builder.append("^^<").append(aLit.getDatatype().toString()).append(">");
        }
    }
    return builder;
}
Also used : IRI(org.eclipse.rdf4j.model.IRI) BNode(org.eclipse.rdf4j.model.BNode) Literal(org.eclipse.rdf4j.model.Literal)

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