Skip to Content

RDF Learning Resources

Module 5: RDF Serialization Formats

Understanding RDF Serialization Formats

RDF data can be represented in multiple serialization formats, each with different syntax and features. Learning these formats is crucial for working with RDF in various contexts.

In this module, you'll learn:

Serialization Basics

RDF is a data model based on subject-predicate-object triples. While the underlying model remains the same, RDF can be serialized (written) in different formats.

What is Serialization?

Serialization is the process of converting a data structure or object into a format that can be stored or transmitted. For RDF, serialization means representing triples in a specific syntax.

Key points about RDF serialization:

  • All serialization formats represent the same underlying RDF data model
  • Different formats have different syntax, readability, and verbosity
  • The choice of format often depends on the specific use case or integration needs
  • RDF data can be converted between formats without losing information

Common RDF Serialization Formats:

  • RDF/XML - The original W3C standard format using XML syntax
  • Turtle - A concise, human-readable format with prefixes and shortcuts
  • N-Triples - A simple, line-based format where each line is a complete triple
  • JSON-LD - JSON-based format that integrates with web APIs and JSON workflows
  • RDFa - Embeds RDF data directly in HTML documents
  • TriG - Extension of Turtle that supports named graphs

Same Model, Different Syntax

Remember that regardless of the serialization format, the underlying RDF data model of triples (subject-predicate-object) remains the same. Serialization formats are just different ways to express the same information.

RDF/XML Format

RDF/XML was the first standardized RDF serialization format, using XML syntax to represent RDF graphs. It's still commonly used, particularly in systems that already work with XML.

Key Characteristics of RDF/XML

  • XML-based - Uses XML elements and attributes
  • Widespread support - Most RDF tools can read and write RDF/XML
  • Verbose - Can be quite lengthy for complex graphs
  • Processing tools - Can leverage existing XML technologies (XSLT, XPath)
  • Less human-readable - XML structure can obscure the triple structure

RDF/XML Example:

<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:sosa="http://www.w3.org/ns/sosa/"
         xmlns:ex="http://example.org/">
         
  <sosa:Sensor rdf:about="http://example.org/sensor123">
    <sosa:observes rdf:resource="http://example.org/temperature"/>
    <sosa:isHostedBy rdf:resource="http://example.org/platform1"/>
  </sosa:Sensor>
  
</rdf:RDF>

RDF/XML Structure

Key components of RDF/XML syntax:

  • <rdf:RDF> - Root element for RDF/XML documents
  • xmlns: - XML namespace declarations for prefixes (e.g., xmlns:sosa="...")
  • rdf:about - Attribute identifying the subject resource
  • rdf:resource - Attribute identifying an object resource
  • Element names for predicates (nested inside subject elements)

Match RDF/XML Components

Match each RDF/XML component with its function:

<rdf:RDF>
xmlns:prefix="..."
rdf:about="..."
rdf:resource="..."

Turtle Format

Turtle (Terse RDF Triple Language) is a simplified, human-readable format that has become one of the most popular RDF serializations due to its clarity and conciseness.

Key Characteristics of Turtle

  • Human-readable - Clean, concise syntax that's easy to read and write
  • Prefixes - Uses prefix declarations to shorten URIs
  • Shortcuts - Provides several shortcuts for common patterns:
    • ; - Semicolon for same subject, different predicates
    • , - Comma for same subject and predicate, different objects
    • a - Shorthand for rdf:type
  • Widely supported - Most modern RDF tools handle Turtle well
  • Popular for examples - Used extensively in documentation and tutorials

Turtle Example:

@prefix sosa: <http://www.w3.org/ns/sosa/> .
@prefix ex: <http://example.org/> .

ex:sensor123 a sosa:Sensor ;
    sosa:observes ex:temperature ;
    sosa:isHostedBy ex:platform1 .

Turtle Syntax Features

Drag the Turtle syntax features to the correct explanations:

@prefix
a
;
,
.
Defines a namespace prefix for shortening URIs
Shorthand for rdf:type predicate
Continues with same subject but new predicate-object pair
Adds another object with same subject and predicate
Terminates a statement or group of statements

N-Triples Format

N-Triples is a simple, line-based RDF serialization format where each line represents a complete triple. Its simplicity makes it easy to parse and process but less concise for human reading.

Key Characteristics of N-Triples

  • Line-based - One complete triple per line
  • Full URIs - No prefixes or shortcuts; uses complete URIs
  • Simple syntax - Extremely straightforward to parse
  • Verbose - Can be lengthy due to repeated full URIs
  • Stream processing - Ideal for line-by-line processing of large datasets
  • No blank nodes sharing - Each blank node is unique to a single line

N-Triples Example:

<http://example.org/sensor123> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/sosa/Sensor> .
<http://example.org/sensor123> <http://www.w3.org/ns/sosa/observes> <http://example.org/temperature> .
<http://example.org/sensor123> <http://www.w3.org/ns/sosa/isHostedBy> <http://example.org/platform1> .

N-Triples and N-Quads

N-Quads is an extension of N-Triples that adds a fourth element to each line representing the graph name. This allows for representing multiple named graphs in the same file:

