TriX support in Apache Jena

Jena supports TriX, a simple XML format for RDF, for both reading and writing RDF data.

The support is of the TriX core, without processing instructions.

Local copies:

Both the original HPlabs and W3C DTDs are supported for reading. Writing is according to the W3C DTD, that is using root element <trix>, rather than <TriX>.

Note: This format should not be confused with RDF/XML, the W3C standardised XML format for RDF.

TriX History

TriX originated from work by Jeremy Carroll (then at HP Labs, Bristol) and Patrick Stickler (then at Nokia) and published as a tech report HPL-2004-56 There is also earlier work published in HPL-2003-268.

The work within the Semantic Web Interest Group on Named Graphs, including TriX, is documented at https://www.w3.org/2004/03/trix/.

TriX DTD: http://www.w3.org/2004/03/trix/trix-1/trix-1.0.dtd
Trix XML Schema: http://www.w3.org/2004/03/trix/trix-1/trix-1.0.xsd

The W3C DTD differs from HPL-2004-56 by having root element <trix> not <TriX>.

<!-- TriX: RDF Triples in XML -->
<!ELEMENT trix         (graph*)>
<!ATTLIST trix         xmlns CDATA #FIXED "http://www.w3.org/2004/03/trix/trix-1/">
<!ELEMENT graph        (uri, triple*)>
<!ELEMENT triple       ((id|uri|plainLiteral|typedLiteral), uri, (id|uri|plainLiteral|typedLiteral))>
<!ELEMENT id           (#PCDATA)>
<!ELEMENT uri          (#PCDATA)>
<!ELEMENT plainLiteral (#PCDATA)>
<!ATTLIST plainLiteral xml:lang CDATA #IMPLIED>
<!ELEMENT typedLiteral (#PCDATA)>
<!ATTLIST typedLiteral datatype CDATA #REQUIRED>

TriX-star

The format is extended for RDF-star with embedded triples by allowing nested <triple>.

Trix-star (2021) adds ’triple’ to subject and object positions of ELEMENT triple.

<!ELEMENT triple       ((id|uri|plainLiteral|typedLiteral|triple), uri, (id|uri|plainLiteral|typedLiteral|triple))>

Example

The Turtle:

PREFIX :      <http://example/>

:s      :p      "ABC" .
<< :s :p :o >>  :q  :r .

is written in Trix as:

<trix xmlns="http://www.w3.org/2004/03/trix/trix-1/">
  <graph>
    <triple>
      <uri>http://example/s</uri>
      <uri>http://example/p</uri>
      <plainLiteral>ABC</plainLiteral>
    </triple>
    <triple>
      <triple>
        <uri>http://example/s</uri>
        <uri>http://example/p</uri>
        <uri>http://example/o</uri>
      </triple>
      <uri>http://example/q</uri>
      <uri>http://example/r</uri>
    </triple>
  </graph>
</trix>