Class TurtleWriter

    • Field Detail

      • FIRST

        private static final IRI FIRST
      • REST

        private static final IRI REST
      • bufferSize

        private long bufferSize
        Size of statement buffer used for pretty printing and blank node inlining. Set to Long.MAX_VALUE to buffer everything until the end (necessary when blank node inlining).
      • bufferedStatements

        protected Model bufferedStatements
      • bufferLock

        private final java.lang.Object bufferLock
      • statementClosed

        protected boolean statementClosed
        Flag indicating whether the last written statement has been closed.
      • lastWrittenSubject

        protected Resource lastWrittenSubject
      • lastWrittenPredicate

        protected IRI lastWrittenPredicate
      • stack

        private final java.util.Deque<Resource> stack
      • path

        private final java.util.Deque<IRI> path
      • xsdStringToPlainLiteral

        private java.lang.Boolean xsdStringToPlainLiteral
      • prettyPrint

        private java.lang.Boolean prettyPrint
      • inlineBNodes

        private boolean inlineBNodes
      • abbreviateNumbers

        private java.lang.Boolean abbreviateNumbers
    • Constructor Detail

      • TurtleWriter

        public TurtleWriter​(java.io.OutputStream out)
        Creates a new TurtleWriter that will write to the supplied OutputStream.
        Parameters:
        out - The OutputStream to write the Turtle document to.
      • TurtleWriter

        public TurtleWriter​(java.io.OutputStream out,
                            ParsedIRI baseIRI)
        Creates a new TurtleWriter that will write to the supplied OutputStream.
        Parameters:
        out - The OutputStream to write the Turtle document to.
        baseIRI -
      • TurtleWriter

        public TurtleWriter​(java.io.Writer writer)
        Creates a new TurtleWriter that will write to the supplied Writer.
        Parameters:
        writer - The Writer to write the Turtle document to.
      • TurtleWriter

        public TurtleWriter​(java.io.Writer writer,
                            ParsedIRI baseIRI)
        Creates a new TurtleWriter that will write to the supplied Writer.
        Parameters:
        writer - The Writer to write the Turtle document to.
        baseIRI -
    • Method Detail

      • getWriter

        public java.io.Writer getWriter()
        Description copied from interface: CharSink
        get the Writer used by this CharSink.
        Specified by:
        getWriter in interface CharSink
        Returns:
        an Writer
      • endRDF

        public void endRDF()
                    throws RDFHandlerException
        Description copied from interface: RDFHandler
        Signals the end of the RDF data. This method is called when all data has been reported.
        Specified by:
        endRDF in interface RDFHandler
        Throws:
        RDFHandlerException - If the RDF handler has encountered an unrecoverable error.
      • handleNamespace

        public void handleNamespace​(java.lang.String prefix,
                                    java.lang.String name)
                             throws RDFHandlerException
        Description copied from interface: RDFHandler
        Handles a namespace declaration/definition. A namespace declaration associates a (short) prefix string with the namespace's URI. The prefix for default namespaces, which do not have an associated prefix, are represented as empty strings.
        Specified by:
        handleNamespace in interface RDFHandler
        Overrides:
        handleNamespace in class AbstractRDFWriter
        Parameters:
        prefix - The prefix for the namespace, or an empty string in case of a default namespace.
        name - The URI that the prefix maps to.
        Throws:
        RDFHandlerException - If the RDF handler has encountered an unrecoverable error.
      • setModelFactory

        public void setModelFactory​(ModelFactory modelFactory)
        Set a ModelFactory to use for creating internal Models for statement processing/buffering purposes.
        Parameters:
        modelFactory - a ModelFactory to use for internal buffering / statement processing purposes. May not be null.
      • getModelFactory

        protected ModelFactory getModelFactory()
      • handleStatementInternal

        protected void handleStatementInternal​(Statement st,
                                               boolean endRDFCalled,
                                               boolean canShortenSubjectBNode,
                                               boolean canShortenObjectBNode)
        Internal method that differentiates between the pretty-print and streaming writer cases.
        Parameters:
        st - The next statement to write
        endRDFCalled - True if endRDF has been called before this method is called. This is used to buffer statements for pretty-printing before dumping them when all statements have been delivered to us.
        canShortenSubjectBNode - True if, in the current context, we may be able to shorten the subject of this statement iff it is an instance of BNode.
        canShortenObjectBNode - True if, in the current context, we may be able to shorten the object of this statement iff it is an instance of BNode.
      • isWellFormedCollection

        private boolean isWellFormedCollection​(Resource subj)
        Check that the collection started with the supplied subject node is a well-formed RDF Collection.

        It specifically checks that any collection subject blank nodes (the subjects of the rdf:first and rdf:rest statements) are _not_ reused for any other, unrelated statements, and there are no things like multiple rdf:first or rdf:rest statements for the same subject.

        Returns:
        true if the collection is considered well-formed false otherwise.
      • writeStatement

        protected void writeStatement​(Resource subj,
                                      IRI pred,
                                      Value obj,
                                      Resource context,
                                      boolean canShortenSubjectBNode,
                                      boolean canShortenObjectBNode)
                               throws java.io.IOException
        Throws:
        java.io.IOException
      • writeCommentLine

        protected void writeCommentLine​(java.lang.String line)
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • writeBase

        protected void writeBase​(java.lang.String baseURI)
                          throws java.io.IOException
        Throws:
        java.io.IOException
      • writeNamespace

        protected void writeNamespace​(java.lang.String prefix,
                                      java.lang.String name)
                               throws java.io.IOException
        Throws:
        java.io.IOException
      • writePredicate

        protected void writePredicate​(IRI predicate)
                               throws java.io.IOException
        Throws:
        java.io.IOException
      • writeValue

        @Deprecated
        protected void writeValue​(Value val)
                           throws java.io.IOException
        Deprecated.
        Parameters:
        val - The Value to write.
        Throws:
        java.io.IOException
      • writeValue

        protected void writeValue​(Value val,
                                  boolean canShorten)
                           throws java.io.IOException
        Writes a value, optionally shortening it if it is an IRI and has a namespace definition that is suitable for use in this context for shortening or a BNode that has been confirmed to be able to be shortened in this context.
        Parameters:
        val - The Value to write.
        canShorten - True if, in the current context, we can shorten this value if it is an instance of BNode .
        Throws:
        java.io.IOException
      • writeResource

        protected void writeResource​(Resource res,
                                     boolean canShorten)
                              throws java.io.IOException
        Writes a Resource, optionally shortening it if it is an IRI and has a namespace definition that is suitable for use in this context for shortening or a BNode that has been confirmed to be able to be shortened in this context.
        Parameters:
        res - The Resource to write.
        canShorten - True if, in the current context, we can shorten this value if it is an instance of BNode .
        Throws:
        java.io.IOException
      • writeURI

        protected void writeURI​(IRI uri)
                         throws java.io.IOException
        Throws:
        java.io.IOException
      • writeBNode

        @Deprecated
        protected void writeBNode​(BNode bNode)
                           throws java.io.IOException
        Deprecated.
        Parameters:
        bNode - The BNode to write.
        Throws:
        java.io.IOException
      • writeBNode

        protected void writeBNode​(BNode bNode,
                                  boolean canShorten)
                           throws java.io.IOException
        Throws:
        java.io.IOException
      • writeTriple

        protected void writeTriple​(Triple triple,
                                   boolean canShorten)
                            throws java.io.IOException
        Throws:
        java.io.IOException
      • writeTripleRDFStar

        protected void writeTripleRDFStar​(Triple triple,
                                          boolean canShorten)
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • writeLiteral

        protected void writeLiteral​(Literal lit)
                             throws java.io.IOException
        Throws:
        java.io.IOException
      • closePreviousStatement

        protected void closePreviousStatement()
                                       throws java.io.IOException
        Throws:
        java.io.IOException
      • isHanging

        private boolean isHanging()
      • closeHangingResource

        private void closeHangingResource()
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • closeNestedResources

        private void closeNestedResources​(Resource subj)
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • handleInlineNode

        private void handleInlineNode​(Statement st,
                                      boolean inlineSubject,
                                      boolean inlineObject)
                               throws java.io.IOException
        Throws:
        java.io.IOException
      • handleList

        private void handleList​(Statement st,
                                boolean canInlineObjectBNode)
                         throws java.io.IOException
        Throws:
        java.io.IOException
      • wrapLine

        private void wrapLine​(boolean space)
                       throws java.io.IOException
        Throws:
        java.io.IOException
      • nextSubject

        private java.util.Optional<Resource> nextSubject​(Model contextData,
                                                         java.util.Set<Resource> processedSubjects)
      • processSubject

        private void processSubject​(Model contextData,
                                    Resource subject,
                                    java.util.Set<Resource> processedSubjects)
      • processPredicate

        private void processPredicate​(Model contextData,
                                      Resource subject,
                                      IRI predicate,
                                      java.util.Set<Resource> processedSubjects,
                                      java.util.Set<IRI> processedPredicates)
      • canInlineValue

        private boolean canInlineValue​(Model contextData,
                                       Value v)
      • isBuffering

        private boolean isBuffering()
        Checks if the writer is configured such that it needs statement buffering.
        Returns:
        true if the writer is buffering, false otherwise.