<subject> <predicate> <object> <graph> .

N-Triples Structure Exercise

Identify the subject, predicate, and object in the following N-Triple line:

<http://example.org/observation123> <http://www.w3.org/ns/sosa/madeBySensor> <http://example.org/sensor456> .

JSON-LD Format

JSON-LD (JavaScript Object Notation for Linked Data) is a method of encoding linked data using JSON format. It's designed to integrate the web of data with the web of documents by adding context to JSON data.

Key Characteristics of JSON-LD

  • JSON-based - Built on the popular JSON format
  • Web integration - Works well with existing web APIs and REST services
  • Context mechanism - Uses @context to map terms to IRIs
  • Human-readable - Leverages JSON's readable structure
  • Flexible syntax - Multiple serialization forms (expanded, compacted, etc.)
  • Developer-friendly - Familiar to web developers who work with JSON

JSON-LD Example:

{
  "@context": {
    "sosa": "http://www.w3.org/ns/sosa/",
    "ex": "http://example.org/"
  },
  "@id": "ex:sensor123",
  "@type": "sosa:Sensor",
  "sosa:observes": {
    "@id": "ex:temperature"
  },
  "sosa:isHostedBy": {
    "@id": "ex:platform1"
  }
}

JSON-LD Keywords Exercise

Match each JSON-LD keyword with its correct description:

@context
@id
@type
@list

Format Comparison

Let's compare the different RDF serialization formats using the same example data. This will highlight the syntactical differences while showing that they all represent the same underlying triples.

Same Triples, Different Formats

The following examples all represent these RDF triples:

ex:sensor123 rdf:type sosa:Sensor .
ex:sensor123 sosa:observes ex:temperature .
ex:sensor123 sosa:isHostedBy ex:platform1 .
Format
Representation
Characteristics
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:sosa="http://www.w3.org/ns/sosa/"
         xmlns:ex="http://example.org/">
  <sosa:Sensor rdf:about="http://example.org/sensor123">
    <sosa:observes rdf:resource="http://example.org/temperature"/>
    <sosa:isHostedBy rdf:resource="http://example.org/platform1"/>
  </sosa:Sensor>
</rdf:RDF>
  • XML-based
  • Hierarchical nesting
  • Most verbose
  • Good tool support
Turtle
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix sosa: <http://www.w3.org/ns/sosa/> .
@prefix ex: <http://example.org/> .

ex:sensor123 a sosa:Sensor ;
    sosa:observes ex:temperature ;
    sosa:isHostedBy ex:platform1 .
  • Human-readable
  • Shortcuts and prefixes
  • Concise syntax
  • Popular for examples
N-Triples
<http://example.org/sensor123> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/sosa/Sensor> .
<http://example.org/sensor123> <http://www.w3.org/ns/sosa/observes> <http://example.org/temperature> .
<http://example.org/sensor123> <http://www.w3.org/ns/sosa/isHostedBy> <http://example.org/platform1> .
  • Line-based
  • Full URIs
  • Simple to parse
  • Good for big datasets
JSON-LD
{
  "@context": {
    "sosa": "http://www.w3.org/ns/sosa/",
    "ex": "http://example.org/",
    "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  },
  "@id": "ex:sensor123",
  "@type": "sosa:Sensor",
  "sosa:observes": { "@id": "ex:temperature" },
  "sosa:isHostedBy": { "@id": "ex:platform1" }
}
  • JSON-based
  • Web-friendly
  • Developer-friendly
  • Good for APIs

Format Identification Exercise

Given the following RDF snippets, identify which serialization format each represents:

_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/sosa/Observation> .
_:b0 <http://www.w3.org/ns/sosa/hasResult> "23.5"^^<http://www.w3.org/2001/XMLSchema#decimal> .
{
  "@context": {
    "schema": "http://schema.org/",
    "name": "schema:name",
    "description": "schema:description"
  },
  "@type": "schema:Event",
  "name": "RDF Workshop",
  "description": "Learning about RDF serialization formats"
}
@prefix schema: <http://schema.org/> .

<http://example.org/person1> a schema:Person ;
    schema:name "Alice" ;
    schema:knows <http://example.org/person2> .
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:foaf="http://xmlns.com/foaf/0.1/">
  <foaf:Person rdf:about="http://example.org/person1">
    <foaf:name>Bob</foaf:name>
  </foaf:Person>
</rdf:RDF>

Choosing a Format

The choice of RDF serialization format depends on your specific use case and requirements. Here are some guidelines to help you select the most appropriate format.

Format Selection Criteria

Consider the following factors when choosing an RDF serialization format:

  • Use case - What is the intended use of the RDF data?
  • Audience - Who will be working with the data?
  • Integration requirements - What systems or tools will process the data?
  • Human readability - How important is it for humans to read/write the data?
  • Size and performance - How large is the dataset and what are the processing needs?

Format Strengths:

  • RDF/XML - Legacy systems, XML toolchains, standards compliance
  • Turtle - Documentation, examples, human editing, compact datasets
  • N-Triples - Large datasets, line-based processing, simplicity
  • JSON-LD - Web APIs, JavaScript integration, JSON-based systems
?