Package com.stardog.stark.io.rdfxml

# Class RDFXMLPrettyWriter

java.lang.Object
com.stardog.stark.io.rdfxml.RDFXMLWriter
com.stardog.stark.io.rdfxml.RDFXMLPrettyWriter

All Implemented Interfaces:
  `RDFHandler`, `RDFWriter`, `Closeable`, `Flushable`, `AutoCloseable`

public final class RDFXMLPrettyWriter extends RDFXMLWriter implements Closeable, Flushable
An extension of RDFXMLWriter that outputs a more concise form of RDF/XML. The resulting output is semantically equivalent to the output of an RDFXMLWriter (it produces the same set of statements), but it is usually easier to read for humans.

This is a quasi-streaming RDFWriter. Statements are cached as long as the striped syntax is followed (i.e. the subject of the next statement is the object of the previous statement) and written to the output when the stripe is broken.

The abbreviations used are typed node elements, empty property elements and striped syntax. Note that these abbreviations require that statements are written in the appropriate order.

Striped syntax means that when the object of a statement is the subject of the next statement we can nest the descriptions in each other.

Example:

     <rdf:Seq>
        <rdf:li>
           <foaf:Person>
              <foaf:knows>
                 <foaf:Person>
                   <foaf:mbox rdf:resource="..."/>
                 </foaf:Person>
              </foaf:knows>
           </foaf:Person>
        </rdf:li>
     </rdf:Seq>

Typed node elements means that we write out type information in the short form of

     <foaf:Person rdf:about="...">
         ...
      </foaf:Person>

instead of

     <rdf:Description rdf:about="...">
        <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
         ...
      </rdf:Description>

Empty property elements are of the form

     <foaf:Person>
        <foaf:homepage rdf:resource="http://www.cs.vu.nl/˜marta"/>
     </foaf:Person>

instead of

     <foaf:Person>
        <foaf:homepage>
           <rdf:Description rdf:about="http://www.cs.vu.nl/˜marta"/>
        <foaf:homepage>
     </foaf:Person>

Author:
  Peter Mika (pmika@cs.vu.nl), Michael Grove

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class com.stardog.stark.io.rdfxml.RDFXMLWriter

  `RDFXMLWriter.RDFXMLWriterFactory`

- ## Field Summary

  ### Fields inherited from class com.stardog.stark.io.rdfxml.RDFXMLWriter

  `defaultNamespace, headerWritten, lastWrittenSubject, mOptions, mWriter, namespaceTable, writingStarted`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `RDFXMLPrettyWriter(OutputStream theStream, Options theOptions)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `close()`
  `void`
  `flush()`
  `protected void`
  `flushPendingStatements()`
  `void`
  `handle(Statement theStmt)`
  Write the given `Statement`
  `protected void`
  `writeHeader()`
  `protected void`
  `writeIndents(int n)`
  Writes `n` indents.
  `protected void`
  `writeStartTag(String namespace, String localName)`

  ### Methods inherited from class com.stardog.stark.io.rdfxml.RDFXMLWriter

  `comment, end, format, getValidNodeId, namespace, setNamespace, start, writeAttribute, writeAttribute, writeCharacterData, writeEndOfEmptyTag, writeEndOfStartTag, writeEndTag, writeIndent, writeNewLine, writeStartOfStartTag`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### RDFXMLPrettyWriter

    public RDFXMLPrettyWriter(OutputStream theStream, Options theOptions)

- ## Method Details

  - ### writeHeader

    protected void writeHeader() throws IOException
    Overrides:
      `writeHeader` in class `RDFXMLWriter`
    Throws:
      `IOException`

  - ### flush

    public void flush() throws IOException
    Specified by:
      `flush` in interface `Flushable`
    Throws:
      `IOException`

  - ### close

    public void close() throws IOException
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`
    Throws:
      `IOException`

  - ### flushPendingStatements

    protected void flushPendingStatements() throws IOException, WritingFailed
    Overrides:
      `flushPendingStatements` in class `RDFXMLWriter`
    Throws:
      `IOException`
      `WritingFailed`

  - ### handle

    public void handle(@Nonnull Statement theStmt) throws WritingFailed
    Write the given `Statement`
    Specified by:
      `handle` in interface `RDFHandler`
    Specified by:
      `handle` in interface `RDFWriter`
    Overrides:
      `handle` in class `RDFXMLWriter`
    Parameters:
      `theStmt` - the statement to write
    Throws:
      `WritingFailed`

  - ### writeStartTag

    protected void writeStartTag(String namespace, String localName) throws IOException
    Throws:
      `IOException`

  - ### writeIndents

    protected void writeIndents(int n) throws IOException
    Writes `n` indents.
    Throws:
      `IOException`