SEP | |
---|---|
Title | Remove Namespace object |
Authors | Chris Myers ([email protected]) |
Editor | James McLaughlin ([email protected]) |
Type | Data Model |
SBOL Version | SBOL 3.0.1 |
Replaces | |
Status | Accepted |
Created | 28-Oct-2020 |
Last modified | 28-Oct-2020 |
Issue | #105 |
SBOL 3.0 set up Namespace to point to objects in the same namespace, which tends to make Namespace objects extremely large. SEP 047 changed it so that objects should point to their Namespace. This SEP proposes to go now remove the Namespace object, as its function has become largely obsolete.
In SBOL 3.0, we introduced the concept of a Namespace, which facilitates URI rewriting. During implementation, we realized that it would be useful to make the relationship between a Namespace and an TopLevel object in that Namespace explicit.
As the concept is having TopLevels in Namespaces, we implemented this by having Namespace be a subclass of Collection, with its members being an inventory of the TopLevels in the namespace.
Pragmatically, however, this was a mistake. This will make Namespace objects very large and require them to be updated whenever a new object is added to the Namespace. It will also make it impossible to directly verify if an object is assigned to a Namespace or not, as an object can be created without reference in a Namespace.
This was readily amended by SEP 047 by changing the membership to point the other way with a new hasNamespace attribute refering to the part of the URI that is the namespace. This change, however, has made the namespace object obsolete. Furthermore, the Namespace object URI complicates the restricted definition of URIs that was agreed to in SBOL 3. Namely, all URIs must be of the form <namespace>/<local>/<displayId>, with the namespace and displayId required. At the same time, the URI of the Namespace is supposed to be <namespace>. In order to avoid needing to complicate the definition of URIs with this special case, it is simpler to just remove the Namespace object, and allow the hasNamespace attribute indicate the part of the URI that is the namespace for that object.
The Namespace object will be removed.
The TopLevel object will have a new hasNamespace
property that is REQUIRED and is of type URI.
This is not backward compatible with the current state of SBOL 3.0, and thus needs to be adopted before the first SBOL 3 implementations are complete.
None.
None.
To the extent possible under law,
SBOL developers
has waived all copyright and related or neighboring rights to
SEP 047.
This work is published from:
United States.