Skip to content

Commit

Permalink
Implement SEP 050, removing Namespace object
Browse files Browse the repository at this point in the history
  • Loading branch information
Jake Beal committed Nov 20, 2020
1 parent cb8b50c commit 6fe1e62
Show file tree
Hide file tree
Showing 6 changed files with 15 additions and 61 deletions.
1 change: 0 additions & 1 deletion mapping.tex
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ \subsection{Mapping between SBOL 1 and SBOL 2}
\subsection{Mapping between SBOL 2 and SBOL 3}

\ref{SBOL2TO3} depicts the mapping of SBOL 2.3 classes to SBOL 3.x classes, indicating corresponding classes/properties by color.
The SBOL 3.x \sbol{Namespace} class has no SBOL 2.x equivalent, and thus is not shown.
The SBOL 2.x \sbol{Attachment}, \sbol{CombinatorialDerivation}, \sbol{ExperimentalData}, \sbol{Experiment}, \sbol{Implementation}, \sbol{Model}, \sbol{Participation}, \\
\sbol{Sequence}, and \threezeroone{\st{VariableComponent}} \sbol{VariableFeature} classes are omitted or abstracted, since they are essentially unchanged in SBOL 3.x except for the following minor changes:
\begin{itemize}
Expand Down
4 changes: 2 additions & 2 deletions practices.tex
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ \subsection{Compliant SBOL Objects}
\refObj{namespace}/\refObj{collection\_structure}/\refObj{displayId}
\end{quotation}

The \refObj{namespace} token MAY further decompose into \refObj{domain}/\refObj{root} tokens. The \refObj{root} and \refObj{collection\_structure} tokens may optionally be omitted; alternatively, they may consist of an arbitrary number of delimiter-separated layers. Note that this pattern means that SBOL-compliant \sbol{URI}s can be automatically decomposed with the aid of a \sbol{Namespace}. SBOL-compliant objects can be easily remapped into new namespaces by changing only the \refObj{namespace}.
The \refObj{namespace} token MAY further decompose into \refObj{domain}/\refObj{root} tokens. The \refObj{root} and \refObj{collection\_structure} tokens may optionally be omitted; alternatively, they may consist of an arbitrary number of delimiter-separated layers. Note that this pattern means that SBOL-compliant \sbol{URI}s can be automatically decomposed with the aid of a \sbol{TopLevel} object's \sbol{hasNamespace} property. SBOL-compliant objects can be easily remapped into new namespaces by changing only the \refObj{namespace}.

Consider, for example, the SBOL-compliant \sbol{URI}:
\begin{quote}``https://synbiohub.org/igem/2017\_distribution/promoters/constitutive/BBa\_J23101''\end{quote}
in \sbol{Namespace} ``https://synbiohub.org/igem/2017\_distribution''.
for a \sbol{Component} with a \sbol{hasNamespace} value ``https://synbiohub.org/igem/2017\_distribution''.
This \sbol{URI} can be decomposed as follows:
\begin{quote}
namespace: ``https://synbiohub.org/igem/2017\_distribution'' \linebreak
Expand Down
12 changes: 2 additions & 10 deletions topLevel.tex
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,12 @@

\threezeroone{\subparagraph{The hasNamespace property}
\label{sec:hasNamespace}
A \sbol{TopLevel} object MUST have precisely one \sbol{hasNamespace} property, pointing to the \sbol{Namespace} object that defines the namespace portion of URLs for this object and any child objects.
If the URI for the \sbol{TopLevel} object is a URL, then the URI of the \sbol{Namespace} MUST prefix match that URL.
A \sbol{TopLevel} object MUST have precisely one \sbol{hasNamespace} property, which contains a \sbol{URI} that defines the namespace portion of URLs for this object and any child objects.
If the URI for the \sbol{TopLevel} object is a URL, then the URI of the \sbol{hasNamespace} property MUST prefix match that URL.

Note that the requirement for a \sbol{hasNamespace} property holds even for objects with URIs that are not URLs, in order to allow them to be copied into datastores that use URLs. In this case, however, there is no prefix requirement.}


