-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathmapping.tex
136 lines (122 loc) · 12.1 KB
/
mapping.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
\section{Mapping Between SBOL 1, SBOL 2, and SBOL3}
\label{sec:mapping}
In broad strokes, the SBOL 1 standard focused on conveying physical, structural information, whereas SBOL 2 expanded the scope to include functional aspects as well.
The physical information about a designed genetic construct includes the order of its constituents and their descriptions.
Specifying the exact locations of these constituents and their sequences allows genetic constructs to be defined unambiguously and reused in other designs.
SBOL 2 extended SBOL 1 in several ways: it extends physical descriptions to include entities beyond DNA sequences, and it added support for functional descriptions of designs.
SBOL 3 refines the SBOL 2 data model to simplify the representation of common use cases.
\subsection{Mapping between SBOL 1 and SBOL 2}
\ref{SBOL1TO2} depicts the mapping of SBOL 1.1 classes to SBOL 2.x classes, indicating corresponding classes/properties by color.
The SBOL 2.x \external{Model} and \external{ModuleDefinition} classes have no SBOL 1.1 equivalent, and thus are not shown.
The mapping from SBOL 1.1 to SBOL 2.x proceeds as follows:
\begin{itemize}
\item SBOL 1.1 \external{Collection} objects containing \external{DnaComponent} objects map to SBOL 2.x \external{Collection} objects that contain \external{ComponentDefinition} objects with DNA \sbolmult{type:C}{type} properties.
\item SBOL 1.1 \external{DnaComponent} objects map to SBOL 2.x \external{ComponentDefinition} objects with DNA \sbolmult{type:C}{type} properties.
\item SBOL 1.1 \external{DnaSequence} objects map to an SBOL 2.x \external{Sequence} objects with \external{IUPAC DNA} \external{encoding} properties.
\item SBOL 1.1 \external{SequenceAnnotation} objects with \external{bioStart} and \external{bioEnd} properties map to SBOL 2.x\\
\external{SequenceAnnotation} objects that contain \external{Range} objects.
\item SBOL 1.1 \external{SequenceAnnotation} objects that lack \external{bioStart} and \external{bioEnd} properties map to an SBOL 2.x \external{SequenceFeature} objects that contain \external{GenericLocation} objects.
\item Each SBOL 1.1 \external{SequenceAnnotation} also maps to an SBOL 2.x \external{Component}, which represents the instantiation or usage of the appropriate \external{ComponentDefinition}.
\item Each SBOL 1.1 \external{precedes} property maps to an SBOL 2.x \external{SequenceConstraint} that specifies a \external{precedes} \external{restriction} property.
\end{itemize}
\begin{figure*}[htp]
\begin{center}
\includegraphics[width=0.95\textwidth]{images/sbol_v1_to_v2}
\end{center}
\caption{\label{SBOL1TO2}The mapping from the SBOL 1.1 data model to the SBOL 2.x data model, indicating corresponding classes/properties by color.}
\end{figure*}
\subsection{Mapping between SBOL 2 and SBOL 3}
The base classes of \sbol{Identified} and \sbol{TopLevel} vary in the following ways between SBOL 2.x and SBOL 3.x:
\begin{itemize}
\item SBOL 3.x uses IRIs while SBOL 2.x uses URIs, which are a strict subset of IRIs.
In practice, however, many existing SBOL 2 tools actually provide support for IRIs and not just URIs.
Accordingly, conversion from SBOL 3.x to SBOL 2.x SHOULD map all IRIs to URIs and conversion from SBOL 2.x to SBOL 3.x MAY convert escaped unicode characters into non-escaped characters in an IRI.
\item The SBOL 2.x \sbol{Identified} property \external{persistentIdentity} maps to the SBOL 3.x \sbol{identity} property. The \external{version} property does not exist in SBOL 3.x, but SHOULD be retained through conversion to support conversion back to SBOL 2.x.
\item When SBOL 3.x \sbol{Identified} object is converted to SBOL 2.x, if its \sbol{identity} is a URL, then the \sbol{identity} of the SBOL 2.x object SHOULD be constructed as \texttt{[SBOL3 identity]/[SBOL2 version]}. If the object does not have an SBOL2 \external{version} property, then its \external{version} SHOULD default to 1.
\item The SBOL 3.x \sbol{TopLevel} property \sbol{hasNamespace} does not exist in SBOL 2, and cannot be inferred from an SBOL 2 URI. When converting from SBOL 3.x to SBOL 2.x, the \sbol{hasNamespace} property SHOULD be retained to support conversion back to SBOL 3.x.
\end{itemize}
\ref{SBOL2TO3} depicts the mapping of SBOL 2.3 classes to SBOL 3.x classes, indicating corresponding classes/properties by color.
The SBOL 2.x \sbol{Attachment}, \sbol{CombinatorialDerivation}, \sbol{ExperimentalData}, \sbol{Experiment}, \sbol{Implementation}, \sbol{Model}, \sbol{Participation}, \\
\sbol{Sequence}, and \sbol{VariableFeature} classes are omitted or abstracted, since they are essentially unchanged in SBOL 3.x except for the following minor changes:
\begin{itemize}
\item In \sbol{Sequence}, the \sbol{encoding} property values map according to \ref{tbl:sequence_encoding_mapping}.
\item The SBOL 2.x \external{VariableComponent} class has been renamed \sbol{VariableFeature}.
\item In \external{VariableComponent}, the SBOL 2.x \external{operator} property maps to the SBOL 3.x \sbol{cardinality} property.
\item In \external{VariableComponent}, the \sbol{variantMeasure} property has been added, which does not exist in SBOL 2.x.
\item In \sbol{Experiment}, the SBOL 2.x \external{experimentalData} property maps to the SBOL 3.x \sbol{member} property.
\item In \sbol{Location}, the SBOL 2.x \external{sequence} property maps to an SBOL 3.x \sbolmult{hasSequence:L}{hasSequence} property.
If there \external{sequence} property was not set, then the \sbolmult{hasSequence:L}{hasSequence} property is set to one of the values of the \external{sequences} property of the \external{ComponentDefinition} that contained the SBOL 2.x \sbol{Location}.
If there is more than one value for \external{sequences}, behavior is left deliberately unspecified, and is allowed to be considered an error condition.
\end{itemize}
The mapping from SBOL 2.x to SBOL 3.x proceeds as follows:
\begin{itemize}
\item SBOL 2.x \external{ComponentDefinition} objects map to SBOL 3.x \sbol{Component} objects. The \sbolmult{type:C}{type} property is mapped according to \ref{tbl:component_type_mapping}.
\item SBOL 2.x \external{ModuleDefinition} objects map to SBOL 3.x \sbol{Component} objects with a \sbolmult{type:C}{type} of \texttt{SBO:0000241} (functional entity)
\item Every \external{FunctionalComponent} in an SBOL 2.x \external{ModuleDefinition} with a "direction" property that is not "none" is listed in the \sbol{Interface} of its SBOL 3.x \sbol{Component}. The mapping from direction to interface properties is: "in"-->"inputs", "out"-->"outputs", "inout" --> "nondirectional". Finally, every Component with "access"="public" and "direction"="none" is listed as "nondirectional" in the Interface.
\item Every \external{Component} in an SBOL 2.x \external{ComponentDefinition} with "access"="public" is listed as "nondirectional" in the \sbol{Interface} of its SBOL 3.x \sbol{Component}.
\item SBOL 2.x \external{Component}, \external{Module}, and \external{FunctionalComponent} objects map to SBOL 3.x \sbol{SubComponent} objects
\item SBOL 2.x \external{SequenceAnnotation} objects map to SBOL 3.x \sbol{SequenceFeature} objects if they do not have a \external{component}. If they do have a \external{component}, their locations are added to the corresponding SBOL3 \sbol{SubComponent}.
% \item \external{Location} objects are assigned an \sbol{order} integer. In the case of multiple locations, the order may be inferred, e.g. from the \external{start} and \external{end} properties of ranges. However, such behavior is tooling-specific.
\item SBOL 2.x \external{SequenceConstraint} objects map to SBOL 3.x \sbol{Constraint} objects
\item SBOL 2.x \external{MapsTo} objects are converted by transforming each \external{MapsTo} into two SBOL 3.x objects: \\ a \sbol{ComponentReference} and a \sbol{Constraint}.
\begin{itemize}
\item For the \sbol{ComponentReference}, the \sbol{inChildOf} attribute of this \sbol{ComponentReference} attribute references the object that has the \external{MapsTo} as a child, and the \sbol{refersTo} attribute references the object referred by the \external{remote} attribute from the \external{MapsTo} object.
\item The \sbol{Constraint} links this \sbol{ComponentReference} and the \sbol{SubComponent} referred to be the \external{local} attribute from the \external{MapsTo} object. The property values of the \sbol{Constraint} depend on the value of the \external{refinement} value for the \external{MapsTo} object:
\begin{itemize}
\item If the refinement is \external{useRemote}, then the \sbol{restriction} is \external{replaces}, the \sbol{subject} is the \\ \sbol{ComponentReference} and the \sbol{object} is the \sbol{SubComponent}.
\item If the refinement is \external{useLocal}, then the \sbol{restriction} is \external{replaces}, the \sbol{subject} is the \sbol{SubComponent} and the \sbol{object} is the \sbol{ComponentReference}.
\item If the refinement is \external{verifyIdentical}, then the \sbol{restriction} is \external{verifyIdentical}, the \sbol{subject} is the \sbol{ComponentReference} and the \sbol{object} is the \sbol{SubComponent}.
\item The \external{merge} \external{refinement} was never well defined and rarely if ever used, so it has been removed from SBOL 3.x. If a \external{merge} is encountered, it SHOULD be handled as a \external{useRemote}.
\end{itemize}
\item As an OPTIONAL optimization, if the \sbol{SubComponent} referred to by the \external{local} property of the \external{MapsTo} is a ``placeholder'' with no significant content apart from its \external{MapsTo} relationships, then it may be eliminated, all objects that pointed to it can point directly to the new \sbol{ComponentReference} instead, and all transitive constraints using it as a bridge reduced to link the endpoints directly.
\end{itemize}
\end{itemize}
\begin{table}[ht]
{\scriptsize
\begin{edtable}{tabular}{ll}
\toprule
\textbf{SBOL 2.x Type} & \textbf{SBOL 3.x Type} \\
\midrule
\url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html} & \url{https://identifiers.org/edam:format_1207}\\
\url{http://www.chem.qmul.ac.uk/iupac/AminoAcid/} & \url{https://identifiers.org/edam:format_1208}\\
\url{http://www.opensmiles.org/opensmiles.html} & \url{https://identifiers.org/edam:format_1196}\\
\bottomrule
\end{edtable}
}
\caption{Mapping of \sbol{Sequence} \sbol{encoding} values from SBOL2 to SBOL3}
\label{tbl:sequence_encoding_mapping}
\end{table}
\begin{table}[htp]
{\scriptsize
\begin{edtable}{tabular}{ll}
\toprule
\textbf{SBOL 2.x Type} & \textbf{SBOL 3.x Type} \\
\midrule
\url{http://www.biopax.org/release/biopax-level3.owl\#Dna} & \url{https://identifiers.org/SBO:0000251} (DNA)\\
\url{http://www.biopax.org/release/biopax-level3.owl\#DnaRegion} & \url{https://identifiers.org/SBO:0000251} (DNA)\\
\url{http://www.biopax.org/release/biopax-level3.owl\#Rna} & \url{https://identifiers.org/SBO:0000250} (RNA)\\
\url{http://www.biopax.org/release/biopax-level3.owl\#RnaRegion} & \url{https://identifiers.org/SBO:0000250} (RNA)\\
\url{http://www.biopax.org/release/biopax-level3.owl\#Protein} & \url{https://identifiers.org/SBO:0000252} (Protein)\\
\url{http://www.biopax.org/release/biopax-level3.owl\#SmallMolecule} & \url{https://identifiers.org/SBO:0000247} (Simple Chemical)\\
\url{http://www.biopax.org/release/biopax-level3.owl\#Complex} & \url{https://identifiers.org/SBO:0000253} (Non-covalent Complex)\\
\bottomrule
\end{edtable}
}
\caption{Mapping of SBOL2 \external{ComponentDefinition} types to SBOL3 \sbol{Component} types}
\label{tbl:component_type_mapping}
\end{table}
\begin{figure*}[htp]
\begin{subfigure}{\textwidth}
\centering
\includegraphics[width=0.75\linewidth]{uml/sbol_v2_to_v3_left_subfigure}
\caption{SBOL 2.3}
\label{fig:sub-first}
\end{subfigure}\\
\begin{subfigure}{\textwidth}
\centering
\includegraphics[width=0.75\linewidth]{uml/sbol_v2_to_v3_right_subfigure}
\caption{SBOL 3.x}
\label{fig:sub-second}
\end{subfigure}
\caption{\label{SBOL2TO3}The mapping from the SBOL 2.3 data model to the SBOL 3.x data model, indicating corresponding classes/properties by color.}
\end{figure*}