AtomOwl logo

AtomOwl Vocabulary Specification

Namespace Document - 26 Jun 2006

Latest version:
http://bblfish.net/work/atom-owl/2006-06-06/#(todo: find a permanent home) [N3],[Turtle],[NTriples],[rdf/xml]
Last update:
$Date: 2006/06/26 16:50:54 $
Revision:
$Revision: 0.8 $
Editors:
Henry Story - Sun Microsystems
Authors:
Danny Ayers
Henry Story - Sun Microsystems
Contributors:
Reto Bachmann-Gmür - currently working with HP Laboratories Bristol
Elias Torres - IBM
David Powell
James Leigh

Development of AtomOwl is supported by Sun Microsystems.

Creative Commons LicenseThis work is licensed under a Creative Commons License. This copyright applies to the AtomOwl Vocabulary Specification and accompanying documentation and does not apply to AtomOwl data formats, vocabulary terms, or technology. Regarding underlying technology, AtomOwl relies heavily on W3C's RDF technology, an open Web standard that can be freely used by anyone.
Valid XHTML 1.0!
This visual layout and structure of the specification was adapted from the FOAF Vocabulary Specification by Dan Brickley and Libby Miller.

Status of This Document

NOTE: This specification is an evolving document. This document is generated by combining the RDFS/OWL machine-readable AtomOwl ontology with a specification template and a set of per-term documents.

For more information on the specification issues, descisions, etc. see:

  1. http://esw.w3.org/topic/AtomOwl/UseCases
  2. http://esw.w3.org/topic/AtomOwl/IdeasAndThoughts
  3. http://esw.w3.org/topic/AtomOwl/OntologyIssues
  4. http://esw.w3.org/topic/AtomOwl/Todo

This section describes the status of this document at the time of its publication. Other documents may supersede this document.

Authors welcome suggestions on the AtomOwl ontology and this document. Please send comments to the AtomOwl Mailing list; public archives are available. This document may be updated or added to based on implementation experience, but no commitment is made by the authors regarding future updates.

Recent Changes

Table of Contents


What's AtomOwl for?

AtomOwl is an ontology whose aim is to capture the semantics of rfc4287. RFC4287 is a format to syndicate online content, such as weblogs, podcasts, videocasts, etc. Syndication is a helpful way to alert interested readers to changes to a web site, be it to new content or changed content.

As AtomOwl captures the semantics of rfc4287 it is easy to convert rfc4287 feeds to AtomOwl statements and thus add them to a triple database, which can the be queried using a SPARQL endpoint. This should then help make very powerful searched for updated content possible.

Atom being built on RDF is very easily extensible. It meshes very well with other Ontologies such as foaf or sioc. (todo: examples of both).

AtomOwl At A Glance

A simple UML like diagram to get an immediate overview of the relation between the classes described here. UML diagram of AtomOwl [pdf]

An alphabetical index of AtomOwl terms, by class (categories or types) and by property.

Classes: | Category | Content | Entry | Feed | FeedOrEntry | Generator | HTML | Link | Person | PlainText | RelationType | TextContent | Version | XHTML | XML |

Properties: | aggregates | author | body | category | contains | content | contributor | email | entry | generator | generatorVersion | html | http://www.iana.org/assignments/relation/alternate | icon | id | label | lang | length | link | logo | name | published | rel | rights | scheme | source | src | subject | subtitle | summary | term | text | title | to | type | updated | uri | xhtml | xml |

AtomOwl Tools

There are a number of tools available for converting rfc4287 atom xml feeds into AtomOwl. A short list of some provided here:

AtomOwl Overview

Since syndication is about changes, the core of AtomOwl is the :Version class. There are two types of :Version subclasses, the :Feed and :Entry classes. :Entry objects contains metadata about a resource that changes. :Feed ojects contain collections of such :Entry objects. The resource that identifies the metadata of a :Version is its :id. An id can have many :Versions objects associated with it. Hence we can track changes to metadata about content. Each version is uniquely identified by the combination of an :id and :updated time stamp.

rfc4287 was built with careful attention to the Web architecture. The types of thing described by an atom entry is its :Content. The :Content of an object is a description of a representation. A Representation is uniquely identified by its mime type, body, language,...

So an Entry is a collection of metadata about a :Content.

todo: Make that a lot clearer!