\subparagraph{The hasAttachment property}
\label{sec:hasAttachment}
A \sbol{TopLevel} object can have zero or more \sbol{hasAttachment} properties, each of type URI specifying an \sbol{Attachment} object. The \sbol{Attachment} class is described in more detail in~\ref{sec:Attachment}.


\subsection{Namespace}
\label{sec:Namespace}

The \sbol{Namespace} class is a simple placeholder that serves as a shared target for the \sbol{hasNamespace} properties of \sbol{TopLevel} objects.
Note that as a \sbol{TopLevel} object itself, a \sbol{Namespace} has a \sbol{hasNamespace} property that must point to itself.

Binary file modified uml/toplevel.pdf
Binary file not shown.
57 changes: 10 additions & 47 deletions umlet_source/toplevel.uxf
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,22 @@
<element>
<type>com.baselet.element.old.element.Class</type>
<coordinates>
<x>407</x>
<y>231</y>
<w>286</w>
<h>33</h>
<x>418</x>
<y>209</y>
<w>275</w>
<h>55</h>
</coordinates>
<panel_attributes>/*TopLevel*/

--
-hasNamespace[1] : URI
</panel_attributes>
<additional_attributes/>
</element>
<element>
<type>com.baselet.element.old.element.Class</type>
<coordinates>
<x>495</x>
<y>154</y>
<x>506</x>
<y>132</y>
<w>110</w>
<h>33</h>
</coordinates>
Expand All @@ -30,8 +31,8 @@
<element>
<type>com.baselet.element.old.element.Relation</type>
<coordinates>
<x>517</x>
<y>154</y>
<x>528</x>
<y>132</y>
<w>54</w>
<h>98</h>
</coordinates>
Expand Down Expand Up @@ -311,42 +312,4 @@ hasAttachment
</panel_attributes>
<additional_attributes/>
</element>
<element>
<type>com.baselet.element.old.element.Class</type>
<coordinates>
<x>242</x>
<y>297</y>
<w>99</w>
<h>33</h>
</coordinates>
<panel_attributes>*Namespace*


</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>187</x>
<y>231</y>
<w>242</w>
<h>110</h>
</coordinates>
<panel_attributes>lt=&lt;&lt;&lt;&lt;-&gt;
hasNamespace
1</panel_attributes>
<additional_attributes>200.0;10.0;10.0;10.0;10.0;80.0;50.0;80.0</additional_attributes>
</element>
<element>
<type>com.baselet.element.old.element.Relation</type>
<coordinates>
<x>308</x>
<y>231</y>
<w>131</w>
<h>109</h>
</coordinates>
<panel_attributes>lt=&lt;&lt;-</panel_attributes>
<additional_attributes>110;33;110;88;33;88</additional_attributes>
</element>
</diagram>
2 changes: 1 addition & 1 deletion vocabulary.tex
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ \subsection{Uniform Resource Identifiers}

For example, a \sbol{Component} might have the URL~\path{https://synbiohub.org/public/igem/BBa_J23070}, where \texttt{namespace} is \path{https://synbiohub.org}, \texttt{local} is \path{public/igem}, and \texttt{displayId} is \path{BBa_J23070}.

\item A \sbol{TopLevel} object's URL MUST NOT be included as prefix for any other \sbol{TopLevel} object (except for \threezeroone{\st{its controlling}} \threezeroone{a \sbol{Namespace} object, which instead MUST be the prefix of all objects for which it is the namespace).}
\item A \sbol{TopLevel} object's URL MUST NOT be included as prefix for any other \sbol{TopLevel} object.

For example, the \path{BBa_J23070_seq} \sbol{Sequence} object cannot have a URL of \path{https://synbiohub.org/public/igem/BBa_J23070/BBa_J23070_seq}, since the \path{https://synbiohub.org/public/igem/BBa_J23070} prefix is already used as a URL for the \path{BBa_J23070} \sbol{Component} object.

Expand Down

0 comments on commit 6fe1e62

Please sign in to comment.