I’ve put up a second spec for TDL 3. It’s still a bit sketchy in areas, but I think it has enough information to be useable. The biggest change since the last update is that I’ve decided not to switch to a new namespace. Despite having a new threading model, TDL 3 doesn’t actually redefine any of the terms in the TDL namespace; it just drops old terms and introduces new ones. Thus, it can coexist with the older TDL vocabularies in the same namespace.
This has meant that I ended up changing a few more terms than I anticipated.
For example, the TDL 2 schema defines the range of tdl:agreesWith
as rdf:Resource
,
which means I can’t make it a sub-property of tdl:respondsTo
in TDL 3, because
its range is narrower (tdl:Post
). Thus, I’ve introduced a new term,
tdl:respondsPositivelyTo
, which is a sub-property of tdl:respondsTo
and
tdl:agreesWith
.
That brings me to my other semi-exciting news: I’ve posted OWL DL schemas for all three versions of TDL in RDF/XML and RDF/Turtle formats (see the TDL home page). This is mostly for the benefit of OWL DL users, who can use TDL without having to enter the scary world of OWL Full. Unfortunately, OWL’s power doesn’t really apply to relation-oriented vocabularies like TDL.
Compatibility
In addition to not changing the namespace, I’ve taken steps to provide some forward- and backward-compatibility. As I see it, there are two scenarios to be concerned about.
An example of a backward-compatibility scenario is a TDL 2-aware processor coming across some TDL 3 data:
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix tdl: <http://www.eyrie.org/~zednenem/2002/web-threads/>.
<> owl:imports
<http://www.eyrie.org/~zednenem/2002/web-threads/tdl-3.rdf>.
<http://example.org/post/53> a tdl:Post
; tdl:respondsTo <http://example.org/post/49>
; tdl:mentions <http://example.org/post/10>
.
Without doing anything, it knows that <a href="http://example.org/post/53">http://example.org/post/53</a>
is
a Post, because TDL 2 and 3 use the same term. The tdl:respondsTo
and
tdl:mentions
relations aren’t defined by TDL 2, but if the agent imports
the TDL 3 schema, it can determine that tdl:respondsTo
is a sub-property
of tdl:commentsOn
, which is defined by TDL 2. The tdl:mentions
relation, however, can’t be described in terms of TDL 2.
An example of the forward-compatibility case is a TDL 3-aware processor encountering TDL 1 data. In theory, a TDL 3 processor could be programmed to understand TDL 1, but TDL 1 is so bloated that skipping support for it is reasonable. Using the TDL 3 schema, some terms can be understood anyway. For example:
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix tdl: <http://www.eyrie.org/~zednenem/2002/web-threads/>.
<> owl:imports
<http://www.eyrie.org/~zednenem/2002/web-threads/tdl-1.rdf>.
<http://example.org/post/10> a tdl:Post
; tdl:prev <http://example.org/post/9>
; tdl:commentsOn <http://example.org/post/5>
.
Again, tdl:Post
is the same for every version of TDL. Using the
forward-compatibility hooks in the TDL 3 schema along with the
TDL 1 schema, a TDL 3 agent could determine that tdl:prev
and
tdl:commentsOn
are sub-properties of tdl:follows
and
tdl:mentions
, respectively.