Skip to content

Latest commit

 

History

History
82 lines (61 loc) · 4 KB

sep_050.md

File metadata and controls

82 lines (61 loc) · 4 KB

SEP 050 -- Remove the Namespace object

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

Abstract

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.

1. Rationale


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.

2. Specification


Remvoe the Namespace object

The Namespace object will be removed.

Change to TopLevel

The TopLevel object will have a new hasNamespace property that is REQUIRED and is of type URI.

3. Example or Use Case


4. Backwards Compatibility


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.

5. Discussion


6. Competing SEPs


None.

References

None.

Copyright

CC0
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.