This
document
is
also
available
in
this
non-normative
format:
diff
to
previous
version
.
Copyright
©
2009-2012
2009-2013
W3C
®
(
MIT
,
ERCIM
,
Keio
),
All
Rights
Reserved.
W3C
liability
,
trademark
and
document
use
rules
apply.
This specification defines rules and guidelines for adapting the RDFa Core 1.1 and RDFa Lite 1.1 specifications for use in HTML5 and XHTML5. The rules defined in this specification not only apply to HTML5 documents in non-XML and XML mode, but also to HTML4 and XHTML documents interpreted through the HTML5 parsing rules.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This
specification
had
been
jointly
developed
by
the
RDFa
Working
Group
and
the
HTML
Working
Group
.
The
document
was
previously
published
via
the
HTML
Working
Group,
but
has
since
been
transitioned
to
the
newly
rechartered
RDFa
Working
Group.
This
specification
is
expected
to
go
into
Last
Call
within
1-2
months
from
the
publication
date
of
this
document.
An
official
W3C
Recommendation
is
expected
2-3
months
after
the
Last
Call,
if
no
major
changes
to
the
document
result
from
the
Last
Call
process.
The
specification
is
currently
being
published
by
the
RDFa
Working
Group
.
Changes
in
this
version
of
the
document
include
the
specification
include:
head
and
body
.This specification is an extension to the HTML5 language. All normative content in the HTML5 specification, unless specifically overridden by this specification, is intended to be the basis for this specification.
A
sample
test
harness
is
available
for
software
developers.
This
set
of
tests
is
not
intended
to
be
exhaustive.
A
community-maintained
website
contains
more
information
on
further
reading,
developer
tools,
and
software
libraries
that
can
be
used
to
extract
RDFa
data
from
Web
web
documents.
If no major changes to the document result from the Last Call process, an official W3C Recommendation is expected 2-3 months after the Last Call.
This
document
was
published
by
the
RDFa
Working
Group
as
a
Last
Call
Working
Draft.
This
document
is
intended
to
become
a
W3C
Recommendation.
If
you
wish
to
make
comments
regarding
this
document,
please
send
them
to
public-rdfa-wg@w3.org
(
subscribe
,
archives
).
The
Last
Call
period
ends
28
February
2013.
All
feedback
is
comments
are
welcome.
Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This is a Last Call Working Draft and thus the Working Group has determined that this document has satisfied the relevant technical requirements and is sufficiently stable to advance through the Technical Recommendation process.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy . W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy .
This section is non-normative.
Today's web is built predominantly for human readers. Even as machine-readable data begins to permeate the web, it is typically distributed in a separate file, with a separate format, and very limited correspondence between the human and machine versions. As a result, web browsers can provide only minimal assistance to humans in parsing and processing web pages: browsers only see presentation information. RDFa is intended to solve the problem of marking up machine-readable data in HTML documents. RDFa provides a set of HTML attributes to augment visual data with machine-readable hints. Using RDFa, authors may turn their existing human-visible text and links into machine-readable data without repeating content.
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.
The key words must , must not , required , should , should not , recommended , may , and optional in this specification are to be interpreted as described in [ RFC2119 ].
There are two types of document conformance criteria for HTML documents containing RDFa semantics; HTML+RDFa and HTML+RDFa Lite .
The following conformance criteria apply to any HTML document including RDFa markup:
An
example
of
a
conforming
HTML+RDFa
document:
document,
with
the
RDFa
portions
highlighted
in
green:
<!DOCTYPE html> <html lang="en"> <head> <title>Example Document</title> </head><body> <p>This website is <a href="http://example.org/">example.org</a>.</p><body vocab="http://schema.org/"> <p typeof="Blog"> Welcome to my <a property="url" href="http://example.org/">blog</a>. </p> </body> </html>
@prefix schema: <http://schema.org/> . [] a schema:Blog; schema:url <http://example.org/> .
Non-XML
mode
HTML+RDFa
1.1
documents
should
be
labeled
with
the
Internet
Media
Type
media
type
text/html
as
defined
in
section
12.1
of
the
HTML5
specification
[
HTML5
].
XML
mode
XHTML5+RDFa
1.1
documents
should
be
labeled
with
the
Internet
Media
Type
application/xhtml+xml
as
defined
in
section
12.3
of
the
HTML5
specification
[
HTML5
],
must
not
use
a
DOCTYPE
declaration
for
XHTML+RDFa
1.0
or
XHTML+RDFa
1.1,
and
should
not
use
the
attribute.
version
@version
The
RDFa
Processor
processor
conformance
criteria
are
listed
below,
all
of
which
are
mandatory:
A
User
Agent
user
agent
is
considered
to
be
a
type
of
RDFa
Processor
processor
when
the
User
Agent
user
agent
stores
or
processes
RDFa
attributes
and
their
values.
The
reason
there
are
separate
RDFa
Processor
Conformance
and
a
User
Agent
Conformance
sections
is
because
one
can
be
a
valid
HTML5
RDFa
Processor
processor
but
not
a
valid
HTML5
User
Agent
user
agent
(for
example,
by
only
providing
a
very
small
subset
of
rendering
functionality).
The
User
Agent
user
agent
conformance
criteria
are
listed
below,
all
of
which
are
mandatory:
The
RDFa
Core
1.1
[
RDFA-CORE
]
specification
is
the
base
document
on
which
this
specification
builds.
RDFa
Core
1.1
specifies
the
attributes
and
syntax,
in
Section
5:
Attributes
and
Syntax
,
and
processing
model,
in
Section
7:
Processing
Model
,
for
extracting
RDF
from
a
Web
web
document.
This
section
specifies
changes
to
the
attributes
and
processing
model
defined
in
RDFa
Core
1.1
in
order
to
support
extracting
RDF
from
HTML
documents.
The
requirements
and
rules,
as
specified
in
RDFa
Core
and
further
extended
in
this
document,
apply
to
all
HTML5
documents.
An
RDFa
Processor
processor
operating
on
both
HTML
and
XHTML
documents,
specifically
on
their
resulting
DOMs
or
Infosets,
infosets,
must
apply
these
processing
rules
for
HTML4,
HTML5
and
XHTML5
serializations,
DOMs
and/or
Infosets.
infosets.
Documents conforming to the rules in this specification are processed according to [ RDFA-CORE ] with the following extensions:
http://www.w3.org/2011/rdfa-context/html-rdfa-1.1
,
which
must
be
applied
after
the
initial
context
for
[
RDFA-CORE
]
(
http://www.w3.org/2011/rdfa-context/rdfa-1.1
).
base
element.
For
XHTML5+RDFa
1.1
documents,
base
can
also
be
set
using
the
xml:base
@xml:base
attribute.
lang
@lang
or
xml:lang
@xml:lang
attributes.
When
the
lang
@lang
attribute
and
the
xml:lang
@xml:lang
attribute
are
specified
on
the
same
element,
the
xml:lang
@xml:lang
attribute
takes
precedence.
When
both
lang
@lang
and
xml:lang
@xml:lang
are
specified
on
the
same
element,
they
must
have
the
same
value.
application/xhtml+xml
<!DOCTYPE
html
PUBLIC
"-//
W3C
//DTD
XHTML+RDFa
1.0//EN"
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
,
or
<!DOCTYPE
html
PUBLIC
"-//
W3C
//DTD
XHTML+RDFa
1.1//EN"
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd">
,
or
application/xhtml+xml
,
that
don't
contain
a
version
@version
attribute
must
be
interpreted
as
XHTML5+RDFa
1.1
documents.
@property
attribute
and
the
@rel
and/or
@rev
attribute
exists
on
the
same
element,
the
non-CURIE
and
non-URI
@rel
and
@rev
values
are
ignored.
If,
after
this,
the
value
of
@rel
and/or
@rev
becomes
empty,
then
the
processor
must
act
as
if
the
respective
attribute
is
not
present.
@about
,
@href
,
@resource
,
or
@src
),
then
first
check
to
see
if
the
element
is
the
head
or
body
element.
If
it
is,
then
set
new
subject
to
parent
object
.
@about
,
@href
,
@resource
,
or
@src
),
then
first
check
to
see
if
the
element
is
the
head
or
body
element.
If
it
is,
then
set
new
subject
to
parent
object
.
datetime
@datetime
attribute
must
be
utilized
when
generating
datetime
@datetime
is
detected
and
the
value
of
the
attribute
is
a
valid
xsd:date
,
xsd:time
,
xsd:dateTime
,
xsd:duration
,
xsd:gYear
,
or
xsd:gYearMonth
,
then
a
triple
must
be
generated
where
the
current
property
value
is
the
matching
xsd
datatype
and
the
value
is
the
value
contained
in
the
datetime
@datetime
attribute.
If
datatype
@datatype
is
specified,
it
must
take
precedence.
If
no
datatype
@datatype
is
specified,
and
the
value
does
not
match
any
of
the
automatically
detected
xsd
datatypes,
a
plain
literal
must
be
generated
with
the
associated
language
of
the
node,
if
available.
value
@content
is
content
@datetime
and
the
contents
of
the
element
and
must
be
processed
according
to
the
rules
property
attribute
and
the
rel
and/or
rev
attribute
exists
on
the
same
element,
the
non-CURIE
and
non-URI
rel
time
,
and
rel
@datetime
rev
@content
@datetime
attribute
containing
exactly
the
elements
text
value.
datatype
@datatype
attribute
is
present
and
HTML
in
the
vocabulary
http://www.w3.org/1999/02/22-rdf-syntax-ns#
http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML
,
HTML
http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML
as
defined
in
The
attribute
is
not
supported
in
HTML5
and
is
non-conforming.
However,
if
an
HTML+RDFa
document
contains
the
version
@version
attribute
on
the
version
@version
html
element,
a
conforming
RDFa
Processor
processor
must
examine
the
value
of
this
attribute.
If
the
value
matches
that
of
a
defined
version
of
RDFa,
then
the
processing
rules
for
that
version
must
be
used.
If
the
value
does
not
match
a
defined
version,
or
there
is
no
attribute,
then
the
processing
rules
for
the
most
recent
version
of
RDFa
1.1
must
be
used.
version
@version
RDFa's tree-based processing rules, outlined in Section 7.5: Sequence of the RDFa Core 1.1 specification [ RDFA-CORE ], allow an input document to be automatically corrected, cleaned-up, re-arranged, or modified in any way that is approved by the host language prior to processing. Element nesting issues in HTML documents should be corrected before the input document is translated into the DOM, a valid tree-based model, on which the RDFa processing rules will operate.
Any mechanism that generates a data structure equivalent to the HTML5 or XHTML5 DOM, such as the html5lib library, may be used as the mechanism to construct the tree-based model provided as input to the RDFa processing rules.
According
to
RDFa
Core
1.1
allows
for
the
current
language
to
may
be
specified
by
the
Host
Language.
host
language.
In
order
for
RDFa
Processors
to
conform
to
this
specification,
they
RDFa
processors
must
use
the
mechanism
described
in
The
lang
and
xml:lang
attributes
section
of
the
[
HTML5
]
specification
to
determine
the
language
of
a
node.
If
an
author
is
editing
an
HTML
fragment
and
is
unsure
of
the
final
encapsulating
MIME
type
for
his/her
markup,
an
HTML
fragment
is
not
decided
on
while
editing,
it
is
suggested
recommended
that
the
author
specify
both
and
lang
@lang
where
the
value
in
both
attributes
is
exactly
the
same.
xml:lang
@xml:lang
When generating literals of type XMLLiteral, the processor must ensure that the output XMLLiteral is a namespace well-formed XML fragment. A namespace well-formed XML fragment has the following properties:
xmlns
@xmlns
and
xmlns:
@xmlns:
that
are
stored
in
the
RDFa
xmlns:PREFIX
@xmlns:PREFIX
must
be
entirely
transformed
xmlns
@xmlns
,
xmlns:
@xmlns:
,
and
prefix
@prefix
must
be
placed
in
each
top-level
element
in
the
generated
XMLLiteral,
taking
care
to
not
overwrite
pre-existing
namespace
values.
An
RDFa
Processor
processor
that
transforms
the
XML
fragment
must
use
the
Coercing
an
HTML
DOM
into
an
Infoset
infoset
algorithm,
as
specified
in
the
HTML5
specification,
followed
by
the
algorithm
defined
in
the
Serializing
XHTML
Fragments
section
of
the
HTML5
specification.
If
an
error
or
exception
occurs
at
any
point
during
the
transformation,
the
triple
containing
the
XMLLiteral
must
not
be
generated.
Transformation to a namespace well-formed XML fragment is required because an application that consumes XMLLiteral data expects that data to be a namespace well-formed XML fragment.
The
transformation
requirement
does
not
apply
to
plain
text
input
data
that
are
text-only,
such
as
literals
that
contain
a
attribute
with
an
empty
value
(
datatype
@datatype
""
),
or
input
data
that
that
contain
only
text
nodes.
An example transformation demonstrating the preservation of namespace values is provided below. The → symbol is used to denote that the line is a continuation of the previous line and is included purely for the purposes of readability:
<p xmlns:ex="http://example.org/vocab#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> Two rectangles (the example markup for them are stored in a triple):<svg " property="ex:markup" datatype="rdf:XMLLiteral"> →<rect width="300" height="100" style="fill:rgb(0,0,255);stroke-width:1; stroke:rgb(0,0,0)"></rect> →<rect width="50" height="50" style="fill:rgb(255,0,0);stroke-width:2;stroke:rgb(0,0,0)"></rect></svg><svg xmlns="http://www.w3.org/2000/svg" property="ex:markup" datatype="rdf:XMLLiteral"> →<rect width="300" height="100" style="fill:rgb(0,0,255);stroke-width:1; stroke:rgb(0,0,0)"/> →<rect width="50" height="50" style="fill:rgb(255,0,0);stroke-width:2;stroke:rgb(0,0,0)"/></svg> </p>
The
markup
above
should
produce
the
following
triple,
which
preserves
the
xmlns
declaration
in
the
markup
by
injecting
the
attribute
in
the
xmlns
@xmlns
rect
elements:
<> <http://example.org/vocab#markup>"<rect width=\"300\" →height=\"100\" style=\"fill:rgb(0,0,255);stroke-width:1; stroke:rgb(0,0,0)\"/> →<rect width=\"50\" →height=\"50\" style=\"fill:rgb(255,0,0);stroke-width:2; →stroke:rgb(0,0,0)\"/>"^^http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"""<rect xmlns="http://www.w3.org/2000/svg" width="300" →height="100" style="fill:rgb(0,0,255);stroke-width:1; stroke:rgb(0,0,0)"/> →<rect xmlns="http://www.w3.org/2000/svg" width="50" →height="50" style="fill:rgb(255,0,0);stroke-width:2; →stroke:rgb(0,0,0)"/>"""^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
Since
the
ex
and
rdf
namespaces
are
not
used
in
either
rect
element,
they
are
not
preserved
in
the
XMLLiteral.
Similarly,
compound
document
elements
that
reside
in
different
namespaces
must
have
their
namespaces
namespace
declarations
preserved:
<p xmlns:ex="http://example.org/vocab#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:fb="http://www.facebook.com/2008/fbml"> This is how you markup a user in FBML: <span property="ex:markup" datatype="rdf:XMLLiteral">→<p><fb:user uid="12345">The User</fb:user></p>→<span><fb:user uid="12345">The User</fb:user></span> →</span> </p>
The
markup
above
should
produce
the
following
triple,
which
preserves
the
fb
namespace
in
the
corresponding
triple:
<> <http://example.org/vocab#markup>"<p > →<fb:user uid="12345"> →</p>"^^http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"""<span xmlns:fb="http://www.facebook.com/2008/fbml"> →<fb:user uid="12345"></fb:user> →</span>"""^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
This feature is at risk, and may be removed from a subsequent version of this specification. Reviewers are invited to comment on the utility of this feature.
There are times when authors will find that they have many resources on a page that share a common set of properties. For example, several music events may have different performance times, but use the same location, band, and ticket prices. In this particular case, it is beneficial to have a short-hand notation to instruct the RDFa processor to include the location, band, and ticket price information without having to repeat all of the markup that expresses the data.
HTML+RDFa
defines
a
property
copying
mechanism
which
allows
properties
associated
with
a
resource
to
be
copied
to
another
resource.
This
mechanism
can
be
activated
by
using
the
rdfa:copy
predicate.
The
feature
is
illustrated
in
the
following
two
examples:
<div vocab="http://schema.org/"> <p typeof="MusicEvent"> <link property="image" href="Muse1.jpg"/> <link property="image" href="Muse2.jpg"/> <link property="image" href="Muse3.jpg"/> <span property="name">Muse</span> at the United Center. <time property="startDate" datetime="20130403">March 3rd 2013</time>, <a property="location" href="#united">United Center, Chicago, Illinois</a> ... </p> <p typeof="MusicEvent"> <link property="image" href="Muse1.jpg"/> <link property="image" href="Muse2.jpg"/> <link property="image" href="Muse3.jpg"/> <span property="name">Muse</span> at the Target Center. <time property="startDate" datetime="20130703">March 7th 2013</time>, <a property="location" href="#target">Target Center, Minneapolis, Minnesota</a> ... </p> </div>
In this case, two music events are defined with image , name , startDate , and location properties. The image and name values are identical for the two events and are unnecessarily duplicated in the markup. Using RDFa's property copying feature, a pattern can be declared that expresses the common properties. This pattern can then be copied into other resources within the document:
<div vocab="http://schema.org/"> <div resource="#muse" typeof="rdfa:Pattern"> <link property="image" href="Muse1.jpg"/> <link property="image" href="Muse2.jpg"/> <link property="image" href="Muse3.jpg"/> <span property="name">Muse</span> </div> <p typeof="MusicEvent"> <link property="rdfa:copy" href="#muse"/> Muse at the United Center. <time property="startDate" datetime="20130403">March 3rd 2013</time>, <a property="location" href="#united">United Center, Chicago, Illinois</a> ... </p> <p typeof="MusicEvent"> <link property="rdfa:copy" href="#muse"/> Muse at the Target Center. <time property="startDate" datetime="20130703">March 7th 2013</time>, <a property="location" href="#target">Target Center, Minneapolis, Minnesota</a> ... </p> </div>
In
this
case,
the
common
properties
for
all
of
the
events
are
expressed
in
the
first
div
.
The
common
properties
are
copied
into
each
event
resource
via
the
rdfa:copy
predicate.
The
output
for
the
previous
two
examples
is
the
same:
@prefix schema: <http://schema.org/> . [] a schema:MusicEvent; schema:image <Muse1.jpg>, <Muse2.jpg>, <Muse3.jpg>; schema:name "Muse"; schema:startDate "March 3rd 2013"; schema:location <#united> . [] a schema:MusicEvent; schema:image <Muse1.jpg>, <Muse2.jpg>, <Muse3.jpg>; schema:name "Muse"; schema:startDate "March 7th 2013"; schema:location <#target> .
The copy process is iterative, so that resources may copy other resources that copy other resources. For example:
<div vocab="http://schema.org/"> <div typeof="Person"> <link property="rdfa:copy" href="#lennon"/> <link property="rdfa:copy" href="#band"/> </div> <p resource="#lennon" typeof="rdfa:Pattern"> Name: <span property="name">John Lennon</span> <p> <div resource="#band" typeof="rdfa:Pattern"> <div property="band" typeof="MusicGroup"> <link property="rdfa:copy" href="#beatles"/> </div> </div> <div resource="#beatles" typeof="rdfa:Pattern"> <p>Band: <span property="name">The Beatles</span></p> <p>Size: <span property="size">4</span> players</p> </div> </div>
In
the
example
above,
the
properties
from
#lennon
and
#band
are
copied
into
the
first
resource.
Then
the
properties
from
#beatles
are
copied
into
#band
.
Subsequently,
those
properties
are
again
copied
into
the
first
resource
yielding
the
following
output:
@prefix schema: <http://schema.org/> . [ a schema:Person; schema:name "John Lennon" ; schema:band [ a schema:MusicGroup; schema:name "The Beatles"; schema:size "4" ] ] .
Similar to Vocabulary Expansion as defined in [ RDFA-CORE ], RDFa Property Copying operates on the output graph after document processing is complete.
Once the output graph is generated following the processing steps defined in Section 7.5: Sequence of the RDFa Core 1.1 specification [ RDFA-CORE ], and the Extensions to the HTML5 Syntax defined in this specification, processors must update the output graph using the following rules:
rdfa:copy
statement
in
the
output
graph
,
and
for
each
new
rdfa:copy
statement
added
as
a
result
of
property
copying
until
no
new
triples
are
added
to
the
output
graph
:Rule name | If output graph contains | then add |
---|---|---|
pattern-copy |
?subject
rdfa:copy
?target
?target rdf:type rdfa:Pattern ?target ?predicate ?object | ?subject ?predicate ?object |
rdfa:copy
statements
and
rdfa:Pattern
resources
from
the
output
graph
:Rule name | If output graph contains | then remove |
---|---|---|
pattern-clean |
?subject
rdfa:copy
?target
?target rdf:type rdfa:Pattern ?target ?predicate ?object |
?subject
rdfa:copy
?target
?subject rdf:type rdfa:Pattern ?target ?predicate ?object |
Implementers should be aware that a simplistic implementation of the pattern-copy rule may lead to an infinite loop when handling circular dependencies. A processor should cease the pattern-copy rule when no unique triples are generated.
Alternate rules may be used to update the output graph as long as the end result is the same.
There are a few attributes that are added as extensions to the HTML5 syntax in order to fully support RDFa:
vocab
@vocab
,
typeof
@typeof
,
property
@property
,
resource
@resource
,
and
prefix
@prefix
.
All
other
attributes
that
RDFa
may
process,
href
@href
and
src
@src
,
are
only
allowed
vocab
@vocab
,
typeof
@typeof
,
property
@property
,
resource
@resource
,
prefix
@prefix
,
content
@content
,
about
@about
,
rel
@rel
,
rev
@rev
,
datatype
@datatype
,
and
inlist
@inlist
.
All
other
attributes
that
RDFa
may
process,
href
@href
and
src
@src
,
are
only
allowed
link
or
meta
elements,
they
must
be
head
body
of
the
document.
More
specifically,
when
link
or
meta
elements
containing
RDFa
attributes
are
used
in
the
body
of
an
HTML5
document,
they
must
be
considered
flow
content
.
property
@property
attribute
is
present
on
the
link
element,
the
rel
@rel
attribute
is
not
required.
resource
@resource
attribute
is
present
on
the
link
element,
the
href
@href
attribute
is
not
required.
@property
attribute
is
present
on
the
meta
element,
neither
the
@name
,
@http-equiv
,
nor
@charset
attributes
are
required
and
the
@content
attribute
must
be
specified.
RDFa
Core
1.1
deprecates
the
usage
of
in
RDFa
1.1
documents.
Web
page
authors
should
not
use
xmlns:
@xmlns:
to
express
prefix
mappings
in
RDFa
1.1
documents.
Web
page
authors
should
use
the
xmlns:
@xmlns:
attribute
to
specify
prefix
mappings.
prefix
@prefix
However,
there
are
times
when
XHTML+RDFa
1.0
documents
are
served
by
web
servers
using
the
text/html
MIMEType.
MIME
type.
In
these
instances,
the
HTML5
specification
asserts
that
the
document
is
processed
according
to
the
non-XML
mode
HTML5
processing
rules.
In
these
particular
cases,
it
is
important
that
the
prefixes
declared
via
are
preserved
for
the
RDFa
processors
to
ensure
backwards-compatibility
with
RDFa
1.0
documents.
The
following
sections
xmlns:
@xmlns:
detail
elaborate
upon
the
backwards
compatibility
details
requirements
for
RDFa
processor
implementations.
xmlns:
@xmlns:
-Prefixed
Attributes
The
RDFa
Core
1.1
[
RDFA-CORE
]
specification
effectively
deprecates
the
use
of
the
mechanism
to
declare
CURIE
prefix
mappings
in
favor
of
the
xmlns:
@xmlns:
attribute.
prefix
@prefix
While
utilizing
xmlns:
is
now
frowned
upon,
However,
there
are
instances
where
it
its
use
is
unavoidable
-
such
as
unavoidable.
For
example,
publishing
legacy
documents
as
HTML5
or
supporting
older
XHTML+RDFa
1.0
documents
that
rely
on
the
attribute.
xmlns:
@xmlns:
CURIE
prefix
mappings
specified
using
attributes
prepended
with
must
be
processed
using
the
algorithm
defined
in
section
4.4.1:
Extracting
URI
Mappings
from
Infosets
for
xmlns:
@xmlns:
Infoset-based
infoset-based
processors,
or
section
4.5.1:
Extracting
URI
Mappings
from
DOMs
for
DOM
Level
2-based
processors.
For
CURIE
prefix
mappings
using
the
attribute,
Section
7.5:
Sequence,
step
3
must
be
used
to
process
namespace
values.
prefix
@prefix
Since
CURIE
prefix
mappings
have
been
specified
using
,
and
since
HTML
attribute
names
are
case-insensitive,
CURIE
prefix
names
declared
using
the
xmlns:
@xmlns:
attribute-name
pattern
xmlns:
@xmlns:
xmlns:<PREFIX>="<URI>"
should
be
specified
using
only
lower-case
characters.
For
example,
the
text
"
"
and
the
text
in
xmlns:
@xmlns:
"<PREFIX>"
should
be
lower-case
only.
This
is
to
ensure
that
prefix
mappings
are
interpreted
in
the
same
way
between
HTML
(case-insensitive
attribute
names)
and
XHTML
(case-sensitive
attribute
names)
document
types.
xmlns:
@xmlns:
-Prefixed
Attributes
Since
RDFa
1.0
documents
may
contain
attributes
starting
with
to
specify
CURIE
prefixes,
any
attribute
starting
with
a
case-insensitive
match
on
the
text
string
"
xmlns:
@xmlns:
"
must
be
preserved
in
the
DOM
or
other
tree-like
model
that
is
passed
to
the
RDFa
Processor.
For
documents
conforming
to
this
specification,
attributes
with
names
that
have
a
case
insensitive
prefix
matching
"
xmlns:
@xmlns:
"
must
be
considered
conforming.
Conformance
checkers
should
accept
attribute
names
that
have
a
case
insensitive
prefix
matching
"
xmlns:
@xmlns:
"
as
conforming.
Conformance
checkers
should
generate
warnings
noting
that
the
use
of
xmlns:
@xmlns:
is
deprecated.
Conformance
checkers
may
report
the
use
of
xmlns:
as
an
error.
xmlns:
@xmlns:
All
attributes
starting
with
a
case
insensitive
prefix
matching
"
"
must
conform
to
the
production
rules
outlined
in
Namespaces
in
XML
[
XML-NAMES11
],
Section
3:
Declaring
Namespaces
.
Documents
that
contain
xmlns:
@xmlns:
attributes
that
do
not
conform
to
Namespaces
in
XML
must
not
be
accepted
as
conforming.
xmlns:
@xmlns:
This section needs feedback from the user agent vendors to ensure that this feature does not conflict with user agent architecture and has no technical reason that it cannot be implemented.
RDFa
1.0
documents
may
contain
the
pattern
to
declare
prefix
mappings,
it
is
important
that
namespace
information
that
is
declared
in
non-XML
mode
HTML5
documents
are
mapped
to
an
xmlns:
@xmlns:
Infoset
infoset
correctly.
In
order
to
ensure
this
mapping
is
performed
correctly,
the
"Coercing
an
HTML
DOM
into
an
infoset"
rules
defined
in
[
HTML5
]
must
be
extended
to
include
the
following
rule:
If
the
XML
API
is
namespace-aware,
the
tool
must
ensure
that
([
namespace
name
],
[
local
name
],
[
normalized
value
])
namespace
tuples
are
created
when
converting
the
non-XML
mode
DOM
into
an
Infoset.
infoset.
Given
a
standard
definition,
xmlns:
@xmlns:
xmlns:foo="http://example.org/bar#"
,
the
[namespace
name]
is
http://www.w3.org/2000/xmlns/
,
the
[local
name]
is
foo
,
and
the
[normalized
value]
is
http://example.org/bar#
,
thus
the
namespace
tuple
would
be
(
http://www.w3.org/2000/xmlns/
,
foo
,
http://example.org/bar#
).
For example, given the following input text:
<div xmlns:com="http://purl.org/commerce#">
The
div
element
above,
when
coerced
from
an
HTML
DOM
into
an
Infoset,
infoset,
should
contain
an
attribute
in
the
[
namespace
attributes
]
list
with
a
[namespace
name]
set
to
"
http://www.w3.org/2000/xmlns/
",
a
[local
name]
set
to
com
,
and
a
[normalized
value]
of
"
http://purl.org/commerce#
".
While
the
intent
of
the
RDFa
processing
instructions
are
is
to
provide
a
set
of
rules
that
are
as
language
and
toolchain
agnostic
independent
as
possible,
for
the
sake
of
clarity,
detailed
methods
of
extracting
RDFa
content
from
processors
operating
on
an
XML
Information
Set
are
provided
below.
Extracting
URI
Mappings
declared
via
while
operating
from
within
an
xmlns:
@xmlns:
Infoset-based
infoset-based
RDFa
processor
can
be
achieved
using
the
following
algorithm:
While processing an element as described in [ RDFA-CORE ], Section 7.5: Sequence , Step #2:
xmlns:
@xmlns:
,
create
xmlns:
@xmlns:
characters
removed
as
the
value
to
be
mapped,
and
the
[
normalized
value
]
as
the
value
to
map.
This
step
is
unnecessary
if
the
Infoset
infoset
coercion
rules
preserve
namespaces
specified
in
non-XML
mode.
For
example,
assume
that
the
following
markup
is
processed
by
an
Infoset-based
infoset-based
RDFa
processor:
<divxmlns:audio="http://purl.org/media/audio#"xmlns:ps="http://purl.org/payswarm#" ...
After
the
markup
is
processed,
there
should
exist
a
[URI
mapping]
in
the
[local
list
of
URI
mappings]
that
contains
a
mapping
from
to
audio
ps
.
http://purl.org/media/audio#
http://purl.org/payswarm#
There are a number of non-prefixed attributes that are associated with RDFa Processing in HTML5. If an XML Information Set based RDFa processor is used to process these attributes, the following algorithm should be used to detect and extract the values of the attributes.
While
processing
Infoset
Attribute
Information
Items
in
Element
Information
Items
as
described
in
[
RDFA-CORE
],
Section
7.5:
Sequence
,
Sequence,
Step
#4
through
Step
#9:
#9
:
Most
DOM-aware
RDFa
Processors
processors
are
capable
of
accessing
DOM
Level
1
[
DOM-LEVEL-1
]
methods
to
process
attributes
on
elements.
To
discover
all
-specified
CURIE
prefix
mappings,
the
Node.attributes
NamedNodeMap
can
be
iterated
over.
Each
Attr.name
that
starts
with
the
text
string
xmlns:
@xmlns:
specifies
a
CURIE
prefix
mapping.
The
value
to
be
mapped
is
the
string
after
the
xmlns:
@xmlns:
substring
in
the
Attr.name
variable
and
the
value
to
be
mapped
is
the
value
of
the
Attr.value
variable.
xmlns:
@xmlns:
The
intent
of
the
RDFa
processing
instructions
are
to
provide
a
set
of
rules
that
are
as
language
and
toolchain
agnostic
independent
as
possible.
If
a
developer
chooses
to
not
use
the
DOM1
environment
mechanism
outlined
in
the
previous
paragraph,
they
may
use
the
following
DOM2
[
DOM-LEVEL-2-CORE
]
environment
mechanism.
Extracting
URI
Mappings
declared
via
while
operating
from
within
a
DOM
Level
2
based
RDFa
processor
can
be
achieved
using
the
following
algorithm:
xmlns:
@xmlns:
While
processing
each
DOM2
[
Element
]
as
described
in
[
RDFA-CORE
],
Section
7.5:
Sequence
,
Sequence,
Step
#2:
#2
:
xmlns
@xmlns
,
create
xmlns:
@xmlns:
,
create
xmlns:
@xmlns:
characters
removed
as
the
value
to
be
mapped,
and
the
[
Node.nodeValue
]
as
the
value
to
map.
This step is unnecessary if the XML and non-XML mode DOMs are namespace consistent.
For example, assume that the following markup is processed by a DOM2-based RDFa processor:
<div xmlns:com="http://purl.org/commerce#" ...
After
the
markup
is
processed,
there
should
exist
a
[URI
mapping]
in
the
[local
list
of
URI
mappings]
that
contains
a
mapping
from
com
to
http://purl.org/commerce#
.
There are a number of non-prefixed attributes that are associated with RDFa processing in HTML5. If an DOM2-based RDFa processor is used to process these attributes, the following algorithm should be used to detect and extract the values of the attributes.
While
processing
an
element
as
described
in
[
RDFA-CORE
],
Section
5.5:
Sequence
,
Sequence,
Step
#3
through
Step
#9:
#9
:
When
extracting
values
from
and
href
,
src
@href
,
data
@src
Web
web
authors
and
developers
should
note
that
certain
values
may
be
transformed
if
accessed
via
the
DOM
versus
a
non-DOM
processor.
The
rules
for
modification
of
URL
values
can
be
found
in
the
main
HTML5
specification
under
Section
2.6.2:
Parsing
URLs
.
This section is non-normative.
In early 2004, Mark Birbeck published a document named "RDF in XHTML" via the XHTML2 Working Group wherein he laid the groundwork for what would eventually become RDFa (The Resource Description Framework in Attributes).
In
2006,
the
work
was
co-sponsored
by
the
Semantic
Web
Deployment
Work
Working
Group,
which
began
to
formalize
a
technology
to
express
semantic
data
in
XHTML.
This
technology
was
successfully
developed
and
reached
consensus
at
the
W3C
,
,
later
published
as
an
official
W3C
Recommendation.
While
HTML
provides
a
mechanism
to
express
the
structure
of
a
document
(title,
paragraphs,
links),
RDFa
provides
a
mechanism
to
express
the
meaning
in
a
document
(people,
places,
events).
The document, titled "RDF in XHTML: Syntax and Processing" [XHTML-RDFA], defined a set of attributes and rules for processing those attributes that resulted in the output of machine-readable semantic data. While the document applied to XHTML, the attributes and rules were always intended to operate across any tree-based structure containing attributes on tree nodes (such as HTML4, SVG and ODF).
While
RDFa
was
initially
specified
for
use
in
XHTML,
adoption
by
a
number
of
large
organizations
on
the
Web
web
spurred
RDFa's
use
in
non-XHTML
languages.
Its
use
in
HTML4,
before
an
official
specification
was
developed
for
those
languages,
caused
concern
regarding
document
conformance.
Over
the
years,
the
members
of
the
RDFa
Task
Force
Community
had
discussed
the
possibility
of
applying
the
same
attributes
and
processing
rules
outlined
in
the
XHTML+RDFa
specification
to
all
HTML
family
documents.
By
design,
the
possibility
of
a
unified
semantic
data
expression
mechanism
between
all
HTML
and
XHTML
family
documents
was
squarely
in
the
realm
of
possibility.
An RDFa Working Group was created in 2010 to address the issues concerning multiple language implementations of RDFa. The XHTML+RDFa document was split into a base specification, called RDFa Core 1.1 [ RDFA-CORE ], and thin specifications that layer above RDFa Core 1.1. The XHTML+RDFa 1.1 specification [ XHTML-RDFA ] is an example of such a thin specification. This document, also a thin specification, is targeted at HTML4, HTML5 and XHTML5.
This document describes the extensions to the RDFa Core 1.1 specification that permits the use of RDFa in all HTML family documents. By using the attributes and processing rules described in the RDFa Core 1.1 specification and heeding the minor changes in this document, authors can generate markup that produces the same semantic data output in HTML4, HTML5 and XHTML5.
This section is non-normative.
2009-10-15: First version of the RDFa for HTML4, HTML5 and XHTML5.
2010-03-04:
Updated
HTML5
coercion
to
Infoset
infoset
rules,
preservation
of
namespaces
in
Infoset
infoset
and
DOM2-based
processors,
clarifying
how
to
extract
RDFa
attributes
via
Infoset,
infoset,
how
to
extract
RDFa
attributes
via
DOM2.
2010-05-02: Inheritance of basic processing rules from RDFa 1.1 [ RDFA-CORE ], instead of XHTML+RDFa 1.0 [ RDFA-SYNTAX ], inclusion of the HTML Default Vocabulary Terms, inclusion of a HTML 4.01 + RDFa 1.1 DTD for validation purposes.
2010-06-24: Inheritance of basic processing rules from RDFa 1.1 [ RDFA-CORE ], instead of XHTML+RDFa 1.0 [ RDFA-SYNTAX ], inclusion of the HTML Default Vocabulary Terms, added HTML 4.01 + RDFa 1.1 DTD for validation purposes, added normative definition of @version attribute.
2010-10-19: Removal of @version attribute, migrated HTML Vocabulary Terms to RDFa Profile document, added statement to send comments to the HTML WG bug tracker.
2011-01-11: Removed decentralized extensibility issue markers, added DOM Level 1 prefix mapping extraction algorithm.
2011-04-05: Moved all xmlns: rules into a section titled Backwards Compatibility and brought spec in-line with latest RDFa Core 1.1 spec.
2011-05-12:
Generated
Last
Call
document,
no
substatitive
substantive
changes.
2011-12-30:
Addition
of
normative
dependency
for
RDFa
Lite
1.1.
Addition
of
rules
to
allow
meta
and
link
elements
in
flow
and
phrasing
content
as
long
as
they
contain
at
least
one
RDFa-specific
attribute.
Added
support
for
and
datetime
@datetime
value
processing.
2012-03-10: Clarification of where each RDFa attribute is allowed to be used. Feature at risk warning for HTML4+RDFa DTD-based validation.
2012-09-10: Publishing control of the HTML+RDFa document is handed over from the HTML WG to the newly re-chartered RDFa WG. DTD-based validation is removed from the specification.
2012-12-13: Addition of new HTML-specific processing rules for dealing with XHTML5 vs. HTML5 documents, xml:base, HTML Literals, property and rel/rev on the same element, and more types for the datetime attribute.
2012-12-27: Added Property Copying section and special processing for head and body.
2013-01-19: Removed @value processing, added @content overriding @datetime if present, cleanup and prep for Last Call publication in RDFa WG.
This section is non-normative.
At
the
time
of
publication,
the
members
of
the
RDF
Web
Applications
RDFa
Working
Group
were:
Ivan Herman (staff contact), Shane McCarron, Gregg Kellogg, Niklas Lindström, Steven Pemberton, Manu Sporny (chair), Ted Thibodeau, and Stéphane Corlosquet.
At
the
time
A
great
deal
of
publication,
thanks
to
everyone
that
provided
feedback
on
the
members
specification
(most
of
the
HTML
Working
Group
were:
whom
are
listed
below):
Colin
Aarts,
Miller
Abel,
D.R.Imanuel
Abromeit,
Robert
Accettura,
Chris
Adams,
Ben
Adida,
Arihant
Agarwal,
yael
aharon,
Jim
Allan,
Kazuyuki
Ashimura,
Tab
Atkins
Jr.,
Stephen
Axthelm,
Mark
Baker,
Christopher
Bank,
Bogdan
Baraszkiewicz,
Gary
Barber,
David
Baron,
Adam
Barth,
Aaron
Bassett,
Adrian
Bateman,
Matthias
Bauer,
Johannes
Behr,
John-Mark
Bell,
Robin
Berjon,
Arve
Bersvendsen,
Levent
Besik,
David
Bills,
Mark
Birbeck,
David
Bolter,
Anders
Bondehagen,
Marco
Bonetti,
Glenn
Bookout,
Sierk
Bornemann,
Denis
Boudreau,
Ben
Boyle,
River
Brandon,
Judy
Brewer,
Powell,
Alex
Milowski,
Andy
Seaborne,
Arto
Bendiken,
Austin
William,
BAI
Xi,
Benjamin
Adrian,
Benjamin
Nowack,
Bjoern
Hoehrmann,
Christian
Langanke,
Christoph
Lange,
Cindy
Lewis,
Corey
Mwamba,
Crisfer
Inmobiliaria,
Dan
Brickley,
Per-Erik
Brodin,
Thomas
Broyer,
Don
Brutzman,
Craig
Buckler,
Dick
Bulterman,
Daniel
Burnett,
Noel
Bush,
Andrew
Buzzell,
Craig
Cadwallader,
Sally
Cain,
Ben
Caldwell,
Brian
Campbell,
Carlos
Cardona,
Maurice
Carey,
Eric
Carlson,
Laura
Carlson,
Gavin
Carothers,
Wayne
Carr,
Tomas
Caspers,
James
Cassell,
Tantek
Çelik,
Namachivayam
Chelladurai,
David
Child,
Wendy
Chisholm,
Friesen,
Dave
Beckett,
David
Choi,
wu
chou,
Wood,
D.
Grant,
Dominik
Tomaszuk,
Dominique
Hazael-Massieux,
Doug
Schepers,
Dr.
Olaf
,
Edward
Cianci,
Michaeljohn
Clement,
Richard
Conyard,
Michael
Cooper,
Paul
Cotton
(chair),
Chris
Cressman,
Brendan
Cullen,
Joseph
D'Andrea,
Mohammed
DADAS,
Deborah
Dahl,
Erik
Dahlström,
David
Dailey,
Will
Daniels,
Ivan
De
Marino,
Tommaso
Donnarumma,
Chris
Double,
John
Drinkwater,
Marc
Drumm,
Mark
DuBois,
Karl
Dubost,
Andrew
Duck,
Clair
Dunn,
Henrik
Dvergsdal,
Dean
Edridge,
Anand
Samuel
Edwin,
Eric
Eggert,
S
Emerson,
Ivan
Enderlin,
Rob
Ennals,
Jean-Pierre
EVAIN,
Steve
Faulkner,
Andrew
Fedoniouk,
Alexey
Feldgendler,
Alejandro
Fernandez,
Ian
Fette,
Roy
Fielding,
Markus
Fischer,
David
Fisher,
Nick
Fitzsimons,
Mark
Foladare,
John
Foliot,
Kelly
Ford,
Jason
Fowler,
Geoff
Freed,
Matthew
Freels,
Steve
Gabrio,
Mike
Ganner,
Patrick
Garies,
Olivier
Gendrin,
Giovanni
Gentili,
Dragos
Georgita,
Dimitri
Glazkov,
Daniel
Glazman,
Eliot
Graff,
James
Graham,
Aryeh
Gregor,
Chris
Griego,
Jonathan
Griffin,
Guillaume
Guérin,
Jon
Gunderson,
Lars
Gunther,
Raghavan
Gurumurthy,
Markku
Hakkinen,
Marcin
Hanclik,
Matt
O'Connor,
Faye
Harris,
Chris
Hay,
Sean
Hayes,
Felix
Sasaki,
Gavin
Carothers,
Grant
Robertson,
Guus
Schreiber,
Harry
Halpin,
Michael
Hausenblas,
Henri
Bergius,
Henri
Sivonen,
Henry
Story,
Holger
Knublauch,
Ian
Hickson,
Thomas
Higginbotham,
Krijn
Hoetmer,
Laurens
Holst,
Mikko
Honkala,
Tobias
Horvath,
Peter
Howkins,
Raul
Hudea,
Dale
Hudjik,
Jon
Hughes,
Lachlan
Hunt,
David
Hyatt,
David
Håsäther,
Eihab
Ibrahim,
Kunter
Ilalan,
Toby
Inkster,
Patrick
D
F
Ion,
Erik
Isaksen,
Richard
Ishida,
Moto
Ishizawa,
Yudai
Iwasaki,
Dean
Jackson,
Justin
James,
Arthur
Jennings,
Arne
Johannessen,
Kenny
Johar,
Sam
Johnston,
Sam
Johnston,
Doug
Jones,
Wilhelm
Joys
Andersen,
Irene
Celino,
Alexander
Kroener,
Knud
Möller,
Philip
Jägenstedt,
Susanne
Jäger,
Yehuda
Katz,
Jeremy
Keith,
Serge
K.
Keller,
John
Kemp,
Kazuhito
Kidachi,
Don
Kiely,
Dowan
Kim,
Sebastian
Kippe,
Martin
Kliehm,
Egor
Kloos,
Graham
Klyne,
Justin
Anthony
Knapp,
Masatomo
Kobayashi,
Marcel
Koeppen,
Jirka
Kosek,
Anssi
Kostiainen,
Lee
Kowalkowski,
Michael
Kozakewich,
Maxim
Kozhuh,
Peter
Krantz,
Keith
Krieger,
Kris
Krueger,
Mayank
Kumar,
Michael
Köller,
Jonatan
Lander,
Lucas
Larson,
Bruce
Lawson,
Josh
Lawton,
Nicolas
LE
GALL,
Chasen
Le
Hara,
Philippe
Le
Hégaret,
Jane
Lee,
Kangchan
Lee,
WonSuk
Lee,
Niels
Leenheer,
Dean
Reto
Bachmann-Gmür,
Ivan
Mikhailov,
James
Leigh,
Travis
Leithead,
Gez
Lemon,
Kornel
Lesinski,
aurélien
levy,
Scott
Lewis,
Li
Li,
Danny
Liang,
Jake
Liddell,
Håkon
Wium
Lie,
Jedi
Lin,
Andy
Lintner,
Feng
Liu,
Jianjun
Liu,
Robert
Love,
Guillaume
Ludwig,
Andrew
Maben,
Shefik
Macauley,
Matthew
MacKenzie,
Krzysztof
Maczynski,
Vilem
Malek,
Murray
Maloney,
Jatinder
Mann,
Gabriel
Mansour,
Zhihong
Mao,
Bilgehan
Maras,
Chris
Marrin,
Robert
Marshall,
Andrew
Martin,
Alfonso
Martínez
de
Lizarrondo,
Luca
Mascaro,
Larry
Masinter,
Bill
Mason,
Matthew
May,
Cena
Mayo,
Charles
McCathieNevile,
Cameron
McCormack,
Martin
McEvoy,
Benjamin
Meadowcroft,
Shawn
Medero,
Reinier
Meenhorst,
Jeff
Sonstein,
Jeni
Tennison,
Jens
Meiert,
Jakob
Melander,
Markus
Mielke,
Ben
Millard,
Mark
Miller,
Ryan
Mitchell,
Katsuhiko
Momoi,
Stefan
More,
Terry
Morris,
Thomas
Morris,
Daniel
Morrison,
Simon
Myers,
Stuart
Myles,
Marco
Neumann,
Sharon
Newman,
Tom
Nguyen,
Andrey
Nikanorov,
Jer
Noble,
Andrew
Norman,
Joshue
O
Connor,
Robert
O'Callahan,
Edward
O'Connor,
Matt
Obee,
Frank
Olivier,
Ryan
Orr,
Debi
Orton,
Kulanthaivel
Palanichamy,
Frank
Palinkas,
Soohong
Daniel
Park,
Sylvain
Pasche,
Chris
Pearce,
Brian
Peppler,
Ariel
Pérez,
Adele
Peterson,
Silvia
Pfeiffer,
Simon
Pieters,
Benoit
Piette,
Thomas
Pike,
Gabriel
Pizzorno,
Andrew
Polk,
Andrei
Polushin,
Pasquale
Popolizio,
Harri
Porten,
Alexey
Proskuryakov,
Michael
Puls
II,
Juan
Quemada,
T.V.
Raman,
Andrew
Ramsden,
Arun
Ranganathan,
Marco
Ranon,
Matthew
Ratzloff,
Matthew
Raymond,
Ron
Reisor,
Daniel
Renfer,
Haupert,
Jochen
Rau,
John
Breslin,
John
Cowan,
John
O'Donovan,
Jonathan
Rees,
Julian
Reschke,
Cyra
Richardson,
Ole
Riesenberg,
Anders
Ringqvist,
Adam
Roben,
Alex
Robinson,
Jude
Robinson,
Leonard
Rosenthol,
Gregory
Rosmaita,
Tony
Ross,
Steven
Roussey,
Sam
Ruby
(chair),
Pietro
Russo,
Weston
Ruter,
Monikandan
S,
Lucas
Sa,
Rene
Saarsoo,
Sajid
Saiyed,
Janina
Sajka,
joaquin
Salvachua,
satish
sangaru,
Samuel
Santos,
Sorin
Sbarnea,
Daniel
Schattenkirchner,
Doug
Schepers,
Kai
Scheppe,
Christian
Schmidt,
Sebastian
Schnitzenbaumer,
Christopher
Schroeder,
Richard
Schwerdtfeger,
Gavin
Sharp,
Cynthia
Shelly,
Jonas
Sicking,
Andrew
Sidwell,
KANZAKI
Masahide,
Kingsley
Idehen,
Knud
Hinnerk,
Landong
Zuo,
Leif
Halvard
Silli,
David
Singer,
Henri
Sivonen,
Brian
Skahan,
Kenneth
Sklander,
Dan
Smith,
Dylan
Smith,
Michael(tm)
Smith
(staff
contact),
Sam
Sneddon,
Gnanasekar
S
Somanathan,
Manu
Sporny,
Elliott
Sprehn,
Liam
R.,
Lin
Clark,
Maciej
Stachowiak
(chair),
Vicki
Stanton,
Hallvord
Steen,
Johnny
Stenback,
Robert
Stern,
Peter
Stewart,
Stephen
Stewart,
Andrew
Stibbard,
Bruce
Stockwell,
Motti
Strom,
Oli
Studholme,
Mihai
Sucan,
Bryan
Sullivan,
Marat
Tanalin,
Mike
Taylor,
Philip
Taylor,
Sander
Tekelenburg,
Shane
Thacker,
Nik
Thierry,
Morten
Tollefsen,
Dominik
Tomaszuk,
Dzung
Tran,
Monika
Trebo,
Stachowiak,
Mark
Turnage,
Jason
Turnbull,
Scott
Turner,
Michael
Turnwall,
Matthew
Turvey,
Asbjørn
Ulsberg,
Wesley
Upchurch,
Ojan
Vafai,
Erik
van
Kempen,
Anne
van
Kesteren,
Sander
van
Lambalgen,
Charl
van
Niekerk,
Tim
van
Oostrom,
Christopher
Varley,
Jean-Charles
Verdié,
John
Vernaleo,
Scott
Vesey,
Sigbjørn
Vik,
Laurent
Vilday,
Kent
Villard,
Jace
Voracek,
David
Voth,
Vladimir
Vukicevic,
Johnson
Wang,
Martijn
Wargers,
Jonathan
Watt,
Kyle
Weems,
Samuel
Weinig,
Ian
Wessman,
Ben
West,
Jason
White,
Nottingham,
Markus
Gylling,
Martin
Hepp,
Martin
McEvoy,
Matthias
Tylkowski,
Darin
McBeath,
Melvin
Carvalho,
Michael
Whitley,
Joe
Williams,
Andrew
Wilson,
Chris
Wilson,
Doug
Wright,
Han
Xu,
Mateo
Yadarola,
Masataka
Yakura,
Channy
Yun,
Chan,
Michael
Zajac,
Boris
Zbarsky,
Milan
Zoufal,
Hausenblas,
Michael
zur
Muehlen
Steidl,
Michael™
Smith,
Mischa
Tuffield,
Misha
Wolf,
Nathan
Rixham,
Nathan
Yergler,
Nicholas
Stimpson,
Noah
Mendelsohn,
Paul
Cotton,
Paul
Sparrow,
Pete
Cordell,
Peter
Frederick,
Peter
Mika,
Phil
Archer,
Reece
Dunn,
Richard
Cyganiak,
Robert
Leif,
Robert
Weir,
Ramanathan
V.
Guha,
Sami
Korhonen,
Sam
Ruby,
Sandro
Hawke,
Sebastian
Germesin,
Sebastian
Heath,
Shelley
Powers,
Simon
Grant,
Simon
Reinhardt,
Stefan
Schumacher,
Tab
Atkins
Jr.,
Thomas
Adamich,
Thomas
Baker,
Thomas
Roessler,
Thomas
Steiner,
Tim
Berners-Lee,
Toby
Inkster,
Tom
Adamich,
Tantek
Çelik,
Ville
Skyttä,
Wayne
Smith,
and
Will
Clark