[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Usage Scenarios for Versioning and Extensibility
Mark Nottingham wrote:
> I'd like to make this a bit more concrete.
I think some, maybe all, of these could be handled using OWL constructs.
>
> 1) And it was good... except for that nasty atom:title element; after
wide deployment experience, it's agreed we need a new version of it. So,
a new version of Atom is introduced. The new one isn't
backwards-compatible with the old one.
Create a new namespace with copies of all elements. Write an OWL schema
that declares all elements except atom:title to be owl:equivalentClass
or owl:equivilentProperty to the relevant element in the in Atom 1.0
namespace.
Consumers use the schema to define rules in their applications, either
dynamically or just by hard coding them after readint the schema. When
the application looks for particular elements it must also look for
those that have been declared equivilent to the element they need.
Use owl:DeprecatedClass or owl:DeprecatedProperty to declare that
previous atom:title has been retired.
Use owl:incompatibleWith on the schema to declare that new version of
Atom is not backwards compatible. Consumers now should be aware that
semantics of Atom may have changed.
>
> 2) Then, we decide we want to add a new metadata element, let's call
it "fog." So, a new version of Atom is introduced.
An addition of an optional element is a non-breaking change so add it to
current namespace. Use owl:backwardCompatibleWith to declare that new
version of Atom is in every respect backwards compatible.
If element is non-optional, it's a breaking change so use
owl:incompatibleWith instead.
> 3) After a while, someone comes up with a souped-up version of
atom:title that is backwards-compatible, just *better*. It gets really
popular, and yet another version of Atom is born.
Create a new namespace. Declare all equivilent elements in the same way
as scenario 1. Declare oldatom:title to be a subClassOf newatom:title,
i.e. every oldatom:title is a newatom:title but not every newatom:title
is an oldatom:title since the new one is *better*.
Use owl:backwardCompatibleWith on the schema to declare that new version
of Atom is in every respect backwards compatible.
> 4) At the same time, a group of rogue Open Source Software
programmers descends upon this idyllic scene and introduces its own
extensions. Up until now, all of our extensions have been approved and
incorporated by the WG, but these are destined to remain separate.
They create a new namespace and their own OWL schema. They're free to
subclass or equate any elements they want.
> 5) Finally, in 2010, we realise that the Atom feed and entry
containers aren't really doing the job, and we need to change their
model. Yet Another Version of Atom (YAVA) comes into being.
New namespace, new OWL schema. Use owl:incompatibleWith.
Just one way to do it I'm sure.
Ian