The AtomOwl Vocabulary definitions presented here are written using a computer language (RDF/OWL) that makes it easy for software to process some basic facts about the terms in the AtomOwl vocabulary, and consequently about the things described in AtomOwl documents. A AtomOwl document, unlike a traditional Web page, can be combined with other RDF documents to create a unified database of information.

Example

Here is a simple transformation of the first example in rfc4287

 
@prefix : <http://bblfish.net/work/atom-owl/2006-06-06/#> .
@prefix iana: <http://www.iana.org/assignments/relation/>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .

[] a :Feed;
 :title [ a :Content; :type "text/plain";
         :body "Example Feed";
         ];
 :link [ a :Link;
           :rel iana:alternate ;
           :to [ :src <http://example.org/>;]
           ];
 :updated "2003-12-13T18:30:02Z"^^xsd:dateTime;
 :author [ a :Person;
           owl:sameAs _:author1;
            :name "John Doe";
          ];
 :id "urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6"^^xsd:anyURI;
 :entry [  a :Entry;
           :author _:author1;
           :title [ a :Content; :type "text/plain";
                   :body "Atom-Powered Robots Run Amok";
                   ];
           :link [ a :Link;
                   :rel iana:alternate ;
                   :to [ :src <http://example.org/2003/12/13/atom03>;]
                   ];
           :id "urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a"^^xsd:anyURI;
           :updated "2003-12-13T18:30:02Z"^^xsd:dateTime;
           :summary [ a :Content; :type "text/plain";
                   :body "Some text.";
                   ];
 ];
 .

This brief example introduces the basics of AtomOwl.

It says of courrse exactly what the first example of rfc4287 says, namely:

  1. There is a awol:Feed object, with an :id relation to urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6, that was updated on the 13th of December 2003, and whose author is John Doe.

  2. The above feed contains just one :entry relation to an :Entry object. Ie. This feed has only one entry. The entry has an author, that is the same as the author of the feed, a title "Atom-Powered Robots Run Amok" and an :alternate representation at http://example.org/2003/12/13/atom03

There are a number of examples of transformations available:

Atom originalN3 transformedTrutle versioncomment
bblfish.atombblfish.atom.n3bblfish.atom.ttl
entry-example.atomentry-example.atom.n3entry-example.atom.ttl
example-1.atomexample-1.atom.n3example-1.atom.ttl
example-2.atomexample-2.atom.n3example-2.atom.ttl
example-3.atomexample-3.atom.n3example-3.atom.ttl

Background

AtomOwl is managed as a collaborative effort.More resources on AtomOwl are available on the AtomOwl Project page.

The remainder of this specification describes how to publish and interpret descriptions such as these on the Web, using RDF/XML for syntax (file format) and terms from AtomOwl. It introduces a number of classes (such as 'Entry', 'Feed' and 'Content') and properties (relationship and attribute types such as 'updated' or 'author'). Each term definition is provided in both human and machine-readable form, hyperlinked for quick reference, and a reference to rfc4287 spec.

The specific contents of the AtomOwl vocabulary are detailed in the AtomOwl namespace document.

Related publications:

The AtomOwl Vocabulary Description

This specification serves as the AtomOwl "namespace document". As such it describes the AtomOwl vocabulary and the terms (RDF classes and properties) that constitute it, so that Semantic Web applications can use those terms in a variety of RDF-compatible document formats and applications.

This document presents AtomOwl as a Semantic Web vocabulary or Ontology.

Evolution and Extension of AtomOwl

The AtomOwl vocabulary is identified by the namespace URI 'http://bblfish.net/work/atom-owl/2006-06-06/'. (todo: this is unstable)

Revisions and extensions of AtomOwl are conducted through edits to the namespace document which is stored in a subversion repository at https://sommer.dev.java.net/atom/, and is then published in the Web at the namespace URI.

RDF is usually written using XML syntax, but behaves in rather different ways to 'vanilla' XML: the same RDF can be written in many different ways in XML. This means that SAX and DOM XML parsers are not adequate to deal with RDF/XML. If you want to process the data, you will need to use one of the many RDF toolkits available, such as Jena (Java) or Redland (C). AtomOwl mailing list is the main discussion list for questions about AtomOwl; Semantic Web Interest Group members can help with semantic web and RDF related issues which may arise; and there is the active and friendly #swig IRC channel on freenode.

AtomOwl cross-reference: Listing AtomOwl Classes and Properties

AtomOwl introduces the following classes and properties. View AtomOwl namespace document to see the N3 version.

Classes and Properties (full detail)

Class: awol:Category

Category Class - see §4.2.2 of rfc 4287. A Category Type

in-range-of:awol:category
in-domain-of:awol:label awol:scheme awol:term

Reto's Note: The construct with term and scheme looks very much like a URI-Ref used in RDF. Isn't this just any rdfs:Resource? Maybe skos:Concept could be used as range of :category.

[back to top]


Class: awol:Content

Content Class - see §4.1.3 in rfc 4287 One way to think of this is as a class that represents what one can get from an HTTP connection. It has a body, and a number of headers, info such as mime-type, content-lenght, etc... .

in-range-of:awol:content
in-domain-of:awol:body awol:lang awol:length awol:src awol:type

[back to top]


Class: awol:Entry

Entry Class - see §4.1.2 of the rfc 4287 spec

in-range-of:awol:aggregates awol:contains awol:entry
in-domain-of:awol:content awol:published awol:source awol:summary

An Entry is an Entry, and that's all you need to know!

[back to top]


Class: awol:Feed

Feed Class - Container for feed metadata.

in-range-of:awol:source
in-domain-of:awol:aggregates awol:contains awol:entry awol:generator awol:icon awol:logo awol:subtitle

An Entry is an Entry, and that's all you need to know!

[back to top]


Class: awol:FeedOrEntry

FeedOrEntry Class - Union of the Feed and Entry class. Simplifies writing the ontology.

in-domain-of:awol:author awol:category awol:contributor awol:email awol:link awol:rights

Editor's Note: This class should probably be anonymous. It is really only used to make it easier to write the ontology, as it is helps regroup all the relations that are in common between a :Feed and an :Entry.

[back to top]


Class: awol:Generator

Generator of feed - see §4.2.4 of rfc 4287 spec. Generator for the Feed. It has many properties in common with :Person

in-range-of:awol:generator
in-domain-of:awol:generatorVersion

Reto's Note: is this an instance of the piece of software or the program itself? which is the agent

[back to top]


Class: awol:HTML

Html content class - see §3.1.1.2 of rfc 4287. The class of html strings

in-domain-of:awol:html

[back to top]


Class: awol:Person

Person Class - see §3.2 of rfc 4287 spec.

in-range-of:awol:author awol:contributor awol:email

[back to top]


Class: awol:PlainText

Plain text content class - see §3.1.1.1 of rfc 4287. The datatype of simple text elements. Essentially this is the class of all plain text literals.

in-domain-of:awol:text

[back to top]


Class: awol:RelationType

Relation Type Class - see §4.2.7.2 of rfc 4287. Relation types are registered, or can be created as described in rfc 4287. They are special types of properties that relate :Versions to :Contents.

in-range-of:awol:rel

[back to top]


Class: awol:TextContent

All Text Content Class - see §3.1 of rfc 4287. The text constructs.

in-range-of:awol:rights awol:subtitle awol:summary awol:title

Editor's Note: Should :TextContent really be a sublcass of :Content ? If it is then all the properties that apply to text will also apply to :Content. If we want a :Content to be able to take properties such as :etag, this does not seem quite relevant to anything that is related to what should be the object of :title, :subtitle or :summary. Neither does :src really seem to be a relation that really makes sense there

[back to top]


Class: awol:Version

Version Class - Metadata about the state of a resource with given :id at an :updated time.

in-domain-of:awol:id awol:updated http://www.iana.org/assignments/relation/alternate http://www.iana.org/assignments/relation/related http://www.iana.org/assignments/relation/self http://www.iana.org/assignments/relation/via

[back to top]


Class: awol:XHTML

Xhtml content class - see §3.1.1.3 of rfc 4287. The datatype of xhtml strings

in-domain-of:awol:xhtml

[back to top]


Class: awol:XML

XML content class - see §4.1.3.3 of rfc 4287. The datatype of xml content

in-domain-of:awol:xml

[back to top]


Property: awol:aggregates

aggregates - The feed aggregates this given Entry. See §4.1.1 of rfc4287. This means that the entry does not have the feed as its source. The entry was taken from a different feed.

Domain: awol:Feed
Range: awol:Entry

Editor's Note: This relation is not visible in the rfc4287 xml. It is not clear that it is needed either, though it can help simplify queries. See also N3 rule that defines this precisely

[back to top]


Property: awol:author

author - See §4.2.1 rfc 4287 spec.

Domain: awol:FeedOrEntry
Range: awol:Person

[back to top]


Property: awol:body

body relation - the body of the content.

Domain: awol:Content
Range: http://www.w3.org/2000/01/rdf-schema#Literal

[back to top]


Property: awol:category

category - See §4.2.2. A category with which the conainer is associated.

Domain: awol:FeedOrEntry
Range: awol:Category

[back to top]


Property: awol:contains

contains relation - The feed contains the given Entry. See §4.1.1 of rfc4287. This makes no statement about whether that Entry has the :Feed as its source.

Domain: awol:Feed
Range: awol:Entry

[back to top]


Property: awol:content

content - See §4.1.3 of rfc 4287 spec. The content of an Entry, a Link or any of the relation types that are the object of :rel properties

Domain: awol:Entry
Range: awol:Content

[back to top]


Property: awol:contributor

contributor - See §4.2.3 of rfc 4287 spec. Someone who contributed to the Version.

Domain: awol:FeedOrEntry
Range: awol:Person

[back to top]


Property: awol:email

email address - see §3.2.3 of rfc 4287. A mailbox of the Person

Domain: awol:FeedOrEntry
Range: awol:Person

[back to top]


Property: awol:entry

entry relation - The feed contains the given Entry and that Entry has the feed as its source. See §4.1.1 of rfc 4287. This relation is a little bit more specialised than the rfc 4287 entry element. It relates only :Feed objects to :Entry objects where the :Feed is a :source of the :Entry. See also the :source and :contains relations.

Domain: awol:Feed
Range: awol:Entry

An Entry is an Entry, and that's all you need to know!

[back to top]


Property: awol:generator

generator - see §4.2.4 of rfc 4287. The generator of the object

Domain: awol:Feed
Range: awol:Generator

Editor's Note: The domain should really just be :Version. I don't see why Entries can't have an generator too (especially as atom:entry can be a top level content).

[back to top]


Property: awol:generatorVersion

generatorVersion - see §4.2.4 of rfc 4287. Indicates the version of the Generator

Domain: awol:Generator
Range: http://www.w3.org/2001/XMLSchema#string

[back to top]


Property: awol:html

html value - see §3.1.1.2 of rfc 4287. The datatype of html text elements. It is considered to be a relation to the text.

OWL Type: An InverseFunctionalProperty (uniquely identifying property)
Domain: awol:HTML
Range: http://www.w3.org/2001/XMLSchema#string

[back to top]


Property: awol:http://www.iana.org/assignments/relation/alternate

-


[back to top]


Property: awol:icon

icon - see 4.2.5 of rfc 4287. An icon associated with the object

Domain: awol:Feed
Range: http://xmlns.com/foaf/0.1/Image

Editor's Note: The domain should really just be :Version. I don't see why Entries can't have an icon.

[back to top]


Property: awol:id

id - See §4.2.6 rfc 4287 spec. All Versions with the same id can be considered to be versions of the resource identified by the id. The id mentions the resource of which it is a representation.

Domain: awol:Version
Range: http://www.w3.org/2001/XMLSchema#anyURI

[back to top]


Property: awol:label

label - see §4.2.2.3 of rfc 4287. A Human readable label for display.

Domain: awol:Category
Range: http://www.w3.org/2001/XMLSchema#string

Editor's Note: Should this be functional? Given the language sensitivity of the label

[back to top]


Property: awol:lang

language - see §4.2.7.4 of rfc 4287. The language of the representation.

Domain: awol:Content
Range: http://www.w3.org/2001/XMLSchema#language

[back to top]


Property: awol:length

length in bytes - see §4.2.7.6 of rfc 4287. The length in bytes of the representation.

Domain: awol:Content
Range: http://www.w3.org/2001/XMLSchema#int

[back to top]


Property: awol:name

name - see §3.2.1 of rfc 4287. A human readable name for the Person.


[back to top]


Property: awol:published

publication date - See §4.2.9 of rfc 4287 spec. A date associated with an event early in the lifecyle of the subject.

Domain: awol:Entry
Range: http://www.w3.org/2001/XMLSchema#dateTime

[back to top]


Property: awol:rel

relation type - see §4.2.7.2 of rfc 4287. The relationship type. The relationship type is a property that relates a :Version to a :Content

Domain: awol:Link
Range: awol:RelationType

[back to top]


Property: awol:rights

rights - See §4.2.10 of rfc 4287 spec. Rights held over a Version.

Domain: awol:FeedOrEntry
Range: awol:TextContent

[back to top]


Property: awol:scheme

catgegorization scheme - see §4.2.2.2 of rfc 4287. Identifies a categorization scheme.

Domain: awol:Category
Range: http://sw.nokia.com/WebArch-1/InformationResource

[back to top]


Property: awol:source

source feed - See §4.2.11 of rfc 4287 spec. The source feed where the entry was found

Domain: awol:Entry
Range: awol:Feed

Elias's Note: This relation is not strictly necessary.
Editor's Note: This is indeed not really needed. But it is useful for explaining the relation between the source element in rfc 4287 and the :entry relation. It has educational value.

[back to top]


Property: awol:src

source - a source of the representation

Domain: awol:Content
Range: http://sw.nokia.com/WebArch-1/InformationResource

[back to top]


Property: awol:subject

the object of the link - the inverse of the :link relation, not specified in rfc 4287, but added here for convenience


[back to top]


Property: awol:subtitle

subtitle - see §4.2.12 of rfc 4287. Subtitle of the feed.

Domain: awol:Feed
Range: awol:TextContent

[back to top]


Property: awol:summary

summary - See §4.2.13 of rfc 4287 spec. A summary of the content of the Entry

Domain: awol:Entry
Range: awol:TextContent

[back to top]


Property: awol:term

term - see §4.2.2.1 of rfc 4287. Identifies the category

Domain: awol:Category
Range: http://www.w3.org/2001/XMLSchema#string

Editor's Note: should specify that there is exactly one term

[back to top]


Property: awol:text

text type - see §3.1.1.1 of rfc 4287. The datatype of xhtml text elements

OWL Type: An InverseFunctionalProperty (uniquely identifying property)
Domain: awol:PlainText
Range: http://www.w3.org/2001/XMLSchema#string

[back to top]


Property: awol:title

title - See §4.2.14. Title of a container

Range: awol:TextContent

Editor's Note: Reto argues that a Title should have any content attached to it. One should for example allow picture for people who can't read or audio titles for people who cannot write. This would of course make the semantics be a lot more lax that the rfc 4287 syntax allows.

[back to top]


Property: awol:to

to - the object of a link. We interpret here a Link to be a re-ified relation from a :Version to a :Content object. The relation is re-ified in order to add a :title relation to the link. This can probably usually be safely ignored


[back to top]


Property: awol:type

mime type - see §4.2.7.3 of rfc 4287. The mime type of the representation.

Domain: awol:Content
Range: http://www.w3.org/2001/XMLSchema#string

[back to top]


Property: awol:updated

updated - See §4.2.15 of rfc 4287 spec. Indicates the most recent instant in time when a resource with the given id was modified in a way the publisher considers significant. Therefore, not all modifications necessarily result in a changed atom:updated value.

Domain: awol:Version
Range: http://www.w3.org/2001/XMLSchema#dateTime

[back to top]


Property: awol:uri

a uri - see §3.2.2 of rfc 4287. A uri associated the Person

Range: http://www.w3.org/2001/XMLSchema#anyURI

Editor's Note: the uri with subject :Agent and :Generator are really the same relation

[back to top]


Property: awol:xhtml

xhtml type - see §3.1.1.3 of rfc 4287. The datatype of xhtml text elements.

OWL Type: An InverseFunctionalProperty (uniquely identifying property)
Domain: awol:XHTML
Range: http://www.w3.org/2001/XMLSchema#string

Editor's Note: Note that there is a tricky question concerning the xml div element. The xml:lang and xml:base elements are not in fact part of xhtml and it has been argued on the atom mailing list (28 June 2006) that the div is *not* part of the xhtml. We could have this be a special literal with the div, or we could remove the div and push the xml:lang and xml:base down (this would work only if there is one element beneath I suppose) or we would have to use the :lang and :base relations on the :Content object.

[back to top]


Property: awol:xml

xml type relation - see §4.1.3.1 of rfc 4287. Relates an :XML object to its content.

OWL Type: An InverseFunctionalProperty (uniquely identifying property)
Domain: awol:XML
Range: http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral

[back to top]


henry.story@bblfish.net