SynBioDex / SBOL-specification

The Synthetic Biology Open Language (SBOL)
http://sbolstandard.org
13 stars 9 forks source link

Problem with Namespace object URI #422

Closed cjmyers closed 3 years ago

cjmyers commented 3 years ago

URIs in SBOL3 are expected to be of the form: \<namespace>/\<local>/\<displayId> with \<namespace> and \<displayId> being required. This is problematic for Namespace objects that are specified to have the URI , which is currently not allowed. There are three possible solutions to this problem:

1) Add a special case to allow Namespace objects to not have a \<displayId>.

2) Add a new attribute \<prefix> to Namespace objects, which is the \<namespace>, and then have the Namespace objects have URIs that meet the required form, which would be \<prefix>/\<local>/\<displayId>.

3) Remove the Namespace object, and use the \<hasNamespace> property simply be the \<namespace> part of the URI.

cjmyers commented 3 years ago

My preference is for option 3. This is the cleanest, and it makes it simply to update the namespace of objects, when for example, they are copied into a repository like SynBioHub.

The problem that I have with option 1 is that special cases make validation and other library functions more complicated and more error prone. The problem that I have with option 2 is that it requires fetching the Namespace object to learn the prefix of an object, once again making validation and other library functions more complicated. The downside of option 3 is that we would no longer be able to add attributes like descriptions to Namespace objects, but I suspect that this was not likely to be a commonly used feature and does not outweigh, in my opinion the problems it raises.

tcmitchell commented 3 years ago

I've been holding off on implementing the draft Namespace change in pySBOL3 because it feels overly complicated. I like option 3 because it feels lightweight and makes validation easier.

jamesamcl commented 3 years ago

Happy with 1 or 3 - don't like 2 much as it would introduce another unnecessary URI.

jakebeal commented 3 years ago

I was the one who proposed option 2, and am definitely anti option 1 (I don't think anybody likes option 1).

I think I can be OK with option 3 as well. My reluctance comes from the fact that I fear we might find ourselves needing an object to hang other properties on at some point.

cjmyers commented 3 years ago

Do you think we need an SEP for this? We can do it, but I expect that we will not get much of a voter turnout, and I think all that have an issue with this have replied to this thread or participated in the discussion this morning.

jakebeal commented 3 years ago

We need to have a vote on SEP 049 anyway, so if this can move quickly they can be bundled together.

cjmyers commented 3 years ago

Ok, I've created SEP 050.

jakebeal commented 3 years ago

This has been merged in except for the validation rules, which are still pending in #424