<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Binary OWL</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Matthew Horridge</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Timothy Redmond</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tania Tudorache</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mark Musen?</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Stanford Biomedical Informatics Research Group Stanford University</institution>
          ,
          <addr-line>California</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>This paper presents a binary format for both storing OWL ontologies and describing changes in OWL ontologies. The format is designed to be a fast to parse and serialise format. It is intended as a low level storage and transmission mechanism rather than an end user exchange syntax. Software to parse and serialise binary OWL has been implemented in the form of OWL API parsers and renderers. Some initial experiments seem to indicate that a Binary OWL ontology document can be parsed roughly an order of magnitude faster than the corresponding RDF/XML document.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>used as an exchange syntax between tools (although with support in commonly
used APIs it could be), rather it is designed to enable applications to support
speci c self-contained functionality in a performant way.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Preliminaries</title>
      <p>
        OWL 2 OWL 2 is the latest standard in ontology languages from the W3C.
For the purposes of this paper an OWL 2 ontology is a set of annotations, a
set of axioms, and a set of imports declarations that can be optionally named
with an Internationalised Resource Identi er (IRI) and a version IRI. Axioms
are statements which specify how entities (classes, properties and individuals)
or complex classes in the domain of interest are related to each other. For a
full description see the OWL 2 Structural Speci cation and Functional-Style
Syntax speci cation [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. A change to an OWL 2 ontology is either an ontology
annotation addition or removal, an axiom addition or removal, or an imports
declaration addition or removal.
      </p>
      <p>
        RDF Graph Based Syntaxes (RDF/XML) As pointed out above, the
normative exchange syntax for OWL 2 ontologies is RDF/XML. As the name
suggests, RDF/XML is an (XML) eXtensible Markup Language based format for
storing RDF graphs. Since OWL 2 ontologies can be mapped into RDF graphs
they can be stored in RDF/XML. To store an OWL 2 ontology in RDF/XML
it is rst necessary to translate it to an RDF Graph using the transformation
to triples de ned in Table 1 and 2 of [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] and then transform this to a stream
of characters representing a valid XML document in accordance with the
serialisation speci cation de ned in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. The reverse process of parsing an RDF/XML
document into an OWL 2 ontology is slightly more involved and is accomplished
by rst parsing the stream of characters into XML, parsing this into RDF triples
(in accordance with Tables 3 to 18 in Section 3 of [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]) and then parsing or
lifting these triples into OWL 2 ontology objects. In the context of this paper, and
from the point of view of parser implementors, this syntax is di cult to parse
into high level OWL 2 objects in an easy manner. At this point it should these
problems are not speci c to RDF/XML, but all other RDF graph based
syntaxes for example Turtle, N-Triples and newer syntaxes such as JSON-LD [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ].
The main cause for these di culties is that many OWL 2 constructs, such as
complex class expressions, which are single objects in the OWL world, must be
represented using multiple triples. To \lift" the triples that represent a complex
OWL object into that OWL object it is necessary to have all of the triples
available (either in memory or in some persistent triple store) so that they can be
randomly accessed and queried. In the general case, it is not possible to parse
RDF/XML (or any RDF graph based representation of an OWL ontology) in
a streaming mode|the triple based representation has to be fully loaded into
main memory or be readily available for querying in order for it to be parsed into
OWL. This has an impact on both parsing time and on the amount of memory
required for parsing.
      </p>
      <p>Non-RDF Graph Based Syntaxes Besides RDF/XML and the other avours
of RDF graph based syntaxes there exist several other syntaxes which can be used
persist OWL ontology documents. OWL/XML is straightforward XML based
syntax which can be queried and manipulated with o -the-shelf XML tools.
While relatively simple, OWL/XML is extremely verbose|even more verbose
than RDF/XML. This means that parsing an OWL/XML version of an ontology
document can take as long, or usually longer, than parsing an RDF/XML
equivalent. Other syntaxes include the Manchester Syntax, which is designed for use
in editing tools such as Protege, and the OWL 2 Functional-Style Syntax, which
is used to specify the structure of objects in OWL 2 ontologies in a concrete
way. All of these are textual based syntaxes which can be edited in a regular
text editor.</p>
      <p>
        Binary le formats Binary les are computer les that are not plain text
based ( les whose bytes aren't aligned to human readable characters). In recent
years there has been a shift away from binary le formats to text based formats,
in particular markup languages such as XML. One of the main reasons for this
shift is the ease in which text based formats, such as XML, can easily be shared
between 3rd party tools and can also be parsed and processed on disparate
platforms (providing a common standard encoding of characters is used such as
UTF-8). Another bene t of textual based formats is that they can be opened,
inspected and tinkered with using a simple text editor|a comfort blanket for
many people, including power users and developers. When a binary le format
is opened in a text editor, the 8 bit blocks of bytes are interpreted as characters,
leading to an unreadable mess. Because of this, unlike a le that is based on a
textual format, it is di cult to repair a damaged or corrupt binary le by hand.
This means that standards and versioning are particularly important when it
comes to binary le formats|it is non-trivial to reverse engineer a binary le
format. Despite good motivations for and the widespread use of text based le
formats such as XML, binary formats have an advantage in terms of performance.
First, binary les tend to be more compact than text based alternatives. There
are typically fewer bytes to read in a binary le than the text based equivalent.
Second, binary les are typically geared towards being fast to parse. In the
extreme case a binary le does not need to be parsed if it is the exact copy of an
in memory based representation of an object or set of objects|the bytes in the
le simply need to be blitted into main memory to load the objects stored in the
le. Where this kind of blitting isn't possible, binary formats can be optimised
for fast parsing since they can store information in an order that is preferred for
parsing rather than in an order that is more palatable to a human reader.
Binary RDF There has recently been an e ort to introduce a binary format
for RDF graphs [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. The format is known as (HDT) which stands for Header,
Dictionary and Triples and is essentially based on indexing IRIs and
compacting the representation of a set of triples. Although using this format to store
an ontology might lead to performance gains for parsing the RDF graph
representation of the ontology, once the triples have been loaded into memory they
would still require lifting to the level of complex OWL objects.
      </p>
      <p>Binary Compatibility Cross Platform Issues One major issue for those
working with binary le formats is that of byte ordering, usually known as
Endianness. There are two avours: Big Endianness, where the most sign cant
byte comes rst, and Little Endianness, where the least signi cant by comes
rst. For more information and an example, see the Wikipedia article on
Endianness http://en.wikipedia.org/wiki/Endianness. Di erent platforms can
use di erent byte orderings and an important consideration in designing a binary
le format is to choose one type and stick to it|a le that uses a Big Endian
encoding cannot be read by a parser that expects a Little Endian encoding.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Binary OWL |</title>
    </sec>
    <sec id="sec-4">
      <title>Main Design Ideas</title>
      <p>In what follows Binary OWL is described. It should be noted that this paper is
not meant to serve as a precise speci cation of the syntax rather it just presents
some of the salient ideas behind the syntax.</p>
      <p>
        A Binary OWL Document is a binary le with a Big Endian encoding. Binary
OWL uses the concept \chunks" which are blocks of binary data of a speci c
type. Each chunk begins with 4 bytes marking the length of the chunk, followed
by 4 bytes marking its type followed by the chunk data which is of the speci ed
length in bytes. The concept of chunking was inspired by the use of chunks in the
PNG speci cation [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and is a useful concept because it allows parsers to skip
over chunks that they do not understand or ones that they are not interested in.
Chunking also helps to make the format extensible. If new kinds of data need to
be stored new chunk types can be added.
      </p>
      <p>Document Header Each binary ontology document begins with a header
which contains the usual information such as a magic number identifying that
the contained document is Binary OWL and version information for the format.
The header also contains a metadata chunk that can be used to store arbitrary
metadata that should not necessarily be contained in the actual ontology stored
in the document (such as generator, creation time etc.). The metadata chunk is
akin to comments in an XML le but slightly more expressive in that property
value pairs (of various types) can be stored. Some basic information (a subset
of what is usually considered to be \ontology header" information) follows the
document header. This ontology header contains the IRI and version IRI (if
present) of the ontology contained within the document along with a possibly
empty list of OWL imports declarations.</p>
      <p>IRI Lookup Table A key component of Binary OWL documents are IRI
lookup tables. Lookup tables are used to index IRIs contained in the signature
of OWL ontology objects. These indices are then used in the representation of
OWL objects throughout the Binary OWL ontology document. The main
advantage of IRI lookup tables is that (1) they help to make the whole ontology
document much more compact|replacing all occurrences of a commonly
occurring IRI string, which could be tens of characters long, saves a lot of bytes.
This compacting e ect helps makes the le smaller and faster to read. (2) The
IRI table provides an cheap interning mechanism for objects representing IRIs
when the ontology is parsed|only one object is used for a given IRI and it is
cheap to access these objects because they are pointed to by indices rather than
being stored within some kind of map. The net e ect is that fewer objects need
to be created in memory which reduces parsing time and memory footprint. In
every Binary OWL document there is a main IRI lookup table, which follows
the document header, for the main document data block.</p>
      <p>Document Data Following the IRI table comes the main document data
block which essentially speci es a set of ontology annotations and then a set
of axioms for the ontology described in the document. The next two sections
below describe how components of this data block are structured. In the current
version of Binary OWL a simple encoding mechanism is used which simply lists
annotations and then axioms in their binary encoding. In future versions of
Binary OWL one could imagine some other encoding scheme which could take
advantage of the shared/repeating structure of axioms and their sub-components
to produce smaller les, however, as with all compression algorithms there are
some space/time tradeo s and more investigation would be needed before setting
on a preferred encoding.</p>
      <p>Representation of OWL Objects The various kinds of objects, such as
axioms, class expressions, data ranges, entities and literals that are de ned in
the OWL 2 Structural Speci cation and can be used in various places within an
OWL ontology document are encoded in what is in essence a compact version
of the Functional-Style syntax. Each type of object is assigned a 1 byte type
marker which is written out to mark the start of the object. Next, the various
sub-objects, in the order that they appear in the functional-style syntax, are
written out. For example, consider SubClassOf(:A ObjectSomeValuesFrom(:R :B)).
First the marker byte for SubClassOf (which has a decimal value of 36) is written
out. Next, the class :A is written out by writing the marker value corresponding
to class names (which has a decimal value of 4) followed by a variable length
integer that is the index for :A in the IRI table. The same is repeated for the
sub-object ObjectSomeValuesFrom(:R :B) and its sub-objects :R and :B.
Representation of Lists and Sets Many OWL 2 constructs consist of sets
or lists of objects. For example, component of an ObjectIntersectionOf is a set of
class expressions. Additionally, the main top level components of an ontology
are sets (of axioms and annotations). Given a collection (set or list) of objects
of size n, the Binary OWL format stores the collection using a variable length
int (1 - 4 bytes) to store n followed by the serialisation of the n objects that are
contained in the collection. It was decided to use a variable length int, rather
than say a 4-byte int, because the use of collections can be numerous in any
given ontology. In large ontologies, such as SNOMED-CT there can be huge
numbers of small collections and storing the size of each collection as a 4-byte int
can signi cantly blow up the size of the whole ontology serialisation. A further
bene t of this scheme is that it enables precise advanced memory allocation
during parsing. When adding items to collections such as sets, lists and maps,
programs written in Java can obtain a substantial runtime performance boost by
allocating enough memory to hold the complete nal collection. This is especially
true of HashSets which require additional memory to be allocated and moreover
need to be rehashed (an expensive operation) when an item is added that requires
a capacity increase of the HashSet. Thus, allocating precisely enough memory
(not too little and equally important not too much) to hold all axioms and hold
the numerous other sets of objects that are required in an ontology can lead
to faster parsing and can decrease the memory foot print required to hold the
parsed ontology in memory.</p>
      <p>
        Encoding of Strings and Literals Many ontologies contain literals as the
values for annotations. In Binary OWL most types of literals are represented
as arrays of UTF-8 encoded characters followed by an index to the IRI
representing the datatype. In terms of encoding strings, a similar mechanism to
the storage of collections are used where the length of the array is encoded
followed by an array of the speci ed length in bytes. For literals that are typed as
rdf:PlainLiteral, xsd:String and xsd:Boolean more compact encodings are used that
omit the datatype pointer and in some cases (e.g. xsd:Boolean) require less bytes
that a raw string representation would require.
As well as a need for performant parsing and serialisation capabilities,
applications typically have robustness requirements which can dictate the choice of
document storage technologies. For example, if an ontology editing application
crashes, or the machine that it is hosted on needs to be restarted, there is
potential for data loss|any changes that have been made since the last save operation
will be lost. This problem can be mitigated to some extent by persisting
ontology changes to disk as they happen. However, the normative and other main
exchange syntaxes such as OWL/XML are XML based meaning that it is not
possible to append changes to existing documents. The upshot of this is that for
small document changes, such as adding an axiom or annotation to an ontology,
the whole ontology document needs to be recreated and rewritten out for that
ontology. The traditional approach to this has been to use database back end
stores, for example [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. However, these stores are heavy weight solutions and tend
to su er from performance problems caused by frequent reads and writes.
Having a format which can accommodate ontology changes as appendages would be
bene cial in this situation. Binary OWL therefore makes it possible to append
a lists of changes to an existing document. Each list of changes is represented as
a chunk, with its own metadata chunk, IRI table (scoped to IRIs appearing in
the list of changes), and nally a list of the changes themselves. The following
changes are supported:
{ Add axiom
{ Remove axiom
{ Add ontology annotation
{ Remove ontology annotation
{ Add imports declaration
{ Remove imports declaration
{ Set ontology Id (set the ontology IRI and possibly the version IRI).
The above list of changes parallels the basic change types in the OWL API. At
this point, it is worth mentioning that Binary OWL is strongly typed like the
functional syntax, which means that objects can be parsed in isolation without
reference to declarations the rest of the ontology or imported ontologies. This
means it is possible to modify the imports closure in the appended changes
without any side e ects being caused by type declarations being added or removed
from the imports closure.
5
      </p>
    </sec>
    <sec id="sec-5">
      <title>Experiments</title>
      <p>In order to determine the di erences between parsing a le stored in the
normative RDF/XML exchange syntax and Binary OWL, and to look for further areas
of optimisation, we implemented an OWL API parser and renderer for Binary
OWL and carried out some small scale casual experiments. It should be noted
that we decided that a comparison should be made with parsing RDF/XML
rather than, say OWL/XML, for two reasons: (1) RDF/XML is the normative
(and most widely used) OWL exchange syntax that all OWL tools must
support, and (2) some pilot experiments using the OWL API indicated that for a
given ontology its RDF/XML parser provides faster parsing performance than its
OWL/XML parser. Therefore, the results which follow also hold for OWL/XML
in the sense that performance gains provided by Binary OWL over RDF/XML
will also be performance gains for Binary OWL over OWL/XML. The software
is written in Java and uses the java.io classes DataInput and DataOutput for
reading and writing primitive data such as bytes, ints and strings in a
crossplatform way by using a big endian encoding.</p>
      <p>Several well-known large ontologies ranging from 886,578 axioms in size to
6,062,769 axioms in size, were used for the experiments. The ontologies are shown
in Table 2, which shows the number of axioms, the number of logical axioms, the
number of annotation axioms, the le size of the RDF/XML le in Megabytes
and the le size of the Binary OWL le in Megabytes.</p>
      <p>Method To ensure comparable results over the corpus and eliminate network
delays each ontology and its imports closure was rst loaded with the OWL
API (version 3.4.3), processed so that the imports closure was merged into one
ontology, then saved into an RDF/XML le and also a binary OWL File. Next,
for each ontology its RDF/XML le and its Binary OWL le were parsed by
the OWL API RDF/XML parser and the Binary OWL parser implemented as
part of this work. The CPU time taken to parse each le alone, ignoring the
time taken to index objects into the OWL API data structures, was recorded
and averaged over 10 rounds. The results are shown in Table 3.
Analysis As can be seen from Table 2, the size of a Binary OWL le is roughly
4 times smaller than the corresponding RDF/XML le. The main compression
comes from using IRI indexes and from compressing away the language
vocabulary that is used in RDF/XML (and other serialisations such as the
FunctionalStyle Syntax). Even though the RDF/XML parser in the OWL API is highly
tuned (even very large ontologies such as the NCBI Taxon ontology, which
contains over 6 million axioms, can be parsed in approximately 1 minute of CPU
time) parsing the binary OWL version of an ontology document is on
average an order of magnitude (between 8 and 12 times) faster than parsing the
RDF/XML version of the document. In some cases the time di erence, e.g. 6.56
seconds versus 60 seconds for the NCBI Taxon ontology, could have a large
impact on applications that require frequent loading of large numbers of ontologies
(or indeed very frequent loading of lots of smaller ontologies).
6</p>
    </sec>
    <sec id="sec-6">
      <title>Conclusions</title>
      <p>This paper has introduced the idea of a binary format for OWL. The main
motivation for this work was to produce a le format geared towards the fast
parsing and serialization of OWL ontologies. The format is intended for
internal application use rather than being yet another exchange syntax or human
consumption format. Although simple, with further room for optimisation, the
format looks promising and is roughly an order of magnitude quicker to parse
than RDF/XML.</p>
      <p>Finally, although the Binary OWL spec is relatively stable, some small details
are still being nalised. A release of some libraries for working with Binary OWL
is therefore part of future work. Developers who are interesting in trying out the
format in its current form should contact the authors.</p>
      <p>Acknowledgements This work was supported by Grant GM103316 from the
National Institute of General Medical Sciences of the United States National
Institutes of Health.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>Dave</given-names>
            <surname>Beckett</surname>
          </string-name>
          .
          <article-title>RDF/XML Syntax Speci cation (Revised)</article-title>
          .
          <source>Technical report, World Wide Web Consortium</source>
          ,
          <year>February 2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>David</given-names>
            <surname>Duce</surname>
          </string-name>
          .
          <article-title>Portable network graphics (PNG) speci cation (second edition)</article-title>
          .
          <source>Technical report, World Wide Web Consortium</source>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Javier</surname>
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Fernandez</surname>
          </string-name>
          .
          <article-title>Binary rdf for scalable publishing, exchanging and consumption in the web of data</article-title>
          .
          <source>In Proceedings of the 21st World Wide Web Conference, WWW</source>
          <year>2012</year>
          , Lyon, France,
          <source>April 16-20</source>
          ,
          <year>2012</year>
          , pages
          <fpage>133</fpage>
          {
          <fpage>138</fpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Peter</given-names>
            <surname>Haase</surname>
          </string-name>
          , Holger Lewen, Rudi Studer, Duc Thanh Tran, Michael Erdmann, Mathieu d'Aquin,
          <string-name>
            <given-names>and Enrico</given-names>
            <surname>Motta</surname>
          </string-name>
          .
          <article-title>The neon ontology engineering toolkit</article-title>
          . In Je Korn, editor,
          <source>WWW 2008 Developers Track</source>
          ,
          <year>April 2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>Matthew</given-names>
            <surname>Horridge</surname>
          </string-name>
          and
          <string-name>
            <given-names>Sean</given-names>
            <surname>Bechhofer</surname>
          </string-name>
          .
          <article-title>The OWL API: A Java API for OWL ontologies</article-title>
          .
          <source>Semantic Web</source>
          ,
          <volume>2</volume>
          (
          <issue>1</issue>
          ):
          <volume>11</volume>
          {
          <fpage>21</fpage>
          ,
          <year>February 2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>Matthew</given-names>
            <surname>Horridge and Peter F. Patel-Schneider</surname>
          </string-name>
          .
          <article-title>Manchester OWL Syntax for OWL 1.1</article-title>
          .
          <string-name>
            <surname>In</surname>
            <given-names>OWL</given-names>
          </string-name>
          : Experiences and
          <string-name>
            <surname>Directions (OWLED)</surname>
          </string-name>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>Matthew</given-names>
            <surname>Horridge</surname>
          </string-name>
          , Dmitry Tsarkov, and
          <string-name>
            <given-names>Timothy</given-names>
            <surname>Redmond</surname>
          </string-name>
          .
          <article-title>Supporting early adoption of OWL 1.1 with Protege-OWL and FaCT++</article-title>
          . In Bernardo Cuenca Grau, Pascal Hitzler, Conor Shankey, and Evan Wallace, editors,
          <source>OWL: Experiences and Directions (OWLED)</source>
          , volume
          <volume>216</volume>
          <source>of CEUR Workshop Proceedings. CEUR-WS.org, November</source>
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>Joachim</given-names>
            <surname>Kleb</surname>
          </string-name>
          <article-title>Jorg Henss and Stephan Grimm. A database backend for OWL</article-title>
          . In Rinke Hoeksta and
          <string-name>
            <surname>Peter F.</surname>
          </string-name>
          Patel-Schneider, editors,
          <source>OWL: Experiences and Directions (OWLED</source>
          <year>2009</year>
          ), CEUR Workshop Proceedings. CEUR-WS.org,
          <year>October 2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Boris</given-names>
            <surname>Motik</surname>
          </string-name>
          , Bijan Parsia, and
          <string-name>
            <surname>Peter F. Patel-Schneider</surname>
          </string-name>
          .
          <article-title>OWL 2 Web Ontology Language XML serialization</article-title>
          .
          <source>W3C Recommendation</source>
          , W3C { World Wide Web Consortium,
          <year>October 2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Boris</surname>
            <given-names>Motik</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Peter F. Patel-Schneider</surname>
          </string-name>
          ,
          <article-title>and Bijan Parsia. OWL 2 Web Ontology Language structural speci cation and functional style syntax</article-title>
          .
          <source>W3C Recommendation</source>
          , W3C { World Wide Web Consortium,
          <year>October 2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Peter F. Patel-Schneider</surname>
          </string-name>
          and
          <article-title>Boris Motik. OWL 2 web ontology language mapping to RDF graphs (second edition)</article-title>
          .
          <source>Technical report, World Wide Web Consortium</source>
          ,
          <year>December 2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Eric</surname>
          </string-name>
          <article-title>Prud'hommeaux, Tim Berners-Lee, Dave Beckett, and Gavin Carothers. Turtle terse RDF triple language W3C candidate recommendation</article-title>
          .
          <source>Technical report, World Wide Web Consortium</source>
          ,
          <year>February 2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Manu</surname>
            <given-names>Sporny</given-names>
          </string-name>
          , Gregg Kellogg, and
          <string-name>
            <given-names>Markus</given-names>
            <surname>Lanthaler</surname>
          </string-name>
          .
          <article-title>JSON-LD 1.0 a JSON based serialization for linked data</article-title>
          .
          <source>W3c editor's draft, World Wide Web Consortium</source>
          ,
          <year>March 2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14. TopQuadrant. Topquadrant: Products: TopBraid Composer. http://www. topquadrant.com/products/TB_Composer.html,
          <year>October 2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Tania</surname>
            <given-names>Tudorache</given-names>
          </string-name>
          , Csongor Nyulas, Natalya Fridman Noy, and
          <string-name>
            <given-names>Mark A.</given-names>
            <surname>Musen. WebProtege</surname>
          </string-name>
          :
          <article-title>A collaborative ontology editor and knowledge acquisition tool for the web</article-title>
          .
          <source>Semantic Web</source>
          ,
          <volume>4</volume>
          (
          <issue>1</issue>
          ):
          <volume>89</volume>
          {
          <fpage>99</fpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>