From 014494a7f6472bedddb4a4604f6717d7cd3ac411 Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Mon, 16 Feb 2015 12:30:17 +0000 Subject: [PATCH 001/317] v1 --- logos/sbol-logo.jpg | Bin 0 -> 23991 bytes sbmlpkgspec.cls | 1144 ++++++++++++++++++++++ sbol2.tex | 497 ++++++++++ uml/component_definition.png | Bin 0 -> 14634 bytes uml/component_instance.png | Bin 0 -> 11238 bytes uml/generictoplevel.png | Bin 0 -> 3307 bytes uml/identified_annotations.png | Bin 0 -> 6039 bytes uml/identified_documented_annotation.png | Bin 0 -> 12224 bytes uml/interaction.png | Bin 0 -> 5158 bytes uml/location.png | Bin 0 -> 10952 bytes uml/maps_to.png | Bin 0 -> 5833 bytes uml/model.png | Bin 0 -> 4283 bytes uml/module.png | Bin 0 -> 6586 bytes uml/module_definition.png | Bin 0 -> 10849 bytes uml/participation.png | Bin 0 -> 5552 bytes uml/sequence.png | Bin 0 -> 3782 bytes uml/sequence_annotation.png | Bin 0 -> 7039 bytes uml/sequence_constraint.png | Bin 0 -> 6276 bytes uml/toplevel_collection.png | Bin 0 -> 7030 bytes 19 files changed, 1641 insertions(+) create mode 100644 logos/sbol-logo.jpg create mode 100644 sbmlpkgspec.cls create mode 100644 sbol2.tex create mode 100644 uml/component_definition.png create mode 100644 uml/component_instance.png create mode 100644 uml/generictoplevel.png create mode 100644 uml/identified_annotations.png create mode 100644 uml/identified_documented_annotation.png create mode 100644 uml/interaction.png create mode 100644 uml/location.png create mode 100644 uml/maps_to.png create mode 100644 uml/model.png create mode 100644 uml/module.png create mode 100644 uml/module_definition.png create mode 100644 uml/participation.png create mode 100644 uml/sequence.png create mode 100644 uml/sequence_annotation.png create mode 100644 uml/sequence_constraint.png create mode 100644 uml/toplevel_collection.png diff --git a/logos/sbol-logo.jpg b/logos/sbol-logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..edf21076e9e88fae57cb3194754911d393f734fd GIT binary patch literal 23991 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 literal 0 HcmV?d00001 diff --git a/sbmlpkgspec.cls b/sbmlpkgspec.cls new file mode 100644 index 00000000..895b5f8a --- /dev/null +++ b/sbmlpkgspec.cls @@ -0,0 +1,1144 @@ +%% Filename: sbmlpkgspec.cls -*- mode: latex -*- +%% Description: LaTeX style file for SBML Level 3 package specifications +%% Author(s): Michael Hucka +%% Organization: California Institute of Technology +%% Date created: 2011-08-11 +%% +%% Copyright 2007-2013 California Institute of Technology, Pasadena, CA, USA. +%% +%% This file is free software; you can redistribute it and/or modify it +%% under the terms of the GNU Lesser General Public License as published +%% by the Free Software Foundation; either version 2.1 of the License, or +%% any later version. +%% +%% This library is distributed in the hope that it will be useful, but +%% WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF +%% MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. The software and +%% documentation provided hereunder is on an "as is" basis, and the +%% California Institute of Technology has no obligations to provide +%% maintenance, support, updates, enhancements or modifications. In no +%% event shall the California Institute of Technology be liable to any +%% party for direct, indirect, special, incidental or consequential +%% damages, including lost profits, arising out of the use of this software +%% and its documentation, even if the California Institute of Technology +%% has been advised of the possibility of such damage. See the +%% GNU Lesser General Public License for more details. +%% +%% You should have received a copy of the GNU Lesser General Public License +%% along with this library; if not, write to the Free Software Foundation, +%% Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +\def\filedate{2013/07/24} +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{sbmlpkgspec}[\filedate\space SBML Level 3 +Package Specification Style] + +%% ---------------------------------------------------------------------------- +%% Package references and options. +%% ---------------------------------------------------------------------------- + +%% Keep in mind that hyperref needs to be almost the last package loaded. + +\newif\if@draftspec +\DeclareOption{draftspec}{\global\let\if@draftspec\iftrue} +\DeclareOption{finalspec}{\global\let\if@draftspec\iffalse} + +\newif\if@notoc +\DeclareOption{toc}{\global\let\if@notoc\iffalse} +\DeclareOption{notoc}{\global\let\if@notoc\iftrue} + +\newif\if@twocolumntoc +\DeclareOption{twocolumntoc}{\global\let\if@twocolumntoc\iftrue} +\DeclareOption{singlecolumntoc}{\global\let\if@twocolumntoc\iffalse} + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} + +\ExecuteOptions{toc,twoside} +\ExecuteOptions{singlecolumntoc} +\ProcessOptions +\LoadClass{article} + +%% ---------------------------------------------------------------------------- +%% Dependencies on other packages. +%% ---------------------------------------------------------------------------- + +\RequirePackage{lastpage} +\RequirePackage{ifpdf} +\RequirePackage{booktabs} +\RequirePackage{multicol} +\RequirePackage{array} +\RequirePackage[round,sort]{natbib} +\RequirePackage{xspace} +\RequirePackage{scalefnt} +\RequirePackage{pifont} +\RequirePackage[pagewise,mathlines,edtable,right]{lineno} +\RequirePackage{calc} +\RequirePackage{fancyhdr} +\RequirePackage{fancybox} +\RequirePackage{amsmath} +\RequirePackage{amssymb} +\RequirePackage{bbding} +\RequirePackage{wasysym} +\RequirePackage{enumitem} +\RequirePackage{accsupp} +\RequirePackage[T1]{fontenc} +\RequirePackage{suffix} +\RequirePackage{varwidth} + +% We use the "optional" package to indicate whether to generate a grayscale +% vs a color version of the document without having to alter the .tex file +% itself. Unfortunately, the "optional" package doesn't offer an "or" type +% switch or a way to set a default, so we have to go through some +% contortions here. Also, it needs *something* in the optional argument +% to RequirePackage or UsePackage, hence the "dummyoption" thing below. +% +% To produce grayscale output without modifying the source file, invoke +% latex with a command of the following form: +% +% pdflatex "\newcommand\UseOption{grayscale}\input{sbml-level-2-version-2}" + +\newif\ifgrayscalespec +\global\let\ifgrayscalespec\iffalse +\RequirePackage[dummyoption]{optional} +\opt{grayscale}{\global\let\ifgrayscalespec\iftrue} + +% Load varioref only if not generating HTML, because on HTML +% pages it doesn't make sense to use varioref. + +% \RequirePackage{html} + +% \latexhtml{ +%begin{latexonly} + \RequirePackage[american]{varioref} +%end{latexonly} +% }{ +% \newcommand{\vref}[1]{\ref{#1}} +% } + +% Hyperref, xcolor, graphicx and possibly others have a flag "pdftex" +% that needs to be used if pdflatex is being used. The following puts +% these inside a conditional for that situation. + +\ifpdf + % Case: using pdflatex + + \RequirePackage[pdftex]{graphicx} + + % Options get even more complicated. If we're producing grayscale output, + % we don't want to bother with coloring links, but we still want to load + % hyperref so that its macros are defined (and we don't have to redefine + % everything that uses hyperref). So: + + \ifgrayscalespec + \RequirePackage[pdftex,breaklinks=true,colorlinks=false, + bookmarksnumbered=true]{hyperref} + \else + \RequirePackage[pdftex,breaklinks=true,colorlinks=true, + pdfhighlight=/O,linkcolor={sbmlblue},citecolor={sbmlblue}, + urlcolor={sbmlblue},anchorcolor={sbmlblue},bookmarksnumbered]{hyperref} + \fi + + % Although it may seem like we wouldn't need to load xcolor if + % the grayscale option is given, in fact it doesn't affect anything + % to load this and it avoids having to conditionalize other things. + % (The colors aren't actually invoked if grayscale is being used.) + + \RequirePackage[pdftex,rgb,dvipsnames,svgnames,hyperref,table]{xcolor} +\else + % Case: not using pdflatex + + \RequirePackage{graphicx} + % Test whether we're being run from latex or latex2html + % \latexhtml{ + % For latex. + \RequirePackage[breaklinks]{hyperref} + % }{ + % For latex2html. + % \RequirePackage[latex2html,breaklinks]{hyperref} + % } + \RequirePackage[rgb,dvipsnames,svgnames,hyperref,table]{xcolor} +\fi + +% Load listings package & set some values. + +\RequirePackage{listings} +\lstloadlanguages{bash,csh,XML} + +% Load draftwatermark if this document is a draft version. + +\if@draftspec + \RequirePackage[firstpage]{draftwatermark} + \SetWatermarkLightness{0.92} +\fi + +\RequirePackage{overpic} + +% We don't need the rotating package in this file, but there is a strange +% interaction between the rotating package and something else in sbmlpkgclass +% (I don't know what). The effect of the interaction is that sidewaystable +% environment contents are shifted left on the page (or from the perspective +% of the rotated table, shiftted up). The solution is to set \rotFPtop, but +% asking users of sbmlpkgclass to know that they have to do this is too much +% to ask. So, to avoid people experiencing the problem and wasting time +% trying to figure out what's causing it, I decided it's better to preload +% rotating. The problem was first reported to me by Maciej Swat in Aug. 2013 +% and I found the solution at http://tex.stackexchange.com/a/47879/8318 + +\RequirePackage{rotating} +\setlength{\rotFPtop}{0pt plus 1fil} + + +%% ---------------------------------------------------------------------------- +%% Font selection. +%% ---------------------------------------------------------------------------- + +% This sets up Helvetica for headings and TX Typewriter for the tt font. +% The font scaling is because the default Helvetica size is too big. + +\RequirePackage{fourier} +\RequirePackage{helvet} +\ifgrayscalespec + % In the grayscale version of the spec, Helvetica bold is used for class + % names in the text, and the width of the words then is too big unless + % we scale down the font even more compared to the regular case below. + \def\Hv@scale{0.814} +\else + \def\Hv@scale{0.87} +\fi + +% The following sets up txtt for the typewriter font. + +\renewcommand{\ttdefault}{txtt} +\DeclareMathAlphabet{\mathtt}{T1}{txtt}{m}{n} +\SetMathAlphabet{\mathtt}{bold}{T1}{txtt}{b}{n} + +% The next bit is an adaption of code from ot1phv.fd and adapted to the txtt +% fonts. The txtt fonts are just a tad too big, so this tries to rescale +% them down a tiny bit. This isn't completely right because I couldn't +% figure out the right syntax when the DeclareFontShape uses ssub below. +% (Notice how the ones with ssub don't have the \Txtt@@scale factor.) + +\def\Txtt@scale{0.97} +\edef\Txtt@@scale{s*[\csname Txtt@scale\endcsname]}% + +\DeclareFontFamily{T1}{txtt}{\hyphenchar \font\m@ne} +\DeclareFontShape{T1}{txtt}{m}{n}{ %rebular + <-> \Txtt@@scale txtt% +}{} +\DeclareFontShape{T1}{txtt}{m}{sc}{ %cap & small cap + <-> \Txtt@@scale txttsc% +}{} +\DeclareFontShape{T1}{txtt}{m}{sl}{ %slanted + <-> \Txtt@@scale txttsl% +}{} +\DeclareFontShape{T1}{txtt}{m}{it}{ %italic + <-> ssub * txtt/m/sl% +}{} +\DeclareFontShape{T1}{txtt}{m}{ui}{ %unslanted italic + <-> ssub * txtt/m/sl% +}{} +\DeclareFontShape{T1}{txtt}{b}{n}{ %bold + <-> \Txtt@@scale txbtt% +}{} +\DeclareFontShape{T1}{txtt}{b}{sc}{ %bold cap & small cap + <-> \Txtt@@scale txbttsc% +}{} +\DeclareFontShape{T1}{txtt}{b}{sl}{ %bold slanted + <-> \Txtt@@scale txbttsl% +}{} +\DeclareFontShape{T1}{txtt}{b}{it}{ %bold italic + <-> ssub * txtt/b/sl% +}{} +\DeclareFontShape{T1}{txtt}{b}{ui}{ %bold unslanted italic + <-> ssub * txtt/b/sl% +}{} +\DeclareFontShape{T1}{txtt}{bx}{n}{ %bold extended + <-> ssub * txtt/b/n% +}{} +\DeclareFontShape{T1}{txtt}{bx}{sc}{ %bold extended cap & small cap + <-> ssub * txtt/b/sc% +}{} +\DeclareFontShape{T1}{txtt}{bx}{sl}{ %bold extended slanted + <-> ssub * txtt/b/sl% +}{} +\DeclareFontShape{T1}{txtt}{bx}{it}{ %bold extended italic + <-> ssub * txtt/b/sl% +}{} +\DeclareFontShape{T1}{txtt}{bx}{ui}{ %bold extended unslanted italic + <-> ssub * txtt/b/sl% +}{} + +% Adjustments due to quirks of the combination of fourier and amsmath: + +% Make the \big( braces regular height (default is too short): +\delimiterfactor=1000 +\delimitershortfall=1pt + +%% ---------------------------------------------------------------------------- +%% Main code. +%% ---------------------------------------------------------------------------- + +\raggedbottom + +% Local color definitions. + +\definecolor{sbmlblue}{rgb}{0.07,0.50,0.78} +\definecolor{sbmlgray}{gray}{0.7} +\definecolor{sbmlrowgray}{gray}{0.96} +\definecolor{extremelylightgray}{gray}{0.97} +\definecolor{veryverylightgray}{gray}{0.95} +\definecolor{verylightgray}{gray}{0.9} +\definecolor{lightgray}{gray}{0.8} +\definecolor{mediumgray}{gray}{0.5} +\definecolor{darkgray}{gray}{0.3} +\definecolor{almostblack}{gray}{0.23} +\definecolor{normaltextcolor}{gray}{0.23} % Synonym for 'almostblack' +\definecolor{lightyellow}{rgb}{0.98,0.94,0.7} +\definecolor{verylightyellow}{rgb}{0.97,0.95,0.85} +\definecolor{darkblue}{rgb}{0.1,0.4,0.55} +\definecolor{mediumgreen}{rgb}{0.1,0.6,0.3} + +% Color for marking changed text, conditional on whether gray scale mode is on. + +\ifgrayscalespec + \newcommand{\@sbmlchangedcolor}{normaltextcolor} +\else + \definecolor{sbmlchangedcolor}{rgb}{0.69,0.19,0.376} + \newcommand{\@sbmlchangedcolor}{sbmlchangedcolor} +\fi + +% Macros for making consistent font, color, and other selections: + +\newcommand{\changed}[1]{\textcolor{\@sbmlchangedcolor}{#1}} +\newenvironment{blockChanged}{\color{\@sbmlchangedcolor}}{\color{normaltextcolor}} + +\newcommand{\figureFont}[1]{\textsf{\textbf{#1}}} + +\newcommand{\literalFont}[1]{\textcolor{black}{\textup{\ttfamily{#1}}}} +\newcommand{\literalFontNC}[1]{\textup{\ttfamily{#1}}} + +\newcommand{\tightspacing}{\renewcommand{\baselinestretch}{0.85}} +\newcommand{\regularspacing}{\renewcommand{\baselinestretch}{\normalbaselinestretch}} + +\ifgrayscalespec + \newcommand{\defRef}[2]{\textbf{\class{#1}}\xspace} + \newcommand{\absDefRef}[2]{\textbf{\abstractclass{#1}}\xspace} +\else + \newcommand{\defRef}[2]{\class{\hyperref[#2]{#1}}\xspace} + \newcommand{\absDefRef}[2]{\abstractclass{\hyperref[#2]{#1}}\xspace} +\fi + +\renewcommand{\texttt}[1]{\textcolor{black}{\ttfamily #1}} + +% Hyperref extras: + +\newcommand{\link}[2]{\literalFont{\href{#1}{#2}}} +\newcommand{\mailto}[1]{\link{mailto:#1}{#1}} + +% 'lineno' package adjustments. +% The BeginAccSupp business causes the line numbers to be ignored for +% copy-paste operations in the PDF output. + +\setlength{\linenumbersep}{2.2em} +\renewcommand{\thelinenumber}{% + \BeginAccSupp{ActualText={}}% + \textcolor{mediumgray}{\parbox[b][\height+1.5pt][c]{10pt}{\arabic{linenumber}}}% + \EndAccSupp{}% +} + +% 'booktabs' package adjustments: + +\setlength{\cmidrulewidth}{0.3 pt} +\setlength{\lightrulewidth}{0.3 pt} +\setlength{\heavyrulewidth}{0.9 pt} + +% Fix placement of figures & tables. This keeps latex from shoving big +% floats to the end of a document when they are somewhat big, which it will +% do even if you put [htb] as the argument. + +\setcounter{topnumber}{2} % max num of floats at top of page +\setcounter{bottomnumber}{2} % max num of floats at bottom of page +\renewcommand\topfraction{1.0} % fraction that a top float can cover +\renewcommand\bottomfraction{1.0} % fraction a bottom float can cover +\renewcommand\textfraction{0.0} % >5% of a non-float page must be text +\renewcommand\floatpagefraction{0.9} % float page must be 95% full + +% Spacing of floats. + +\setlength{\intextsep}{20pt plus 4pt minus 0pt} + +% Make floats that appear alone on a page appear at the top, rather than +% (as is the LaTeX default) appearing centered vertically on the page. + +\setlength{\@fptop}{5pt} + +% Margin adjustments. I've tried using vmargin.sty, but it interacts badly +% with page numbers at the bottom of the page, so I've resorted to hardcoding +% the dimensions like this. + +\setlength{\marginparwidth}{0.77in} +\setlength{\marginparsep}{4pt} + +\setlength{\oddsidemargin}{0 pt} +\setlength{\evensidemargin}{0 pt} +\setlength{\topmargin}{-0.5 in} +\setlength{\voffset}{0 in} +\setlength{\hoffset}{0 in} +\setlength{\textwidth}{6.5 in} +\setlength{\textheight}{8.95 in} + +% Playing games with line spacing. + +\newcommand{\normalbaselinestretch}{1.04} +\renewcommand{\baselinestretch}{\normalbaselinestretch} + +% Set the table of contents depth + +\setcounter{tocdepth}{3} + +% Title page macros. Severly hacked from originals in LaTeX's article.cls. + +\def\packageTitle#1{\title{#1}\gdef\@packageTitle{#1}} +\def\@packageTitle{\@empty} + +\def\packageGeneralURL#1{\gdef\@packageGeneralURL{#1}} + +\def\packageThisVersionURL#1{\gdef\@packageThisVersionURL{#1}} +\def\@packageThisVersionURL{\@empty} + +\def\packageVersion#1{\gdef\@packageVersion{#1}} +\def\@packageVersion{\@empty} + +\def\packageVersionDate#1{\gdef\@packageVersionDate{#1}} +\def\@packageVersionDate{\@empty} + +\def\frontNotice#1{\gdef\@frontNotice{#1}} + +\def\@puttitle{% + \ifx\@packageGeneralURL\undefined + \relax + \else + \vspace*{-1em} + {\large SBML Level 3 Package Specification}\\[2em] + \fi + \scalebox{1}[0.9]{% + \fcolorbox{black}{mediumgray}{% + \begin{minipage}{\textwidth - 7pt}% + \vspace*{6pt}% + \centering% + \textcolor{white}{\sffamily\bfseries\huge \ifx\@title\@empty\@packageTitle\else\@title\fi} + \vspace*{4pt}% + \end{minipage}}}} + +\def\@putauthorinfo{% + \large + \renewcommand{\arraystretch}{0.95}% + {\begin{tabular}[t]{c}% + \@author + \end{tabular}}} + +\def\maketableofcontents{% + \thispagestyle{plain}% + \if@notoc + \else + \begingroup + \small% + % Tighten spacing between lines within an entry. + % This assumes 10 pt font! + \setlength{\baselineskip}{10pt}% + % Now adjust inter-entry spacing. + \addtolength{\parskip}{-1.35 ex}% + \if@twocolumntoc + \setlength{\columnsep}{16pt}% + \begin{multicols}{2} + \fi + \tableofcontents% + \if@twocolumntoc + \end{multicols} + \fi + \normalsize% + \addtolength{\parskip}{1.45 ex}% + \endgroup + \clearpage + \fi% + \linenumbers} + +% Need redefine \tableofcontents to counter effects of hacking \section below. + +\renewcommand\tableofcontents{% + \@startsection{section}{0}{0pt}{-1.8ex \@plus -1ex \@minus -.2ex}% + {0.8ex}{\normalfont\Large\bfseries\sffamily}*% The star fakes a \section* + \contentsname% + \@mkboth{\MakeUppercase\contentsname}{\MakeUppercase\contentsname}% + \@starttoc{toc}% + } + +\renewcommand\maketitle{\par + \begingroup + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}% + \long\def\@makefntext##1{\parindent 1em\noindent + \hb@xt@1.8em{% + \hss\@textsuperscript{\normalfont\@thefnmark}}##1}% + \if@twocolumn + \ifnum \col@number=\@ne + \@maketitle + \else + \twocolumn[\@maketitle]% + \fi + \else + \global\@topnum\z@ % Prevents figures from going at top of page. + \@maketitle + \fi + \thispagestyle{empty}\@thanks + \endgroup + \setcounter{footnote}{0}% + \global\let\thanks\relax + \global\let\maketitle\relax + \global\let\@maketitle\relax + \global\let\@thanks\@empty + \global\let\@author\@empty + \global\let\@date\@empty + \global\let\@title\@empty + \global\let\@authoremail\@empty + \global\let\title\relax + \global\let\author\relax + \global\let\date\relax + \global\let\and\relax + } + +\newcommand\maketitlepage{\par + \begingroup + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}% + \long\def\@makefntext##1{\parindent 1em\noindent + \hb@xt@1.8em{% + \hss\@textsuperscript{\normalfont\@thefnmark}}##1}% + \vskip 2em% + \if@twocolumn + \ifnum \col@number=\@ne + \@maketitle + \else + \twocolumn[\@maketitle]% + \fi + \else + \newpage + \global\@topnum\z@ % Prevents figures from going at top of page. + \@maketitle + \fi + \thispagestyle{empty}\@thanks + \vfill + \centering% + \ifx\@frontNotice\undefined + \relax + \else + {\cornersize{0.25}\color{DarkRed}\ovalbox{\begin{varwidth}{0.9\textwidth}\centering\@frontNotice\end{varwidth}}}% + \fi + \vfill + \ifx\@packageGeneralURL\undefined + \relax + \else + The latest release, past releases, and other materials related to this specification are available at\\ + {\small\url{\@packageGeneralURL}}\\[1em] + \emph{This} release of the specification is available at\\ + {\small\url{\@packageThisVersionURL}}\\ + \vspace*{2em} + \fi + \vfill + \centerline{\includegraphics[width=2in]{\SBMLbadge}} + \clearpage + \endgroup + \setcounter{footnote}{0}% + \global\let\thanks\relax + \global\let\maketitle\relax + \global\let\@maketitle\relax + \global\let\@thanks\@empty + \global\let\@author\@empty + \global\let\@date\@empty + \global\let\@title\@empty + \global\let\@authoremail\@empty + \global\let\title\relax + \global\let\author\relax + \global\let\date\relax + \global\let\and\relax + } + +\def\@maketitle{% + \newpage + \null + \begin{center}% + \let \footnote \thanks + \@puttitle + \vskip 1.8em% + {\lineskip .5em% + \@putauthorinfo + }% + \vskip 2em% + {\large\fbox{\@packageVersion}}% + \vskip 1.5em% + {\large\@packageVersionDate}% + \end{center}% + \par% + \vskip 1.5em% + \ifpdf + \hypersetup{pdftitle={\@title}} + \fi% + } + + +% Including the logo on the front page. We switch which copy of the logo +% file we use, depending on various factors, and we switch which file format +% is used depending on the output we're producing. + +\ifgrayscalespec + \newcommand{\@badgebasefile}{sbol-logo-gray} +\else + \newcommand{\@badgebasefile}{sbol-logo} +\fi + +\ifpdf + % Request the JPG format specifically, because the resulting + % quality in the final output is best. + \newcommand{\SBMLbadge}{\@badgebasefile.jpg}% +\else% + \newcommand{\SBMLbadge}{\@badgebasefile.eps}% +\fi + + +% Graphics adjustments. The path setup is so that the \includegraphics +% in the @puttile definition can find the logo file no matter where the +% document is located (but obviously, it only works for certain path +% combinations -- it's a total hack). + +\graphicspath{{./logos/} + {../tex/logos/} + {../project/tex/logos/} + {../../project/tex/logos/} + {../../../project/tex/logos/} + {../../../../project/tex/logos/}} + + +% Set the page footers. +% Must do this after setting the document title. + +\fancyhf{} + +\newcommand{\@footchpsection}{Section \nouppercase{\leftmark}} +\newcommand{\@footpage}{Page \thepage\ of \pageref*{LastPage}} + +\renewcommand{\footrule}{} + +\fancypagestyle{headerandfooter}{% + \renewcommand{\headrulewidth}{0.25pt} + \renewcommand{\headrule}{} + \lhead{}% + \rhead{\color{mediumgray}\small\textsf{Section \nouppercase{\rightmark}}}% + \cfoot{}% + \lfoot{\color{mediumgray}\small\textsf{\@footchpsection}}% + \rfoot{\color{mediumgray}\small\textsf{\@footpage}}% +} + +\fancypagestyle{footeronly}{% + \renewcommand{\headrule}{}% + \lhead{}% + \rhead{}% + \lfoot{\color{mediumgray}\small\textsf{\@footchpsection}}% + \rfoot{\color{mediumgray}\small\textsf{\@footpage}}% +} + +\fancypagestyle{plain}{% + \renewcommand{\headrule}{}% + \lhead{}% + \rhead{}% + \lfoot{}% + \rfoot{\color{mediumgray}\small\textsf{\@footpage}}% +} + +\pagestyle{headerandfooter} + + +% Definition of paragraph style. + +\setlength{\parindent}{0 pt} % Unindented paragraphs, separated ... +\setlength{\parskip}{1.3 ex} % ... by roughly one blank line. +\setlength{\partopsep}{-1ex plus 0.1ex minus -0.2ex} +\setlength{\itemsep}{-0.25ex plus 0.15ex} + +% \topsep is supposed to affect list environments like itemize, +% but does nothing there. Instead, it affects environments like tabular. + +\setlength{\topsep}{0.3ex plus 0.1ex minus -0.2ex} + +\renewcommand{\labelitemi}{\raisebox{0.5pt}{\color{mediumgray}\footnotesize{$\blacksquare$}}} +\renewcommand{\labelitemii}{\raisebox{-1.5pt}{\color{mediumgray}\LARGE$\bullet$}} +\renewcommand{\labelitemiii}{\color{mediumgray}\tiny\DiamondSolid} +\renewcommand{\labelitemiv}{$\diamond$} + +% Definition of section heading style. + +\renewcommand{\section}{\@startsection% + {section}{1}{0pt \@plus 1ex}{-3.5ex \@plus -2ex \@minus -.2ex}% + {1.2ex}{\clearpage\thispagestyle{footeronly}% + \hspace*{-24.25pt}\color{sbmlgray}{\rule[1.8em]{6.84in}{0.6em}}\color{normaltextcolor}% + \hspace*{-6.84in}\color{sbmlgray}{\rule[-0.8em]{6.84in}{0.1em}}\color{normaltextcolor}% + \noindent\normalfont\LARGE\bfseries\sffamily\hspace*{-6.84in}}} + +\renewcommand{\subsection}{\@startsection% + {subsection}{2}{0pt}{-1.25ex \@plus 2ex \@minus -.2ex}% + {0.1ex}{\Large\bfseries\sffamily}} + +\renewcommand{\subsubsection}{\@startsection% + {subsubsection}{3}{0pt}{-1ex \@plus 2ex \@minus -.2ex}% + {0.4ex}{\large\bfseries\sffamily\slshape}} + +\renewcommand{\paragraph}{\@startsection% + {paragraph}{4}{0pt}{-0.75ex \@plus 2ex \@minus -.2ex}% + {0.4ex}{\normalsize\bfseries\sffamily\slshape}} + +% The References heading needs to be fixed up to account for shift +% we apply to section headings. These defs are modified from article.cls. + +\bibliographystyle{apalike} + +\renewenvironment{thebibliography}[1]% +{\section*{References}% + \pagestyle{plain}% + \addcontentsline{toc}{section}{\protect\numberline{\refname}}% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m} +{\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} + +\newcommand{\sectionspecial}{\@startsection% + {section}{1}{0pt}{-1.8ex \@plus -1ex \@minus -.2ex}% + {0.8ex}{\hspace*{-41.1pt}\colorbox{sbmlgray}{\hspace*{6.99in}}\nopagebreak\\% + \hspace*{-20pt}\normalfont\Large\bfseries\sffamily}} + +% The following is a modified version of the macro from article.cls. +% It adjusts the vertical spacing in TOC for section lines. + +\renewcommand*\l@section[2]{% + \ifnum \c@tocdepth >\z@ + \addpenalty\@secpenalty + \addvspace{0.2ex \@plus\p@}% + \setlength\@tempdima{1.5em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode \bfseries\sffamily + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par + \endgroup + \fi} + +\def\@dottedtocline#1#2#3#4#5{% + \ifnum #1>\c@tocdepth \else + \vskip \z@ \@plus.2\p@ + {\if@twocolumntoc\else + \leftskip #2 + \fi + \relax \rightskip \@tocrmarg \parfillskip -\rightskip + \if@twocolumntoc\else + \parindent #2 + \fi + \relax\@afterindenttrue + \interlinepenalty\@M + \leavevmode + \@tempdima #3\relax + \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip + {\sffamily #4}\nobreak + {\color{mediumgray} + \leaders\hbox{$\m@th + \mkern \@dotsep mu\hbox{.}\mkern \@dotsep + mu$}\hfill + }\nobreak + \hb@xt@\@pnumwidth{\hfil\normalfont\sffamily #5}% + \par}% + \fi} + +% The following is modified from natbib.sty, version 1999/05/28 7.0. +% This ensures that the References section gets a TOC entry. + +\renewcommand{\bibsection}{% + \addcontentsline{toc}{section}{\protect\textbf{\textsf{\refname}}}% + \section*{\refname}} + + +% Redefine table & figure to use smaller font, sans serif, +% and to center contents by default. + +\renewenvironment{table}[1][] {\@float{table}[#1]\small\sffamily\centering} {\end@float} +\renewenvironment{table*}[1][] {\@dblfloat{table}[#1]\small\sffamily\centering} {\end@dblfloat} +\renewenvironment{figure}[1][] {\@float{figure}[#1]\small\sffamily\centering} {\end@float} +\renewenvironment{figure*}[1][]{\@dblfloat{figure}[#1]\small\sffamily\centering}{\end@dblfloat} + + +% The following was ripped out of caption.sty, version 1.4b. +% Copyright (C) 1994-95 Harald Axel Sommerfeldt +% The first few lines set up the parameters for the layout created +% by this style file. + +\newcommand{\captionsize}{\small} +\newcommand{\captionfont}{\captionsize\sffamily\slshape} +\newcommand{\captionlabelfont}{\captionsize\bfseries\slshape} +\setlength{\abovecaptionskip}{1em} +\newlength{\captionmargin} +\setlength{\captionmargin}{6ex} + +\newsavebox{\as@captionbox} +\newlength{\as@captionwidth} +\newcommand{\as@normalcaption}[2]{% + #1 #2\par} +\let\as@caption\as@normalcaption +\newcommand{\as@centercaption}[2]{% + \parbox[t]{\as@captionwidth}{{\centering#1 #2\par}}} +\let\as@shortcaption\as@centercaption +\newcommand{\as@makecaption}[2]{% + \setlength{\leftskip}{\captionmargin}% + \setlength{\rightskip}{\captionmargin}% + \addtolength{\as@captionwidth}{-2\captionmargin}% + \renewcommand{\baselinestretch}{0.9} + \captionfont% + \sbox{\as@captionbox}{{\captionlabelfont #1:} #2}% + \ifdim \wd\as@captionbox >\as@captionwidth + \as@caption{{\captionlabelfont #1:}}{#2}% + \else% + \as@shortcaption{{\captionlabelfont #1:}}{#2}% + \fi} +\renewcommand{\@makecaption}[2]{% + \vskip\abovecaptionskip% + \setlength{\as@captionwidth}{\linewidth}% + \as@makecaption{#1}{#2}% + \vskip\belowcaptionskip} +\ifx\@makerotcaption\undefined +\else + % Adjustment for the "rotating" package. + \renewcommand{\@makerotcaption}[2]{% + \renewcommand{\baselinestretch}{0.9} + \captionfont% + \sbox{\as@captionbox}{{\captionlabelfont #1:} #2}% + \ifdim \wd\as@captionbox > .8\vsize + \rotatebox{90}{% + \setlength{\as@captionwidth}{.8\textheight}% + \begin{minipage}{\as@captionwidth}% + \as@caption{{\captionlabelfont #1:}}{#2}% + \end{minipage}}\par + \else% + \rotatebox{90}{\usebox{\as@captionbox}}% + \fi + \hspace{12pt}} +\fi +\ifx\floatc@plain\undefined +\else + \typeout{\space\space\space\space\space\space\space\space\space + `float' package detected} + \renewcommand\floatc@plain[2]{% + \setlength{\as@captionwidth}{\linewidth}% + \as@makecaption{#1}{#2}} + \ifx\as@ruled\undefined + \else + \renewcommand\floatc@ruled[2]{% + \setlength{\as@captionwidth}{\linewidth}% + \renewcommand{\baselinestretch}{0.9} + \captionfont% + \as@caption{{\captionlabelfont #1:}}{#2}} + \fi +\fi + +% +% Additional new commands. +% + +% Class and data type formatting macros. + +\newcommand{\class}[1]{\figureFont{#1}} % only SBML UML classes +\newcommand{\abstractclass}[1]{\textsl{\figureFont{#1}}} % abstract classes +\newcommand{\primtype}[1]{\literalFont{#1}} % double, SId, SBOTerm, etc. +\newcommand{\primtypeNC}[1]{\literalFontNC{#1}} % same, but without coloring +\newcommand{\token}[1]{\literalFont{#1}} % everything else +\newcommand{\tokenNC}[1]{\literalFontNC{#1}} % everything else, no color +\newcommand{\val}[1]{``\token{#1}''} % a value in XML +\newcommand{\uri}[1]{``\token{#1}''} + +% Macros used for defining validation rules. +% First, preliminary internal macros. + +\newcommand{\vSymbol}{\textcolor{red}{$\Box\mkern-14mu\checkmark$}} +\newcommand{\vSymbolName}{checked box\xspace} +\newcommand{\cSymbol}{\textcolor{Goldenrod}{\scalefont{0.9}\ding{115}}} +\newcommand{\cSymbolName}{triangle\xspace} +\newcommand{\mSymbol}{\textcolor{Green}{$\bigstar$}} +\newcommand{\mSymbolName}{star\xspace} + +% Spacing adjustments when using the symbols inside regular 'description' env. +% Note: *not* used in \sbmlrule below. + +\newcommand{\vsp}{\hspace*{4pt}} +\newcommand{\csp}{\hspace*{6.25pt}} +\newcommand{\msp}{\hspace*{4.9pt}} + +% Now the actual user commands for validation rules. + +\newcommand{\sbmlrule}[3]{\begin{enumerate}[labelwidth=8em,leftmargin=10em,align=left] + \item[\textbf{\textsf{#1}}~~#2] #3 + \end{enumerate}} + +\newcommand{\validRule}[2] {\sbmlrule{#1}{\vSymbol}{#2}} +\newcommand{\consistencyRule}[2]{\sbmlrule{#1}{\cSymbol}{#2}} +\newcommand{\modelingRule}[2] {\sbmlrule{#1}{\mSymbol}{#2}} + + +% Code examples. + +\newcommand{\code}[1]{\literalFont{#1}} +\newcommand{\codeNC}[1]{\literalFontNC{#1}} + +\lstset{escapechar=|,% + language=XML,% + columns=fullflexible,% + keepspaces=true,% + backgroundcolor=\color{veryverylightgray},% + rulecolor=\color{sbmlgray},% + frame=single,% + numberstyle=\tiny\sffamily,% + basicstyle=\small\ttfamily\color{black},% + keywordstyle=\ttfamily,% + xleftmargin=3.5pt,% + xrightmargin=3.5pt,% + aboveskip=1\baselineskip,% + belowskip=0.4\baselineskip,% + commentstyle=\footnotesize\itshape\color{mediumgray},% + tabsize=2,% + captionpos=b} + +\lstdefinestyle{XML}{% + language=XML} + +\lstdefinestyle{bash}{% + language=bash}% + +\newcommand{\examplespacing}{\renewcommand{\baselinestretch}{0.88}} + +\lstnewenvironment{example}[1][] + {\lstset{#1}\examplespacing \csname lst@SetFirstLabel\endcsname} + {\regularspacing \csname lst@SaveFirstLabel\endcsname} + +\newcommand{\exampleFile}[2][style=XML]{% + \lstset{#1}\examplespacing\lstinputlisting{#2}\regularspacing} + + +% Margin note commands. +% The \reversemarginpar is to put notes in the left margin. + +\reversemarginpar % Want these be put on the left, not the right. + +\newcommand{\notice}{\marginpar{\hspace*{34pt}\raisebox{-0.5ex}{\color{black}\Large\ding{43}}}} +\newcommand{\warning}{\marginpar{\hspace*{34pt}{\color{red}\large\danger}}} + +% Margin notes. +% +% Todonotes is nice and offers things like a list of notes, but it uses TikZ, +% and that's a heavy package to load every time. I got annoyed by how much +% it slowed down my latex runs that I created a simple note alternative +% instead. Here's the original todonotes version, for posterity: +% +% \RequirePackage[textsize=scriptsize]{todonotes} +% +% \if@draftspec +% \newcommand{\sbmlshownotes}{} +% \else +% \newcommand{\sbmlshownotes}{disable} +% \fi +% +% \newcommand{\draftnote}[1]{\todo[backgroundcolor=lightyellow,% +% bordercolor=lightgray,linecolor=mediumgray,\sbmlshownotes]{\textit{#1}}} + +\newcommand{\draftnoteInternal}[1]{\mbox{}\marginpar{\hspace{0pt}\fcolorbox{Gold}{lightyellow} + {\scriptsize\begin{minipage}[t]{0.65in}\raggedright\textit{#1}\end{minipage}}}} + +\if@draftspec + \newcommand{\draftnote}[1]{\draftnoteInternal{#1}} +\else + \newcommand{\draftnote}[1]{} +\fi + + +% Line numbered environments. + +\newenvironment{larray}{% + \begin{linenomath}\setlength{\arraycolsep}{1.5pt}\begin{eqnarray}}% + {\end{eqnarray}\end{linenomath}\par\vspace*{-0.7em}} + +\newenvironment{larray*}{% + \begin{linenomath}\setlength{\arraycolsep}{1.5pt}\begin{eqnarray*}}% + {\end{eqnarray*}\end{linenomath}\par\vspace*{-0.7em}} + + +% Cross-references. +% +% We load the varioref package and define a set of macros for referring to +% floats and sections in a consistent way, such that the entire reference +% ("Section X", "Figure Y", etc.) is made into a hyperlink -- not only "X" +% and "Y", as would be the case with using the normal approach of writing +% "Section~\vref{...}". Since all figure, table and section number +% references are always capitalized (they are the proper names of the +% objects, after all), the problem of creating a macro is simplified. +% SBMLPkgSpec defines the following for this purpose: +% +% \fig{...} +% \tab{...} +% \sec{...} +% +% In addition, it defines starred versions of the above: +% +% \fig*{...} +% \tab*{...} +% \sec*{...} +% +% The starred versions are useful when you have two or more references in +% the same paragraph to a float or section that is located elsewhere in the +% document, to avoid having text like the following happen: +% +% "In Figure 2 on the next page, blah blah blah. Figure 2 on the +% following page also blah blah blah." +% +% Using the unstarred version for the first reference and starred version +% for subsequent references avoids this, and will produce text like this: +% +% "In Figure 2 on the next page, blah blah blah. Figure 2 also blah +% blah blah." +% +% Note: this overrides the definition of \sec{...} from the AMS math +% package. I decided this is likely to be acceptable to users because +% in SBML's domain of activity, it is very unlikely that someone would +% write a mathematical formula using the \sec command in a latex document +% specifying an SBML Level 3 package. +% +% As an alternative, the following plain varioref macros will work: +% +% * Use \vref{...} for everything and it will insert Figure~X, Table~Y, +% Section~Z, etc., as appropriate for the reference. You do not need to +% add the object name; in other words, don't write "Section~\vref{foo}", +% write just "\vref{foo}". +% +% * Use \vref*{...} if the reference is in parentheses, like "(\vref*{...})". +% +% * At the beginning of a paragraph (and ONLY there), use \Vref*{...}. +% +% * For a range, use \vrefrange{startlabel}{endlabel}. +% +% To see actual examples of using this, grep for "vref" in *.tex in the +% JSBML User Guide directory. + +\labelformat{chapter}{Chapter~#1} +\labelformat{table}{Table~#1} +\labelformat{figure}{Figure~#1} + +\newcommand{\sectionlabel}{Section} +\newcommand{\setlabel}[1]{\renewcommand{\sectionlabel}{#1}} +\newcommand{\normallabels}{\setlabel{Section}} +\newcommand{\appendixlabels}{\setlabel{Appendix}} + +\labelformat{section}{\sectionlabel~#1} +\labelformat{subsection}{\sectionlabel~#1} +\labelformat{subsubsection}{\sectionlabel~#1} +\labelformat{paragraph}{\sectionlabel~#1} + +\newcommand{\@commonRefNoStar}[1]{\xspace\Vref*{#1}\xspace} +\newcommand{\@commonRefStar}[1]{\ref{#1}\xspace} + +\newcommand{\fig}[1]{\normallabels\@commonRefNoStar{#1}} +\WithSuffix\newcommand\fig*[1]{\normallabels\@commonRefStar{#1}} + +\newcommand{\tab}[1]{\normallabels\@commonRefNoStar{#1}} +\WithSuffix\newcommand\tab*[1]{\normallabels\@commonRefStar{#1}} + +\renewcommand{\sec}[1]{\normallabels\@commonRefNoStar{#1}} +\WithSuffix\newcommand\sec*[1]{\normallabels\@commonRefStar{#1}} + +\newcommand{\sect}[1]{\normallabels\@commonRefNoStar{#1}} +\WithSuffix\newcommand\sect*[1]{\normallabels\@commonRefStar{#1}} + +\newcommand{\apdx}[1]{\appendixlabels\@commonRefNoStar{#1}} +\WithSuffix\newcommand\apdx*[1]{\appendixlabels\@commonRefStar{#1}} + + +% Misc. + +\newcommand{\dblquote} {\verb|"|} %" + + +% Here we list common SBML entities, to get consistent font & appearance. + +\newcommand{\AlgebraicRule}{\textbf{\class{AlgebraicRule}}\xspace} +\newcommand{\Annotation}{\textbf{\class{Annotation}}\xspace} +\newcommand{\AssignmentRule}{\textbf{\class{AssignmentRule}}\xspace} +\newcommand{\Compartment}{\textbf{\class{Compartment}}\xspace} +\newcommand{\Constraint}{\textbf{\class{Constraint}}\xspace} +\newcommand{\Delay}{\textbf{\class{Delay}}\xspace} +\newcommand{\EventAssignment}{\textbf{\class{EventAssignment}}\xspace} +\newcommand{\Event}{\textbf{\class{Event}}\xspace} +\newcommand{\FunctionDefinition}{\textbf{\class{FunctionDefinition}}\xspace} +\newcommand{\InitialAssignment}{\textbf{\class{InitialAssignment}}\xspace} +\newcommand{\KineticLaw}{\textbf{\class{KineticLaw}}\xspace} +\newcommand{\ListOfCompartments}{\textbf{\class{ListOfCompartments}}\xspace} +\newcommand{\ListOfConstraints}{\textbf{\class{ListOfConstraints}}\xspace} +\newcommand{\ListOfEventAssignments}{\textbf{\class{ListOfEventAssignments}}\xspace} +\newcommand{\ListOfEvents}{\textbf{\class{ListOfEvents}}\xspace} +\newcommand{\ListOfFunctionDefinitions}{\textbf{\class{ListOfFunctionDefinitions}}\xspace} +\newcommand{\ListOfInitialAssignments}{\textbf{\class{ListOfInitialAssignments}}\xspace} +\newcommand{\ListOfLocalParameters}{\textbf{\class{ListOfLocalParameters}}\xspace} +\newcommand{\ListOfModifierSpeciesReferences}{\textbf{\class{ListOfModifierSpeciesReferences}}\xspace} +\newcommand{\ListOfPackages}{\textbf{\class{ListOfPackages}}\xspace} +\newcommand{\ListOfParameters}{\textbf{\class{ListOfParameters}}\xspace} +\newcommand{\ListOfReactions}{\textbf{\class{ListOfReactions}}\xspace} +\newcommand{\ListOfRules}{\textbf{\class{ListOfRules}}\xspace} +\newcommand{\ListOfSpeciesReferences}{\textbf{\class{ListOfSpeciesReferences}}\xspace} +\newcommand{\ListOfSpecies}{\textbf{\class{ListOfSpecies}}\xspace} +\newcommand{\ListOfUnitDefinitions}{\textbf{\class{ListOfUnitDefinitions}}\xspace} +\newcommand{\ListOfUnits}{\textbf{\class{ListOfUnits}}\xspace} +\newcommand{\ListOf}{\class{ListOf\rule{0.3in}{0.5pt}}\xspace} +\newcommand{\LocalParameter}{\textbf{\class{LocalParameter}}\xspace} +\newcommand{\Message}{\textbf{\class{Message}}\xspace} +\newcommand{\Model}{\textbf{\class{Model}}\xspace} +\newcommand{\ModifierSpeciesReference}{\textbf{\class{ModifierSpeciesReference}}\xspace} +\newcommand{\Notes}{\textbf{\class{Notes}}\xspace} +\newcommand{\Package}{\textbf{\class{Package}}\xspace} +\newcommand{\Parameter}{\textbf{\class{Parameter}}\xspace} +\newcommand{\Priority}{\textbf{\class{Priority}}\xspace} +\newcommand{\RateRule}{\textbf{\class{RateRule}}\xspace} +\newcommand{\Reaction}{\textbf{\class{Reaction}}\xspace} +\newcommand{\Rule}{\textbf{\class{Rule}}\xspace} +\newcommand{\SBML}{\textbf{\class{SBML}}\xspace} +\newcommand{\SBase}{\textbf{\abstractclass{SBase}}\xspace} +\newcommand{\SimpleSpeciesReference}{\textbf{\class{SimpleSpeciesReference}}\xspace} +\newcommand{\SpeciesReference}{\textbf{\class{SpeciesReference}}\xspace} +\newcommand{\Species}{\textbf{\class{Species}}\xspace} +\newcommand{\StoichiometryMath}{\textbf{\class{StoichiometryMath}}\xspace} +\newcommand{\Trigger}{\textbf{\class{Trigger}}\xspace} +\newcommand{\UnitDefinition}{\textbf{\class{UnitDefinition}}\xspace} +\newcommand{\Unit}{\textbf{\class{Unit}}\xspace} + + +% +% Final settings before the body begins. +% + +\color{normaltextcolor} % Default body font color. + +%% ----------------------------------------------------------------------------- +%% End of file `cekarticle.cls'. +%% ----------------------------------------------------------------------------- \ No newline at end of file diff --git a/sbol2.tex b/sbol2.tex new file mode 100644 index 00000000..a2270b54 --- /dev/null +++ b/sbol2.tex @@ -0,0 +1,497 @@ +\documentclass[draftspec]{sbmlpkgspec} +\usepackage{microtype} +\usepackage{color} + +%% ============================================================================ +%% Description: Documentation for sbmlpkgspec.cls +%% First author: Michael Hucka +%% Organization: California Institute of Technology +%% Date created: September 2011 +%% https://sbml.svn.sourceforge.net/svnroot/sbml/trunk/project/tex/sbmlpkgspec +%% +%% Copyright (C) 2011-2012 California Institute of Technology, Pasadena, CA. +%% +%% SBMLPkgSpec is free software; you can redistribute it and/or modify it +%% under the terms of the GNU Lesser General Public License as published by +%% the Free Software Foundation. A copy of the license agreement is provided +%% in the file named "LICENSE.txt" included with this software distribution. +%% ============================================================================ + +% Macros just for this document: + +\newcommand{\sbmlpkg}{\texorpdfstring{% + \textls[-25]{\textsc{SBMLPkgSpec}}}{% + \textsc{SBMLPkgSpec}}\xspace} +\newcommand{\sbmlpkghead}{\texorpdfstring{% + \textls[-50]{\textsc{SBMLPkgSpec}}}{% + \textsc{SBMLPkgSpec}}\xspace} +\newcommand{\sbmlpkgfile}{\literalFont{sbmlpkgspec.cls}\xspace} +\newcommand{\latex}{\LaTeX{}\xspace} +\newcommand{\tex}{\TeX{}\xspace} +\newcommand{\distURL}{http://sourceforge.net/projects/sbml/files/specifications/tex} +\newcommand{\srcURL}{https://sbml.svn.sourceforge.net/svnroot/sbml/trunk/project/tex/sbmlpkgspec} +\newcommand{\webURL}{http://sbml.org/Documents/Specifications/The_SBMLPkgSpec_LaTeX_class} +\newcommand{\cmd}[1]{\literalFont{\textbackslash #1}} + +% Custom latex listing style, for use with the listings package. The default +% highlights far too many things, IMHO. This keeps it simple and only adjusts +% the appearance of comments within listings. + +\lstdefinelanguage{mylatex}{% + morekeywords={},% + sensitive,% + alsoother={0123456789$_},%$ + morecomment=[l]\%% +}[keywords,tex,comments] + +\lstdefinestyle{latex}{language=mylatex} + +% ----------------------------------------------------------------------------- +% Start of document +% ----------------------------------------------------------------------------- + +\begin{document} + +\packageTitle{\latex Class for SBML Package Specifications} +\packageVersion{Version 2.0.0} +\packageVersionDate{1 January 2014} + +\title{BBF RFC ?: Synthetic Biology Open Language \texorpdfstring{\\[3pt]}{}\mbox{(SBOL) Version~2.0.0}} + +\author{Nicholas Roehner\\[0.25em] + \mailto{nicholasroehner@gmail.com}\\[0.25em] + Bioengineering\\ + Boston University\\ + Cambridge, MA, USA +} + +\maketitlepage +\maketableofcontents + +% ----------------------------------------------------------------------------- +\section{Purpose} +% ----------------------------------------------------------------------------- + +% ----------------------------------------------------------------------------- +\section{Relation to other BBF RFCs} +% ----------------------------------------------------------------------------- + +% ----------------------------------------------------------------------------- +\section{Copyright Notice} +% ----------------------------------------------------------------------------- + +% ----------------------------------------------------------------------------- +\section{Acknowledgements} +% ----------------------------------------------------------------------------- + +% ----------------------------------------------------------------------------- +\section{Introduction} +% ----------------------------------------------------------------------------- + +% ----------------------------------------------------------------------------- +\section{Overview of SBOL} +% ----------------------------------------------------------------------------- +This is some test text. + +% ----------------------------------------------------------------------------- +\section{SBOL Vocabulary} +% ----------------------------------------------------------------------------- + +% ----------------------------------------------------------------------------- +\section{SBOL Data Model} +% ----------------------------------------------------------------------------- + +\begin{figure}[h] +\begin{center} +\includegraphics[width=\textwidth]{uml/identified_documented_annotation} +\caption[]{Identified and Documented classes} +\label{uml:identified_documented_annotation} +\end{center} +\end{figure} + + +\subsection{The Identified, Documented, and TopLevel Base Classes} + +The Identified and Documented classes separate out data fields that are common to many classes in the SBOL data model. Nearly every other SBOL class inherits from the Identified class, which has five data fields. The first data field, “identity,” is a URI. As before in SBOL Version 1.1, this URI serves to uniquely identify a SBOL object across the World Wide Web. + +The next three data fields enable more sophisticated versioning of SBOL objects. Currently, if a developer wishes to change a SBOL object that has been published to the Web, then as a best practice they should create a copy of the SBOL object that incorporates the change, but has a new URI. This practice, however, does not inherently involve a standardized declaration that the second object is a version of the first. Consequently, the ``persistentIdentity'', ``version'', and ``timeStamp'' data fields have been created to provide developers with the means to declare that a set of SBOL objects are versions of each other (by virtue of having the same persistent URI) and label these objects with version Strings and times of creation. + +The Documented class extends Identified with three additional data fields: ``displayId'', ``name'', and ``description''. The contents of these data fields are identical to those of the same name on a DnaComponent object in SBOL Version 1.1. In addition, displayId is now an optional field. If a Documented object lacks a displayId, it is expected that software tools will instead display the object's name or identity as a last resort. + +\begin{figure}[h] +\begin{center} +\includegraphics[width=0.75\textwidth]{uml/toplevel_collection} +\caption[]{TopLevel class} +\label{uml:toplevel_collection} +\end{center} +\end{figure} + +TopLevel is a class that is extended by any Documented object that can be found at the top level of a SBOL file, that is any SBOL object that is not nested inside another object when written to a file. Instead of nesting, composite TopLevel objects link to their subordinate TopLevel objects via URIs when written to a file. For example, a composite Component object A would link to its sub-Component object B using B’s URI. + +The first TopLevel class presented in this report is the Collection class, which groups together TopLevel objects that have something in common. For example, a Collection object could be the result of a query to find all Component objects that function as promoters or all Module objects that function as inverters in a given repository. + +\begin{figure}[h] +\begin{center} +\includegraphics[width=0.3\textwidth]{uml/sequence} +\caption[]{Sequence class} +\label{uml:sequence} +\end{center} +\end{figure} + +\subsection{Sequence} + +The Sequence class is used to encode the primary structure of a ComponentDefinition object using a String of characters. Sequence objects identify their type of encoding with a URI. For example, a Sequence object that encodes a DNA sequence would have an IUPAC DNA encoding, while a Sequence object that encodes the chemical structure of glucose might have a simplified molecular-input line-entry system (SMILES) encoding. + +\begin{figure}[h] +\begin{center} +\includegraphics[width=\textwidth]{uml/sequence_annotation} +\caption[]{SequenceAnnotation class} +\label{uml:sequence_annotation} +\end{center} +\end{figure} + +\subsection{SequenceAnnotation} + +The SequenceAnnotation class describes a location of interest on the Sequence object linked by its parent ComponentDefinition object and may optionally associate this location with a StructuralComponent object. SequenceAnnotation objects pecify their location using a Location object. As explained below, the Location class is extended by several different classes, some of which assert locations other than simple ranges with start and end positions. + +\begin{figure}[h] +\begin{center} +\includegraphics[width=\textwidth]{uml/sequence_constraint} +\caption[]{SequenceConstraint class} +\label{uml:sequence_constraint} +\end{center} +\end{figure} + +\subsection{SequenceConstraint} + +In SBOL Version 1.1 partial designs are made possible by means of SequenceAnnotation objects that can specify that their locations precede those of other SequenceAnnotation objects. In Version 2.0 the “precedes” data field has been generalized to the StructuralConstraint class. A ComponentDefinition object can link to SequenceConstraint objects to assert different kinds of structural restrictions (not just precedes relationships) between the StructuralComponent objects that represent its subcomponents. These restrictions could include “sameOrientationAs” or “oppositeOrientationAs” to enable the relative orientation of StructuralComponent objects whose ComponentDefinition objects lack associated Sequence objects in partial designs. + +\begin{figure}[h] +\begin{center} +\includegraphics[width=\textwidth]{uml/location} +\caption[]{Location class} +\label{uml:location} +\end{center} +\end{figure} + +\subsection{Location} + +The Location class is extended by the Range, MultiRange, and Cut classes, and the Range and Cut classes are further extended by the OrientedRange and OrientedCut classes. First, a Range object specifies inclusive start and end positions greater than zero, while an OrientedRange object includes an “orientation” data field suitable for specifying locations on a potentially double-stranded Component object. + +Second, A MultiRange object represents a location that is specified by multiple Range objects. For example, this capability can be used to specify a ComponentDefinition object that represents the introns or exons of a eukaryotic gene. + +Third, the Cut class has been introduced to enable the specification of a location between two indices. Each Cut object has a single integer data field, “at,” that specifies the index just before the location represented by the Cut object. Even though there is no zero index on Structure objects in SBOL, a Cut object with “at” equal to zero represents the location just before index one. The OrientedCut class extends the Cut class with an orientation in the same way that the OrientedRange class extends the Range class. + +Finally, while the Range and Cut classes are best suited to describing locations on sequential structures, the Location class can be extended in the future to better describe locations on Component Objects with non-sequential structure (see unspecified Moeity class as potential means for specifying locations in more than one dimension). + +% Figure has some classes named incorrectly +\begin{figure}[h] +\begin{center} +\includegraphics[width=\textwidth]{uml/component_definition} +\caption[]{ComponentDefinition} +\label{uml:component_definition} +\end{center} +\end{figure} + +\subsection{Components and ComponentDefinitions} + +The proposed Version 2.0 data model generalizes the DnaComponent class of SBOL Version 1.1 to a Component class in order to support an increased range of structural representation. Components can represent genetic components such as DNA, but also RNA and proteins which were unrepresented in Version 1.1. Additionally, the generalized Component class can even represent non-genetic components, such as non-biological polymers, small molecules, molecular complexes, and even light. + +Another significant change is that a layer of design abstraction has been added to the Component class. The ComponentDefinition base class is analagous to a blueprint or parts specification sheet for a biological part. In contrast, the Component class represents specific occurrences of a part within a design. Thus the new version of SBOL supports biological designs that re-use the same component more than once. + +% Examples of ontologies for non-molecular type ComponentDefinitions (eg, light)...? +A ComponentDefinition which contains the blueprint for a molecular component must have at least one type URI that identifies a term from an appropriate ontology, such as the ontology of Chemical Entities of Biological Interest (ChEBI) and the BioPAX ontology. A type URI documents the basic sort of biochemical or physical entity (for example DNA, protein, or RNA) that a Component object abstracts for the purpose of engineering design. If a Component object has multiple type URIs, then they must identify synonymous terms. +\textcolor{red}{Examples of ontologies for non-molecular type ComponentDefinitions (eg, light)...?} + +The roles of a ComponentDefinition object, on the other hand, are analogous to the type of a DnaComponent object in SBOL Version 1.1 and the sequence types of a SequenceComponent in the ACS Synthetic Biology paper. Role URIs are expected to identify ontology terms that clarify a Component object’s potential function in a biological context. For example, a ComponentDefinition object of type “DNA” may have a role of “promoter” or “terminator,” terms taken from the Sequence Ontology (SO). A ComponentDefinition object of type “protein,” on the other hand, may have a role of “transcription factor” or “protease.” + +% Are the class names listed here correct, taking recent name changes into account? +\textcolor{red}{Finally, a ComponentDefinition object can define its structure by linking to objects that belong to the StructuralInstance, Sequence, SequenceAnnotation, and SequenceConstraint classes. These classes are described below.} + +\begin{figure}[h] +\begin{center} +\includegraphics[width=\textwidth]{uml/component_instance} +\caption[]{Component} +\label{uml:component} +\end{center} +\end{figure} + +% The second sentence is confusing. +Hierarchical compositions of structure and function is enabled via the ComponentInstance class. Each ComponentInstance object has three data fields. \textcolor{red}{The first data field, “definition”, links to the Component object that is effectively a part of the Component or Module object that owns the ComponentInstantiation object.} The second data field, “access,” defines whether the ComponentInstance object can be referred to by ComponentInstance objects that are higher in the design hierarchy (yes if access is set to “public”). The third data field, "mappings", is a set of MapsTo objects that link between other ComponentInstance objects at the same level of the design hierarchy as well as other ComponentInstance objects that are lower in the design hierarchy, thereby composing these objects with greater specificity (see first module example). + +There are two subclasses of the ComponentInstance class: the StructuralComponent and FunctionalComponent classes. Composition of the structural layer of SBOL designs is accomplished using StructuralInstance objects. Each StructuralComponent object is owned by a ComponentInstance object and serves as an explicit usage of a \textcolor{red}{sub-Component} object for the purpose of physical composition. + +Composition of the functional layer of SBOL designs, on the other hand, is accomplished using FunctionalComponent objects. Each FunctionalComponent object is owned by a Module object and serves as an explicit usage of a ComponentInstance object for the purpose of fulfilling some function. In addition, each FunctionalInstantiation must specify via the “direction” field whether it serves as an input, output, both, or neither for its parent Module object. + +\begin{figure}[h] +\begin{center} +\includegraphics[width=\textwidth]{uml/module_definition} +\caption[]{ModuleDefinition} +\label{uml:module_definition} +\end{center} +\end{figure} + +\subsection{Module and ModuleDefinition} + +The ModuleDefinition class forms the hub for functional description of genetic designs. A Module object is composed from zero or more FunctionalComponent, Module, and Interaction objects, and links to zero or more Model objects. A Module object relies on the “direction” data fields of its FunctionalComponent objects to specify whether they serve as its inputs or outputs. + +In addition, each ModuleDefinition object must now have at least one of potentially several roles to indicate its intended usages. For example, the role URIs on a ModuleDefinition object may identify terms for abstract module roles, such as “inverter” or “AND gate,” or they may identify terms for biological module roles, such as “metabolic pathway” and “signaling cascade.” + +\begin{figure}[h] +\begin{center} +\includegraphics[width=\textwidth]{uml/module} +\caption[]{Module} +\label{uml:module} +\end{center} +\end{figure} + +The Module class enables the composition of Module objects from other sub-Module objects. \textcolor{red}{The first data field, “definition”, links to the ModuleDefinition object that is effectively a part of the Module object that owns the Module object.} The second data field, “mappings”, is a set of MapsTo objects that link between the Component objects at the same level of the design hierarchy as the Module object and the Component objects that are lower in the design hierarchy, thereby composing these objects with greater specificity. + +\begin{figure}[h] +\begin{center} +\includegraphics[width=0.75\textwidth]{uml/interaction} +\caption[]{Interaction} +\label{uml:interaction} +\end{center} +\end{figure} + +The Interaction class provides a qualitative basis for asserting the intended function of a given ModuleDefinition object. The proposed data model supports the representation of regulatory interactions, such as activation or repression, and processes from the central dogma of biology, such as transcription and translation. Other supported interaction types include non-covalent binding between a small molecule and TF, and phosphorylation of a TF by an enzyme. + +Each Interaction object must specify its type with at least one URI that identifies an appropriate ontology term, such as a term from the Systems Biology Ontology (SBO). If an Interaction object has multiple type URIs, then they must identify synonymous terms. + +Furthermore, each Interaction object must specify its participating ComponentInstantiation objects by linking to one or more objects of the Participation class. + +\begin{figure}[h] +\begin{center} +\includegraphics[width=0.75\textwidth]{uml/participation} +\caption[]{Participation} +\label{uml:participation} +\end{center} +\end{figure} + +Each object of the Participation class must specify the role of its participant FunctionalComponent object in its parent Interaction object with at least one URI that identifies an appropriate ontology term. If a Participation object has multiple role URIs, then they must identify synonymous terms. + +\begin{figure}[h] +\begin{center} +\includegraphics[width=0.4\textwidth]{uml/model} +\caption[]{} +\label{uml:model} +\end{center} +\end{figure} + +While the Interaction class provide a qualitative description of genetic function, quantitative descriptions are also needed for genetic design. Instead of introducing a new language for the specification of mathematical models of biology, the proposed data model leverages existing standards and links to them via the Model class. + +Each Model object is required to link by means of URIs to a source model and ontology terms that identify the source model's language, framework, and potential roles (multiple). In this way, there is minimal duplication of standardization efforts and users of SBOL can specify the quantitative function of their ModuleDefinition objects in a well-developed language of their choice. A ModuleDefinition object can link to more than one model since each one can encode different levels of functional detail and play different roles in engineering design. + + +\begin{figure}[h] +\begin{center} +\includegraphics[width=0.75\textwidth]{uml/maps_to} +\caption[]{} +\label{uml:maps_to} +\end{center} +\end{figure} + +The MapsTo class serves as a means of linking between Component objects (both StructuralComponents and FunctionalComponents) at different levels of the design hierarchy. For example, when a Module object is instantiated inside another Module object, a MapsTo object on the appropriate Module object can be used to link between a FunctionalComponent object in the parent Module (as specified by the “local” data field) and a FunctionalComponent object in the child module (as specified by the “remote” data field). This linking can perhaps be most easily understood via the examples in the next section. + +In addition to specifying a link, each MapsTo object must also specify a “refinement” relationship between its local and remote Components. Under this data model, there are four types of refinement: “verifyIdentical” requires that the Component objects link to the same ComponentDefinition object, “useLocal” indicates that the local Component object overrides the remote Component object, “useRemote” indicates the opposite, and “merge” indicates that data fields of the local and remote ComponentInstantiation objects are to be interpreted in combination. + +\subsection{Application Specific Data - Annotations} +SBOL allows embedding application specific data that are not captured by the SBOL standard. Such data are optional, can be computationally generated and exchanged via SBOL documents without getting lost. These custom data are stored in the form of annotations, providing informative metadata about entities in an SBOL document. + +Each Identified object may have a number of annotations in the form of name/value property pairs. Property names are specified by qualified names as IRIs, each formed of a namespace and a local name. Values can be IRIs or literals (for example, string, integer, double, boolean) or custom Identity entities initialized with application specific types. These custom Identity entities can further be annotated with the scheme described here. These custom entities are either serialized within an SBOL entity being annotated, or referenced using an IRI annotation and embedded within the the annotated entity's parent. + +\begin{figure}[!ht] +\begin{center} +\includegraphics[scale=0.8]{uml/identified_annotations} +\caption[]{Annotating SBOL's Identified entities with application specific data.} +\label{uml:identified_annotations} +\end{center} +\end{figure} + +SBOL documents can also be annotated at the top level. SBOL's GenericTopLevel is a top-level entity that can include a set of annotations as described above. Entities that are at the top-level and are not recognised by the SBOL standard are loaded into these top level entities. These GenericTopLevel entities may have multiple type information and can be used safely by tools to exchange custom data. As with any other top level entities, GenericTopLevel entities may include SBOL properties such as name, description, displayId and so on. + + +\begin{figure}[!ht] +\begin{center} +\includegraphics[scale=0.8]{uml/generictoplevel} +\caption[]{Annotating SBOL documents with GenericTopLevel entities.} +\label{uml:generictoplevel} +\end{center} +\end{figure} + + +% ----------------------------------------------------------------------------- +\section{Examples of Data Model} +% ----------------------------------------------------------------------------- + + + +% ----------------------------------------------------------------------------- +\section{Examples of Serialization} +% ----------------------------------------------------------------------------- + +% ----------------------------------------------------------------------------- +\section{Best Practices} +% ----------------------------------------------------------------------------- + + + +% ----------------------------------------------------------------------------- +\section{Authors' Contact Information} +% ----------------------------------------------------------------------------- + +% For now, this section contains examples of potentially useful code for formatting tables, bullets, etc. + +\begin{table}[hb] + \begin{edtable}{tabular}{ll} + \toprule + \textbf{Item} & \textbf{Location} \\ + \midrule + Distribution archive & \url{\distURL}\\ + Web page & \url{\webURL}\\ + Source tree (SVN) & \url{\srcURL}\\ + \bottomrule + \end{edtable} + \caption{Where to find \sbmlpkg on the Internet.} + \label{where} +\end{table} + +\begin{table}[htb] + \rowcolors{2}{sbmlrowgray}{} + \renewcommand{\arraystretch}{1.05} + \begin{edtable}{tabular}{ll} + \toprule + \textbf{Command} & \textbf{Object} \\ + \midrule + \cmd{AlgebraicRule} & \AlgebraicRule \\ + \cmd{Annotation} & \Annotation \\ + \cmd{AssignmentRule} & \AssignmentRule \\ + \cmd{Compartment} & \Compartment \\ + \cmd{Constraint} & \Constraint \\ + \cmd{Delay} & \Delay \\ + \cmd{EventAssignment} & \EventAssignment \\ + \cmd{Event} & \Event \\ + \cmd{FunctionDefinition} & \FunctionDefinition \\ + \cmd{InitialAssignment} & \InitialAssignment \\ + \cmd{KineticLaw} & \KineticLaw \\ + \cmd{ListOfCompartments} & \ListOfCompartments \\ + \cmd{ListOfConstraints} & \ListOfConstraints \\ + \cmd{ListOfEventAssignments} & \ListOfEventAssignments \\ + \cmd{ListOfEvents} & \ListOfEvents \\ + \cmd{ListOfFunctionDefinitions} & \ListOfFunctionDefinitions \\ + \cmd{ListOfInitialAssignments} & \ListOfInitialAssignments \\ + \cmd{ListOfLocalParameters} & \ListOfLocalParameters \\ + \cmd{ListOfModifierSpeciesReferences} & \ListOfModifierSpeciesReferences \\ + \cmd{ListOfPackages} & \ListOfPackages \\ + \cmd{ListOfParameters} & \ListOfParameters \\ + \cmd{ListOfReactions} & \ListOfReactions \\ + \cmd{ListOfRules} & \ListOfRules \\ + \cmd{ListOfSpeciesReferences} & \ListOfSpeciesReferences \\ + \cmd{ListOfSpecies} & \ListOfSpecies \\ + \cmd{ListOfUnitDefinitions} & \ListOfUnitDefinitions \\ + \cmd{ListOfUnits} & \ListOfUnits \\ + \cmd{LocalParameter} & \LocalParameter \\ + \cmd{Message} & \Message \\ + \cmd{Model} & \Model \\ + \cmd{ModifierSpeciesReference} & \ModifierSpeciesReference \\ + \cmd{Notes} & \Notes \\ + \cmd{Package} & \Package \\ + \cmd{Parameter} & \Parameter \\ + \cmd{Priority} & \Priority \\ + \cmd{RateRule} & \RateRule \\ + \cmd{Reaction} & \Reaction \\ + \cmd{Rule} & \Rule \\ + \cmd{SBML} & \SBML \\ + \cmd{SBase} & \SBase \\ + \cmd{SimpleSpeciesReference} & \SimpleSpeciesReference \\ + \cmd{SpeciesReference} & \SpeciesReference \\ + \cmd{Species} & \Species \\ + \cmd{StoichiometryMath} & \StoichiometryMath \\ + \cmd{Trigger} & \Trigger \\ + \cmd{UnitDefinition} & \UnitDefinition \\ + \cmd{Unit} & \Unit \\ + \bottomrule + \end{edtable} + \caption{Commands for the names of object classes defined in the SBML Level~3 + Core specification.} + \label{sbmlcore} +\end{table} + +\begin{example}[style=latex] +\documentclass{sbmlpkgspec} +\begin{document} + +\packageTitle{Example} +\packageVersion{Version 1 (Draft)} +\packageVersionDate{14 August 2011} +\packageGeneralURL{http://sbml.org/Documents/Specifications/Example} +\packageThisVersionURL{http://sbml.org/Documents/Specifications/Example_14_August_2011} + +\author{Michael Hucka\\[0.25em] + \mailto{mhucka@caltech.edu}\\[0.25em] + Computing and Mathematical Sciences\\ + California Institute of Technology\\ + Pasadena, CA, USA +} + +\maketitlepage +\maketableofcontents + +\section{...} +... +\end{document} +\end{example} + + +\begin{description}[font=\normalfont\ttfamily\color{black},style=nextline] + +\item[draftspec] This option causes the front page of the document to contain + the word ``DRAFT'' in large gray letters, and the footer of every page of + the document to contain the word ``(DRAFT)''. Authors should use this + option until such time as the specification document is considered a + release candidate or a final release. + +\end{description} + +\begin{description} + +\item[\hspace*{6.5pt}\vSymbol\vsp] A \vSymbolName indicates a + \emph{requirement} for conformance. If a model fails to follow this rule, + it does not conform to the specification. (Mnemonic intention behind the + choice of symbol: ``This must be checked.'') + +\item[\hspace*{6.5pt}\cSymbol\csp] A \cSymbolName indicates a + \emph{recommendation} for model consistency. If a model does not follow + this rule, it is not considered strictly invalid as far as the + specification is concerned; however, it indicates that the model contains + a physical or conceptual inconsistency. (Mnemonic intention behind the + choice of symbol: ``This is a cause for warning.'') + +\item[\hspace*{6.5pt}\mSymbol\msp] A \mSymbolName indicates a strong + recommendation for good modeling practice. This rule is not + strictly a matter of SBML encoding, but the recommendation comes + from logical reasoning. As in the previous case, if a model does + not follow this rule, it is not strictly considered an invalid SBML + encoding. (Mnemonic intention behind the choice of symbol: ``You're + a star if you heed this.'') + +\end{description} + +\begin{itemize} + +\item \texttt{amssymb}: This package defines many symbols and special + characters. In \sbmlpkg, it is used to get the symbols defined by the + validation rule commands \cmd{validRule}, \cmd{consistencyRule} and + \cmd{modelingRule} described in \sec{validation-rules}. + +\end{itemize} + +%\clearpage +%\bibliography{sbmlpkgspec} + +% ----------------------------------------------------------------------------- +% End of document +% ----------------------------------------------------------------------------- + +\end{document} \ No newline at end of file diff --git a/uml/component_definition.png b/uml/component_definition.png new file mode 100644 index 0000000000000000000000000000000000000000..a3c51d6976c8e68489696cbb6c589f2fb9f15870 GIT binary patch literal 14634 zcmch8WmJ`I_a`L=hY$e;DM1vFkOPWHmk3CQgrsy!Hz+8n^g$XVBqbyzMUa&4mTr)g zo_+A0|IDm4UuMm$c|M$HExhB3eeJz}aRHspxfD0gznodu?3=O|0yvs|4Y=SboEz7(nd+c>Z|U^KJtG_ zef3q%wm`8_(!R(3UO(5ahhUPR_MW!en(>CyT1n!rmiflXs$lFz7|zqDr~Y*Ce+&a6 z^e^%f`j;FBe!LOr;R@km!Y{24{9uF%qko%e(ZBy!mj`I2=*1+nVZ!TlPg-cNyw=A- zzvzTpJ{bM{(5snOnBSzbmDx|vo8*Mp?Gx;pAsU{H`D4>$Lqs`dD{ z5-y*+vhkr*0a2ufN2H{rMQ4lM^yrBpFNF%X{iv{8FgRH5&k1{+#UbY9RVy8NWodQQ zeScj`Nl8gsx@~8tc(mAjkZsu1+B$?!OinIjmGP{h!8e^zQ&TgpZF6f*T77+GWxI|2 zq4fmI(F8pmtYWCJH{y_SZ*BDY!!{&0x6^F%)s2KA^T97nC%Y?y8YoIhIXO8gsh+J; z%TXgEBa7(SSp$ZSjtAhVE2}5@!6{;?qX(4XR5!*d zQVmbc4!TlAwRx=qGhsLAeYYY}C^My(FH=z)_lwrq*)+wXuU{=4 zEG$@9S!H?*3=A5qlK9>K+6ZvWj%8 z{&!4rImvIwgp<&%?tTdiyV}c0$G|Yx8g*}*CUKs}cGjPXG$_)9P_?Y2MEspz@xkqw zqH?jlKy_o|&%A*$VsEQ6X&%(_$7*S5y@vx1X9~Hfbf1%xUSWD&bhuJW@wSHN{(3_7 zT^f2t=@G-ZE&Bfit%h)5U|>~#h{E|1^%h&Im6nz!q~?2ienK%8Ynh&$XN41PIH3>| z$!8h=0&!=OgdTmQyieo)jlauF>HHaRi2ogPp);9(4|#KBtwxq9jlSJGBt0ibI$NZc z67mHsAAuO{-v|B#e7a1f3MTed~Bh4esAMkKw16>NDOT?)aXkxmU8Y z%Aw!?b4N$Ohsk4wl4i5`kfxPY?jaoLrCY+3s>~zUDvVx*Gq)y_TFwxRIjYBC&t92AbxyINbuNO z9UfsPhY6gYq{YC&?(RavHZnZEh{#A~ZEb;v56LcybMW(f9Bdhuebf7adtK))50A^r zK%Ue3n0i<94?jXni6a?ELvzIC787>=@i=VLsCL;lDhMkoLK;@uFDYtjj=sjen0EC#-xuzXq+yZh;J#g?(LvD>wDi!oaX35h39-c?2yJ8fu3AP@V^6ciMUj4~{l znV5#F-O5;{#qkk{p%#+s*B9pJHNFvWL9VbEb{sCXj7yh(@<`ZmZRA0;S8s+4vD!Mj z#JcTN9cHw;E1e?l<%C+rk&%((;Fa7L(}gdas+>x&I(iN9crR|OdwK~DAt5FqB-;kA z3pj5I9rSBTj6Z(xfI&DkGP19$i&kApT|KM)!Gi~~xWjx+Lqi{T-lKA|vok(_mSOAb z@BiiXw@%&CGH=UVf;BoS>Vjse*7C}Vv60aSYX0mws4>i1ib8E~-@g6v&#?im?1A!Ii_bb4x2LcoD)1oxS&b>N~!tUpzk1ZG&)zfOV%M@9XK& zpZ=Lew>!2xn1HYqX~^Jz{P=P4SYKb-T*O_uk(Q^5YKgT7JQ#1_NUPfB+n0`jPN zY{l9J^K}M`48ErlH8wVClt@&ZIEKypyFX-9#9i{m4j$F{N?vrIoMbmyZ@6kpSXbZy&34lGBunfAssIWba3h2w_>l7**%vzlEr{ zxVUO0BPVC?+B%o8w_*Off}4_eus+ZTS~>am@Yy>!Tv#niMij+RFC}8kU?LfpgNYh-2BF+tC3zbFsYy86iDXm3rtg|^Ube?223BRrg#HA&D*V5lhRQmBBm zq-2;`h0{i&qk^lpc4Bqnd|BK4ueh~aHzmIv(A3=5(a>P_$WV#7^6)ea+3ZHZ#y_=z zE+gc{9Uo(2Tn=}by8Q;T5V2=^f5if@nLcJ^F>&)08+THVM#jdvo*X(zhiKtSYG!`r z#+#d)vqCj?+In9K)o*KQDb%vBXV*LJ8aoxqQzDaXAv| zXdG5RE^caSsscBwGcxX>C32XggpBn&tZuo^+u+#Yn|dZL@4b$BSSobGgoE_O`TO;& z{doGPuKC{$!D&t|j}kV^v}M%sIw^VoMZ4BB@AvNG_X6<=3FDAVrjRCYWq%qF-5yET zQSyl=-Bk|SrBd%*x8q7TWiQ^w=X- zqou#B+#k*AAd$$!!$XVy#@UirAr!R)95jbdBYJ)*TU+P1j}*S3J~3l=!6e@qA>>>v z8HObK%2R9p`*&e=e}=CgzVz1E{C*>Q$Lx1*WepKAN^X_=cqG*JMC&VQyG*G9|Qa(|lb?Yx`oR%K9CQAtlr zvv+hnB)31dbIQ<8ktttgTfU04px0?tRlvKCTaVUxWsr1&)6qN@S00=FMwem%v))Z}a|n9nZyxf7 z0whUHLb$A@-!(ixm!;`KLRmL9xSZI!(dF6k-6f=;+FojDX$f*`DfIN_3p96p2K*)J zt%a~!Xb&;~O1x)=-0|WXK1z6x_056&;`KbURm0bE$MJ2D(yGcPe*N`2Zt_|j{I$|r z=p>?D^!4khp9VKBiLu7_S8Jc0OrD*r=$suk37!^um@zXj zFsLDZci5i8&xw5vGk&83@;cO?c?Qo!Ou)N#687hQ)Dl2B$PVreo z7fuxPa1U(4ysBKb=iM0#G_9<@lr@gbc(y8OYp<_sw;c^N{b0S*y1md@W;Je>%0(_G zE&cUx)kw~#PoFX~8FPPKY^HU3v}WQLWM(5khvj#0H6f%bB>n>fr0O2(`&Vop^E$2P z=I2MxWxoANh7%gC%i+uWL+`>RTJ|7fQH40ztOyc$KTA2Bdv?OYuODn?dK$rw{fyG- zF%uwJ%`Pwhdwj6{Z*Bx@3zYHumm-9nHYQZ4HT#pI*pxeN77iW{)J zY{o->z;rUu*H``|E^$6LJXRo}$4e+oRTaND;!S}pB{#M};+7N&qp{A1J6RN~88UHwcGBAA zZUzb`?fN$@ovp#?*49g6Z3hR3$C@Sn zY6e|bT+%Q&imN`3OAx3ySCu- zmN3PNZw&Ib{xP-e4sW0xkplJxTkF&(IxIKdRoDba9QlG9fz<i%exy@Kqrso_jmR3^WG7rWD$gow=o_tw{%Bv%;hC*Z#glvE zLKksEs17=@nH99I{^a=%TX(C<@OIBloEz$7a&rqjC$pzw{vnhiEcp_F%Ys$-qCMD&k6pTM`-dXJ4YNe&ppU3v_ z@ThcLV`gCqmL^ZTQlN%eJUePocM(iB27XwxyhzYIBQ1lrfijlLKz2t9f7q?m&IXw+PaeD+sg zF}B^p5yXpk)|TT^CP{w^VjC?`fxSuOxSA{A$lIEczs`g z)G%ogn*CiP4*yLF&rSRJ_84Gf68YU6D~x>lGSF362TwlQf>49!i&o{lS!_`S_Y_NW z#I2_3>az6{#uOZ1)wOg%K_v}VHns_XK9-82Hud5nO{0ulSUX?ouV(bGu3BugxcRwn znc8|-N${{a(L7wfY?70H`|jP*+Yw9k*cS;N(c7xe+cMBWzg$8qcaLVpGV!sd6N!@& z%kueDLxumayo<-ssOR@|QhGKa#i}G4deEhG3CSoy^x#vOPVU5kf1ExW2N^lZyCg&` zK_L#gvZA6bi!VtcrSIt*T(!~%+DZ5txi>^G7&0(4_Kba~0bFvt%Xuy?F8s#{%hfeVzQW|Q#;r2`t?VrxS%v26XRicyR-(Q9z{GV%7?}; z*#;fMxcZo~xVZKrdcWE%JYLI0GH&^|@Z*9<*p|M`E1i0wQW#%nw#g~)%NuC zOrsV=<=D)s7L4zz;l^ZTXET2eydAJ3H-1?n(VH?=2FsLBRa0|i{>!{zRh?ejylqM4 z{wp_0u3;XJ!(vA#@vC=yKAjro8ya+J+}_Fy^e&PedYKvqspCGoIJNE2ZWl1VJa zpHJ~GPa9z2bRk=5Tkx`Q27gJL0eouP`a|T{cITHUoRNLiLH9+^-Z#kRPUVjR_g@?4 zX;Rm@k^JcV&@q{~x@T15u!0hMSM@1o>yRk!B#?x0;#$`_u(n^8c#^I$`HY<lq~sq7ZJEc#m1!QVipf+K<;4He&B}hW3Od_%V;KM z-GWyO(_r*b7OhWfhsrh9E30QG{!rI;zimbvSDaMz53Bca{4?e0i53<{Z27uv_^?zPfh=NMyo+WI%|Pb zdpbTVTHGjSB3B~qOcE^1?}JEfViL?7x!!alD`Yf>tMYwTeD~s7H%*QOKtTS8zM-MT zM7{6~3EW1)@G?IFsvdEbMn#pc@&%rTR0qrs_4<<}cw|CBc_nO$d3jKRO@@AFyh(ks zL*UYMxVYCX`-RZIpF#;v$GX{^esco+Ow`MQ9gL`K!ss`ZtmCH0 z4(Y3x&F}iGN}Kg4_TZ?itKacCes;kGE8$~&oN8wR@7>SF-NZ{HpR zz8}A&gzFaa%;A~au-g*Z{qYSPtFdxDImNbIVh6F4>%5@}QL-)kAC?Td$|gO{_vcr0 zVl^B^yVMLq2a!k<{FLP!q{E~n>h`|C2$@54!Sk$ZF@|S~#oUT($A0_tW4xa{uU4Pv z@BXCosmgafsNQ=}`6eP(={eV{GqQ& zXuo?}e>^oc1$lF9oQ5>l+=CdChlhtP_fvHQ2aT)Z(CmlUY>L$9xGhw}*iTw%6K1U} z4q~=?akf*8i^o@#!yoL)5DW5d3nG#}LNjzL$>Uk?@<;ww%Lo;#22vZW$1ZL%?N+ut z&rN03p6>XzB)7CkF4>MUv$GPedJx$`+A0Y~XoxP-xxCcLPBhJ(Qg-jts@G0`H7utHa8pwkP7;`9j;6!m{jyqHL2(M|}ac@$%q&u2@~b48XLr;^}@ zmDI?n=0vw_T^T;vO~Bg>?He2~r(?C=S zX<%9RTAURS`_IHz6IoK+RofD>INFZNqZ{iD8gVKxS&iAw?^_oTIVe7u^)3J2hQWWm8Qh&UIl1JC)^=*AX|sEeV(InO{= zYV8}(v#_w(`AM7MZev`RuETQ|TbWu2H%|bn1F+nQgm2@SSXioT=K}AosA;F;j*;6e zMb8`P2M-F(VZwE^K0ZF0r50%6NK!H@H`hL*f1+s`Ya-~~?n+0Mbvls0!atT;R7YAG zZsfmi#Re?)YW0By#cv8H<8b<-QXB>SKg?C*?SKC|14OkETWWT$SxMZ^Wmois4C5aa}eZA@K15B(wh2d!PBo{W_^A zBN=&GYP)-Ke!evTD7GqUWeQeCm-y z*Yhm5E|cT@#Ru~G{ry`~J)h{IyK@8TbNL7az}r{T1c720Ux=+nE&}*dG3B2mz_0-KiG|D7((gEG&xinrWXJ)M65m8W2(Q$x10|EOcL7T~e4^ zU0)x_&@8h;SJpYM-R;$3&bvNotcprX|Dg9?SnccAuV-gxq0NS(Uml_kRhc9T8h@C* zTp}M6`EAV4UaW5yO3}h2s+UOt$9c0vDID_P(B|uo4%rCdhb};4U)%e0#S(NBJLFP58;>wEHHElzBENIzPMWMiN^R}rxKspncy{QjnmD<# zh6Y8(OSTu~1;93DB25JBmE?>a&Q3jmaRp_BFfkcvVsEc}n4FTLC$NL74(CBZp}T5f zn06@o`H^(RO?(@ zbhReEVd!br=`JMZuyYNX&sijTc4$a#cICPD&!#5&R3=CX1o-&siwQuDa*;VGwWmbv z;Brs*V4sgDa`rQ?9}KpVJe8pr=nxS37@BF>_|MlyR`LtMMG+v}J<_O5X@@Vn1>u{B zfpAvugUxUmgd8E<-``({Bslt=i9HP3E^>vT%clk3KLStTwKIM|EW3IA^&yF-|3(->q%T^8%q`HNTPod5;=)= zJdfS{>hM=gYCa_PKN$&H=Q;odz#uFp5N)|`Hs=*&qUlG#;oV>|ATK_><6DLF&!Y7Y z`|^dYpYlYJM1+FT@w?b7(0xttWiIj5wks1gbVTcTX2quJ1lF5aS)KL@p7g32$a{G3 zH(r1N^*8XY%oq?U2@}!7fj;RD@$4HI$k1U`qW#G|=^g?56hwSj=5@pk!W`t>cTUqy z=U4OUcpl9C{^3`WtOJ8^KiM5LH8q6|?G!kAMi)Mfg<;T@{d?Z?87>DY4u`&yFg7-} z#sK>@5xwIdg2$pPQj49ZtDUFNJVu;fyF8WQH5(Rl<;~EmbA?f_{nxK36zZp~6U)7O zE097WZ@^xtUW~&G=QU!!q~CC^J(9HSPkNnwO*&y=U@#PBh>VLn(mC7J`FAa598Nep z`r6wT%+0zYjNt(R0ky|%wZU`ag|(+EwTbcZX$|OAyaFr##xzLG?>IJ4gb%!Jom`FTU9?4diKh?K^qxA1oxH+d}J! zs+2_xU9DDHsU#8E;w;)bzHee;V*~l^yu8k`ls-SS8dKBOJ{@4bb{?R7MocdNLLv+v(U4|qU|hZ-w{Yl)x8_J&~-9uNg=@>uzw zzAUBMvy%grB??G(Use#oeM&;2%xC@U}TraplpYx`!mDL9% zCWJlmk^ocxEwakXsGyjbn4dp?PESvdjg3tn&vS#=nfeTt)fe$b&UZ4BP)RuHV`5^W z&dKs~C>r638W}NvblTFl%m2)Ea^{Q3oO^v)C!Mne>0 zd2w+FECP+ql2TI4?Cdl*ZwC3`asE?A4Z02)Y^VLQlKTxo%>jD{4kecN-!S2|wY3b- z?CflycN4+i(GNUy!}qrwmVOA0LEm2|@TMoU=%)uDm>C&E6aEk7&B|)oPhp=_{ocJ} ziQC%Q*?A@>SLS;uNP@V($Z=_X9pzyO3D7npep|&eCidgUOB3Qud%rBvx~4d8o>En> z;Ij*P4=z2z!C2A6<@Y)r6DV1f*{LD!>Fy2-3;Qi_uMiZ=ZTtV7VyUi^Zs^wA;L-ca z#^(M|(OQw^=tJq~$X9PxM@r1u&VcP2>y1@#;<1_XZewxrMQGHPlhbCr8DN2Rf$)_k z-vI(q896x`UdLx` z5IEa3HLd^~bB;$8+CcsJj74W) zGFlZ#CYP2zg!ex>e}7{Xx}0&mno$n(4Jv*MYM=j5pR|O8A1W?3w%C1ZR+3kAiL{NA zmp5me+hT~wLVXD(0X`42-R3ZQjT+CBZ>V%z>bHz+Yy;W+t!rh{Q2sh`8!z_v_kSaT zHN}H9h2D%Cnfdv%#1jyEsseyH4gVO*4!U$=Y2u?-^_Jlog+8$e+rt)vE+7|6AYfOc zgkd69PM@W*SVs9DNJGA^>E!|@8oaU1a=d7Zz6{ohMgkWXh97TRP% zfX^c!B#d))2JzXW+O{*1zZ7`Er#TeAS*36xeT0OBbox>AK*>j{kmwG}^*)U^9j?Y; z$K>MYUu(rACpr5Sj8`ad3&Ig;BIAVEtFOw;%uUr)!>IMc8DEX4ffgpY%Lpt!77F8o>G&Slu6lu?!6iZZEe{adL8k z2q^8m@ngb*dzj=wMl&%BtU(iXqF7Az)pv^?VZsGuYAN2L6q}iey zH|H&JIX|Qf6}Cs5vHL7~yvD-}W3jGFf$@RM3491FM=nOj#@yW8O&=v@9StgNhh*mLXaR)zylU7-tV+oq|HTp2_TiSBql z>04pkc3&*bTHV>*b$P$Pzpt5Ww-M)Zb+!3Akva_Y+#+#5Dr^lE2G>D20d+&8>%b&OiBw_biBLioxPzpndtXIaDe&0e z30DRCU-_$Mo=A7h3J?{q-}{Q;-)Y%GaVX_iGD~ z;#XKfW&13Ad_tI6srdava4=(aW@htR&JG3;gAI>K?>a@w_^cjuNe6vVdi9t5cYWSi ziP9nQ7cCH;)ap{a&C%8zy&vx&FS^|n4PRWzuXTJw-&3P=2#R0YLRIg}Rw(OV3yggr zIMaWoY24Ns!}|)PO=s+6cPdH{z!=Ff*J4#N#^ ze>MpxzNaTVF>!tC*|TRuoM}>nb>r#gI~ED8K!Zw6cwF0updnk~%f4DGEAHd4FUgzo z`v|(QlVF?Qs_P?6Co}ou&_@bNk{$n{IV;3_G#eZo5+WU4Tvk?jy!Whnr&r%l9uO)R z9KOB`(IP}39tET#p#HBfUo4$R0e$IFQT zVG4mF1y*gt7zaI0kBTqjAzsHbprC8irPQ8`)}AcMd1WJ@rS3BIJBhBoMRw0;XR^1a z2c2U>z|b-DzBYl^X<%^h-W-GuGg(|(cWnew-yP2Btw%GS16U0@1_w&4nB-!F?-3ft zKw#$3E7P3g8EJR$t{ftEuTaccqtVW7v^gL?K3*p7VarlZlFdu=U2cl$&!0b=uK>Ha zDkAoP*d{0iPU1m-3OcXQ&U+eT-Lqd~@o>o>H%{`%(4m@!4$W)#xtGKGSVe&#FuZha zwMXL{WDGv@q9No<#SSkLj6oIWcQd%Ph_sp|z`!SAQ>HLPMowv~OF&IlV66%--;cE?|^s(xcI^+(EkBg#0F^0I{Q52>T^?%+IzcG7n*7C)Zxkfg z(_(Vv68JJM1r?zeP}_?a7MOmgn|^{eJQ&1aOKl*BE)A;56Wqq(k|P7?qbR|BDR(+6 zM?fR6n)m=023vP%ZPZNb|6cI;H=!P;ALBLn8{jPBOE7}`n!{xnR^(;02ap^mK>WX2 zMZ~ixM+Ocki)54v)zc?O0)=*T`rx7i8 z{-Ym^G;w$5V`tA#P4&S_E5*5Fcmmq-=~3<35xdtx8(Ld=?6ACFd&b{*3Hoofd#jMo z!I4Wb3Hrmr!h$BzZ(VXOE-r|oG@vESq=n{TFQ9fYjsm9u=7|bhOh2?ctbn91M)FrV zp*h-yTu^Xd4cEcZ5sX6Ff}*$znpGtX%#Z;)T3f?yZJA)^FVu|Bty^a6leI}G)VwN# zIXHdC?(=7#(=FCWTAxhTi4o!`pxbJk|A^FvCCLGpKIqT)j0y`=(9)8ryM~|-XlSA?{JTqlYS|&pXw0t?T!DC3u2hL!B*)Z4(REP zn4h;O+H4BuBlNS*y==58(5|7qrVw@n@W^wsyg4?E*Jy!|L!;zngnOV zb?eC*{7~VMY(B@A9xQ$)$JAT~X=_trGu2UK4Z z(IzLUAf-K36REppnhZ^=ac80ectWt$CVhYHI~xLa4}HY)aHGc9=9K%g zKEpj8q0fAYI8^)s<>7pswdYnu5{;i`AMhO={8UZf#~&IAqDV`9uKW|CZ->7T37J!&gOJZ-)@16v+i5No!7U0 zK3>7{e+$h3Jw3hPL5p0?!Te1rT=c!+oW>ph9?d)9EeiAr91qu>#jA~25G1=zz-HY( zw>OI|`Rc#hC`B*e@C#;nP2K9Q-d?-En|dQGxxU;#NJXm9UrfBgVrG@+0Nbt`#+56X z#X^lRsWnVS#^fF>QfzXZ;)}`2-coqV2=Mb#GcsZ@v%-Fx5R#B!M3KQ@0>-G}uu=

kWBLL$VcGU9AD4+wCNU3G^Y03&=j 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 literal 0 HcmV?d00001 diff --git a/uml/generictoplevel.png b/uml/generictoplevel.png new file mode 100644 index 0000000000000000000000000000000000000000..45f9c62b76d4fe789ba8bdbd461bfea02a3428f1 GIT binary patch literal 3307 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 literal 0 HcmV?d00001 diff --git a/uml/interaction.png b/uml/interaction.png new file mode 100644 index 0000000000000000000000000000000000000000..1d2b6efb7cf38d261ae4381aff79f50eaf34cd83 GIT binary patch literal 5158 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 XYmRF}$BzO1Kad&B5?X3>{o&sLTJ+2| literal 0 HcmV?d00001 diff --git a/uml/location.png b/uml/location.png new file mode 100644 index 0000000000000000000000000000000000000000..2ee8bd6236de1309f38dbe8cd9ff270f423d0a2b GIT binary patch literal 10952 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 Yk1WSD9W>UDz%UpxQi_sA;?Mp62lc@UssI20 literal 0 HcmV?d00001 diff --git a/uml/maps_to.png b/uml/maps_to.png new file mode 100644 index 0000000000000000000000000000000000000000..0618a10a76622eea899870d2e6c00a61d2e6cdac GIT binary patch literal 5833 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 Vs<34(`8EjrRF!Th7Rldv^e=Ets6zk% literal 0 HcmV?d00001 diff --git a/uml/model.png b/uml/model.png new file mode 100644 index 0000000000000000000000000000000000000000..78d4baa60001ea143a2ff10182e764e058e6ac47 GIT binary patch literal 4283 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 Gh<^b%7A>Rz literal 0 HcmV?d00001 diff --git a/uml/module.png b/uml/module.png new file mode 100644 index 0000000000000000000000000000000000000000..687622e86ea9d48ca95ecbdac41e22ec4af9172b GIT binary patch literal 6586 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 PCKiIy)YB+ezZ?E9qgb!! literal 0 HcmV?d00001 diff --git a/uml/sequence.png b/uml/sequence.png new file mode 100644 index 0000000000000000000000000000000000000000..6ec642df4be9eae853e1988184888a7f2b6bd0dd GIT binary patch literal 3782 zcmZ8k2|Sct7nkfiSzm)}rL0++@fu1~7+Z-fA%>BiA!Qj+wy`xDViM9`!ep|Jv5h6! zL)l}bXlyg~ETiwK?|t9j`+d*v_bm53_nv$1z5nw+=cHV)Hs$B}gNKEMg&%Hq_9F1E z0PfdZtiUtv+A5ZXMc@wntg&6h*iu2rSudJ&JN~4iqNgO>L_`rz7I83nCyB%1N+f;T zC8gfJdoOvyz$7*u+5TSA30IPi49Gk|*aP~Gjr5pj2IMIf%h-?MzAn#&%dPGAKD^eq zG!&LMRZ8E=SjgXMm@}kDPWA29^`V!q^=+#ify?h$S{>#VfTPUfU?QMQ>RmRB5=4n2 z|6BBb&HwfoiR~Z2sn||`pjzxw#s40{hM@|9;$SE)tYy*G=H`v&bFoSy`i{5bFXlTf(T2@(^9s0c)=tv~uR^1w7 z)FIfQ%cO9+?9utfMZSSG1wvvXJKk)nE^_Uvr{_U~mDO)uTl6XNo7cs~$Gigq)FM)I zbEP`vf4apoy^bN%OrC1A?Cn97f9@>2L2TO~5c1#9eJYRv!r0j5spN^zpX)RrmIpyU(gCD~$#9M;p*v8Z>b5Byv36)YO!7T(V4Q8~7Lv z^79h`nR0T*XP19qPPR@=xQGP4f8tynMC6rP&nj1VRb7q$+|XcDwT&c`NTbeJouift zKU316!vxnE)vNqfoE#kX4i48sLwR_3PJ+Q%U%|Ho76rMn@tP;<6bJYs;P8~bLm(-s zqN1XeD6yrbr6Ec{Jo`A4$((FnkvDr*em)X8*IZ03&dCwaYgBFQ0CMFheDr!BsElvL=>K532 zwl%4e>~-eL^^ETps;M-VXZP!x{6j+e$+hzA)$hXn++tkhM2b>^;$&n%VOQ*38k9L; zLs0_LLeQAKkx1@t)}h!Nja?Itd!5uC-Eu=wuPvK^+!pN-?}})P?+M#I!tXF*Ak+HG z@KD}tLTJv!ki`0-acODksyHhftyXzjmnOuBcwAMr-r~NeA|-^&1McMJCTDQtAFuhx z1q3Ma5TNnnE6Qv~apOe)j~|f0o|g~Kpnhz$Nw~3a7W(l}Ry6Bx?ryI2oystI8vVAE zLm2c^TN(hao^*6)1eZYLXqk$pkr$NBl(ig@xgrGO?oNWggQ1j8N^8r;DSixiAHju1 zUWEaoga`amf)rdgAjg&Tl+@eX>px5&-rQVtqNh=wAL8LG=RV3@?b38Lx3c0# z)eL8QI>ga&;WSTAPcoT|+~1xnR4)kJ3hk(@)T67?4vC*jqS0st1qA>TQYe({Y%#i% z3c|-Hd3|)$X{spxk_ZT+R=YVtx|UyERh47(NT+VfC~~#c3XIIl%_Xky@5kULKYm2M zNeaWCwjO`swsff(p6XHk`t|F&x{3Omp+P~t4NrELK2^Th+}u?9#)Yl$2@6|arwtO? zR8>`%lm|EGL(@Cw=Z`1dhF*0?U8a>UE-w1$@>n_$Tt*LJ%bs}1#aPcTFHcTRR#juF zDl6N*1cNw414hQHgYkHLS7#?c2UhXxl}t>%LBLh4Gwy^yEmc5Z8JmJ+NZlXRBTf$X!G-L`$q={ zTTDz%G0z7%H=BLY6ZPn}x^1~Dkh0CHK;;h<#5v{L@g2SB9Dq{>8kw8pWxvMr+S=IJ zwMHu9%>4aTCzWjt$XQug-3uodbdu3%G+a$XWAaXyKqP~Dpgw57B>w56N4H$LJdJUM zg~7m5ve^WV+dDeGU#>@QG0Y(1vkaZ)PGOL5|G+>d`jX)jQ{Sjvp1$?H?X~6Ek-fdT z=jA_ixxPE>4DfQs#OrGyZ^?r762!zfFp;f6Vp(`R=33S>5CvyKbaamn4h&>(^oV>* zB1u`gxw&~qkMlHB5b+P+h&)s-d8MQfTUK%Ko+8BPb{y)vfNw4Jt|%-jTCF|hf1?{H zcxiDlde4v!@Lxwqhaz^X!wv$lrT*S`x->Q;<7i}J>St-jqylF_!3m3F>b?<#mJ#ys8#Byh+xtEu6iU8Je zPj;b!S`)S5XJvIKF~nUzXrjhgrpyF>JpQqQ%voz5kcEYX3!@9K8F-p)n&DOE-scE~ z&b6gUh?nXc7#Khx5JSU)XGl5`a2C))^BH}{;%GTw_C45OMtVA<6x`Iz+nxswwk|Yc zGNxNZr|;+Hh8&@&YG+`vwVz8%OP@S>LaTA{DrtTMyE&nu$43?-i(h=DK4SBUFKGrK zjhBz}9z1B+nO9AFzD5!5c7IV>RaHeGEDt=lAdyIdvd~wrULA(n+Ybqz+7r6*NT=&0 zQvHm~Gqc#eA0dF}D~W6`lj-K><|_Fi(bLWB5}4`4_@U}vGhu<3gbt@fQunpFUK?d_X@V=4m2vOv>{UMLz&Q3!JBZ|Z*vs8;cz8HiW+qV)!Qqc5 z5Hu{1UmByg-v&93_ehd7o2yPyIa0a^a^b#G{3Nr9?fcA{@}+8vGClYrWGTC z`_9S2HZvDki|kr&VKW^xlIg zE+HWU;?~*Q-=#!#KRLu4_i8t*6{Kz#5j?qLS=@(YZCA3W7fq=`)8kd<-4MJFC`{>SF9pH_|nr6td zPouI*eyt#Stp~iZu|YU(a*pG?YE3GT!Gw@&Tr22>vHP?Kz>ejGXSM(;mufOwh-GEe zC-)vJX=?V(uEH?!M2aYNHsW!hq!>U41QINbzyrOe!839rYzw@ZR{ea80S3 z>W@!ADM7U&3Y&P_0TlZ7$i?pAI4bX|znzYCw3}*gqVP#V#k2AFnUmUjW$R7jP4OJ~ zqM~CCQUhD;oTHCOPoKsgl+Ww*)&eEltE#CX+bHSImoKNHb*S70YCzLn%>A= z<*oAVwx{~m^+#lx-X!L(3JEqpNC92!O|BL$`FdcvM+Y8>Xgj}Edw3^M`OYbm4?~k^ zD9DzO-^Defk3z+$nxhgR6^S-TZ?1BvEWlBX!;+d zqi?n?o4dRDXeB@DQHxS)hb%-jv#{=khSQ9j{(Z7N{?`sc1XaY$T&a4$&s-$nx9PxW@32bk#wZ>Fk{*0h$CZGX| z^|~R<7dE*xUQJWdCQsSu&jTzR0OYz^qu-4YD7HQk@xSJ#E~GH*}zJlAkC0Hdx-r$qL?NoR5}e4u9Tn{ky8d3+(h~MP2q}_WuU&kzH!*l z(9nGo-})Io%=x0$)taCd?(64KFiVqeN&_S3+cz&>-DlZpsi`hIYjb_J35sf0j>w?2 zaNB>@)Yr>s9)0XeYXr@D)SW&XR^`>X!L7VjSjFxiRz=z7}* Qs83no=d8~X&bY_@2i&@4TmS$7 literal 0 HcmV?d00001 diff --git a/uml/sequence_annotation.png b/uml/sequence_annotation.png new file mode 100644 index 0000000000000000000000000000000000000000..1a339d41620dde8f4e9be6ce3e8b22b985eded33 GIT binary patch literal 7039 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 Yr5H@r4U*d3!EhRwrk(~??e3HR0D7llzyJUM literal 0 HcmV?d00001 diff --git a/uml/sequence_constraint.png b/uml/sequence_constraint.png new file mode 100644 index 0000000000000000000000000000000000000000..334b6987602543729776e3b5c03d4a6341875167 GIT binary patch literal 6276 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 WoAI|59QbzuqN1dsSStUg|Nj89A2!1P literal 0 HcmV?d00001 diff --git a/uml/toplevel_collection.png b/uml/toplevel_collection.png new file mode 100644 index 0000000000000000000000000000000000000000..3e98d79cfd41f14693ae9fef8c8ee021aaf020c2 GIT binary patch literal 7030 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 PX>{s0Z>tn4-3#~+nM;h0 literal 0 HcmV?d00001 From b8e683e1105d3242238e08b3d0bba663ab877f42 Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Mon, 16 Feb 2015 17:30:02 +0000 Subject: [PATCH 002/317] v2 --- sbol2.tex | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 101 insertions(+), 7 deletions(-) diff --git a/sbol2.tex b/sbol2.tex index a2270b54..0f136163 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -46,6 +46,36 @@ \lstdefinestyle{latex}{language=mylatex} + +\usepackage{listings} +\usepackage{color} +\usepackage{xcolor} +\definecolor{dkgreen}{rgb}{0,0.6,0} +\definecolor{gray}{rgb}{0.5,0.5,0.5} +\definecolor{light-gray}{gray}{0.97} +\lstdefinelanguage{sbol} + {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection }, + basicstyle=\fontsize{7}{9}\selectfont\ttfamily, + backgroundcolor=\color{light-gray}, + keywordstyle=\color{blue}, + commentstyle=\color{gray}, + stringstyle=\color{dkgreen}, + tabsize=2, + showspaces=false, + showstringspaces=false, + breaklines=true, % wrap text + sensitive=true, % keywords are case sensitive + %morecomment=[l][commentstyle]{\#}, % comment format + morestring=[b]", % string format + alsoletter=: +} + +\newcommand{\lstsetsbol}{ + \lstset{language=sbol, + tabsize=2 + } +} + % ----------------------------------------------------------------------------- % Start of document % ----------------------------------------------------------------------------- @@ -100,6 +130,24 @@ \section{SBOL Vocabulary} % ----------------------------------------------------------------------------- \section{SBOL Data Model} % ----------------------------------------------------------------------------- +In this section we describe the major entities of an SBOL document and the relationships between these entities. Complete SBOL examples and best practices when using SBOL can be found in Section \ref{sec:examples} and Section \ref{sec:bestpractices} respectively. + + +\subsection {SBOL Document} +Each SBOL document is also a valid RDF/XML document and starts with an XML declaration with the XML version set to "1.0". The top most rdf:RDF XML element includes the SBOL namespace declaration, as shown in the example below. This namespace is used to identify SBOL defined entities and their properties. + +\lstsetsbol +\begin{lstlisting} + + +... + +\end{lstlisting} + +An SBOL document can also include custom namespace declarations which are used to embed application specific data as explained in section \ref{sec:annotations}. + + +\subsection {Identified} \begin{figure}[h] \begin{center} @@ -109,16 +157,36 @@ \section{SBOL Data Model} \end{center} \end{figure} +SBOL-defined classes are all directly or indirectly derived from the Identified abstract class. This inheritance allows SBOL objects to be identified using unique URIs that may refer to relative locations within an SBOL document or permanent URLs from the World Wide Web. This class includes the following properties: \verb|identity|, \verb|persistentIdentity|, \verb|version| and \verb|timeStamp| (\ref{uml:identified_documented_annotation}). +%TODO: Is there any example SBOL entity that does not derive from Identified? -\subsection{The Identified, Documented, and TopLevel Base Classes} +\subsubsection{The \texttt{identity} property} +This property is required in all \texttt{Identified} objects and has a datatype of \texttt{URI}. As before in SBOL Version 1.1, this \texttt{URI} serves to uniquely identify a SBOL object. The \texttt{identity} attribute can be used to point to other objects from the same SBOL document or resources on the Web. Although all SBOL-defined properties are controlled using the SBOL namespace, this property is represented using the \texttt{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about} term (see \ref{ser:Collection}). -The Identified and Documented classes separate out data fields that are common to many classes in the SBOL data model. Nearly every other SBOL class inherits from the Identified class, which has five data fields. The first data field, “identity,” is a URI. As before in SBOL Version 1.1, this URI serves to uniquely identify a SBOL object across the World Wide Web. +\subsubsection{The \texttt{persistentIdentity} property} +The \texttt{persistentIdentity} property is optional and also has a datatype of \texttt{URI}. This property is used to declare that a set of SBOL objects are versions of each other (by virtue of having the same persistent URI). This persistent URI is ideally used to return the most up-to-date version of a SBOL object. -The next three data fields enable more sophisticated versioning of SBOL objects. Currently, if a developer wishes to change a SBOL object that has been published to the Web, then as a best practice they should create a copy of the SBOL object that incorporates the change, but has a new URI. This practice, however, does not inherently involve a standardized declaration that the second object is a version of the first. Consequently, the ``persistentIdentity'', ``version'', and ``timeStamp'' data fields have been created to provide developers with the means to declare that a set of SBOL objects are versions of each other (by virtue of having the same persistent URI) and label these objects with version Strings and times of creation. +\subsubsection{The \texttt{version} property} +This property has a datatype of \texttt{String} and is used along with the persistentIdentity property to indicate the current version of an SBOL object. -The Documented class extends Identified with three additional data fields: ``displayId'', ``name'', and ``description''. The contents of these data fields are identical to those of the same name on a DnaComponent object in SBOL Version 1.1. In addition, displayId is now an optional field. If a Documented object lacks a displayId, it is expected that software tools will instead display the object's name or identity as a last resort. +\subsubsection{The \texttt{timeStamp} property} +This property has a datatype of \texttt{TimeStamp} and is used to indicate the creation time of a SBOL object. -\begin{figure}[h] + +\subsection {Documented} +The Documented abstract class in SBOL represents objects that can be decorated with human-readable properties, such as name and description. This class extends \texttt{Identified} with three additional data properties: \texttt{displayId}, \texttt{name}, and \texttt{description}. + +\subsubsection{The \texttt{displayId} property} +An optional display ID, with a data type of \texttt{String}. It is intended to be used when visualising SBOL objects. + +\subsubsection{The \texttt{name} property} +An optional, human readable name property, with a data type of \texttt{String}. If a \text{Documented} object lacks a \texttt{displayId}, it is expected that software tools will instead display the entity's texttt{name} or texttt{identity} as a last resort. + +\subsubsection{The \texttt{description} property} +An optional, free text description property with the data type of \texttt{String}. + + +\begin{figure}[ht] \begin{center} \includegraphics[width=0.75\textwidth]{uml/toplevel_collection} \caption[]{TopLevel class} @@ -126,9 +194,30 @@ \subsection{The Identified, Documented, and TopLevel Base Classes} \end{center} \end{figure} -TopLevel is a class that is extended by any Documented object that can be found at the top level of a SBOL file, that is any SBOL object that is not nested inside another object when written to a file. Instead of nesting, composite TopLevel objects link to their subordinate TopLevel objects via URIs when written to a file. For example, a composite Component object A would link to its sub-Component object B using B’s URI. -The first TopLevel class presented in this report is the Collection class, which groups together TopLevel objects that have something in common. For example, a Collection object could be the result of a query to find all Component objects that function as promoters or all Module objects that function as inverters in a given repository. +\subsection {TopLevel} +TopLevel is an abstract class that is extended by any Documented object that can be found at the top level of a SBOL file, that is any SBOL object that is not nested inside another object when written to a file. Instead of nesting, composite TopLevel objects link to their subordinate TopLevel objects via URIs when written to a file. For example, a composite Component object A would link to its sub-Component object B using B’s URI. + + +\subsection {Collection} +The first TopLevel class presented in this report is the Collection class, which groups together TopLevel objects that have something in common. For example, a Collection object could be the result of a query to find all Component objects that function as promoters or all Module objects that function as inverters in a given repository. An example below shows the serialisation of a Collection object. + +\begin{figure} [ht] +\lstsetsbol +\begin{lstlisting} + + 2015-02-16 16:37:54.381 + col1 + Collection 1 + A colleciton of DNA components + + + ... + +\end{lstlisting} +\label{ser:Collection} +\end{figure} + \begin{figure}[h] \begin{center} @@ -297,6 +386,7 @@ \subsection{Module and ModuleDefinition} In addition to specifying a link, each MapsTo object must also specify a “refinement” relationship between its local and remote Components. Under this data model, there are four types of refinement: “verifyIdentical” requires that the Component objects link to the same ComponentDefinition object, “useLocal” indicates that the local Component object overrides the remote Component object, “useRemote” indicates the opposite, and “merge” indicates that data fields of the local and remote ComponentInstantiation objects are to be interpreted in combination. \subsection{Application Specific Data - Annotations} +\label{sec:annotations} SBOL allows embedding application specific data that are not captured by the SBOL standard. Such data are optional, can be computationally generated and exchanged via SBOL documents without getting lost. These custom data are stored in the form of annotations, providing informative metadata about entities in an SBOL document. Each Identified object may have a number of annotations in the form of name/value property pairs. Property names are specified by qualified names as IRIs, each formed of a namespace and a local name. Values can be IRIs or literals (for example, string, integer, double, boolean) or custom Identity entities initialized with application specific types. These custom Identity entities can further be annotated with the scheme described here. These custom entities are either serialized within an SBOL entity being annotated, or referenced using an IRI annotation and embedded within the the annotated entity's parent. @@ -323,6 +413,7 @@ \subsection{Application Specific Data - Annotations} % ----------------------------------------------------------------------------- \section{Examples of Data Model} +\label{sec:examples} % ----------------------------------------------------------------------------- @@ -333,7 +424,10 @@ \section{Examples of Serialization} % ----------------------------------------------------------------------------- \section{Best Practices} +\label{sec:bestpractices} % ----------------------------------------------------------------------------- +Currently, if a developer wishes to change a SBOL object that has been published to the Web, then as a best practice they should create a copy of the SBOL object that incorporates the change, but has a new URI. This practice, however, does not inherently involve a standardized declaration that the second object is a version of the first. Consequently, the ``persistentIdentity'', ``version'', and ``timeStamp'' data fields have been created to provide developers with the means to declare that a set of SBOL objects are versions of each other (by virtue of having the same persistent URI) and label these objects with version Strings and times of creation. + From e7e4406be69c78bd53d732e3dde46fd76f58b507 Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Wed, 18 Feb 2015 13:26:57 +0000 Subject: [PATCH 003/317] v3 --- sbol2.tex | 395 ++++++++++++++++++++++++--------- uml/collection.png | Bin 0 -> 3330 bytes uml/documented.png | Bin 0 -> 5246 bytes uml/generictoplevel.png | Bin 3307 -> 3128 bytes uml/identified.png | Bin 0 -> 4099 bytes uml/identified_annotations.png | Bin 6039 -> 7769 bytes uml/toplevel.png | Bin 0 -> 7329 bytes 7 files changed, 284 insertions(+), 111 deletions(-) create mode 100644 uml/collection.png create mode 100644 uml/documented.png create mode 100644 uml/identified.png create mode 100644 uml/toplevel.png diff --git a/sbol2.tex b/sbol2.tex index 0f136163..ced16138 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -47,6 +47,7 @@ \lstdefinestyle{latex}{language=mylatex} +%Listing style for SBOL RDF/XML serialization examples \usepackage{listings} \usepackage{color} \usepackage{xcolor} @@ -54,7 +55,7 @@ \definecolor{gray}{rgb}{0.5,0.5,0.5} \definecolor{light-gray}{gray}{0.97} \lstdefinelanguage{sbol} - {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection }, + {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition }, basicstyle=\fontsize{7}{9}\selectfont\ttfamily, backgroundcolor=\color{light-gray}, keywordstyle=\color{blue}, @@ -70,12 +71,23 @@ alsoletter=: } +%Command to format the listings containing SBOL RDF/XML serialization examples \newcommand{\lstsetsbol}{ \lstset{language=sbol, tabsize=2 } } +%Commands to format SBOL terms in the document +\newcommand{\sbolheading}[1]{\texttt{#1}} +\newcommand{\sbol}[1]{\texttt{\hyperref[sec:#1]{#1}}} + +%Command to format external terms in the document +\newcommand{\external}[1]{\texttt{#1}} + + + + % ----------------------------------------------------------------------------- % Start of document % ----------------------------------------------------------------------------- @@ -133,6 +145,7 @@ \section{SBOL Data Model} In this section we describe the major entities of an SBOL document and the relationships between these entities. Complete SBOL examples and best practices when using SBOL can be found in Section \ref{sec:examples} and Section \ref{sec:bestpractices} respectively. + \subsection {SBOL Document} Each SBOL document is also a valid RDF/XML document and starts with an XML declaration with the XML version set to "1.0". The top most rdf:RDF XML element includes the SBOL namespace declaration, as shown in the example below. This namespace is used to identify SBOL defined entities and their properties. @@ -147,159 +160,180 @@ \section{SBOL Data Model} An SBOL document can also include custom namespace declarations which are used to embed application specific data as explained in section \ref{sec:annotations}. + + \subsection {Identified} +\label{sec:Identified} -\begin{figure}[h] +\begin{figure}[ht] \begin{center} -\includegraphics[width=\textwidth]{uml/identified_documented_annotation} -\caption[]{Identified and Documented classes} -\label{uml:identified_documented_annotation} +\includegraphics[scale=0.6]{uml/identified} +\caption[]{The Identified class} +\label{uml:identified} \end{center} \end{figure} -SBOL-defined classes are all directly or indirectly derived from the Identified abstract class. This inheritance allows SBOL objects to be identified using unique URIs that may refer to relative locations within an SBOL document or permanent URLs from the World Wide Web. This class includes the following properties: \verb|identity|, \verb|persistentIdentity|, \verb|version| and \verb|timeStamp| (\ref{uml:identified_documented_annotation}). +SBOL-defined classes are all directly or indirectly derived from the Identified abstract class. This inheritance allows SBOL objects to be identified using unique URIs that may refer to relative locations within an SBOL document or permanent URLs from the World Wide Web. This class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, \sbol{version} and \sbol{timeStamp} +(\ref{uml:identified}). %TODO: Is there any example SBOL entity that does not derive from Identified? -\subsubsection{The \texttt{identity} property} -This property is required in all \texttt{Identified} objects and has a datatype of \texttt{URI}. As before in SBOL Version 1.1, this \texttt{URI} serves to uniquely identify a SBOL object. The \texttt{identity} attribute can be used to point to other objects from the same SBOL document or resources on the Web. Although all SBOL-defined properties are controlled using the SBOL namespace, this property is represented using the \texttt{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about} term (see \ref{ser:Collection}). +\subsubsection*{The \sbolheading{identity} property} +\label{sec:identity} +This property is required in all \sbol{Identified} objects and has a datatype of \external{URI}. As before in SBOL Version 1.1, this \external{URI} serves to uniquely identify a SBOL object. The \sbol{identity} attribute can be used to point to other objects from the same SBOL document or resources on the Web. Although all SBOL-defined properties are controlled using the SBOL namespace, this property is represented using the \external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about} term (see \ref{ser:Collection}). + +\subsubsection*{The \sbolheading{persistentIdentity} property} +\label{sec:persistentIdentity} +The \sbol{persistentIdentity} property is optional and also has a datatype of \external{URI}. This property is used to declare that a set of SBOL objects are versions of each other (by virtue of having the same persistent URI). This persistent URI is ideally used to return the most up-to-date version of a SBOL object. -\subsubsection{The \texttt{persistentIdentity} property} -The \texttt{persistentIdentity} property is optional and also has a datatype of \texttt{URI}. This property is used to declare that a set of SBOL objects are versions of each other (by virtue of having the same persistent URI). This persistent URI is ideally used to return the most up-to-date version of a SBOL object. +\subsubsection*{The \sbolheading{version} property} +\label{sec:version} +This property has a datatype of \external{String} and is used along with the \sbol{persistentIdentity} property to indicate the current version of an SBOL object. + +\subsubsection*{The \sbolheading{timeStamp} property} +\label{sec:timeStamp} +This property has a datatype of \external{TimeStamp} and is used to indicate the creation time of a SBOL object. -\subsubsection{The \texttt{version} property} -This property has a datatype of \texttt{String} and is used along with the persistentIdentity property to indicate the current version of an SBOL object. -\subsubsection{The \texttt{timeStamp} property} -This property has a datatype of \texttt{TimeStamp} and is used to indicate the creation time of a SBOL object. \subsection {Documented} -The Documented abstract class in SBOL represents objects that can be decorated with human-readable properties, such as name and description. This class extends \texttt{Identified} with three additional data properties: \texttt{displayId}, \texttt{name}, and \texttt{description}. +\label{sec:Documented} +The Documented abstract class in SBOL represents objects that can be decorated with human-readable properties, such as name and description. This class extends \sbol{Identified} with three additional data properties: \sbol{displayId}, \sbol{name}, and \sbol{description} (\ref{uml:documented}). + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/documented} +\caption[]{The Documented class} +\label{uml:documented} +\end{center} +\end{figure} + +\subsubsection*{The \sbolheading{displayId} property} +\label{sec:displayId} +An optional display ID, with a data type of \external{String}. It is intended to be used when visualising SBOL objects. -\subsubsection{The \texttt{displayId} property} -An optional display ID, with a data type of \texttt{String}. It is intended to be used when visualising SBOL objects. +\subsubsection*{The \sbolheading{name} property} +\label{sec:name} +An optional, human readable name property, with a data type of \external{String}. If a \sbol{Documented} object lacks a \sbol{displayId}, it is expected that software tools will instead display the entity's \sbol{name} or \sbol{identity} as a last resort. -\subsubsection{The \texttt{name} property} -An optional, human readable name property, with a data type of \texttt{String}. If a \text{Documented} object lacks a \texttt{displayId}, it is expected that software tools will instead display the entity's texttt{name} or texttt{identity} as a last resort. +\subsubsection*{The \sbolheading{description} property} +\label{sec:description} +An optional, free text description property with the data type of \external{String}. -\subsubsection{The \texttt{description} property} -An optional, free text description property with the data type of \texttt{String}. + +\subsection {TopLevel} +\label{sec:TopLevel} +\sbol{TopLevel} is an abstract class that is extended by any \sbol{Documented} object that can be found at the top level of a SBOL file, that is any SBOL object that is not nested inside another object when written to a file. Instead of nesting, composite \sbol{TopLevel} objects link to their subordinate \sbol{TopLevel} objects via \external{URI}s when written to a file. For example, a composite \sbol{Component} object A would link to its sub-Component object B using B's \external{URI}. TopLevel classes include \sbol{Sequence}, \sbol{ComponentDefinition}, \sbol{ModuleDefinition}, \sbol{Module}, \sbol{Collection} and \sbol{GenericTopLevel} (\ref{uml:toplevel}). + \begin{figure}[ht] \begin{center} -\includegraphics[width=0.75\textwidth]{uml/toplevel_collection} -\caption[]{TopLevel class} -\label{uml:toplevel_collection} +\includegraphics[width=\textwidth]{uml/toplevel} +\caption[]{The TopLevel classes} +\label{uml:toplevel} \end{center} \end{figure} -\subsection {TopLevel} -TopLevel is an abstract class that is extended by any Documented object that can be found at the top level of a SBOL file, that is any SBOL object that is not nested inside another object when written to a file. Instead of nesting, composite TopLevel objects link to their subordinate TopLevel objects via URIs when written to a file. For example, a composite Component object A would link to its sub-Component object B using B’s URI. -\subsection {Collection} -The first TopLevel class presented in this report is the Collection class, which groups together TopLevel objects that have something in common. For example, a Collection object could be the result of a query to find all Component objects that function as promoters or all Module objects that function as inverters in a given repository. An example below shows the serialisation of a Collection object. +\subsection{Sequence} +\label{sec:Sequence} +The Sequence class is used to encode the primary structure of a ComponentDefinition object using a String of characters. Sequence objects identify their type of encoding with a URI. For example, a Sequence object that encodes a DNA sequence would have an IUPAC DNA encoding, while a Sequence object that encodes the chemical structure of glucose might have a simplified molecular-input line-entry system (SMILES) encoding. -\begin{figure} [ht] -\lstsetsbol -\begin{lstlisting} - - 2015-02-16 16:37:54.381 - col1 - Collection 1 - A colleciton of DNA components - - - ... - -\end{lstlisting} -\label{ser:Collection} +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/sequence} +\caption[]{Sequence class} +\label{uml:sequence} +\end{center} \end{figure} -\begin{figure}[h] + + +\subsection{ComponentDefinition} +\label{sec:ComponentDefinition} +The proposed Version 2.0 data model generalizes the DnaComponent class of SBOL Version 1.1 to a Component class in order to support an increased range of structural representation. Components can represent genetic components such as DNA, but also RNA and proteins which were unrepresented in Version 1.1. Additionally, the generalized Component class can even represent non-genetic components, such as non-biological polymers, small molecules, molecular complexes, and even light. + +% Figure has some classes named incorrectly +\begin{figure}[ht] \begin{center} -\includegraphics[width=0.3\textwidth]{uml/sequence} -\caption[]{Sequence class} -\label{uml:sequence} +\includegraphics[width=\textwidth]{uml/component_definition} +\caption[]{ComponentDefinition} +\label{uml:component_definition} \end{center} \end{figure} -\subsection{Sequence} +Another significant change is that a layer of design abstraction has been added to the Component class. The ComponentDefinition base class is analagous to a blueprint or parts specification sheet for a biological part. In contrast, the Component class represents specific occurrences of a part within a design. Thus the new version of SBOL supports biological designs that re-use the same component more than once. -The Sequence class is used to encode the primary structure of a ComponentDefinition object using a String of characters. Sequence objects identify their type of encoding with a URI. For example, a Sequence object that encodes a DNA sequence would have an IUPAC DNA encoding, while a Sequence object that encodes the chemical structure of glucose might have a simplified molecular-input line-entry system (SMILES) encoding. +% Examples of ontologies for non-molecular type ComponentDefinitions (eg, light)...? +A ComponentDefinition which contains the blueprint for a molecular component must have at least one type URI that identifies a term from an appropriate ontology, such as the ontology of Chemical Entities of Biological Interest (ChEBI) and the BioPAX ontology. A type URI documents the basic sort of biochemical or physical entity (for example DNA, protein, or RNA) that a Component object abstracts for the purpose of engineering design. If a Component object has multiple type URIs, then they must identify synonymous terms. +\textcolor{red}{Examples of ontologies for non-molecular type ComponentDefinitions (eg, light)...?} + +The roles of a ComponentDefinition object, on the other hand, are analogous to the type of a DnaComponent object in SBOL Version 1.1 and the sequence types of a SequenceComponent in the ACS Synthetic Biology paper. Role URIs are expected to identify ontology terms that clarify a Component object’s potential function in a biological context. For example, a ComponentDefinition object of type “DNA” may have a role of “promoter” or “terminator,” terms taken from the Sequence Ontology (SO). A ComponentDefinition object of type “protein,” on the other hand, may have a role of “transcription factor” or “protease.” -\begin{figure}[h] +% Are the class names listed here correct, taking recent name changes into account? +\textcolor{red}{Finally, a ComponentDefinition object can define its structure by linking to objects that belong to the StructuralInstance, Sequence, SequenceAnnotation, and SequenceConstraint classes. These classes are described below.} + +\subsubsection{SequenceAnnotation} +\label{sec:SequenceAnnotation} +The SequenceAnnotation class describes a location of interest on the Sequence object linked by its parent ComponentDefinition object and may optionally associate this location with a StructuralComponent object. SequenceAnnotation objects pecify their location using a Location object. As explained below, the Location class is extended by several different classes, some of which assert locations other than simple ranges with start and end positions. + +\begin{figure}[ht] \begin{center} -\includegraphics[width=\textwidth]{uml/sequence_annotation} +\includegraphics[scale=0.6]{uml/sequence_annotation} \caption[]{SequenceAnnotation class} \label{uml:sequence_annotation} \end{center} \end{figure} -\subsection{SequenceAnnotation} -The SequenceAnnotation class describes a location of interest on the Sequence object linked by its parent ComponentDefinition object and may optionally associate this location with a StructuralComponent object. SequenceAnnotation objects pecify their location using a Location object. As explained below, the Location class is extended by several different classes, some of which assert locations other than simple ranges with start and end positions. -\begin{figure}[h] + +\subsubsection{SequenceConstraint} +\label{sec:SequenceConstraint} +In SBOL Version 1.1 partial designs are made possible by means of SequenceAnnotation objects that can specify that their locations precede those of other SequenceAnnotation objects. In Version 2.0 the “precedes” data field has been generalized to the StructuralConstraint class. A ComponentDefinition object can link to SequenceConstraint objects to assert different kinds of structural restrictions (not just precedes relationships) between the StructuralComponent objects that represent its subcomponents. These restrictions could include “sameOrientationAs” or “oppositeOrientationAs” to enable the relative orientation of StructuralComponent objects whose ComponentDefinition objects lack associated Sequence objects in partial designs. + +\begin{figure}[ht] \begin{center} -\includegraphics[width=\textwidth]{uml/sequence_constraint} +\includegraphics[scale=0.6]{uml/sequence_constraint} \caption[]{SequenceConstraint class} \label{uml:sequence_constraint} \end{center} \end{figure} -\subsection{SequenceConstraint} -In SBOL Version 1.1 partial designs are made possible by means of SequenceAnnotation objects that can specify that their locations precede those of other SequenceAnnotation objects. In Version 2.0 the “precedes” data field has been generalized to the StructuralConstraint class. A ComponentDefinition object can link to SequenceConstraint objects to assert different kinds of structural restrictions (not just precedes relationships) between the StructuralComponent objects that represent its subcomponents. These restrictions could include “sameOrientationAs” or “oppositeOrientationAs” to enable the relative orientation of StructuralComponent objects whose ComponentDefinition objects lack associated Sequence objects in partial designs. -\begin{figure}[h] + +\subsubsection{Location} +\label{sec:Location} +The Location class is extended by the Range, MultiRange, and Cut classes, and the Range and Cut classes are further extended by the OrientedRange and OrientedCut classes. First, a Range object specifies inclusive start and end positions greater than zero, while an OrientedRange object includes an “orientation” data field suitable for specifying locations on a potentially double-stranded Component object. + +\begin{figure}[ht] \begin{center} -\includegraphics[width=\textwidth]{uml/location} +\includegraphics[scale=0.6]{uml/location} \caption[]{Location class} \label{uml:location} \end{center} \end{figure} -\subsection{Location} - -The Location class is extended by the Range, MultiRange, and Cut classes, and the Range and Cut classes are further extended by the OrientedRange and OrientedCut classes. First, a Range object specifies inclusive start and end positions greater than zero, while an OrientedRange object includes an “orientation” data field suitable for specifying locations on a potentially double-stranded Component object. - Second, A MultiRange object represents a location that is specified by multiple Range objects. For example, this capability can be used to specify a ComponentDefinition object that represents the introns or exons of a eukaryotic gene. Third, the Cut class has been introduced to enable the specification of a location between two indices. Each Cut object has a single integer data field, “at,” that specifies the index just before the location represented by the Cut object. Even though there is no zero index on Structure objects in SBOL, a Cut object with “at” equal to zero represents the location just before index one. The OrientedCut class extends the Cut class with an orientation in the same way that the OrientedRange class extends the Range class. Finally, while the Range and Cut classes are best suited to describing locations on sequential structures, the Location class can be extended in the future to better describe locations on Component Objects with non-sequential structure (see unspecified Moeity class as potential means for specifying locations in more than one dimension). -% Figure has some classes named incorrectly -\begin{figure}[h] -\begin{center} -\includegraphics[width=\textwidth]{uml/component_definition} -\caption[]{ComponentDefinition} -\label{uml:component_definition} -\end{center} -\end{figure} -\subsection{Components and ComponentDefinitions} -The proposed Version 2.0 data model generalizes the DnaComponent class of SBOL Version 1.1 to a Component class in order to support an increased range of structural representation. Components can represent genetic components such as DNA, but also RNA and proteins which were unrepresented in Version 1.1. Additionally, the generalized Component class can even represent non-genetic components, such as non-biological polymers, small molecules, molecular complexes, and even light. -Another significant change is that a layer of design abstraction has been added to the Component class. The ComponentDefinition base class is analagous to a blueprint or parts specification sheet for a biological part. In contrast, the Component class represents specific occurrences of a part within a design. Thus the new version of SBOL supports biological designs that re-use the same component more than once. - -% Examples of ontologies for non-molecular type ComponentDefinitions (eg, light)...? -A ComponentDefinition which contains the blueprint for a molecular component must have at least one type URI that identifies a term from an appropriate ontology, such as the ontology of Chemical Entities of Biological Interest (ChEBI) and the BioPAX ontology. A type URI documents the basic sort of biochemical or physical entity (for example DNA, protein, or RNA) that a Component object abstracts for the purpose of engineering design. If a Component object has multiple type URIs, then they must identify synonymous terms. -\textcolor{red}{Examples of ontologies for non-molecular type ComponentDefinitions (eg, light)...?} - -The roles of a ComponentDefinition object, on the other hand, are analogous to the type of a DnaComponent object in SBOL Version 1.1 and the sequence types of a SequenceComponent in the ACS Synthetic Biology paper. Role URIs are expected to identify ontology terms that clarify a Component object’s potential function in a biological context. For example, a ComponentDefinition object of type “DNA” may have a role of “promoter” or “terminator,” terms taken from the Sequence Ontology (SO). A ComponentDefinition object of type “protein,” on the other hand, may have a role of “transcription factor” or “protease.” - -% Are the class names listed here correct, taking recent name changes into account? -\textcolor{red}{Finally, a ComponentDefinition object can define its structure by linking to objects that belong to the StructuralInstance, Sequence, SequenceAnnotation, and SequenceConstraint classes. These classes are described below.} +\subsubsection{ComponentInstance} +\label{sec:ComponentInstance} -\begin{figure}[h] +\begin{figure}[ht] \begin{center} -\includegraphics[width=\textwidth]{uml/component_instance} +\includegraphics[scale=0.6]{uml/component_instance} \caption[]{Component} \label{uml:component} \end{center} @@ -308,27 +342,49 @@ \subsection{Components and ComponentDefinitions} % The second sentence is confusing. Hierarchical compositions of structure and function is enabled via the ComponentInstance class. Each ComponentInstance object has three data fields. \textcolor{red}{The first data field, “definition”, links to the Component object that is effectively a part of the Component or Module object that owns the ComponentInstantiation object.} The second data field, “access,” defines whether the ComponentInstance object can be referred to by ComponentInstance objects that are higher in the design hierarchy (yes if access is set to “public”). The third data field, "mappings", is a set of MapsTo objects that link between other ComponentInstance objects at the same level of the design hierarchy as well as other ComponentInstance objects that are lower in the design hierarchy, thereby composing these objects with greater specificity (see first module example). -There are two subclasses of the ComponentInstance class: the StructuralComponent and FunctionalComponent classes. Composition of the structural layer of SBOL designs is accomplished using StructuralInstance objects. Each StructuralComponent object is owned by a ComponentInstance object and serves as an explicit usage of a \textcolor{red}{sub-Component} object for the purpose of physical composition. +There are two subclasses of the ComponentInstance class: the StructuralComponent and FunctionalComponent classes. + + + +\subsubsection{Component} +\label{sec:Component} +Composition of the structural layer of SBOL designs is accomplished using StructuralInstance objects. Each StructuralComponent object is owned by a ComponentInstance object and serves as an explicit usage of a \textcolor{red}{sub-Component} object for the purpose of physical composition. + + + + +\subsubsection{FunctionalComponent} +\label{sec:FunctionalComponent} Composition of the functional layer of SBOL designs, on the other hand, is accomplished using FunctionalComponent objects. Each FunctionalComponent object is owned by a Module object and serves as an explicit usage of a ComponentInstance object for the purpose of fulfilling some function. In addition, each FunctionalInstantiation must specify via the “direction” field whether it serves as an input, output, both, or neither for its parent Module object. -\begin{figure}[h] + + + +\subsection{ModuleDefinition} +\label{sec:ModuleDefinition} + +\begin{figure}[ht] \begin{center} -\includegraphics[width=\textwidth]{uml/module_definition} +\includegraphics[scale=0.6]{uml/module_definition} \caption[]{ModuleDefinition} \label{uml:module_definition} \end{center} \end{figure} -\subsection{Module and ModuleDefinition} - The ModuleDefinition class forms the hub for functional description of genetic designs. A Module object is composed from zero or more FunctionalComponent, Module, and Interaction objects, and links to zero or more Model objects. A Module object relies on the “direction” data fields of its FunctionalComponent objects to specify whether they serve as its inputs or outputs. In addition, each ModuleDefinition object must now have at least one of potentially several roles to indicate its intended usages. For example, the role URIs on a ModuleDefinition object may identify terms for abstract module roles, such as “inverter” or “AND gate,” or they may identify terms for biological module roles, such as “metabolic pathway” and “signaling cascade.” -\begin{figure}[h] + + + +\subsubsection{Module} +\label{sec:Module} + +\begin{figure}[ht] \begin{center} -\includegraphics[width=\textwidth]{uml/module} +\includegraphics[scale=0.6]{uml/module} \caption[]{Module} \label{uml:module} \end{center} @@ -336,9 +392,30 @@ \subsection{Module and ModuleDefinition} The Module class enables the composition of Module objects from other sub-Module objects. \textcolor{red}{The first data field, “definition”, links to the ModuleDefinition object that is effectively a part of the Module object that owns the Module object.} The second data field, “mappings”, is a set of MapsTo objects that link between the Component objects at the same level of the design hierarchy as the Module object and the Component objects that are lower in the design hierarchy, thereby composing these objects with greater specificity. -\begin{figure}[h] + + + +\paragraph{MapsTo} +\label{sec:MapsTo} + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/maps_to} +\caption[]{} +\label{uml:maps_to} +\end{center} +\end{figure} +The MapsTo class serves as a means of linking between Component objects (both StructuralComponents and FunctionalComponents) at different levels of the design hierarchy. For example, when a Module object is instantiated inside another Module object, a MapsTo object on the appropriate Module object can be used to link between a FunctionalComponent object in the parent Module (as specified by the “local” data field) and a FunctionalComponent object in the child module (as specified by the “remote” data field). This linking can perhaps be most easily understood via the examples in the next section. + +In addition to specifying a link, each MapsTo object must also specify a “refinement” relationship between its local and remote Components. Under this data model, there are four types of refinement: “verifyIdentical” requires that the Component objects link to the same ComponentDefinition object, “useLocal” indicates that the local Component object overrides the remote Component object, “useRemote” indicates the opposite, and “merge” indicates that data fields of the local and remote ComponentInstantiation objects are to be interpreted in combination. + + +\subsubsection{Interaction} +\label{sec:Interaction} + +\begin{figure}[ht] \begin{center} -\includegraphics[width=0.75\textwidth]{uml/interaction} +\includegraphics[scale=0.6]{uml/interaction} \caption[]{Interaction} \label{uml:interaction} \end{center} @@ -350,66 +427,158 @@ \subsection{Module and ModuleDefinition} Furthermore, each Interaction object must specify its participating ComponentInstantiation objects by linking to one or more objects of the Participation class. -\begin{figure}[h] +\begin{figure}[ht] \begin{center} -\includegraphics[width=0.75\textwidth]{uml/participation} +\includegraphics[scale=0.6]{uml/participation} \caption[]{Participation} \label{uml:participation} \end{center} \end{figure} +\subsubsection{Participation} +\label{sec:Participation} Each object of the Participation class must specify the role of its participant FunctionalComponent object in its parent Interaction object with at least one URI that identifies an appropriate ontology term. If a Participation object has multiple role URIs, then they must identify synonymous terms. -\begin{figure}[h] +While the Interaction class provide a qualitative description of genetic function, quantitative descriptions are also needed for genetic design. Instead of introducing a new language for the specification of mathematical models of biology, the proposed data model leverages existing standards and links to them via the Model class. + + + + +\subsection{Model} +\label{sec:Model} + +\begin{figure}[ht] \begin{center} -\includegraphics[width=0.4\textwidth]{uml/model} +\includegraphics[scale=0.6]{uml/model} \caption[]{} \label{uml:model} \end{center} \end{figure} -While the Interaction class provide a qualitative description of genetic function, quantitative descriptions are also needed for genetic design. Instead of introducing a new language for the specification of mathematical models of biology, the proposed data model leverages existing standards and links to them via the Model class. - Each Model object is required to link by means of URIs to a source model and ontology terms that identify the source model's language, framework, and potential roles (multiple). In this way, there is minimal duplication of standardization efforts and users of SBOL can specify the quantitative function of their ModuleDefinition objects in a well-developed language of their choice. A ModuleDefinition object can link to more than one model since each one can encode different levels of functional detail and play different roles in engineering design. -\begin{figure}[h] + + +\subsection {Collection} +\label{sec:Collection} +The \sbol{Collection} class is another top level class, which groups together \sbol{TopLevel} objects that have something in common. For example, a \sbol{Collection} object could be the result of a query to find all \sbol{Component} objects that function as promoters or all \sbol{Module} objects that function as inverters in a given repository. The example in \ref{ser:Collection} shows the serialisation of a \sbol{Collection} object. + +\begin{figure}[ht] \begin{center} -\includegraphics[width=0.75\textwidth]{uml/maps_to} -\caption[]{} -\label{uml:maps_to} +\includegraphics[scale=0.6]{uml/collection} +\caption[]{The Collection class} +\label{uml:collection} \end{center} \end{figure} -The MapsTo class serves as a means of linking between Component objects (both StructuralComponents and FunctionalComponents) at different levels of the design hierarchy. For example, when a Module object is instantiated inside another Module object, a MapsTo object on the appropriate Module object can be used to link between a FunctionalComponent object in the parent Module (as specified by the “local” data field) and a FunctionalComponent object in the child module (as specified by the “remote” data field). This linking can perhaps be most easily understood via the examples in the next section. +\begin{figure} [ht] +\lstsetsbol +\begin{lstlisting} + + 2015-02-16 16:37:54.381 + col1 + Collection 1 + A colleciton of DNA components + + + ... + +\end{lstlisting} +\label{ser:Collection} +\end{figure} + + -In addition to specifying a link, each MapsTo object must also specify a “refinement” relationship between its local and remote Components. Under this data model, there are four types of refinement: “verifyIdentical” requires that the Component objects link to the same ComponentDefinition object, “useLocal” indicates that the local Component object overrides the remote Component object, “useRemote” indicates the opposite, and “merge” indicates that data fields of the local and remote ComponentInstantiation objects are to be interpreted in combination. \subsection{Application Specific Data - Annotations} \label{sec:annotations} + + +\subsubsection{Annotating SBOL objects} SBOL allows embedding application specific data that are not captured by the SBOL standard. Such data are optional, can be computationally generated and exchanged via SBOL documents without getting lost. These custom data are stored in the form of annotations, providing informative metadata about entities in an SBOL document. -Each Identified object may have a number of annotations in the form of name/value property pairs. Property names are specified by qualified names as IRIs, each formed of a namespace and a local name. Values can be IRIs or literals (for example, string, integer, double, boolean) or custom Identity entities initialized with application specific types. These custom Identity entities can further be annotated with the scheme described here. These custom entities are either serialized within an SBOL entity being annotated, or referenced using an IRI annotation and embedded within the the annotated entity's parent. +Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. Property names are specified by qualified names as \external{IRI}s, each formed of a namespace and a local name. Values can be \external{IRI}s or \external{Literal}s (for example, \external{String}, \external{Integer}, \external{Double}, \external{Boolean}) or custom \sbol{identity} entities initialized with application specific types. These custom \sbol{identity} entities can further be annotated with the scheme described here. These custom entities are either serialized within an SBOL entity being annotated, or referenced using an \external{IRI} annotation and embedded within the the annotated entity's parent.%TODO Make sure if we have a choice here! \begin{figure}[!ht] \begin{center} -\includegraphics[scale=0.8]{uml/identified_annotations} +\includegraphics[scale=0.6]{uml/identified_annotations} \caption[]{Annotating SBOL's Identified entities with application specific data.} \label{uml:identified_annotations} \end{center} \end{figure} -SBOL documents can also be annotated at the top level. SBOL's GenericTopLevel is a top-level entity that can include a set of annotations as described above. Entities that are at the top-level and are not recognised by the SBOL standard are loaded into these top level entities. These GenericTopLevel entities may have multiple type information and can be used safely by tools to exchange custom data. As with any other top level entities, GenericTopLevel entities may include SBOL properties such as name, description, displayId and so on. + Each annotation is serialised as an RDF subject-property-object triplet in which the subject is the SBOL object being annotated, the property is the annotation name, and the object is the annotation value. Simple values URIs are serialised as RDF literals, and URI values are represented with the \external{\path{http://www.w3.org/1999/02/22-rdf-syntax-ns#resource}} RDF property. If the annotation value is another complex object then the object is embedded as an RDF resource, which can further be annotated similarly.%TODO If we allow URI reference of a custom object stored, then update this paragraph +The ComponentDefinition example for a promoter below shows how annotations can be added to SBOL objects. Annotations are added using the relevant information from the Parts Registry. Annotation property names are qualified with the \external{http://www.partsregistry.org/} namespace, which is prefixed using \external{pr}. The first annotation is named as \external{pr:group}, indicating the iGEM group designing the promoter, and has a \external{String} value. The second \external{pr:experience} annotation has a \external{URI} value and is serialised as an RDF resource pointing to the information Web page on the Parts Registry for the promoter. The \external{pr:information} property represents a complex annotation which is a type of \external{pr:Information} and includes information about the regulatory details of the promoter using Parts Registry categories. -\begin{figure}[!ht] +\begin{figure} [ht] +\lstsetsbol +\begin{lstlisting} + + + + iGEM2006_Berkeley + + + + //rnap/prokaryote/ecoli/sigma70 + //regulation/constitutive + + + J23119 + Constitutive promoter + + + + +\end{lstlisting} +\label{ser:Annotation} +\end{figure} + + + + +\subsubsection{GenericTopLevel} +\label{sec:GenericTopLevel} +SBOL documents can also be annotated at the top level. SBOL's \sbol{GenericTopLevel} is a top-level entity that can include a set of annotations as described above. Entities that are at the top-level and are not recognised by the SBOL standard are loaded into these top level entities. These \sbol{GenericTopLevel} entities may have multiple type information and can be used safely by tools to exchange custom data. As with any other top level entities, \sbol{GenericTopLevel} entities may include SBOL properties such as \sbol{name}, \sbol{description}, \sbol{displayId} and so on. +%TODO: Is it possible to have multiple types for GenericTopLevel elements? If so, update the diagram. + +\begin{figure}[ht] \begin{center} -\includegraphics[scale=0.8]{uml/generictoplevel} +\includegraphics[scale=0.6]{uml/generictoplevel} \caption[]{Annotating SBOL documents with GenericTopLevel entities.} \label{uml:generictoplevel} \end{center} \end{figure} +The example below shows adding a datasheet object to a SBOL document using the \sbol{GenericTopLevel} class. The J23119 promoter example is annotated with the URI of a top Level Datasheet object. The annotation properties are defined using the custom \external{\path{http://www.myapp.org/}} namespace and the \external{myapp} prefix. The datasheet object, with the data type of \external{myapp:Datasheet}, is accessed using the \external{URI} value specified by the \external{myapp:characterizationData} property of the promoter component definition. The datasheet object is further annotated with the transcription rate and the URI for the actual characterization data using the \external{myapp:transcriptionRate} and \external{myapp:characterizationData} properties respectively. + +\begin{figure}[ht] +\lstsetsbol +\begin{lstlisting} + + + + + J23119 + Constitutive promoter + + + + + + 1 + Datasheet 1 + + + +\end{lstlisting} +\label{ser:GenericTopLevel} +\end{figure} + + + % ----------------------------------------------------------------------------- \section{Examples of Data Model} @@ -429,6 +598,7 @@ \section{Best Practices} Currently, if a developer wishes to change a SBOL object that has been published to the Web, then as a best practice they should create a copy of the SBOL object that incorporates the change, but has a new URI. This practice, however, does not inherently involve a standardized declaration that the second object is a version of the first. Consequently, the ``persistentIdentity'', ``version'', and ``timeStamp'' data fields have been created to provide developers with the means to declare that a set of SBOL objects are versions of each other (by virtue of having the same persistent URI) and label these objects with version Strings and times of creation. +\end{document} % ----------------------------------------------------------------------------- @@ -588,4 +758,7 @@ \section{...} % End of document % ----------------------------------------------------------------------------- -\end{document} \ No newline at end of file +\end{document} +% +% +% \ No newline at end of file diff --git a/uml/collection.png b/uml/collection.png new file mode 100644 index 0000000000000000000000000000000000000000..89faf33a732ffaee744aeadd8bb2329e24c7c415 GIT binary patch literal 3330 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 literal 0 HcmV?d00001 diff --git a/uml/generictoplevel.png b/uml/generictoplevel.png index 45f9c62b76d4fe789ba8bdbd461bfea02a3428f1..b9f2115c7e45f65c8da55605f8065d3089017b1e 100644 GIT binary patch literal 3128 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 MEE0tv8@j~&4`vkc`~Uy| literal 3307 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 B$h80f literal 0 HcmV?d00001 diff --git a/uml/identified_annotations.png b/uml/identified_annotations.png index ec3b8e8dc5757e06e651f2d179681ea8f2b9660c..bbdf84ebc7dba8cc1648c07f5647a79fcca21fd2 100644 GIT binary patch literal 7769 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 literal 6039 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 yutV_!YSaJ?{{Q0 zzVBo=w)cM2+d1d`yzl4p`{(E5GtcwPeLweoE%){PUe`6R5bE$#ROhHjNJvg8-&W8f zAvw+j?x!e8!DmB8fC~x9c`Idwn>vsC76(0abT$qfzW0#7VKXGZ*3zLqrdjCsmPr$L zO|&Id&tBiEBSpWfJwzyTWukGirxAwnExZ=lls*|?{Su9du*itaNP6{-^9^;<*}WmG z>~Makp!-s@xOm^%_ZQPcZAMc=ZM(t+6<7VEu7S;K6{Eh9fvW-^_~2v!AGAP9UrO-Z zjQ~ixe?DH2KSn}wCK-HxH2T-$O9c4tXpy7QzaBXme5n^Ze3d?hk%JM#hqQs}N#V!9 z?IZWh|8b>=KY26`u0RmqDle{{BFj*h2d|lgX3U^(C|&ietudQh!F&7rb)P@?mDq~e z;Ir7I+zijhU-n$L>MfCQo+>ZfUY*35e>eW*KKTUP@F#h zwW%pEFz~Hli8&7aI*Fc+p5B~-nu=<`K>F%cZ6=@9M&4Hl$O5!;xzmY0L)SUYEG<>X z+1v+`O9YK7uL%jMrRY9>ye-;o7#qA>%uCnT*8>BoM3oKNUW?Q`9uF3)Z)k|UlYtYiS{QU6j>IHBS$#!Fq;=@d zk8kZ$u(Mk%YLo5H))mmV#G!?*!eEuI^E}iwTSHz7d_Rqc_1-rtrIFpPE&Pz1d*>V% zCntWUjz&%}m7eF0_~VuPy1J3)TAG_9lshxj*4EZy#U00%v4`HP6OHae9+uydZg$kT zE#8af6&2Mru+-EHE57X(HkxNpmVM{yqmkNfku%AyfuW&My>5$r=DmE!XB)s--G zV10b-Y!nrr6~AklYLnf)Lw+%$C*N(T+5>h;M#jjt5r+#$A3IL|b*0c8hj%a5h!byL zX*W?b-Wpw-7w{$FagzU(Z(-RY4S9(4?AgI{b+LoN^?4oC7&5=>=!}?%LAJ)ln z)LF9@U`wA-GdIm}g-WN`6{Yc6Ux~hxsgcMde+V6UCwJ}oe`9UEpSCxX*6J?E*c-7ge!h<@x!o zOPdCHaB3SHeaE#HG2F~sZdH8NL7zN0xi;qJ>0K$Zh36%lF49r~Auh=4!_$?+dGxP) zAMS6x4F>UMYiny>3<5>(Q;J5SY)7G0dkR{}py`IA~!N8q_X6D-GS1XP}A$ z{xWl^^*sjL8-2l%jTx^G4sS;qdng8noD)@1Dk>~AyF1POu$znh@yIbdeY>mPJCn?! z+1S$Za`9--g`O*-{6&~;z7IkFK0I2(+(>M4c*I)216D0jRz_NSZ!V`mSV*WONFP|E zAUm61KtMb3TO$@`4NgByP@or_Emv1pZ|{S#KVK8HXlZHZqP5l3TAm)KfWct+ObdfD z`$&wkvNCKB1Sck1TU*=Qr6oqx=9+|rzEXFd0dE~WuX@DjE(oYLxkKqE+wXIIdfuD% zK~{8G?9(*>zNAp4qapw!Dg~WQuHg~cE%aEM3SpDVwlglVVf<;y`1Bgp{F){q>+ud% zkwrpIH&DTDM-z!cq4f07M1$j+nwr4f9v&VxZ=0__s1N$`T<&C>u?mK7HEPDX1TMGAb%6CmO`8`Fg0_!TTT+2)Ru4M>{p-221S> z!W;3~x;a-K)GrKFX!l>w*?2iKV`bO-9E%l9Pe?h@OTJ&ysO3*VgANWOxXt0M=kS=q z{lbytTQ2}BKwwJc0)y~)Y3YAm0YMy%|G562hysAY2;DWRkZTZiO?OVU#2zOlh1_3B z3hf!BqOKnD>eXy}DuvN8Xv*`4{iQ;joGDpZw-1CaT}r+Mv081##KZ(fJF}^FWwg%Y z3?LdZl2!~H5g8c?tM=NmXIB76_?WMA9~a*<3QZEA&Pc%I-|h*2-M?A<+x;LMK}C~t zw8Lq5XcEKEb=V|--Pd9nn3;EXccu011g5t7?|t`5|7v$f}f+A|Csz=WeUI<}=MlHD*;%~qq zK)b;5?MUm})6>%npZE0i)c4Ns?LG0Rz~gladB9q}^)C@kASQ&V>%V+C>l2vjFxeDY__^P{ zD$jA#vp$Gr)rm%C{mhZtH^vpS(p96H{62bZl}cR_5(0q74?;J_Hovi@#cq4rzbGjw z$uhwsLpxKwy}dmwEbP|vlb1w9kg76=duy;dz`PHUkEfcWE1ai!xVfJ_e;(5^^^;~V z$;uj|K}HdEeQl;aHQgMb4UszJ>=k*7SUDfrU;8(3_!u%h8GXi_+sEO(ZEBr(+4S=# ze~O&!Y`m3)MFw%?j>|%iBj8V7jf4nubDfl+d+$xK-msXcD9e)1L?RJ{1Nm>ifqa5P z&U-IdZ0Jod`Kfbe6?h0%X6l1k_xJWbfBw9=JY0ZH`XbJARs(bDk2>CSB zLeB@A;?hz*)G5Q@Y)hnu%ti#2L1SYhOwzVXaGwmY2qOc-#PYJw*q0N)$G|m8fe1SI z9iH&SL=%u1n0u+H1m@LbtNRzZ{{rgh}{{8z5DXUm9--|Y)! zm&q<+U|_iYI*n!HQ!hZ8Vr4}|#Xg5I9lFYmE(1Fg)v>5MT9~isCS%}Rx~Y4`R=;D^ zcOR--ej=l0`kDs3Ko4aGB-e}sVr0BZ1tSv@>8-!uX%X`}E-?dn5>^ttb50pD9F~wc8eoK7L z^y>_Oop4$XA2-mtRVwno=py`>Xtu1lc3bpCMFJi#Xjp#v@?``mnixwtXE3T7C0v5a zdqvONl=c?`tN@?CIK^rqacj5+MQGx#)z1)%Cv&J;ydGWbG^z5#3H7fLbH~~?7yI-2 zxM|GI&AGw3efA7k21FFbqz6OO3i3QOQ1v>5d~|el2_93?;QV9A2=0w}P)@<4i$u!p zuXoz@mx@N;$-7r_?y5!5WUAoz0p~W%&alrR3g;G27Axi;yk=|ikXQcL$U6DAv$RdR z;7nO}X0#uL{!4@s*h(+=?#&+|FVB)LE8bsZN%I28$$36fGFSG+knbA(41k4r-M zPtpj00>UB~2^*Bg{To2U%Nj|@9g876S}_9o>HQlwZn(K!|AE*_e}cb;1~Kc7fc&HC z;}*ya+34xD_4IgdX5V^o+JzFrB=K%QXFF@txLV%CCx5`AOC5&Q6Cud-O~}cw%yymc z0`zTDj4UudI5=>jK6*t*Pp_-mV{H-_Wh(@@4&-nESu&iD0J{b!g57)0YX9CQPRt=8 zF)=YsfJg!9kZU(wBg4aEu}|D^OVxe!=(5po5L$Lgy3Aa@UrSOI?!CW(^zk_a`A)kk z6u6JN;2bChM#d7rB=D<2tYRT@r%yw#96D_fkd|g5Gw!2p@FUV`&xA|?3 zI=j|Uk?|#h;Vk|o(U1Q<986MtdJ{~-ka~S_R18R|O;Sp#(RnHZz2X?7$%Qb<2D1Hn zpOc}1@#q1;1ue#|Nyf=QMlMRakxsQh+rUU0Nb3LB_GDm3RmL7J1T-lFtb0NJDgT*d zzRSG7XNhEy{#ps_QOoXVNDD@?XtP9g?}y&_ryxIM=VZtt1siAsnGj?l0zfWET0Aq5 zHib%okLu*l?Lq|pCKL2ZXAqFdkCN=@4Ll|E#(3b7AX&548c)rQ?7dxg+Rtl^ZW1%tv?0(!aSV}Syorq^|-TKCr-$7eaO-fr68#PoF+< z0Q2DY%%wuX&%)V;z~EE<^3Q<$VXdAHhUZ*1}5L)IjYy#D(`L$PnX< z@In?jvnM}U+bbys6-}O!7jh#=FZmdD1g8m-|ZQ*JnFloMvmn;i_h;R1eX51_o6C zy-e$#H_nthj<@1^d#rd%S!q>Ha>yFm>aa}~(axoaWWAuBlh#{{gY%UYSOn82KS?9{ z>~BP6uhMHsYien6vbm1bJ_RM~5GcBt$6RA6U6(==R7F1O@UY2v;@kb^y9=;@WkE}T zlZy)!FLJvJS8*6>CPBzG6KZ$<_+zYUxyH7lO?_BJ@?KHQBIp||fOP5h?U!aC57}KF ztU?+fhA4+nTZ0xw`XBSF6)zWJ*o|HAL$lR8U)$QSvl+1yYEP`JWyZz*7!#$CB+6LjB)2QMb$R__&>z%thty_P>(t~`s|j8#9J5wzXP3$k-u zE+0Q_4H7<4rych9%THzu$dRiZZcbV2#R8w@%o1+7|3M#$g@ zug16Bh4=5?eV0npz&1#=5z3PJr>o2Hj!=Z#7RW?}vnh&uFJe?*7gsrIuKr2M$jr_}v1wZ;%0f(mlg{%$ER=tC(1w`VX7fGz=p@!R1!LXJj)G{~jYJ)%Zjv}Ld}hQPrc z2OHfcQk7%dySuni;bomP0ka!QdFrd6EJa5};q;T0C{CTb*tp?OBm2fQde}+5Bw>Gd zD@S-Al)FLIZ@jUyTcHPqO0svu62h2fx&0|Z4;VYs7q6_|^zGlDG7X3kwMFmke!E4Z ztg58+{A62#O#gPN$73{$^mq^hes*V);8%%%AXzYJ8nEgn8gI;qnzosm(>0pzSd5)6 za9S+sRvFJwi#;zi*62#Gu9zg4Lp`pZMSA!?#>e!UmLXj1LOkW9m5H&}qA1JzJ>PPN z;hK(B;(Wmmi|c7W!HwF9Z2zyET@bb{Q$_ARwYRCqmy&z@$mN>z}t$7G}p)R9vX zd)Sktgx#59&B2vbt2*mw#*60kUbi2};$f5XHne+pZn3v0Gf3E^X21r%E=E{;9b)EY z9R=$*Qed;`IF2skP$r_K4nPM4_sG??WYWsWD1LyHd)c5BlLvRT-dY+A{>xyT5npav zhZ)1}(sH>Q`u9JWpj&XmdYny88(3x69P({SN1(b9QY0tYr4!=J$=k%a$Xq?WJxY>< zH{P|{f_c?OYMDsI;fk0FPu=bcm))tIoZCua^-WDGRWyb&)%lV_TkgZC%ue1AqBizH zFhh6ysoT8r5`E0Gk`me%dD$dgZujAun#}Hc>bhcbn7KLj6^CX!GbcZ`g9;Yv>nYhr zYsOpa6|1^Ee3%>5WSXqRZO)14ll_=?|(xPu-;!u^e*jRwY4AsnJU2Vx0NNaa$ z;1<#kQ7MzEoYv3d6&7y&O3gAW2H#J`=7v$~8XF4>nVOoC3;Zz=V*AJ|$j}dj8x2>) z$>!**aB@6rB>BTIeF!>=Jmpbu%ZsmT28}6|gTuB)e`qvJLvWa7MJ&+%876*_z*#X<)nZM}QYI zx5;5Dxn*k{i=20LGYdPreZ`9xG#sT;*v{8gSS(Rrm(c<7+$yvYrMAKHOB=wbFW zb3Ev9#KVW}ORgoIjk?b@{QDyj zd62(^Ssk0F9N7=R@eXlJQg%l*|Lf(TXJ#c z7GR;0Ckt_)LUf<9AFP~}j<_Cu2fc#=RU}&5wF~r#HfGvyJxAu=H7$ua$nf-TZ$Bi> zAarUH7?s#j{U4*w9$si$eYU=iLuqp;o6# zI*tVpSGymC%4DDr{M|EviR}lWmc%k26y zYN89&2>L|_ro3w}0s@MyI{_AmI!$i_&|9urmd%Wv+fmFM9hN(ej^Yy*KG+@)CA9ex z+}CxGSq`Htd!!kIUauxS&0IF-2z||xB5A`8MCdSAkD^CGi?mNYFE4Kp^cF$K&Tg0W zag=d;xK#e)l&JW&WH#%*n>uI2LHfR{~n(6^c#4T5bwnCp7YN^3na-?V3JwTmE5Vl9k71$sEb!)L78GBJ*cHN;6Yx3m#GgfzIQ9+qY z`^`KO^ps6qkqC-yr&Y(9YygQB{RleJk!XyY$SEOv)&Bg`?W= zjL*}dsKe$%pGA#rle^mmPqQv~DQt)=39nA7gEE7YHo5#af2u5plOizK(uP z_FJGuf%1cw?mt(^x Date: Thu, 19 Feb 2015 09:53:51 +0000 Subject: [PATCH 004/317] v4 --- sbol2.tex | 66 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 51 insertions(+), 15 deletions(-) diff --git a/sbol2.tex b/sbol2.tex index ced16138..c2e8ae68 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -238,21 +238,6 @@ \subsubsection*{The \sbolheading{description} property} -\subsection{Sequence} -\label{sec:Sequence} -The Sequence class is used to encode the primary structure of a ComponentDefinition object using a String of characters. Sequence objects identify their type of encoding with a URI. For example, a Sequence object that encodes a DNA sequence would have an IUPAC DNA encoding, while a Sequence object that encodes the chemical structure of glucose might have a simplified molecular-input line-entry system (SMILES) encoding. - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/sequence} -\caption[]{Sequence class} -\label{uml:sequence} -\end{center} -\end{figure} - - - - \subsection{ComponentDefinition} \label{sec:ComponentDefinition} The proposed Version 2.0 data model generalizes the DnaComponent class of SBOL Version 1.1 to a Component class in order to support an increased range of structural representation. Components can represent genetic components such as DNA, but also RNA and proteins which were unrepresented in Version 1.1. Additionally, the generalized Component class can even represent non-genetic components, such as non-biological polymers, small molecules, molecular complexes, and even light. @@ -361,6 +346,57 @@ \subsubsection{FunctionalComponent} +\subsection{Sequence} +\label{sec:Sequence} +The \sbol{Sequence} class is used to encode the primary structure of a \sbol{ComponentDefinition} object and the encoding used to capture this information. + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/sequence} +\caption[]{Sequence class} +\label{uml:sequence} +\end{center} +\end{figure} + + +\subsubsection{The \sbolheading{elements} property} +\label{sec:elements} +Required. A \external{String} of characters that represent the constituents of biological molecule, for example nucleic acid symbols for DNA molecules. + +\subsubsection{The \sbolheading{encoding} property} +\label{sec:encoding} +Required. \sbol{Sequence} objects identify their type of encoding with a \external{URI}. For example, a \sbol{Sequence} object that encodes a DNA sequence would have an \external{IUPAC DNA} encoding, while a \sbol{Sequence} object that encodes the chemical structure of glucose might have a \external{simplified molecular-input line-entry system (SMILES)} encoding (\ref{tbl:sequence_encodings}). + +%A Summary of letters for nucleic acids and aminoacids +\begin{table}[ht] + \begin{edtable}{tabular}{ll} + \toprule + \textbf{ComponentDefinition Type} & \textbf{Encoding} \\ + \midrule + DnaRegion,RnaRegion & \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html}\\ + Protein & \url{http://www.chem.qmul.ac.uk/iupac/AminoAcid/}\\ + SmallMolecule & \url{http://www.opensmiles.org/opensmiles.html}\\ + \bottomrule + \end{edtable} + \caption{URIs for the encoding property and the corresponding ComponentDefiniton types, which are BioPAX terms.} + \label{tbl:sequence_encodings} +\end{table} + + +The example below shows the serialization of a \sbol{Sequence} object for a promoter. Nucleotide sequences are represented with the \sbol{elements} property and the encoding is serialized as a URI resource. + +\begin{figure} [ht] +\lstsetsbol +\begin{lstlisting} + + ttgacagctagctcagtcctaggtataatgctagc + + +\end{lstlisting} +\label{ser:sequence} +\end{figure} + + \subsection{ModuleDefinition} \label{sec:ModuleDefinition} From 86a58a2d32d086377ae95cb160846c935d23fb1b Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Thu, 26 Feb 2015 17:10:16 +0000 Subject: [PATCH 005/317] v5 --- sbol2.tex | 401 ++++++++++++++++++++++++++++----- uml/component.png | Bin 0 -> 11464 bytes uml/example_annotated_gene.png | Bin 0 -> 49048 bytes uml/example_laci_inverter.png | Bin 0 -> 58749 bytes 4 files changed, 347 insertions(+), 54 deletions(-) create mode 100644 uml/component.png create mode 100644 uml/example_annotated_gene.png create mode 100644 uml/example_laci_inverter.png diff --git a/sbol2.tex b/sbol2.tex index c2e8ae68..d79957e1 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -55,7 +55,7 @@ \definecolor{gray}{rgb}{0.5,0.5,0.5} \definecolor{light-gray}{gray}{0.97} \lstdefinelanguage{sbol} - {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition }, + {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:sequence,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation, sbol:component,sbol:location, sbol:sequenceAnnotation }, basicstyle=\fontsize{7}{9}\selectfont\ttfamily, backgroundcolor=\color{light-gray}, keywordstyle=\color{blue}, @@ -68,6 +68,7 @@ sensitive=true, % keywords are case sensitive %morecomment=[l][commentstyle]{\#}, % comment format morestring=[b]", % string format + escapeinside={[}{]}, alsoletter=: } @@ -240,7 +241,7 @@ \subsubsection*{The \sbolheading{description} property} \subsection{ComponentDefinition} \label{sec:ComponentDefinition} -The proposed Version 2.0 data model generalizes the DnaComponent class of SBOL Version 1.1 to a Component class in order to support an increased range of structural representation. Components can represent genetic components such as DNA, but also RNA and proteins which were unrepresented in Version 1.1. Additionally, the generalized Component class can even represent non-genetic components, such as non-biological polymers, small molecules, molecular complexes, and even light. +The proposed Version 2.0 data model generalizes the DnaComponent class of SBOL Version 1.1 to a \sbol{ComponentDefinition} class in order to support an increased range of structural representation. A \sbol{ComponentDefinition} can represent genetic components such as DNA, but also RNA and proteins which were unrepresented in Version 1.1. Additionally, the generalized \sbol{ComponentDefinition} class can even represent non-genetic components, such as non-biological polymers, small molecules, molecular complexes, and even light. % Figure has some classes named incorrectly \begin{figure}[ht] @@ -251,20 +252,92 @@ \subsection{ComponentDefinition} \end{center} \end{figure} -Another significant change is that a layer of design abstraction has been added to the Component class. The ComponentDefinition base class is analagous to a blueprint or parts specification sheet for a biological part. In contrast, the Component class represents specific occurrences of a part within a design. Thus the new version of SBOL supports biological designs that re-use the same component more than once. + % Examples of ontologies for non-molecular type ComponentDefinitions (eg, light)...? -A ComponentDefinition which contains the blueprint for a molecular component must have at least one type URI that identifies a term from an appropriate ontology, such as the ontology of Chemical Entities of Biological Interest (ChEBI) and the BioPAX ontology. A type URI documents the basic sort of biochemical or physical entity (for example DNA, protein, or RNA) that a Component object abstracts for the purpose of engineering design. If a Component object has multiple type URIs, then they must identify synonymous terms. +\subsubsection*{The \sbolheading{types} property} +\label{sec:types} + +In order to specify the blueprint for a molecular component, a \sbol{ComponentDefinition} must have at least one types \external{URI} that identifies a term from an appropriate ontology, such as the ontology of Chemical Entities of Biological Interest (ChEBI) and the BioPAX ontology (\ref{tbl:componentdefinition_types}). A type URI documents the basic sort of biochemical or physical entity (for example DNA, protein, or RNA) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. If a \sbol{ComponentDefinition} object has multiple type URIs, then they must identify synonymous terms. + +\begin{table}[ht] + \begin{edtable}{tabular}{ll} + \toprule + \textbf{Entity Type} & \textbf{BioPAX Term} \\ + \midrule + DNA & \url{http://www.biopax.org/release/biopax-level3.owl#DnaRegion}\\ + RNA & \url{http://www.biopax.org/release/biopax-level3.owl#RnaRegion}\\ + Protein & \url{http://www.biopax.org/release/biopax-level3.owl#Protein}\\ + Small Molecule & \url{http://www.biopax.org/release/biopax-level3.owl#SmallMolecule}\\ + \bottomrule + \end{edtable} + \caption{BioPAX terms to specify the types of ComponentDefinition objects.} + \label{tbl:componentdefinition_types} +\end{table} + + \textcolor{red}{Examples of ontologies for non-molecular type ComponentDefinitions (eg, light)...?} -The roles of a ComponentDefinition object, on the other hand, are analogous to the type of a DnaComponent object in SBOL Version 1.1 and the sequence types of a SequenceComponent in the ACS Synthetic Biology paper. Role URIs are expected to identify ontology terms that clarify a Component object’s potential function in a biological context. For example, a ComponentDefinition object of type “DNA” may have a role of “promoter” or “terminator,” terms taken from the Sequence Ontology (SO). A ComponentDefinition object of type “protein,” on the other hand, may have a role of “transcription factor” or “protease.” +\subsubsection*{The \sbolheading{roles} property} +\label{sec:roles} + +The \sbol{roles} of a ComponentDefinition object, on the other hand, are analogous to the type of a DnaComponent object in SBOL Version 1.1. Role URIs are expected to identify ontology terms that clarify a \sbol{ComponentDefinition} object's potential function in a biological context. For example, a \sbol{ComponentDefinition} object of type ``DNA'' may have a role of ``promoter'' or ``terminator,'' terms taken from the Sequence Ontology (SO). A ComponentDefinition object of type ``protein,'' on the other hand, may have a role of ``transcription factor'' or ``protease.'' + + +\subsubsection*{The \sbolheading{subComponents} property} +\label{sec:subComponents} +Another significant change from SBOL version 1.1 is that a layer of design abstraction has been added to the \sbol{ComponentDefinition} class. The \sbol{ComponentDefinition} class is analagous to a blueprint or parts specification sheet for a biological part. In contrast, the \sbol{Component} class represents specific occurrences of parts within a design. Thus the new version of SBOL supports biological designs that re-use the same component more than once. + +\subsubsection*{The \sbolheading{sequence} property} +\label{sec:sequence} +The sequence property is optional and includes the URI a corresponding \sbol{Sequence} object. + +\subsubsection*{The \sbolheading{sequenceConstraints} property} +\label{sec:sequenceConstraints} -% Are the class names listed here correct, taking recent name changes into account? -\textcolor{red}{Finally, a ComponentDefinition object can define its structure by linking to objects that belong to the StructuralInstance, Sequence, SequenceAnnotation, and SequenceConstraint classes. These classes are described below.} +\subsubsection*{The \sbolheading{sequenceAnnotations} property} +\label{sec:sequenceAnnotations} +Finally, a ComponentDefinition object can define its structure by linking to objects that belong to the StructuralComponent, Sequence, SequenceAnnotation, and SequenceConstraint classes. These classes are described below. +\subsubsection*{Serialization} +Parent classes of the \sbol{ComponentDefinition} class includes \sbol{TopLevel}, \sbol{Documented} and \sbol{Identified}. As a result, inherited properties are serialised as explained for these parent classes. The sequence property of a \sbol{ComponentDefinition} object includes a URI to a \sbol{Sequence} object and this URI is serialized as an rdf:resource. The \sbol{types} property may include a collection of type URIs and is serialized as an implicit collection, ignoring the property name ``types''. The \sbol{roles} property is also similarly serialized as an implicit collection of sbol:role properties. + +%Todo:Add the serialization descriptions to parent classes. +\lstsetsbol +\begin{lstlisting} + + [\emph{optional}] ... [\emph{element}] + [\emph{optional}]...[\emph{element}] + [\emph{optional}]...[\emph{element}] + [\emph{optional}][\emph{element}] + [\emph{one or more}] [\emph{elements}] + [\emph{one or more}] [\emph{elements}] + [\emph{zero or more}] ... [\emph{elements}] + [\emph{zero or more}] ... [\emph{elements}] + + +\end{lstlisting} + +The example below shows the serialization of a simple \sbol{ComponentDefinition} object. The \external{DnaRegion} from BioPAX and \external{CHEBI:4705} from CHEBI are used to indicate the type of the biological entity as a DNA molecule. Its role is specified via the generic \external{SO:0000167} (\external{promoter}) and more specific \external{SO:0000613} (\external{bacterial\_RNApol\_promoter}) terms. + +\lstsetsbol +\begin{lstlisting} + + 2015-02-26 11:28:18.396 + J23119 promoter + Constitutive promoter + + + + + + +\end{lstlisting} + + \subsubsection{SequenceAnnotation} \label{sec:SequenceAnnotation} -The SequenceAnnotation class describes a location of interest on the Sequence object linked by its parent ComponentDefinition object and may optionally associate this location with a StructuralComponent object. SequenceAnnotation objects pecify their location using a Location object. As explained below, the Location class is extended by several different classes, some of which assert locations other than simple ranges with start and end positions. +The \sbol{SequenceAnnotation} class describes a location of interest on the \sbol{Sequence} object linked by its parent \sbol{ComponentDefinition} object and may optionally associate this location with a \sbol{Component} object. \sbol{SequenceAnnotation} objects specify their location using a \sbol{Location} object. As explained below, the \sbol{Location} class is extended by several different classes, some of which assert locations other than simple ranges with start and end positions. \begin{figure}[ht] \begin{center} @@ -274,27 +347,44 @@ \subsubsection{SequenceAnnotation} \end{center} \end{figure} +\paragraph{The \sbolheading{location} property} +Every \sbol{SequenceAnnotation} must have a location property. The value of this property is a nested \sbol{Location} object. +\paragraph{The \sbolheading{component} property} +\sbol{SequenceAnnotation} objects may have this property to link location information to a \sbol{Component} object. The value of this property is a \sbol{Component} URI. -\subsubsection{SequenceConstraint} -\label{sec:SequenceConstraint} -In SBOL Version 1.1 partial designs are made possible by means of SequenceAnnotation objects that can specify that their locations precede those of other SequenceAnnotation objects. In Version 2.0 the “precedes” data field has been generalized to the StructuralConstraint class. A ComponentDefinition object can link to SequenceConstraint objects to assert different kinds of structural restrictions (not just precedes relationships) between the StructuralComponent objects that represent its subcomponents. These restrictions could include “sameOrientationAs” or “oppositeOrientationAs” to enable the relative orientation of StructuralComponent objects whose ComponentDefinition objects lack associated Sequence objects in partial designs. +The serialization of SequenceAnnotation objects can be carried out according to the example below. A\_LOCATION\_SUBCLASS represents one of the Location subclasses. +\lstsetsbol +\begin{lstlisting} + + ... + [\emph{one}] ... [\emph{element}] + [\emph{zero or one}] [\emph{element}] + +\end{lstlisting} -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/sequence_constraint} -\caption[]{SequenceConstraint class} -\label{uml:sequence_constraint} -\end{center} -\end{figure} + +\subsubsection{Location} +\label{sec:Location} +The Location class is extended by the \sbol{Range}, \sbol{MultiRange}, and \sbol{Cut} classes. + +\paragraph{Range} +\label{sec:Range} +A \sbol{Range} object specifies inclusive start and end positions. These properties are required in \sbol{Range} objects and they can have \external{integer} values greater than zero. A \sbol{Range} object also includes an ``orientation'' property, for example to to specify directionality on a potentially double-stranded \sbol{Component} object. + +\paragraph{The Range \sbolheading{start} property} +Specifies the start of a \sbol{Range}. This property is required and can have \external{integer} values greater than zero. + +\paragraph{The Range \sbolheading{end} property} +Specifies the end of a \sbol{Range}. This property is required and can have \external{integer} values greater than zero. + +\paragraph{The Range \sbolheading{orientation} property} +This property is optional. However, for \sbol{ComponentDefinition} objects representing DNA molecules, it is recommended that one of the orientation values are chosen. -\subsubsection{Location} -\label{sec:Location} -The Location class is extended by the Range, MultiRange, and Cut classes, and the Range and Cut classes are further extended by the OrientedRange and OrientedCut classes. First, a Range object specifies inclusive start and end positions greater than zero, while an OrientedRange object includes an “orientation” data field suitable for specifying locations on a potentially double-stranded Component object. \begin{figure}[ht] \begin{center} @@ -304,7 +394,9 @@ \subsubsection{Location} \end{center} \end{figure} -Second, A MultiRange object represents a location that is specified by multiple Range objects. For example, this capability can be used to specify a ComponentDefinition object that represents the introns or exons of a eukaryotic gene. +\paragraph{MultiRange} +\label{sec:MultiRange} +A MultiRange object represents a location that is specified by multiple Range objects. For example, this capability can be used to specify a ComponentDefinition object that represents the introns or exons of a eukaryotic gene. Third, the Cut class has been introduced to enable the specification of a location between two indices. Each Cut object has a single integer data field, “at,” that specifies the index just before the location represented by the Cut object. Even though there is no zero index on Structure objects in SBOL, a Cut object with “at” equal to zero represents the location just before index one. The OrientedCut class extends the Cut class with an orientation in the same way that the OrientedRange class extends the Range class. @@ -313,37 +405,21 @@ \subsubsection{Location} -\subsubsection{ComponentInstance} -\label{sec:ComponentInstance} +\subsubsection{SequenceConstraint} +\label{sec:SequenceConstraint} +In SBOL Version 1.1 partial designs are made possible by means of SequenceAnnotation objects that can specify that their locations precede those of other SequenceAnnotation objects. In Version 2.0 the “precedes” data field has been generalized to the StructuralConstraint class. A ComponentDefinition object can link to SequenceConstraint objects to assert different kinds of structural restrictions (not just precedes relationships) between the StructuralComponent objects that represent its subcomponents. These restrictions could include “sameOrientationAs” or “oppositeOrientationAs” to enable the relative orientation of StructuralComponent objects whose ComponentDefinition objects lack associated Sequence objects in partial designs. \begin{figure}[ht] \begin{center} -\includegraphics[scale=0.6]{uml/component_instance} -\caption[]{Component} -\label{uml:component} +\includegraphics[scale=0.6]{uml/sequence_constraint} +\caption[]{SequenceConstraint class} +\label{uml:sequence_constraint} \end{center} \end{figure} -% The second sentence is confusing. -Hierarchical compositions of structure and function is enabled via the ComponentInstance class. Each ComponentInstance object has three data fields. \textcolor{red}{The first data field, “definition”, links to the Component object that is effectively a part of the Component or Module object that owns the ComponentInstantiation object.} The second data field, “access,” defines whether the ComponentInstance object can be referred to by ComponentInstance objects that are higher in the design hierarchy (yes if access is set to “public”). The third data field, "mappings", is a set of MapsTo objects that link between other ComponentInstance objects at the same level of the design hierarchy as well as other ComponentInstance objects that are lower in the design hierarchy, thereby composing these objects with greater specificity (see first module example). - -There are two subclasses of the ComponentInstance class: the StructuralComponent and FunctionalComponent classes. - -\subsubsection{Component} -\label{sec:Component} -Composition of the structural layer of SBOL designs is accomplished using StructuralInstance objects. Each StructuralComponent object is owned by a ComponentInstance object and serves as an explicit usage of a \textcolor{red}{sub-Component} object for the purpose of physical composition. - - - - -\subsubsection{FunctionalComponent} -\label{sec:FunctionalComponent} -Composition of the functional layer of SBOL designs, on the other hand, is accomplished using FunctionalComponent objects. Each FunctionalComponent object is owned by a Module object and serves as an explicit usage of a ComponentInstance object for the purpose of fulfilling some function. In addition, each FunctionalInstantiation must specify via the “direction” field whether it serves as an input, output, both, or neither for its parent Module object. - - \subsection{Sequence} @@ -359,11 +435,11 @@ \subsection{Sequence} \end{figure} -\subsubsection{The \sbolheading{elements} property} +\subsubsection*{The \sbolheading{elements} property} \label{sec:elements} Required. A \external{String} of characters that represent the constituents of biological molecule, for example nucleic acid symbols for DNA molecules. -\subsubsection{The \sbolheading{encoding} property} +\subsubsection*{The \sbolheading{encoding} property} \label{sec:encoding} Required. \sbol{Sequence} objects identify their type of encoding with a \external{URI}. For example, a \sbol{Sequence} object that encodes a DNA sequence would have an \external{IUPAC DNA} encoding, while a \sbol{Sequence} object that encodes the chemical structure of glucose might have a \external{simplified molecular-input line-entry system (SMILES)} encoding (\ref{tbl:sequence_encodings}). @@ -385,7 +461,6 @@ \subsubsection{The \sbolheading{encoding} property} The example below shows the serialization of a \sbol{Sequence} object for a promoter. Nucleotide sequences are represented with the \sbol{elements} property and the encoding is serialized as a URI resource. -\begin{figure} [ht] \lstsetsbol \begin{lstlisting} @@ -393,9 +468,39 @@ \subsubsection{The \sbolheading{encoding} property} \end{lstlisting} -\label{ser:sequence} + + + + +\subsection{ComponentInstance} +\label{sec:ComponentInstance} + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/component} +\caption[]{Component} +\label{uml:component} +\end{center} \end{figure} +% The second sentence is confusing. +Hierarchical compositions of structure and function is enabled via the ComponentInstance class. Each ComponentInstance object has three data fields. \textcolor{red}{The first data field, ``definition'', links to the Component object that is effectively a part of the Component or Module object that owns the ComponentInstantiation object.} The second data field, ''access'', defines whether the ComponentInstance object can be referred to by ComponentInstance objects that are higher in the design hierarchy (yes if access is set to ''public''). The third data field, ``mappings'', is a set of MapsTo objects that link between other ComponentInstance objects at the same level of the design hierarchy as well as other ComponentInstance objects that are lower in the design hierarchy, thereby composing these objects with greater specificity (see first module example). + +There are two subclasses of the ComponentInstance class: the StructuralComponent and FunctionalComponent classes. + + + + +\subsection{Component} +\label{sec:Component} +Composition of the structural layer of SBOL designs is accomplished using \sbol{Component} objects. Each \sbol{Component} object is owned by a ComponentDefinition object and serves as an explicit usage of a \textcolor{red}{sub-Component} object for the purpose of physical composition. + + + + +\subsection{FunctionalComponent} +\label{sec:FunctionalComponent} +Composition of the functional layer of SBOL designs, on the other hand, is accomplished using \sbol{FunctionalComponent} objects. Each FunctionalComponent object is owned by a Module object and serves as an explicit usage of a ComponentInstance object for the purpose of fulfilling some function. In addition, each FunctionalInstantiation must specify via the ``direction'' field whether it serves as an input, output, both, or neither for its parent Module object. \subsection{ModuleDefinition} \label{sec:ModuleDefinition} @@ -408,9 +513,9 @@ \subsection{ModuleDefinition} \end{center} \end{figure} -The ModuleDefinition class forms the hub for functional description of genetic designs. A Module object is composed from zero or more FunctionalComponent, Module, and Interaction objects, and links to zero or more Model objects. A Module object relies on the “direction” data fields of its FunctionalComponent objects to specify whether they serve as its inputs or outputs. +The ModuleDefinition class forms the hub for functional description of genetic designs. A Module object is composed from zero or more FunctionalComponent, Module, and Interaction objects, and links to zero or more Model objects. A Module object relies on the ``direction'' data fields of its FunctionalComponent objects to specify whether they serve as its inputs or outputs. -In addition, each ModuleDefinition object must now have at least one of potentially several roles to indicate its intended usages. For example, the role URIs on a ModuleDefinition object may identify terms for abstract module roles, such as “inverter” or “AND gate,” or they may identify terms for biological module roles, such as “metabolic pathway” and “signaling cascade.” +In addition, each ModuleDefinition object must now have at least one of potentially several roles to indicate its intended usages. For example, the role URIs on a ModuleDefinition object may identify terms for abstract module roles, such as``inverter'' or ``AND gate'', or they may identify terms for biological module roles, such as ``metabolic pathway'' and ``signaling cascade''. @@ -426,8 +531,7 @@ \subsubsection{Module} \end{center} \end{figure} -The Module class enables the composition of Module objects from other sub-Module objects. \textcolor{red}{The first data field, “definition”, links to the ModuleDefinition object that is effectively a part of the Module object that owns the Module object.} The second data field, “mappings”, is a set of MapsTo objects that link between the Component objects at the same level of the design hierarchy as the Module object and the Component objects that are lower in the design hierarchy, thereby composing these objects with greater specificity. - +The Module class enables the composition of Module objects from other sub-Module objects. \textcolor{red}{The first data field, ``definition'', links to the ModuleDefinition object that is effectively a part of the Module object that owns the Module object.} The second data field, ``mappings'', is a set of MapsTo objects that link between the Component objects at the same level of the design hierarchy as the Module object and the Component objects that are lower in the design hierarchy, thereby composing these objects with greater specificity. @@ -441,9 +545,9 @@ \subsubsection{Module} \label{uml:maps_to} \end{center} \end{figure} -The MapsTo class serves as a means of linking between Component objects (both StructuralComponents and FunctionalComponents) at different levels of the design hierarchy. For example, when a Module object is instantiated inside another Module object, a MapsTo object on the appropriate Module object can be used to link between a FunctionalComponent object in the parent Module (as specified by the “local” data field) and a FunctionalComponent object in the child module (as specified by the “remote” data field). This linking can perhaps be most easily understood via the examples in the next section. +The MapsTo class serves as a means of linking between Component objects (both StructuralComponents and FunctionalComponents) at different levels of the design hierarchy. For example, when a Module object is instantiated inside another Module object, a MapsTo object on the appropriate Module object can be used to link between a FunctionalComponent object in the parent Module (as specified by the ``local'' data field) and a FunctionalComponent object in the child module (as specified by the ``remote'' data field). This linking can perhaps be most easily understood via the examples in the next section. -In addition to specifying a link, each MapsTo object must also specify a “refinement” relationship between its local and remote Components. Under this data model, there are four types of refinement: “verifyIdentical” requires that the Component objects link to the same ComponentDefinition object, “useLocal” indicates that the local Component object overrides the remote Component object, “useRemote” indicates the opposite, and “merge” indicates that data fields of the local and remote ComponentInstantiation objects are to be interpreted in combination. +In addition to specifying a link, each MapsTo object must also specify a ``refinement'' relationship between its local and remote Components. Under this data model, there are four types of refinement: ``verifyIdentical'' requires that the Component objects link to the same ComponentDefinition object, ``useLocal'' indicates that the local Component object overrides the remote Component object, “useRemote” indicates the opposite, and “merge” indicates that data fields of the local and remote ComponentInstantiation objects are to be interpreted in combination. \subsubsection{Interaction} @@ -626,6 +730,195 @@ \section{Examples of Data Model} % ----------------------------------------------------------------------------- \section{Examples of Serialization} % ----------------------------------------------------------------------------- +This example shows the serialization of the PoPS Receiver device designed by Canton and co-workers. Details of the device can be found at http://parts.igem.org/Part:BBa\_F2620. + +%todo: Add more description and ref + +\label{ser:F2620} +\lstsetsbol +\begin{lstlisting} + + + + 2015-02-26 14:26:55.692 + BBa_R0040 + TetR repressible promoter + + + + + + 2015-02-26 14:26:55.692 + BBa_C0062 + luxR coding sequence + + + + + + 2015-02-26 14:26:55.692 + BBa_B0015 + Double terminator + + + + + + 2015-02-26 14:26:55.693 + BBa_R0062 + LuxR inducible promoter + + + + + + 2015-02-26 14:26:55.693 + BBa_F2620 + 3OC6HSL -> PoPS Receiver + + + + + 2015-02-26 14:26:55.694 + + + + + + + 2015-02-26 14:26:55.694 + + + + + + + 2015-02-26 14:26:55.695 + + + + + + + 2015-02-26 14:26:55.694 + + + + + + + 2015-02-26 14:26:55.695 + + + + + + + 2015-02-26 14:26:55.697 + + + 2015-02-26 14:26:55.697 + 901 + 956 + + + + + + + + 2015-02-26 14:26:55.696 + + + 2015-02-26 14:26:55.696 + 69 + 770 + + + + + + + + 2015-02-26 14:26:55.696 + + + 2015-02-26 14:26:55.696 + 56 + 68 + + + + + + + + 2015-02-26 14:26:55.696 + + + 2015-02-26 14:26:55.695 + 1 + 55 + + + + + + + + 2015-02-26 14:26:55.697 + + + 2015-02-26 14:26:55.697 + 771 + 900 + + + + + + + + + 2015-02-26 14:26:55.692 + BBa_B0034 + RBS based on Elowitz repressilator + + + + + + 2015-02-26 14:26:55.69 + ccaggcatcaaataaaacgaaaggctcagtcgaaagactgggcctttcgttttatctgttgtttgtcggtgaacgctctctactagagtcacactggctcaccttcgggtgggcctttctgcgtttata + + + + 2015-02-26 14:26:55.69 + aaagaggagaaa + + + + 2015-02-26 14:26:55.69 + atgcttatctgatatgactaaaatggtacattgtgaatattatttactcgcgatcatttatcctcattctatggttaaatctgatatttcaatcctagataattaccctaaaaaatggaggcaatattatgatgacgctaatttaataaaatatgatcctatagtagattattctaactccaatcattcaccaattaattggaatatatttgaaaacaatgctgtaaataaaaaatctccaaatgtaattaaagaagcgaaaacatcaggtcttatcactgggtttagtttccctattcatacggctaacaatggcttcggaatgcttagttttgcacattcagaaaaagacaactatatagatagtttatttttacatgcgtgtatgaacataccattaattgttccttctctagttgataattatcgaaaaataaatatagcaaataataaatcaaacaacgatttaaccaaaagagaaaaagaatgtttagcgtgggcatgcgaaggaaaaagctcttgggatatttcaaaaatattaggttgcagtgagcgtactgtcactttccatttaaccaatgcgcaaatgaaactcaatacaacaaaccgctgccaaagtatttctaaagcaattttaacaggagcaattgattgcccatactttaaaaattaataacactgatagtgctagtgtagatcac + + + + 2015-02-26 14:26:55.689 + + + + + 2015-02-26 14:26:55.691 + acctgtaggatcgtacaggtttacgcaagaaaatggtttgttatagtcgaataaa + + + + 2015-02-26 14:26:55.69 + tccctatcagtgatagagattgacatccctatcagtgatagagatactgagcac + + + +\end{lstlisting} % ----------------------------------------------------------------------------- \section{Best Practices} diff --git a/uml/component.png b/uml/component.png new file mode 100644 index 0000000000000000000000000000000000000000..6fda5ddf5eb11223246c73709a3cc258642a5195 GIT binary patch literal 11464 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 literal 0 HcmV?d00001 diff --git a/uml/example_annotated_gene.png b/uml/example_annotated_gene.png new file mode 100644 index 0000000000000000000000000000000000000000..d15d611835db21927a84d1880505c571bb7c7a32 GIT binary patch literal 49048 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

A53-oW}yAe0)w=b>}g57Nnl8Gf6B) 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

D2Oag=qw;1FRG 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 literal 0 HcmV?d00001 diff --git a/uml/example_laci_inverter.png b/uml/example_laci_inverter.png new file mode 100644 index 0000000000000000000000000000000000000000..534e2d58d295b04b0fe820cfaec03ad29f43468b GIT binary patch literal 58749 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 Date: Thu, 26 Mar 2015 13:55:53 +0000 Subject: [PATCH 006/317] v6 --- images/toggleswitch_flat.png | Bin 0 -> 32478 bytes images/toggleswitch_modular.png | Bin 0 -> 20056 bytes sbol.bib | 25 ++ sbol2.tex | 685 +++++++++++++++++++++++++------- uml/collection.png | Bin 3330 -> 4257 bytes uml/component.png | Bin 11464 -> 0 bytes uml/component_definition.png | Bin 14634 -> 14483 bytes uml/component_instance.png | Bin 11238 -> 11446 bytes uml/documented.png | Bin 5246 -> 4914 bytes uml/generictoplevel.png | Bin 3128 -> 3339 bytes uml/identified.png | Bin 4099 -> 3751 bytes uml/identified_annotations.png | Bin 7769 -> 7719 bytes uml/interaction.png | Bin 5158 -> 5190 bytes uml/location.png | Bin 10952 -> 13618 bytes uml/participation.png | Bin 5552 -> 5651 bytes uml/toggleswitch_modular.png | Bin 0 -> 20056 bytes uml/toogleswitch_flat.png | Bin 0 -> 32478 bytes uml/toplevel.png | Bin 7329 -> 7553 bytes 18 files changed, 566 insertions(+), 144 deletions(-) create mode 100644 images/toggleswitch_flat.png create mode 100644 images/toggleswitch_modular.png create mode 100644 sbol.bib delete mode 100644 uml/component.png create mode 100644 uml/toggleswitch_modular.png create mode 100644 uml/toogleswitch_flat.png diff --git a/images/toggleswitch_flat.png b/images/toggleswitch_flat.png new file mode 100644 index 0000000000000000000000000000000000000000..3eedd04da969e41b93d34fdf87cf5456a4ffd55f GIT binary patch literal 32478 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 literal 0 HcmV?d00001 diff --git a/sbol.bib b/sbol.bib new file mode 100644 index 00000000..ee0c2888 --- /dev/null +++ b/sbol.bib @@ -0,0 +1,25 @@ +@article{CellML, + Author = {A Garny and DP Nickerson and J Cooper and R Weber dos Santos and AK Miller and S McKeever and PM Nielsen and PJ Hunter}, + Journal = {Philos. Transact. A: Math Phys Eng Sci}, + Month = {September}, + Number = {1878}, + Pages = {3017--43}, + Title = {CellML and associated tools and techniques}, + Volume = {366}, + Year = {2008}} + +@incollection{SBML, + Author = {Finney, Andrew and Hucka, Michael and Bornstein, Benjamin J. and Keating, Sarah M. and Shapiro, Bruce M. and Matthews, Joanne and Kovitz, Benjamin K. and Schilstra, Maria J. and Funahashi, Akira and Doyle, John and Kitano, Hiroaki}, + Booktitle = {System Modeling in Cell Biology: From Concepts to Nuts and Bolts}, + Editor = {Zoltan Szallasi and J{\"o}rg Stelling and Vipul Periwal}, + Publisher = {MIT Press}, + Title = {Software Infrastructure for Effective Communication and Reuse of Computational Models}, + Year = {2006}} + +@misc{matlab, +year = {2015}, +author = {MathWorks}, +title = {MATLAB}, +publisher = {The MathWorks Inc.}, +address = {Natick, Massachusetts} +} diff --git a/sbol2.tex b/sbol2.tex index d79957e1..5bd0c555 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -1,6 +1,7 @@ \documentclass[draftspec]{sbmlpkgspec} \usepackage{microtype} \usepackage{color} +\usepackage[]{todonotes} % preface with "disable" to hide todo notes %% ============================================================================ %% Description: Documentation for sbmlpkgspec.cls @@ -55,7 +56,7 @@ \definecolor{gray}{rgb}{0.5,0.5,0.5} \definecolor{light-gray}{gray}{0.97} \lstdefinelanguage{sbol} - {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:sequence,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation, sbol:component,sbol:location, sbol:sequenceAnnotation }, + {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:sequence,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation, sbol:component,sbol:location, sbol:sequenceAnnotation, sbol:Range, sbol:start, sbol:end, sbol:orientation,sbol:SequenceConstraint, sbol:restriction, sbol:subject, sbol:object,sbol:Sequence, sbol:elements, sbol:encoding,sbol:Model, sbol:source, sbol:language, sbol:framework}, basicstyle=\fontsize{7}{9}\selectfont\ttfamily, backgroundcolor=\color{light-gray}, keywordstyle=\color{blue}, @@ -97,58 +98,244 @@ \packageTitle{\latex Class for SBML Package Specifications} \packageVersion{Version 2.0.0} -\packageVersionDate{1 January 2014} +\packageVersionDate{24 April 2015} \title{BBF RFC ?: Synthetic Biology Open Language \texorpdfstring{\\[3pt]}{}\mbox{(SBOL) Version~2.0.0}} + \author{Nicholas Roehner\\[0.25em] - \mailto{nicholasroehner@gmail.com}\\[0.25em] - Bioengineering\\ +\mailto{nicholasroehner@gmail.com}\\[0.25em] + Electrical and Computer Engineering\\ Boston University\\ - Cambridge, MA, USA + Boston, MA, USA\\ + \\ + Matthew Pocock\\ +\mailto{turingatemyhamster@gmail.com}\\ + Turing Ate My Hamster LTD\\ + 7 Station RD, Backworth, NE27 0RT } + +\author{\begin{tabular}{l>{\hspace*{15pt}}r} +Nicholas Roehner & \emph{Boston University, US}\\ +Matthew Pocock & \emph{Newcastle University, GB}\\ +Goksel Misirli & \emph{Newcastle University, GB}\\ +Anil Wipat & \emph{Newcastle University, GB}\\[8pt] +\end{tabular}\\ +\href{mailto:editors@sbolstandard.org}{\sffamily editors@sbolstandard.org}} + + \maketitlepage \maketableofcontents % ----------------------------------------------------------------------------- \section{Purpose} % ----------------------------------------------------------------------------- +% Synthetic biology aims to apply engineering principles such as standardization, modularity, and design abstraction to molecular biology. However, the field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. + +% The Synthetic Biology Open Language is intended to help synthetic biologists collaborate by allowing them to exchange designs in a standardized data format. In addition, the SBOL data model systematically describes the essential details of a design that are required for researchers to reproduce each other's designs in the laboratory. The purpose of the Synthetic Biology Open Language is to aid collaboration between researchers, improve scientific reproducibility, and to speed the research and development of technologies based on synthetic biology. + +% Below is my revision. Any thoughts? - Nic + +Synthetic biology builds upon the techniques and successes of genetics, molecular biology and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. + +To help address these challenges, the Synthetic Biology Open Language (SBOL) introduces (1) a standardized file format for the electronic exchange of biological designs and (2) a standardized data model for the reproducible description of essential design details. Ultimately, SBOL is intended to speed up the research and development of designed biological systems by enhancing the exchange and reproducibility of biological designs between different labs. + +The current SBOL standard, Version 1.1, focuses upon representing the structural aspects of genetic designs. To serve as an effective medium for the computational exchange of genetic designs, SBOL must be extended to capture more aspects of a designed system, including both structural and functional information, and the composition of complex structural and functional designs by combining simpler parts. The SBOL data model proposed in this specification provides for addressing the most pressing needs for expanding SBOL Version 1.1. + +\begin{enumerate} + +\item represent structural components of a biological design, including DNA, RNA, proteins, small molecules and other physical components + +\item describe behavioral aspects of a biological design, the intended or expected interactions and dynamic behavior + +\item associate structure and function together, so that a single design can be understood both in terms of its structure and its behavior + +\item support rich annotations of all components, so that data required to describe a design, but not formalized in this specification can be safely exchanged + +\end{enumerate} + +Taken together, these capabilities allow SBOL sufficient expressivity to support the description and exchange of hierarchical, modular representations of both the intended structure and function of designed biological systems. + +To address the need for functional descriptions in SBOL, the proposed data model adds classes for modules, interactions, and models. These classes provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the Systems Biology Markup Language (SBML)~\cite{SBML} to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. % ----------------------------------------------------------------------------- -\section{Relation to other BBF RFCs} +%\section{Relation to other BBF RFCs} % ----------------------------------------------------------------------------- % ----------------------------------------------------------------------------- -\section{Copyright Notice} +\section{Copyright Statement} % ----------------------------------------------------------------------------- +%% Variation from BBF RFC 0 specs confirmed in email communication with BBF by Jake Beal, 3/21/15 + +Copyright (C) The BioBricks Foundation (2015) and all of the individuals listed under "Acknowledgements" below. All Rights Reserved. + +This work is licensed under a \href{http://creativecommons.org/licenses/by/4.0/}{Creative Commons Attribution 4.0 International License (CC-BY 4.0)}. + % ----------------------------------------------------------------------------- -\section{Acknowledgements} +\section{History and Acknowledgements} % ----------------------------------------------------------------------------- +\todo[inline]{Add yourself if you have helped and aren't on the list} + +SBOL originated in discussions between participants in the Synthetic Biology Open Language Workshops held in Blacksburg, Virginia on January 7-10, 2011, San Diego, California on June 8, 2011, and Seattle, Washington January 5-6, 2012. Its further development is carried out at a series of subsequent open invitation workshops and through email exchanges on the SBOL Developers mailing list. + +Contributors to this work include: Eduardo Abeliuk (Teselagen), Laura Adam (Virginia Bioinformatics Institute), Aaron Adler (BBN Technologies), J. Christopher Anderson (University of California, Berkeley), David A. Ball (Virginia Bioinformatics Institute), Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Swapnil Bhatia (Boston University), Michael Bissell (Amyris, Inc.), Matthieu Bultelle (Imperial College London), Yizhi Cai (Johns Hopkins University), Deepak Chandran (University of Washington), Joanna Chen (Lawrence Berkeley National Lab), Kevin Clancy (Life Technologies), Kendall G. Clark (Clark \& Parsia, LLC.), Daniel Cook (University of Washington), Wilbert Copeland (University of Washington), Douglas Densmore (Boston University), Omri A. Drory (Genome Compiler, corp.), Drew Endy (BIOFAB and Stanford University), Michal Galdzicki (University of Washington), John H Gennari (University of Washington), Raik Gruenberg (IRIC, University of Montreal), Jennifer Hallinan (Newcastle University), Timothy Ham (Joint BioEnergy Institute), Nathan J. Hillson (Lawrence Berkeley National Lab), Cassie Huang (Boston University), Jeffrey D. Johnson (University of Washington), Marc Juul Christoffersen (BIOFAB), Kyung H. Kim (University of Washington), Richard Kitney (Imperial College London), Allan Kuchinsky (Agilent Technologies), Sung Won Lim (Genspace), Matthew W. Lux (Virginia Bioinformatics Institute), Curtis Madsen (University of Utah), Akshay Maheshwari (BIOFAB), Goksel Misirli (Newcastle University), Barry Moore (University of Utah), Chris J. Myers (University of Utah), Josh Natarajan (Autodesk Research), Ernst Oberortner (Boston University), Carlos Olguin (Autodesk Research), Jean Peccoud (Virginia Bioinformatics Institute), Josh Perfetto (Cofactor Bio, LLC.), Hector Plahar (Joint BioEnergy Institute), Darren Platt (Amyris, Inc.), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Harvard University), Sridhar Ranganathan (Life Technologies), Cesar A. Rodriguez (Genome Compiler, corp.), Nicholas Roehner (University of Utah), Vincent Rouilly (University of Basel), Herbert M. Sauro (University of Washington), Evren Sirin (Clark \& Parsia, LLC.), Trevor F. Smith (Agilent Technologies), Lucian P. Smith (University of Washington), Guy-Bart Stan (Imperial College London), Jason Stevens (University of Utah), Vinod Tek (Imperial College London), Alan Villalobos (DNA 2.0, Inc.), Mandy Wilson (Virginia Bioinformatics Institute), Chris Winstead (Utah State University), Anil Wipat (Newcastle University), and Fusun Yaman Sirin (BBN Technologies). % ----------------------------------------------------------------------------- \section{Introduction} % ----------------------------------------------------------------------------- +While the first version of the Synthetic Biology Open Language (SBOL) has been adopted by several academic and commercial genetic design automation (GDA) software tools, it only covers a limited range of the requirements for a standardized exchange format for synthetic biology. The SBOL 2.0 specification revises version 1.1, enabling the representation of a wider range of components with and without sequences, including RNA components, protein components, small molecules, and molecular complexes. Additionally, the latest SBOL can be used to convey the intended function of a design, as well as its structural composition. +This dichotomous representation of the structural and functional features of a design is a paradigm applied to great success in electrical and computer engineering, and is essential for the development of design automation software in synthetic biology. + +The goal of this specification is to define the terminology and relationships used to describe biological designs. In order to provide a shared understanding between engineers seeking to exchange biological designs, SBOL provides a common definition of the concepts needed. As much as possible, we attempt to make explicit the meaning of all terminology and data structures. + + +% ----------------------------------------------------------------------------- +\section{SBOL RDF Serialization} +% ----------------------------------------------------------------------------- + +The SBOL serialization is designed to meet several competing requirements. Firstly, it needs to support ad-hoc annotations and extensions. Secondly, it needs to support processing by generic semantic web and database tools that have little or no knowledge of the SBOL data model. Thirdly, it needs to support the generation of light-weight software clients so as to lower the barrier to entry for new API implementations within environments were the community-maintained implementation(s) are not suitable. + +The canonical serialization of SBOL is to a strict dialect of XML-RDF. This provides the base from which to meet the requirements. Any XML-RDF-aware tooling can consume and analyze an SBOL file. Where possible, we have re-used predicates from widely-used terminologies (such as Dublin Core REF) to expose as much of the data as practical to standard RDF tooling. + +Arbitrary XML-RDF provides a great deal of flexibility in how equivalent data can be serialized. This makes it different to process RDF-XML files using standard off-the-shelf XML tools, such as DOM-OO mappings. To address this, we define a canonical association between the nesting of data structures within the SBOL UML data model and the RDF-XML file. For all associations that are ownership (filled diamonds), the RDF-XML for the owned entity is embedded within that of the owner. For all associations that are by reference (open diamonds), the RDF-XML for the referenced property is linked to via a resource URI. + +All first-class SBOL datatypes have an associated identity URI. In the RDF, this is the resource URI for instances of that type. Properties and associations are asserted as nested RDF-XML assertions. Some datatypes are `top level', which means that they always appear at the top level of the RDF-XML serialization. All other datatypes will always appear nested within their container. + +Each instance of a first-class SBOL datatype may have annotations attached. These are composed of a name and a value. These are serialized to RDF as a triple with the subject being the identity of the instance they annotate, the predicate being the name of that annotation, and the object being the value of that annotation. Annotation values are always nested within the RDF-XML serialization of the instance that they annotate. + +SBOL supports top-level, user-defined annotations. This is to allow non-standardized but necessary information to be carried around as part of a design. For example, a particular sub-community may have an internal standard for data sheets. Individual data sheets can be represented as a generic top-level annotation with internal structured annotations. This will be serialized into the RDF-XML in the usual way, as a RDF-XML block at the top level of the file. Other objects may refer to this through their annotations by reference, and this generic top-level entity may refer to other entities via references. + +Through this design for the XML-RDF serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. As exactly the same scheme is used to serialize annotations and specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of these. Those not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entries in an SBOl file, we enable future specifications or extensions to ratify the structure of some of these. They would then become something represented by an explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely round-trip the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. The very regimented control of nesting vs referencing allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL XML-RDF files safely. + % ----------------------------------------------------------------------------- \section{Overview of SBOL} % ----------------------------------------------------------------------------- -This is some test text. +Typically, information about a genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow defining genetic circuits unambiguously, and reusing the designs. Interactions between these constituents are then used to construct biologically plausible designs. + +In the figure below, a simple toggle switch system is displayed, in which LacI and TetR repress each other transcriptionally. The toggling of the system is controlled by adding IPTG to deactivate LacI, and ATC to deactivate TetR. The components of the system includes genetic elements, proteins, small molecules. + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.4]{images/toggleswitch_flat} +\caption[]{An example toggle swicth genetic circuit. } +\label{images:toggleswitch_flat} +\end{center} +\end{figure} + +SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{Module}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. + + +SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements modularly, modules that are composed of different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. + +The same toggle switch is now displayed using two LacI and TetR inverter submodules in figure \ref{images:toggleswitch_modular}. The LacI inverter uses LacI as input and produces the TetR output, and the TetR inverter uses TetR as input and produces the LacI output. These inputs and outputs are mapped in a parent module. + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.4]{images/toggleswitch_modular} +\caption[]{Representing hierarchical composition of the toggle switch genetic circuit.} +\label{images:toggleswitch_modular} +\end{center} +\end{figure} % ----------------------------------------------------------------------------- \section{SBOL Vocabulary} % ----------------------------------------------------------------------------- +SBOL defines several entity types in order to explicitly define different types of information. At the top level, a SBOL document includes these entities: + +\vspace*{2ex} +\begin{center} + \begin{edtable}{tabular}{>{\hspace*{10pt}\slshape}l>{\hspace*{40pt}}l} + list of component definitions(optional) & (\sec*{sec:ComponentDefinition}) \\ + list of sequences (optional) & (\sec*{sec:Sequence}) \\ + list of module definitions (optional) & (\sec*{sec:ModuleDefinition}) \\ + list of models (optional) & (\sec*{sec:Model}) \\ + list of collections (optional) & (\sec*{sec:Collection}) \\ + list of generic top level entities (optional) & (\sec*{sec:GenericTopLevel}) \\ + \end{edtable} +\end{center} +\vspace*{2ex} + +In addition to these top level entities, a SBOL document may include addiitonal entities that are nested within the top level entities. Short descriptions of all SBOL entities are given below: + +\begin{description} + +\item \emph{\sbol{ComponentDefinition}}: Represents biological molecules such as DNA, proteins, RNA and small molecules. + +\item \emph{\sbol{Component}}: + +\item \emph{\sbol{SequenceAnnotation}}: + +\item \emph{\sbol{Location}}: + +\item \emph{\sbol{SequenceConstraint}}: + +\item \emph{\sbol{Sequence}}: + +\item \emph{\sbol{ModuleDefinition}}: + +\item \emph{\sbol{FunctionalComponent}}: + +\item \emph{\sbol{Module}}: + +\item \emph{\sbol{MapsTo}}: + +\item \emph{\sbol{Interaction}}: + +\item \emph{\sbol{Participation}}: + +\item \emph{\sbol{Model}}: + +\item \emph{\sbol{Collection}}: + +\item \emph{\sbol{GenericTopLevel}}: + +\end{description} + % ----------------------------------------------------------------------------- \section{SBOL Data Model} % ----------------------------------------------------------------------------- -In this section we describe the major entities of an SBOL document and the relationships between these entities. Complete SBOL examples and best practices when using SBOL can be found in Section \ref{sec:examples} and Section \ref{sec:bestpractices} respectively. +In this section, we describe the major entities of an SBOL document and the relationships between these entities. The data model is specified using a Unified Modeling Language (UML) 2.0 diagram \href{http://www.omg.org/spec/UML/2.0/}{(OMG 2005)}. + +Complete SBOL examples and best practices when using SBOL can be found in \ref{sec:examples} and \ref{sec:bestpractices}, respectively. + +\subsection{Understanding the UML Diagrams} + +The biological design concepts modeled by SBOL are commonly referred to as classes which are represented in UML diagrams as rectangles with the class name at the top. Classes may be connected with other classes by associations (arrows). The data properties for each class are listed in a compartment under the name, with the corresponding data types and cardinality (explained below) specified for each property. + +All SBOL properties and assertions are named. In the UML diagrams, these are named with a mixture of singular and plural forms, to aid in comprehensibility of the diagrams. The singular and plural forms follow the usual rules of grammar, so for example, \sbol{sequenceAnnotation} is the singular form of \sbol{sequenceAnnotations}. + +Within the RDF serialization, each value for a property is individually asserted. So if a property has 5 values, there will be 5 RDF triples, one for each value assertion. The SBOL serialization does not use RDF collections to represent multiple values. It follows that in the RDF serializaiton, the RDF predicates will always use the singular form of the name. + +Within an implementing API, properties and associations will be mapped to member accessors. The API should use the idiomatic representation of optional, single and multiple-valued members. + +For example, a Java implementation would use common Java idioms. For example, an optional value may be represented as a Java Bean property that returns either the value or null. A multi-valued property may return a Java collection. If the API exposes a collection for multiple-valued properties and associations, it should use the plural form of the property/association, and the value of the collection should not ever be null. + +As another example, a relational implementation of the SBOL API would store the properties and associations a mixture of data fields and references via foreign keys. The fields in individual tables will correspond to the `arrowhead' end of an association (in reverse to the direction in the RDF and OO representations), and the name may be modified to reflect this change in directionality. For example, the \sbol{sequence} association between a \sbol{ComponentDefinition} and \sbol{Sequence} would be represented by a foreign key field on the \sbol{Sequence} table that references a row in the \sbol{ComponentDefinition} table, and it may be named \sbol{sequenceOf}. + +The properties and associations within SBOL are annotated with cardinality restrictions. These are: + +\begin{itemize} + +\item $1$ - required, zero or one: there must be exactly one value for this property. + +\item $0 \ldots 1$ - optional: there may be a value for this property or a value may be absent. + +\item $0 \ldots \infty$ - unbounded: there may be any number of values for this property, including none. + +\item $1 \ldots \infty$ - required, unbounded: there may be any number of values for this property, as long as there is at least one. + +\item $n \ldots \infty$ - at least: there must be at least $n$ values for this property. +\end{itemize} +Associations between SBOL objects are directional. An arrowhead indicates the direction in which an association can be traversed. Diamonds indicate the type of association. Open-faced diamonds are shared aggregation, meaning the object at the end of the arrow can exist independently of the source object. In contrast, filled diamonds indicate composite aggregation, or a part-whole relationship, which means that a part instance must be included in at most one whole and cannot exist independently. \subsection {SBOL Document} -Each SBOL document is also a valid RDF/XML document and starts with an XML declaration with the XML version set to "1.0". The top most rdf:RDF XML element includes the SBOL namespace declaration, as shown in the example below. This namespace is used to identify SBOL defined entities and their properties. +An SBOL document is a valid RDF/XML document. Accordingly, each SBOL document starts with an XML declaration that has its XML version set to ``1.0.'' As shown in the example below, this declaration is then followed by a rdf:RDF XML element that includes the namespace declarations for RDF and SBOL. The latter namespace is used to indicate which entities and properties in the SBOL document are defined by SBOL. \lstsetsbol \begin{lstlisting} @@ -158,9 +345,7 @@ \section{SBOL Data Model} \end{lstlisting} -An SBOL document can also include custom namespace declarations which are used to embed application specific data as explained in section \ref{sec:annotations}. - - +As explained in \ref{sec:annotations}, SBOL documents can also include custom namespace declarations for the purpose of embedding application-specific data. \subsection {Identified} @@ -169,18 +354,20 @@ \section{SBOL Data Model} \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/identified} -\caption[]{The Identified class} +\caption[]{The Identified abstract class} \label{uml:identified} \end{center} \end{figure} -SBOL-defined classes are all directly or indirectly derived from the Identified abstract class. This inheritance allows SBOL objects to be identified using unique URIs that may refer to relative locations within an SBOL document or permanent URLs from the World Wide Web. This class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, \sbol{version} and \sbol{timeStamp} +All SBOL-defined classes are directly or indirectly derived from the Identified abstract class. This inheritance enables SBOL objects to be identified using unique URIs that may refer to relative locations within an SBOL document or URLs that refer to locations on the World Wide Web. This class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, and \sbol{version}. (\ref{uml:identified}). %TODO: Is there any example SBOL entity that does not derive from Identified? \subsubsection*{The \sbolheading{identity} property} \label{sec:identity} -This property is required in all \sbol{Identified} objects and has a datatype of \external{URI}. As before in SBOL Version 1.1, this \external{URI} serves to uniquely identify a SBOL object. The \sbol{identity} attribute can be used to point to other objects from the same SBOL document or resources on the Web. Although all SBOL-defined properties are controlled using the SBOL namespace, this property is represented using the \external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about} term (see \ref{ser:Collection}). +This property is required by all \sbol{Identified} objects and has a datatype of \external{URI}. As before in SBOL Version 1.1, this \external{URI} serves to uniquely identify a SBOL object. The \sbol{identity} property can be used to point to other objects in the same SBOL document or resources on the Web. Although most properties of SBOL entities are defined under the SBOL namespace, this property is defined under the RDF namespace using the term below. + +\external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. \subsubsection*{The \sbolheading{persistentIdentity} property} \label{sec:persistentIdentity} @@ -190,12 +377,9 @@ \subsubsection*{The \sbolheading{version} property} \label{sec:version} This property has a datatype of \external{String} and is used along with the \sbol{persistentIdentity} property to indicate the current version of an SBOL object. -\subsubsection*{The \sbolheading{timeStamp} property} -\label{sec:timeStamp} -This property has a datatype of \external{TimeStamp} and is used to indicate the creation time of a SBOL object. - - - +% \subsubsection*{The \sbolheading{timeStamp} property} +% \label{sec:timeStamp} +% This property has a datatype of \external{TimeStamp} and is used to indicate the creation time of a SBOL object. \subsection {Documented} \label{sec:Documented} @@ -246,7 +430,7 @@ \subsection{ComponentDefinition} % Figure has some classes named incorrectly \begin{figure}[ht] \begin{center} -\includegraphics[width=\textwidth]{uml/component_definition} +\includegraphics[width=0.95\textwidth]{uml/component_definition} \caption[]{ComponentDefinition} \label{uml:component_definition} \end{center} @@ -255,9 +439,8 @@ \subsection{ComponentDefinition} % Examples of ontologies for non-molecular type ComponentDefinitions (eg, light)...? -\subsubsection*{The \sbolheading{types} property} -\label{sec:types} - +\subsubsection*{The \sbolheading{type} property} +\label{sec:type} In order to specify the blueprint for a molecular component, a \sbol{ComponentDefinition} must have at least one types \external{URI} that identifies a term from an appropriate ontology, such as the ontology of Chemical Entities of Biological Interest (ChEBI) and the BioPAX ontology (\ref{tbl:componentdefinition_types}). A type URI documents the basic sort of biochemical or physical entity (for example DNA, protein, or RNA) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. If a \sbol{ComponentDefinition} object has multiple type URIs, then they must identify synonymous terms. \begin{table}[ht] @@ -278,43 +461,47 @@ \subsubsection*{The \sbolheading{types} property} \textcolor{red}{Examples of ontologies for non-molecular type ComponentDefinitions (eg, light)...?} -\subsubsection*{The \sbolheading{roles} property} -\label{sec:roles} +\subsubsection*{The \sbolheading{role} property} +\label{sec:role} -The \sbol{roles} of a ComponentDefinition object, on the other hand, are analogous to the type of a DnaComponent object in SBOL Version 1.1. Role URIs are expected to identify ontology terms that clarify a \sbol{ComponentDefinition} object's potential function in a biological context. For example, a \sbol{ComponentDefinition} object of type ``DNA'' may have a role of ``promoter'' or ``terminator,'' terms taken from the Sequence Ontology (SO). A ComponentDefinition object of type ``protein,'' on the other hand, may have a role of ``transcription factor'' or ``protease.'' +The \sbol{role} of a ComponentDefinition object, on the other hand, are analogous to the type of a DnaComponent object in SBOL Version 1.1. Role URIs are expected to identify ontology terms that clarify a \sbol{ComponentDefinition} object's potential function in a biological context. For example, a \sbol{ComponentDefinition} object of type ``DNA'' may have a role of ``promoter'' or ``terminator,'' terms taken from the Sequence Ontology (SO). A ComponentDefinition object of type ``protein,'' on the other hand, may have a role of ``transcription factor'' or ``protease.'' -\subsubsection*{The \sbolheading{subComponents} property} -\label{sec:subComponents} -Another significant change from SBOL version 1.1 is that a layer of design abstraction has been added to the \sbol{ComponentDefinition} class. The \sbol{ComponentDefinition} class is analagous to a blueprint or parts specification sheet for a biological part. In contrast, the \sbol{Component} class represents specific occurrences of parts within a design. Thus the new version of SBOL supports biological designs that re-use the same component more than once. +\subsubsection*{The \sbolheading{subComponent} property} +\label{sec:subComponent} +Another significant change from SBOL version 1.1 is that a layer of design abstraction has been added to the \sbol{ComponentDefinition} class. Instances of this class may have \sbol{subComponent}s, each pointing to a \sbol{Component} object. The \sbol{ComponentDefinition} class is analagous to a blueprint or parts specification sheet for a biological part. In contrast, the \sbol{Component} class represents specific occurrences of parts within a design. Thus the new version of SBOL supports biological designs that re-use the same component more than once. \subsubsection*{The \sbolheading{sequence} property} \label{sec:sequence} The sequence property is optional and includes the URI a corresponding \sbol{Sequence} object. -\subsubsection*{The \sbolheading{sequenceConstraints} property} -\label{sec:sequenceConstraints} +\subsubsection*{The \sbolheading{sequenceConstraint} property} +\label{sec:sequenceConstraint} -\subsubsection*{The \sbolheading{sequenceAnnotations} property} -\label{sec:sequenceAnnotations} -Finally, a ComponentDefinition object can define its structure by linking to objects that belong to the StructuralComponent, Sequence, SequenceAnnotation, and SequenceConstraint classes. These classes are described below. +\subsubsection*{The \sbolheading{sequenceAnnotation} property} +\label{sec:sequenceAnnotation} +Finally, a ComponentDefinition object can define its structure by linking to objects that belong to the Component, Sequence, SequenceAnnotation, and SequenceConstraint classes. These classes are described below. \subsubsection*{Serialization} -Parent classes of the \sbol{ComponentDefinition} class includes \sbol{TopLevel}, \sbol{Documented} and \sbol{Identified}. As a result, inherited properties are serialised as explained for these parent classes. The sequence property of a \sbol{ComponentDefinition} object includes a URI to a \sbol{Sequence} object and this URI is serialized as an rdf:resource. The \sbol{types} property may include a collection of type URIs and is serialized as an implicit collection, ignoring the property name ``types''. The \sbol{roles} property is also similarly serialized as an implicit collection of sbol:role properties. +Parent classes of the \sbol{ComponentDefinition} class includes \sbol{TopLevel}, \sbol{Documented} and \sbol{Identified}. As a result, inherited properties are serialised as explained for these parent classes. The sequence property of a \sbol{ComponentDefinition} object includes a URI to a \sbol{Sequence} object and this URI is serialized as an rdf:resource. The \sbol{type} property may include a collection of type URIs and is serialized as an implicit collection, ignoring the property name ``types''. The \sbol{role} property is also similarly serialized as an implicit collection of sbol:role properties. %Todo:Add the serialization descriptions to parent classes. \lstsetsbol \begin{lstlisting} - [\emph{optional}] ... [\emph{element}] - [\emph{optional}]...[\emph{element}] - [\emph{optional}]...[\emph{element}] - [\emph{optional}][\emph{element}] - [\emph{one or more}] [\emph{elements}] - [\emph{one or more}] [\emph{elements}] - [\emph{zero or more}] ... [\emph{elements}] - [\emph{zero or more}] ... [\emph{elements}] - + ... + [\emph{zero or one}] ... [\emph{element}] + [\emph{zero or one}] ...[\emph{element}] + [\emph{zero or one}] ...[\emph{element}] + [\emph{zero or one}] [\emph{element}] + [\emph{one or more}] [\emph{elements}] + [\emph{one or more}] [\emph{elements}] + [\emph{zero or more}] + ... + [\emph{elements}] + [\emph{zero or more}] + ... + [\emph{elements}] \end{lstlisting} @@ -323,18 +510,43 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - 2015-02-26 11:28:18.396 - J23119 promoter - Constitutive promoter - - - - - - + 2015-02-26 11:28:18.396 + J23119 promoter + Constitutive promoter + + + + + + \end{lstlisting} - + +\subsubsection{ComponentInstance} +\label{sec:ComponentInstance} + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/component_instance} +\caption[]{Component} +\label{uml:component} +\end{center} +\end{figure} + +% The second sentence is confusing. +Hierarchical compositions of structure and function is enabled via the ComponentInstance class. Each ComponentInstance object has three data fields. \textcolor{red}{The first data field, ``definition'', links to the Component object that is effectively a part of the Component or Module object that owns the ComponentInstantiation object.} The second data field, ''access'', defines whether the ComponentInstance object can be referred to by ComponentInstance objects that are higher in the design hierarchy (yes if access is set to ''public''). The third data field, ``mappings'', is a set of MapsTo objects that link between other ComponentInstance objects at the same level of the design hierarchy as well as other ComponentInstance objects that are lower in the design hierarchy, thereby composing these objects with greater specificity (see first module example). + +There are two subclasses of the ComponentInstance class: the Component and FunctionalComponent classes. + + + + +\subsubsection{Component} +\label{sec:Component} +Composition of the structural layer of SBOL designs is accomplished using \sbol{Component} objects. Each \sbol{Component} object is owned by a ComponentDefinition object and serves as an explicit usage of a \textcolor{red}{sub-Component} object for the purpose of physical composition. + + + \subsubsection{SequenceAnnotation} \label{sec:SequenceAnnotation} The \sbol{SequenceAnnotation} class describes a location of interest on the \sbol{Sequence} object linked by its parent \sbol{ComponentDefinition} object and may optionally associate this location with a \sbol{Component} object. \sbol{SequenceAnnotation} objects specify their location using a \sbol{Location} object. As explained below, the \sbol{Location} class is extended by several different classes, some of which assert locations other than simple ranges with start and end positions. @@ -354,51 +566,92 @@ \subsubsection{SequenceAnnotation} \sbol{SequenceAnnotation} objects may have this property to link location information to a \sbol{Component} object. The value of this property is a \sbol{Component} URI. -The serialization of SequenceAnnotation objects can be carried out according to the example below. A\_LOCATION\_SUBCLASS represents one of the Location subclasses. +The serialization of SequenceAnnotation objects can be carried out according to the example below. A\_LOCATION\_SUBCLASS represents one of the Location subclasses. \lstsetsbol \begin{lstlisting} - ... - [\emph{one}] ... [\emph{element}] - [\emph{zero or one}] [\emph{element}] + ... + [\emph{zero or one}] [\emph{element}] + [\emph{one}] + ... + [\emph{element}] \end{lstlisting} + + \subsubsection{Location} \label{sec:Location} The Location class is extended by the \sbol{Range}, \sbol{MultiRange}, and \sbol{Cut} classes. + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/location} +\caption[]{Location class} +\label{uml:location} +\end{center} +\end{figure} + + + + \paragraph{Range} \label{sec:Range} A \sbol{Range} object specifies inclusive start and end positions. These properties are required in \sbol{Range} objects and they can have \external{integer} values greater than zero. A \sbol{Range} object also includes an ``orientation'' property, for example to to specify directionality on a potentially double-stranded \sbol{Component} object. -\paragraph{The Range \sbolheading{start} property} +\paragraph{The \sbolheading{start} property} Specifies the start of a \sbol{Range}. This property is required and can have \external{integer} values greater than zero. -\paragraph{The Range \sbolheading{end} property} +\paragraph{The \sbolheading{end} property} Specifies the end of a \sbol{Range}. This property is required and can have \external{integer} values greater than zero. -\paragraph{The Range \sbolheading{orientation} property} -This property is optional. However, for \sbol{ComponentDefinition} objects representing DNA molecules, it is recommended that one of the orientation values are chosen. - - +\paragraph{The \sbolheading{orientation} property} +This property is optional has a \external{URI} value. However, for \sbol{ComponentDefinition} objects representing DNA molecules, it is recommended that one of the orientation values are chosen (\ref{tbl:orientation_types}). +\begin{table}[ht] + \begin{edtable}{tabular}{l} + \toprule + \textbf{Orientation Types} \\ + \midrule + http://sbols.org/v2\#inline\\ + http://sbols.org/v2\#reverseComplement\\ + \bottomrule + \end{edtable} + \caption{URI constants for orientation values} + \label{tbl:orientation_types} +\end{table} +The serialization of Range objects has the following form: +\lstsetsbol +\begin{lstlisting} + + ... + [\emph{one}] ... [\emph{element}] + [\emph{one}] ... [\emph{element}] + [\emph{zero or one}] [\emph{element}] + +\end{lstlisting} -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/location} -\caption[]{Location class} -\label{uml:location} -\end{center} -\end{figure} +The example below shows the serialization of a \sbol{Range} object. It specifies the region between 56 and 68, and the orientation is given as \external{inline}. +\lstsetsbol +\begin{lstlisting} + + 2015-02-26 17:11:21.884 + 56 + 68 + + +\end{lstlisting} \paragraph{MultiRange} \label{sec:MultiRange} A MultiRange object represents a location that is specified by multiple Range objects. For example, this capability can be used to specify a ComponentDefinition object that represents the introns or exons of a eukaryotic gene. -Third, the Cut class has been introduced to enable the specification of a location between two indices. Each Cut object has a single integer data field, “at,” that specifies the index just before the location represented by the Cut object. Even though there is no zero index on Structure objects in SBOL, a Cut object with “at” equal to zero represents the location just before index one. The OrientedCut class extends the Cut class with an orientation in the same way that the OrientedRange class extends the Range class. +\paragraph{Cut} +\label{sec:Cut} +The Cut class has been introduced to enable the specification of a location between two indices. Each Cut object has a single integer data field, ``at'', that specifies the index just before the location represented by the Cut object. Even though there is no zero index on Structure objects in SBOL, a Cut object with “at” equal to zero represents the location just before index one. The OrientedCut class extends the Cut class with an orientation in the same way that the OrientedRange class extends the Range class. Finally, while the Range and Cut classes are best suited to describing locations on sequential structures, the Location class can be extended in the future to better describe locations on Component Objects with non-sequential structure (see unspecified Moeity class as potential means for specifying locations in more than one dimension). @@ -407,7 +660,7 @@ \subsubsection{Location} \subsubsection{SequenceConstraint} \label{sec:SequenceConstraint} -In SBOL Version 1.1 partial designs are made possible by means of SequenceAnnotation objects that can specify that their locations precede those of other SequenceAnnotation objects. In Version 2.0 the “precedes” data field has been generalized to the StructuralConstraint class. A ComponentDefinition object can link to SequenceConstraint objects to assert different kinds of structural restrictions (not just precedes relationships) between the StructuralComponent objects that represent its subcomponents. These restrictions could include “sameOrientationAs” or “oppositeOrientationAs” to enable the relative orientation of StructuralComponent objects whose ComponentDefinition objects lack associated Sequence objects in partial designs. +A \sbol{ComponentDefinition} object can link to \sbol{SequenceConstraint} objects to assert different kinds of structural restrictions between two \sbol{Component} objects that are its subcomponents. A SequenceConstraint object requires \sbol{restriction}, \sbol{subject} and \sbol{object} properties to specify different constraints. \begin{figure}[ht] \begin{center} @@ -417,11 +670,61 @@ \subsubsection{SequenceConstraint} \end{center} \end{figure} +\paragraph{The \sbolheading{subject} property} +\label{sec:subject} +This property is required to specify the component that a restriction is applied to, and includes the \external{URI} \sbol{identity} of this \sbol{Component} object. + +\paragraph{The \sbolheading{object} property} +\label{sec:object} +This property includes the \external{URI} \sbol{identity} of a \sbol{Component} object that is the value of the restriction. + +\paragraph{The \sbolheading{restriction} property} +\label{sec:restriction} + +This property property qualifies the relationship between the \sbol{subject} and \sbol{object} \sbol{Component}s. It includes a \external{URI} value, indicating the restriction type. In SBOL Version 1.1 partial designs are made possible by means of SequenceAnnotation objects that can specify that their locations precede those of other SequenceAnnotation objects. In Version 2.0 the ``precedes'' data field has been generalized to the StructuralConstraint class. + +These restrictions could also include ``sameOrientationAs'' or ``oppositeOrientationAs'' to enable the relative orientation of Component objects whose ComponentDefinition objects lack associated Sequence objects in partial designs (\ref{tbl:restriction_types}). + +\begin{table}[ht] + \begin{edtable}{tabular}{l} + \toprule + \textbf{Restriction Types} \\ + \midrule + http://sbols.org/v2\#precedes\\ + http://sbols.org/v2\#sameOrientationAs\\ + http://sbols.org/v2\#oppositeOrientationAs\\ + \bottomrule + \end{edtable} + \caption{URI constants for restriction values} + \label{tbl:restriction_types} +\end{table} +The serialization of \sbol{SequenceConstraint} objects has the following form: +\lstsetsbol +\begin{lstlisting} + + ... + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + +\end{lstlisting} + +The example below shows the serialization of a \sbol{SequenceConstraint} object. In the example, the constraint is included as part of a \sbol{ComponentDefinition} for a LacI repressible composite promoter and has a precedes restriction. This restriction states that the subject \sbol{Component} for the core promoter precedes the object \sbol{Component} for the LacI operator in the composite promoter definition. Such restriction is especially useful to specify incomplete designs and the final design may include other components between the subject and object components. +\lstsetsbol +\begin{lstlisting} + + + + + +\end{lstlisting} + + \subsection{Sequence} \label{sec:Sequence} The \sbol{Sequence} class is used to encode the primary structure of a \sbol{ComponentDefinition} object and the encoding used to capture this information. @@ -458,49 +761,28 @@ \subsubsection*{The \sbolheading{encoding} property} \label{tbl:sequence_encodings} \end{table} - -The example below shows the serialization of a \sbol{Sequence} object for a promoter. Nucleotide sequences are represented with the \sbol{elements} property and the encoding is serialized as a URI resource. - +The serialization of \sbol{Sequence} objects has the following form: \lstsetsbol \begin{lstlisting} - - ttgacagctagctcagtcctaggtataatgctagc - - + + ... + [\emph{one}] ... [\emph{element}] + [\emph{one}] [\emph{element}] + \end{lstlisting} +The example below shows the serialization of a \sbol{Sequence} object for a promoter. Nucleotide sequences are represented with the \sbol{elements} property and the \sbol{encoding} is serialized as a URI value. - - -\subsection{ComponentInstance} -\label{sec:ComponentInstance} - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/component} -\caption[]{Component} -\label{uml:component} -\end{center} -\end{figure} - -% The second sentence is confusing. -Hierarchical compositions of structure and function is enabled via the ComponentInstance class. Each ComponentInstance object has three data fields. \textcolor{red}{The first data field, ``definition'', links to the Component object that is effectively a part of the Component or Module object that owns the ComponentInstantiation object.} The second data field, ''access'', defines whether the ComponentInstance object can be referred to by ComponentInstance objects that are higher in the design hierarchy (yes if access is set to ''public''). The third data field, ``mappings'', is a set of MapsTo objects that link between other ComponentInstance objects at the same level of the design hierarchy as well as other ComponentInstance objects that are lower in the design hierarchy, thereby composing these objects with greater specificity (see first module example). - -There are two subclasses of the ComponentInstance class: the StructuralComponent and FunctionalComponent classes. - - - - -\subsection{Component} -\label{sec:Component} -Composition of the structural layer of SBOL designs is accomplished using \sbol{Component} objects. Each \sbol{Component} object is owned by a ComponentDefinition object and serves as an explicit usage of a \textcolor{red}{sub-Component} object for the purpose of physical composition. - +\lstsetsbol +\begin{lstlisting} + + ttgacagctagctcagtcctaggtataatgctagc + + +\end{lstlisting} -\subsection{FunctionalComponent} -\label{sec:FunctionalComponent} -Composition of the functional layer of SBOL designs, on the other hand, is accomplished using \sbol{FunctionalComponent} objects. Each FunctionalComponent object is owned by a Module object and serves as an explicit usage of a ComponentInstance object for the purpose of fulfilling some function. In addition, each FunctionalInstantiation must specify via the ``direction'' field whether it serves as an input, output, both, or neither for its parent Module object. \subsection{ModuleDefinition} \label{sec:ModuleDefinition} @@ -520,6 +802,13 @@ \subsection{ModuleDefinition} +\subsubsection{FunctionalComponent} +\label{sec:FunctionalComponent} +Composition of the functional layer of SBOL designs, on the other hand, is accomplished using \sbol{FunctionalComponent} objects. Each FunctionalComponent object is owned by a Module object and serves as an explicit usage of a ComponentInstance object for the purpose of fulfilling some function. In addition, each FunctionalInstantiation must specify via the ``direction'' field whether it serves as an input, output, both, or neither for its parent Module object. + + + + \subsubsection{Module} \label{sec:Module} @@ -535,7 +824,7 @@ \subsubsection{Module} -\paragraph{MapsTo} +\subsubsection{MapsTo} \label{sec:MapsTo} \begin{figure}[ht] @@ -545,9 +834,9 @@ \subsubsection{Module} \label{uml:maps_to} \end{center} \end{figure} -The MapsTo class serves as a means of linking between Component objects (both StructuralComponents and FunctionalComponents) at different levels of the design hierarchy. For example, when a Module object is instantiated inside another Module object, a MapsTo object on the appropriate Module object can be used to link between a FunctionalComponent object in the parent Module (as specified by the ``local'' data field) and a FunctionalComponent object in the child module (as specified by the ``remote'' data field). This linking can perhaps be most easily understood via the examples in the next section. +The MapsTo class serves as a means of linking between Component objects (both Components and FunctionalComponents) at different levels of the design hierarchy. For example, when a Module object is instantiated inside another Module object, a MapsTo object on the appropriate Module object can be used to link between a FunctionalComponent object in the parent Module (as specified by the ``local'' data field) and a FunctionalComponent object in the child module (as specified by the ``remote'' data field). This linking can perhaps be most easily understood via the examples in the next section. -In addition to specifying a link, each MapsTo object must also specify a ``refinement'' relationship between its local and remote Components. Under this data model, there are four types of refinement: ``verifyIdentical'' requires that the Component objects link to the same ComponentDefinition object, ``useLocal'' indicates that the local Component object overrides the remote Component object, “useRemote” indicates the opposite, and “merge” indicates that data fields of the local and remote ComponentInstantiation objects are to be interpreted in combination. +In addition to specifying a link, each MapsTo object must also specify a ``refinement'' relationship between its local and remote Components. Under this data model, there are four types of refinement: ``verifyIdentical'' requires that the Component objects link to the same ComponentDefinition object, ``useLocal'' indicates that the local Component object overrides the remote Component object, ``useRemote'' indicates the opposite, and “merge” indicates that data fields of the local and remote ComponentInstantiation objects are to be interpreted in combination. \subsubsection{Interaction} @@ -594,15 +883,98 @@ \subsection{Model} \label{uml:model} \end{center} \end{figure} +SBOL's \sbol{Model} objects are used to link genetic descriptions of biological parts and their interactions to computational models. Each \sbol{Model} object specify the location of the actual content of a qualitative/quantitative model, the language the model is implemented with, the modelling framework and the model's role(s). In this way, there is minimal duplication of standardization efforts and users of SBOL can specify the quantitative function of their ModuleDefinition objects in a well-developed language of their choice. A ModuleDefinition object can link to more than one model since each one can encode different levels of functional detail and play different roles in engineering design. + +\subsubsection*{ The \sbolheading{source} property} +This property has a data type of \external{URI}, and is required to specify the actual location of a qualitative or quantitative model. + +\subsubsection*{ The \sbolheading{language} property} +This property has a data type of \external{URI}, and is required to specify the language the model is implemented with. Values for the URIs should be chosen from the EMBRACE Data and Methods (EDAM) ontology where possible. Some of the model types and corresponding URI values are shown in \ref{tbl:model_types}. -Each Model object is required to link by means of URIs to a source model and ontology terms that identify the source model's language, framework, and potential roles (multiple). In this way, there is minimal duplication of standardization efforts and users of SBOL can specify the quantitative function of their ModuleDefinition objects in a well-developed language of their choice. A ModuleDefinition object can link to more than one model since each one can encode different levels of functional detail and play different roles in engineering design. +\begin{table}[ht] + \begin{edtable}{tabular}{ll} + \toprule + \textbf{Model Language} & \textbf{URI} \\ + \midrule + SBML & \url{http://identifiers.org/edam/format_2585}\\ + CellML & \url{http://identifiers.org/edam/format_3240}\\ + BioPAX & \url{http://identifiers.org/edam/format_3156}\\ + \bottomrule + \end{edtable} + \caption{Commonly used model languages and their corresponding URIs.} + \label{tbl:model_types} +\end{table} + + +\subsubsection*{ The \sbolheading{framework} property} +This property has a data type of \external{URI} and is required to specify the modelling framework a model is implemented with. Values for this property should be used from the SBO's modelling framework terms where possible (\ref{tbl:model_frameworks}). + +\begin{table}[ht] + \begin{edtable}{tabular}{ll} + \toprule + \textbf{Framework} & \textbf{URI} \\ + \midrule + Continuous & \url{http://identifiers.org/biomodels.sbo/SBO:0000062}\\ + Discrete & \url{http://identifiers.org/biomodels.sbo/SBO:0000063}\\ + \bottomrule + \end{edtable} + \caption{Example modelling frameworks and corresponding SBO terms.} + \label{tbl:model_frameworks} +\end{table} + +\subsubsection*{ The \sbolheading{role} property} +This property has a data type of \external{URI} and is required to specify what the model is for, such as part or interaction model (\ref{tbl:model_roles}). +\begin{table}[ht] + \begin{edtable}{tabular}{l} + \toprule + \textbf{Model Roles} \\ + \midrule + http://sbols.org/v2\#component\_model\\ + http://sbols.org/v2\#interaction\_model\\ + http://sbols.org/v2\#module\_model\\ + \bottomrule + \end{edtable} + \caption{URI constants for model roles} + \label{tbl:model_roles} +\end{table} + +The serialization of \sbol{Model} objects has the following form: + +\lstsetsbol +\begin{lstlisting} + + ... + [\emph{one or more}] [\emph{element}] + + + ... + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{one or more}] [\emph{element}] + +\end{lstlisting} +The example below shows the serialization of a \sbol{Model} object. The model object includes information about the models of a toggle switch. The model is implemented in SBML using a continuous modelling framework. The source property shows the physical location of the SBML model, in a model repository. +\lstsetsbol +\begin{lstlisting} + + + + + + + + + +\end{lstlisting} +\label{ser:Model} \subsection {Collection} \label{sec:Collection} -The \sbol{Collection} class is another top level class, which groups together \sbol{TopLevel} objects that have something in common. For example, a \sbol{Collection} object could be the result of a query to find all \sbol{Component} objects that function as promoters or all \sbol{Module} objects that function as inverters in a given repository. The example in \ref{ser:Collection} shows the serialisation of a \sbol{Collection} object. +The \sbol{Collection} class is another top level class, which groups together \sbol{TopLevel} objects that have something in common. For example, a \sbol{Collection} object could be the result of a query to find all \sbol{Component} objects that function as promoters or all \sbol{Module} objects that function as inverters in a given repository. \begin{figure}[ht] \begin{center} @@ -612,21 +984,37 @@ \subsection{Model} \end{center} \end{figure} -\begin{figure} [ht] +\subsubsection*{The member property} +The member property has a data type of \external{URI} and has the \sbol{identity} value of a \sbol{TopLevel} entity. Each collection must have at least one member. + +The serialization of \sbol{Collection} objects has the following form: + \lstsetsbol \begin{lstlisting} - - 2015-02-16 16:37:54.381 - col1 - Collection 1 - A colleciton of DNA components - - - ... + + ... + [\emph{one or more}] [\emph{element}] +\end{lstlisting} + +The example below shows the serialization of a \sbol{Collection} object. Promoters from a library of constitutive promoters are grouped using the collection example. +\lstsetsbol +\begin{lstlisting} + + + + 2015-03-05 14:11:59.491 + Anderson + Anderson promoters + The Anderson promoter collection + + ... + + + + \end{lstlisting} \label{ser:Collection} -\end{figure} @@ -642,6 +1030,9 @@ \subsubsection{Annotating SBOL objects} \begin{figure}[!ht] \begin{center} + +%Consider putting Identified, uRI, and Literal on the bottom so that inheritance arrows point in the same direction as they do in other diagrams. Another consideration for maintaing consistency with the other diagrams is to add arrow heads to the opposite ends of the black diamond relations. - Nic + \includegraphics[scale=0.6]{uml/identified_annotations} \caption[]{Annotating SBOL's Identified entities with application specific data.} \label{uml:identified_annotations} @@ -681,7 +1072,7 @@ \subsubsection{Annotating SBOL objects} \subsubsection{GenericTopLevel} \label{sec:GenericTopLevel} -SBOL documents can also be annotated at the top level. SBOL's \sbol{GenericTopLevel} is a top-level entity that can include a set of annotations as described above. Entities that are at the top-level and are not recognised by the SBOL standard are loaded into these top level entities. These \sbol{GenericTopLevel} entities may have multiple type information and can be used safely by tools to exchange custom data. As with any other top level entities, \sbol{GenericTopLevel} entities may include SBOL properties such as \sbol{name}, \sbol{description}, \sbol{displayId} and so on. +SBOL documents can also be annotated at the top level. SBOL's \sbol{GenericTopLevel} is a top-level entity that can include a set of annotations as described above. Entities that are at the top-level and are not recognised by the SBOL standard are loaded into these top level entities. These \sbol{GenericTopLevel} entities may have multiple type information and can be used safely by tools to exchange custom data. As with any other top level entities, \sbol{GenericTopLevel} entities may include SBOL properties such as \sbol{name}, \sbol{description}, \sbol{displayId} and so on. The type of the generic entity is indicated using the RDF's \external{type} property. %TODO: Is it possible to have multiple types for GenericTopLevel elements? If so, update the diagram. \begin{figure}[ht] @@ -725,6 +1116,23 @@ \section{Examples of Data Model} \label{sec:examples} % ----------------------------------------------------------------------------- +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.4]{uml/example_annotated_gene} +\caption[]{In this example the C0040 tetR protein is used twice in the same design. The SBOL data model supports designs that re-uses multiple instances of a component. In this case, the re-used parts are represented by Components which share the same ComponentDefinition.} +\label{uml:example_annotated_gene} +\end{center} +\end{figure} + + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.4]{uml/example_laci_inverter} +\caption[]{This example illustrates the functional specification of an inverter circuit using the SBOL data model.} +\label{uml:example_laci_inverter} +\end{center} +\end{figure} + % ----------------------------------------------------------------------------- @@ -926,15 +1334,16 @@ \section{Best Practices} % ----------------------------------------------------------------------------- Currently, if a developer wishes to change a SBOL object that has been published to the Web, then as a best practice they should create a copy of the SBOL object that incorporates the change, but has a new URI. This practice, however, does not inherently involve a standardized declaration that the second object is a version of the first. Consequently, the ``persistentIdentity'', ``version'', and ``timeStamp'' data fields have been created to provide developers with the means to declare that a set of SBOL objects are versions of each other (by virtue of having the same persistent URI) and label these objects with version Strings and times of creation. +%TODO: Annotations: Annotating with created and modified dates, and how to add them. + +\newpage +\bibliography{sbol} \end{document} % ----------------------------------------------------------------------------- -\section{Authors' Contact Information} -% ----------------------------------------------------------------------------- - -% For now, this section contains examples of potentially useful code for formatting tables, bullets, etc. +% Random junk at the end: this section contains examples of potentially useful code for formatting tables, bullets, etc. \begin{table}[hb] \begin{edtable}{tabular}{ll} @@ -1079,15 +1488,3 @@ \section{...} \cmd{modelingRule} described in \sec{validation-rules}. \end{itemize} - -%\clearpage -%\bibliography{sbmlpkgspec} - -% ----------------------------------------------------------------------------- -% End of document -% ----------------------------------------------------------------------------- - -\end{document} -% -% -% \ No newline at end of file diff --git a/uml/collection.png b/uml/collection.png index 89faf33a732ffaee744aeadd8bb2329e24c7c415..fbb81ff56e5fd423da1a0ff407a514568a032ba5 100644 GIT binary patch literal 4257 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 literal 3330 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 diff --git a/uml/component_definition.png b/uml/component_definition.png index a3c51d6976c8e68489696cbb6c589f2fb9f15870..1bfd5645cadd289ad7a0e14cc5ed9235ac9bfde2 100644 GIT binary patch literal 14483 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

kWBLL$VcGU9AD4+wCNU3G^Y03&=j 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 literal 11238 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 diff --git a/uml/documented.png b/uml/documented.png index 234a27ef77adff0b0c49d4db9f01e91377f1de15..2c3983b19c630b7b50b3cc5f4b4b862a7e12e428 100644 GIT binary patch literal 4914 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 F{{vyea8&>R literal 5246 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 diff --git a/uml/generictoplevel.png b/uml/generictoplevel.png index b9f2115c7e45f65c8da55605f8065d3089017b1e..55f715fa4291382d0bbba57e89cd60f77d2d4a66 100644 GIT binary patch literal 3339 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 MEE0tv8@j~&4`vkc`~Uy| diff --git a/uml/identified.png b/uml/identified.png index 099efa2a74f9f23a884c686ad17d3f3e7e0570db..c20a69ecc9c26a9f4fb1417a59af54ab33c95b0c 100644 GIT binary patch literal 3751 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 B$h80f diff --git a/uml/identified_annotations.png b/uml/identified_annotations.png index bbdf84ebc7dba8cc1648c07f5647a79fcca21fd2..f7128f27c1553948997aafd6dc91d8d95a10c1ec 100644 GIT binary patch literal 7719 zcmch6cT|(h*KVj%4hRT{A|--KsEP^#(n1RzLX)n5Qlu$OK#EcnREUu#Er_8=Z_+{$ zMFD9NYC@GNN|BaO1ilI9{Jy^Kx@+CFZvJ_b$vZQ9c72{bF-8VjEKH}FAP@+PHbNZ< zflyzBK&WULsKH1b>NP(E!ndNWu4?*#xSSEDZnuBfro5?*_9eg64nU^}?>T*OLhE%2 zYdci*3fB=7D|-)8e!LogEqq>Edi;EiO|FLY`0G=zy7bO!d%ki#hm|pdCzJ{T5fp|%R1n|? z10w{&#sR*-fryc`5J))c|K}@|ttqk`ZB3EoNIHrvK)PUA`VrYP5+T<%UwhsjpEV9PF)5hVCurVM39|Qc);W zO3IJYbGw$2vY-Y2c?R7UR85r3(KD;S(QMSs)Xdu8o4%o9{5`DdAg~9HZ%#3eH zg#6iFYu&1}wzf7gF%c6J12gc8*SBc+RoM7mym(<1p%l{ z)pPar^;MZ#@%*sHs;Y#<#M^1(eSP0E-Wz65h{l~DQp2YQj+?crKE;W zM@L8d_v&bC$2@yBIyUy);r-jUZx8}r?d9zCk7 zlUpqc;n*_o)BC~5&H;ZMF@QGdQyo{s6RV=<=5Fs5w7)Ga^>T1H7-*{s$c!U?gB%{hBlD8xd#Uab(DiP5sRs*r|VR|KjkWJjW~8Zp*HNW zY3$;)Yx$c%H{#ckR-zTW8t0+R0i0x!jHIO8_W7NSg=%7VclSvtJCTgU#H%tg=lx(M z6_!@QNZ8Bj*gMn=F>c{0ZXNa-%65CedxoYxJUn#7M2vka>g(Mq(P;FQyAL1QoVd-m zxUeOYdc)4H5hUzZjhlnR zq9D46wdDK<=riaGaSZr&z&d41%x33?wXpi6F+|jJ$oD(Vjp%uu< zL8y>UzoQuX=f+||fvBv=%J)xCbOQYREM;Wx1_jBx1HpBu-@b;xvrh~9pCR=(+1gZ; zm*0w@o4t^B8ycrq*3jS{;OV|QJ)O<#dGl?}dw1{Ps>gVa=iSm4ggFJvuPm{Z?4!WD zlDfNNO?9xv*+*+lnGPPbwnl=%?yGXz$GL|#x3+Tf^29*!E>a%P`T!8rq^5MU<+;6fc zqd7I-oksGzdGkYbIB>C%ED!xlKDEX^v9X+g(FLr~*WJGB<~BBmo9e-Md_FuND}&Sb z=NanQH$3QDA8DtPwUcy*DgDboTub)5yY*wBOGR5-TdP4M@$0xlnUG;5PIrwUn#w3B zTtJl{;?HUHnIR^Len3fqiQ>7GXTC$Ex-N|yhK~-IA3}MWUV>-mP`&SsqXv!#p*#zC zpndpoqO%qi(DRhjpwgKIvNa9(4uKp+8#PEzrZf61X0=Ai#utwr8zBrqs{%&Se_-j{d+{SC^h{uoNLmqCKsR5r${_l%#a+ zT1sZ7r%6&$lBk$ij!0ZE(A)(nIFo1d>iY6%%}>H$GstdrC6ixH)7DH17iS6MH&<3X zqpo>+tUp?B2s>1&{l$-8dHj*-@AVWEcm)JXKji1-wJ{#2DBvO#1nuC^P=T71h)Djs zcg939;ed_v>Ii5*u!^;@F?&Tn2)a{ev1N2oTu3aJCb0k%i{0Iz;x@@2?4TIJNC66oq{~J3E`1$+X<$FiK`tgJe&x$@me*r!jQ&X6g(PC=PlSTHj)_v7)g&z@~;Y>X0#94Ai5 z%E~tDB6J!;_vJ5NHo0VkL?X4dJ3yG#W-e&yxJo_ zUkqah)%kyQ`t`El_H@Imdiwfn?sQ-h!(zClm6a$Arj0;6jgR+oci$|f=gqMN88e5c zoP`n%e8Rw~aDf}SXR$y_pkfCE1nilrd3kwxdX`iqCMDG$lcivR$j!G1IB|UC<10jL6(zX<#v{p!{DFmUm<&z}kVSj1q~h|8TjnwW{?Uh1PY z)IhBxmo!X~BEqW3%ZankD=23x2PLsr44at9wHy-6!v|mn7!#UBkEh9cks6$i0rj)t zTQ4IDC?p=5g|B{p_ zVZ*<`d@S6F;LT;xwi)gZ{uc*N1P#p=cZfs zarg|tE=q<1Kc1o}sOW#yI~+hZO4fp8T~J4~VNV}WweiP=K_Y$4BU@K;=%~M)0SclP zWdLzOa@!^?^X~IWu!YZuqvC2$JH5q(9qcq8?yoNNVis3j9zm`gi}Xzx6yzFj4m-3z z+)Zvy`ti>&=QFnv6Wz^#Diug74LsKN>b6VFK^!-OiVsj&NpzW2cJte#-SB;;5f-`v z%AweQ4Uo+~xdySRfMWNx`|DTv0p!ro5dE=ZWK3RRp|17Tk3JzQK?odg&i zShza3^=mjJBxHYoA4L4i_57zVU$P%w-E(JzQ>!4@a$@7Kk3rCxI#^g(=;}V>kdD-! z92qhCkno>iOi5AEb{Cq(-mJ?LRvkAccyt3kZ01_Vn~b&jzkd ze+G`4*xuDOP=vTkA|N7Z!%>1kT%VgB4+dPgZ~*`b5eY6!-|4f*aZjBCe7m^0OVv{c z2L`aM0H<+Hc6E2de&a2k-QjFK!ZjaUTwLni>gZuF+_eiVL8m?DLopEIS$SjM_uxg;w)Ts&C;<7Zm2;duzq zG$=&lMe+eFHn(rz*3pT*{G!wGnT46zVxfla%b}&pmw*I7A7Ng_nbD0hP%pl5f705j zF8fVVOib4Y;L3#1jrkXN=|~A4|Dj|l`-JxP_Ok1pot;c~t7M*8be$0r67q+ZG&R|s zXb#;!Eg*nNNSGabj+;9F-sPU_7w3P8pZ=Vw`j?|ciOrfp!mBIBFJH-hpgTtj%bK6R zlM`}>U=#%qJgD3_Zu0N%YMuVyKhlMGxVrA_lP42JU@+r{KKr|VIbd70b&;D^Ha4b2 zPfrc2%HE`ORVZQN+XV>*HjeZ%rk>7D6V($ZPE5qep!EwLtW8I8$a+mwEndBPb>(YH zuec>PKfhhG1vY}V8cPMP>9GqU)HUp*J_3Qdo?w*4jn-1dPfcZUfSM#Dwv-xDO-nKC zwfFnu2ZWIkl(PR}i$Cz=z(4}Nu&^*KEe)5vHBUH9HM~prB0l~Q@QamSfBrP=C69no zRO!Ll6V0HlV6GW}8^$H1q@|f8$X&eXJrXg~h+~eEV_-BWM&)Nkz@an1@5YB?V`HPE z>CgTA^{cY7lB)+4B}%e|1YN+Qj20LB^ML)5%zLm{;V873nHi{_<$<*HZ5xY9nd}^G z$I@e%QZq6Vy*N4PYYs2vZaz6Kz`2ISV#US9Z)E1?p2soPmjMj*F9Ks@D5JDWoT&Vy$90)%3NDp zqobn(X3$wRLFhO+IgM=})><1GkNjA`gvD(RImS6hMxw4MO+6KBH%&-MNkO5q+?Dq? z`@Nd?N#w~eE!&|lU!sR(u3s0YdF@F3DBN@*Q?n1ysk6et^jV$1DNb|o;zbl1Jw4P= zT`eOm?GW}omK9UO?{i&9II?w(O3PdoD!RTNVO0PsQfH^n+tJ|Q;Qs!8eFISWEiElc z&e9izql}2rB_)!bsEiB`IQo&3G-KD055OIucph#~fCPP}7Zg^g@Ka;Do%|mvRhy(` z>)=Rqh^?)ygt)k#uCAD*WKVCe*WJ4&eJg?7=S8)3*%PPV0N@D>EBn>c-Cd7b*TBF) zM+ZHdo0oUo4Fl5r%qg&9q_0T+jKX>|6(5F)m>0`>(dvGY$BeznOMYpw96tP^^CvgT z#z0A|H!n9FKdg=uzi^?=U=T3mWmo1s`!@z%d%L?0CZJM}on8u@VAYp`!OF?Pj2>T# zt!v^8=_tH9*vyy5NUw@@k7bdeJS1A>OGk>t#^jod?Y!ThIhNQur^nmHvS?qbD z_t&zKyXHh9k%AjE;o!^t(spKA>WN?o4s&isdKA~VoHGTe{nwe0B)y9tXPg?~K>#Ep zk?6*AUWQP8Jv|r4Y&K-OO|WFGBJ~1~CZhRZSBxErW$0)m|I#`u{0p~C_xwq~n+LwW zR}>X(+eil+RY!zfgPhJB>{d2ZJ&F@Ohetw>f7Ajn=>~)Ln}~V4=1|ZXsA_1iaV4DN z`EDtlM3|6#BV?x->gf2k=VL)ZLBc}3@ETb3j{|>hnF%OPr#7j_5*M?0C%G; z4SmNVXM-kI2k`{szT*>W_!z{IC1V>EJA;{WD$7B3{Q05mvILo^d1xum#q91_deJ}c z9*KkdDvN?+|M%hpksh%c$JxV*5i)9y?WEAc87AJ3^% zr*?LBNI}{e8kSB1u1Q5VN)`@1p_tf)2xz>yhH=1+ zfYpgXBzG;qfD;PDe$Q30h>*cctNgm`u1PFYzU&b@Hvwbs$gQs@W*okgU0qx(PgY4a zfUl>B$}1>DD5$9gloFhUiV3Na1MtCJU(FwObsYXQOYd)ij)A1dVGuWgK-evy(d)K9 zc!js~nrWneikk8UERg|*uXG{_31iwi&eWm?;BYMd+qWrA?xdN z)+zay5@?|~`}tSuIKvYY6Wus_u1Lm9*qNE##tl63btD|zSLQC=T z2JS6ol}owLScN;^-cZ*{9lCSD+jBG3_Gw{h>2PbQeY5D)x6DnqFSg#Vtg32*uV{_{ zaEiT~f{a_gdk^>hXC+m&)!vRT-h>YMO}CQ|*y|ON+d?KI4?ljl>%J zb2k#+VH#r^>govHLdg1K9&%i zb8W zXZE7koXImzADKEj$#xY!`B^EA%6oc@u%*CH9YkCCbI6037{*m~-j3W%qUR!Rp{w3{ zwjK6?=bA7$fK6;_|VED{<;H?oBhK>zD zEy^mZGK|xILWQqUv5ZJgY6V%vxMSaL{pPfnf!7qh6xywl{^2#ktr9+y|6Rdbd2a{N_D$G-HqD zL*LFlc1xbenPTU(B<0QqrF`|Mtx%aXL-S0 z@9#zt|4jKkGt(Bo_s}5!K9aJ+HT9;Dy=rHRT7~0B^ZG}*GRyB%S`ZGP!N3Se2W1%2 zN>Li%_($?Qr2;4fkobfn`b-08CE(#A6cGgJ0XPBuA!EwYDt`f-1R6crloN&XP&hIq zQk`;M$R*HmpoLueiH?h{Jdd3L3^2ShG_Gq^v0sZ12fBS(ptnv9k#`A|0+$b25tTvm)ln)c?HmpI@CP19AVK{|paHSJ|fQcCA!-jrZYDs1(>^R{=yz%=s_Omw zoESVB4{A5=GT=X3B$DS6XlB})nwlCJ9U1FPJqkd%femmWke8b)bL9%?8xe{?S)3E# z;VIkhxNT=`4M16v$Nl^31ewd1FXw3@pgvEYJTaS|pFdAAs`pd){p2MpD=W|lqug8& z2=5jRGp}pw=umoj1qJB*C1mDpNl8fqU0suA8+&_jHBqeY=jUf*lg=%dc!ZfsP|qp0 z48Oqu`%&j4tE?>5(h#yYwC?NcJ3BvL--S$`104m+8#l_XgKL+$xw$+w#JO|lwnhgA z2SEjKwGcU51zZM7rJ@&wJ+Qje@{JWh)324awJxvQ+S?|0-uQg8J3t-GRw2o1Jnt6jeyla;pi^F;r?ew6QC*aOcMqd1=X}-ft5SU+<4H? z-2Bri)qE6|<-b;)IC&@C+vN}3EJx3O;eBY-Y@yt}|M@2tq*4&6XR#;BTdsGqg5cig z1CksC=TXG|M~DEzMGM&sIATgi@d(0_l29nI`?R20;ok3HDlq@(0+ezk3StcclFk3& hUh@C?6^GA5R$2%ILa%cB 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 diff --git a/uml/interaction.png b/uml/interaction.png index 1d2b6efb7cf38d261ae4381aff79f50eaf34cd83..9fdc3284322df596ca0a20cba30c35e4d59fbe1c 100644 GIT binary patch literal 5190 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 A+W-In literal 5158 zcmbtYc|4SD+nz|p^B^%KBKsf|Nl2DvEE8%lmSIS?#|WWjvZakIWyuUNL}STVBV%7m zsf>)m*o_|h*o}P@@9lZt_j|wZ{oX&m-|ze9`ptFEd0*#sUFUHg=W(Ag*DOtVc~0YaPbf5q zaYv+$WTg|2awi$IBqtteNVHspM%Tp2Kxd4`5|0?g9~Cf^HG&>YIvR5n3RpgmR+ZK< zf*ak4klfg*PputD3+O@OR)cr#8Nt(;!Cqe2m%o}cR%ts(z`yi%EE)v54>g@w4{-~a`6i{Z`{O+)(Iz9Wt*gt*?m8A*rPVe(oZ&yPy}jMkbg2VnZ~rDEDJkjC zKV7dh-}{B~R`E-QU$wMUV$UrtNghAGwZ=^L2oVwK?(U`{4iIjq<>cg`R;N3&mPVVG zRP;48f>;w~zRQ#CsV)t71*&So%j$7Un8o%~H6-Bq(YeM0M?FppAtz;%9yv|LpVX~v z;g`Gwv3AX`<{w?3>qD2PqzI>$!DK61TVZ*d^8;>NJ&*e)=tXvfltH|0eN%2Ol&)AZ zv;HMXCdD?t3Oai+oLwm&6cn^hzVQ8VK^S<5;?uYLYo{a(f%raD?XNjE^F7B;tcT6# zU@66&aflXxgFR^;0&;x7}qEWK0GDp@c`WPdqAXKaux?z5(C%2WLa_7j$uX#t_l`ngJHR}=(+l)KYw38iHYZzxgA0KNH zg@VK+uj89;GoME$V}JFiLes@n{0Nx@RaI5ncLgmE;`VlTma34)N*}_DP~3k7$JH=P ztHCOc{!pEnpPg;s-AD7qV7hYg)ALiFimzBa5(MTV7lASx(gQM+G@DV`F(l z-tnlE!aXi~2b_+f_Vn}=7}(jRcJW*FbLlx=W+?2Y&!~ zMto{{c**}RePDo`F*}RV$Uo8UmlBqn@#>WnECN2yXdJ3OUr#KC(7F52bCt?5*v78H zZ?C(A(Mo?%9-CKxc*OPEwhWe!EisVF#rc%EG)q*~pm{Ic`&qNu@-SEw05sL!{+pJD zhFfxigkA+C5QCu#z4hr+C9Y3(h;=-V5uy$hyM2xyI2~MATkFuVN+L<)YP(zBvDqPI zFHfWG?4}248@Ha1S(J_qOnZ zkj5AY04*WmF+^Wf=vXGK_5b@dRhc>Sa_ zkT*RaY3=RSK%`oXUn@`|kzYT0@hc3pniQ4R*E_z?v4xb=Iy;GY^!2$$Ls>rY3)yWx zeWm0D$(owtlI8C6$Omr=ZP{b3aev*Zk0jxG#CuKsZi)?u}N_5K$RmNDt6x#9kwmd=<+DIz zz_}eKi}LE~>Pk!b_LJr7vB~A-2$d{O-)V3k-@>)xOI1F!7%{DUY?$;)l~wPR0#_S2{|_h za4v;HxpL)7f~3CfF2LN#`3|BMiuh4WQ!}r?I!#+!JNBxz3|w&X3BTmT4MJ`B&IVBI z!owR`jwqD$`TgQaeFo0E!q3NtsVFZ;cyqV=(w~WG;Zq1v$&l>s+%+#!&lu)WJ>g0| zsx$9Os=LlMt;MVw_3Bf_30lfV?-S;AN(k`RbpVw9Zu7QYTtio zzrfTINb`$}wu5?~Wnk2pQf4E-fbB~Q3wQb?!EQPTMm_H8_G`<`iW|7aVFVaMd=eAr z?hfUqjG+$}wpCQ9?^gzmEBIKR1*;!lzdl8EW0Mf&3;;faX0J{O@;3!)^Dg^JGM!Ez zA0JmyQGtsH3oE(s`Z^AE>hBeUF?z8_7f89)!qsO{LBYYbUA(-!g)|ANx;t~i`$0;R zgSRGNhoJ24iJ6%{yuHbjUz`9ySv-S?h=?Sd)b;e3ot;%uRwmqCpCx$e1+zYmyjE3I ztc}=fQW-01^?lk?9Np#FRtOZzWmx84=svi_Xbeg)uM^*VVfoRj_smsTd);ew8BBob zN2R4k>q-w3tw%8JvuDq0YEJG}Gn&H1sx)M#^7DA^FF@d5VmWi8o0^;TlNwZuA3F)# zpAPXu6@vP2AzG?VYJAqYzzn*6-QYw8pJjYnT3VCrVr__W*_q)G127m&sjlv%(NIlq z`vE!Ad;Y?OKc0cKa1^>;$Qp#iGgmx$!(91#ALd-U-+%)I^Q%}W!*6C!)P1Yg0BQ!U zH7?e3bZ~I6v%_u74>UA1tgHkO@9h5EuBfO0^p%DeZDL}g|D=jtQ%%j*w^x^yA|}2h z0W~;es1=Py1JVh&SR@iDCnu+#POKlCEk)N0+rzxPybKK=6c&)l<)2%Jt1@-&%uci= zQ|(YR0=d1tog#-?Wi*D4tnv>jEl)cc;D27|ItAZcBZw;yWuJG#z{0{!VcT7-GN)SU z^%@o{wG2IfI-e^~yS@-IQSqCI>K0VAx$d1(@ibxGT{A5uB_-d_(b17;ODe!l(=t<5 z+3RzIgM;9*+d&diaK2@co$;-$mGN{K(=Ui@QPSqs`Ep=_#bQlN98b*M<5rGdAfk>zjRWQW1xACPRorAex8DR}(a`g#dw&qtxUs%n4H?{yRV zrwY*L%aU#^hNsGlgx+*^9ZA#hnjg#NxJ=2mh{lvJG8%XK%iYK%8&5!Y%|YbMyi@S6 zdjq5g4(tKS)7RJc65>;t>KmTzNACv9jB0WQc+i)ohvyL&rom}iXg^YV${eKq=;># ztXQvr@*Q4=)_h5_0lIWrd_&^f@UT55svN}GBNV* zTX?UkWMOG(e7o-M#(Y{}Lnb7QBrYjwCpJqZCU zYYeAZg9ydSCqcqrNkDzV2K9+ZPSIGMSv0Cs*9vTH;tOYd8rRjdC{y z=V|zxBa~9YSQ9aqe931Jg~&zU!7>N@$&)A9JiY9p!f4iK$%x_T=wrQtfSnDLT%)cc zkVmXEB+YB?JdiQW<2ybn#z`F#<`dVT_BmI*&j!93i=Ph0Z@3#>Ul16#kZXC80dK!+ z?a;f{D`{hC8Q-{Q9wES{@eFh5qV4s0H$RiiDe0UZtqpkmtzD0!-LTb9lL zt<%WGFd`xC*0VrL9W+U-8 zQ0d$R;G92SxsXLUu4>WufY~?o0jMasO#J>QoZ$0$2a}_7%OVM(HpT= z+;i8J-3E(%Id#!LS?y}5!rf;3FO89;o|UT9bsa#R4IjDT{EW&32%jN!yUGc#Jgcq& zPFvu=2ZN}iN#a-3_4F1Pi9+X(;r-tg96=aA6`d5!yEom0jHCm39xe5{i`6wZUq4qe z+Bmiyy16(xHH8uq?PnTsR7iIdV8tVV{u5njN}cpFLW9vbe6tf6rIDw@(+9B&I-pla$Q?W1i%sIw;=wTF~Qz z2be1M=KOYURaMoSK|!f;i-8!)^AkPikLAtDxF%yS4tG1dW~$~YE!a-Z9P$2KI~_X~ z-4!~dGcSz2v5spLY!e&6e*Wh7E;#F@1vu}-4|XKF=9ZKOjA_aIy>dcF@+bAEo!^?a zxct9d`{cbjn-fOrQFE#vq32<7A1~Or{vF$c#-ug0cY0@<0wucnYbE1Q{_IX8@}$n6~uHI(u?MVdI%YT|XRAEpG|hGjmHn=?_5Wyf{pVNr`(XdAY4&ejGC(T+v%zL6xyNZ~ XYmRF}$BzO1Kad&B5?X3>{o&sLTJ+2| diff --git a/uml/location.png b/uml/location.png index 2ee8bd6236de1309f38dbe8cd9ff270f423d0a2b..323d142c1bb24a71f9b6585fbc6a0b4641561ce1 100644 GIT binary patch literal 13618 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 Yk1WSD9W>UDz%UpxQi_sA;?Mp62lc@UssI20 diff --git a/uml/participation.png b/uml/participation.png index 34fa2e8029de690d64c9875cbf1d268d39ab7bbd..44722a6958c72fc54e21dfdbb5ae9a9518978073 100644 GIT binary patch literal 5651 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 PCKiIy)YB+ezZ?E9qgb!! diff --git a/uml/toggleswitch_modular.png b/uml/toggleswitch_modular.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1f8b83f7e60414fddcb2bb6242aeff456ebbe3 GIT binary patch literal 20056 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 literal 0 HcmV?d00001 diff --git a/uml/toogleswitch_flat.png b/uml/toogleswitch_flat.png new file mode 100644 index 0000000000000000000000000000000000000000..3eedd04da969e41b93d34fdf87cf5456a4ffd55f GIT binary patch literal 32478 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 literal 7329 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 Date: Mon, 20 Apr 2015 11:22:50 +0000 Subject: [PATCH 007/317] v7 --- images/toggleswitch_modular.png | Bin 20056 -> 25634 bytes sbol2.tex | 331 ++++++++++-------- uml/component_definition.png | Bin 14483 -> 14228 bytes uml/component_instance.png | Bin 11446 -> 11368 bytes uml/example_annotated_gene.png | Bin 49048 -> 0 bytes ...ample_component_definition_composition.png | Bin 0 -> 48585 bytes uml/example_component_definitions.png | Bin 0 -> 29269 bytes uml/example_component_mapping.png | Bin 0 -> 53539 bytes uml/example_laci_inverter.png | Bin 58749 -> 0 bytes uml/example_module_definition.png | Bin 0 -> 36692 bytes uml/example_module_definition_composition.png | Bin 0 -> 60867 bytes uml/identified_documented_annotation.png | Bin 12224 -> 0 bytes uml/module.png | Bin 6586 -> 6509 bytes uml/module_definition.png | Bin 10849 -> 10927 bytes 14 files changed, 185 insertions(+), 146 deletions(-) delete mode 100644 uml/example_annotated_gene.png create mode 100644 uml/example_component_definition_composition.png create mode 100644 uml/example_component_definitions.png create mode 100644 uml/example_component_mapping.png delete mode 100644 uml/example_laci_inverter.png create mode 100644 uml/example_module_definition.png create mode 100644 uml/example_module_definition_composition.png delete mode 100644 uml/identified_documented_annotation.png diff --git a/images/toggleswitch_modular.png b/images/toggleswitch_modular.png index 2f1f8b83f7e60414fddcb2bb6242aeff456ebbe3..dab6ee8c16970472c3edb3c193b8b1048cd8acdf 100644 GIT binary patch literal 25634 zcmb5W1zeQv*EKqbf+8UyB?2PSCEcKsN+X>jNSAbjh=8;x2uMgb5(CmGEdtWg(hbrL zXAi#r_j}LzzTf$sGmp-L1Ke}nSM0s^T5C_Rl7ci27C9CIfxwZKkx)S(E?+_*E+MYM zGa^=7s}KH%Ve~{=0&$M|FQqms8eX|(C!^(nKwKw8{Y68>e z{78R(hnH@fKh<=6WNU40V&e$^L?9l$Ge zF9|$O;5X%~2r2uJs3x#oa&2;DKH}BSa)+djnTC6tB?b>jWES7F`oF~q4W$b2d+}IW z{Be=k#DUf-doQnb-;Vvczs}a-2gQlxciqQ_hc%NMit37r5vZ|#l*?4QjQZj}>gj)f zZjj*oK!flNX6U`SDIv@_ng1;QThz)ggU?y7(f+2z4wsN}5FzM@&y!CQ@T_rJa6%`f z`5)pgXnd*^sC>_h@ZJeRL->{%9#57li`-`F@>kfGw|RUEA?DtMK#04a*qNGyeaj;C zu@)|$Ce6U{rK**aBzcAq7fbaa**$Mp6hQoujzG;j!uNkX8$OhoT)_Aw?M`)NZH z6O>m&2gNhkVxLHit#4AKzGt38_!_&_>PNTt|Nd=OtjR(g62wmtesXf6$rAHZKrwMo z>g6EC6fuHY{<8lAClQlNO^A?Y&gY1g!Gb4;HW|jH1qB5oHr;VtrrEbBmPJEVlo8_b zX6EM3{1mu>GrxKqs%Ss+ z5Wj6UT1F17sFl)0$rK^WDy9^j98r%@+mN)WF`UI^)PsCr9G>0x$6cgL0&aJ2d_CP8 z-CrB6FzZQ`3?bI@+8qcB3v-zNN!B82Mp7%~k&H&2sP^vXU< z^{?Ju;a}GjYh{ENa9$3|y}XX#Xjygku(n?N@qu|j?OOHt`mVbqEfLo6+TPaImNb7IsD-MhK(Ne$TH;)mU;GU zN~WB{W6ug-;N@%(?_6;!C1DgMrK{olx{bDdGQ_)+fYlDSUjnN*+ByZNHhue_6?LQ% zTZAbU>vcHD!*By1ttE8t4<{p6{^Q z%ES@EWKmiht$0=5^rhcbl^{`deVang$dW0us}R2N@J&r(OTp7clVye(CT;i%zeASS{DzDU<1NO;Zh4p7g zLk2!xOT8JeH!ZEKp7!xskEHA8S2~0RVRJI~gfF;^A?Mlf+uPffbtdYbdrUUF$MIMW z)_EP5TMcjh@yD|u?EWNhm&V|1EB0A#TI$7rh)3#Bw-IXby;Jsfx zDY8H2aFUD`i6(lGq9-9or;1fEyppe_q7r{*DvwyynC^aVZyy}w=Sr96bT|cmlvz-HVs)V#rm%3M4cIuUycCRlj zDeH8#x7)uLV5=58-zxP{Ry)kk&u8~J?0{M6V>|TO%`;eAUssPknRH)a#TRf|ejh(D zI2aQh9qo#DhZH+k>H*Wko$ApM5x@2I^}EvHm;JwSnRd<2&ej}Ehny54BFXx_e4B_1 zqqp;~A!0xL{9_&;Lc*@FN}596Q1kcu_2spb!|hmh1MlVjoIomXO^NvU`2HOpm%^Tw zEh=MmngKbPfu(_%`t8IGM<*w}a`RvDLPHdAJp3>z8CY0^JrC@jKc88vm^_<YX)h-J<$3Sqh zU}V#M@ltg46Q_>*Or+v8NHIxBkJ$O(`k`rK|DOI*Q1h9)Um84I^gK@}9TVd5)al=3 zJc+eXU3IPwI$3wA@964MsQFr`7Cz~XOg4-d1~{C)M7Vr4^Ltc`boH30Ss z(o(~y`YxhP#=Ul8%B~+SiTgV1shV1FP~()${Oj1CT3m6ge_y*I%rmO0w0SH;C1@;k zkz-@J_&rOGLM~?yS!Z_LM@L3_O_QZhO&wD*Mg6;%=K`-;SXfYctll5+^r42MeE)e% zXcKPhlUOz!4FBuIEWayklY>5X&fD?lv#qh~RrOo()^B$Sb&GE22kDj%p&{fHkVqs= ziCGT~k5rQ2=!cjXcVRf$T%m;e^`@PUq9&Ib#0QHE43v~2KYYkwGtEY0lAH~uPcpNy zN#e8B_x3)ERus*Vq9VW#X(qUO*@}16b=~nX2KG2?)gY_MV!eb^?U8)FYIO;HpHnAm zcW38vZI?)`V1L`a@vY|(BF@A10tWCMe62c9w@GD*($Z37XIGMl$G2BkL_|dJg#Y@w zCww)rrXr{>(k>aY$!nf1MSnv~OdP)VB^N;|q{xNwd|`KI2TqZ8L9&)+R^PpFn&nMb zi6%4d`8m`>AW^|uLfC0*g~u?v{B~MTHU_pl#Q%eyTmDqF#@STd$=#4A*S8M|0x{Jv z;wLtm?z8@W--J-R)z#IdKC_ee*cnd#GP5v5bsjyn(}61gpUY|)aOir<^OyH?*G2hv z$9$2NLl&wr>;_36ar!sauV*Jlb&IN{Op>N#?vJdsQhJ1vA`G`a;UiVG>*>GvDYynN z)O_oXZ?{4NSg}NmPN)AZlL;d`w?4?&)HDyv%ZT>Zi+k$fm~kI8GejYijAWJ@Pe1yG z@p85;>dJNE9l@&L0Y@H<>cS$?)S<~w+WOnX81SL z?3SHJiB}Md9lPZr4-pL!lr0PxO`^eWG)Z0CiRi31R?~%85TSx0-#BCHD*zzwC2nnA z#{-n-$d+11c)K!u>=UiF9s0QT|G07o;6ZO7@`s*!t1tBLmhJ*0MZVkAP5I2A?;Q_c8 z9-OzsUIEaR+H|iKa#`OwJ`J`-RuYFa8*;pliJ70DuhK0v>rKYobKnxVP^o2;5 zjfq;1{XLy+-Z(ixa_}xj#Vnd%QgU-GhD%HUu*4-^!|+GH7Z&BiV@P{3a885in>%*= zx=)|>|3W=dTk)bi-j4PX$ z702pfxQgJ^?apGr65pQi*wAy11LS=5@_POGSzYOvjf_A^q}>iiUJ3=DtWYsUy> z2=JcV!GMeE8dZ!UhXfP5mK<@@)Ymp$;kL?9uyL1xGzp-BMG>J8#qnvKtFXSBTE;|t z=lsZsc658wgUe7xaa`6VMVH#zrwVbhD1wP3rY|EY)|4CPTZCnY{PCcIV%t^tcyDcG zaZ!fi-1Ph`GKhAAYOfXs@TIr=yeLuBWSO#7)l3%&ZoORx~sU znCN!}n#{Fz)MV}`77f+!jaW7}H!t5YvPd1U5V4<@u(!8=cWX%}SR)Pb;r;vHYtDHC zN3a{l0q3gcA?xb&MehB{h}CCeV&Wvl1`JLf2Fnq(BZ+bJfk!5S3<}OY%j4jrLG`?I zOYa}J2)Y(L5xv)b_El$rM)T@$e1p zB(4iDI!Tq6+QTNTD06&tTnqqPHNI&+Z65Ur>5*u}*<>3Y{O5?cDm`GWpbZYpw zVega;0%6S07K--on9C|Z+CT8DgE(BjJE+rR_B5-HRjZ^4j-S4+AukDsFWyBoAiIh9 z@#9B)LV|}p;C+BsH?C$^sOLG2mRr9@lT+G3#f^hJhzpet3%S@Sgp5DpUryfaBQN}M zxI1uU@bl|Y9dqVQ6ZxLtAQ|c#nq_v+^z?2Aya^7fM#UPM^;W_7JYTd7 z&;Z6cTBEnyTOEGh8V-f%Mn(PUTGU->C?V>V{>Wf*V?pST)@C8DHa&I6uYCS^&!vb` zAulO)Nn^rgeJncpQ_Ata{VNnUHnA$_L-HKOaNbxxrI4A(Q$>O|w@ z-uQ)Y3s1vmy*a#(zAJh1%QOGU4U(v6dPSS@s@+L_&&ofx=f~qd^+sJtgHN3Is_!}r zp6u0~XHCUTo}cXlT&fs*d3`RKfR+uWJ%ulcCiJKC`dFn&N6fg>ke&-X{dHdiKpfJR zCaA}GiiYu0e(?PfnTF5t&(`G})GbAbogGXx*z)Bc1%9t7Qm8hH*Iun+@2q!wHc@a` zv3BBe>-B!ISe+cAAjlfCwGvXTTH7jH=GDhKDSj-LOW?3Ap1tn)i{aZ! z<>Lu#!OfdDjS=!18XBsqs_%kV+M@0@9ut)g*8r0MQH#Fx?|f%MnAG#4<+@?3!tCt7 zuEOR{k1i-TI$P4;RZe+9ui2fmW*rPpW^00kPj~uAx}1E>!|neDh}nKb9@L-iudmx& zYWM=hCDUARp20@#zCI@kfQVDu0qosRoO7=BaCh&`^+2EiQ7pD2E6&GX&%}8MwQJpX z;Yc2{^$iU0sLe{e6;-xgfGSvU94Ni@Lv#(@`5`|p!%dh>SJxm_mpvI)~ zK6r*jsFB)~DXJ*4`;?p93y2Q3YIO!80$@xoSwp@ux3wLbASNP8S0tc@MCAJu4;|*= zbntGXf~mZG=WRv{B1ed?NpMe%Q@^ROz3gUBCHW?}+rHC_37^gT@tt|Ez4ap|-J^aO z-3q}%_1)K_lF_vh%S43*M?s{r@0+HX&20KU#tUF@5w9R)sJ_16&Z_(Muc_GausC`% zqyTD~Ga??Wqw#?2G%p)*_&m)gNcLBKPQM3S_wP5@KV2{2S`du~GR0S5YPLQ3bk+1a z3EM0+?z{JFJD<+~v>p4iXA)>Q@7?&WulNeU2i+caUB2dO(b_NIur^ee)ZJ0AaL3^+ z?FNS*c0bdLsqX<0d|aUTrcT3%>%2lkKyvtKKOhQ^xGZZSHHe6a=qJqOlg|3FlMgya zxCUuu=TrU-2}LoU9$%ildeNPvr>txbG@;n`PcGPy=sY;_KhK{*s4O5D3d;;YcfymQ zv(I?j`J!*hv8e7SVS1W?=N=!QhKL0l9l!Kv+n&#??RK&*p~}q5G7;B^S>Da z1pQs@!tR1`^rO9guY`NvqE%PLq{# z5^wK6Vted$!<-8v>@O7C*Mm+q7T3H!``g|ei#O2MPx4&xxrxE%VQNUAUHYO^XrrcY z=STQ@2niw8?|gzGkG1p4?a8Dkoc0+KkSRGxS(upIr-SLAx?I|oc((h+;vxedU?MW$ zd~Xh$rnN?BvE+XDdawr&nQy zQVxw4#wS=FDY#HNR@uHJLTJ)oG=Et3Wau|!peq6*1jd~uB z{TH{;TII*Ognx=$H1GRLp`fb@0G{8!NyDT%&U>Ath4r)ebjy<)l0DeYV2V-aJ!sLf zDkg^bt-Yrnr2c=&SWjA+);|iO6GEbBh)US?OM1G5#M!A)MeR%(@0Mcy-X|f;4gLa7 z-vJA+g+!O$g{3dzoEK%39pg1_9v);FcadK8x`gl+eoqf`h~bZQ~PIrY24$i`MYyb9CX+1Y6yB_cwy z@A*<+RA{f>2&r8G=zgSD4DDhEX)0A*f&9imv~}nSys-C5K}Bj$wnCOpiE(hVkyg#u z1}iq|f1*jG-?N4nrNdUdZ$W=RG&D7Gq#%6jNExrfouc0P|MdJ(sTZ*BKa7xwbl+Vr zDJh|?0M-m}S59rBfW!Q&E7yUB<~K(?jf{AF&IJy@W#KOMrJB;Y`I zF9fY&QMS4o%>$_4Y8TtB!*6ph&22|VN74O!_sY}Ko(~o3;RfCn6FVr}sH z30c@Nmz$Hbd3?IGeGu_f&*2h+I_}e>JBUR~qaB=}W+NvjC$`wU!a_FUkeuKtyRRq? zGwu1`pN18qD7gY>iSX3hhlTihVB_+S+C6+!KE|bIi{sCjJbjw5b$rSe%S;fwGrs0M zv|LT&laJuo1Mb`C@TsMx<#av}`aE9aRZe%$-=|4Oth;&#j{J#X)#={>rR6se{!RA? zvnWK|9h=|YBn~lwXHW^&kUYqR2;nUm6iqlY!W*rXH^g@(GR_@i{`l9>2GgLrWp{S5 zc7gheX*m^EfTLjIe4}3!0W%FK9cJ7h zc;pQ*(NIQ6A1hfG11)PkD1Mv+B)glN+h?WhAsf6h^~swa2t&9R&j$?GL9{2+lM>Up4c~_iU{8sxrdwsy@>k0M|QJ>F_anF!ZIhs zwafdpFYZ+m`-VoKEln^0cOsppT=1wszo>qrZUf_zUsDSgh%n|5pI>ywtLf{DhDHD+ z`n9sVj2x`|Va0nZtVP4%G|U}^sV_(x%*pPzZ?Q^;g+p!me!WHb7FRwi+?{`HC06RR zqKG*kgW&-Y4ui73_5f({Q5ZyOWDXuAFvs zpGnH2$U~R9?L^qG*7Vn}UmvKdB`3mp&Web$u!!GCws0yn@1wJR3?;n9ESFO3WYcx+ zVofVxdYCl|g`HP5bDfvYjyH-53vJBIf+T4C#Q)SC*9jeXXYP%HLiDpIO}e9_14!_$ zPXf{WUm`37iv~s{jo~<^mEpnSPu6-=9Q`UREd0Q%@wRPKjFJRjI<8T9UMZw`#{PpG zB>+!9UY;5x;s$z4-y=Mce#^%X9z5V=Ufw+lq&oAKl{Lq5$t)`?gK5mjIP}LG0eER| z-+p!9;rApif+Lsg&zoB|i|gz9b)J>uHWivIlLsw)EpymkAyQxhtOXH+7{4H^DCp#G zpxCO%o2pfezzSl7QG+HIDfY5KfpzHQ#{Qvay8+A43JwhcZlLNw6&)WRA3OWTfQAo9 zxN2OT&o&m?>Te?q-$QhEa&ZBXYX#VRHPwEk1HM+3;}Rq&Z5aF8@MlJ$k3*`69u)A)bB{{77e~J1uX)Ei0^+$c3~L4av#>c(0{%t9k8g~pYTv~ zIFzA%*)6i49mDk~HGVSvN21Hb;c97jIT9&A5gxT_np+3MpzU{!4<=h`u!4wt;RPte z=R(GxzP-s@Rb7o7DGkckMm|R78dTWmxw!1-s^v+U@2@%^Pc;Ts!}oR2EZ22GX)5&| zcSoXw+L*v=U9}o#<7$aUjS-pv*$f{lJJ3c0x}}Yc4d?OjlW80JdSV2&;-sJNuP5-fncePxK^}zV1^LVtRN9tM zGA%7F+nP-&1%)n{v3}J{j4oFyNT9ZVQEVqIR-7DsX=}??KNm7)Pbdzv{In)`}fMa1so zr_axm`I28lhC1Ir-mjls zKodcS4$PYP8%uNZBq5i=T=iuMARoqDn#V^|9Pbldy=n`({qEy;IK)vj=OM{IJ8iRdZZ~;wLc! zH8mszSMK^=D{G`ScFeP)!Z$&47h`NlSKnU$%N)>E#ED>3UeO*0(z+J>a7O~DJ9+^z zC=6yM3hsj(Dx4ba9JtWj=k6t+`!g1afO^>3*fL3B22duUYmFQGL;d|hZRmZO(xDfn-do_Zo-_JK-r*V;MKU*JYG-puZKK*fA_>qogK&I=cDoDnZ=1SNL>{_iJQ`-l+{;Sc!l!HHLo3K( zD+*B*-63-q7;c)aY=u}k!fihoZN^#OARUo821ULh2Prm&DspsfZSCY4YUhZP2TRaw zy6Q^U^y%?@mp5-z1tg3W<9~&^k;9MyVf@~XpO!{2YNbT=?{$OsJSK|W%}NXs*CT(5 zYI@gCE^Oxv0r1^qyc{J1G(u2NyD<|p^Gr4xnLnI|Naei^yx<_~$Ig$-ojdw-Xtp3G zD}5pJ`~nspkl8JGP?jUkI4}Uk&+WR))AbeVRloZ7rzPyx_V%`b1?q4_hL_unGto?i zj57|8gd~3=iONd$j(^qp$6rlPZ_QEg6h^Tj=Dhl`$IQyYf*|Uj9+K7P_NM`@ezG3w z{ql0&qM;5ybWU{CrY{3Ry9u-Ug^9_oUS?L7>8t}GAZq!W0#T_&Ddi4lCx_k(;hlWs z(rKqxTDJ^wrh(Q8_9+{&te+%_XwA#b?bj(C*45FmJi3jhxA2y@BhII@L3Q;iXw0q=hoVzXMDrgU0;>729IVy^Oue2Y2eJ2K3?3#lYZMxxWg z)>eZZ7H?!^q<;k%6M(;3S~-H)uC)^|&DG;we(0!8>-bbz`3?>66h7;f{HtLnl?z62 zdL^4IkSghM_Ftaf6OC$}DIT`EckiBa_4td@&ICSND6RfUCSg~108Q4OY;|DxKbxp= z0}*e@@!d7Q&W{d(jkg70X;CS$L!FcYCWiRW#^4$ z37f;xLbnJBO1D_!d=QQ++&wDY}>ihit^9{;b zP+xuOf8So`*AtsrhR}vvb^>E&?()n}lCZp}wqp*)vKsLFE2fLn(nu-o49)6{^{K2Z4HSx0f=8%cOrn2Jx%0k!a`u6~(?&hySC{E|N zC&EW=o8UiDjQOI_Uw-VMYYcHgB>7XUV%NT&ik?QMA_wMm)bZtzdt?4)XPC?>Lks8f z()J-PmFUT!j;$p4)f6g>+X+INOF+3B){T7Q^rMVP>feR`a8gu;bLSh3Sd|C!9HiYH zQog4a{ddEZhLQzAcpacY1H)7ON4Tdq9f##4tq-tj@6M)BAgJe16P;sxg0wHNwmPepwC&S1Z4?TR=_=sQ`6Hj)a`XB@g>RQ2 z+cl&|pk;ZY)bvO3Pt=-T)~=;;p!wFJBAPB+Y{!QZi^8FmjM(L`9Y;ixXw(6yH$H{( zgffDj6#H!(c(v-!c8g*^e2@_y9+mF1Br~cW0`(*i8n^Y9@z(7438)@q*!ZI2b38+ZXzynk zG{aZZp#OPFNj8gV6%00EQ`5XCJp>=m)ytPySvzw%6J1TIftqc6wwroEF+9o$&}7Nf zcdgZTdLT#;Y&NiITpp6{ny?&3Ko`w*ia$DrJ?^AZ%R9!+X)sLKrA*Dv9YmYM~i8-789~IcaXVxd0>fzO6vHuHT*Ugd6>Mse6CF` z=;Hrd9uNx0{BBb*G&oqOTd5-P>RSrP^T%8=QMgZY)3nnO9QG((|BUJX=vXWmNv73z z_5SBp%qAZkwJL|Ql2XXoN=8TK!#_d2DE@yJ)Vb?gQ|s!^K!wz^EjRy^q}XH}Kj`JrEk| z>fy)ypMee@Vao|0G1p8-0LADlm$Hsd%gaJm*`x$)DGg0xV&cp@G~jQ_omK|FfBzmx z>7HF%J8pqg_|^EH4u$~vzb%_IB`l*akNo!4%kFwHlu~-0HFeqyL|}lhw6<2$IC5}s z5E2yZ&ub*r;q^kgQ3s{ zEgo~&(8&pDQAr6lL9=vl96TENu9WlGlP03|dFk-u$BzMYbiROOGXXpvRF7U>wMX&n zwL85X?DbY0q#z$H*ztc-Sope+LuwI)yZaTkQ6lvL1RBJfIgDDj3Rr=TQ%&#*-iX*IlQ4~ShDuk%rl2TMuEUJuU z?S1gSj-B#L2M1)x^rQIE3eNG3?~g_vT(=q2#v=;+1Ea9iZO2iB3x1>S4sMI7b(V$(7 z^uND&wA(&vYY=)GC-d+9X}5Y5d0V~CuASZtx_nWS$yrETx{wZoF8_}&42|L+;zI#G zHAMTO>r=dt*ps4U_i-mTZ#jus1xOnZ}p(k%b7|QGN#$5ZsHzI%UP%+2Xk78AJF*!*ggZdW# zt)%kwIkJ{~e)8Gp6Hh|!IfHDCp|G2)a8gMLXSgW*48r(Q?wQOx(EsXvd>%bQmwbR) zm#3%n?33=radgdmVa*v9v92Qk(ZQ@br0*eLG_;L*F(pq=quO@_%@4$8-^8ihj4UrN z2j9l}aA~U*uPP^M`NRjP$O>QP5RuL$gn?KN2y~I@;y0HTN6xzy2dHvPxY~to&FOT@ zj{5Yd8NM>On*yYK+f!pi=o{VI8g;sGVSMm|MJFeN*PnqHwlY+cpO%@FEN@0V(Yx|} zildpc7*(+%(yv2509F9_5Bhh@VTfRC)4uq@pUH(Rb*tu^**6;ym=uf&_ZDaP%}}?$2*%jcl45eQ7oq% z^M@zR75a{tTpHlu9mZ(Qvk7*I}Hdh=f+oY2;em;Oz`pzP$t zBk$i!sCNZ&CIaDu^zmT`&!Nfo)t zZ|!hJCFI{VIflcePTA)wFQxevURrv=Bnit~4-Q?9!Q8hLhojyr;$W}c3#E9x3y$_i zGpq71U;a8IACGBzM@^pXRZw(-^v3z$iyhoJ<$5p`Xj`?ExihAgH;}7u1#lg>yV%p` zsAi3&C6o;<^4c4hFgFF~yX0daK250;A3ud?+Fk-$ zbP$NpLQP$(Q8p6<lvb3y?Td581`4__hah zAqcNr5J{2bju;o)&5+3XOA3l6g zZu@9>&N!_y#^AS@A+`#3zgm68VmWG*^!{h-;pfP48+LYfpPe3Q|8IuRpQp7OgC!+a zueh+V%ccU;|C_$$MWayJ|A2R%SY(7U2Vci@eHhVUqIkKvBhlz6PJwZ^vNWAOWDI+x0)N(3blvb9P4;phSf0ywo9FLW{0+zpH z=pJa#PC>02r-6}t?bojo5@6iHGys0fO*jc0M$le#`4SqB{e^dtH`UNrGF|N7TQ?Z6 zui@4Ggmi_{hQa$mLPTT*)n(%w93nlsYm)SxR3`@M(3NR@P>jS=dn@iG84w9T`+ib zdST!4lqJ+aL=YTq^(7h4Q4fmBCH6{Bgn;Y3BP3^p8oiuKi1 z=!|+%swMK~r!nW;{5)9o)eEvGRBA44h3Pp!8GcqDCX^-`SlJCe^b-P=__`uKDiNZN zND5wb`>dm&+jkP*ivl0^Gq8?qpAnqbF3zE^Y~Tg68V#5?#=WPn?~%D2(}jch;@AJE zjuZV$^3n3Vk_hTYJt%9G;itn>Z*cK%5MUsR0-ZGIoStF4&VjLDk>&nmT0yhH~`B1L5%(xYJNlm zfA!RxTcF)KU-KErRRj0a*RSbyXQux71HHZZwW3h49PO^`y4Ma{c^^z|R3MRur=nQI z7pZ4Q4LB41nxkb~35gDL-UP1{HK;1JH6;KT3R4=?xE8yQ_Vh5)xYzo)vF1;p-`YUgP%k=jwzrpcbE|Bff$xH6 z8%irEh-d&Z=klH{rbP%+;8tN8+FeW{snC?&fzITSI^;SntzjI#vA@fCMRYCxX58AE znjgPDm8@Ot3oIQ)jWMl%g;hlB|Ne;8>QtB{2<*midp<>z}s1w&3w&R}to zqCWq*aWCY>6veFIK5Y@O^`H(^@P&G{_>rRaLv($jnN3jXIVw??k?C`A;YMxBj+S(i9_zOQQ-zc|H!cJ z4ctIA+Jkw%`W)gf!&Xvh_6uDGO8x(K8z}L`c2nPbdsSjlWNq1|xQ=$b&sOyL6A2hp z&X3x1PksFf2sOHF8sHb#7A3+8mQhuWZZ`&I7yRIVry57JA>vxw*c9gFrIp?1$H2Y< ztl?d#NgDjnr|fL zfmK&h*e^`57dRYo@%-xv9G;8Y{r~*j@O3Hk>VL^Hs0DAc)B3NI_(>GacM^q4|Hm8r z|Ni>_eK6GH@)=hVh7TPob-x*YnbgYDC}Lw~e&VgFU*xjTl{hjA-KcDuUmA=#am?>t z)H8;1Yva`#5-}`V?>t}Mz=!BJQC?Ajc?k`0%Y?I|kFnril=;#rzsZl-lyoD72R0){*hpjSc?-%#lDl7Lu;c8Q}*#i1+QB{>YkfRXE zGYs&D0mxBn9B~Pqf|_&DplpBv!Ao3Q;|(};EU;N2I-P+OucM+u9@6}@FQv|1%_~&u zxtp87y=%R;Et(KCz!p2~;ts)d52%7>F!avg1w$hFm<Wf)n022Cg< zD?r?X?*ETa3H^R~iH{5AoI7pt)$jNlC;@9B=ZYt?qg2EQT@mg1*+VPfojksGFXR0k znff>)^s`-qb2Xmu)YOlvg4QAhqd7H z*DpHna;Z~QR=)r15=4jPEcCcA@J>-j$92BQ8*m5zXKoabCb0LGkcv}w#+}qTi*>LL*%2fX~CME_9(*Mb$+gn>erwp)!G^?np z0v5s`6YeqQ3~sy5UekbB{%E(f59aN@m0hM&@0nYZ)TeZG8GbfbL-z_0Nr*&I6uB4& zveJG5Y^)=6Ok8+x&_D!p_>K1&}@?%C{9mxrz~l5Yl$!gS+RWW*M*lU`TSBl z>Tcw)(AC_(wnSjd)O*qA?&Q6=w-=^t&u6a-{CVPm+_d*ZSM7hi08Kjy!*hchIDYpR zZ#EF71Ov&Z4+6GI$!+PvyL|MqTXK~$8cl?oO1RXgnWzkz?7qxs-IlVmbQ3TPG(BGs zBVbut#>jNPRF=Ds_ww?Zvj_NGsnZ_%!RGN%b8wLV!F!KqP<`dmb*d6CKQ1MUgY((R zf3kBbLM3kq$B&zgI*48ztapZ~SS&a)c{k8i0AxE`QvX{>X&p6 zS5l%v93|Tj4U0WCSJS&uQ!Wq0LvSbI=2zR7Sp#f`r)NqGJ0M&^N-=ht zE}iDun*B?>eHkRhU*Fd7Qv7f2`;K{oOs0dz_KgwqwLVKbI6hGbj#aBF50J(rie!x6DXEL!54quKwgn2c$3H zfP2hBrP83t3Rd(j%*g?P$6wf9&f^kyHx7hJae@!uT>=dl9le{$BFjS1yz322e7*A? zpflFVT3u&T3+1&LGpiVNaOiXVau=HI-ckPMd5GO67nkT=T2eyyt5_zp9!=4g(m<8r z5~7WxSaUV0dI+qq{I9W7)Iw{{vq+u(Q(hZgl9j8+T(6hIkddpWXUdpmrlGmTX9FFy z?~Mf^K?7W~J@)2F+>%8#_lRfafW&*Y`PJraS^n*=W%oqk+Q+NikEw5D=jG+)=cmiu zC+pqN*(C@=74IA}{?U%Vwi_MAh_%FKH|&irPCPWiy>NO^wyBdkgyV3RH=5t}CO%X; z^V1A;ibppq-+Kq%mh?W`PG;9CnH{Tipuk6^%;y%U%HzGK==MJ)BQ~Mu>$JR9Yle{br~nfmP4lySC`GHE>8n1Ny>yCYgGF zOke1zfBN((g`i{5^C%|$qM?`+;E(5Cy46lJnE<{pH#cV?UP)ZEDu=crOWB0Z!QNiE zZv^Pj4w$n*bCXo{OU@Op^LS=NFFTqc3$miZQqhetDm*+~ui6S!D zA8`F%sYC;z8Da_w?R4hbpv?HZOG!9#R!Z;F>Z47kzS z!qfffUH6&IuYF5aHa6=XD;IZlUF%e~UAL}-)U%qlzAcjY*0CZ*i_y}_%@+RCByi-% zAtHH<;`B-*nvEcuqhxQk0i4E_-P{U)jlO|L=up1$nyif=mvb8Z^LGKoLbtB~1ui~d zxlh4xG9u%4hTo%cXai_$yzPq*9(cgK(2*Yz#Ldggrd^g@R^|xUfkwr^z-POY53j_A zWiTfItrL2ZK|P&+S&5-}5Bv|F;F<;14K6NnezHw*38x#hm{5Whh2hMT9h{aX*?Pv4 z4yq>juz+Nrv%@!UFy1xDKX@n@k>+nQvQJOYDNBl}Kk%IaRAB{00O63)ba;LW_DEg>yx^P?k zt=pHB$X8!E@Q&RPP?7bHy2Hx5m&_m9+yA|xs0<{k$2t4*j2%*!YGoB|8x+XU;#%=ZiAsl)AJ%p}q_@shV zQJDa=o2UxYS1!$B?XwvcuhZ8@5+JH8<$k=;LVe1F;eRKN!Z&D3-OejRH6 z;f;5SVyBLi()E%wQBWOMOt?P@6U=@29c;FY4gk}Qsnske_gkZE=!s)1!rumE>+B(x zVmUY_%paWpZJdmdIu`rMo6x!B2+gAO&YbEbXJGQPJbWrEE6YuO+tc_CT*L68cFk9D ziTKG6F%{Bfi6cYz$Vn0vhVu9*#gFb`hZ+!Y1ht8OIDke_d_c&3nO5Uf$n^B4MDcO9 z6urm`V8+ngd`}^(G&A$X8hdlO_)gW7RnsIJkL_EKfThJ!*>BUSAKh;Ee;t_Utw#D4 z{JhC-^KsA_ll%`QrR|uMdh-wCxfDtJ-+O)8>-mfWK$K-`_&^n@G}I@t5XQE5b|SS4 zptTjHyz@g5<}0VFre<=|OEN=}@ztI`uXXxm_jMYeK9MCQ@3xvGWb0{4_F@S_@Eq>m zRjg;iULCEl-QjGY&06n8ecFQm$-VdQ-)9d6Kfinr+EARh$>k~h&3aMdo-ui?{`n49 z_sH6w_*30#b`f00Lu{qJ>5S{Cz-6Ry-1qCXopI=vI(M!4s(f;blk4xpC~*N&j=li}y?FkRHn@DAm)#ese?Phg&A$T! zVrIuh+gB*E!sxS>;7DPw}~7b0cVmg}0S5;y2C%dSPXv=^=&w|@R^*-u_y zXY{FxA$ygC8t6FV4r9*SV%}qOFM*v72@<0_leI~z#JM!g-h*xqTV1~gbJRSZ7#jl< z1KhsiP(0wn2gDR>5=q`q=%kAd7Weyi9bJMMwU)}gXvle;FYbm?AKyE^A_KrEGy4P6 zgEm>xg!Ewkl#~(!LuZa>42Yi%ot8>Gy0T(36dbzdO8&G@5s@BckRsVW)a%w2dft{t z6PP`DLG`78Ica5Rj977PWPrsb@)1_fO_SZ-rBJ>{q;cw%Sxucx+Vof zv`Dzbw=9&VKDT~&R0Q3)y<(x^;qw+99W)w@F)P+23&IEvUR2GNLGVk!y?!@nRJ<{nytetm}^_~7)6j0q;HQuoTp?Ph?{Z+m-s zo`JLmpJbGstF5N?L5|M!j!giC8{#8&0YIcDJD5{fva_;uAOWZWXR3Pr(dSFWV99--o-=W!FxUvb7xB{1~4+57{=dgdr%!fxW|WE z0-A4mQB%5) z9qfj3TCP_h=Ef%@slblvF1d{G4Oe)8h?LdQ8HH2?Rc6p{t8)1K zivEVdSbg`Lq9S%=E?g2s&FBv^&egkxj1Gr!J90k>$-|^1nyh%U^gKFPD^Q>AK<2D? ztKyIZCeI7C6X+mx^x5)BN>Gi)Z#5ArrmMq;Dnx+IDfa<_5gi>LUzzA$pb3E+;;W-W z8BfaH!Do6#bAJ(SZsYG7ds`+(2K)IXXrp9q%-Zib`x?LsroF>M`>0e#h{;$@qJRIuxU5^x{Bqb$6k|l*S3}vhM zR$qH%O(;}@jHSjtqa>s(Av;+j6DCHojY+a6Te8L2WgYv@oM-eszjK}Icb#)x=eo}O zhd(~^Y38%M@AE#-{oMDRT;=z#H=iybKab35X)?d6Nu|U-wf5Z*`x zA`J~&zkB37*b6lT08?082rPc$odx?Ka0)Vn+)Q6z2?U!N z+5p>E(3VC%1bUVNCr?x-!Stg|1c9KguI~O7%%lcqT(7lAYH{b~Ico5(Olb5rGYjIS zlnRmO6sTzP&Rdz6GgA~^6?}F$hln)qzu2EVCYjhEDg?y)Qscfw(mDI`5IVNaabD66r;T3qzldR;6FtVzO!h&jY( z>r|H3z^sC6sFaiyi>XwmNJ+!c5x4}Jq>_RTvm{;f!gq}Pp@q|9{*S(vR;}+r+|^&H z8yc@|%ZT{J$;}5Zq+s536ZyvJ_FIp_F7mIe_~DHp#NCL=A~d$ekgH5>s$V2Gw|NqKz|URyTl4KDpS}l1N((=;M`*v;z0*t>=mH`mG#lXS<%q^Zm!xLuSoL}9L z4Or(C{9@2oa2w8$qF=7sj5)&E2X`#Uu8Q03dl71vABh`*{vS z=j#cFi(e9J8yiE)^~N3KOU#I67J>}-zEq}a4S-X@Bq%W{X}3_nsrVFykMdY+W&M)V zl`))nH(eZb+2C20Yz$`$`X2jIEefKdj12Vs-(NmuN4$vN7^7p!_Dq(*?gT*aZX4mVW-QUm}ffw}N?aJCt#C9tR0RJ;lmIQlGekzgz-%3CqR z&KU~y6SWjQpoCN#DNRvfFUCP7431c>B;J-aruscMD^Yj11>J1(SFY!6LSct0ei^N*QX z%|K}m8f#rIcpS~%bu=)Y63Vq{C1{+w=iuM~0#M58(6KobWnkQh)V9M|1Q3wci8HcSem-@lrD3wJICB6Ak`U8rU*E01vXi zwl((j^iZk9%icvW#Roqo?|Dh-6pir;@alIO=X}3-^g;H92JH0ynrjz`_O7nWP(rG# zVleBpHG}u*t&X$?i~&GSld=cEuHD*;D>H2iGL&^!QL;$K&|NLHInD5O4q`3q(B(B zUjYb`o}24*WS4i4-02;|o7%kXM}-s^%JpUPA4&R+e5e{jnU<6_tV+LO;6XV35$ zeYDXBqY|OeD5o`m?mW4UnwpbpX3S!)Dz>)ROm1+H=iiq%D6eIvp;vc88s(m$(yV*Z z1*fGZyg$H78v#UHgDjJeUTatze+7|KNd z%C*+8snQh#1`yedW)=KcC;r?*Q$X-hUb$+I=;!2t#q+_wcrU1bW9^I3{hc{vYc@Ha z#+xkABPW5OQeLbVh-SKPDba0*Hd-kg<2BDajo3F)tis&hZL55QBwOk zqwTC#GOnkCZ=byNZq>&E){NjFtpV4DS{zocBO~ikNaPPdqUmUvXcH3?F7;@;wX(7@ ziRak_FU)h4W{1ZEjKNV}e*WQ!nz%i7V3wCVRRJ9)g*88w9>=x#=Gcrl{bAZf2j0%Y zLY3ZR{~)HCDN>8$dfF)kIoBuGMSTFAg@41ocdvGS+4S`Ea}|0%x$Sjf91XX4 zi0*|m66id0o`sbagk`WUDlcqDAm(oJ=dlQf)p$%5jzFIkIAoAeGfXPL0aDYm35*T0 zjdYy`HRzj{R&GD5_ms%%q2LE{Ud<~7vRS#mtZ}b61ui#Dmj${%+%6Ai_N}WsIrxQ( zdQGk%FK>SAeRk1UOyBMrW3(4T(gj5^AWhTX&Ni&CkEkSO+U^T`2fKx5BTs-JBl*AZvbBR$w{ED`VfS+DbKW2pe0*U$it6sw7fCcOaXoXd zpjF**)1tbjl$VAo}-&&BV$Osf^zK(yWa_*D;pJBcJTM-RFPn znXu^IcMX(=4fUHsM#e1=n?XV(SN!9LJh<}k^71b9Z8syL`1W>9F4p9OSK)0i(H!q< z+sv_}T6L97*W+gdJX-Z`hG9LWcd5Q6`AV9VER*K&u5(#!XEBQcWcnstZYdCE@8MZh zPEb7kahuW@;sfMp-|%82#smN*Pi%=*&UeL0#RKK+sM< zTi%Y~bo-s;w>eg}R%GV+lO(K#pPy10@1c@t?<1_Ci#GHl+HBjK;?cBNzK^n-mc&xH zzG%Bx{Hd-b_vMekh#+-jQa`dS^2sv47v~AZsIC;*~Z4k!1*&k?aO^+ zjAojZ3?Tef^($eE8)YJ4qk!wJo>bRM^Bgt0dbI}LVPN3Wlm|Rk`d!-du2a?;_RymX z5N&wcgCi|PqYN@L36O?QuULIgRG~Nx)q-Oj=pV2XJ0}8jv6G!3O`+VQ;+0%`W~P=q zq7^k1DXtlFME(+5k{|y`=-t#{Diq0J0mk2mI0moa950|<4=@bU5S@G#Z`V|5h{A9)gX2{zd^;BGF_sB{o#vlItyD9@}V_xDSA zx%IW#7v-QYmxBofFg@o_+uHB}k^^1hZmF+W(&4|;=N_4;LHO`r9~4zN#xPvl5rnk3 zW@zs92*Rkk`i`V11;{Zxf&J1(G{=J}FDNR(trlq9r_D-S!59d_Sq?qA{jxyYLx1ed zfl3j-!O#&kK;CREEsux7H}1%e+Gimt%nVc;#y(har*Ni{wG+Fxh%OC60QK42qQy;H+<~TMoar{~HsxvG(_7OuaC(md1T7E-OKIo< zSAWRq?Iz&6BoplWwl~AlAGm@zv#M! zKNFpX)>MCfvD{mXadl}rE#L{6jyKQ;NKU4XVHsI9z!|DRdmW}JqQtKw6beqgAnMq| z!U=6&5L3~8dF*GPZv|8Z>BGW|+nYNW|0Ki`a&q9DKsB)KaZu1+bvr67P1pnAEt?W=;VgAcz6*7bL1?bau!yHns-jIkiz2h3BojQ+B~Zk}zQo zu>@Z}5YT7f&O;vxP810fpECmj0qA`*j$TR%>97N4b&Kr*@Q=gwK4t|lVg8k^jSb)m zNG<2$Zuj&zj%4r3O$cWUYXrhrIE5z)|0m`nS{P*B9MqEW)LV3EQc@DgRX23NExNfG zGBqSlRg4Ran=>3gv-tGoRN)34eu#u!CEGTt4e+l6O~0+J%~=fIDH;)SntXi|dcv?} zRcU_-Gsa+aDb_lt(ROy42SGp}ItApW7Ud5*!uy4qp`Ffh_rk zp<$xD;}ga`UtwnBtnY8BW`fN)0laB}cL)=U2EZtEl_QPr3h%$#6@eeBjo?|G1k#!1 zul=NsxcW9=(N_u3&-O_1doi4)M*pXs z&bhN?acO?u-`^}eSqzLz?9u2ZL*rB26l!9jmDl}Q=LV%JCSZxoE&heNwB#~*puSYN ze!ys}NXQaQF8}4$vY*X&ehC|`DdOc#OcpaPRnw%=!!{PLbIUpk=aj}7`Y_g1*+TyN zmHgp=x_B?`C8s4Tk27+JLeye@mxZ+H4|bQmwC|!4&mlcRcmvu58)e&)$9_ z2p@ja000TbpDKO0c=RFLEWQnM{>!&(8E5i@sj$duX0x&T2q65_J|(0-n&x%4Z{ikuvrj0>6#JaXeKbwnqW zMOac84nAN22&!gc_`+WuBQHF;YdjOpk>}3EXgMZXiOrY?th4*k!lgoXrpAx_=oon@ z<)TA0>LNZs*X8l&Oc~|-koF-W_z@PbJF@G>c9?gRqCQ(m*ZVkdU2U51><+R%pQ{L8 z|CSX{GR-Z)@*nu&pV-!5>c~Us8ehO-u{JT4w-M4DP!fYj`_AoZR^Uqt>h$07A zuN$Pc@m53ilqN@ym*lB2Fi}(FPp{(iHvaHGz?#-?@rQ4kTfdvhJq6Q5QG*%0(={|S z*xA9-9Kn2t@qYw>62l+pmH!y2gI(L?;_B+EXriagzMbIeE(X>p>+|F%Wfp{xXIlfr zE}L5ek|4(yOyAz=ig5*207RhV2wKluZf+~@iJRkA5fT0`-Vk<^f%B@ z0z*4S{Dln$R4*A!SWtC9BhTDM|Iwp`fCHi;5>=Dfajii`US{c*0YVh#z^hq;EjWTe{w^^C%IC?>T zJx|umyLnijr`Zp$rE0Z!$_%58WmYOK<+>^=Z<-r@i+#oPO%Pmm2{wS>wqO1BkU`-~ zCfLYD=*!8P$(_(0WkL+=ANc_G9b{WO@G=}3hE_Ef^a`85f5-p)1iZgKhbSL5i`O6X z^8BkIb0aih(%NqP3%E?l{rl#CUN_vs8TNK?1?;es1XNxiV6umN)4UXPvta%Wf-;y& z=?U(&qYuaGPICuRX`ou*vqYS&w~&rgbaMi#9D%@n@ZhLyD@kn)tr2vx1is7 zgqHj_?CqrFrlux^%>%MppjZKmF+DIe6%rbdeAILwIqBpzRg$wCbZa87X%o&xk;Umt zU3QfG70P&G!7rE2d&NQHXLKE|wKjb{B7VtQHovsibin%h7y7&Y40v{71wz3%TWjmL zJ^2YkPW&&JqK>!z2)7meX^2LZzS|G&Xzx%)8KGKM19>v0 zr<9i973sWFmA}>XhC2dri~j|C^$ZF6d|7P{=`Sy|dgeV_d0$ z2`}A~6XFipmejs8AUu;`kJCpmro%sxk^3&gH1faUn12GvALvq$xQ=H^os(kHAu;X` OaaCPgE&HOylm7tZ&$v(k literal 20056 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 diff --git a/sbol2.tex b/sbol2.tex index 5bd0c555..725a6802 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -56,7 +56,7 @@ \definecolor{gray}{rgb}{0.5,0.5,0.5} \definecolor{light-gray}{gray}{0.97} \lstdefinelanguage{sbol} - {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:sequence,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation, sbol:component,sbol:location, sbol:sequenceAnnotation, sbol:Range, sbol:start, sbol:end, sbol:orientation,sbol:SequenceConstraint, sbol:restriction, sbol:subject, sbol:object,sbol:Sequence, sbol:elements, sbol:encoding,sbol:Model, sbol:source, sbol:language, sbol:framework}, + {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:sequence,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation,sbol:component,sbol:location, sbol:sequenceAnnotation, sbol:Range, sbol:start, sbol:end, sbol:orientation,sbol:SequenceConstraint, sbol:restriction, sbol:subject, sbol:object,sbol:Sequence, sbol:elements, sbol:encoding,sbol:Model, sbol:source, sbol:language, sbol:framework}, basicstyle=\fontsize{7}{9}\selectfont\ttfamily, backgroundcolor=\color{light-gray}, keywordstyle=\color{blue}, @@ -71,6 +71,8 @@ morestring=[b]", % string format escapeinside={[}{]}, alsoletter=: + %breakatwhitespace=true, + %literate={\-}{}{0\discretionary{a}{\\}{}} } %Command to format the listings containing SBOL RDF/XML serialization examples @@ -117,10 +119,16 @@ \author{\begin{tabular}{l>{\hspace*{15pt}}r} +Bryan Bartley & \emph{University of Washington, US}\\ +Jacob Beal & \emph{Raytheon BBN Technologies, US}\\ +Kevin Clancy & \emph{ThermoFischer Scientific, US}\\ +Goksel Misirli & \emph{Newcastle University, GB}\\ Nicholas Roehner & \emph{Boston University, US}\\ Matthew Pocock & \emph{Newcastle University, GB}\\ -Goksel Misirli & \emph{Newcastle University, GB}\\ -Anil Wipat & \emph{Newcastle University, GB}\\[8pt] +lots of other community members & all over the world\\ +Chris Myers & \emph{University of Utah, US}\\ +Anil Wipat & \emph{Newcastle University, GB}\\ +Herbert Sauro & \emph{University of Washington, US}\\[8pt] \end{tabular}\\ \href{mailto:editors@sbolstandard.org}{\sffamily editors@sbolstandard.org}} @@ -164,31 +172,30 @@ \section{Purpose} % ----------------------------------------------------------------------------- % ----------------------------------------------------------------------------- -\section{Copyright Statement} +\section{Copyright and License Statement} % ----------------------------------------------------------------------------- %% Variation from BBF RFC 0 specs confirmed in email communication with BBF by Jake Beal, 3/21/15 -Copyright (C) The BioBricks Foundation (2015) and all of the individuals listed under "Acknowledgements" below. All Rights Reserved. - -This work is licensed under a \href{http://creativecommons.org/licenses/by/4.0/}{Creative Commons Attribution 4.0 International License (CC-BY 4.0)}. +Copyright (C) The BioBricks Foundation and all authors listed on this BBF RFC. This work is made available under the Creative Commons Attribution 4.0 International Public License. To view a copy of this license visit \href{https://creativecommons.org/licenses/by/4.0/}{https://creativecommons.org/licenses/by/4.0/}. % ----------------------------------------------------------------------------- \section{History and Acknowledgements} % ----------------------------------------------------------------------------- -\todo[inline]{Add yourself if you have helped and aren't on the list} +%Add yourself if you have helped and aren't on the list -SBOL originated in discussions between participants in the Synthetic Biology Open Language Workshops held in Blacksburg, Virginia on January 7-10, 2011, San Diego, California on June 8, 2011, and Seattle, Washington January 5-6, 2012. Its further development is carried out at a series of subsequent open invitation workshops and through email exchanges on the SBOL Developers mailing list. +SBOL originated in discussions between participants in the Synthetic Biology Open Language Workshops held in Blacksburg, Virginia on January 7-10, 2011, and its further development has continued at a series of subsequent open invitation workshops and through email exchanges on the SBOL Developers mailing list. -Contributors to this work include: Eduardo Abeliuk (Teselagen), Laura Adam (Virginia Bioinformatics Institute), Aaron Adler (BBN Technologies), J. Christopher Anderson (University of California, Berkeley), David A. Ball (Virginia Bioinformatics Institute), Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Swapnil Bhatia (Boston University), Michael Bissell (Amyris, Inc.), Matthieu Bultelle (Imperial College London), Yizhi Cai (Johns Hopkins University), Deepak Chandran (University of Washington), Joanna Chen (Lawrence Berkeley National Lab), Kevin Clancy (Life Technologies), Kendall G. Clark (Clark \& Parsia, LLC.), Daniel Cook (University of Washington), Wilbert Copeland (University of Washington), Douglas Densmore (Boston University), Omri A. Drory (Genome Compiler, corp.), Drew Endy (BIOFAB and Stanford University), Michal Galdzicki (University of Washington), John H Gennari (University of Washington), Raik Gruenberg (IRIC, University of Montreal), Jennifer Hallinan (Newcastle University), Timothy Ham (Joint BioEnergy Institute), Nathan J. Hillson (Lawrence Berkeley National Lab), Cassie Huang (Boston University), Jeffrey D. Johnson (University of Washington), Marc Juul Christoffersen (BIOFAB), Kyung H. Kim (University of Washington), Richard Kitney (Imperial College London), Allan Kuchinsky (Agilent Technologies), Sung Won Lim (Genspace), Matthew W. Lux (Virginia Bioinformatics Institute), Curtis Madsen (University of Utah), Akshay Maheshwari (BIOFAB), Goksel Misirli (Newcastle University), Barry Moore (University of Utah), Chris J. Myers (University of Utah), Josh Natarajan (Autodesk Research), Ernst Oberortner (Boston University), Carlos Olguin (Autodesk Research), Jean Peccoud (Virginia Bioinformatics Institute), Josh Perfetto (Cofactor Bio, LLC.), Hector Plahar (Joint BioEnergy Institute), Darren Platt (Amyris, Inc.), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Harvard University), Sridhar Ranganathan (Life Technologies), Cesar A. Rodriguez (Genome Compiler, corp.), Nicholas Roehner (University of Utah), Vincent Rouilly (University of Basel), Herbert M. Sauro (University of Washington), Evren Sirin (Clark \& Parsia, LLC.), Trevor F. Smith (Agilent Technologies), Lucian P. Smith (University of Washington), Guy-Bart Stan (Imperial College London), Jason Stevens (University of Utah), Vinod Tek (Imperial College London), Alan Villalobos (DNA 2.0, Inc.), Mandy Wilson (Virginia Bioinformatics Institute), Chris Winstead (Utah State University), Anil Wipat (Newcastle University), and Fusun Yaman Sirin (BBN Technologies). +Contributors to this work include: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University). +% Removed as redundant: +%----------------------------------------------------------------------------- +%\section{Introduction} % ----------------------------------------------------------------------------- -\section{Introduction} -% ----------------------------------------------------------------------------- -While the first version of the Synthetic Biology Open Language (SBOL) has been adopted by several academic and commercial genetic design automation (GDA) software tools, it only covers a limited range of the requirements for a standardized exchange format for synthetic biology. The SBOL 2.0 specification revises version 1.1, enabling the representation of a wider range of components with and without sequences, including RNA components, protein components, small molecules, and molecular complexes. Additionally, the latest SBOL can be used to convey the intended function of a design, as well as its structural composition. -This dichotomous representation of the structural and functional features of a design is a paradigm applied to great success in electrical and computer engineering, and is essential for the development of design automation software in synthetic biology. - -The goal of this specification is to define the terminology and relationships used to describe biological designs. In order to provide a shared understanding between engineers seeking to exchange biological designs, SBOL provides a common definition of the concepts needed. As much as possible, we attempt to make explicit the meaning of all terminology and data structures. +%While the first version of the Synthetic Biology Open Language (SBOL) has been adopted by several academic and commercial genetic design automation (GDA) software tools, it only covers a limited range of the requirements for a standardized exchange format for synthetic biology. The SBOL 2.0 specification revises version 1.1, enabling the representation of a wider range of components with and without sequences, including RNA components, protein components, small molecules, and molecular complexes. Additionally, the latest SBOL can be used to convey the intended function of a design, as well as its structural composition. +%This dichotomous representation of the structural and functional features of a design is a paradigm applied to great success in electrical and computer engineering, and is essential for the development of design automation software in synthetic biology. +% +%The goal of this specification is to define the terminology and relationships used to describe biological designs. In order to provide a shared understanding between engineers seeking to exchange biological designs, SBOL provides a common definition of the concepts needed. As much as possible, we attempt to make explicit the meaning of all terminology and data structures. % ----------------------------------------------------------------------------- @@ -225,7 +232,7 @@ \section{Overview of SBOL} \end{center} \end{figure} -SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{Module}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. +SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements modularly, modules that are composed of different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. @@ -265,74 +272,76 @@ \section{SBOL Vocabulary} \item \emph{\sbol{ComponentDefinition}}: Represents biological molecules such as DNA, proteins, RNA and small molecules. \item \emph{\sbol{Component}}: - +Represents a specific occurrence of a component within a larger design. For a given component definition, there may be several instances of components specified at different locations within the larger design. \item \emph{\sbol{SequenceAnnotation}}: - +A sequence annotation describes the position and strand orientation (in the case of DNA molecules) of a notable sub-sequence found within the Component being +described. Annotations provide the link which describes +sequence of a component in terms of other components, +subComponents. \item \emph{\sbol{Location}}: - +A Location specifies the coordinates of a genetic locus on a DNA molecule or a residue or site on other sequential macromolecules such as proteins. \item \emph{\sbol{SequenceConstraint}}: - +A Sequence Constraint describes the relative spatial orientation of Components which are assembled together into a biological structure. \item \emph{\sbol{Sequence}}: - +A sequence is a contiguous sequence of monomers in a macromoleculer polymer such as DNA, RNA, and protein. The +sequence is a fundamental information object for synthetic biology and is needed to reuse components, replicate synthetic biology work, and to assemble new synthetic biological systems. Therefore, both experimental work and theoretical sequence composition research depend heavily on the sequence associated with component definitions. \item \emph{\sbol{ModuleDefinition}}: - +A Module Definition desribes an abstract functional module that may be composed of many functional interactions between biological components. \item \emph{\sbol{FunctionalComponent}}: - +An occurrence of a component that is intended to have a biological function inside a design, as opposed to a component whose purpose is simply to compose a biological structure. \item \emph{\sbol{Module}}: - +Represents a specific occurrence of a functional module within a larger design. For a given module definition, there may be several instances of modules that specify the overall function of a biological design. \item \emph{\sbol{MapsTo}}: \item \emph{\sbol{Interaction}}: - +Interactions describe a functional relationship between biological effectors, such as regulatory activation or repression. Interactions also describe processes from the central dogma of biology, such as transcription and translation. \item \emph{\sbol{Participation}}: - +Describes the role that a component plays in a functional interaction. For example, a transcription factor may participate in an interaction either as a repressor or activator. \item \emph{\sbol{Model}}: - +Links an SBOL representation of biological components and their interactions to quantitative, computational models that may be used to predict the functional behavior of a biological design. \item \emph{\sbol{Collection}}: - +A Collection is an organizational container for Components, a group defined by the user for convenience. \item \emph{\sbol{GenericTopLevel}}: - +This is a data container that can contain custom data added by user applications. \end{description} % ----------------------------------------------------------------------------- \section{SBOL Data Model} % ----------------------------------------------------------------------------- -In this section, we describe the major entities of an SBOL document and the relationships between these entities. The data model is specified using a Unified Modeling Language (UML) 2.0 diagram \href{http://www.omg.org/spec/UML/2.0/}{(OMG 2005)}. +In this section, we describe the types of biological design data that can belong to an SBOL document and the relationships between these data types. The SBOL data model is specified using Unified Modeling Language (UML) 2.0 diagrams \href{http://www.omg.org/spec/UML/2.0/}{(OMG 2005)}. Complete SBOL examples and best practices when using SBOL can be found in \ref{sec:examples} and \ref{sec:bestpractices}, respectively. \subsection{Understanding the UML Diagrams} -The biological design concepts modeled by SBOL are commonly referred to as classes which are represented in UML diagrams as rectangles with the class name at the top. Classes may be connected with other classes by associations (arrows). The data properties for each class are listed in a compartment under the name, with the corresponding data types and cardinality (explained below) specified for each property. +The types of biological design data modeled by SBOL are commonly referred to as classes, especially when discussing the details of software implementation. Classes are represented in UML diagrams as rectangles labeled at the top with class names. Classes may be connected to other classes by association properties, which are represented in UML as arrows labeled with data cardinalities. Finally, the remaining class properties are listed below class names inside the rectangles and are labeled with their data types and cardinalities (explained below). -All SBOL properties and assertions are named. In the UML diagrams, these are named with a mixture of singular and plural forms, to aid in comprehensibility of the diagrams. The singular and plural forms follow the usual rules of grammar, so for example, \sbol{sequenceAnnotation} is the singular form of \sbol{sequenceAnnotations}. +Association properties between SBOL classes are directional. An arrowhead indicates the direction in which an association can be traversed, while a diamond at the beginning of an arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, which means that objects of the class at the end of the arrow exist independently of any objects of the class that has the association property. In contrast, filled diamonds indicate composite aggregation or a part-whole relationship, in which objects of the class at the end of the arrow cannot exist independently and must be associated with at most one object of the class that has the association property. For example, it will later be shown how objects of the \sbol{SequenceAnnotation} class must associated with an object of the \sbol{ComponentDefinition} class (and only that object). -Within the RDF serialization, each value for a property is individually asserted. So if a property has 5 values, there will be 5 RDF triples, one for each value assertion. The SBOL serialization does not use RDF collections to represent multiple values. It follows that in the RDF serializaiton, the RDF predicates will always use the singular form of the name. +All SBOL properties are labeled with data cardinality restrictions. These are: -Within an implementing API, properties and associations will be mapped to member accessors. The API should use the idiomatic representation of optional, single and multiple-valued members. - -For example, a Java implementation would use common Java idioms. For example, an optional value may be represented as a Java Bean property that returns either the value or null. A multi-valued property may return a Java collection. If the API exposes a collection for multiple-valued properties and associations, it should use the plural form of the property/association, and the value of the collection should not ever be null. +\begin{itemize} -As another example, a relational implementation of the SBOL API would store the properties and associations a mixture of data fields and references via foreign keys. The fields in individual tables will correspond to the `arrowhead' end of an association (in reverse to the direction in the RDF and OO representations), and the name may be modified to reflect this change in directionality. For example, the \sbol{sequence} association between a \sbol{ComponentDefinition} and \sbol{Sequence} would be represented by a foreign key field on the \sbol{Sequence} table that references a row in the \sbol{ComponentDefinition} table, and it may be named \sbol{sequenceOf}. +\item $1$ - required, one: there must be exactly one value for this property. -The properties and associations within SBOL are annotated with cardinality restrictions. These are: +\item $0 \ldots 1$ - optional: there may be a single value for this property or it may be absent. -\begin{itemize} +\item $0 \ldots *$ - unbounded: there may be any number of values for this property, including none. -\item $1$ - required, zero or one: there must be exactly one value for this property. +\item $1 \ldots *$ - required, unbounded: there may be any number of values for this property, as long as there is at least one. -\item $0 \ldots 1$ - optional: there may be a value for this property or a value may be absent. +\item $n \ldots *$ - at least: there must be at least $n$ values for this property. -\item $0 \ldots \infty$ - unbounded: there may be any number of values for this property, including none. +\end{itemize} -\item $1 \ldots \infty$ - required, unbounded: there may be any number of values for this property, as long as there is at least one. +Within the SBOL data model, all properties are given a singular or plural name in accordance with their data cardinalities. The forms of these names follow the usual rules of grammar. For example, \sbol{sequenceAnnotation} is the singular form of \sbol{sequenceAnnotation}s. -\item $n \ldots \infty$ - at least: there must be at least $n$ values for this property. +Within the RDF serialization of SBOL, however, SBOL properties are always given singular names. The serialization does not use RDF collections to represent multiple values of an SBOL property. Hence, if a SBOL property has five values, then its serialization contains five RDF triples with singular predicate names. -\end{itemize} +Within an implementing Object-Oriented (OO) API, SBOL properties should be mapped to member accessors that are similarly named and that return idiomatic representations of these properties. For example, a Java implementation would use common Java idioms. In this case, the member accessor for an optional SBOL property could return a Java primitive value, Java object, or null, while the accessor for a multi-valued SBOL property could return a Java \external{Collection}. In general, OO member accessors for multi-valued SBOL properties should never return null. -Associations between SBOL objects are directional. An arrowhead indicates the direction in which an association can be traversed. Diamonds indicate the type of association. Open-faced diamonds are shared aggregation, meaning the object at the end of the arrow can exist independently of the source object. In contrast, filled diamonds indicate composite aggregation, or a part-whole relationship, which means that a part instance must be included in at most one whole and cannot exist independently. +As another example, a relational implementation of the SBOL API would store the properties and associations a mixture of data fields and references via foreign keys. The fields in individual tables will correspond to the `arrowhead' end of an association (in reverse to the direction in the RDF and OO representations), and the name may be modified to reflect this change in directionality. For example, the \sbol{sequence} association between a \sbol{ComponentDefinition} and \sbol{Sequence} would be represented by a foreign key field on the \sbol{Sequence} table that references a row in the \sbol{ComponentDefinition} table, and it may be named \external{sequenceOf}. \subsection {SBOL Document} An SBOL document is a valid RDF/XML document. Accordingly, each SBOL document starts with an XML declaration that has its XML version set to ``1.0.'' As shown in the example below, this declaration is then followed by a rdf:RDF XML element that includes the namespace declarations for RDF and SBOL. The latter namespace is used to indicate which entities and properties in the SBOL document are defined by SBOL. @@ -365,21 +374,17 @@ \subsection{Understanding the UML Diagrams} \subsubsection*{The \sbolheading{identity} property} \label{sec:identity} -This property is required by all \sbol{Identified} objects and has a datatype of \external{URI}. As before in SBOL Version 1.1, this \external{URI} serves to uniquely identify a SBOL object. The \sbol{identity} property can be used to point to other objects in the same SBOL document or resources on the Web. Although most properties of SBOL entities are defined under the SBOL namespace, this property is defined under the RDF namespace using the term below. +This property is required by all \sbol{Identified} objects and has a datatype of \external{URI}. As before in SBOL Version 1.1, this \external{URI} serves to uniquely identify an SBOL object. The \sbol{identity} property can be used to point to other objects in the same SBOL document or resources on the Web. Although most SBOL properties are defined under the SBOL namespace, this property is defined under the RDF namespace using the term below. \external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. \subsubsection*{The \sbolheading{persistentIdentity} property} \label{sec:persistentIdentity} -The \sbol{persistentIdentity} property is optional and also has a datatype of \external{URI}. This property is used to declare that a set of SBOL objects are versions of each other (by virtue of having the same persistent URI). This persistent URI is ideally used to return the most up-to-date version of a SBOL object. +The \sbol{persistentIdentity} property is optional and also has a datatype of \external{URI}. This property is used to declare that a set of SBOL objects are versions of each other (by virtue of having the same persistent identity). This persistent identity can be used to return the most up-to-date version of a SBOL object. \subsubsection*{The \sbolheading{version} property} \label{sec:version} -This property has a datatype of \external{String} and is used along with the \sbol{persistentIdentity} property to indicate the current version of an SBOL object. - -% \subsubsection*{The \sbolheading{timeStamp} property} -% \label{sec:timeStamp} -% This property has a datatype of \external{TimeStamp} and is used to indicate the creation time of a SBOL object. +This property has a datatype of \external{String} and is used along with the \sbol{persistentIdentity} property to indicate the version of an SBOL object for comparison with other SBOL objects with the same persistent identity. \subsection {Documented} \label{sec:Documented} @@ -425,7 +430,7 @@ \subsubsection*{The \sbolheading{description} property} \subsection{ComponentDefinition} \label{sec:ComponentDefinition} -The proposed Version 2.0 data model generalizes the DnaComponent class of SBOL Version 1.1 to a \sbol{ComponentDefinition} class in order to support an increased range of structural representation. A \sbol{ComponentDefinition} can represent genetic components such as DNA, but also RNA and proteins which were unrepresented in Version 1.1. Additionally, the generalized \sbol{ComponentDefinition} class can even represent non-genetic components, such as non-biological polymers, small molecules, molecular complexes, and even light. +The proposed Version 2.0 data model generalizes the DnaComponent class of SBOL Version 1.1 to a \sbol{ComponentDefinition} class in order to support an increased range of structural representation. A \sbol{ComponentDefinition} can represent genetic components such as DNA, but also RNA and proteins which were unrepresented in Version 1.1. Additionally, the generalized \sbol{ComponentDefinition} class can even represent non-genetic components, such as non-biological polymers, small molecules, molecular complexes, and even light. % Figure has some classes named incorrectly \begin{figure}[ht] @@ -438,7 +443,7 @@ \subsection{ComponentDefinition} -% Examples of ontologies for non-molecular type ComponentDefinitions (eg, light)...? +% Examples of ontologies for non-molecular type gs (eg, light)...? \subsubsection*{The \sbolheading{type} property} \label{sec:type} In order to specify the blueprint for a molecular component, a \sbol{ComponentDefinition} must have at least one types \external{URI} that identifies a term from an appropriate ontology, such as the ontology of Chemical Entities of Biological Interest (ChEBI) and the BioPAX ontology (\ref{tbl:componentdefinition_types}). A type URI documents the basic sort of biochemical or physical entity (for example DNA, protein, or RNA) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. If a \sbol{ComponentDefinition} object has multiple type URIs, then they must identify synonymous terms. @@ -490,7 +495,6 @@ \subsubsection*{Serialization} \begin{lstlisting} ... - [\emph{zero or one}] ... [\emph{element}] [\emph{zero or one}] ...[\emph{element}] [\emph{zero or one}] ...[\emph{element}] [\emph{zero or one}] [\emph{element}] @@ -510,7 +514,6 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - 2015-02-26 11:28:18.396 J23119 promoter Constitutive promoter @@ -638,7 +641,6 @@ \subsubsection{Location} \lstsetsbol \begin{lstlisting} - 2015-02-26 17:11:21.884 56 68 @@ -942,10 +944,6 @@ \subsubsection*{ The \sbolheading{role} property} \lstsetsbol \begin{lstlisting} - - ... - [\emph{one or more}] [\emph{element}] - ... [\emph{one}] [\emph{element}] @@ -1003,7 +1001,6 @@ \subsubsection*{The member property} - 2015-03-05 14:11:59.491 Anderson Anderson promoters The Anderson promoter collection @@ -1116,23 +1113,62 @@ \section{Examples of Data Model} \label{sec:examples} % ----------------------------------------------------------------------------- +\subsection{LacI/TetR Toggle Switch} + +As an example of structural representation under the SBOL 2.0 data model, \ref{uml:ex_comp_defs} specifies the component definitions for one half of a LacI/TetR toggle switch in a UML object diagram. These include DNA component definitions based on parts from the iGEM Registry, the RNA and protein component definitions derived from them, and the small molecule component definition for IPTG. With the exception of the latter, all component definitions in this example are associated with a sequence, though a SMILES encoding could be provided for IPTG if that level of detail is required. + \begin{figure}[ht] \begin{center} -\includegraphics[scale=0.4]{uml/example_annotated_gene} -\caption[]{In this example the C0040 tetR protein is used twice in the same design. The SBOL data model supports designs that re-uses multiple instances of a component. In this case, the re-used parts are represented by Components which share the same ComponentDefinition.} -\label{uml:example_annotated_gene} +\includegraphics[width=\textwidth]{uml/example_component_definitions} +\caption[]{Examples of component definitions for one half of a LacI/TetR toggle switch.} +\label{uml:ex_comp_defs} \end{center} \end{figure} +As an example of structural composition, \ref{uml:ex_comp_def_compo} specifies the composite component definitions for the IPTG-LacI complex and TetR gene. In the case of the gene, its subcomponents are located as ranges along its sequence using sequence annotations. The complex, however, has no sequence and its subcomponents are aggregated without any data about their relative locations. + \begin{figure}[ht] \begin{center} -\includegraphics[scale=0.4]{uml/example_laci_inverter} -\caption[]{This example illustrates the functional specification of an inverter circuit using the SBOL data model.} -\label{uml:example_laci_inverter} +\includegraphics[width=\textwidth]{uml/example_component_definition_composition} +\caption[]{Example of composite component definitions for one half of a LacI/TetR toggle switch.} +\label{uml:ex_comp_def_compo} \end{center} \end{figure} +As an example of functional representation, \ref{uml:ex_mod_def} specifies the module definition for a LacI inverter. This module definition aggregates and instantiates the component definitions for the TetR gene as functional components that participate in interactions. Note that the transcription and translation of TetR is represented using a single genetic production interaction that abstracts away the presence of the intermediate TetR mRNA. If this additional detail becomes necessary, then a new module could be created that includes both transcription and translation interactions and a TetR mRNA functional component. Finally, the module definition is also associated with a continuous SBML model from source file LacI\_Inverter.xml. + +\begin{figure}[ht] +\begin{center} +\includegraphics[width=\textwidth]{uml/example_module_definition} +\caption[]{Example of module definition for a LacI inverter.} +\label{uml:ex_mod_def} +\end{center} +\end{figure} + +As an example of functional composition, \ref{uml:ex_mod_def_compo} specifies the composite module definition for the LacI/TetR toggle switch. This module definition aggregates and instantiates the LacI and TetR inverter module definitions as submodules. It also instantiates the LacI and TetR component definitions as the functional component inputs and/or outputs to both the toggle switch and inverter module definitions. To complete the functional composition of the toggle switch, mappings are made between these functional components to indicate that the output of the LacI inverter is the input to the TetR inverter and vice versa. + +\begin{figure}[ht] +\begin{center} +\includegraphics[width=\textwidth]{uml/example_module_definition_composition} +\caption[]{Example of composing the module definitions for a LacI inverter and TetR inverter into a module definition for a LacI/TetR toggle switch.} +\label{uml:ex_mod_def_compo} +\end{center} +\end{figure} + +Lastly, as an example of further detailing the connection between structure and function, \ref{uml:ex_comp_mapping} specifies a mapping between the composite component defintion for the TetR gene + +% The first use case is to indicate with greater fidelity how a module describes the function of a composite component, namely by asserting that particular component instantiations within the module correspond to particular component instantiations within the component. + +% As an example of this use case, one might compose the structure and function of the LacI-repressible gene of the genetic toggle switch. In this example, the LacI-repressible gene and two of its subcomponents, the pLac promoter and cTetR CDS, are to be composed with the LacI inverter module. In order to compose these components with the LacI inverter module and indicate that it describes their behavior, they are instantiated inside the module. In addition, port maps are placed on the instantiation of the LacI-repressible gene to connect between its pLac plus cTetR subcomponent instantiations and the corresponding component instantiations in the module. Doing so makes it clear which subcomponent instantiations in the gene are being described by which component instantiations in the module. In this way, GDA tools for sequence editing and biochemical modeling can guarantee that their users are handling corresponding elements of a given genetic design, while GDA tools for genetic technology mapping can make explicit connections between the structural and functional elements of a design. + +\begin{figure}[ht] +\begin{center} +\includegraphics[width=\textwidth]{uml/example_component_mapping} +\caption[]{Example of mapping between the structural and functional components of a LacI inverter.} +\label{uml:ex_comp_mapping} +\end{center} +\end{figure} % ----------------------------------------------------------------------------- @@ -1146,182 +1182,160 @@ \section{Examples of Serialization} \lstsetsbol \begin{lstlisting} - + - 2015-02-26 14:26:55.692 - BBa_R0040 - TetR repressible promoter + BBa_R0040 + TetR repressible promoter - 2015-02-26 14:26:55.692 - BBa_C0062 - luxR coding sequence + BBa_C0062 + luxR coding sequence - 2015-02-26 14:26:55.692 - BBa_B0015 - Double terminator + BBa_B0015 + Double terminator - 2015-02-26 14:26:55.693 - BBa_R0062 - LuxR inducible promoter + BBa_R0062 + LuxR inducible promoter - 2015-02-26 14:26:55.693 - BBa_F2620 - 3OC6HSL -> PoPS Receiver + BBa_F2620 + 3OC6HSL -> PoPS Receiver - - 2015-02-26 14:26:55.694 + - + - - 2015-02-26 14:26:55.694 + - + - - 2015-02-26 14:26:55.695 + - + - - 2015-02-26 14:26:55.694 + - + - - 2015-02-26 14:26:55.695 + - + - - 2015-02-26 14:26:55.697 + - - 2015-02-26 14:26:55.697 - 901 - 956 + + 56 + 68 + - + - - 2015-02-26 14:26:55.696 + - - 2015-02-26 14:26:55.696 - 69 - 770 + + 771 + 900 + - + - - 2015-02-26 14:26:55.696 + - - 2015-02-26 14:26:55.696 - 56 - 68 + + 1 + 55 + - + - - 2015-02-26 14:26:55.696 + - - 2015-02-26 14:26:55.695 - 1 - 55 + + 69 + 770 + - + - - 2015-02-26 14:26:55.697 + - - 2015-02-26 14:26:55.697 - 771 - 900 + + 901 + 956 + - + - 2015-02-26 14:26:55.692 - BBa_B0034 - RBS based on Elowitz repressilator + BBa_B0034 + RBS based on Elowitz repressilator - 2015-02-26 14:26:55.69 ccaggcatcaaataaaacgaaaggctcagtcgaaagactgggcctttcgttttatctgttgtttgtcggtgaacgctctctactagagtcacactggctcaccttcgggtgggcctttctgcgtttata - 2015-02-26 14:26:55.69 aaagaggagaaa - 2015-02-26 14:26:55.69 atgcttatctgatatgactaaaatggtacattgtgaatattatttactcgcgatcatttatcctcattctatggttaaatctgatatttcaatcctagataattaccctaaaaaatggaggcaatattatgatgacgctaatttaataaaatatgatcctatagtagattattctaactccaatcattcaccaattaattggaatatatttgaaaacaatgctgtaaataaaaaatctccaaatgtaattaaagaagcgaaaacatcaggtcttatcactgggtttagtttccctattcatacggctaacaatggcttcggaatgcttagttttgcacattcagaaaaagacaactatatagatagtttatttttacatgcgtgtatgaacataccattaattgttccttctctagttgataattatcgaaaaataaatatagcaaataataaatcaaacaacgatttaaccaaaagagaaaaagaatgtttagcgtgggcatgcgaaggaaaaagctcttgggatatttcaaaaatattaggttgcagtgagcgtactgtcactttccatttaaccaatgcgcaaatgaaactcaatacaacaaaccgctgccaaagtatttctaaagcaattttaacaggagcaattgattgcccatactttaaaaattaataacactgatagtgctagtgtagatcac - 2015-02-26 14:26:55.689 - 2015-02-26 14:26:55.691 acctgtaggatcgtacaggtttacgcaagaaaatggtttgttatagtcgaataaa - 2015-02-26 14:26:55.69 tccctatcagtgatagagattgacatccctatcagtgatagagatactgagcac @@ -1332,7 +1346,32 @@ \section{Examples of Serialization} \section{Best Practices} \label{sec:bestpractices} % ----------------------------------------------------------------------------- -Currently, if a developer wishes to change a SBOL object that has been published to the Web, then as a best practice they should create a copy of the SBOL object that incorporates the change, but has a new URI. This practice, however, does not inherently involve a standardized declaration that the second object is a version of the first. Consequently, the ``persistentIdentity'', ``version'', and ``timeStamp'' data fields have been created to provide developers with the means to declare that a set of SBOL objects are versions of each other (by virtue of having the same persistent URI) and label these objects with version Strings and times of creation. +\subsection{Versioning} +Currently, if a developer wishes to change a SBOL object that has been published to the Web, then as a best practice they should create a copy of the SBOL object that incorporates the change, but has a new URI. This practice, however, does not inherently involve a standardized declaration that the second object is a version of the first. Consequently, the \sbol{persistentIdentity}, and \sbol{version} data fields have been created to provide developers with the means to declare that a set of SBOL objects are versions of each other (by virtue of having the same persistent URI) and label these objects with version Strings. + +\subsection{Using External Terms} +External ontologies and controlled vocabularies are integral part of SBOL. Through these resources SBOL utilises existing biological information where possible. New SBOL specific terms are defined only when necessary. Instead, SBOL provides placeholders that can point to external terms. For example, the types of components whether they are DNA or protein based are indicated using BioPAX. Similarly, the functionality of a DNA component is determined via the SO terms. Although preferred ontologies have been explained in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found at \ref{tbl:preferred_external_resources}. + + +\begin{table}[ht] + \begin{edtable}{tabular}{p{3cm}p{3cm}p{4cm}} + \toprule + \textbf{SBOL Entity} & \textbf{Property} & \textbf{Preferred External Resource}\\ + \midrule + \textbf{ComponentDefinition} & type & BioPAX \\ + & role & SO (if type is \textit{DNA} or \textit{RNA}) \\ + & role & CHEBI (if type is \textit{small molecule}) \\ + & role & UniProt (if type is \textit{protein}??) \\%TODO What is the external resource for proteins, diccuss it. + \textbf{Interaction} & type & SBO \\ + \textbf{Participation} & type & SBO \\ + \textbf{Model} & language & EDAM \\ + & framework & SBO \\ + \bottomrule + \end{edtable} + \caption{SBOL properties and preferred external resources to choose values from.} + \label{tbl:preferred_external_resources} +\end{table} + %TODO: Annotations: Annotating with created and modified dates, and how to add them. diff --git a/uml/component_definition.png b/uml/component_definition.png index 1bfd5645cadd289ad7a0e14cc5ed9235ac9bfde2..9ff93aa47874fcb58c78d2e679da6de6860d921f 100644 GIT binary patch literal 14228 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 aj2r6J*Dl0<9T=g=>r!HJq6M$@KmIQUIw2GQ literal 14483 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 literal 11446 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 diff --git a/uml/example_annotated_gene.png b/uml/example_annotated_gene.png deleted file mode 100644 index d15d611835db21927a84d1880505c571bb7c7a32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49048 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

A53-oW}yAe0)w=b>}g57Nnl8Gf6B) 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

D2Oag=qw;1FRG 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 diff --git a/uml/example_component_definition_composition.png b/uml/example_component_definition_composition.png new file mode 100644 index 0000000000000000000000000000000000000000..d660397364d6c761e4e0d3c62302e498a21672a8 GIT binary patch literal 48585 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

Zo+PZVK@#+_R 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 literal 0 HcmV?d00001 diff --git a/uml/example_component_definitions.png b/uml/example_component_definitions.png new file mode 100644 index 0000000000000000000000000000000000000000..88df9db692eed87e16a70c032a1110e257e9a1ce GIT binary patch literal 29269 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

~+aWl`OGC{%0OxgZ`A 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 literal 0 HcmV?d00001 diff --git a/uml/example_component_mapping.png b/uml/example_component_mapping.png new file mode 100644 index 0000000000000000000000000000000000000000..4d9c21ab2487c742d4abdf41426c5e678b85e9a3 GIT binary patch literal 53539 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 literal 0 HcmV?d00001 diff --git a/uml/example_laci_inverter.png b/uml/example_laci_inverter.png deleted file mode 100644 index 534e2d58d295b04b0fe820cfaec03ad29f43468b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58749 zcmb@u2UL?;*EWng>WFnj1f@BHiZl_C-s~t!QK}S!p!8m)B{o!0Kt%$Crc?n51_%&Z zL@7!r(t9_AUJ`mJ|4v|>dEV#!*ZS7CK9*~73ncfs&)MbL*S>cAHPuyivmRz;VPV;Q z^~%MYEG%13v#@M&{CzY0B*c01Z5EaXELSg{)4tz6)`hy5I2pILCOxk1eJeBjn3aJ4 z>(^~&7f)Y)bLEZr{^;zG*G}c%#>6cyo_2mIUZ`>U^8W8v>VwqZB=AJLo<1GdaJ3-% zr|TQ{)AFYWqhBZ1juxDB@tvG6n((epwL)swR`3y8@K}0r2EDl1H+{5eX|_QeR>8uu zppNW6z`QyuvYqk$f&L!mf1i_?-}aF z8!y>-hmDu8Y`nw&{Y(Czt@Ho%(awG>;bA$s>9RNDIX?$;kz{wUa1Jpy$|Q%CWtS^s zA0E8u4?`gDtp6W2;=yFdchnlaXKh#mwFKX4Y}r|GQ6bD%Ei@na#;52tQ_!<=(p|

KeCZrnviZ>(Uo_(1CC; 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 Q5TiJ#q_&@`c=Gc90C}%(hX4Qo literal 0 HcmV?d00001 diff --git a/uml/example_module_definition_composition.png b/uml/example_module_definition_composition.png new file mode 100644 index 0000000000000000000000000000000000000000..264624aec100ab561291694165af3554e1e08456 GIT binary patch literal 60867 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 diff --git a/uml/module.png b/uml/module.png index 687622e86ea9d48ca95ecbdac41e22ec4af9172b..90028f2f15950a150707465c8a1934d6147481b9 100644 GIT binary patch literal 6509 zcmbVxcUV))yER3?21-XG7SMwf6)6Eky7VSpK)ON#L`0-_l_D4r=^(umX%af2NRuX^ zL#P^xAfXo_1n$Ih&b`0;e1Cl3^ZgOnnLT^Y%scO_^{$n-54Du(PhUJuK|w*Us`5aW zf`W<(Tz@@D1^x;>O$()1cS}=K9;R z4^d}TlVi(X8rgPSjC$G86?)y~N$c0I&U5eIMZM(i)=p4t&u=ULDAYf0|OJ0g-}ogK*59% z;DZAnG`I(Q{nx)&)D#q0S_+DE`hUCrUmvn)_|^1QR+}14$*v3$p+cU8Q3qT=D$&Y9 zn%*gKQ>W8gDrH4cVrd1lD9QH{`U8|`(Ud)~zq`&}w-rh2TU=FFQB&*c>+|27>)by$ zfIuKEEiD`IB?Sfj@hJ%jvJfz5#Pyy&nd48(PoF+TB9X4HuDrawCM&;wN#2?9wYTRJ z7B0tNq>lLDa5&T4w{HwMurwIAmEZ60bOvdusg;U^*A90jB_~)D($e+_<)x+P4c(oc z``7jyhBr4q&%XojjEFF~$8wstXt^?f8)a0&a^WmJJq=YLfq>}VHe@d^FYnT!jD4Ai z$K!FEtE;Qs@pmxuiwg^U{QNtC6F8iqp<$*$)tacdcz#8*<-_^#urRI9Jb>*$|@sPTU*=0 z)O4_LU_f{8LU2e3x8Z12wd=1q{#|^e%(B5VGB7@^lmNgxo^^!4>& z%6@RTsx&sU?UIy~6qLr{AT=>jr?$HKcUw5S+R*6egj)UOREg25FiQBQG#seJ=`&3P^e>wS+tYAec`}r=tDidXto;^Vxx5iYWek4 zXP(vyFW1!6n4n)PLi1$&4#yZYczw4PG}$Ll8jL1)(SK-dmFCkkGb^IPU@&U@)n%KC zii##@gXFa!?yHk;b183OY$yZWN9#~1bqNClgN4Y$L!T@c+f2Qu4P*PS(GtX$-mb3C z1}GHDB*)XZZohK59SNyaD|d5o+3M<2^YW^d)U>`PZ)TR_{<-oc0#PK{^(6k7kF9@~ zkRKnr|9c}#GVhiQJT^r>?c+y%6Vvr1jpQ)HDXoC`*jVERMIQ5T^4bERKiXc=_E+~2 zCaMTeKDSY3W@kSL*VNQhP*8AdHc(a$Df+y1iAl-90hK~q#XS0DZ4bm$TtdQl|3kqgp0o6FWOQyro#$oW!;^MZK6aUiEq7Z9Bh4E5^phYwGJSmDOI# z#kNWpzT(4F3^X1c@c)x$A{Z~HZFN=Eg5u)KSFX6zp!@v5j`3fmhq<|-Y;A1?PM%LH zAzbeu5%+H8WoF7J>wc-Uy%wZ7;^5$*#?Hbr<`xznJ|)3~NvRW3gBV$6Xh`->W3iU= zn7naCQ`6*FqbA0(gXyDj50?Zk9!W#nJUb9`uzZUXK{QEG+^J_z2Faf`u9x`r>z9?p z+s&mxp1Nx2(IyCf8ES21tOahHzY z(ehA8(PL?wmMpbd(L63>j1_;g)_81=!}4oV0u*ET4&r9vyE8mCmS7&6D+l1V=~_m+ zwhSrzjrl2Y^4ISf?LU5G4tU*|CBwCI&_!BGI`E!Q{vpAWoBjFc0L23u*T1)fh#&JmyaB%r0I_s$G0i{NeUIAzrg!OC za)*3C0%-EY0PN$)?jIhXpm&ycqC`_R`AN~!07@8tA4~-(!BItl z62uvrodE_EgbX|c<0a6;Z(am2Nl|`{+;tXhr{JE|GBEIA{-v9niI$m}+2O=&qZ3G;c{(zGLPK3$T}|!t1%Erc#jaTXrKKe+hOx=XOBXI| z?E93MV>S)b($b6;wzpprTBPxqfW7yi_@K; zqRas~T~sf?WqO^5C;4nrQj&nbhlltz#P;^~qn&e|{cz?&2wsS#tm^u1GV zA6ihz=4QE^k6u~)NLSXge7wwLs1ZWB*C%R@?n9QyfDsj0>Jipd6k=H{u>XTY`u9DiuJy68u^5u~0?DuOUTM|b{uTIuv`5+ll`Fwl@ z&6&m05)$x0ML)j=X#STO-@TOD?F?L~IG43kh_t6|@(->mJSazoi4~DH;aU*fgl+?| zC3AY(e8)^3)igVsZbT6mcllG(Yr1noYZ#hIIllM;LHSdA$IOMvDJh%?y=`^c^-h=q zbJeYd`T5xRc+-PvjJK$$DD>vQzyLU+^B_y>{8o$akEry|HB|XC2D+6B2(z4qpPAN^ zrmJ8?JZPO}@MS`Lq@t##)(tX!Nmp>4Hs~VvaZ51@5Vp-(#3ONQS62Sk5hV+Yv^`%@ zrjREut7ks?qio3q|xzLe-!|AQqS-ylFs)18sm4sz($8;?nA3kzg$ydkX&DaIE> zJDhw2w{dqT^To(@b5I^ySd^d#gC`=oVEqw#y?uQ%81K<%p8fS#BypiouoXOhc0NQx zRU>J4B7>li_5c!s-y?#}oca;XqwVy@w$vxeP_$$}M|{@}jF?(S}v2@7*`!-j>) zEfl@4M=!VkF>z+6u>ZEF&(5$>*?jYP(jlee7Zok75rI$E7XG9indAMwbBi=k}pbcgv?u=RxLJ9q7XM8&nqz)mpMgxf%8q)WU zdB3?fS)=#(@g;=bq6&vvh~nkDb6{>CDKGtX_Kxy<<@-3SU}sMcI)!8@m=GPE6@g#{ z`o&DUvfLSn7@Vn42dupC_vU;z$KQck9GjN|;c>nzDjJ)Tk`fhlODS>ZU|TGcp(f9NUrfSI$&`7~ab zJ5quA<8L;yFT-24|Am0KArT|_*6Rv&w6M1GcG@!lL`$IM(tG!>lU zPP)%Bmx26Ew;pot3KMHPd#o~AaDMW8Y{d%OobJE$KhctWxUOyXj33-uIDioRN`{agqpQ0&`}yrPOP}ezn`td0uT}wpiRfS~5IgFTiAhp&vO^-^C$|K3s%k${?ThRy7&R5EVDWt9+qb8fV|9#; zJ<%;IFlxld&-cZvoCQ+UTpnj`%5rR+#B=l^TK!^3o0~5HZ7z7xu({dz0Bv^WCLkBl zwkk9_!EyI!@1|;9whL&kt;J0RU(kV=nwlO^d{+1OZ=_8j&9C;d2p2huG#=zORj456XGJW#(arV8t2#@&-6d|FzGHAq;oXOrTI+OT6)R#T1+6cQHs+5hOUW&o(b=;&xShL)q& zucv{W+9&zxeFLl!a|}RSvPeo=T3SdbGfiArcn~rc1Xn-})pzyZ;j&@)kt6BE0k z9{m6)z57=FMMXxu&8a_ZP?J)Tr)O7$_$1LeBjL{PyZjj4%R?73OZ9%j@b4m?6CoeE zKOv)+;zfpxW$T&%%RbZbl?KqU>&ZZnZ1mpKDzRJt9?LU0M3z48UnDymSD6jX3A`28 zUqWHt-jXb*eZMUkpq)=oF(A^B-PniHX?;>kaHr!ExovpgT6wcJsvre=TSHHra)q6poeJl4`-kE)cwx%u z=JPojT)=5bk6b(=jx27?FD?!aZQsK&A_O16^YdBQ*=Oq9ot%zkhJjUbPg3%hzrB5z z*)CplaEM%mDs1bD4FM-ZPEHP#$}e8L0Ge1*-at59D;DO(F z$czUBtPKor3A{A4v!{;WMz7e62Q@orB=v^OInaO7s1%G z>j5qB*AJ?sLD6r*ZA5(_>)7Z-TT;=bcSEmCM{&{?Z_R;`t1}zvlRBZPB zzt8ymUYGl$Fu^SIV*^8ms3~wNDiHK+5aGgMH5e=43OiXR(Sz9laq_RM16mJDE8M+U zR$dN@I^drn$@hE;65FP3m!i>6Bmh6f=@}WZAG;|jE8`0?g+QW}bw9><4f_`I8x^y# zu}ORHu3*otgUS4v^CgyOksMO0i|Zo#*r^l2+org4*R3E^-T^iG4k80oMtW$wSW2Ys*sK< z5cqn6i0Zb^PF3Rj1IK>*-kzSAn3(*8O#*T|0$6!*9$O2@<>f6R=?Ji9$?~Unr-7nE z)xMC=c<*lTZtb#7Hwe@1&rl&DAzFT2M&0OclQtMm-PFQl?1@50{G+!ey@}9D> zv3a4!Y;Q@4h-A0bxvvGoTTIP@fZxPzuK<#rzvD}2XvKEaW7{zZua1d{7wN#&lwYde zd+)ZuwvOZX!fwiGgZ>8Zm0MXLaPE@6^m>3V7ms68$ed$D0G8e^#L-qd>_*5og zHUmz7T|q%7(Z9C1ry15_s7PEb_Co(NCdZX4MnC$ql#_g(QW2~r|3_%r>S|^sJ<+61 zx_#?^=}h!Qaoh0lFb8g(NV;op+*(>$$(DP<{lld1*Y@`IQX%z6WU?Uzol#0o7!GgCyDJD6`8GYXwRIg9D`mC~-%v z6%<~-vt}=p_C3&#_AoSz8vtHuQf~!g3DnWR$S59^u{}Na^O2T<`RQ^(*vl9w>JV@s zW^~%(PE%|g3vJD>*ET~38i={Mxv{rlH8m1dd^mTI*#XeqmF?gh46d{jH`SBDk(rm* zv1w;(>sUFwA|WU^TO@SoyIs8uO@6Y!5Z{6A9eH-pO_50m(?sCpO_YdZK-sO4M=ks|!&l{?(r2=JOXMjK;P&HM>yATNVDe&ET zj2iqGu}pmdft(9aQ@o|?PFPCzQ_LDYXc0^n7FVm_=1#u+^m4*$=C-qHk2u;?gEL=q z&-BQMJmKJuAytZSwVgdDEb`w*VY8_VDzVJY>D8fhYkXH2Zcc7U=WBu0u-RZAK@MS zzhB@NM+JePX#Q>be|4%KTE6MX)zc3_*EjXjMaps05FqBt8PQZdbV3=ut-w-zFX}Nc z`W5x3&Pw!MG!+_hgZ*z)iO_SMKh~=DPQ}E;tgfx4%KCWL`X21=?yjsj?$6oU*sNRd zUb)gk_YNutqhDL=M&^4O8X8(ySeTfYsH=yu?(Ob&bvUFZCbob5YUkh(Ri|!blz617 zrX~^rmPSyGhl$(2-(6qF@!N1d2p<_4DXJeEd+QLjv$OM}`uOqVzIA5#v9Yn&pV-;i zxws7UO*!7T)~is;GOP0~Y&A!ruAV$*hejJ_S5(I*BxRLY)_BhG zBc-H_4GnVz$G&|l|MZEYu$o--`SYzpXplVIOjp+>Ch~+oV)7YE!D~#-3#E)nFeo-1 zq!Skx$L5}F+;fQ}k?ai$va*`y^24$>A|s($YpbgT_5C?_%C>*@a%YM4@+GIH`YjQ} zeBSnj*{Q3mUoX7vb2@akD_P3ulha(-0X$ep=BioK$B!Qwjvp`d_VnCcSjf}I#>Q4J z3rS0Ro4b<3Mk^ffkB|r383*uYc^Ei!^yRMu18)}KlPgw)r*O%4H8m!oVPOnQt%3pq z?MIDp@fkTeE!pOp6Q9ks=clKq;{?s%I%Z}LqdM~8VN7qnk?J((IAy)vw@AsIlijJv zA-EF4DmR3Q6aIVhGmYlDlYigV@mLTz+sP%_;D*@Q09gT?2!BIR}U0J_h>&ZylXz)`qE) z{^oJKn}u#%KF$V>?&NDqNH~Y1Lecanf4MI=Ile(!Sh%aDr-$9)Mj|H)`xXn{Mn^L% z(W%eQ&MMk<7HQu-GP6F@6+L|Jm{j*e&a^speI9V$T%zeJU9DHg;Y6 zu4$ZQh_9;h@bHk7kr_|E^5JA!QBjwap>cJ2`M2|yA3OZcgroK_10C(&yX$Sq{jsUI zcCEBKT3YZzes|4mO{IK$-ujOA_UjYrr;C;Tddu%ew*paPGvKCRL`J3|I(P4;H)UsM zr=?xOPv&K0H0Y0bFw$p~l?`eIj)vM!ZSAE>d&InbTj1T+5X55tvFqzsUEzLzlLK2` z{>2&KkSzC6fqh@Ue0g@QomPg}zc{_S@ylp&aq)qX(an--j_jVs+Pr6QA6#GE!7d*G zI6R8`p=gb#!@7o=T5eI%1x`*kT3om9uW$T(7ojK&CjZ&zceGUUYh}r^?kkf4bGo{^ zsC(+e->zqtw0XL^>dilUMm?(a^yvpFmGmfQ17+(OhU;&vb4Fn7>;<2;MDZwF+tO7A z3C4n2yc>eZk=@$%5<4>g_h_39ZaoaJnx(lz_q^d@&~@V5va+%lZxwg;cS=nj!2EWw zSnTj%MMcHN=`JU3ns?Aj2?B)u90jqcB2Q2d%U_ueM^zu8OsV|uX!fV>zoOYcNcYlD zIqtiOvwF<=%0d`RKWQdr@$SU@Lua29*#eNYX$-|_E(UP zO!eJWqbKuBQh+%mgdHH0`Y%DMqYwh*1>bp(4Phjz8@OJiEQ2}ki%wH0UPxsPQQKTk?}1VZH(VJ%3wNW zR1~yFQ&<559!&bpA)H3H2!2yb_QUx^b(ZTAK^dpDwtXh zR&S@OKm~Rdk(ma@6N2?=i&BH}trRFt>#e(kNy;HjO-dc}i;K9o)z#J86*q3)WWRF; ztEQ=`M44Jw4Ptk1k3T0potiRpIhamG0)X*1Zyw(`*xcO2@)`8?_j7ZUeE1+NA~LXTG&I6a?C*s`%PqC91FQE`L!$0cCF>KjdH-bp_{&zNa zlJ-{TGqpd4kT_ z$?5A68X6iRyrH4t<1?q(sPgi1n&QkpUaKchMy)Kl=feQ>H#hy*S^J@361~xW%Gc_cxiWv}ih(d5f4&hob!qnYbFLNCb0C*N=>6tq^ z_V7V8G??@!ry4@o>50^&i`b3<6802n=X73Da`Jify>$(`6?&Ayo^W}5T%3Wasr@|I zzM+AE;TNhJ8png=V<(72(#jMn&0+hW#l*i{T*O;{TAxJp6MX4)g$jN;<%y()H^ zO`!-HaaWSjMilbE{6)$>ZTkV@GPdiuJE5bJTD8NL%#+Z1`oM$A4*FpF}N*B01nS9E;b-oH=tE4aT1b}=cFdAE&Py&8$)I_ zGxA<`+0f&Pq;dQc@t#&rdL@`sv)hEv)~G|>d4lY^8t$otZyi!xe28DxXLo=ubU*FY z*qp6fTXMTBD|*|z_R}Zn3UXE!&zxR`Ts-lBuw-YD|mcN8VIY$<|n+_!F{Jqd^pLvVCxOiWF^qpnUMa4Y+sKr2Rs z6N#q%!R3=Lf3|ZD6`5$PzfEOd_#Ak2!gmjC=h4I4+dS2Jl>G$25cT4Mg7+PSiyyor zp?ulN7o{Y;MA2iPJnqrR?L82<*B~e+HfYL|xeq9Wm5ohhbU^Y{a36ED$_Wo4#k$83 zm17MW>8mePVC>ug)yktd8G@XgoCfj>A6Zyr{A$L8abduOPEVWoBZ_D|=HG=eVx?_>!{Gs2525#*3U#y3Y5)=@MP!9p*uM7iTW0Jk%G^%=!@GEI%?Bf!Qhw9ujzy{u*c~RM^lH!`j_= z-{Q>lI(~kBv%VDJ*;}cKF#31r699;lcUoNgixIw)H7)E~E!$u5H+Uix=02a)bb+*7 zix3QzW{m8r5foUrxtOxA(A)LeD}0(nocURkb5rz1Y+M`@M@|b*lwdMn)V$ti$Rmdf zqfz6~K*Xf?aqdKEmf5t(?V~F#QJkmGG!MO2!3oXv>?Zv@F9E+%1_oSbMmzI{IW*)p;>8Kwb9*$0GyHIe7UT*Nq7Rd$G6VU-oDF;g$H1rYHWbaClv_{ka@ME>3Ucb%WV zv$M18c90<^UW2;Qmt5_X$w|h(;yUrc40ihT=_~Mzj~`c2AtSwX1PMzINBf!kH?iL< z73TtkrkR_CQ$}Bq;d@zGSwNHGfny=kw`NW zlOCmWm(;%elf-lzDSg>r9UHNoDyj63XaCcWez{ z+~AOq<%zoDopDq886Th7&CT-FjqdSrd`kbb6G}ocVR#RoL=XW{GOc80}x$5j}6u3 zRaV{))yRT6JpX(nSL-&+)PrLuLD%dBCKbpJQTkx{OG|7mwU70k&3t`p!}Rp^iJv^y z9@nPHyoQ$xy)=OJnpz%CHyzK)&&vaZyTlPJ)7Z)ohsExYeeZQOgfO{nr7WRx%34}l zRFsw11%cRFr^7H4df;NkPV1b}9~c-I-uP}Vo+C*7;(nm>(93IYZXg(z#oHs;+uWN- zc8`XyZ;aiu2H}>et}Y9{9V9ru%XZqb72mnA3*Q5YgtorRI>yF)cZM^{HVo8DDz=B= zZfqsg68MOAMs)7RBaY0EhcEDkiq1NX*IaNWP9xi`^o#j_K01vdb9xa#u?G? zB0GAtWmCIr9Vn`K6Pleplm@Lnk5*FX9T24@{Hb8+89)Wv zs~Goc%YnAl9>!PIBfMoJVP%>@6-#}p?NV`DlZ>yeG zv^Y$jjxAA# zhlj`ZkBnGLy1Kglc6j3ABANn+zfMeK$A1MJK3-AnG^hUX;ndoXZYDA{Ai$4dyRaWe zJvzJ(_IG+SROo%~fNhO4f&uvydrwE_DJxE=qGf5c;&n_6ZhL*cf4I!X#zwawBg4YZ z?shnc?ZGwukni5X!ouPXL!>N#sR-mE`uh4r#YQ9QYHAA4@2{_~A3F*Xe-RN8AnF(@ zHuK8w?(Dqg?CE(^9%l45KE7l<=T0ha8w4_BLOkG`4Y`XYwY3-0pcNqGu{OIq!EaP( zE_5HHRvxuiF!k}ijEXXz26M{GUtZqY1B$68uT%v73S?Cl+UY|YhqN#fB$FUqolI+o}O2%%j0;q zG^m5?nUsVCNo`m<04PaTWsdtAW^I|Fo-dp5&Wj``(fv-|h8v-QhxxaabhEN#>W8w+LD zjVtVVGNGL%>TGAuSW5x^jEU{*#Xa33narW2dTpvu3YJ`7*pvDugHp_P!#WpH=@#L|qCLonKC-&NgeeklaNRNy4 z4p3_J)|8xMUKA;997B<>5D0|w8)kKPxfeasYPR7Gc&X2h{eaD#%I!?9WFzkY(P45XD#4pu9cM)?)_O+`*59KwkU3bg9;2d zIA&=*czb0k&;TYSB?U6hMs_IFE1gC8!6)4*)~CAL+wWF`+-qso|E7OMRp|&BL;uKM z0(p(LvM=V#MK>SE2qUxik#FB}Na+YmN&TX1#UCdtN+y=z3}6UDe3B%K0=U`teTB~A zM)XU6)Yto0w6Cm`BtMQt0;R|JDMmdtJ~DLx8jkoXyxZ{?CRmoFvNAC@HQRlT!f$D#>qOa8 z-44iulmM`iUr;n!=}%U=X#pPWJ5vE@AW&WvDANRae1IeXE&v>t_T1S1K@I8-swhtp z{{jfxU6^CQLw88MuW~w0sVar^myCxhl%aXulj?Px3{?7@W1#i-pcshO7>wD+kcum6%og0=kvZ%n$^> zE#kJYS#K%jm~3AY1srkXjjS@7bQ*0_N_kUgoVwyVCDFLxX!r{v)FUXCVyG#?{9djL zcJJ6&N-WS~Bdle$gWa^oe04Nl)u~hX!>DAMFley%&5o$ZLvu9&bX2! z?#|n<{~C34d~B5A)jcpEASjseGAliO{%~h;BeNqx$XYTfDJdm*X?eNFOZ%)fiY+$H z?C#yW`O+pP$qQZw8xx56W{iL}zwai55`qW!!$LIO-QCsawq}}xF&Mf{mzuszHO}+t z#y}-y()jpz4h{~b0>cVBGqVO(MHLmDg}FJb+rp7cOXyt~&SWn>Dk?3W-M248rIQ;L z6&II@+MKAqiK}VH791WP5>-XvQ$QH8@rugIBthaUD=X1jy1IhG!om+8Fd8o9%s~C` zD?PKY;QXZF9;IY$ox{4kv7uX4SopwlK_QG@=PZI*;o1Ed?W14QjcrpU7Gb?K&?I38 zIO>X(vR{Q??*q#<6h5Au%y7Hq(kCvC0IrZ|rj&^Zs?oqn! z2Ngh|;C?SRIoErH?dMEywhZPQtvaru{L0JAxeUu+ZbAkI2Qk{wu|d&wFQ)z67Th)` zbuunTEqsj~=<7>M2E$tnT@`RT-=?OfK3e`3avKOGlZ+#AYicr2{YmdUyQW4coaR_m zR5bgQV&pA)`to2;y#nL1B{nIkDen1YYg5yd-ie8c$#`qzbGwPEfjTR)4W=t30mQ__ z+JB9e+w#R$xO8j(Gb##*9I~y|lR?^b(n)8aQBo6`HzA zCY83_T}I#GT)Nx0(~D|q#5vZ_PLIo}JYi}gmo8nB2_}O{2@7XE&QtW;xDa?k)K%#F zXp|p)h?b>UIR!YSy}doHsi{324)@Sv_?EsWRccxqv-7LGW_?Udh*NRPPE}QvpI^zR zmX5~Qia?J2wUIaBKs%wf=(#sD^vhq3SV|UW=B}on8_Ev`m>Q|$T@BwJhL>)|es=<5NstEvC+^4IsoAB5h&=V6C z-No^XUA|~TzAW`Tuw&U(48MHQfls{H_ssyC3=jAhp-QHg7=DonQg?i0xdonQW1(IDz`v3eDJpZ@#|KY2j|7IOiXG$yqBXox7CmudH ztNKf16nOB|zds0$#QwDY^YNdDhN+KLRbAcO)E+;6@#^AIjeQrdwvdvN>Z^Kt*UoF} z>dH$c@9*zhvTDQwWjyCap-^^tnp#>UBqUwQQc| z`*^X%uQh}~q*@)@+S+Dh5HWqx08p^lrPYxVi_^^PtSt2+AkA*h&P%K1wqvdvn8bR|sAw2-$nEZLY8D zEQH(^@C^yw4$2RyZ&_GrgX_)f# zi&9HVokxnFA7%f7i_q8#S0lJG*q{E0{oRq>b3oaJ+ z?BN>som@1w&Ttv1g|(#H#&`r-OehpTCOBN1m7R*u&@z~nmGuHvcL6H< zp{eMYM${t8CsgQBoqzD>J$z+tO?zgpHELyW{+9ohPHrwPE+su39Rv5ho|R7n-U;UY zl!iXm)~mT_=Y@9Kgc@%;f4U=peJjk^g$46u-2FD%+qX#~LptUQBkK&LA#~w zYhi8Op5N=BWdb7lRs-R>ia4#Fc)U%#3_x3nLHNZNmDEaE5t&1ogK%@IUVvolym|qF zt3w5W)RA&hNOYIBB;0WjWo?}h6MoOub7@Y-N&Z5Q%%~zE>FMbk4q^r2Yx$Z62JtZr zckc8LjgOB5E5KgleeC+f-o}O$5;+m=D0PLXm3Ja)FtTlDv5V_26#MZby|>OdtM$=i z0S0(b>G~h}6(?@BV}4gxCs`0~T=TNXbsg!Qm!BV-v$nP5wAiUg4#w54%FkE**!{Q$ zUYx9&BuY(q+0oGv?$6K9kCj%yXi%k&z@&J1)P7)&rk_qhKEj0#w5z(bc{s2F)`P>> zQ^edhDwFToiv5xHFnIA8B6gp+mH+2eHjWJur-k?PZf`N!z>uDvxUxIk}ermwx?(u715kqn|5w)XbP7$0u~Mv6kpZQ%ZNbaVi0-;Z^E zbTko@h+9sWYg^mcaOF~2+{UDMQob^`+##|;0gDvJV?u^W=uEP`RWGqhO@4Z}NrY(h z@x3wvdp?7o3(_4jh~O|-ZK#U7`{z+b@Fy?-t>|fspv`b0IQ8ggs_JWu;HcA+vvYF5 zgd6l^x~LU!YpTwDn8{3{+iT}fgUHY3H^*)T2^PR`ZAJVV{T)jm%)#;1LQVYdQUYsMlBqkf+Tf%dxS#^iV@zC}9ujG_+!#o%r>)KIaIj$% z<6xhLD=09j^>6{s7bdmy8W*1j)AE|;jVir(0e=3hX%&^Js;<`7qIQ5ATpm3y3=qA%=YXU2-jS;rR$Zy}|1)xIj%Hpf4MD5Lo5$rZ+>B@1=X2bgu z`?4dye*HQ)W=YxM66IZ zBE!7qQqeV{@x~ETmHImorH5ww3sZ^1Uy7^BG4j-+lV8Cr1@2{7b3Rwm1 zI4k{L>PgGZ&AoJuj9n&AWy5YB9M)#-!N;KW$y!4ruM_?#MBbM%uLZ2gcljLMyrbPd zHQYKOha#Ga@bdQd_BfQBL9)~|%zX6Wy z@4M#7`})>bkEdjONJ?72`;d>#Yo|jf+4t-)!M+Yr#$$-?!&~oR*=(DKyOp6>DG~2%1gpV`=&w@s|&zq7>91K)XwT6afTMP-2KlTTh=-u2pOH{jF()z8|q zvb%ES%09z2xP(7xN|cOul@#j-Hfp)F^vb-lsHmtO()$DPE{P9 zdErP$xDu6lPHG|2P-i@3pw&NdqzDyhlV1aCXe9mII3XW-f{ z6TF_BoW#9o+KDOlUkpzlJ*>}a;KTyIw)&hZSpyLi zvN2Jespb~U9T^UT!Qfr;PbqqV4^n32>J&`K!E_JWEFTn3#nz#N#*o>5`l zobQL5#H5lAs99417soZ;-`{^yu|^7YwlVz(jShz_-)eCsSA=2KbzE*}dV8O0qo{!BtO|_QhhfG%5s-jW zT76(tY;E%-es8StN=oJvWU~S5Ji6Z2uLf{~j*d<eLP*9jlMH`DpeR8OOu|Hot;~A0wu>S8`XIk z9E#=@c_k%&R_sg^c`9Y##L3M)IMmal0jBnmUV7Rh+48a{S!$mlkShD$IhW{*pVFfT z&Mq$T;Wn2V$%ZzUmfjx9Q3ta?_wH{brN}!umF(;2KUK^c85tSn3g(3Ra&dhKGT+lv zBN^oP(&n##7aJ<@23~j|iq!Hbdx@Ubct^kO+Jo@@&8dP?m~p_hYSPefir#Z>_L$h% zY-_DDG1s*Z=MTxe&xBP==L%A9agP{OK)~*+>OYuh7wN-$nMin*Y;D&AuHU}rukNaw z!*12%PnDe>=d0DIEErOFU%&5zhMW^8l%@2>_^hij(}+=eaWOAvK{(RH$;s&=5=OiF z&kG3(Rw>^1o@pXFR)jgm#Zf}wM?CZM^8*6|qSx=x(Y1AT>4j{Gd^1g!GTzOhF)%PV zg9RBNOaoWdYMX*#sg#jO9OtZx0tdD*YU#^JnU81oF#ya_?#<-TK;yo#&rX?wUq8M< zIy1SK?QU-td$wj!#`>e^_PND;sXIQ0uL(vjt*-76D|*T&vr1tvq6~Wv)SzcaaB+i29BpUdXl3$o$!<$xNhZn4LFS@9TR)h|&%8 zJj2LCX);jvhsWxYE|!#D3oovnyUK<;tJX@~*sv2Ic6vXd?-FHcXQeLqZZsIG0OaIM z!O$?F0+Lm}EIyi4h)#m;9?qgg&^#K}Ktc{6^TDtNVh%xbm)6ddm|e11CCsJLa1~~V z!vH^xqs7V{yJyd!&Wq@dT@+8Nh7*P6+GPU#1LtCwYSGecV@3D(v!=nNWTL@dhh#Z` z(*geBRVIg5#&xJdz7c&iKhKjY=hm?m=Z)M))+u;!40*ZA>{$-K`7`DYwk0BIvhD`{ z>#nS~gTrZNs$})_hTg}mWtA0Dk%g=E{bf;HM2Iq8+T0u}a<-2qzD%&6ijTgme1doQ zPoIV0)YMeqm8hwNr5FIctmU;>39Oj%rkBhZgcs9)LZ~peEpCs*+uVm^1OQBfD+9C- zi1A}$Vm4CI2Z}1mfnm6^@Z4+cntgA#KYRUIiCNR+bnJM`EwGIR?BCmHdT1V;<#;|@ zy;=9vO=FA_LXF|_YZj4aW@ZMKEZJ+j6+Ed19+tnm$)&QS5IMx1r{!-YomZsJ54$e@ zGcqzj;Fo;1n+ayOuiYD5EvUD%PvYR__WAV_Uo2!aG+g-GyDB+~MRwAov8glH?YY*2 zDPI%QZZ)6nsQDjp3b2!Jx9v~1!hD+~`dz`T{uNPFk5kQHp9Uih(xhXtHAgEsJqNPD zl`$OmT?7FmAqwa8^9%mnv@oeN;dsFnhV$PoWA^o@qt*o-D{H@#+$KLeEt2UF0PE=| z_p>KW0W57_0m64CplY_Y>3e=GRDT$9dSJQBo@Hfe`N<3q4o4IcPHP~Mm{T3Q$SaE9 zOwP9B+S}Vl0+blMetjJ>@m1NwyI5LEBlCg1ry>oM_WWq5-e)V=q-N{e?Gnex{cmi^ zUXI86wsJ^qYOq2g8g_BsNC5-}a~8G6Q}^3UH*OO|(|Wo3Tb*K?C%;>y&JMeL&sI&& zk8%p?8q{8eL*8|p2Bg5v*v;+)D74;%(gISWt+SJC!m0(hO^08vF?gLFF8ZFXn$#aI z+)hxs8X4FLoL~DX$#^0ue7MrB+j+<`Se60_B+^HRHj&DHTBG-x;U8&e1hXWZm9Lv@e3Pf{BzA^P z8sRX}$7NDCKGsx!Z(0&f-&TMEDKJw1)UEz?A?ml$OCmmzG}qD;Ob?3&G1oN#8us z;||nL{^FX`vwN=I0K8tW@ZAR_VqdZy?nH{%8SOqU7p(5*yIoHEcaz%QjUEm0Uu!p zC_3wpv9TFlK|w(xPX^&L`?ughT9KQZMNz_td*VvY<@QrPAihfejnef&es-J(a-Nwn z6_ej|=Nq>%6YfSFy6*Q3Ny0f$@!;TK5YT*hdpx!N5KYzW7kA59t>pT}qA}J(`8bC2 zwUVyr4~dC3_Vz=Wr~Jag>{}m@(L9%uBs}-i!X!rlzVGxE`0R0VtW?yW=E}7^Q%2(%PNm^&@gpQcG68*n^FSB%EWTqq{lp zgTot0P|N(PX#O!qAO<}bR8VUx2MnfpZwWID2<{5oF~Pml<_Zvs*^Ly-O-J{xG|gu+ zD}-Xx(@)ndq<(z={<|m4M_XO}(;+q^gNBCYqlnWt&(@88oEA*W$SAKhrf^bl&BnGT zsMXQQsZ6QbbzKvRW$)mG;^6OY3)#tzvL`pk#Kl>sDJdyM`>qWaUB4~(y#U$N9DFnH zm5-*Xj*gCphsOm3^O07cA*Y}Jh()ntV!UQ+18BAD>gtS1dPTm*nfTyT469x92GwtW zOinI{1n%J1`+h(Gq0)DELBN&)x9h!3q-c~m&miHUeTutBx;MMA&=SbtqpzWn5~?2& z^(3|Hf{n=rT>SYoxvzRE@Jp4fBthU1%5NCl4kDz$fPnk;`T3pO6Du5@>NDVUOobF8 z0=s6gG(Wn2{NUu`D%%Ale%ZF}&!%@bVn@2W89Cd98w*zpB%F2@RD>8%-!f~epAC(U zW=CB*c6s(pHfJvM3P7(1kHWDNaxY7r(R1Tz4Wcc23@aXLJcG3`pQGcc^L(7^=49T+ zag3g^!$C5YF?)S=wb+`?gcmCt+dyVcm~Me>&a`epT3Vw5A|xbaGC@%=#xSv(D#IQ2 ze#Z_+9ZqzA2e`IJq7NSYlxpnW(}PcIj2%3wd?C{u5E#fD;|8ztJ+GTlz9J7i%+3~Y za`@FGfbedeASwE&eY&>Lk-$vUDmIYvC=g1$xkK5e_iDRGfq}zeeN@0xvcaYMBANq< zf-3W7eQ;Sy*N9Ng&iy$wfgb0;>T=nEw1o_{4jIWPafjCJTQI0ljP9cgqAxWu#n87y zMJ#1I@Pb&=bl-e*9mKq&a&1Myp0WUhhmDlA5wo+ilN8f{UXz4tuB8fp>5%Pd2fJw` z=Aa-%NabTE@O$Shx<2a6Ot?*zEizB~o}ao+x+_c`oo@O9Rhrj*RB{~>*-LED@8DSh zFHuocEMg;o-^~2Uti;3tEp9(M^XX8J*XZmf%1BRV0ii~W9`-r8TRS_HtHWDOU_ol?y-l0-Lq|C{2+t$qjXl=|{1pH}XyUyWQ?(6%-f#!dUMHE( zMn*|h$GByMZDJA6#1t}db6Qlb#yJ6}m3mNb zQyWmSeWW^?GCF@^QQ3W#% z_GzV63fGvtyuI--{o1u_jdql94+AEHL{8xEQ1muXbPyhj(B7d(xphqGd%rsLl)AsD z)_NZ*cN&z|!BSk?V0HXMqrk}d=r19r3BF@_d;0=j>iw%kiYC-zhDeQ)I^_L3P^eIb z=o+e1lOl3LHiSP?-15b5?KzG4(bt&nApg+Biiz~vJd`2e1E0Of|F*)`7Vh$vQwpc* zb1>odFfah5l7h#sjZyR}6QP=er~xgyeJRgSD=E=>7saNw;$;x3ftXwC?d?r1?QF}d zIeEtOMW|y9urS*L4?C0)7M+Pjtz((M10B>m$ZGEeA#=p9PTI4yw)OO=4L|wri)m#nWo`8_h zL0b%`QYELdXbBl4^7b9OzlrKq%JftNiHy&e{pX~z$LU@$QV@zcPI?Mwm`mwSS>$>W zTsH`mlPS~iRtBDGXH@82v4tu0I;GVf3 zzZl;RSbHs(qNo|bL5|4rZ4tNnh`Ovqi&g?6Or7cCmc%tTarr7GWqRiRcOgYh{&QCY zkHcU>Ohy3ZJ;!=S8-eNn?GM9Ys|Bzw1hDz3yQvFVPOFri6~RIMmO$F?N3L^Z!2mno#8I} zFZ*4xMk^D70dTr?am!gXWY3A_MKlh3Dr+E0RwP{R-JxqjcO(XR+;ZQ2ij7i3Xh8TA zeZEO7$ae;AP_X*H-7SIhNX8&3E^wOL0esDgu}p0?`|(QCWsn4^ z=4XU@3}gK?wkV`Pl8%as>Y2HDMrI}`N~mgEzRRMiq46+Bsu~|y6$qYu^CK^_H|v%S z7YrKHEoyRpQ)z_F+Dv2C%TGj?;AT%}3FMnEsoa`DAe4!-kreNPuAwh)-Gl1SJb=-I zOh5E33Frjqen``mKhFq>X0Cu9a02vY2mG`dd?tLjpDcC7%_Q~g=XmKtKi=FA8+|c~5!Oqdz|J7yT>zivlglt z``z8<9&jWC8e$Y^sSLHe<+*38n3f0#uVEP`3i9%~&wPD-87VALDEIBTck?wbx8PTR z>kR;Dw-1CmG47{FF6ja}lat1q@W8-89+SGY4sxR)$cpgV5MV>CV)%0|(!Gl}T>U9~ z6G=GM6abdOjuK!~PXW-{;8Jxi zgmOPAs8A?9!{|~QAL`{l>CxNl&7)@5M8(UOc*NThjSb$5As^GGgg~>yqq+Z1%^J0- z&+Fb8pv|d%l6Liz*#$Ez!l|39zN3|Kbl=;k-p3oL9|VACpL_m+W>`jXdKSu^=Q1cH z8FhE))_g*qYRtpQ`QxfHw}qED~i)vH&{ z^1qpmA+g&jVmFv%%t#bLqA2UqXti5GEv3j(sj|*g6CX%Mme<;h@TMn)+eCtt$Wmr; zadA)(aT08$$>0!xC`=HPtbE2jp9B%GMl`RMrlvF5Ee}VFbuW-?URQsP!C?9qI5|0E ze3!bJlBwkpPTW|2a=^Ru5p%4`5P2@0?`BH*OKd1Ly;u?$D=h02Gi>Hp%Go5Vu8p9v zf*0@g2O#(^lE)~SQLA*dB++@JB4BV-Qi);)kD7Etn9Ir#^Y6kLN6>S<;NFgqT3TtP z$l`>Zcs`40T|UcXc?+wfY*s6H@0=?~qxz#>FMyA^8J0i@%|Czs1U_7Pt+Io} z+ZeqcZm0g{>AH*c4TLB=|I()|p+TDtLtnknRQsP~MR!fZsyP`NQ^@mNdPq2W;VOuQ zOE-gusegc+bvik{_!14&sglGS^JJBFtX$U0T5^oOln;nRdHDDM#Q((9zts2Kr&=j| zdKy48D|G10WkDZUyF`%GS@P<3xgN)DVJgPT=?kc+xPrlrAUUKdy0kKGt${uo z5hxiMZYI1NVU<+jrKT3vOWa?x+6~gIz%2 z`UjATk7noObjln!!XzXFhl3gnZmL4$G$366vj`*g!;=#)Z=L>`doaU5kd2l_F6E-5 zF_;PRND`n~Yp!wjPm-C&*7GBJG7Wos)dO&%A z5Y6{WtEzUshX*+?HPXBBwb_t+W06AC8%6e>iQWKz_7nY#)PhU9fs+XGF8o45aj~&5 z@7<-I;cN$N`GVH^8&_7iACxMxvnMwm_tntTxYna=J_`lPn*8MvR$meXZHsxq-bxoE zKvbHUVLwoH4c&k9Pu&U;GRTltKsgCHs zFz4~7!n=}Xofd!P63{I_^YR+ENGX9tQr+9C94IVg1!q*AcNk4R8V{-g^OSk%rF_-` zWGe4$-U>!&8Ca9b^#w>0QdLm}9?8ZWNIs-Y7K3qw`9P_5n||@@Eu|cYY&^Wlc;78F7N17&no;B^It|JasvP!ObSrr@v(4DR1AA&LJ_FTKs!myUk1i@#6} vdf?%`4U2-hf~w2^&pOQiwVJcF>HJa_r1lA0v!DxjhNmc}Dw_}g%kO^xcV5sX literal 10849 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 Date: Mon, 20 Apr 2015 20:48:45 +0000 Subject: [PATCH 008/317] v8 --- copyright.tex | 7 + example_uml/toggle_1.png | Bin 0 -> 29886 bytes .../toggle_2.png | Bin .../toggle_3.png | Bin .../toggle_4.png | Bin .../toggle_5.png | Bin examples_model.tex | 79 ++ examples_serialization.tex | 646 +++++++++ history.tex | 8 + model.tex | 854 ++++++++++++ practices.tex | 34 + purpose.tex | 31 + sbol.bib | 9 + sbol2.tex | 1234 +---------------- serialization.tex | 22 + uml/example_component_definitions.png | Bin 29269 -> 0 bytes vocabulary.tex | 72 + 17 files changed, 1788 insertions(+), 1208 deletions(-) create mode 100644 copyright.tex create mode 100644 example_uml/toggle_1.png rename uml/example_component_definition_composition.png => example_uml/toggle_2.png (100%) rename uml/example_module_definition.png => example_uml/toggle_3.png (100%) rename uml/example_module_definition_composition.png => example_uml/toggle_4.png (100%) rename uml/example_component_mapping.png => example_uml/toggle_5.png (100%) create mode 100644 examples_model.tex create mode 100644 examples_serialization.tex create mode 100644 history.tex create mode 100644 model.tex create mode 100644 practices.tex create mode 100644 purpose.tex create mode 100644 serialization.tex delete mode 100644 uml/example_component_definitions.png create mode 100644 vocabulary.tex diff --git a/copyright.tex b/copyright.tex new file mode 100644 index 00000000..4c4a609e --- /dev/null +++ b/copyright.tex @@ -0,0 +1,7 @@ +% ----------------------------------------------------------------------------- +\section{Copyright and License Statement} +% ----------------------------------------------------------------------------- + +%% Variation from BBF RFC 0 specs confirmed in email communication with BBF by Jake Beal, 3/21/15 + +Copyright (C) The BioBricks Foundation and all authors listed on this BBF RFC. This work is made available under the Creative Commons Attribution 4.0 International Public License. To view a copy of this license visit \href{https://creativecommons.org/licenses/by/4.0/}{https://creativecommons.org/licenses/by/4.0/}. diff --git a/example_uml/toggle_1.png b/example_uml/toggle_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2c6006122d7056d521e98f71520d0e074c288a79 GIT binary patch literal 29886 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 tL3Bm@gScq2S+m3iom0vX!(~g+={2M2B&w&5{ literal 0 HcmV?d00001 diff --git a/uml/example_component_definition_composition.png b/example_uml/toggle_2.png similarity index 100% rename from uml/example_component_definition_composition.png rename to example_uml/toggle_2.png diff --git a/uml/example_module_definition.png b/example_uml/toggle_3.png similarity index 100% rename from uml/example_module_definition.png rename to example_uml/toggle_3.png diff --git a/uml/example_module_definition_composition.png b/example_uml/toggle_4.png similarity index 100% rename from uml/example_module_definition_composition.png rename to example_uml/toggle_4.png diff --git a/uml/example_component_mapping.png b/example_uml/toggle_5.png similarity index 100% rename from uml/example_component_mapping.png rename to example_uml/toggle_5.png diff --git a/examples_model.tex b/examples_model.tex new file mode 100644 index 00000000..130a24b9 --- /dev/null +++ b/examples_model.tex @@ -0,0 +1,79 @@ +% ----------------------------------------------------------------------------- +\section{Examples of Data Model} +\label{sec:examples} +% ----------------------------------------------------------------------------- + +\subsection{LacI/TetR Toggle Switch} + + +\todo[inline]{mrp: Where do all the terms in these examples come from?} +\todo[inline]{mrp: Very brief intro to what the toggle switch is, what the major moving part are - I need to understand what we are describing before we describe it} +\todo[inline]{bab: perhaps include citation as well} + +In this section, we model the design of a LacI/TetR toggle switch similar to those constructed in \cite{Gardner2000}. This design is visualized in \ref{images:toggleswitch_modular}. + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.4]{images/toggleswitch_modular} +\caption[]{Design of a LacI/TetR toggle switch. This design is composed of two inverter sub-designs, each containing a single gene. These genes mutually repress each other's expression via their encoded protein TFs, LacI and TetR, which can be bound by small molecules (IPTG and aTc, respectively). Dashed lines indicate that the TFs in the inverter sub-designs are identical to those in the overall toggle switch design. Arrows represent different molecular interactions, including the repression of pLac via LacI, the non-covalent binding of IPTG to LacI, the transcription of TetR mRNA, and the translation of TetR.} +\label{images:toggleswitch_modular} +\end{center} +\end{figure} + +The LacI/TetR toggle switch is modeled in SBOL as two parallel hierarchies of structure and function. In the first case, \sbol{ComponentDefinition}s are used to define physical \sbol{Component}s at every level of the structural hierarchy of the toggle switch, including the functional DNA regions, TFs, and small molecules at the base of this hierarchy, and the genes and TFs bound to small molecules at the top of this hierarchy. \ref{uml:ex_comp_defs} is a UML object diagram that specifies the \sbol{ComponentDefinition}s for one half of the LacI/TetR toggle switch. + +\begin{figure}[ht] +\begin{center} +\includegraphics[width=\textwidth]{example_uml/toggle_1} +\caption[]{Examples of component definitions for one half of the LacI/TetR toggle switch. These include DNA \sbol{ComponentDefinition}s based on parts from the iGEM Registry, the RNA and protein \sbol{ComponentDefinition}s derived from them, and the small molecule \sbol{ComponentDefinition} for IPTG. Each \sbol{ComponentDefinition}s in this example is associated with a \sbol{Sequence} that has an IUPAC nucleic acid or amino acid encoding, except for the definition of IPTG, which is associated with a \sbol{Sequence} that has a SMILES encoding.} +\label{uml:ex_comp_defs} +\end{center} +\end{figure} + +In the second case, \sbol{ModuleDefinition}s are used to define functional \sbol{Module}s at every level of the functional hierarchy of the toggle switch, with LacI-dependent repression of TetR expression (the LacI inverter \sbol{Module}) and TetR-dependent repression of LacI (the TetR inverter \sbol{Module}) forming the base of this hierarchy. Each \sbol{ModuleDefinition} also contains the \sbol{FunctionalComponent}s that participate in \sbol{Interaction}s and are defined by the same \sbol{ComponentDefinition}s as the parallel \sbol{Component}s in the structural hierarchy of the toggle switch. Finally, \sbol{MapsTo} entities are used to refine which \sbol{FunctionalComponent}s of the functional hierarchy are identical or map them to \sbol{Component}s in the structural hierarchy. + +As an example of structural composition, \ref{uml:ex_comp_def_compo} specifies the composite component definitions for the IPTG-LacI complex and TetR gene. In the case of the gene, its subcomponents are located as ranges along its sequence using sequence annotations. The complex, however, has no sequence and its subcomponents are aggregated without any data about their relative locations. + +\todo[inline]{ComponentDefinition.types in the following figure are not consistent with the list of BioPax ontological terms described previously in the Data Model section} + +\begin{figure}[ht] +\begin{center} +\includegraphics[width=\textwidth]{example_uml/toggle_2} +\caption[]{Example of composite component definitions for one half of a LacI/TetR toggle switch.} +\label{uml:ex_comp_def_compo} +\end{center} +\end{figure} + +As an example of functional representation, \ref{uml:ex_mod_def} specifies the module definition for a LacI inverter. This module definition aggregates and instantiates the component definitions for the TetR gene as functional components that participate in interactions. Note that the transcription and translation of TetR is represented using a single genetic production interaction that abstracts away the presence of the intermediate TetR mRNA. If this additional detail becomes necessary, then a new module could be created that includes both transcription and translation interactions and a TetR mRNA functional component. Finally, the module definition is also associated with a continuous SBML model from source file LacI\_Inverter.xml. + +\begin{figure}[ht] +\begin{center} +\includegraphics[width=\textwidth]{example_uml/toggle_3} +\caption[]{Example of module definition for a LacI inverter.} +\label{uml:ex_mod_def} +\end{center} +\end{figure} + +As an example of functional composition, \ref{uml:ex_mod_def_compo} specifies the composite module definition for the LacI/TetR toggle switch. This module definition aggregates and instantiates the LacI and TetR inverter module definitions as submodules. It also instantiates the LacI and TetR component definitions as the functional component inputs and/or outputs to both the toggle switch and inverter module definitions. To complete the functional composition of the toggle switch, mappings are made between these functional components to indicate that the output of the LacI inverter is the input to the TetR inverter and vice versa. + +\begin{figure}[ht] +\begin{center} +\includegraphics[width=\textwidth]{example_uml/toggle_4} +\caption[]{Example of composing the module definitions for a LacI inverter and TetR inverter into a module definition for a LacI/TetR toggle switch.} +\label{uml:ex_mod_def_compo} +\end{center} +\end{figure} + +Lastly, as an example of further detailing the connection between structure and function, \ref{uml:ex_comp_mapping} specifies a mapping between the composite component definition for the TetR gene + +% The first use case is to indicate with greater fidelity how a module describes the function of a composite component, namely by asserting that particular component instantiations within the module correspond to particular component instantiations within the component. + +% As an example of this use case, one might compose the structure and function of the LacI-repressible gene of the genetic toggle switch. In this example, the LacI-repressible gene and two of its subcomponents, the pLac promoter and cTetR CDS, are to be composed with the LacI inverter module. In order to compose these components with the LacI inverter module and indicate that it describes their behavior, they are instantiated inside the module. In addition, port maps are placed on the instantiation of the LacI-repressible gene to connect between its pLac plus cTetR subcomponent instantiations and the corresponding component instantiations in the module. Doing so makes it clear which subcomponent instantiations in the gene are being described by which component instantiations in the module. In this way, GDA tools for sequence editing and biochemical modeling can guarantee that their users are handling corresponding elements of a given genetic design, while GDA tools for genetic technology mapping can make explicit connections between the structural and functional elements of a design. + +\begin{figure}[ht] +\begin{center} +\includegraphics[width=\textwidth]{example_uml/toggle_5} +\caption[]{Example of mapping between the structural and functional components of a LacI inverter.} +\label{uml:ex_comp_mapping} +\end{center} +\end{figure} diff --git a/examples_serialization.tex b/examples_serialization.tex new file mode 100644 index 00000000..85dc00ce --- /dev/null +++ b/examples_serialization.tex @@ -0,0 +1,646 @@ +% ----------------------------------------------------------------------------- +\section{Examples of Serialization} +% ----------------------------------------------------------------------------- +\subsection{PoPS Receiver} + +This example shows the serialization of the PoPS Receiver device designed by Canton and co-workers. Details of the device can be found at http://parts.igem.org/Part:BBa\_F2620. + +\todo[inline]{Add more description and ref} + +\label{ser:F2620} +\lstsetsbol +\begin{lstlisting} + + + + BBa_R0040 + TetR repressible promoter + + + + + + BBa_C0062 + luxR coding sequence + + + + + + BBa_B0015 + Double terminator + + + + + + BBa_R0062 + LuxR inducible promoter + + + + + + BBa_F2620 + 3OC6HSL -> PoPS Receiver + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 56 + 68 + + + + + + + + + + + 771 + 900 + + + + + + + + + + + 1 + 55 + + + + + + + + + + + 69 + 770 + + + + + + + + + + + 901 + 956 + + + + + + + + + + BBa_B0034 + RBS based on Elowitz repressilator + + + + + + ccaggcatcaaataaaacgaaaggctcagtcgaaagactgggcctttcgttttatctgttgtttgtcggtgaacgctctctactagagtcacactggctcaccttcgggtgggcctttctgcgtttata + + + + aaagaggagaaa + + + + atgcttatctgatatgactaaaatggtacattgtgaatattatttactcgcgatcatttatcctcattctatggttaaatctgatatttcaatcctagataattaccctaaaaaatggaggcaatattatgatgacgctaatttaataaaatatgatcctatagtagattattctaactccaatcattcaccaattaattggaatatatttgaaaacaatgctgtaaataaaaaatctccaaatgtaattaaagaagcgaaaacatcaggtcttatcactgggtttagtttccctattcatacggctaacaatggcttcggaatgcttagttttgcacattcagaaaaagacaactatatagatagtttatttttacatgcgtgtatgaacataccattaattgttccttctctagttgataattatcgaaaaataaatatagcaaataataaatcaaacaacgatttaaccaaaagagaaaaagaatgtttagcgtgggcatgcgaaggaaaaagctcttgggatatttcaaaaatattaggttgcagtgagcgtactgtcactttccatttaaccaatgcgcaaatgaaactcaatacaacaaaccgctgccaaagtatttctaaagcaattttaacaggagcaattgattgcccatactttaaaaattaataacactgatagtgctagtgtagatcac + + + + + + + + acctgtaggatcgtacaggtttacgcaagaaaatggtttgttatagtcgaataaa + + + + tccctatcagtgatagagattgacatccctatcagtgatagagatactgagcac + + + +\end{lstlisting} + +\subsection{Toggle Switch} +\todo[inline]{Explain the example} + +\label{ser:toggleswitch} +\lstsetsbol +\begin{lstlisting} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + USEREMOTE + + + + + + + + + + + + USEREMOTE + + + + + + + + + + + + + + + ECK120033736 + Terminator2 + + + + + + pTetR + pTet promoter + + + + + + ECK120029600 + Terminator1 + + + + + + BBa_J61101 RBS + RBS2 + + + + + + BBa_J61101 RBS + RBS2 + + + + + + tetR + tetR coding sequence + + + + + + LacI/TetR Toggle Swicth + LacI/TetR Toggle Swicth + + + + + + + + + + + + + + + + + + + 1 + 1285 + + + + + + + + + + 1286 + 2834 + + + + + + + + TetR + TetR protein + + + + + LacI + LacI protein + + + + + pLacI + pLacI promoter + + + + + + LacI Inverter + LacI Inverter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 730 + 742 + + + + + + + + + + 56 + 68 + + + + + + + + + + 1 + 55 + + + + + + + + + + 743 + 1463 + + + + + + + + + + 69 + 729 + + + + + + + + + + 1464 + 1554 + + + + + + + + GFP + GFP protein + + + + + TetR Inverter + TetR Inverter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 56 + 68 + + + + + + + + + + 1 + 55 + + + + + + + + + + 69 + 1197 + + + + + + + + + + 1198 + 1288 + + + + + + + + gfp + gfp coding sequence + + + + + + BBa_J61101 RBS + RBS1 + + + + + + lacI + lacI coding sequence + + + + + + ttcagccaaaaaacttaagaccgccggtcttgtccactaccttgcagtaatgcggtggacaggatcggcggttttcttttctcttctcaa + + + + tccctatcagtgatagagattgacatccctatcagtgatagagatactgagcac + + + + aaagaaacgaca + + + + atggtgaatgtgaaaccagtaacgttatacgatgtcgcagagtatgccggtgtctcttatcagaccgtttcccgcgtggtgaaccaggccagccacgtttctgcgaaaacgcgggaaaaagtggaagcggcgatggcggagctgaattacattcccaaccgcgtggcacaacaactggcgggcaaacagtcgttgctgattggcgttgccacctccagtctggccctgcacgcgccgtcgcaaattgtcgcggcgattaaatctcgcgccgatcaactgggtgccagcgtggtggtgtcgatggtagaacgaagcggcgtcgaagcctgtaaagcggcggtgcacaatcttctcgcgcaacgcgtcagtgggctgatcattaactatccgctggatgaccaggatgccattgctgtggaagctgcctgcactaatgttccggcgttatttcttgatgtctctgaccagacacccatcaacagtattattttctcccatgaagacggtacgcgactgggcgtggagcatctggtcgcattgggtcaccagcaaatcgcgctgttagcgggcccattaagttctgtctcggcgcgtctgcgtctggctggctggcataaatatctcactcgcaatcaaattcagccgatagcggaacgggaaggcgactggagtgccatgtccggttttcaacaaaccatgcaaatgctgaatgagggcatcgttcccactgcgatgctggttgccaacgatcagatggcgctgggcgcaatgcgcgccattaccgagtccgggctgcgcgttggtgcggatatctcggtagtgggatacgacgataccgaagacagctcatgttatatcccgccgttaaccaccatcaaacaggattttcgcctgctggggcaaaccagcgtggaccgcttgctgcaactctctcagggccaggcggtgaagggcaatcagctgttgcccgtctcactggtgaaaagaaaaaccaccctggcgcccaatacgcaaaccgcctctccccgcgcgttggccgattcattaatgcagctggcacgacaggtttcccgactggaaagcgggcaggctgcaaacgacgaaaactacgctttagtagcttaataa + + + + tccctatcagtgatagagattgacatccctatcagtgatagagatactgagcac + + + + aaagacaggacc + + + + atgcgtaaaggagaagaacttttcactggagttgtcccaattcttgttgaattagatggtgatgttaatgggcacaaattttctgtcagtggagagggtgaaggtgatgcaacatacggaaaacttacccttaaatttatttgcactactggaaaactacctgttccatggccaacacttgtcactactttcggttatggtgttcaatgctttgcgagatacccagatcatatgaaacagcatgactttttcaagagtgccatgcccgaaggttatgtacaggaaagaactatatttttcaaagatgacgggaactacaagacacgtgctgaagtcaagtttgaaggtgatacccttgttaatagaatcgagttaaaaggtattgattttaaagaagatggaaacattcttggacacaaattggaatacaactataactcacacaatgtatacatcatggcagacaaacaaaagaatggaatcaaagttaacttcaaaattagacacaacattgaagatggaagcgttcaactagcagaccattatcaacaaaatactccaattggcgatggccctgtccttttaccagacaaccattacctgtccacacaatctgccctttcgaaagatcccaacgaaaagagagaccacatggtccttcttgagtttgtaacagctgctgggattacacatggcatggatgaactatacaaataataa + + + + atgtccagattagataaaagtaaagtgattaacagcgcattagagctgcttaatgaggtcggaatcgaaggtttaacaacccgtaaactcgcccagaagctaggtgtagagcagcctacattgtattggcatgtaaaaaataagcgggctttgctcgacgccttagccattgagatgttagataggcaccatactcacttttgccctttagaaggggaaagctggcaagattttttacgtaataacgctaaaagttttagatgtgctttactaagtcatcgcgatggagcaaaagtacatttaggtacacggcctacagaaaaacagtatgaaactctcgaaaatcaattagcctttttatgccaacaaggtttttcactagagaatgcattatatgcactcagcgctgtggggcattttactttaggttgcgtattggaagatcaagagcatcaagtcgctaaagaagaaagggaaacacctactactgatagtatgccgccattattacgacaagctatcgaattatttgatcaccaaggtgcagagccagccttcttattcggccttgaattgatcatatgcggattagaaaaacaacttaaatgtgaaagtgggtccgctgcaaacgacgaaaactacgctttagtagcttaataa + + + + ttcagccaaaaaacttaagaccgccggtcttgtccactaccttgcagtaatgcggtggacaggatcggcggttttcttttctcttctcaa + + + + aaagacaggacc + + + +\end{lstlisting} + diff --git a/history.tex b/history.tex new file mode 100644 index 00000000..0f2482c4 --- /dev/null +++ b/history.tex @@ -0,0 +1,8 @@ +% ----------------------------------------------------------------------------- +\section{History and Acknowledgements} +% ----------------------------------------------------------------------------- +%Add yourself if you have helped and aren't on the list + +SBOL originated in discussions between participants in the Synthetic Biology Open Language Workshops held in Blacksburg, Virginia on January 7-10, 2011, and its further development has continued at a series of subsequent open invitation workshops and through email exchanges on the SBOL Developers mailing list. + +Contributors to this work include: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University). diff --git a/model.tex b/model.tex new file mode 100644 index 00000000..04f3a7a0 --- /dev/null +++ b/model.tex @@ -0,0 +1,854 @@ +% ----------------------------------------------------------------------------- +\section{SBOL Data Model} +% ----------------------------------------------------------------------------- +In this section, we describe the types of biological design data that can belong to an SBOL document and the relationships between these data types. The SBOL data model is specified using Unified Modeling Language (UML) 2.0 diagrams \href{http://www.omg.org/spec/UML/2.0/}{(OMG 2005)}. +This section begins with a review of UML diagrams, then each following subsection explains one of the ``top-level'' objects in the SBOL data model. + +Complete SBOL examples and best practices when using SBOL can be found in \ref{sec:examples} and \ref{sec:bestpractices}, respectively. +\todo[inline]{Sections 8 and 10 has a funny gap, makes me think we need to look at indexing in general --JSB} + +\subsection{Understanding the UML Diagrams} + +The types of biological design data modeled by SBOL are commonly referred to as {\em classes}, especially when discussing the details of software implementation. Classes are represented in UML diagrams as rectangles labeled at the top with class names. Classes may be connected to other classes by association properties, which are represented in UML as arrows labeled with data cardinality (i.e., how many instances of that association can exist, as explained below). Finally, the remaining (non-association) properties of a class properties are listed below its name inside the rectangle, and each property is labeled with its data types and cardinality. + +An association property is a directional relationship between SBOL classes, represented by an arrow. The object at that the arrow comes from has the property, and the object that the arrow points to is the associated object. A diamond at the tail of the arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, which means that associated objects exist independently of objects of the class that has the association property (e.g., a parent and child). In contrast, filled diamonds indicate composite aggregation, also known as a part-whole relationship, in which objects of the associated class cannot exist independently and must be associated with at most one object of the class that has the association property (e.g., the pattern on a piece of clothing). +%For example, it will later be shown how objects of the \sbol{SequenceAnnotation} class must associated with an object of the \sbol{ComponentDefinition} class (and only that object). + +All SBOL properties are labeled with one of several restrictions on data cardinality. These are: + +\begin{itemize} + +\item $1$ - required, one: there must be exactly one value for this property. + +\item $0 \ldots 1$ - optional: there may be a single value for this property or it may be absent. + +\item $0 \ldots *$ - unbounded: there may be any number of values for this property, including none. + +\item $1 \ldots *$ - required, unbounded: there may be any number of values for this property, as long as there is at least one. + +\item $n \ldots *$ - at least: there must be at least $n$ values for this property. + +\end{itemize} + +Within the SBOL data model, all properties are given a singular or plural name in accordance with their data cardinalities. The forms of these names follow the usual rules of grammar. For example, \sbol{sequenceAnnotation} is the singular form of \sbol{sequenceAnnotation}s. + +Within the RDF serialization of SBOL, however, SBOL properties are always given singular names. The serialization does not use RDF collections to represent multiple values of an SBOL property. Hence, if a SBOL property has five values, then its serialization contains five RDF triples with singular predicate names. +\todo[inline]{Why, why, why are these two different?} + +Within an implementing Object-Oriented (OO) API, SBOL properties should be mapped to member accessors that are similarly named and that return idiomatic representations of these properties. For example, a Java implementation would use common Java idioms. In this case, the member accessor for an optional SBOL property could return a Java primitive value, Java object, or null, while the accessor for a multi-valued SBOL property could return a Java \external{Collection}. In general, OO member accessors for multi-valued SBOL properties should never return null. +\todo[inline]{I think this is a best practice, and not part of the data model.} + +As another example, a relational implementation of the SBOL API would store the properties and associations a mixture of data fields and references via foreign keys. The fields in individual tables will correspond to the `arrowhead' end of an association (in reverse to the direction in the RDF and OO representations), and the name may be modified to reflect this change in directionality. For example, the \sbol{sequence} association between a \sbol{ComponentDefinition} and \sbol{Sequence} would be represented by a foreign key field on the \sbol{Sequence} table that references a row in the \sbol{ComponentDefinition} table, and it may be named \external{sequenceOf}. +\todo[inline]{What is this even about? Is it another best practice?} + +\subsection {SBOL Document} +\todo[inline]{This feels like it belongs in the serialization section, not the data model section} +An SBOL document is a valid RDF/XML document. Accordingly, each SBOL document starts with an XML declaration that has its XML version set to ``1.0.'' As shown in the example below, this declaration is then followed by a rdf:RDF XML element that includes the namespace declarations for RDF and SBOL. The latter namespace is used to indicate which entities and properties in the SBOL document are defined by SBOL. + +\lstsetsbol +\begin{lstlisting} + + +... + +\end{lstlisting} + +As explained in \ref{sec:annotations}, SBOL documents can also include custom namespace declarations for the purpose of embedding application-specific data. + + +\todo[inline]{Need to consider the order in which the classes are presented} +\subsection {Identified} +\label{sec:Identified} + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/identified} +\caption[]{The Identified abstract class} +\label{uml:identified} +\end{center} +\end{figure} +\todo[inline]{Diagram needs to include annotation} + +All SBOL-defined classes are directly or indirectly derived from the \sbol{Identified} class. This inheritance enables SBOL objects to be identified using unique URIs that may refer to relative locations within an SBOL document or URLs that refer to locations on the World Wide Web. This class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, and \sbol{version}. +(\ref{uml:identified}), as well as annotations (described below in their own section). +\todo[inline]{Is there any example SBOL entity that does not derive from Identified?} + +\subsubsection*{The \sbolheading{identity} property} +\label{sec:identity} +This property is required by all \sbol{Identified} objects and has a datatype of \external{URI}. This \external{URI} serves to uniquely identify an SBOL object (as in SBOL Version 1.1). The \sbol{identity} property can be used to point to other objects in the same SBOL document or resources on the Web. Although most SBOL properties are defined under the SBOL namespace, because unique identity interacts with the RDF specification, this property is defined under the RDF namespace using the following term: + +\external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. + +\todo[inline]{Should compliant URIs, per the paper, be required or just recommended as a best practice?} + +\subsubsection*{The \sbolheading{persistentIdentity} property} +\label{sec:persistentIdentity} +The \sbol{persistentIdentity} property is optional and also has a datatype of \external{URI}. This property is used to declare that a set of SBOL objects refer to the ``same'' thing (by virtue of having the same persistent identity), e.g., a sequence of improvements on a design. This persistent identity can then be used to return the most up-to-date version of a SBOL object. + +\todo[inline]{consider not putting the toggle switch example at the end, but rather weaving references to the toggle switch into each subsection} + + +\subsubsection*{The \sbolheading{version} property} +\label{sec:version} +This property has a datatype of \external{String} and is used along with the \sbol{persistentIdentity} property to indicate the version of an SBOL object for comparison with other SBOL objects with the same persistent identity. + +\subsection {Documented} +\label{sec:Documented} +The Documented class in SBOL represents objects that can be decorated with human-readable properties, such as name and description. This class extends \sbol{Identified} with three additional data properties: \sbol{displayId}, \sbol{name}, and \sbol{description} (\ref{uml:documented}). + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/documented} +\caption[]{The Documented class} +\label{uml:documented} +\end{center} +\end{figure} +\todo[inline]{Reorder displayId and name} + +\subsubsection*{The \sbolheading{name} property} +\label{sec:name} +An optional, human readable name property, with a data type of \external{String}. It is intended to be displayed to a human when visualising SBOL objects. +If a \sbol{Documented} object lacks a name, it is expected that software tools will instead display the entity's \sbol{displayId} or \sbol{identity} as a last resort. + +\subsubsection*{The \sbolheading{displayId} property} +\label{sec:displayId} +An optional identifier, with a data type of \external{String}. It is intended to be an intermediate between \sbol{name} and \sbol{identity}: machine-friendly text that is not necessarily unique, and more human-friendly than the full URI of an \sbol{identity}. + +In particular, displayId string MUST be compliant with type \external{http://www.w3.org/TR/xmlschema-2/\#NCName} + +\todo[inline]{Need to add sanitization to libSBOLj} + +\subsubsection*{The \sbolheading{description} property} +\label{sec:description} +An OPTIONAL, free text property with the data type of \external{String}, intended to contain a more thorough description of an object. + + +\subsection {TopLevel} +\label{sec:TopLevel} +\sbol{TopLevel} is an abstract class that is extended by any \sbol{Documented} object that can be found at the top level of a SBOL file, i.e., any SBOL object that is not nested inside another object when written to a file. Instead of nesting, composite \sbol{TopLevel} objects link to their subordinate \sbol{TopLevel} objects via \external{URI}s when written to a file. For example, a composite \sbol{Component} object A would link to its sub-Component object B using B's \external{URI}. The TopLevel classes defined by this specification are \sbol{Sequence}, \sbol{ComponentDefinition}, \sbol{ModuleDefinition}, \sbol{Module}, \sbol{Collection} and \sbol{GenericTopLevel} (\ref{uml:toplevel}). + +\begin{figure}[ht] +\begin{center} +\includegraphics[width=\textwidth]{uml/toplevel} +\caption[]{The TopLevel classes} +\label{uml:toplevel} +\end{center} +\end{figure} + + + + +\subsection{ComponentDefinition} +\label{sec:ComponentDefinition} + +A \sbol{ComponentDefinition} is an entity in the biological system that is being represented. Its motivating usage is to represent objects with designed sequences (DNA, RNA, or proteins), but it can also represent any other object that is part of or interacts with a design, such as small molecules, molecular complexes, or light. +(this is a generalization from prior versions of SBOL, which only represented DNA). + +% Figure has some classes named incorrectly +\begin{figure}[ht] +\begin{center} +\includegraphics[width=0.95\textwidth]{uml/component_definition} +\caption[]{ComponentDefinition} +\label{uml:component_definition} +\end{center} +\end{figure} + + + +\todo[inline]{Examples of ontologies for non-molecular type gs (eg, light)...?} +\subsubsection*{The \sbolheading{types} property} +\label{sec:types} +Every \sbol{ComponentDefinition} MUST have at least one \sbol{types} \external{URI} that identifies a term from an appropriate ontology, such as the BioPAX ontology (some recommended examples are given in \ref{tbl:componentdefinition_types}) or the ontology of Chemical Entities of Biological Interest (ChEBI). A type URI documents the category of biochemical or physical entity (for example DNA, protein, or RNA) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. If a \sbol{ComponentDefinition} object has multiple type URIs, then they MUST identify synonymous terms. + +\begin{table}[ht] + \begin{edtable}{tabular}{ll} + \toprule + \textbf{Entity Type} & \textbf{BioPAX Term} \\ + \midrule + DNA & \url{http://www.biopax.org/release/biopax-level3.owl#DnaRegion}\\ + RNA & \url{http://www.biopax.org/release/biopax-level3.owl#RnaRegion}\\ + Protein & \url{http://www.biopax.org/release/biopax-level3.owl#Protein}\\ + Small Molecule & \url{http://www.biopax.org/release/biopax-level3.owl#SmallMolecule}\\ + \bottomrule + \end{edtable} + \caption{BioPAX terms to specify the types of ComponentDefinition objects.} + \label{tbl:componentdefinition_types} +\end{table} + + +\todo[inline]{Should roles and types be optional or required?} +\subsubsection*{The \sbolheading{roles} property} +\label{sec:roles} + +The \sbol{roles} of a ComponentDefinition object MUST contain at least one URI. These identify ontology terms that clarify a \sbol{ComponentDefinition} object's potential function in a biological context. For example, a \sbol{ComponentDefinition} for a DNA component might have a role of ``promoter'' or ``terminator,'' terms taken from the Sequence Ontology (SO). A ComponentDefinition object for a protein, on the other hand, might have a role of ``transcription factor'' or ``protease.'' +\todo[inline]{Taken from what ontology?} + +The \sbol{roles} are analogous to the \external{type} of a \external{DnaComponent} object in SBOL Version 1.1. + + +\subsubsection*{The \sbolheading{components} property} +\label{sec:components} + +If \sbol{ComponentDefinition} class is analogous to a blueprint or parts specification sheet for a biological part. In contrast, the \sbol{Component} class represents specific occurrences of parts within a design. This allows biological designs that use a component more than once. +The \sbol{components} property specifies a collection of such parts contained within a particular \sbol{ComponentDefinition}. + + +\subsubsection*{The \sbolheading{sequence} property} +\label{sec:sequence} +The sequence property is optional and includes the URI for a corresponding \sbol{Sequence} object. + +\subsubsection*{The \sbolheading{sequenceConstraint} property} +\label{sec:sequenceConstraint} + +\todo[inline]{This needs to be explained} + +\subsubsection*{The \sbolheading{sequenceAnnotation} property} +\label{sec:sequenceAnnotation} + +\todo[inline]{This appears to be completely obsolete. Does this property even still exist? -JSB} + +A \sbol{ComponentDefinition} object can define its structure by linking to objects that belong to the Component, Sequence, SequenceAnnotation, and SequenceConstraint classes. These classes are described below. + +\subsubsection*{Serialization} +The parents of the \sbol{ComponentDefinition} class are \sbol{TopLevel} and, transitively, \sbol{Documented} and \sbol{Identified}. As a result, inherited properties are serialised as explained for these parent classes. The sequence property of a \sbol{ComponentDefinition} object includes a URI to a \sbol{Sequence} object and this URI is serialized as an \external{rdf:resource}. The \sbol{types} property may include a collection of type URIs and is serialized as an implicit collection, ignoring the property name ``types''. The \sbol{roles} property is also similarly serialized as an implicit collection of sbol:roles properties. + +\todo[inline]{Add the serialization descriptions to parent classes.} +\lstsetsbol +\begin{lstlisting} + + ... + [\emph{zero or one}] ...[\emph{element}] + [\emph{zero or one}] ...[\emph{element}] + [\emph{zero or one}] [\emph{element}] + [\emph{one or more}] [\emph{elements}] + [\emph{one or more}] [\emph{elements}] + [\emph{zero or more}] + ... + [\emph{elements}] + [\emph{zero or more}] + ... + [\emph{elements}] + +\end{lstlisting} +\todo[inline]{what is this listing? -JSB} + +The example below shows the serialization of a simple \sbol{ComponentDefinition} object. The \external{DnaRegion} from BioPAX and \external{CHEBI:4705} from CHEBI are used to indicate the type of the biological entity as a DNA molecule. Its role is specified via the generic \external{SO:0000167} (\external{promoter}) and more specific \external{SO:0000613} (\external{bacterial\_RNApol\_promoter}) terms. + +\lstsetsbol +\begin{lstlisting} + + J23119 promoter + Constitutive promoter + + + + + + +\end{lstlisting} + + +\subsubsection{ComponentInstance} +\label{sec:ComponentInstance} +\todo[inline]{This is completely impenetrable to me -JSB} + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/component_instance} +\caption[]{Component} +\label{uml:component} +\end{center} +\end{figure} + +% The second sentence is confusing. +Hierarchical composition of structure and function is enabled via the ComponentInstance class. Each ComponentInstance object has three data fields. \textcolor{red}{The first data field, ``definition'', links to the Component object that is effectively a part of the Component or Module object that owns the ComponentInstantiation object.} The second data field, ''access'', defines whether the ComponentInstance object can be referred to by ComponentInstance objects that are higher in the design hierarchy (yes if access is set to ''public''). The third data field, ``mappings'', is a set of MapsTo objects that link between other ComponentInstance objects at the same level of the design hierarchy as well as other ComponentInstance objects that are lower in the design hierarchy, thereby composing these objects with greater specificity (see first module example). + +There are two subclasses of the ComponentInstance class: the Component and FunctionalComponent classes. + + + + +\subsubsection{Component} +\label{sec:Component} +Composition of the structural layer of SBOL designs is accomplished using \sbol{Component} objects. Each \sbol{Component} object is owned by a ComponentDefinition object and serves as an explicit usage of a \textcolor{red}{sub-Component} object for the purpose of physical composition. + + + +\subsubsection{SequenceAnnotation} +\label{sec:SequenceAnnotation} +The \sbol{SequenceAnnotation} class describes a location of interest on the \sbol{Sequence} object linked by its parent \sbol{ComponentDefinition} object and may optionally associate this location with a \sbol{Component} object. \sbol{SequenceAnnotation} objects specify their location using a \sbol{Location} object. As explained below, the \sbol{Location} class is extended by several different classes, some of which assert locations other than simple ranges with start and end positions. + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/sequence_annotation} +\caption[]{SequenceAnnotation class} +\label{uml:sequence_annotation} +\end{center} +\end{figure} + +\paragraph{The \sbolheading{location} property} +Every \sbol{SequenceAnnotation} must have a location property. The value of this property is a nested \sbol{Location} object. + +\paragraph{The \sbolheading{component} property} +\sbol{SequenceAnnotation} objects may have this property to link location information to a \sbol{Component} object. The value of this property is a \sbol{Component} URI. + + +The serialization of SequenceAnnotation objects can be carried out according to the example below. A\_LOCATION\_SUBCLASS represents one of the Location subclasses. +\lstsetsbol +\begin{lstlisting} + + ... + [\emph{zero or one}] [\emph{element}] + [\emph{one}] + ... + [\emph{element}] + +\end{lstlisting} + + + + +\subsubsection{Location} +\label{sec:Location} +The Location class is extended by the \sbol{Range}, \sbol{MultiRange}, and \sbol{Cut} classes. + + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/location} +\caption[]{Location class} +\label{uml:location} +\end{center} +\end{figure} + + + + +\paragraph{Range} +\label{sec:Range} +A \sbol{Range} object specifies inclusive start and end positions. These properties are required in \sbol{Range} objects and they can have \external{integer} values greater than zero. A \sbol{Range} object also includes an ``orientation'' property, for example to to specify directionality on a potentially double-stranded \sbol{Component} object. + +\paragraph{The \sbolheading{start} property} +Specifies the start of a \sbol{Range}. This property is required and can have \external{integer} values greater than zero. + +\paragraph{The \sbolheading{end} property} +Specifies the end of a \sbol{Range}. This property is required and can have \external{integer} values greater than zero. + +\paragraph{The \sbolheading{orientation} property} +This property is optional has a \external{URI} value. However, for \sbol{ComponentDefinition} objects representing DNA molecules, it is recommended that one of the orientation values are chosen (\ref{tbl:orientation_types}). + +\begin{table}[ht] + \begin{edtable}{tabular}{l} + \toprule + \textbf{Orientation Types} \\ + \midrule + http://sbols.org/v2\#inline\\ + http://sbols.org/v2\#reverseComplement\\ + \bottomrule + \end{edtable} + \caption{URI constants for orientation values} + \label{tbl:orientation_types} +\end{table} + +The serialization of Range objects has the following form: +\lstsetsbol +\begin{lstlisting} + + ... + [\emph{one}] ... [\emph{element}] + [\emph{one}] ... [\emph{element}] + [\emph{zero or one}] [\emph{element}] + +\end{lstlisting} + +The example below shows the serialization of a \sbol{Range} object. It specifies the region between 56 and 68, and the orientation is given as \external{inline}. +\lstsetsbol +\begin{lstlisting} + + 56 + 68 + + +\end{lstlisting} + +\paragraph{MultiRange} +\label{sec:MultiRange} +A MultiRange object represents a location that is specified by multiple Range objects. For example, this capability can be used to specify a ComponentDefinition object that represents the introns or exons of a eukaryotic gene. + +\paragraph{Cut} +\label{sec:Cut} +The Cut class has been introduced to enable the specification of a location between two indices. Each Cut object has a single integer data field, ``at'', that specifies the index just before the location represented by the Cut object. Even though there is no zero index on Structure objects in SBOL, a Cut object with “at” equal to zero represents the location just before index one. The OrientedCut class extends the Cut class with an orientation in the same way that the OrientedRange class extends the Range class. + +Finally, while the Range and Cut classes are best suited to describing locations on sequential structures, the Location class can be extended in the future to better describe locations on Component Objects with non-sequential structure (see unspecified Moeity class as potential means for specifying locations in more than one dimension). + + + + +\subsubsection{SequenceConstraint} +\label{sec:SequenceConstraint} +A \sbol{ComponentDefinition} object can link to \sbol{SequenceConstraint} objects to assert different kinds of structural restrictions between two \sbol{Component} objects that are its subcomponents. A SequenceConstraint object requires \sbol{restriction}, \sbol{subject} and \sbol{object} properties to specify different constraints. + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/sequence_constraint} +\caption[]{SequenceConstraint class} +\label{uml:sequence_constraint} +\end{center} +\end{figure} + +\paragraph{The \sbolheading{subject} property} +\label{sec:subject} +This property is required to specify the component that a restriction is applied to, and includes the \external{URI} \sbol{identity} of this \sbol{Component} object. + +\paragraph{The \sbolheading{object} property} +\label{sec:object} +This property includes the \external{URI} \sbol{identity} of a \sbol{Component} object that is the value of the restriction. + + +\paragraph{The \sbolheading{restriction} property} +\label{sec:restriction} + +This property property qualifies the relationship between the \sbol{subject} and \sbol{object} \sbol{Component}s. It includes a \external{URI} value, indicating the restriction type. In SBOL Version 1.1 partial designs are made possible by means of SequenceAnnotation objects that can specify that their locations precede those of other SequenceAnnotation objects. In Version 2.0 the ``precedes'' data field has been generalized to the StructuralConstraint class. + +These restrictions could also include ``sameOrientationAs'' or ``oppositeOrientationAs'' to enable the relative orientation of Component objects whose ComponentDefinition objects lack associated Sequence objects in partial designs (\ref{tbl:restriction_types}). + +\begin{table}[ht] + \begin{edtable}{tabular}{l} + \toprule + \textbf{Restriction Types} \\ + \midrule + http://sbols.org/v2\#precedes\\ + http://sbols.org/v2\#sameOrientationAs\\ + http://sbols.org/v2\#oppositeOrientationAs\\ + \bottomrule + \end{edtable} + \caption{URI constants for restriction values} + \label{tbl:restriction_types} +\end{table} + + + + +The serialization of \sbol{SequenceConstraint} objects has the following form: +\lstsetsbol +\begin{lstlisting} + + ... + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + +\end{lstlisting} + +The example below shows the serialization of a \sbol{SequenceConstraint} object. In the example, the constraint is included as part of a \sbol{ComponentDefinition} for a LacI repressible composite promoter and has a precedes restriction. This restriction states that the subject \sbol{Component} for the core promoter precedes the object \sbol{Component} for the LacI operator in the composite promoter definition. Such restriction is especially useful to specify incomplete designs and the final design may include other components between the subject and object components. +\lstsetsbol +\begin{lstlisting} + + + + + +\end{lstlisting} + + +\subsection{Sequence} +\label{sec:Sequence} +The \sbol{Sequence} class is used to encode the primary structure of a \sbol{ComponentDefinition} object and the encoding used to capture this information. + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/sequence} +\caption[]{Sequence class} +\label{uml:sequence} +\end{center} +\end{figure} + + +\subsubsection*{The \sbolheading{elements} property} +\label{sec:elements} +Required. A \external{String} of characters that represent the constituents of biological molecule, for example nucleic acid symbols for DNA molecules. + +\subsubsection*{The \sbolheading{encoding} property} +\label{sec:encoding} +Required. \sbol{Sequence} objects identify their type of encoding with a \external{URI}. For example, a \sbol{Sequence} object that encodes a DNA sequence would have an \external{IUPAC DNA} encoding, while a \sbol{Sequence} object that encodes the chemical structure of glucose might have a \external{simplified molecular-input line-entry system (SMILES)} encoding (\ref{tbl:sequence_encodings}). + +%A Summary of letters for nucleic acids and aminoacids +\begin{table}[ht] + \begin{edtable}{tabular}{ll} + \toprule + \textbf{ComponentDefinition Type} & \textbf{Encoding} \\ + \midrule + DnaRegion,RnaRegion & \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html}\\ + Protein & \url{http://www.chem.qmul.ac.uk/iupac/AminoAcid/}\\ + SmallMolecule & \url{http://www.opensmiles.org/opensmiles.html}\\ + \bottomrule + \end{edtable} + \caption{URIs for the encoding property and the corresponding ComponentDefiniton types, which are BioPAX terms.} + \label{tbl:sequence_encodings} +\end{table} + +The serialization of \sbol{Sequence} objects has the following form: +\lstsetsbol +\begin{lstlisting} + + ... + [\emph{one}] ... [\emph{element}] + [\emph{one}] [\emph{element}] + +\end{lstlisting} + +The example below shows the serialization of a \sbol{Sequence} object for a promoter. Nucleotide sequences are represented with the \sbol{elements} property and the \sbol{encoding} is serialized as a URI value. + +\lstsetsbol +\begin{lstlisting} + + ttgacagctagctcagtcctaggtataatgctagc + + +\end{lstlisting} + + + +\todo[inline]{Add serialisation examples} +\subsection{ModuleDefinition} +\label{sec:ModuleDefinition} + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/module_definition} +\caption[]{ModuleDefinition} +\label{uml:module_definition} +\end{center} +\end{figure} + +The ModuleDefinition class forms the hub for functional description of genetic designs. A Module object is composed from zero or more FunctionalComponent, Module, and Interaction objects, and links to zero or more Model objects. A Module object relies on the ``direction'' data fields of its FunctionalComponent objects to specify whether they serve as its inputs or outputs. + +In addition, each ModuleDefinition object must now have at least one of potentially several roles to indicate its intended usages. For example, the role URIs on a ModuleDefinition object may identify terms for abstract module roles, such as``inverter'' or ``AND gate'', or they may identify terms for biological module roles, such as ``metabolic pathway'' and ``signaling cascade''. + + +\lstsetsbol +\begin{lstlisting} + + ... + [\emph{zero or one}] ...[\emph{element}] + [\emph{zero or one}] ...[\emph{element}] + [\emph{zero or more}] [\emph{elements}] + [\emph{zero or more}] [\emph{elements}] + [\emph{zero or more}] + ... + [\emph{elements}] + [\emph{zero or more}] + ... + [\emph{elements}] + [\emph{zero or more}] + ... + [\emph{elements}] + +\end{lstlisting} + + +\subsubsection{FunctionalComponent} +\label{sec:FunctionalComponent} +Composition of the functional layer of SBOL designs, on the other hand, is accomplished using \sbol{FunctionalComponent} objects. Each FunctionalComponent object is owned by a Module object and serves as an explicit usage of a ComponentInstance object for the purpose of fulfilling some function. In addition, each FunctionalInstantiation must specify via the ``direction'' field whether it serves as an input, output, both, or neither for its parent Module object. + + + + +\subsubsection{Module} +\label{sec:Module} + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/module} +\caption[]{Module} +\label{uml:module} +\end{center} +\end{figure} + +The Module class enables the composition of Module objects from other sub-Module objects. \textcolor{red}{The first data field, ``definition'', links to the ModuleDefinition object that is effectively a part of the Module object that owns the Module object.} The second data field, ``mappings'', is a set of MapsTo objects that link between the Component objects at the same level of the design hierarchy as the Module object and the Component objects that are lower in the design hierarchy, thereby composing these objects with greater specificity. + + + +\subsubsection{MapsTo} +\label{sec:MapsTo} + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/maps_to} +\caption[]{} +\label{uml:maps_to} +\end{center} +\end{figure} +The MapsTo class serves as a means of linking between Component objects (both Components and FunctionalComponents) at different levels of the design hierarchy. For example, when a Module object is instantiated inside another Module object, a MapsTo object on the appropriate Module object can be used to link between a FunctionalComponent object in the parent Module (as specified by the ``local'' data field) and a FunctionalComponent object in the child module (as specified by the ``remote'' data field). This linking can perhaps be most easily understood via the examples in the next section. + +In addition to specifying a link, each MapsTo object must also specify a ``refinement'' relationship between its local and remote Components. Under this data model, there are four types of refinement: ``verifyIdentical'' requires that the Component objects link to the same ComponentDefinition object, ``useLocal'' indicates that the local Component object overrides the remote Component object, ``useRemote'' indicates the opposite, and “merge” indicates that data fields of the local and remote ComponentInstantiation objects are to be interpreted in combination. + + +\subsubsection{Interaction} +\label{sec:Interaction} + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/interaction} +\caption[]{Interaction} +\label{uml:interaction} +\end{center} +\end{figure} + +The Interaction class provides a qualitative basis for asserting the intended function of a given ModuleDefinition object. The proposed data model supports the representation of regulatory interactions, such as activation or repression, and processes from the central dogma of biology, such as transcription and translation. Other supported interaction types include non-covalent binding between a small molecule and TF, and phosphorylation of a TF by an enzyme. + +Each Interaction object must specify its type with at least one URI that identifies an appropriate ontology term, such as a term from the Systems Biology Ontology (SBO). If an Interaction object has multiple type URIs, then they must identify synonymous terms. + +Furthermore, each Interaction object must specify its participating ComponentInstantiation objects by linking to one or more objects of the Participation class. + +\todo[inline]{Can an interaction have serial participants?} + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/participation} +\caption[]{Participation} +\label{uml:participation} +\end{center} +\end{figure} + +\subsubsection{Participation} +\label{sec:Participation} +Each object of the Participation class must specify the role of its participant FunctionalComponent object in its parent Interaction object with at least one URI that identifies an appropriate ontology term. If a Participation object has multiple role URIs, then they must identify synonymous terms. + +While the Interaction class provide a qualitative description of genetic function, quantitative descriptions are also needed for genetic design. Instead of introducing a new language for the specification of mathematical models of biology, the proposed data model leverages existing standards and links to them via the Model class. + + + + +\subsection{Model} +\label{sec:Model} + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/model} +\caption[]{} +\label{uml:model} +\end{center} +\end{figure} +SBOL's \sbol{Model} objects are used to link genetic descriptions of biological parts and their interactions to computational models. Each \sbol{Model} object specify the location of the actual content of a qualitative/quantitative model, the language the model is implemented with, the modelling framework and the model's role(s). In this way, there is minimal duplication of standardization efforts and users of SBOL can specify the quantitative function of their ModuleDefinition objects in a well-developed language of their choice. A ModuleDefinition object can link to more than one model since each one can encode different levels of functional detail and play different roles in engineering design. + +\subsubsection*{ The \sbolheading{source} property} +This property has a data type of \external{URI}, and is required to specify the actual location of a qualitative or quantitative model. + +\subsubsection*{ The \sbolheading{language} property} +This property has a data type of \external{URI}, and is required to specify the language the model is implemented with. Values for the URIs should be chosen from the EMBRACE Data and Methods (EDAM) ontology where possible. Some of the model types and corresponding URI values are shown in \ref{tbl:model_types}. + +\begin{table}[ht] + \begin{edtable}{tabular}{ll} + \toprule + \textbf{Model Language} & \textbf{URI} \\ + \midrule + SBML & \url{http://identifiers.org/edam/format_2585}\\ + CellML & \url{http://identifiers.org/edam/format_3240}\\ + BioPAX & \url{http://identifiers.org/edam/format_3156}\\ + \bottomrule + \end{edtable} + \caption{Commonly used model languages and their corresponding URIs.} + \label{tbl:model_types} +\end{table} + + +\subsubsection*{ The \sbolheading{framework} property} +This property has a data type of \external{URI} and is required to specify the modelling framework a model is implemented with. Values for this property should be used from the SBO's modelling framework terms where possible (\ref{tbl:model_frameworks}). + +\begin{table}[ht] + \begin{edtable}{tabular}{ll} + \toprule + \textbf{Framework} & \textbf{URI} \\ + \midrule + Continuous & \url{http://identifiers.org/biomodels.sbo/SBO:0000062}\\ + Discrete & \url{http://identifiers.org/biomodels.sbo/SBO:0000063}\\ + \bottomrule + \end{edtable} + \caption{Example modelling frameworks and corresponding SBO terms.} + \label{tbl:model_frameworks} +\end{table} + +\subsubsection*{ The \sbolheading{role} property} +This property has a data type of \external{URI} and is required to specify what the model is for, such as part or interaction model (\ref{tbl:model_roles}). +\begin{table}[ht] + \begin{edtable}{tabular}{l} + \toprule + \textbf{Model Roles} \\ + \midrule + http://sbols.org/v2\#component\_model\\ + http://sbols.org/v2\#interaction\_model\\ + http://sbols.org/v2\#module\_model\\ + \bottomrule + \end{edtable} + \caption{URI constants for model roles} + \label{tbl:model_roles} +\end{table} + +The serialization of \sbol{Model} objects has the following form: + +\lstsetsbol +\begin{lstlisting} + + ... + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{one or more}] [\emph{element}] + +\end{lstlisting} + +The example below shows the serialization of a \sbol{Model} object. The model object includes information about the models of a toggle switch. The model is implemented in SBML using a continuous modelling framework. The source property shows the physical location of the SBML model, in a model repository. +\lstsetsbol +\begin{lstlisting} + + + + + + + + + + +\end{lstlisting} +\label{ser:Model} + + +\subsection {Collection} +\label{sec:Collection} +The \sbol{Collection} class is another top level class, which groups together \sbol{TopLevel} objects that have something in common. For example, a \sbol{Collection} object could be the result of a query to find all \sbol{Component} objects that function as promoters or all \sbol{Module} objects that function as inverters in a given repository. + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/collection} +\caption[]{The Collection class} +\label{uml:collection} +\end{center} +\end{figure} + +\subsubsection*{The member property} +The member property has a data type of \external{URI} and has the \sbol{identity} value of a \sbol{TopLevel} entity. Each collection must have at least one member. + +The serialization of \sbol{Collection} objects has the following form: + +\lstsetsbol +\begin{lstlisting} + + ... + [\emph{one or more}] [\emph{element}] + +\end{lstlisting} + +The example below shows the serialization of a \sbol{Collection} object. Promoters from a library of constitutive promoters are grouped using the collection example. +\lstsetsbol +\begin{lstlisting} + + + + Anderson + Anderson promoters + The Anderson promoter collection + + ... + + + + +\end{lstlisting} +\label{ser:Collection} + + + + +\subsection{Application Specific Data - Annotations} +\label{sec:annotations} + + + +\todo[inline]{example of custom annotation} + +\subsubsection{Annotating SBOL objects} +SBOL allows embedding application specific data that are not captured by the SBOL standard. Such data are optional, can be computationally generated and exchanged via SBOL documents without getting lost. These custom data are stored in the form of annotations, providing informative metadata about entities in an SBOL document. + +Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. Property names are specified by qualified names as \external{IRI}s, each formed of a namespace and a local name. Values can be \external{IRI}s or \external{Literal}s (for example, \external{String}, \external{Integer}, \external{Double}, \external{Boolean}) or custom \sbol{identity} entities initialized with application specific types. These custom \sbol{identity} entities can further be annotated with the scheme described here. These custom entities are either serialized within an SBOL entity being annotated, or referenced using an \external{IRI} annotation and embedded within the the annotated entity's parent.%TODO Make sure if we have a choice here! + +\begin{figure}[!ht] +\begin{center} + +%Consider putting Identified, uRI, and Literal on the bottom so that inheritance arrows point in the same direction as they do in other diagrams. Another consideration for maintaing consistency with the other diagrams is to add arrow heads to the opposite ends of the black diamond relations. - Nic + +\includegraphics[scale=0.6]{uml/identified_annotations} +\caption[]{Annotating SBOL's Identified entities with application specific data.} +\label{uml:identified_annotations} +\end{center} +\end{figure} + + Each annotation is serialised as an RDF subject-property-object triplet in which the subject is the SBOL object being annotated, the property is the annotation name, and the object is the annotation value. Simple values URIs are serialised as RDF literals, and URI values are represented with the \external{\path{http://www.w3.org/1999/02/22-rdf-syntax-ns#resource}} RDF property. If the annotation value is another complex object then the object is embedded as an RDF resource, which can further be annotated similarly.%TODO If we allow URI reference of a custom object stored, then update this paragraph + +The ComponentDefinition example for a promoter below shows how annotations can be added to SBOL objects. Annotations are added using the relevant information from the Parts Registry. Annotation property names are qualified with the \external{http://www.partsregistry.org/} namespace, which is prefixed using \external{pr}. The first annotation is named as \external{pr:group}, indicating the iGEM group designing the promoter, and has a \external{String} value. The second \external{pr:experience} annotation has a \external{URI} value and is serialised as an RDF resource pointing to the information Web page on the Parts Registry for the promoter. The \external{pr:information} property represents a complex annotation which is a type of \external{pr:Information} and includes information about the regulatory details of the promoter using Parts Registry categories. + +\begin{figure} [ht] +\lstsetsbol +\begin{lstlisting} + + + + iGEM2006_Berkeley + + + + //rnap/prokaryote/ecoli/sigma70 + //regulation/constitutive + + + J23119 + Constitutive promoter + + + + +\end{lstlisting} +\label{ser:Annotation} +\end{figure} + + + + +\subsubsection{GenericTopLevel} +\label{sec:GenericTopLevel} +SBOL documents can also be annotated at the top level. SBOL's \sbol{GenericTopLevel} is a top-level entity that can include a set of annotations as described above. Entities that are at the top-level and are not recognised by the SBOL standard are loaded into these top level entities. These \sbol{GenericTopLevel} entities may have multiple type information and can be used safely by tools to exchange custom data. As with any other top level entities, \sbol{GenericTopLevel} entities may include SBOL properties such as \sbol{name}, \sbol{description}, \sbol{displayId} and so on. The type of the generic entity is indicated using the RDF's \external{type} property. +%TODO: Is it possible to have multiple types for GenericTopLevel elements? If so, update the diagram. + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/generictoplevel} +\caption[]{Annotating SBOL documents with GenericTopLevel entities.} +\label{uml:generictoplevel} +\end{center} +\end{figure} + +The example below shows adding a datasheet object to a SBOL document using the \sbol{GenericTopLevel} class. The J23119 promoter example is annotated with the URI of a top Level Datasheet object. The annotation properties are defined using the custom \external{\path{http://www.myapp.org/}} namespace and the \external{myapp} prefix. The datasheet object, with the data type of \external{myapp:Datasheet}, is accessed using the \external{URI} value specified by the \external{myapp:characterizationData} property of the promoter component definition. The datasheet object is further annotated with the transcription rate and the URI for the actual characterization data using the \external{myapp:transcriptionRate} and \external{myapp:characterizationData} properties respectively. + +\begin{figure}[ht] +\lstsetsbol +\begin{lstlisting} + + + + + J23119 + Constitutive promoter + + + + + + 1 + Datasheet 1 + + + +\end{lstlisting} +\label{ser:GenericTopLevel} +\end{figure} diff --git a/practices.tex b/practices.tex new file mode 100644 index 00000000..69c7bd9f --- /dev/null +++ b/practices.tex @@ -0,0 +1,34 @@ +% ----------------------------------------------------------------------------- +\section{Best Practices} +\label{sec:bestpractices} +% ----------------------------------------------------------------------------- +\subsection{Versioning} +Currently, if a developer wishes to change a SBOL object that has been published to the Web, then as a best practice they should create a copy of the SBOL object that incorporates the change, but has a new URI. This practice, however, does not inherently involve a standardized declaration that the second object is a version of the first. Consequently, the \sbol{persistentIdentity}, and \sbol{version} data fields have been created to provide developers with the means to declare that a set of SBOL objects are versions of each other (by virtue of having the same persistent URI) and label these objects with version Strings. + +\todo[inline]{try to target readers unfamiliar with RDF/XML. -bder} +%TODO[version]{maybe clarify what type of versioning is this object affecting? TN} + +\subsection{Using External Terms} +External ontologies and controlled vocabularies are integral part of SBOL. Through these resources SBOL utilises existing biological information where possible. New SBOL specific terms are defined only when necessary. Instead, SBOL provides placeholders that can point to external terms. For example, the types of components whether they are DNA or protein based are indicated using BioPAX. Similarly, the functionality of a DNA component is determined via the SO terms. Although preferred ontologies have been explained in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found at \ref{tbl:preferred_external_resources}. + + +\begin{table}[ht] + \begin{edtable}{tabular}{p{3cm}p{3cm}p{4cm}} + \toprule + \textbf{SBOL Entity} & \textbf{Property} & \textbf{Preferred External Resource}\\ + \midrule + \textbf{ComponentDefinition} & type & BioPAX \\ + & role & SO (if type is \textit{DNA} or \textit{RNA}) \\ + & role & CHEBI (if type is \textit{small molecule}) \\ + & role & UniProt (if type is \textit{protein}??) \\%TODO What is the external resource for proteins, diccuss it. protein - GO instead of UnitProt +\\%TODO Should there be an external listing for all Top Level? + + \textbf{Interaction} & type & SBO \\ + \textbf{Participation} & type & SBO \\ + \textbf{Model} & language & EDAM \\ + & framework & SBO \\ + \bottomrule + \end{edtable} + \caption{SBOL properties and preferred external resources to choose values from.} + \label{tbl:preferred_external_resources} +\end{table} diff --git a/purpose.tex b/purpose.tex new file mode 100644 index 00000000..0e4cdf83 --- /dev/null +++ b/purpose.tex @@ -0,0 +1,31 @@ +h% ----------------------------------------------------------------------------- +\section{Purpose} +% ----------------------------------------------------------------------------- +% Synthetic biology aims to apply engineering principles such as standardization, modularity, and design abstraction to molecular biology. However, synthetic biology still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. + +% The Synthetic Biology Open Language is intended to help synthetic biologists collaborate by allowing them to exchange designs in a standardized data format. In addition, the SBOL data model systematically describes the essential details of a design that are required for researchers to reproduce each other's designs in the laboratory. The purpose of the Synthetic Biology Open Language is to aid collaboration between researchers, improve scientific reproducibility, and to speed the research and development of technologies based on synthetic biology. + +% Below is my revision. Any thoughts? - Nic + +Synthetic biology builds upon the techniques and successes of genetics, molecular biology and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. +\todo[inline]{Maybe discuss more about how SBOL is a standard. Huge transition from what is Synethic Biology to SBOL} + +To help address these challenges, the Synthetic Biology Open Language (SBOL) introduces a standardized file format for the electronic exchange of biological designs and a standardized data model for the reproducible description of essential design details. Ultimately, SBOL is intended to speed up the research and development of designed biological systems by enhancing the exchange and reproducibility of biological designs between different labs. + +Version 1.1 of the SBOL standard focused on representing the structural aspects of genetic designs. To serve as an effective medium for the computational exchange of genetic designs, SBOL must be extended to capture more aspects of a designed system, including both structural and functional information, and the composition of complex structural and functional designs by combining simpler parts. The SBOL data model proposed in this specification provides for addressing the most pressing needs for expanding SBOL Version 1.1. + +\begin{enumerate} + +\item represent structural components of a biological design, including DNA, RNA, proteins, small molecules and other physical components + +\item describe behavioral aspects of a biological design, the intended or expected interactions and dynamic behavior + +\item associate structure and function together, so that a single design can be understood both in terms of its structure and its behavior + +\item support rich annotations of all components, so that data required to describe a design, but not formalized in this specification can be safely exchanged + +\end{enumerate} + +Taken together, these capabilities allow SBOL sufficient expressivity to support the description and exchange of hierarchical, modular representations of both the intended structure and function of designed biological systems. + +To address the need for functional descriptions in SBOL, the proposed data model adds classes for modules, interactions, and models. These classes provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the Systems Biology Markup Language (SBML)~\cite{SBML} to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. diff --git a/sbol.bib b/sbol.bib index ee0c2888..add87a9f 100644 --- a/sbol.bib +++ b/sbol.bib @@ -23,3 +23,12 @@ @misc{matlab publisher = {The MathWorks Inc.}, address = {Natick, Massachusetts} } + +@Article{Gardner2000, + author = "Timothy S. Gardner and Charles R. Cantor and James J. Collins", + title = "Construction of a genetic toggle switch in Escherichia coli", + journal = "Nature", + volume = "403", + pages = "339-342", + year = "2000" +} diff --git a/sbol2.tex b/sbol2.tex index 725a6802..a5ff8008 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -56,7 +56,7 @@ \definecolor{gray}{rgb}{0.5,0.5,0.5} \definecolor{light-gray}{gray}{0.97} \lstdefinelanguage{sbol} - {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:sequence,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation,sbol:component,sbol:location, sbol:sequenceAnnotation, sbol:Range, sbol:start, sbol:end, sbol:orientation,sbol:SequenceConstraint, sbol:restriction, sbol:subject, sbol:object,sbol:Sequence, sbol:elements, sbol:encoding,sbol:Model, sbol:source, sbol:language, sbol:framework}, + {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:MapsTo, sbol:sequence,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation,sbol:component,sbol:location, sbol:sequenceAnnotation, sbol:Range, sbol:start, sbol:end, sbol:orientation,sbol:SequenceConstraint, sbol:restriction, sbol:subject, sbol:object,sbol:Sequence, sbol:elements, sbol:encoding,sbol:Model, sbol:source, sbol:language, sbol:framework,sbol:FunctionalComponent, sbol:Module, sbol:Interaction, sbol:interaction, sbol:subModule, sbol:model}, basicstyle=\fontsize{7}{9}\selectfont\ttfamily, backgroundcolor=\color{light-gray}, keywordstyle=\color{blue}, @@ -90,8 +90,6 @@ \newcommand{\external}[1]{\texttt{#1}} - - % ----------------------------------------------------------------------------- % Start of document % ----------------------------------------------------------------------------- @@ -136,57 +134,15 @@ \maketitlepage \maketableofcontents -% ----------------------------------------------------------------------------- -\section{Purpose} -% ----------------------------------------------------------------------------- -% Synthetic biology aims to apply engineering principles such as standardization, modularity, and design abstraction to molecular biology. However, the field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. - -% The Synthetic Biology Open Language is intended to help synthetic biologists collaborate by allowing them to exchange designs in a standardized data format. In addition, the SBOL data model systematically describes the essential details of a design that are required for researchers to reproduce each other's designs in the laboratory. The purpose of the Synthetic Biology Open Language is to aid collaboration between researchers, improve scientific reproducibility, and to speed the research and development of technologies based on synthetic biology. - -% Below is my revision. Any thoughts? - Nic - -Synthetic biology builds upon the techniques and successes of genetics, molecular biology and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. - -To help address these challenges, the Synthetic Biology Open Language (SBOL) introduces (1) a standardized file format for the electronic exchange of biological designs and (2) a standardized data model for the reproducible description of essential design details. Ultimately, SBOL is intended to speed up the research and development of designed biological systems by enhancing the exchange and reproducibility of biological designs between different labs. - -The current SBOL standard, Version 1.1, focuses upon representing the structural aspects of genetic designs. To serve as an effective medium for the computational exchange of genetic designs, SBOL must be extended to capture more aspects of a designed system, including both structural and functional information, and the composition of complex structural and functional designs by combining simpler parts. The SBOL data model proposed in this specification provides for addressing the most pressing needs for expanding SBOL Version 1.1. - -\begin{enumerate} - -\item represent structural components of a biological design, including DNA, RNA, proteins, small molecules and other physical components - -\item describe behavioral aspects of a biological design, the intended or expected interactions and dynamic behavior - -\item associate structure and function together, so that a single design can be understood both in terms of its structure and its behavior - -\item support rich annotations of all components, so that data required to describe a design, but not formalized in this specification can be safely exchanged - -\end{enumerate} - -Taken together, these capabilities allow SBOL sufficient expressivity to support the description and exchange of hierarchical, modular representations of both the intended structure and function of designed biological systems. - -To address the need for functional descriptions in SBOL, the proposed data model adds classes for modules, interactions, and models. These classes provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the Systems Biology Markup Language (SBML)~\cite{SBML} to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. +\input{purpose} % ----------------------------------------------------------------------------- %\section{Relation to other BBF RFCs} % ----------------------------------------------------------------------------- -% ----------------------------------------------------------------------------- -\section{Copyright and License Statement} -% ----------------------------------------------------------------------------- - -%% Variation from BBF RFC 0 specs confirmed in email communication with BBF by Jake Beal, 3/21/15 - -Copyright (C) The BioBricks Foundation and all authors listed on this BBF RFC. This work is made available under the Creative Commons Attribution 4.0 International Public License. To view a copy of this license visit \href{https://creativecommons.org/licenses/by/4.0/}{https://creativecommons.org/licenses/by/4.0/}. +\input{copyright} -% ----------------------------------------------------------------------------- -\section{History and Acknowledgements} -% ----------------------------------------------------------------------------- -%Add yourself if you have helped and aren't on the list - -SBOL originated in discussions between participants in the Synthetic Biology Open Language Workshops held in Blacksburg, Virginia on January 7-10, 2011, and its further development has continued at a series of subsequent open invitation workshops and through email exchanges on the SBOL Developers mailing list. - -Contributors to this work include: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University). +\input{history} % Removed as redundant: %----------------------------------------------------------------------------- @@ -197,1180 +153,42 @@ \section{History and Acknowledgements} % %The goal of this specification is to define the terminology and relationships used to describe biological designs. In order to provide a shared understanding between engineers seeking to exchange biological designs, SBOL provides a common definition of the concepts needed. As much as possible, we attempt to make explicit the meaning of all terminology and data structures. +\input{serialization} -% ----------------------------------------------------------------------------- -\section{SBOL RDF Serialization} -% ----------------------------------------------------------------------------- - -The SBOL serialization is designed to meet several competing requirements. Firstly, it needs to support ad-hoc annotations and extensions. Secondly, it needs to support processing by generic semantic web and database tools that have little or no knowledge of the SBOL data model. Thirdly, it needs to support the generation of light-weight software clients so as to lower the barrier to entry for new API implementations within environments were the community-maintained implementation(s) are not suitable. - -The canonical serialization of SBOL is to a strict dialect of XML-RDF. This provides the base from which to meet the requirements. Any XML-RDF-aware tooling can consume and analyze an SBOL file. Where possible, we have re-used predicates from widely-used terminologies (such as Dublin Core REF) to expose as much of the data as practical to standard RDF tooling. - -Arbitrary XML-RDF provides a great deal of flexibility in how equivalent data can be serialized. This makes it different to process RDF-XML files using standard off-the-shelf XML tools, such as DOM-OO mappings. To address this, we define a canonical association between the nesting of data structures within the SBOL UML data model and the RDF-XML file. For all associations that are ownership (filled diamonds), the RDF-XML for the owned entity is embedded within that of the owner. For all associations that are by reference (open diamonds), the RDF-XML for the referenced property is linked to via a resource URI. - -All first-class SBOL datatypes have an associated identity URI. In the RDF, this is the resource URI for instances of that type. Properties and associations are asserted as nested RDF-XML assertions. Some datatypes are `top level', which means that they always appear at the top level of the RDF-XML serialization. All other datatypes will always appear nested within their container. - -Each instance of a first-class SBOL datatype may have annotations attached. These are composed of a name and a value. These are serialized to RDF as a triple with the subject being the identity of the instance they annotate, the predicate being the name of that annotation, and the object being the value of that annotation. Annotation values are always nested within the RDF-XML serialization of the instance that they annotate. - -SBOL supports top-level, user-defined annotations. This is to allow non-standardized but necessary information to be carried around as part of a design. For example, a particular sub-community may have an internal standard for data sheets. Individual data sheets can be represented as a generic top-level annotation with internal structured annotations. This will be serialized into the RDF-XML in the usual way, as a RDF-XML block at the top level of the file. Other objects may refer to this through their annotations by reference, and this generic top-level entity may refer to other entities via references. - -Through this design for the XML-RDF serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. As exactly the same scheme is used to serialize annotations and specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of these. Those not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entries in an SBOl file, we enable future specifications or extensions to ratify the structure of some of these. They would then become something represented by an explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely round-trip the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. The very regimented control of nesting vs referencing allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL XML-RDF files safely. - - -% ----------------------------------------------------------------------------- -\section{Overview of SBOL} -% ----------------------------------------------------------------------------- -Typically, information about a genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow defining genetic circuits unambiguously, and reusing the designs. Interactions between these constituents are then used to construct biologically plausible designs. - -In the figure below, a simple toggle switch system is displayed, in which LacI and TetR repress each other transcriptionally. The toggling of the system is controlled by adding IPTG to deactivate LacI, and ATC to deactivate TetR. The components of the system includes genetic elements, proteins, small molecules. - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.4]{images/toggleswitch_flat} -\caption[]{An example toggle swicth genetic circuit. } -\label{images:toggleswitch_flat} -\end{center} -\end{figure} - -SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. - - -SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements modularly, modules that are composed of different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. - -The same toggle switch is now displayed using two LacI and TetR inverter submodules in figure \ref{images:toggleswitch_modular}. The LacI inverter uses LacI as input and produces the TetR output, and the TetR inverter uses TetR as input and produces the LacI output. These inputs and outputs are mapped in a parent module. - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.4]{images/toggleswitch_modular} -\caption[]{Representing hierarchical composition of the toggle switch genetic circuit.} -\label{images:toggleswitch_modular} -\end{center} -\end{figure} - -% ----------------------------------------------------------------------------- -\section{SBOL Vocabulary} -% ----------------------------------------------------------------------------- -SBOL defines several entity types in order to explicitly define different types of information. At the top level, a SBOL document includes these entities: - -\vspace*{2ex} -\begin{center} - \begin{edtable}{tabular}{>{\hspace*{10pt}\slshape}l>{\hspace*{40pt}}l} - list of component definitions(optional) & (\sec*{sec:ComponentDefinition}) \\ - list of sequences (optional) & (\sec*{sec:Sequence}) \\ - list of module definitions (optional) & (\sec*{sec:ModuleDefinition}) \\ - list of models (optional) & (\sec*{sec:Model}) \\ - list of collections (optional) & (\sec*{sec:Collection}) \\ - list of generic top level entities (optional) & (\sec*{sec:GenericTopLevel}) \\ - \end{edtable} -\end{center} -\vspace*{2ex} - -In addition to these top level entities, a SBOL document may include addiitonal entities that are nested within the top level entities. Short descriptions of all SBOL entities are given below: - -\begin{description} - -\item \emph{\sbol{ComponentDefinition}}: Represents biological molecules such as DNA, proteins, RNA and small molecules. - -\item \emph{\sbol{Component}}: -Represents a specific occurrence of a component within a larger design. For a given component definition, there may be several instances of components specified at different locations within the larger design. -\item \emph{\sbol{SequenceAnnotation}}: -A sequence annotation describes the position and strand orientation (in the case of DNA molecules) of a notable sub-sequence found within the Component being -described. Annotations provide the link which describes -sequence of a component in terms of other components, -subComponents. -\item \emph{\sbol{Location}}: -A Location specifies the coordinates of a genetic locus on a DNA molecule or a residue or site on other sequential macromolecules such as proteins. -\item \emph{\sbol{SequenceConstraint}}: -A Sequence Constraint describes the relative spatial orientation of Components which are assembled together into a biological structure. -\item \emph{\sbol{Sequence}}: -A sequence is a contiguous sequence of monomers in a macromoleculer polymer such as DNA, RNA, and protein. The -sequence is a fundamental information object for synthetic biology and is needed to reuse components, replicate synthetic biology work, and to assemble new synthetic biological systems. Therefore, both experimental work and theoretical sequence composition research depend heavily on the sequence associated with component definitions. -\item \emph{\sbol{ModuleDefinition}}: -A Module Definition desribes an abstract functional module that may be composed of many functional interactions between biological components. -\item \emph{\sbol{FunctionalComponent}}: -An occurrence of a component that is intended to have a biological function inside a design, as opposed to a component whose purpose is simply to compose a biological structure. -\item \emph{\sbol{Module}}: -Represents a specific occurrence of a functional module within a larger design. For a given module definition, there may be several instances of modules that specify the overall function of a biological design. -\item \emph{\sbol{MapsTo}}: - -\item \emph{\sbol{Interaction}}: -Interactions describe a functional relationship between biological effectors, such as regulatory activation or repression. Interactions also describe processes from the central dogma of biology, such as transcription and translation. -\item \emph{\sbol{Participation}}: -Describes the role that a component plays in a functional interaction. For example, a transcription factor may participate in an interaction either as a repressor or activator. -\item \emph{\sbol{Model}}: -Links an SBOL representation of biological components and their interactions to quantitative, computational models that may be used to predict the functional behavior of a biological design. -\item \emph{\sbol{Collection}}: -A Collection is an organizational container for Components, a group defined by the user for convenience. -\item \emph{\sbol{GenericTopLevel}}: -This is a data container that can contain custom data added by user applications. -\end{description} - - -% ----------------------------------------------------------------------------- -\section{SBOL Data Model} -% ----------------------------------------------------------------------------- -In this section, we describe the types of biological design data that can belong to an SBOL document and the relationships between these data types. The SBOL data model is specified using Unified Modeling Language (UML) 2.0 diagrams \href{http://www.omg.org/spec/UML/2.0/}{(OMG 2005)}. - -Complete SBOL examples and best practices when using SBOL can be found in \ref{sec:examples} and \ref{sec:bestpractices}, respectively. - -\subsection{Understanding the UML Diagrams} - -The types of biological design data modeled by SBOL are commonly referred to as classes, especially when discussing the details of software implementation. Classes are represented in UML diagrams as rectangles labeled at the top with class names. Classes may be connected to other classes by association properties, which are represented in UML as arrows labeled with data cardinalities. Finally, the remaining class properties are listed below class names inside the rectangles and are labeled with their data types and cardinalities (explained below). - -Association properties between SBOL classes are directional. An arrowhead indicates the direction in which an association can be traversed, while a diamond at the beginning of an arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, which means that objects of the class at the end of the arrow exist independently of any objects of the class that has the association property. In contrast, filled diamonds indicate composite aggregation or a part-whole relationship, in which objects of the class at the end of the arrow cannot exist independently and must be associated with at most one object of the class that has the association property. For example, it will later be shown how objects of the \sbol{SequenceAnnotation} class must associated with an object of the \sbol{ComponentDefinition} class (and only that object). - -All SBOL properties are labeled with data cardinality restrictions. These are: - -\begin{itemize} - -\item $1$ - required, one: there must be exactly one value for this property. - -\item $0 \ldots 1$ - optional: there may be a single value for this property or it may be absent. - -\item $0 \ldots *$ - unbounded: there may be any number of values for this property, including none. - -\item $1 \ldots *$ - required, unbounded: there may be any number of values for this property, as long as there is at least one. - -\item $n \ldots *$ - at least: there must be at least $n$ values for this property. - -\end{itemize} - -Within the SBOL data model, all properties are given a singular or plural name in accordance with their data cardinalities. The forms of these names follow the usual rules of grammar. For example, \sbol{sequenceAnnotation} is the singular form of \sbol{sequenceAnnotation}s. - -Within the RDF serialization of SBOL, however, SBOL properties are always given singular names. The serialization does not use RDF collections to represent multiple values of an SBOL property. Hence, if a SBOL property has five values, then its serialization contains five RDF triples with singular predicate names. - -Within an implementing Object-Oriented (OO) API, SBOL properties should be mapped to member accessors that are similarly named and that return idiomatic representations of these properties. For example, a Java implementation would use common Java idioms. In this case, the member accessor for an optional SBOL property could return a Java primitive value, Java object, or null, while the accessor for a multi-valued SBOL property could return a Java \external{Collection}. In general, OO member accessors for multi-valued SBOL properties should never return null. - -As another example, a relational implementation of the SBOL API would store the properties and associations a mixture of data fields and references via foreign keys. The fields in individual tables will correspond to the `arrowhead' end of an association (in reverse to the direction in the RDF and OO representations), and the name may be modified to reflect this change in directionality. For example, the \sbol{sequence} association between a \sbol{ComponentDefinition} and \sbol{Sequence} would be represented by a foreign key field on the \sbol{Sequence} table that references a row in the \sbol{ComponentDefinition} table, and it may be named \external{sequenceOf}. - -\subsection {SBOL Document} -An SBOL document is a valid RDF/XML document. Accordingly, each SBOL document starts with an XML declaration that has its XML version set to ``1.0.'' As shown in the example below, this declaration is then followed by a rdf:RDF XML element that includes the namespace declarations for RDF and SBOL. The latter namespace is used to indicate which entities and properties in the SBOL document are defined by SBOL. - -\lstsetsbol -\begin{lstlisting} - - -... - -\end{lstlisting} - -As explained in \ref{sec:annotations}, SBOL documents can also include custom namespace declarations for the purpose of embedding application-specific data. - - -\subsection {Identified} -\label{sec:Identified} - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/identified} -\caption[]{The Identified abstract class} -\label{uml:identified} -\end{center} -\end{figure} - -All SBOL-defined classes are directly or indirectly derived from the Identified abstract class. This inheritance enables SBOL objects to be identified using unique URIs that may refer to relative locations within an SBOL document or URLs that refer to locations on the World Wide Web. This class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, and \sbol{version}. -(\ref{uml:identified}). -%TODO: Is there any example SBOL entity that does not derive from Identified? - -\subsubsection*{The \sbolheading{identity} property} -\label{sec:identity} -This property is required by all \sbol{Identified} objects and has a datatype of \external{URI}. As before in SBOL Version 1.1, this \external{URI} serves to uniquely identify an SBOL object. The \sbol{identity} property can be used to point to other objects in the same SBOL document or resources on the Web. Although most SBOL properties are defined under the SBOL namespace, this property is defined under the RDF namespace using the term below. - -\external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. - -\subsubsection*{The \sbolheading{persistentIdentity} property} -\label{sec:persistentIdentity} -The \sbol{persistentIdentity} property is optional and also has a datatype of \external{URI}. This property is used to declare that a set of SBOL objects are versions of each other (by virtue of having the same persistent identity). This persistent identity can be used to return the most up-to-date version of a SBOL object. - -\subsubsection*{The \sbolheading{version} property} -\label{sec:version} -This property has a datatype of \external{String} and is used along with the \sbol{persistentIdentity} property to indicate the version of an SBOL object for comparison with other SBOL objects with the same persistent identity. - -\subsection {Documented} -\label{sec:Documented} -The Documented abstract class in SBOL represents objects that can be decorated with human-readable properties, such as name and description. This class extends \sbol{Identified} with three additional data properties: \sbol{displayId}, \sbol{name}, and \sbol{description} (\ref{uml:documented}). - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/documented} -\caption[]{The Documented class} -\label{uml:documented} -\end{center} -\end{figure} - -\subsubsection*{The \sbolheading{displayId} property} -\label{sec:displayId} -An optional display ID, with a data type of \external{String}. It is intended to be used when visualising SBOL objects. - -\subsubsection*{The \sbolheading{name} property} -\label{sec:name} -An optional, human readable name property, with a data type of \external{String}. If a \sbol{Documented} object lacks a \sbol{displayId}, it is expected that software tools will instead display the entity's \sbol{name} or \sbol{identity} as a last resort. - -\subsubsection*{The \sbolheading{description} property} -\label{sec:description} -An optional, free text description property with the data type of \external{String}. - - - - -\subsection {TopLevel} -\label{sec:TopLevel} -\sbol{TopLevel} is an abstract class that is extended by any \sbol{Documented} object that can be found at the top level of a SBOL file, that is any SBOL object that is not nested inside another object when written to a file. Instead of nesting, composite \sbol{TopLevel} objects link to their subordinate \sbol{TopLevel} objects via \external{URI}s when written to a file. For example, a composite \sbol{Component} object A would link to its sub-Component object B using B's \external{URI}. TopLevel classes include \sbol{Sequence}, \sbol{ComponentDefinition}, \sbol{ModuleDefinition}, \sbol{Module}, \sbol{Collection} and \sbol{GenericTopLevel} (\ref{uml:toplevel}). - -\begin{figure}[ht] -\begin{center} -\includegraphics[width=\textwidth]{uml/toplevel} -\caption[]{The TopLevel classes} -\label{uml:toplevel} -\end{center} -\end{figure} - - - - -\subsection{ComponentDefinition} -\label{sec:ComponentDefinition} -The proposed Version 2.0 data model generalizes the DnaComponent class of SBOL Version 1.1 to a \sbol{ComponentDefinition} class in order to support an increased range of structural representation. A \sbol{ComponentDefinition} can represent genetic components such as DNA, but also RNA and proteins which were unrepresented in Version 1.1. Additionally, the generalized \sbol{ComponentDefinition} class can even represent non-genetic components, such as non-biological polymers, small molecules, molecular complexes, and even light. - -% Figure has some classes named incorrectly -\begin{figure}[ht] -\begin{center} -\includegraphics[width=0.95\textwidth]{uml/component_definition} -\caption[]{ComponentDefinition} -\label{uml:component_definition} -\end{center} -\end{figure} - - - -% Examples of ontologies for non-molecular type gs (eg, light)...? -\subsubsection*{The \sbolheading{type} property} -\label{sec:type} -In order to specify the blueprint for a molecular component, a \sbol{ComponentDefinition} must have at least one types \external{URI} that identifies a term from an appropriate ontology, such as the ontology of Chemical Entities of Biological Interest (ChEBI) and the BioPAX ontology (\ref{tbl:componentdefinition_types}). A type URI documents the basic sort of biochemical or physical entity (for example DNA, protein, or RNA) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. If a \sbol{ComponentDefinition} object has multiple type URIs, then they must identify synonymous terms. - -\begin{table}[ht] - \begin{edtable}{tabular}{ll} - \toprule - \textbf{Entity Type} & \textbf{BioPAX Term} \\ - \midrule - DNA & \url{http://www.biopax.org/release/biopax-level3.owl#DnaRegion}\\ - RNA & \url{http://www.biopax.org/release/biopax-level3.owl#RnaRegion}\\ - Protein & \url{http://www.biopax.org/release/biopax-level3.owl#Protein}\\ - Small Molecule & \url{http://www.biopax.org/release/biopax-level3.owl#SmallMolecule}\\ - \bottomrule - \end{edtable} - \caption{BioPAX terms to specify the types of ComponentDefinition objects.} - \label{tbl:componentdefinition_types} -\end{table} - - -\textcolor{red}{Examples of ontologies for non-molecular type ComponentDefinitions (eg, light)...?} - -\subsubsection*{The \sbolheading{role} property} -\label{sec:role} - -The \sbol{role} of a ComponentDefinition object, on the other hand, are analogous to the type of a DnaComponent object in SBOL Version 1.1. Role URIs are expected to identify ontology terms that clarify a \sbol{ComponentDefinition} object's potential function in a biological context. For example, a \sbol{ComponentDefinition} object of type ``DNA'' may have a role of ``promoter'' or ``terminator,'' terms taken from the Sequence Ontology (SO). A ComponentDefinition object of type ``protein,'' on the other hand, may have a role of ``transcription factor'' or ``protease.'' - - -\subsubsection*{The \sbolheading{subComponent} property} -\label{sec:subComponent} -Another significant change from SBOL version 1.1 is that a layer of design abstraction has been added to the \sbol{ComponentDefinition} class. Instances of this class may have \sbol{subComponent}s, each pointing to a \sbol{Component} object. The \sbol{ComponentDefinition} class is analagous to a blueprint or parts specification sheet for a biological part. In contrast, the \sbol{Component} class represents specific occurrences of parts within a design. Thus the new version of SBOL supports biological designs that re-use the same component more than once. - -\subsubsection*{The \sbolheading{sequence} property} -\label{sec:sequence} -The sequence property is optional and includes the URI a corresponding \sbol{Sequence} object. - -\subsubsection*{The \sbolheading{sequenceConstraint} property} -\label{sec:sequenceConstraint} - -\subsubsection*{The \sbolheading{sequenceAnnotation} property} -\label{sec:sequenceAnnotation} -Finally, a ComponentDefinition object can define its structure by linking to objects that belong to the Component, Sequence, SequenceAnnotation, and SequenceConstraint classes. These classes are described below. - -\subsubsection*{Serialization} -Parent classes of the \sbol{ComponentDefinition} class includes \sbol{TopLevel}, \sbol{Documented} and \sbol{Identified}. As a result, inherited properties are serialised as explained for these parent classes. The sequence property of a \sbol{ComponentDefinition} object includes a URI to a \sbol{Sequence} object and this URI is serialized as an rdf:resource. The \sbol{type} property may include a collection of type URIs and is serialized as an implicit collection, ignoring the property name ``types''. The \sbol{role} property is also similarly serialized as an implicit collection of sbol:role properties. - -%Todo:Add the serialization descriptions to parent classes. -\lstsetsbol -\begin{lstlisting} - - ... - [\emph{zero or one}] ...[\emph{element}] - [\emph{zero or one}] ...[\emph{element}] - [\emph{zero or one}] [\emph{element}] - [\emph{one or more}] [\emph{elements}] - [\emph{one or more}] [\emph{elements}] - [\emph{zero or more}] - ... - [\emph{elements}] - [\emph{zero or more}] - ... - [\emph{elements}] - -\end{lstlisting} - -The example below shows the serialization of a simple \sbol{ComponentDefinition} object. The \external{DnaRegion} from BioPAX and \external{CHEBI:4705} from CHEBI are used to indicate the type of the biological entity as a DNA molecule. Its role is specified via the generic \external{SO:0000167} (\external{promoter}) and more specific \external{SO:0000613} (\external{bacterial\_RNApol\_promoter}) terms. - -\lstsetsbol -\begin{lstlisting} - - J23119 promoter - Constitutive promoter - - - - - - -\end{lstlisting} - - -\subsubsection{ComponentInstance} -\label{sec:ComponentInstance} - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/component_instance} -\caption[]{Component} -\label{uml:component} -\end{center} -\end{figure} - -% The second sentence is confusing. -Hierarchical compositions of structure and function is enabled via the ComponentInstance class. Each ComponentInstance object has three data fields. \textcolor{red}{The first data field, ``definition'', links to the Component object that is effectively a part of the Component or Module object that owns the ComponentInstantiation object.} The second data field, ''access'', defines whether the ComponentInstance object can be referred to by ComponentInstance objects that are higher in the design hierarchy (yes if access is set to ''public''). The third data field, ``mappings'', is a set of MapsTo objects that link between other ComponentInstance objects at the same level of the design hierarchy as well as other ComponentInstance objects that are lower in the design hierarchy, thereby composing these objects with greater specificity (see first module example). - -There are two subclasses of the ComponentInstance class: the Component and FunctionalComponent classes. - - - - -\subsubsection{Component} -\label{sec:Component} -Composition of the structural layer of SBOL designs is accomplished using \sbol{Component} objects. Each \sbol{Component} object is owned by a ComponentDefinition object and serves as an explicit usage of a \textcolor{red}{sub-Component} object for the purpose of physical composition. - - - -\subsubsection{SequenceAnnotation} -\label{sec:SequenceAnnotation} -The \sbol{SequenceAnnotation} class describes a location of interest on the \sbol{Sequence} object linked by its parent \sbol{ComponentDefinition} object and may optionally associate this location with a \sbol{Component} object. \sbol{SequenceAnnotation} objects specify their location using a \sbol{Location} object. As explained below, the \sbol{Location} class is extended by several different classes, some of which assert locations other than simple ranges with start and end positions. - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/sequence_annotation} -\caption[]{SequenceAnnotation class} -\label{uml:sequence_annotation} -\end{center} -\end{figure} - -\paragraph{The \sbolheading{location} property} -Every \sbol{SequenceAnnotation} must have a location property. The value of this property is a nested \sbol{Location} object. - -\paragraph{The \sbolheading{component} property} -\sbol{SequenceAnnotation} objects may have this property to link location information to a \sbol{Component} object. The value of this property is a \sbol{Component} URI. +% % ----------------------------------------------------------------------------- +% \section{Overview of SBOL} +% % ----------------------------------------------------------------------------- +% Typically, information about a genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. Interactions between these constituents are then used to construct biologically plausible designs. -The serialization of SequenceAnnotation objects can be carried out according to the example below. A\_LOCATION\_SUBCLASS represents one of the Location subclasses. -\lstsetsbol -\begin{lstlisting} - - ... - [\emph{zero or one}] [\emph{element}] - [\emph{one}] - ... - [\emph{element}] - -\end{lstlisting} +% In the figure below, a simple toggle switch system is displayed, in which LacI and TetR repress each other's genes transcriptionally. The toggling of the system is controlled by adding IPTG to deactivate LacI, and ATC to deactivate TetR. The components of the system includes genetic elements, proteins, small molecules. +% \begin{figure}[ht] +% \begin{center} +% \includegraphics[scale=0.4]{images/toggleswitch_flat} +% \caption[]{An example toggle swicth genetic circuit. } +% \label{images:toggleswitch_flat} +% \end{center} +% \end{figure} +% SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. -\subsubsection{Location} -\label{sec:Location} -The Location class is extended by the \sbol{Range}, \sbol{MultiRange}, and \sbol{Cut} classes. +% SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. +% \todo[inline]{I would suggest a more complete and more explicit mapping of vocabulary to the toggle switch example. -bder} -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/location} -\caption[]{Location class} -\label{uml:location} -\end{center} -\end{figure} +% The same toggle switch is now displayed using two LacI and TetR inverter submodules in figure \ref{images:toggleswitch_modular}. The LacI inverter uses LacI as input and produces the TetR output, and the TetR inverter uses TetR as input and produces the LacI output. These inputs and outputs are mapped in a parent module. +\input{vocabulary} +\input{model} +\input{examples_model} -\paragraph{Range} -\label{sec:Range} -A \sbol{Range} object specifies inclusive start and end positions. These properties are required in \sbol{Range} objects and they can have \external{integer} values greater than zero. A \sbol{Range} object also includes an ``orientation'' property, for example to to specify directionality on a potentially double-stranded \sbol{Component} object. +\input{examples_serialization} -\paragraph{The \sbolheading{start} property} -Specifies the start of a \sbol{Range}. This property is required and can have \external{integer} values greater than zero. - -\paragraph{The \sbolheading{end} property} -Specifies the end of a \sbol{Range}. This property is required and can have \external{integer} values greater than zero. - -\paragraph{The \sbolheading{orientation} property} -This property is optional has a \external{URI} value. However, for \sbol{ComponentDefinition} objects representing DNA molecules, it is recommended that one of the orientation values are chosen (\ref{tbl:orientation_types}). - -\begin{table}[ht] - \begin{edtable}{tabular}{l} - \toprule - \textbf{Orientation Types} \\ - \midrule - http://sbols.org/v2\#inline\\ - http://sbols.org/v2\#reverseComplement\\ - \bottomrule - \end{edtable} - \caption{URI constants for orientation values} - \label{tbl:orientation_types} -\end{table} - -The serialization of Range objects has the following form: -\lstsetsbol -\begin{lstlisting} - - ... - [\emph{one}] ... [\emph{element}] - [\emph{one}] ... [\emph{element}] - [\emph{zero or one}] [\emph{element}] - -\end{lstlisting} - -The example below shows the serialization of a \sbol{Range} object. It specifies the region between 56 and 68, and the orientation is given as \external{inline}. -\lstsetsbol -\begin{lstlisting} - - 56 - 68 - - -\end{lstlisting} - -\paragraph{MultiRange} -\label{sec:MultiRange} -A MultiRange object represents a location that is specified by multiple Range objects. For example, this capability can be used to specify a ComponentDefinition object that represents the introns or exons of a eukaryotic gene. - -\paragraph{Cut} -\label{sec:Cut} -The Cut class has been introduced to enable the specification of a location between two indices. Each Cut object has a single integer data field, ``at'', that specifies the index just before the location represented by the Cut object. Even though there is no zero index on Structure objects in SBOL, a Cut object with “at” equal to zero represents the location just before index one. The OrientedCut class extends the Cut class with an orientation in the same way that the OrientedRange class extends the Range class. - -Finally, while the Range and Cut classes are best suited to describing locations on sequential structures, the Location class can be extended in the future to better describe locations on Component Objects with non-sequential structure (see unspecified Moeity class as potential means for specifying locations in more than one dimension). - - - - -\subsubsection{SequenceConstraint} -\label{sec:SequenceConstraint} -A \sbol{ComponentDefinition} object can link to \sbol{SequenceConstraint} objects to assert different kinds of structural restrictions between two \sbol{Component} objects that are its subcomponents. A SequenceConstraint object requires \sbol{restriction}, \sbol{subject} and \sbol{object} properties to specify different constraints. - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/sequence_constraint} -\caption[]{SequenceConstraint class} -\label{uml:sequence_constraint} -\end{center} -\end{figure} - -\paragraph{The \sbolheading{subject} property} -\label{sec:subject} -This property is required to specify the component that a restriction is applied to, and includes the \external{URI} \sbol{identity} of this \sbol{Component} object. - -\paragraph{The \sbolheading{object} property} -\label{sec:object} -This property includes the \external{URI} \sbol{identity} of a \sbol{Component} object that is the value of the restriction. - - -\paragraph{The \sbolheading{restriction} property} -\label{sec:restriction} - -This property property qualifies the relationship between the \sbol{subject} and \sbol{object} \sbol{Component}s. It includes a \external{URI} value, indicating the restriction type. In SBOL Version 1.1 partial designs are made possible by means of SequenceAnnotation objects that can specify that their locations precede those of other SequenceAnnotation objects. In Version 2.0 the ``precedes'' data field has been generalized to the StructuralConstraint class. - -These restrictions could also include ``sameOrientationAs'' or ``oppositeOrientationAs'' to enable the relative orientation of Component objects whose ComponentDefinition objects lack associated Sequence objects in partial designs (\ref{tbl:restriction_types}). - -\begin{table}[ht] - \begin{edtable}{tabular}{l} - \toprule - \textbf{Restriction Types} \\ - \midrule - http://sbols.org/v2\#precedes\\ - http://sbols.org/v2\#sameOrientationAs\\ - http://sbols.org/v2\#oppositeOrientationAs\\ - \bottomrule - \end{edtable} - \caption{URI constants for restriction values} - \label{tbl:restriction_types} -\end{table} - - - - -The serialization of \sbol{SequenceConstraint} objects has the following form: -\lstsetsbol -\begin{lstlisting} - - ... - [\emph{one}] [\emph{element}] - [\emph{one}] [\emph{element}] - [\emph{one}] [\emph{element}] - -\end{lstlisting} - -The example below shows the serialization of a \sbol{SequenceConstraint} object. In the example, the constraint is included as part of a \sbol{ComponentDefinition} for a LacI repressible composite promoter and has a precedes restriction. This restriction states that the subject \sbol{Component} for the core promoter precedes the object \sbol{Component} for the LacI operator in the composite promoter definition. Such restriction is especially useful to specify incomplete designs and the final design may include other components between the subject and object components. -\lstsetsbol -\begin{lstlisting} - - - - - -\end{lstlisting} - - -\subsection{Sequence} -\label{sec:Sequence} -The \sbol{Sequence} class is used to encode the primary structure of a \sbol{ComponentDefinition} object and the encoding used to capture this information. - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/sequence} -\caption[]{Sequence class} -\label{uml:sequence} -\end{center} -\end{figure} - - -\subsubsection*{The \sbolheading{elements} property} -\label{sec:elements} -Required. A \external{String} of characters that represent the constituents of biological molecule, for example nucleic acid symbols for DNA molecules. - -\subsubsection*{The \sbolheading{encoding} property} -\label{sec:encoding} -Required. \sbol{Sequence} objects identify their type of encoding with a \external{URI}. For example, a \sbol{Sequence} object that encodes a DNA sequence would have an \external{IUPAC DNA} encoding, while a \sbol{Sequence} object that encodes the chemical structure of glucose might have a \external{simplified molecular-input line-entry system (SMILES)} encoding (\ref{tbl:sequence_encodings}). - -%A Summary of letters for nucleic acids and aminoacids -\begin{table}[ht] - \begin{edtable}{tabular}{ll} - \toprule - \textbf{ComponentDefinition Type} & \textbf{Encoding} \\ - \midrule - DnaRegion,RnaRegion & \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html}\\ - Protein & \url{http://www.chem.qmul.ac.uk/iupac/AminoAcid/}\\ - SmallMolecule & \url{http://www.opensmiles.org/opensmiles.html}\\ - \bottomrule - \end{edtable} - \caption{URIs for the encoding property and the corresponding ComponentDefiniton types, which are BioPAX terms.} - \label{tbl:sequence_encodings} -\end{table} - -The serialization of \sbol{Sequence} objects has the following form: -\lstsetsbol -\begin{lstlisting} - - ... - [\emph{one}] ... [\emph{element}] - [\emph{one}] [\emph{element}] - -\end{lstlisting} - -The example below shows the serialization of a \sbol{Sequence} object for a promoter. Nucleotide sequences are represented with the \sbol{elements} property and the \sbol{encoding} is serialized as a URI value. - -\lstsetsbol -\begin{lstlisting} - - ttgacagctagctcagtcctaggtataatgctagc - - -\end{lstlisting} - - - - -\subsection{ModuleDefinition} -\label{sec:ModuleDefinition} - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/module_definition} -\caption[]{ModuleDefinition} -\label{uml:module_definition} -\end{center} -\end{figure} - -The ModuleDefinition class forms the hub for functional description of genetic designs. A Module object is composed from zero or more FunctionalComponent, Module, and Interaction objects, and links to zero or more Model objects. A Module object relies on the ``direction'' data fields of its FunctionalComponent objects to specify whether they serve as its inputs or outputs. - -In addition, each ModuleDefinition object must now have at least one of potentially several roles to indicate its intended usages. For example, the role URIs on a ModuleDefinition object may identify terms for abstract module roles, such as``inverter'' or ``AND gate'', or they may identify terms for biological module roles, such as ``metabolic pathway'' and ``signaling cascade''. - - - - -\subsubsection{FunctionalComponent} -\label{sec:FunctionalComponent} -Composition of the functional layer of SBOL designs, on the other hand, is accomplished using \sbol{FunctionalComponent} objects. Each FunctionalComponent object is owned by a Module object and serves as an explicit usage of a ComponentInstance object for the purpose of fulfilling some function. In addition, each FunctionalInstantiation must specify via the ``direction'' field whether it serves as an input, output, both, or neither for its parent Module object. - - - - -\subsubsection{Module} -\label{sec:Module} - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/module} -\caption[]{Module} -\label{uml:module} -\end{center} -\end{figure} - -The Module class enables the composition of Module objects from other sub-Module objects. \textcolor{red}{The first data field, ``definition'', links to the ModuleDefinition object that is effectively a part of the Module object that owns the Module object.} The second data field, ``mappings'', is a set of MapsTo objects that link between the Component objects at the same level of the design hierarchy as the Module object and the Component objects that are lower in the design hierarchy, thereby composing these objects with greater specificity. - - - -\subsubsection{MapsTo} -\label{sec:MapsTo} - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/maps_to} -\caption[]{} -\label{uml:maps_to} -\end{center} -\end{figure} -The MapsTo class serves as a means of linking between Component objects (both Components and FunctionalComponents) at different levels of the design hierarchy. For example, when a Module object is instantiated inside another Module object, a MapsTo object on the appropriate Module object can be used to link between a FunctionalComponent object in the parent Module (as specified by the ``local'' data field) and a FunctionalComponent object in the child module (as specified by the ``remote'' data field). This linking can perhaps be most easily understood via the examples in the next section. - -In addition to specifying a link, each MapsTo object must also specify a ``refinement'' relationship between its local and remote Components. Under this data model, there are four types of refinement: ``verifyIdentical'' requires that the Component objects link to the same ComponentDefinition object, ``useLocal'' indicates that the local Component object overrides the remote Component object, ``useRemote'' indicates the opposite, and “merge” indicates that data fields of the local and remote ComponentInstantiation objects are to be interpreted in combination. - - -\subsubsection{Interaction} -\label{sec:Interaction} - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/interaction} -\caption[]{Interaction} -\label{uml:interaction} -\end{center} -\end{figure} - -The Interaction class provides a qualitative basis for asserting the intended function of a given ModuleDefinition object. The proposed data model supports the representation of regulatory interactions, such as activation or repression, and processes from the central dogma of biology, such as transcription and translation. Other supported interaction types include non-covalent binding between a small molecule and TF, and phosphorylation of a TF by an enzyme. - -Each Interaction object must specify its type with at least one URI that identifies an appropriate ontology term, such as a term from the Systems Biology Ontology (SBO). If an Interaction object has multiple type URIs, then they must identify synonymous terms. - -Furthermore, each Interaction object must specify its participating ComponentInstantiation objects by linking to one or more objects of the Participation class. - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/participation} -\caption[]{Participation} -\label{uml:participation} -\end{center} -\end{figure} - -\subsubsection{Participation} -\label{sec:Participation} -Each object of the Participation class must specify the role of its participant FunctionalComponent object in its parent Interaction object with at least one URI that identifies an appropriate ontology term. If a Participation object has multiple role URIs, then they must identify synonymous terms. - -While the Interaction class provide a qualitative description of genetic function, quantitative descriptions are also needed for genetic design. Instead of introducing a new language for the specification of mathematical models of biology, the proposed data model leverages existing standards and links to them via the Model class. - - - - -\subsection{Model} -\label{sec:Model} - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/model} -\caption[]{} -\label{uml:model} -\end{center} -\end{figure} -SBOL's \sbol{Model} objects are used to link genetic descriptions of biological parts and their interactions to computational models. Each \sbol{Model} object specify the location of the actual content of a qualitative/quantitative model, the language the model is implemented with, the modelling framework and the model's role(s). In this way, there is minimal duplication of standardization efforts and users of SBOL can specify the quantitative function of their ModuleDefinition objects in a well-developed language of their choice. A ModuleDefinition object can link to more than one model since each one can encode different levels of functional detail and play different roles in engineering design. - -\subsubsection*{ The \sbolheading{source} property} -This property has a data type of \external{URI}, and is required to specify the actual location of a qualitative or quantitative model. - -\subsubsection*{ The \sbolheading{language} property} -This property has a data type of \external{URI}, and is required to specify the language the model is implemented with. Values for the URIs should be chosen from the EMBRACE Data and Methods (EDAM) ontology where possible. Some of the model types and corresponding URI values are shown in \ref{tbl:model_types}. - -\begin{table}[ht] - \begin{edtable}{tabular}{ll} - \toprule - \textbf{Model Language} & \textbf{URI} \\ - \midrule - SBML & \url{http://identifiers.org/edam/format_2585}\\ - CellML & \url{http://identifiers.org/edam/format_3240}\\ - BioPAX & \url{http://identifiers.org/edam/format_3156}\\ - \bottomrule - \end{edtable} - \caption{Commonly used model languages and their corresponding URIs.} - \label{tbl:model_types} -\end{table} - - -\subsubsection*{ The \sbolheading{framework} property} -This property has a data type of \external{URI} and is required to specify the modelling framework a model is implemented with. Values for this property should be used from the SBO's modelling framework terms where possible (\ref{tbl:model_frameworks}). - -\begin{table}[ht] - \begin{edtable}{tabular}{ll} - \toprule - \textbf{Framework} & \textbf{URI} \\ - \midrule - Continuous & \url{http://identifiers.org/biomodels.sbo/SBO:0000062}\\ - Discrete & \url{http://identifiers.org/biomodels.sbo/SBO:0000063}\\ - \bottomrule - \end{edtable} - \caption{Example modelling frameworks and corresponding SBO terms.} - \label{tbl:model_frameworks} -\end{table} - -\subsubsection*{ The \sbolheading{role} property} -This property has a data type of \external{URI} and is required to specify what the model is for, such as part or interaction model (\ref{tbl:model_roles}). -\begin{table}[ht] - \begin{edtable}{tabular}{l} - \toprule - \textbf{Model Roles} \\ - \midrule - http://sbols.org/v2\#component\_model\\ - http://sbols.org/v2\#interaction\_model\\ - http://sbols.org/v2\#module\_model\\ - \bottomrule - \end{edtable} - \caption{URI constants for model roles} - \label{tbl:model_roles} -\end{table} - -The serialization of \sbol{Model} objects has the following form: - -\lstsetsbol -\begin{lstlisting} - - ... - [\emph{one}] [\emph{element}] - [\emph{one}] [\emph{element}] - [\emph{one}] [\emph{element}] - [\emph{one or more}] [\emph{element}] - -\end{lstlisting} - -The example below shows the serialization of a \sbol{Model} object. The model object includes information about the models of a toggle switch. The model is implemented in SBML using a continuous modelling framework. The source property shows the physical location of the SBML model, in a model repository. -\lstsetsbol -\begin{lstlisting} - - - - - - - - - - -\end{lstlisting} -\label{ser:Model} - - -\subsection {Collection} -\label{sec:Collection} -The \sbol{Collection} class is another top level class, which groups together \sbol{TopLevel} objects that have something in common. For example, a \sbol{Collection} object could be the result of a query to find all \sbol{Component} objects that function as promoters or all \sbol{Module} objects that function as inverters in a given repository. - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/collection} -\caption[]{The Collection class} -\label{uml:collection} -\end{center} -\end{figure} - -\subsubsection*{The member property} -The member property has a data type of \external{URI} and has the \sbol{identity} value of a \sbol{TopLevel} entity. Each collection must have at least one member. - -The serialization of \sbol{Collection} objects has the following form: - -\lstsetsbol -\begin{lstlisting} - - ... - [\emph{one or more}] [\emph{element}] - -\end{lstlisting} - -The example below shows the serialization of a \sbol{Collection} object. Promoters from a library of constitutive promoters are grouped using the collection example. -\lstsetsbol -\begin{lstlisting} - - - - Anderson - Anderson promoters - The Anderson promoter collection - - ... - - - - -\end{lstlisting} -\label{ser:Collection} - - - - -\subsection{Application Specific Data - Annotations} -\label{sec:annotations} - - -\subsubsection{Annotating SBOL objects} -SBOL allows embedding application specific data that are not captured by the SBOL standard. Such data are optional, can be computationally generated and exchanged via SBOL documents without getting lost. These custom data are stored in the form of annotations, providing informative metadata about entities in an SBOL document. - -Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. Property names are specified by qualified names as \external{IRI}s, each formed of a namespace and a local name. Values can be \external{IRI}s or \external{Literal}s (for example, \external{String}, \external{Integer}, \external{Double}, \external{Boolean}) or custom \sbol{identity} entities initialized with application specific types. These custom \sbol{identity} entities can further be annotated with the scheme described here. These custom entities are either serialized within an SBOL entity being annotated, or referenced using an \external{IRI} annotation and embedded within the the annotated entity's parent.%TODO Make sure if we have a choice here! - -\begin{figure}[!ht] -\begin{center} - -%Consider putting Identified, uRI, and Literal on the bottom so that inheritance arrows point in the same direction as they do in other diagrams. Another consideration for maintaing consistency with the other diagrams is to add arrow heads to the opposite ends of the black diamond relations. - Nic - -\includegraphics[scale=0.6]{uml/identified_annotations} -\caption[]{Annotating SBOL's Identified entities with application specific data.} -\label{uml:identified_annotations} -\end{center} -\end{figure} - - Each annotation is serialised as an RDF subject-property-object triplet in which the subject is the SBOL object being annotated, the property is the annotation name, and the object is the annotation value. Simple values URIs are serialised as RDF literals, and URI values are represented with the \external{\path{http://www.w3.org/1999/02/22-rdf-syntax-ns#resource}} RDF property. If the annotation value is another complex object then the object is embedded as an RDF resource, which can further be annotated similarly.%TODO If we allow URI reference of a custom object stored, then update this paragraph - -The ComponentDefinition example for a promoter below shows how annotations can be added to SBOL objects. Annotations are added using the relevant information from the Parts Registry. Annotation property names are qualified with the \external{http://www.partsregistry.org/} namespace, which is prefixed using \external{pr}. The first annotation is named as \external{pr:group}, indicating the iGEM group designing the promoter, and has a \external{String} value. The second \external{pr:experience} annotation has a \external{URI} value and is serialised as an RDF resource pointing to the information Web page on the Parts Registry for the promoter. The \external{pr:information} property represents a complex annotation which is a type of \external{pr:Information} and includes information about the regulatory details of the promoter using Parts Registry categories. - -\begin{figure} [ht] -\lstsetsbol -\begin{lstlisting} - - - - iGEM2006_Berkeley - - - - //rnap/prokaryote/ecoli/sigma70 - //regulation/constitutive - - - J23119 - Constitutive promoter - - - - -\end{lstlisting} -\label{ser:Annotation} -\end{figure} - - - - -\subsubsection{GenericTopLevel} -\label{sec:GenericTopLevel} -SBOL documents can also be annotated at the top level. SBOL's \sbol{GenericTopLevel} is a top-level entity that can include a set of annotations as described above. Entities that are at the top-level and are not recognised by the SBOL standard are loaded into these top level entities. These \sbol{GenericTopLevel} entities may have multiple type information and can be used safely by tools to exchange custom data. As with any other top level entities, \sbol{GenericTopLevel} entities may include SBOL properties such as \sbol{name}, \sbol{description}, \sbol{displayId} and so on. The type of the generic entity is indicated using the RDF's \external{type} property. -%TODO: Is it possible to have multiple types for GenericTopLevel elements? If so, update the diagram. - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/generictoplevel} -\caption[]{Annotating SBOL documents with GenericTopLevel entities.} -\label{uml:generictoplevel} -\end{center} -\end{figure} - -The example below shows adding a datasheet object to a SBOL document using the \sbol{GenericTopLevel} class. The J23119 promoter example is annotated with the URI of a top Level Datasheet object. The annotation properties are defined using the custom \external{\path{http://www.myapp.org/}} namespace and the \external{myapp} prefix. The datasheet object, with the data type of \external{myapp:Datasheet}, is accessed using the \external{URI} value specified by the \external{myapp:characterizationData} property of the promoter component definition. The datasheet object is further annotated with the transcription rate and the URI for the actual characterization data using the \external{myapp:transcriptionRate} and \external{myapp:characterizationData} properties respectively. - -\begin{figure}[ht] -\lstsetsbol -\begin{lstlisting} - - - - - J23119 - Constitutive promoter - - - - - - 1 - Datasheet 1 - - - -\end{lstlisting} -\label{ser:GenericTopLevel} -\end{figure} - - - - -% ----------------------------------------------------------------------------- -\section{Examples of Data Model} -\label{sec:examples} -% ----------------------------------------------------------------------------- - -\subsection{LacI/TetR Toggle Switch} - -As an example of structural representation under the SBOL 2.0 data model, \ref{uml:ex_comp_defs} specifies the component definitions for one half of a LacI/TetR toggle switch in a UML object diagram. These include DNA component definitions based on parts from the iGEM Registry, the RNA and protein component definitions derived from them, and the small molecule component definition for IPTG. With the exception of the latter, all component definitions in this example are associated with a sequence, though a SMILES encoding could be provided for IPTG if that level of detail is required. - -\begin{figure}[ht] -\begin{center} -\includegraphics[width=\textwidth]{uml/example_component_definitions} -\caption[]{Examples of component definitions for one half of a LacI/TetR toggle switch.} -\label{uml:ex_comp_defs} -\end{center} -\end{figure} - -As an example of structural composition, \ref{uml:ex_comp_def_compo} specifies the composite component definitions for the IPTG-LacI complex and TetR gene. In the case of the gene, its subcomponents are located as ranges along its sequence using sequence annotations. The complex, however, has no sequence and its subcomponents are aggregated without any data about their relative locations. - - -\begin{figure}[ht] -\begin{center} -\includegraphics[width=\textwidth]{uml/example_component_definition_composition} -\caption[]{Example of composite component definitions for one half of a LacI/TetR toggle switch.} -\label{uml:ex_comp_def_compo} -\end{center} -\end{figure} - -As an example of functional representation, \ref{uml:ex_mod_def} specifies the module definition for a LacI inverter. This module definition aggregates and instantiates the component definitions for the TetR gene as functional components that participate in interactions. Note that the transcription and translation of TetR is represented using a single genetic production interaction that abstracts away the presence of the intermediate TetR mRNA. If this additional detail becomes necessary, then a new module could be created that includes both transcription and translation interactions and a TetR mRNA functional component. Finally, the module definition is also associated with a continuous SBML model from source file LacI\_Inverter.xml. - -\begin{figure}[ht] -\begin{center} -\includegraphics[width=\textwidth]{uml/example_module_definition} -\caption[]{Example of module definition for a LacI inverter.} -\label{uml:ex_mod_def} -\end{center} -\end{figure} - -As an example of functional composition, \ref{uml:ex_mod_def_compo} specifies the composite module definition for the LacI/TetR toggle switch. This module definition aggregates and instantiates the LacI and TetR inverter module definitions as submodules. It also instantiates the LacI and TetR component definitions as the functional component inputs and/or outputs to both the toggle switch and inverter module definitions. To complete the functional composition of the toggle switch, mappings are made between these functional components to indicate that the output of the LacI inverter is the input to the TetR inverter and vice versa. - -\begin{figure}[ht] -\begin{center} -\includegraphics[width=\textwidth]{uml/example_module_definition_composition} -\caption[]{Example of composing the module definitions for a LacI inverter and TetR inverter into a module definition for a LacI/TetR toggle switch.} -\label{uml:ex_mod_def_compo} -\end{center} -\end{figure} - -Lastly, as an example of further detailing the connection between structure and function, \ref{uml:ex_comp_mapping} specifies a mapping between the composite component defintion for the TetR gene - -% The first use case is to indicate with greater fidelity how a module describes the function of a composite component, namely by asserting that particular component instantiations within the module correspond to particular component instantiations within the component. - -% As an example of this use case, one might compose the structure and function of the LacI-repressible gene of the genetic toggle switch. In this example, the LacI-repressible gene and two of its subcomponents, the pLac promoter and cTetR CDS, are to be composed with the LacI inverter module. In order to compose these components with the LacI inverter module and indicate that it describes their behavior, they are instantiated inside the module. In addition, port maps are placed on the instantiation of the LacI-repressible gene to connect between its pLac plus cTetR subcomponent instantiations and the corresponding component instantiations in the module. Doing so makes it clear which subcomponent instantiations in the gene are being described by which component instantiations in the module. In this way, GDA tools for sequence editing and biochemical modeling can guarantee that their users are handling corresponding elements of a given genetic design, while GDA tools for genetic technology mapping can make explicit connections between the structural and functional elements of a design. - -\begin{figure}[ht] -\begin{center} -\includegraphics[width=\textwidth]{uml/example_component_mapping} -\caption[]{Example of mapping between the structural and functional components of a LacI inverter.} -\label{uml:ex_comp_mapping} -\end{center} -\end{figure} - - -% ----------------------------------------------------------------------------- -\section{Examples of Serialization} -% ----------------------------------------------------------------------------- -This example shows the serialization of the PoPS Receiver device designed by Canton and co-workers. Details of the device can be found at http://parts.igem.org/Part:BBa\_F2620. - -%todo: Add more description and ref - -\label{ser:F2620} -\lstsetsbol -\begin{lstlisting} - - - - BBa_R0040 - TetR repressible promoter - - - - - - BBa_C0062 - luxR coding sequence - - - - - - BBa_B0015 - Double terminator - - - - - - BBa_R0062 - LuxR inducible promoter - - - - - - BBa_F2620 - 3OC6HSL -> PoPS Receiver - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 56 - 68 - - - - - - - - - - - 771 - 900 - - - - - - - - - - - 1 - 55 - - - - - - - - - - - 69 - 770 - - - - - - - - - - - 901 - 956 - - - - - - - - - - BBa_B0034 - RBS based on Elowitz repressilator - - - - - - ccaggcatcaaataaaacgaaaggctcagtcgaaagactgggcctttcgttttatctgttgtttgtcggtgaacgctctctactagagtcacactggctcaccttcgggtgggcctttctgcgtttata - - - - aaagaggagaaa - - - - atgcttatctgatatgactaaaatggtacattgtgaatattatttactcgcgatcatttatcctcattctatggttaaatctgatatttcaatcctagataattaccctaaaaaatggaggcaatattatgatgacgctaatttaataaaatatgatcctatagtagattattctaactccaatcattcaccaattaattggaatatatttgaaaacaatgctgtaaataaaaaatctccaaatgtaattaaagaagcgaaaacatcaggtcttatcactgggtttagtttccctattcatacggctaacaatggcttcggaatgcttagttttgcacattcagaaaaagacaactatatagatagtttatttttacatgcgtgtatgaacataccattaattgttccttctctagttgataattatcgaaaaataaatatagcaaataataaatcaaacaacgatttaaccaaaagagaaaaagaatgtttagcgtgggcatgcgaaggaaaaagctcttgggatatttcaaaaatattaggttgcagtgagcgtactgtcactttccatttaaccaatgcgcaaatgaaactcaatacaacaaaccgctgccaaagtatttctaaagcaattttaacaggagcaattgattgcccatactttaaaaattaataacactgatagtgctagtgtagatcac - - - - - - - - acctgtaggatcgtacaggtttacgcaagaaaatggtttgttatagtcgaataaa - - - - tccctatcagtgatagagattgacatccctatcagtgatagagatactgagcac - - - -\end{lstlisting} - -% ----------------------------------------------------------------------------- -\section{Best Practices} -\label{sec:bestpractices} -% ----------------------------------------------------------------------------- -\subsection{Versioning} -Currently, if a developer wishes to change a SBOL object that has been published to the Web, then as a best practice they should create a copy of the SBOL object that incorporates the change, but has a new URI. This practice, however, does not inherently involve a standardized declaration that the second object is a version of the first. Consequently, the \sbol{persistentIdentity}, and \sbol{version} data fields have been created to provide developers with the means to declare that a set of SBOL objects are versions of each other (by virtue of having the same persistent URI) and label these objects with version Strings. - -\subsection{Using External Terms} -External ontologies and controlled vocabularies are integral part of SBOL. Through these resources SBOL utilises existing biological information where possible. New SBOL specific terms are defined only when necessary. Instead, SBOL provides placeholders that can point to external terms. For example, the types of components whether they are DNA or protein based are indicated using BioPAX. Similarly, the functionality of a DNA component is determined via the SO terms. Although preferred ontologies have been explained in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found at \ref{tbl:preferred_external_resources}. - - -\begin{table}[ht] - \begin{edtable}{tabular}{p{3cm}p{3cm}p{4cm}} - \toprule - \textbf{SBOL Entity} & \textbf{Property} & \textbf{Preferred External Resource}\\ - \midrule - \textbf{ComponentDefinition} & type & BioPAX \\ - & role & SO (if type is \textit{DNA} or \textit{RNA}) \\ - & role & CHEBI (if type is \textit{small molecule}) \\ - & role & UniProt (if type is \textit{protein}??) \\%TODO What is the external resource for proteins, diccuss it. - \textbf{Interaction} & type & SBO \\ - \textbf{Participation} & type & SBO \\ - \textbf{Model} & language & EDAM \\ - & framework & SBO \\ - \bottomrule - \end{edtable} - \caption{SBOL properties and preferred external resources to choose values from.} - \label{tbl:preferred_external_resources} -\end{table} +\input{practices} %TODO: Annotations: Annotating with created and modified dates, and how to add them. diff --git a/serialization.tex b/serialization.tex new file mode 100644 index 00000000..a8433907 --- /dev/null +++ b/serialization.tex @@ -0,0 +1,22 @@ +% ----------------------------------------------------------------------------- +\section{SBOL RDF Serialization} +% ----------------------------------------------------------------------------- + +\todo[inline]{try to target readers unfamiliar with RDF/XML. -bder} + +The SBOL serialization is designed to meet several competing requirements. Firstly, SBOL needs to support ad-hoc annotations and extensions. Secondly, SBOL needs to support processing by generic semantic web and database tools that have little or no knowledge of the SBOL data model. Thirdly, SBOL needs to support the generation of light-weight software clients so as to lower the barrier to entry for new API implementations within environments where the community-maintained implementation(s) are not suitable. + +\todo[inline]{ Reference needed for Dublin core below} +The canonical serialization of SBOL is to a strict dialect of RDF/XML. This serialization provides the base from which to meet further requirements. Any RDF/XML-aware tooling can consume and analyze an SBOL file. Where possible, we have re-used predicates from widely-used terminologies (such as Dublin Core REF) to expose as much of the data as practical to standard RDF tooling. + +Arbitrary RDF/XML provides a great deal of flexibility in how equivalent data can be serialized. This flexibility can result in different serializations when processing RDF/XML files using standard off-the-shelf XML tools, such as DOM-OO mappings. To address this problem, we define a canonical association between the nesting of data structures within the SBOL UML data model and the RDF/XML file. For all ownership associations (filled diamonds), the RDF/XML for the owned entity is embedded within the owner's RDF/XML. For all associations that are by reference (open diamonds), the RDF/XML for the referenced property is linked via a resource URI. + +All first-class SBOL datatypes have an associated identity URI. In the RDF, this is the resource URI used by instances of that type. Properties and associations are asserted as nested RDF/XML assertions. Some datatypes are `top level', which means that they always appear at the top level of the RDF/XML serialization. All other datatypes will always appear nested within their container. + +Each instance of a first-class SBOL datatype may have annotations attached. These annotations are composed of a name and a value. They are serialized to RDF as a triple with the subject being the identity of the instance they annotate, the predicate being the name of the annotation, and the object being the value of that annotation. Annotation values are always nested within the RDF/XML serialization of the instance that they annotate. + +SBOL supports top-level, user-defined annotations. This is to allow non-standardized but necessary information to be carried around as part of a design. For example, a particular sub-community may have an internal standard for data sheets. Individual data sheets can be represented as a generic top-level annotation with internal structured annotations. This annotation will be serialized into the RDF/XML in the usual way, as a RDF/XML block at the top level of the file. Other objects may refer to this through their annotations by reference, and this generic top-level entity may refer to other entities via references. + + +\todo[inline]{Clarify what the 'these' at the end of the second and fourth sentences below are referring to, and the 'those' at the start of the next sentence and the 'they' at the start of the fifth sentence - neil} +By adopting this paradigm of RDF/XML serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. Since exactly the same scheme is used to serialize annotations and specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of these. Those not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entries in an SBOL file, we enable future specifications or extensions to ratify the structure of some of these. They would then become something represented by an explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely round-trip the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. The very regimented control of nesting versus referencing allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL RDF/XML files safely. diff --git a/uml/example_component_definitions.png b/uml/example_component_definitions.png deleted file mode 100644 index 88df9db692eed87e16a70c032a1110e257e9a1ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29269 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

~+aWl`OGC{%0OxgZ`A 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 diff --git a/vocabulary.tex b/vocabulary.tex new file mode 100644 index 00000000..03586505 --- /dev/null +++ b/vocabulary.tex @@ -0,0 +1,72 @@ +% ----------------------------------------------------------------------------- +\section{SBOL Specification Vocabulary} +% ----------------------------------------------------------------------------- + +This document indicates requirement levels using the controlled vocabulary specified in IETF RFC 2119 and reiterated in BBF RFC 0. +In particular, the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119. + +\begin{itemize} +\item The words "MUST", "REQUIRED", or "SHALL" mean that the item is an absolute requirement. +\item The phrases "MUST NOT" or "SHALL NOT" mean that the item is an absolute prohibition. +\item The word "SHOULD" or the adjective "RECOMMENDED" mean that there may exist valid reasons in particular circumstances to ignore a particular item, but the full implications must be understood and carefully weighed before choosing a different course. +\item The phrases "SHOULD NOT" or "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label. +\item The word "MAY" or the adjective "OPTIONAL" mean that an item is truly optional. +\end{itemize} + +\subsection{SBOL-specific Vocabulary} + +SBOL defines several entity types in order to explicitly define different types of information. At the top level, a SBOL document includes these entities: + +\vspace*{2ex} +\begin{center} + \begin{edtable}{tabular}{>{\hspace*{10pt}\slshape}l>{\hspace*{40pt}}l} + list of component definitions(optional) & (\sec*{sec:ComponentDefinition}) \\ + list of sequences (optional) & (\sec*{sec:Sequence}) \\ + list of module definitions (optional) & (\sec*{sec:ModuleDefinition}) \\ + list of models (optional) & (\sec*{sec:Model}) \\ + list of collections (optional) & (\sec*{sec:Collection}) \\ + list of generic top level entities (optional) & (\sec*{sec:GenericTopLevel}) \\ + \end{edtable} +\end{center} +\vspace*{2ex} +\todo[inline]{WTF is this table?} + +In addition to these top level entities, a SBOL document may include additional entities that are nested within the top level entities. Short descriptions of all SBOL entities are given below: + +\begin{description} + +\item \emph{\sbol{ComponentDefinition}}: Represents biological molecules such as DNA, proteins, RNA, and small molecules. + +\item \emph{\sbol{Component}}: +Represents a specific occurrence of a component within a larger design. For a given component definition, there may be several instances of components specified at different locations within the larger design. +\item \emph{\sbol{SequenceAnnotation}}: +Describes the position and strand orientation (in the case of DNA molecules) of a notable sub-sequence found within the Component being +described. Annotations provide the link which describes the +sequence of a component in terms of other components (i.e., +subComponents). +\item \emph{\sbol{Location}}: +Specifies the coordinates of a genetic locus on a DNA molecule or a residue or site on other sequential macromolecules such as proteins. +\item \emph{\sbol{SequenceConstraint}}: +Describes the relative spatial orientation of Components which are assembled together into a biological structure. +\item \emph{\sbol{Sequence}}: +Represents a contiguous sequence of monomers in a macromoleculer polymer such as DNA, RNA, or protein. The +sequence is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. Therefore, both experimental work and theoretical sequence composition research depend heavily on the sequence associated with component definitions. +\item \emph{\sbol{ModuleDefinition}}: +Desribes an abstract functional module that may be composed of many functional interactions between biological components. +\item \emph{\sbol{FunctionalComponent}}: +Specifies an occurrence of a component that is intended to have a biological function inside a design, as opposed to a component whose purpose is simply to compose a biological structure. +\item \emph{\sbol{Module}}: +Represents a specific occurrence of a functional module within a larger design. For a given module definition, there may be several instances of modules that specify the overall function of a biological design. +\item \emph{\sbol{MapsTo}}: +Links Component objects (both Components and FunctionalComponents) from potentially different levels of hierarchy in a design. +\item \emph{\sbol{Interaction}}: +Describes a functional relationship between biological effectors, such as regulatory activation or repression. Interactions can also be used to describe processes from the central dogma of biology, such as transcription and translation. +\item \emph{\sbol{Participation}}: +Describes the role that a component plays in a functional interaction. For example, a transcription factor may participate in an interaction either as a repressor or activator. +\item \emph{\sbol{Model}}: +Links a SBOL representation of biological components and their interactions to quantitative, computational models that may be used to predict the functional behavior of a biological design. +\item \emph{\sbol{Collection}}: +Represents a user defined organizational container for Components. +\item \emph{\sbol{GenericTopLevel}}: +Represents a data container that can contain custom data added by user applications. +\end{description} From b9a3f75ebcf6bb4a108261704b6508adee6e3137 Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Mon, 20 Apr 2015 21:55:26 +0000 Subject: [PATCH 009/317] v9 --- model.tex | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- sbol2.tex | 2 +- 2 files changed, 86 insertions(+), 4 deletions(-) diff --git a/model.tex b/model.tex index 04f3a7a0..489e8a76 100644 --- a/model.tex +++ b/model.tex @@ -525,7 +525,7 @@ \subsection{ModuleDefinition} In addition, each ModuleDefinition object must now have at least one of potentially several roles to indicate its intended usages. For example, the role URIs on a ModuleDefinition object may identify terms for abstract module roles, such as``inverter'' or ``AND gate'', or they may identify terms for biological module roles, such as ``metabolic pathway'' and ``signaling cascade''. - +The serialization of \sbol{ModuleDefinition}s has the following form. \lstsetsbol \begin{lstlisting} @@ -551,8 +551,28 @@ \subsubsection{FunctionalComponent} \label{sec:FunctionalComponent} Composition of the functional layer of SBOL designs, on the other hand, is accomplished using \sbol{FunctionalComponent} objects. Each FunctionalComponent object is owned by a Module object and serves as an explicit usage of a ComponentInstance object for the purpose of fulfilling some function. In addition, each FunctionalInstantiation must specify via the ``direction'' field whether it serves as an input, output, both, or neither for its parent Module object. +\todo[inline]{Add a table of direction types} +\todo[inline]{Add a table of access types} +The serialization of \sbol{FunctionalComponent}s has the following form. +\lstsetsbol +\begin{lstlisting} + + [\emph{zero or one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + +\end{lstlisting} +In the example below, the functional component is defined as public input or output. The component refers to the \texttt{Part:BBa\_R0010} promoter from the Parts Registry. +\lstsetsbol +\begin{lstlisting} + + + + + +\end{lstlisting} \subsubsection{Module} \label{sec:Module} @@ -568,6 +588,16 @@ \subsubsection{Module} The Module class enables the composition of Module objects from other sub-Module objects. \textcolor{red}{The first data field, ``definition'', links to the ModuleDefinition object that is effectively a part of the Module object that owns the Module object.} The second data field, ``mappings'', is a set of MapsTo objects that link between the Component objects at the same level of the design hierarchy as the Module object and the Component objects that are lower in the design hierarchy, thereby composing these objects with greater specificity. +The serialization of \sbol{Module}s has the following form. +\lstsetsbol +\begin{lstlisting} + + [\emph{one}] [\emph{element}] + [\emph{zero or more}] + ... + [\emph{element}] + +\end{lstlisting} \subsubsection{MapsTo} \label{sec:MapsTo} @@ -583,6 +613,29 @@ \subsubsection{MapsTo} In addition to specifying a link, each MapsTo object must also specify a ``refinement'' relationship between its local and remote Components. Under this data model, there are four types of refinement: ``verifyIdentical'' requires that the Component objects link to the same ComponentDefinition object, ``useLocal'' indicates that the local Component object overrides the remote Component object, ``useRemote'' indicates the opposite, and “merge” indicates that data fields of the local and remote ComponentInstantiation objects are to be interpreted in combination. +\todo[inline]{Add a table for refinement values and represent the value when serialized using the rdf:resource property} +The serialization of \sbol{MapsTo}s has the following form. +\lstsetsbol +\begin{lstlisting} + + [\emph{one}] ... [\emph{element}] + [\emph{one}] [\emph{element}]] + [\emph{one}] [\emph{element}]] + +\end{lstlisting} + +\todo[inline]{The local and remote description in the MapsTo description is not same as the one below. Should not we use local for fcs in the submodules?} +In the example below, a \sbol{FunctionalComponent} entity from the submodule is linked to a \sbol{FunctionalComponent} entity in a parent module. The former is described in the imported \sbol{ModuleDefinition} entity which is referred to by the definition property of the \sbol{Module} entity. The latter is defined in the parent \sbol{ModuleDefinition}, importing the sub module. The full example can be found in \ref{ser:toggleswitch}. +\lstsetsbol +\begin{lstlisting} + + USEREMOTE + + + +\end{lstlisting} + + \subsubsection{Interaction} \label{sec:Interaction} @@ -599,7 +652,19 @@ \subsubsection{Interaction} Each Interaction object must specify its type with at least one URI that identifies an appropriate ontology term, such as a term from the Systems Biology Ontology (SBO). If an Interaction object has multiple type URIs, then they must identify synonymous terms. -Furthermore, each Interaction object must specify its participating ComponentInstantiation objects by linking to one or more objects of the Participation class. +Furthermore, each Interaction object must specify its participating \sbol{FunctionalComponent} entities by linking to one or more objects of the Participation class. + +The serialization of \sbol{Interaction}s has the following form. +\lstsetsbol +\begin{lstlisting} + + [\emph{one or more}] [\emph{elements}] + [\emph{one or more}] + ... + [\emph{elements}] + +\end{lstlisting} + \todo[inline]{Can an interaction have serial participants?} @@ -617,8 +682,23 @@ \subsubsection{Participation} While the Interaction class provide a qualitative description of genetic function, quantitative descriptions are also needed for genetic design. Instead of introducing a new language for the specification of mathematical models of biology, the proposed data model leverages existing standards and links to them via the Model class. +The serialization of \sbol{Participation}s has the following form. +\lstsetsbol +\begin{lstlisting} + + [\emph{one or more}] + [\emph{one or more}] + +\end{lstlisting} - +In the example below, the role of participating \sbol{FunctionalComponent} is defined to be \external{inhibitor}, using the \external{SBO:0000020} term. This component is specified using the participant property of the \sbol{Participation} entity. +\lstsetsbol +\begin{lstlisting} + + + + +\end{lstlisting} \subsection{Model} \label{sec:Model} @@ -671,6 +751,8 @@ \subsubsection*{ The \sbolheading{framework} property} \subsubsection*{ The \sbolheading{role} property} This property has a data type of \external{URI} and is required to specify what the model is for, such as part or interaction model (\ref{tbl:model_roles}). + +\todo[inline]{Are we agreeing on this table? Do we want to give more flexibility?} \begin{table}[ht] \begin{edtable}{tabular}{l} \toprule diff --git a/sbol2.tex b/sbol2.tex index a5ff8008..6ec7230a 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -56,7 +56,7 @@ \definecolor{gray}{rgb}{0.5,0.5,0.5} \definecolor{light-gray}{gray}{0.97} \lstdefinelanguage{sbol} - {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:MapsTo, sbol:sequence,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation,sbol:component,sbol:location, sbol:sequenceAnnotation, sbol:Range, sbol:start, sbol:end, sbol:orientation,sbol:SequenceConstraint, sbol:restriction, sbol:subject, sbol:object,sbol:Sequence, sbol:elements, sbol:encoding,sbol:Model, sbol:source, sbol:language, sbol:framework,sbol:FunctionalComponent, sbol:Module, sbol:Interaction, sbol:interaction, sbol:subModule, sbol:model}, + {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:MapsTo, sbol:sequence,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation,sbol:component,sbol:location, sbol:sequenceAnnotation, sbol:Range, sbol:start, sbol:end, sbol:orientation,sbol:SequenceConstraint, sbol:restriction, sbol:subject, sbol:object,sbol:Sequence, sbol:elements, sbol:encoding,sbol:Model, sbol:source, sbol:language, sbol:framework,sbol:FunctionalComponent, sbol:Module, sbol:Interaction, sbol:interaction, sbol:subModule, sbol:model,sbol:Model,sbol:definition, sbol:access, sbol:direction, sbol:mapping, sbol:refinement, sbol:local, sbol:remote, sbol:participation, sbol:Participation, sbol:participant}, basicstyle=\fontsize{7}{9}\selectfont\ttfamily, backgroundcolor=\color{light-gray}, keywordstyle=\color{blue}, From 0ad872ef972b69e62ef80693d91e4a44c9789fcc Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Tue, 21 Apr 2015 07:30:53 +0000 Subject: [PATCH 010/317] v10 --- model.tex | 5 +++-- purpose.tex | 2 +- uml/component_definition.png | Bin 14228 -> 14122 bytes uml/interaction.png | Bin 5190 -> 5326 bytes uml/model.png | Bin 4283 -> 4392 bytes uml/module_definition.png | Bin 10927 -> 10897 bytes 6 files changed, 4 insertions(+), 3 deletions(-) diff --git a/model.tex b/model.tex index 489e8a76..53a24590 100644 --- a/model.tex +++ b/model.tex @@ -42,7 +42,8 @@ \subsection{Understanding the UML Diagrams} \todo[inline]{What is this even about? Is it another best practice?} \subsection {SBOL Document} -\todo[inline]{This feels like it belongs in the serialization section, not the data model section} +\todo[inline]{This feels like it belongs in the serialization section, not the data model section. +Goksel: How about extending a bit more about SBOLDocument first? We can say that all the SBOL entities are included in an SBOL Document. Then we can talk about how it is serialized.} An SBOL document is a valid RDF/XML document. Accordingly, each SBOL document starts with an XML declaration that has its XML version set to ``1.0.'' As shown in the example below, this declaration is then followed by a rdf:RDF XML element that includes the namespace declarations for RDF and SBOL. The latter namespace is used to indicate which entities and properties in the SBOL document are defined by SBOL. \lstsetsbol @@ -509,7 +510,7 @@ \subsubsection*{The \sbolheading{encoding} property} -\todo[inline]{Add serialisation examples} +\todo[inline]{This section has not been edited much compared to other sections. We need to explain classes and their properties a bit more in detail.} \subsection{ModuleDefinition} \label{sec:ModuleDefinition} diff --git a/purpose.tex b/purpose.tex index 0e4cdf83..d3398a80 100644 --- a/purpose.tex +++ b/purpose.tex @@ -1,4 +1,4 @@ -h% ----------------------------------------------------------------------------- +% ----------------------------------------------------------------------------- \section{Purpose} % ----------------------------------------------------------------------------- % Synthetic biology aims to apply engineering principles such as standardization, modularity, and design abstraction to molecular biology. However, synthetic biology still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. diff --git a/uml/component_definition.png b/uml/component_definition.png index 9ff93aa47874fcb58c78d2e679da6de6860d921f..e0b81f7466b2682a9c936bb0f294a21f5594136e 100644 GIT binary patch literal 14122 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 aj2r6J*Dl0<9T=g=>r!HJq6M$@KmIQUIw2GQ diff --git a/uml/interaction.png b/uml/interaction.png index 9fdc3284322df596ca0a20cba30c35e4d59fbe1c..c8a66651ecde68be6707e2cd1f68c1620e1a2ece 100644 GIT binary patch literal 5326 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 b{iVvyxg@}8c}W+jQ-U<_=)%ix***OSqh1Y; literal 5190 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 A+W-In diff --git a/uml/model.png b/uml/model.png index 78d4baa60001ea143a2ff10182e764e058e6ac47..c97a860061ce87f13842fdec84f43691bbcbd78e 100644 GIT binary patch literal 4392 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 Gh<^b%7A>Rz diff --git a/uml/module_definition.png b/uml/module_definition.png index 0d0378a1165adda9419248ea77d219afdf1ff2db..1bffeb374fb2af25a685f7daa5fb639858a86293 100644 GIT binary patch literal 10897 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

$d+De?p)>-y-apRJOONg+wM^W8C3guvF_$@k6 zyK&`_$(_Hs9Y+TTPP?N$3xj)|{3Jms21&`uvBR3RvGM6^m$#lh1T1#7$F-*qDf?^f z7p=FexJa&E-S2DQE`J0n9`<^Bxvj!?$9)RU(k#Xc^&}U&hH$p+PZ!Y~KVls5q#VDm zaYVTBB|Hfo<E9&HwYj5Tz5- zo&w1|`+c)VBc2cJvJ0D;DbM(fBx$umGO2kjAY7{Y`fG;OyCm&t+_5n+I*0Gy6aHJa zZS+JH7fJ)#Hef;!7Rc&#se!NkGwn zbq=q}a`YW3Hn4iQsQI#ZVI{!&716U70kRnt6&lh3<56@d-9iBuMDv}xX>YbgC`3fJoAE%T-4<#uGWc%lbuu(SHr zat>V>*(~IyqzZdTC*}yDXZR-5l@jVk=elQ)idKQCQa(sUjI%75_5?5%yMpaRu0H%~ z+QP%jr?f_#6H{xWC`#cOY0cU4t zCnqPNp`jHO6+1icMuZy5WdPtX-Rrd_fIv_ey4~FShYQzm$Gcp$lG$WD0+&^@NF45+=EL`6GA*0uhNH?BLc^M(@W#NP?vk$>fW^ z7ab4;g96lPnU$*G@uHs0LTm; z;#u%u&kH|__u+hbuQ-qfbtD(b?h!~PgCh?15qyvFWn%-=zSG$j{Lc_C-}Av5Qqz@G z|8$bAV{-iWM@#+x{G+m`H;eNJI|XGEvk_8vaZ!y5KgXAm_h3VZwN#hz)7LqOJnR-SVLu;fI1;NlbyUh><0E-TvtqA)-+`*xr*QTXxKLVW=o1+6n*l;6hC2@r4g_V*E5Rd&N_3@0nv4xHN{W57=HC?eZ{|g4cm*K)4Kabbxm4Ru`MmTEv&nqvc#D zcSo`XoS0dCr&X+Ioq!5l94!xKUvVE=Rt~qg)^X(WtLgo(XiCJ&g&ue79Bj!@ttHT=3-*8% zQ-93d?XtPxSE9k$U@?$gSa`Sd9v>ecH}|`0eo&4rO?^&Dp+8pSS=ro-sJ$h>W`&q< zCS!;Ce4~lVEhrcur~vB1vFseOlTX0&M(?j*ACC@zd&D|H%VhZs(5Mo?6oNqEke7Sa zY@U{iDt8ndOR-e%t@k{x%H%Z3MxmDI?w`!`936t(eU#Dh=+UFx-uU=q07cNr9KE`o*G*>WM~QdyN^r2=m-jSJdo;DpjM7~fQXe`W*#8j1xRbxFOcqB#|4 zsR=5y+JL;H>WwIxYQ0CfS*KXUNc0?ISmDaLq*r7m;+V;q_vYZR1sc_DeL-0OzCnz$dF zzih{9^>%^0x^akn%`W(8bblG_(;|FLT}k48lfmw#B^<7u350F~tyLg%0}Apor1p7} zuIy*ziE=|a^0m-DqKFUWVQ82p&TVN&5o^;7h_O>GAe;j(Y7OYT(drS|71wsut-D7{ zN+7H{{m}mX?5T3C2+hq(4np)2z;n+*VOlKW6^P_BYP7ynQ&7;kfig2T9(_hyu)f8=^PsrJCe*UZIg^`*r&7edU>|T(#1?&i#=WXNDZ(t*jLpnccvvy&jNA3e zs-|u$r@B+dsFB8X#{hjR1rX&wFEp8bzy{;UrxRa9|b zVRBxxo|j>{Y1n+O)&BmzpFC`(2~C7(&zfKBCbFN3UqEya<`N z>8NC&JFZRl73kBn2!SvpjUkMem-m3!faCOA(2W6-_RYcLRNPHvPsxI-2{#M8dKD`B_9{8? z+uE4nPkxZ0q6{N}^xZNC8G|PJj;IqTZ3h0y8Q=&CsRBKx6N$OT-{~a96C79sspEBy zcbX5<8xnM(Wenu>zi(RN`aj*olr(%n_3PN>giX)`9Iq7TixRr{|L?rzKc_ZXZ=921 XLXtH&6xT*T6M=%PvP?1brO$r>Nm4C4 literal 10927 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 From 7989318b53aa4931af2d5f76ce9d26ede808507b Mon Sep 17 00:00:00 2001 From: Jacob Beal Date: Tue, 21 Apr 2015 08:16:47 +0000 Subject: [PATCH 011/317] Update on Overleaf. --- examples_model.tex | 16 ++++----- images/SBOL2_2_revised.png | Bin 0 -> 220360 bytes model.tex | 18 ++++++---- overview.tex | 23 +++++++++++++ practices.tex | 4 +-- sbol.bib | 11 +++++++ sbol2.tex | 10 ++++-- serialization.tex | 8 ++--- vocabulary.tex | 65 ++++++++++++++++++------------------- 9 files changed, 97 insertions(+), 58 deletions(-) create mode 100644 images/SBOL2_2_revised.png create mode 100644 overview.tex diff --git a/examples_model.tex b/examples_model.tex index 130a24b9..c10f58d4 100644 --- a/examples_model.tex +++ b/examples_model.tex @@ -15,12 +15,12 @@ \subsection{LacI/TetR Toggle Switch} \begin{figure}[ht] \begin{center} \includegraphics[scale=0.4]{images/toggleswitch_modular} -\caption[]{Design of a LacI/TetR toggle switch. This design is composed of two inverter sub-designs, each containing a single gene. These genes mutually repress each other's expression via their encoded protein TFs, LacI and TetR, which can be bound by small molecules (IPTG and aTc, respectively). Dashed lines indicate that the TFs in the inverter sub-designs are identical to those in the overall toggle switch design. Arrows represent different molecular interactions, including the repression of pLac via LacI, the non-covalent binding of IPTG to LacI, the transcription of TetR mRNA, and the translation of TetR.} +\caption[]{Design of a LacI/TetR toggle switch. This design is composed of two inverter sub-designs, each containing a single gene. These genes mutually repress each other's expression via their encoded protein TFs LacI and TetR, which can be bound by the small molecules IPTG and aTc, respectively. Dashed lines indicate that the TFs in the inverter sub-designs are identical to those in the overall toggle switch design. Arrows represent different molecular interactions, including the repression of pLac via LacI, the non-covalent binding of IPTG to LacI, the transcription of TetR mRNA, and the translation of TetR.} \label{images:toggleswitch_modular} \end{center} \end{figure} -The LacI/TetR toggle switch is modeled in SBOL as two parallel hierarchies of structure and function. In the first case, \sbol{ComponentDefinition}s are used to define physical \sbol{Component}s at every level of the structural hierarchy of the toggle switch, including the functional DNA regions, TFs, and small molecules at the base of this hierarchy, and the genes and TFs bound to small molecules at the top of this hierarchy. \ref{uml:ex_comp_defs} is a UML object diagram that specifies the \sbol{ComponentDefinition}s for one half of the LacI/TetR toggle switch. +The LacI/TetR toggle switch is modeled in SBOL as two parallel hierarchies of structure and function. In the first case, \sbol{ComponentDefinition}s are used to define physical \sbol{Component}s at every level of the structural hierarchy of the toggle switch, including the functional DNA regions, TFs, and small molecules at the base of this hierarchy, and the genes and TFs bound to small molecules at the top of this hierarchy. \ref{uml:ex_comp_defs} is a UML object diagram that specifies the base \sbol{ComponentDefinition}s for the LacI inverter, while \ref{uml:ex_comp_def_compo} similarly specifies the composite \sbol{ComponentDefinition}s for the IPTG-LacI complex and TetR gene. \begin{figure}[ht] \begin{center} @@ -30,20 +30,18 @@ \subsection{LacI/TetR Toggle Switch} \end{center} \end{figure} -In the second case, \sbol{ModuleDefinition}s are used to define functional \sbol{Module}s at every level of the functional hierarchy of the toggle switch, with LacI-dependent repression of TetR expression (the LacI inverter \sbol{Module}) and TetR-dependent repression of LacI (the TetR inverter \sbol{Module}) forming the base of this hierarchy. Each \sbol{ModuleDefinition} also contains the \sbol{FunctionalComponent}s that participate in \sbol{Interaction}s and are defined by the same \sbol{ComponentDefinition}s as the parallel \sbol{Component}s in the structural hierarchy of the toggle switch. Finally, \sbol{MapsTo} entities are used to refine which \sbol{FunctionalComponent}s of the functional hierarchy are identical or map them to \sbol{Component}s in the structural hierarchy. - -As an example of structural composition, \ref{uml:ex_comp_def_compo} specifies the composite component definitions for the IPTG-LacI complex and TetR gene. In the case of the gene, its subcomponents are located as ranges along its sequence using sequence annotations. The complex, however, has no sequence and its subcomponents are aggregated without any data about their relative locations. - -\todo[inline]{ComponentDefinition.types in the following figure are not consistent with the list of BioPax ontological terms described previously in the Data Model section} - \begin{figure}[ht] \begin{center} \includegraphics[width=\textwidth]{example_uml/toggle_2} -\caption[]{Example of composite component definitions for one half of a LacI/TetR toggle switch.} +\caption[]{Example of composite \sbol{ComponentDefinition}s for the LacI inverter. In the case of the TetR gene, its sub-\sbol{Component}s are located as \sbol{Range}s along its \sbol{Sequence} using \sbol{SequenceAnnotation}s. The IPTG-LacI complex, however, has no sequence and its subcomponents are aggregated without any data about their relative locations.} \label{uml:ex_comp_def_compo} \end{center} \end{figure} +In the second case, \sbol{ModuleDefinition}s are used to define functional \sbol{Module}s at every level of the functional hierarchy of the toggle switch, with LacI-dependent repression of TetR expression (the LacI inverter \sbol{Module}) and TetR-dependent repression of LacI (the TetR inverter \sbol{Module}) forming the base of this hierarchy. Each \sbol{ModuleDefinition} also contains the \sbol{FunctionalComponent}s that participate in \sbol{Interaction}s and are defined by the same \sbol{ComponentDefinition}s as the parallel \sbol{Component}s in the structural hierarchy of the toggle switch. Finally, \sbol{MapsTo} entities are used to refine which \sbol{FunctionalComponent}s of the functional hierarchy are identical or map them to \sbol{Component}s in the structural hierarchy. + +\todo[inline]{ComponentDefinition.types in the following figure are not consistent with the list of BioPax ontological terms described previously in the Data Model section} + As an example of functional representation, \ref{uml:ex_mod_def} specifies the module definition for a LacI inverter. This module definition aggregates and instantiates the component definitions for the TetR gene as functional components that participate in interactions. Note that the transcription and translation of TetR is represented using a single genetic production interaction that abstracts away the presence of the intermediate TetR mRNA. If this additional detail becomes necessary, then a new module could be created that includes both transcription and translation interactions and a TetR mRNA functional component. Finally, the module definition is also associated with a continuous SBML model from source file LacI\_Inverter.xml. \begin{figure}[ht] diff --git a/images/SBOL2_2_revised.png b/images/SBOL2_2_revised.png new file mode 100644 index 0000000000000000000000000000000000000000..3ba8da2a6ca527d67fa8f0995f68025913cedae5 GIT binary patch literal 220360 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

-gjLMl*o2X4zE(teGJAdEdRSu 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 tOWzgv1FO{T$6+ @@ -522,8 +525,9 @@ \subsection{ModuleDefinition} \end{center} \end{figure} -The ModuleDefinition class forms the hub for functional description of genetic designs. A Module object is composed from zero or more FunctionalComponent, Module, and Interaction objects, and links to zero or more Model objects. A Module object relies on the ``direction'' data fields of its FunctionalComponent objects to specify whether they serve as its inputs or outputs. +The \sbol{ModuleDefinition} class forms the hub for functional description of genetic designs. A \sbol{ModuleDefinition} object is composed from zero or more \sbol{FunctionalComponent}, \sbol{Module}, and \sbol{Interaction} objects, and links to zero or more \sbol{Model} objects. A \sbol{ModuleDefinition} object relies on the ``direction'' data fields of its \sbol{FunctionalComponent} objects to specify whether they serve as its inputs or outputs. +\subsubsection{The role property} In addition, each ModuleDefinition object must now have at least one of potentially several roles to indicate its intended usages. For example, the role URIs on a ModuleDefinition object may identify terms for abstract module roles, such as``inverter'' or ``AND gate'', or they may identify terms for biological module roles, such as ``metabolic pathway'' and ``signaling cascade''. The serialization of \sbol{ModuleDefinition}s has the following form. diff --git a/overview.tex b/overview.tex new file mode 100644 index 00000000..3deb0084 --- /dev/null +++ b/overview.tex @@ -0,0 +1,23 @@ +% % ----------------------------------------------------------------------------- +\section{Overview of SBOL} +% % ----------------------------------------------------------------------------- +Typically, information about a genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. Interactions between these constituents are then used to construct biologically plausible designs. + +% In the figure below, a simple toggle switch system is displayed, in which LacI and TetR repress each other's genes transcriptionally. The toggling of the system is controlled by adding IPTG to deactivate LacI, and ATC to deactivate TetR. The components of the system includes genetic elements, proteins, small molecules. + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.4]{images/SBOL2_2_revised.png} +\caption[]{ } +\label{images:overview} +\end{center} +\end{figure} + +SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. + + +SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. + +% \todo[inline]{I would suggest a more complete and more explicit mapping of vocabulary to the toggle switch example. -bder} + +% The same toggle switch is now displayed using two LacI and TetR inverter submodules in figure \ref{images:toggleswitch_modular}. The LacI inverter uses LacI as input and produces the TetR output, and the TetR inverter uses TetR as input and produces the LacI output. These inputs and outputs are mapped in a parent module. \ No newline at end of file diff --git a/practices.tex b/practices.tex index 69c7bd9f..22022269 100644 --- a/practices.tex +++ b/practices.tex @@ -9,7 +9,7 @@ \subsection{Versioning} %TODO[version]{maybe clarify what type of versioning is this object affecting? TN} \subsection{Using External Terms} -External ontologies and controlled vocabularies are integral part of SBOL. Through these resources SBOL utilises existing biological information where possible. New SBOL specific terms are defined only when necessary. Instead, SBOL provides placeholders that can point to external terms. For example, the types of components whether they are DNA or protein based are indicated using BioPAX. Similarly, the functionality of a DNA component is determined via the SO terms. Although preferred ontologies have been explained in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found at \ref{tbl:preferred_external_resources}. +External ontologies and controlled vocabularies are integral part of SBOL. SBOL utilises these resources to access existing biological information where possible. New SBOL specific terms are defined only when necessary. Instead, SBOL provides placeholders that can point to external terms. For example, types of components, such as DNA or protein, are indicated using BioPAX. Similarly, the role of a DNA component is indicated via the SO terms. Although preferred ontologies have been indicated in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found at \ref{tbl:preferred_external_resources}. \begin{table}[ht] @@ -20,7 +20,7 @@ \subsection{Using External Terms} \textbf{ComponentDefinition} & type & BioPAX \\ & role & SO (if type is \textit{DNA} or \textit{RNA}) \\ & role & CHEBI (if type is \textit{small molecule}) \\ - & role & UniProt (if type is \textit{protein}??) \\%TODO What is the external resource for proteins, diccuss it. protein - GO instead of UnitProt + & role & UniProt (if type is \textit{protein}??) \\%TODO What is the external resource for proteins, discuss it. protein - GO instead of UniProt \\%TODO Should there be an external listing for all Top Level? \textbf{Interaction} & type & SBO \\ diff --git a/sbol.bib b/sbol.bib index add87a9f..74ec689c 100644 --- a/sbol.bib +++ b/sbol.bib @@ -32,3 +32,14 @@ @Article{Gardner2000 pages = "339-342", year = "2000" } + +@techreport{dcmi2012, + author = {{DCMI Usage Board}}, + institution = {Dublin Core Metadata Initiative}, + keywords = {dc rdf semweb}, + month = {June}, + title = {{DCMI} Metadata Terms}, + type = {{DCMI} Recommendation}, + url = {http://dublincore.org/documents/2012/06/14/dcmi-terms/}, + year = 2012 +} diff --git a/sbol2.tex b/sbol2.tex index 6ec7230a..2082588d 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -153,8 +153,6 @@ % %The goal of this specification is to define the terminology and relationships used to describe biological designs. In order to provide a shared understanding between engineers seeking to exchange biological designs, SBOL provides a common definition of the concepts needed. As much as possible, we attempt to make explicit the meaning of all terminology and data structures. -\input{serialization} - % % ----------------------------------------------------------------------------- % \section{Overview of SBOL} @@ -182,11 +180,13 @@ \input{vocabulary} +\input{overview} + \input{model} \input{examples_model} -\input{examples_serialization} +\input{serialization} \input{practices} @@ -196,6 +196,10 @@ \newpage \bibliography{sbol} +\appendix + +\input{examples_serialization} + \end{document} diff --git a/serialization.tex b/serialization.tex index a8433907..ae21cb04 100644 --- a/serialization.tex +++ b/serialization.tex @@ -1,17 +1,17 @@ % ----------------------------------------------------------------------------- \section{SBOL RDF Serialization} +\label{sec:serialization} % ----------------------------------------------------------------------------- \todo[inline]{try to target readers unfamiliar with RDF/XML. -bder} -The SBOL serialization is designed to meet several competing requirements. Firstly, SBOL needs to support ad-hoc annotations and extensions. Secondly, SBOL needs to support processing by generic semantic web and database tools that have little or no knowledge of the SBOL data model. Thirdly, SBOL needs to support the generation of light-weight software clients so as to lower the barrier to entry for new API implementations within environments where the community-maintained implementation(s) are not suitable. +The SBOL serialization is designed to meet several competing requirements. Firstly, SBOL needs to support ad-hoc annotations and extensions. Secondly, SBOL needs to support processing by generic semantic web and database tools that have little or no knowledge of the SBOL data model. Thirdly, SBOL needs to support the generation of light-weight software clients so as to lower the barrier to entry for new API implementations within environments where community-maintained implementation(s) are not suitable. -\todo[inline]{ Reference needed for Dublin core below} -The canonical serialization of SBOL is to a strict dialect of RDF/XML. This serialization provides the base from which to meet further requirements. Any RDF/XML-aware tooling can consume and analyze an SBOL file. Where possible, we have re-used predicates from widely-used terminologies (such as Dublin Core REF) to expose as much of the data as practical to standard RDF tooling. +The canonical serialization of SBOL is to a strict dialect of RDF/XML. This serialization provides the base from which to meet further requirements. Any RDF/XML-aware tooling can consume and analyze an SBOL file. Where possible, we have re-used predicates from widely-used terminologies (such as Dublin Core~\cite{dcmi2012}) to expose as much of the data as practical to standard RDF tooling. Arbitrary RDF/XML provides a great deal of flexibility in how equivalent data can be serialized. This flexibility can result in different serializations when processing RDF/XML files using standard off-the-shelf XML tools, such as DOM-OO mappings. To address this problem, we define a canonical association between the nesting of data structures within the SBOL UML data model and the RDF/XML file. For all ownership associations (filled diamonds), the RDF/XML for the owned entity is embedded within the owner's RDF/XML. For all associations that are by reference (open diamonds), the RDF/XML for the referenced property is linked via a resource URI. -All first-class SBOL datatypes have an associated identity URI. In the RDF, this is the resource URI used by instances of that type. Properties and associations are asserted as nested RDF/XML assertions. Some datatypes are `top level', which means that they always appear at the top level of the RDF/XML serialization. All other datatypes will always appear nested within their container. +All first-class SBOL datatypes have an associated identity URI. In the RDF, this is the resource URI used by instances of that type. Properties and associations are asserted as nested RDF/XML assertions. Some datatypes are `top level', which means that they always appear at the top level of the RDF/XML serialization. All other datatypes will always appear nested within their parent container. Each instance of a first-class SBOL datatype may have annotations attached. These annotations are composed of a name and a value. They are serialized to RDF as a triple with the subject being the identity of the instance they annotate, the predicate being the name of the annotation, and the object being the value of that annotation. Annotation values are always nested within the RDF/XML serialization of the instance that they annotate. diff --git a/vocabulary.tex b/vocabulary.tex index 03586505..e7cc5b21 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -13,60 +13,59 @@ \section{SBOL Specification Vocabulary} \item The word "MAY" or the adjective "OPTIONAL" mean that an item is truly optional. \end{itemize} -\subsection{SBOL-specific Vocabulary} +\subsection{SBOL Class Names} SBOL defines several entity types in order to explicitly define different types of information. At the top level, a SBOL document includes these entities: -\vspace*{2ex} -\begin{center} - \begin{edtable}{tabular}{>{\hspace*{10pt}\slshape}l>{\hspace*{40pt}}l} - list of component definitions(optional) & (\sec*{sec:ComponentDefinition}) \\ - list of sequences (optional) & (\sec*{sec:Sequence}) \\ - list of module definitions (optional) & (\sec*{sec:ModuleDefinition}) \\ - list of models (optional) & (\sec*{sec:Model}) \\ - list of collections (optional) & (\sec*{sec:Collection}) \\ - list of generic top level entities (optional) & (\sec*{sec:GenericTopLevel}) \\ - \end{edtable} -\end{center} -\vspace*{2ex} -\todo[inline]{WTF is this table?} - -In addition to these top level entities, a SBOL document may include additional entities that are nested within the top level entities. Short descriptions of all SBOL entities are given below: - \begin{description} - -\item \emph{\sbol{ComponentDefinition}}: Represents biological molecules such as DNA, proteins, RNA, and small molecules. + +\item \emph{\sbol{Collection}}: +Represents a user defined organizational container for Components. \item \emph{\sbol{Component}}: -Represents a specific occurrence of a component within a larger design. For a given component definition, there may be several instances of components specified at different locations within the larger design. +Represents a specific occurrence or instance of a component within a larger design. For a given component definition, there may be several instances of components specified at different locations within the larger design. + +\item \emph{\sbol{ComponentDefinition}}: Represents biological molecules such as DNA, proteins, RNA, and small molecules. + + +\item \emph{\sbol{Location}}: +Specifies the base coordinates of a genetic feature on a DNA molecule or a residue or site on other sequential macromolecules such as proteins. + +\item \emph{\sbol{MapsTo}}: +Links Component objects (both Components and FunctionalComponents) from potentially different levels of hierarchy in a design. + +\item \emph{\sbol{Module}}: +Represents a specific occurrence of a functional module within a larger design. For a given module definition, there may be several instances of modules that specify the overall function of a biological design. + + +\item \emph{\sbol{ModuleDefinition}}: +Desribes an abstract functional module that may be composed of many functional interactions between biological components. + +\item \emph{\sbol{Sequence}}: +Represents a contiguous sequence of monomers in a macromoleculer polymer such as DNA, RNA, or protein. The +sequence is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. Therefore, both experimental work and theoretical sequence composition research depend heavily on the sequence associated with component definitions. + \item \emph{\sbol{SequenceAnnotation}}: Describes the position and strand orientation (in the case of DNA molecules) of a notable sub-sequence found within the Component being described. Annotations provide the link which describes the sequence of a component in terms of other components (i.e., subComponents). -\item \emph{\sbol{Location}}: -Specifies the coordinates of a genetic locus on a DNA molecule or a residue or site on other sequential macromolecules such as proteins. + \item \emph{\sbol{SequenceConstraint}}: Describes the relative spatial orientation of Components which are assembled together into a biological structure. -\item \emph{\sbol{Sequence}}: -Represents a contiguous sequence of monomers in a macromoleculer polymer such as DNA, RNA, or protein. The -sequence is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. Therefore, both experimental work and theoretical sequence composition research depend heavily on the sequence associated with component definitions. -\item \emph{\sbol{ModuleDefinition}}: -Desribes an abstract functional module that may be composed of many functional interactions between biological components. + \item \emph{\sbol{FunctionalComponent}}: Specifies an occurrence of a component that is intended to have a biological function inside a design, as opposed to a component whose purpose is simply to compose a biological structure. -\item \emph{\sbol{Module}}: -Represents a specific occurrence of a functional module within a larger design. For a given module definition, there may be several instances of modules that specify the overall function of a biological design. -\item \emph{\sbol{MapsTo}}: -Links Component objects (both Components and FunctionalComponents) from potentially different levels of hierarchy in a design. + \item \emph{\sbol{Interaction}}: Describes a functional relationship between biological effectors, such as regulatory activation or repression. Interactions can also be used to describe processes from the central dogma of biology, such as transcription and translation. + \item \emph{\sbol{Participation}}: Describes the role that a component plays in a functional interaction. For example, a transcription factor may participate in an interaction either as a repressor or activator. + \item \emph{\sbol{Model}}: Links a SBOL representation of biological components and their interactions to quantitative, computational models that may be used to predict the functional behavior of a biological design. -\item \emph{\sbol{Collection}}: -Represents a user defined organizational container for Components. + \item \emph{\sbol{GenericTopLevel}}: Represents a data container that can contain custom data added by user applications. \end{description} From f9dd91519feae6204bfdcd40062fb7363eb12765 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 21 Apr 2015 10:22:44 +0200 Subject: [PATCH 012/317] test commit --- vocabulary.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vocabulary.tex b/vocabulary.tex index e7cc5b21..8590934e 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -15,7 +15,7 @@ \section{SBOL Specification Vocabulary} \subsection{SBOL Class Names} -SBOL defines several entity types in order to explicitly define different types of information. At the top level, a SBOL document includes these entities: +SBOL defines several entity types in order to explicitly define different types of information. At the top level, a SBOL document includes the following entities: \begin{description} From e515ffa9a48e0a724cc7b81f5ad7073adb7d89f4 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 21 Apr 2015 08:23:03 +0000 Subject: [PATCH 013/317] Update on Overleaf. --- vocabulary.tex | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/vocabulary.tex b/vocabulary.tex index 8590934e..62db8a7f 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -28,6 +28,12 @@ \subsection{SBOL Class Names} \item \emph{\sbol{ComponentDefinition}}: Represents biological molecules such as DNA, proteins, RNA, and small molecules. +\item \emph{\sbol{FunctionalComponent}}: +Specifies an occurrence of a component that is intended to have a biological function inside a design, as opposed to a component whose purpose is simply to compose a biological structure. + +\item \emph{\sbol{Interaction}}: +Describes a functional relationship between biological effectors, such as regulatory activation or repression. Interactions can also be used to describe processes from the central dogma of biology, such as transcription and translation. + \item \emph{\sbol{Location}}: Specifies the base coordinates of a genetic feature on a DNA molecule or a residue or site on other sequential macromolecules such as proteins. @@ -68,4 +74,4 @@ \subsection{SBOL Class Names} \item \emph{\sbol{GenericTopLevel}}: Represents a data container that can contain custom data added by user applications. -\end{description} +\end{description} \ No newline at end of file From 52573c4b9ee4de1ddc6793a1d026918457b87bfd Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 21 Apr 2015 08:25:55 +0000 Subject: [PATCH 014/317] Update on Overleaf. --- vocabulary.tex | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/vocabulary.tex b/vocabulary.tex index 62db8a7f..0dd6bb05 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -31,6 +31,9 @@ \subsection{SBOL Class Names} \item \emph{\sbol{FunctionalComponent}}: Specifies an occurrence of a component that is intended to have a biological function inside a design, as opposed to a component whose purpose is simply to compose a biological structure. +\item \emph{\sbol{GenericTopLevel}}: +Represents a data container that can contain custom data added by user applications. + \item \emph{\sbol{Interaction}}: Describes a functional relationship between biological effectors, such as regulatory activation or repression. Interactions can also be used to describe processes from the central dogma of biology, such as transcription and translation. @@ -40,6 +43,9 @@ \subsection{SBOL Class Names} \item \emph{\sbol{MapsTo}}: Links Component objects (both Components and FunctionalComponents) from potentially different levels of hierarchy in a design. +\item \emph{\sbol{Model}}: +Links a SBOL representation of biological components and their interactions to quantitative, computational models that may be used to predict the functional behavior of a biological design. + \item \emph{\sbol{Module}}: Represents a specific occurrence of a functional module within a larger design. For a given module definition, there may be several instances of modules that specify the overall function of a biological design. @@ -47,6 +53,9 @@ \subsection{SBOL Class Names} \item \emph{\sbol{ModuleDefinition}}: Desribes an abstract functional module that may be composed of many functional interactions between biological components. +\item \emph{\sbol{Participation}}: +Describes the role that a component plays in a functional interaction. For example, a transcription factor may participate in an interaction either as a repressor or activator. + \item \emph{\sbol{Sequence}}: Represents a contiguous sequence of monomers in a macromoleculer polymer such as DNA, RNA, or protein. The sequence is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. Therefore, both experimental work and theoretical sequence composition research depend heavily on the sequence associated with component definitions. @@ -60,18 +69,4 @@ \subsection{SBOL Class Names} \item \emph{\sbol{SequenceConstraint}}: Describes the relative spatial orientation of Components which are assembled together into a biological structure. -\item \emph{\sbol{FunctionalComponent}}: -Specifies an occurrence of a component that is intended to have a biological function inside a design, as opposed to a component whose purpose is simply to compose a biological structure. - -\item \emph{\sbol{Interaction}}: -Describes a functional relationship between biological effectors, such as regulatory activation or repression. Interactions can also be used to describe processes from the central dogma of biology, such as transcription and translation. - -\item \emph{\sbol{Participation}}: -Describes the role that a component plays in a functional interaction. For example, a transcription factor may participate in an interaction either as a repressor or activator. - -\item \emph{\sbol{Model}}: -Links a SBOL representation of biological components and their interactions to quantitative, computational models that may be used to predict the functional behavior of a biological design. - -\item \emph{\sbol{GenericTopLevel}}: -Represents a data container that can contain custom data added by user applications. \end{description} \ No newline at end of file From fc3ba2b9703213d4299cc584b1a35ef4bb666400 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 21 Apr 2015 10:53:12 +0200 Subject: [PATCH 015/317] improving definitions --- vocabulary.tex | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/vocabulary.tex b/vocabulary.tex index 8590934e..acdeff67 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -15,28 +15,31 @@ \section{SBOL Specification Vocabulary} \subsection{SBOL Class Names} -SBOL defines several entity types in order to explicitly define different types of information. At the top level, a SBOL document includes the following entities: +SBOL defines the following classes: \begin{description} \item \emph{\sbol{Collection}}: -Represents a user defined organizational container for Components. +Represents a user-defined container for organizing a group of SBOL objects. \item \emph{\sbol{Component}}: -Represents a specific occurrence or instance of a component within a larger design. For a given component definition, there may be several instances of components specified at different locations within the larger design. +Represents a specific occurrence or instance of a single entity within the design of a more complex component. +Each \sbol{Component} is associated with a \sbol{ComponentDefinition}, and there may be many different instances at different locations in a design that share the same definition. -\item \emph{\sbol{ComponentDefinition}}: Represents biological molecules such as DNA, proteins, RNA, and small molecules. +\item \emph{\sbol{ComponentDefinition}}: Represents designed entities, such as DNA, RNA, and proteins, as well as other entities they interact with, such as small molecules or environmental properties. +\item \emph{\sbol{FunctionalComponent}}: +Represents a specific occurrence or instance of an entity within the design of a \sbol{ModuleDefinition}. +Exactly like a \sbol{Component}, except that it can be associated with information about its context of use in the \sbol{Module}, rather than in the context of a more complex \sbol{Component}. \item \emph{\sbol{Location}}: -Specifies the base coordinates of a genetic feature on a DNA molecule or a residue or site on other sequential macromolecules such as proteins. +Specifies the base coordinates of a genetic feature on a DNA or RNA molecule or a residue or site on another sequential macromolecules such as a protein. \item \emph{\sbol{MapsTo}}: -Links Component objects (both Components and FunctionalComponents) from potentially different levels of hierarchy in a design. +Links \sbol{Component} objects (both Components and FunctionalComponents) from different levels of hierarchy in a design, indicating that they referto the same entity (e.g., a promoter that is the target of a repressor in one module is the same promoter that regulates expression of a reporter in another module). \item \emph{\sbol{Module}}: -Represents a specific occurrence of a functional module within a larger design. For a given module definition, there may be several instances of modules that specify the overall function of a biological design. - +Represents a specific occurrence or instance of a module within a larger design. For a given module definition, there may be several instances of modules that specify the overall function of a biological design. \item \emph{\sbol{ModuleDefinition}}: Desribes an abstract functional module that may be composed of many functional interactions between biological components. From 9b7a162c22ae1a934f7771242fa4b377e96a4609 Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Tue, 21 Apr 2015 09:00:45 +0000 Subject: [PATCH 016/317] Update on Overleaf. --- model.tex | 5 +++-- serialization.tex | 2 +- vocabulary.tex | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/model.tex b/model.tex index e453550c..726fed59 100644 --- a/model.tex +++ b/model.tex @@ -527,8 +527,9 @@ \subsection{ModuleDefinition} The \sbol{ModuleDefinition} class forms the hub for functional description of genetic designs. A \sbol{ModuleDefinition} object is composed from zero or more \sbol{FunctionalComponent}, \sbol{Module}, and \sbol{Interaction} objects, and links to zero or more \sbol{Model} objects. A \sbol{ModuleDefinition} object relies on the ``direction'' data fields of its \sbol{FunctionalComponent} objects to specify whether they serve as its inputs or outputs. -\subsubsection{The role property} -In addition, each ModuleDefinition object must now have at least one of potentially several roles to indicate its intended usages. For example, the role URIs on a ModuleDefinition object may identify terms for abstract module roles, such as``inverter'' or ``AND gate'', or they may identify terms for biological module roles, such as ``metabolic pathway'' and ``signaling cascade''. +\subsubsection{The \sbolheading{roles} property} +This property includes zero or more URIs in order to specify the intended use of a \sbol{ModuleDefinition} entity. + For example, the role URIs on a ModuleDefinition object may identify terms for abstract module roles, such as``inverter'' or ``AND gate'', or they may identify terms for biological module roles, such as ``metabolic pathway'' and ``signaling cascade''. The serialization of \sbol{ModuleDefinition}s has the following form. \lstsetsbol diff --git a/serialization.tex b/serialization.tex index ae21cb04..2362b138 100644 --- a/serialization.tex +++ b/serialization.tex @@ -19,4 +19,4 @@ \section{SBOL RDF Serialization} \todo[inline]{Clarify what the 'these' at the end of the second and fourth sentences below are referring to, and the 'those' at the start of the next sentence and the 'they' at the start of the fifth sentence - neil} -By adopting this paradigm of RDF/XML serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. Since exactly the same scheme is used to serialize annotations and specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of these. Those not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entries in an SBOL file, we enable future specifications or extensions to ratify the structure of some of these. They would then become something represented by an explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely round-trip the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. The very regimented control of nesting versus referencing allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL RDF/XML files safely. +By adopting this paradigm of RDF/XML serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. Since exactly the same scheme is used to serialize annotations as specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of these. Those not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entries in an SBOL file, we enable future specifications or extensions to ratify the structure of some of these. They would then become something represented by an explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely round-trip the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. The very regimented control of nesting versus referencing allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL RDF/XML files safely. diff --git a/vocabulary.tex b/vocabulary.tex index a1d3b043..725583ae 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -34,6 +34,7 @@ \subsection{SBOL Class Names} \item \emph{\sbol{FunctionalComponent}}: Specifies an occurrence of a component that is intended to have a biological function inside a design, as opposed to a component whose purpose is simply to compose a biological structure. +%TODO: \item \emph{\sbol{GenericTopLevel}}: Represents a data container that can contain custom data added by user applications. @@ -72,4 +73,4 @@ \subsection{SBOL Class Names} \item \emph{\sbol{SequenceConstraint}}: Describes the relative spatial orientation of Components which are assembled together into a biological structure. -\end{description} +\end{description} \ No newline at end of file From 14efce7e024731e4fee460c7dc708de468e4c849 Mon Sep 17 00:00:00 2001 From: Curtis Madsen Date: Tue, 21 Apr 2015 09:51:24 +0000 Subject: [PATCH 017/317] Update on Overleaf. --- examples_model.tex | 2 +- model.tex | 48 ++++++++++++++++++++++++++++++++++++++-------- practices.tex | 2 ++ serialization.tex | 8 +++----- vocabulary.tex | 1 - 5 files changed, 46 insertions(+), 15 deletions(-) diff --git a/examples_model.tex b/examples_model.tex index c10f58d4..2b15e358 100644 --- a/examples_model.tex +++ b/examples_model.tex @@ -20,7 +20,7 @@ \subsection{LacI/TetR Toggle Switch} \end{center} \end{figure} -The LacI/TetR toggle switch is modeled in SBOL as two parallel hierarchies of structure and function. In the first case, \sbol{ComponentDefinition}s are used to define physical \sbol{Component}s at every level of the structural hierarchy of the toggle switch, including the functional DNA regions, TFs, and small molecules at the base of this hierarchy, and the genes and TFs bound to small molecules at the top of this hierarchy. \ref{uml:ex_comp_defs} is a UML object diagram that specifies the base \sbol{ComponentDefinition}s for the LacI inverter, while \ref{uml:ex_comp_def_compo} similarly specifies the composite \sbol{ComponentDefinition}s for the IPTG-LacI complex and TetR gene. +The LacI/TetR toggle switch is modeled in SBOL as two parallel hierarchies of structure and function. \sbol{ComponentDefinition}s are used to define physical \sbol{Component}s at every level of the structural hierarchy of the toggle switch, including the functional DNA regions, TFs, and small molecules at the base of this hierarchy, and the genes and TFs bound to small molecules at the top of this hierarchy. As an example of these data, \ref{uml:ex_comp_defs} is a UML object diagram that specifies the base \sbol{ComponentDefinition}s for the LacI inverter, while \ref{uml:ex_comp_def_compo} similarly specifies the composite \sbol{ComponentDefinition}s for the IPTG-LacI complex and TetR gene. \begin{figure}[ht] \begin{center} diff --git a/model.tex b/model.tex index 726fed59..dfede11b 100644 --- a/model.tex +++ b/model.tex @@ -265,9 +265,11 @@ \subsubsection{ComponentInstance} % The second sentence is confusing. Hierarchical composition of structure and function is enabled via the ComponentInstance class. Each ComponentInstance object has three data fields. \textcolor{red}{The first data field, ``definition'', links to the Component object that is effectively a part of the Component or Module object that owns the ComponentInstantiation object.} The second data field, ''access'', defines whether the ComponentInstance object can be referred to by ComponentInstance objects that are higher in the design hierarchy (yes if access is set to ''public''). The third data field, ``mappings'', is a set of MapsTo objects that link between other ComponentInstance objects at the same level of the design hierarchy as well as other ComponentInstance objects that are lower in the design hierarchy, thereby composing these objects with greater specificity (see first module example). -There are two subclasses of the ComponentInstance class: the Component and FunctionalComponent classes. +\todo[inline]{Add a table of access types} + +There are two subclasses of the ComponentInstance class: the \sbol{Component} and \sbol{FunctionalComponent} classes. -\todo[inline]{We need to explain what FunctionalComponent is somewhere} +\todo[inline]{We need to explain what FunctionalComponent is somewhere. GM: It is explained in ModuleDefinitions. Should we restructure?} \subsubsection{Component} @@ -527,9 +529,24 @@ \subsection{ModuleDefinition} The \sbol{ModuleDefinition} class forms the hub for functional description of genetic designs. A \sbol{ModuleDefinition} object is composed from zero or more \sbol{FunctionalComponent}, \sbol{Module}, and \sbol{Interaction} objects, and links to zero or more \sbol{Model} objects. A \sbol{ModuleDefinition} object relies on the ``direction'' data fields of its \sbol{FunctionalComponent} objects to specify whether they serve as its inputs or outputs. -\subsubsection{The \sbolheading{roles} property} -This property includes zero or more URIs in order to specify the intended use of a \sbol{ModuleDefinition} entity. - For example, the role URIs on a ModuleDefinition object may identify terms for abstract module roles, such as``inverter'' or ``AND gate'', or they may identify terms for biological module roles, such as ``metabolic pathway'' and ``signaling cascade''. +\subsubsection*{The \sbolheading{roles} property} +This property is optional and may include set of URIs in order to specify the intended use of a \sbol{ModuleDefinition} entity. These URIs may identify terms for abstract module roles, such as``inverter'' or ``AND gate'', or they may identify terms for biological module roles, such as ``metabolic pathway'' and ``signaling cascade''. +\todo[inline]{GM:inverter is also a biological module role. Would it make sense to rewrite the sentence above?} + +\subsubsection*{The \sbolheading{models} property} +This property is optional and includes identities of associated \sbol{Model} entities. + +\todo[inline]{GM:Is the property called submodules or modules? libSBOLj serialises using the subModule property.} + +\subsubsection*{The \sbolheading{subModules} property} +This property is optional and includes a set of \sbol{Module} entities, which refer to \sbol{ModuleDefinition}s to be imported. + +\todo[inline]{GM: libSBOLj serialised the property names as component. Do we use functionalComponent ot component as the property name?} +\subsubsection{The \sbolheading{functionalComponents} property} +This property is optional and includes a set of \sbol{FunctionalComponent} entities. These entities are then used to describe biological interactions via \sbol{Participation} entities. + +\subsubsection*{The \sbolheading{interactions} property} +This property is optional and includes a set of \sbol{Interaction} entities, which include \sbol{Participation} entities. The serialization of \sbol{ModuleDefinition}s has the following form. \lstsetsbol @@ -555,10 +572,25 @@ \subsubsection{The \sbolheading{roles} property} \subsubsection{FunctionalComponent} \label{sec:FunctionalComponent} -Composition of the functional layer of SBOL designs, on the other hand, is accomplished using \sbol{FunctionalComponent} objects. Each FunctionalComponent object is owned by a Module object and serves as an explicit usage of a ComponentInstance object for the purpose of fulfilling some function. In addition, each FunctionalInstantiation must specify via the ``direction'' field whether it serves as an input, output, both, or neither for its parent Module object. +Composition of the functional layer of SBOL designs, on the other hand, is accomplished using \sbol{FunctionalComponent} objects. Each FunctionalComponent object is owned by a \sbol{ModuleDefinition} or \sbol{Module} object and serves as an explicit usage of a \sbol{Component} object for the purpose of fulfilling some function. In addition, each \sbol{FunctionalComponent} must specify via the ``direction'' field (\ref{tbl:functionalcomponent_directions}) whether it serves as an input, output, both, or neither for its parent \sbol{ModuleDefinition} object. -\todo[inline]{Add a table of direction types} -\todo[inline]{Add a table of access types} +\sbol{FunctionalComponent} derives from \sbol{ComponentInstance}, and therefore has the definition and access properties. + + +\begin{table}[ht] + \begin{edtable}{tabular}{ll} + \toprule + \textbf{Direction URI} & \textbf{Description} \\ + \midrule + \url{http://sbols.org/v2#inout} & To indicate a \sbol{FunctionalComponent} can be used as both input or output\\ + \url{http://sbols.org/v2#in} & To indicate a \sbol{FunctionalComponent} can be used as input\\ + \url{http://sbols.org/v2#out} & To indicate a \sbol{FunctionalComponent} can be used as output\\ + \url{http://sbols.org/v2#none} & To indicate a \sbol{FunctionalComponent} is neither input nor output\\ + \bottomrule + \end{edtable} + \caption{URIs for the direction property.} + \label{tbl:functionalcomponent_directions} +\end{table} The serialization of \sbol{FunctionalComponent}s has the following form. \lstsetsbol diff --git a/practices.tex b/practices.tex index 22022269..5162b803 100644 --- a/practices.tex +++ b/practices.tex @@ -11,6 +11,8 @@ \subsection{Versioning} \subsection{Using External Terms} External ontologies and controlled vocabularies are integral part of SBOL. SBOL utilises these resources to access existing biological information where possible. New SBOL specific terms are defined only when necessary. Instead, SBOL provides placeholders that can point to external terms. For example, types of components, such as DNA or protein, are indicated using BioPAX. Similarly, the role of a DNA component is indicated via the SO terms. Although preferred ontologies have been indicated in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found at \ref{tbl:preferred_external_resources}. +\todo[inline]{It would be useful to add URLs to the resources - NeilW} + \begin{table}[ht] \begin{edtable}{tabular}{p{3cm}p{3cm}p{4cm}} diff --git a/serialization.tex b/serialization.tex index 2362b138..d843804f 100644 --- a/serialization.tex +++ b/serialization.tex @@ -11,12 +11,10 @@ \section{SBOL RDF Serialization} Arbitrary RDF/XML provides a great deal of flexibility in how equivalent data can be serialized. This flexibility can result in different serializations when processing RDF/XML files using standard off-the-shelf XML tools, such as DOM-OO mappings. To address this problem, we define a canonical association between the nesting of data structures within the SBOL UML data model and the RDF/XML file. For all ownership associations (filled diamonds), the RDF/XML for the owned entity is embedded within the owner's RDF/XML. For all associations that are by reference (open diamonds), the RDF/XML for the referenced property is linked via a resource URI. -All first-class SBOL datatypes have an associated identity URI. In the RDF, this is the resource URI used by instances of that type. Properties and associations are asserted as nested RDF/XML assertions. Some datatypes are `top level', which means that they always appear at the top level of the RDF/XML serialization. All other datatypes will always appear nested within their parent container. +All first-class SBOL datatypes have an associated identity URI. In the RDF, this is the resource URI used by instances of that type. Properties and associations are asserted as nested RDF/XML assertions. Some datatypes are `top level,' which means that they always appear at the top level of the RDF/XML serialization. All other datatypes will always appear nested within their parent container. Each instance of a first-class SBOL datatype may have annotations attached. These annotations are composed of a name and a value. They are serialized to RDF as a triple with the subject being the identity of the instance they annotate, the predicate being the name of the annotation, and the object being the value of that annotation. Annotation values are always nested within the RDF/XML serialization of the instance that they annotate. -SBOL supports top-level, user-defined annotations. This is to allow non-standardized but necessary information to be carried around as part of a design. For example, a particular sub-community may have an internal standard for data sheets. Individual data sheets can be represented as a generic top-level annotation with internal structured annotations. This annotation will be serialized into the RDF/XML in the usual way, as a RDF/XML block at the top level of the file. Other objects may refer to this through their annotations by reference, and this generic top-level entity may refer to other entities via references. +SBOL supports top-level, user-defined annotations. This is to allow non-standardized but necessary information to be carried around as part of a design. For example, a particular sub-community may have an internal standard for data sheets. Individual data sheets can be represented as a generic top-level annotation with internal structured annotations. This annotation will be serialized into the RDF/XML in the usual way, as a RDF/XML block at the top level of the file. Other objects may refer to this entity through their annotations by reference, and this generic top-level entity may refer to other entities via references. - -\todo[inline]{Clarify what the 'these' at the end of the second and fourth sentences below are referring to, and the 'those' at the start of the next sentence and the 'they' at the start of the fifth sentence - neil} -By adopting this paradigm of RDF/XML serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. Since exactly the same scheme is used to serialize annotations as specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of these. Those not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entries in an SBOL file, we enable future specifications or extensions to ratify the structure of some of these. They would then become something represented by an explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely round-trip the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. The very regimented control of nesting versus referencing allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL RDF/XML files safely. +By adopting this paradigm of RDF/XML serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. Since exactly the same scheme is used to serialize annotations as is used to serialize specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of properties and associations. Those properties not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entities in an SBOL file, we enable future specifications or extensions to ratify the structure of some of these items. These entities would then become part of the explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely round-trip the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. The very regimented control of nesting versus referencing allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL RDF/XML files safely. diff --git a/vocabulary.tex b/vocabulary.tex index 725583ae..633d7a49 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -34,7 +34,6 @@ \subsection{SBOL Class Names} \item \emph{\sbol{FunctionalComponent}}: Specifies an occurrence of a component that is intended to have a biological function inside a design, as opposed to a component whose purpose is simply to compose a biological structure. -%TODO: \item \emph{\sbol{GenericTopLevel}}: Represents a data container that can contain custom data added by user applications. From 4709e1ad2ffc75e28f589ce9b82b464d9becbc96 Mon Sep 17 00:00:00 2001 From: Curtis Madsen Date: Tue, 21 Apr 2015 09:52:27 +0000 Subject: [PATCH 018/317] Update on Overleaf. --- serialization.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serialization.tex b/serialization.tex index d843804f..00adb484 100644 --- a/serialization.tex +++ b/serialization.tex @@ -17,4 +17,4 @@ \section{SBOL RDF Serialization} SBOL supports top-level, user-defined annotations. This is to allow non-standardized but necessary information to be carried around as part of a design. For example, a particular sub-community may have an internal standard for data sheets. Individual data sheets can be represented as a generic top-level annotation with internal structured annotations. This annotation will be serialized into the RDF/XML in the usual way, as a RDF/XML block at the top level of the file. Other objects may refer to this entity through their annotations by reference, and this generic top-level entity may refer to other entities via references. -By adopting this paradigm of RDF/XML serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. Since exactly the same scheme is used to serialize annotations as is used to serialize specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of properties and associations. Those properties not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entities in an SBOL file, we enable future specifications or extensions to ratify the structure of some of these items. These entities would then become part of the explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely round-trip the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. The very regimented control of nesting versus referencing allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL RDF/XML files safely. +By adopting this paradigm of RDF/XML serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. Since exactly the same scheme is used to serialize annotations as is used to serialize specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of properties and associations. Those properties not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entities in an SBOL file, we enable future specifications or extensions to ratify the structure of . These entities would then become part of the explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely round-trip the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. The very regimented control of nesting versus referencing allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL RDF/XML files safely. From df29ae6dc586dfe5af15a531666723bfb3c00084 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 21 Apr 2015 11:52:28 +0200 Subject: [PATCH 019/317] working on componentinstance --- model.tex | 40 ++++++++++++++++++++++++++++++++++------ vocabulary.tex | 2 +- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/model.tex b/model.tex index 726fed59..945dff7e 100644 --- a/model.tex +++ b/model.tex @@ -252,22 +252,50 @@ \subsubsection*{Serialization} \subsubsection{ComponentInstance} \label{sec:ComponentInstance} -\todo[inline]{This is completely impenetrable to me -JSB} \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/component_instance} -\caption[]{Component} +\caption[]{ComponentInstance} \label{uml:component} \end{center} \end{figure} -% The second sentence is confusing. -Hierarchical composition of structure and function is enabled via the ComponentInstance class. Each ComponentInstance object has three data fields. \textcolor{red}{The first data field, ``definition'', links to the Component object that is effectively a part of the Component or Module object that owns the ComponentInstantiation object.} The second data field, ''access'', defines whether the ComponentInstance object can be referred to by ComponentInstance objects that are higher in the design hierarchy (yes if access is set to ''public''). The third data field, ``mappings'', is a set of MapsTo objects that link between other ComponentInstance objects at the same level of the design hierarchy as well as other ComponentInstance objects that are lower in the design hierarchy, thereby composing these objects with greater specificity (see first module example). +When a \sbol{ComponentDefinition} is used as an element of a larger design, each separate use is represented by a \sbol{ComponentInstance} object. +The \sbol{ComponentInstance} class is abstract, so every usage must be as one of its two subclasses: +\begin{itemize} +\item \sbol{Component} is used for specifying hierarchical structure, and can be linked to by the properties of parts of a \sbol{ComponentDefinition}. +\item \sbol{FunctionalComponent} is used for describing function in a \sbol{Module}, and can be linked to by the properties of parts of a \sbol{Module}. It is described in the \sbol{Module} section. +\end{itemize} + +\pragraph{The \sbolheading{componentDefinition} property} +\label{sec:componentDefinition} + +Every \sbol{ComponentInstance} MUST be associated with precisely one +\sbol{ComponentDefinition}, which is the design that it is an instance of. + +\pragraph{The \sbolheading{mapsTo} property} +\label{sec:mapsTo} + +The \sbol{mapsTo} property links -There are two subclasses of the ComponentInstance class: the Component and FunctionalComponent classes. +The third data field, ``mappings'', is a set of MapsTo objects that link between other ComponentInstance objects at the same level of the design hierarchy as well as other ComponentInstance objects that are lower in the design hierarchy, thereby composing these objects with greater specificity (see first module example). -\todo[inline]{We need to explain what FunctionalComponent is somewhere} + +\pragraph{The \sbolheading{access} property} +\label{sec:access} + +The \sbol{access} determines whether a \sbol{ComponentInstance} +can be identified with a part in a larger design via \sbol{MapsTo}. +The \sbol{access} property must be set to one of the following URIs: + +\begin{itemize} +\item \url{http://sbols.org/v2#public} + If the access is public, the \sbol{ComponentInstance} MAY be linked to by \sbol{MapsTo} objects. + +\item \url{http://sbols.org/v2#private} + If the access is private, the \sbol{ComponentInstance} MUST NOT be linked by any \sbol{MapsTo} object. +\end{itemize} \subsubsection{Component} diff --git a/vocabulary.tex b/vocabulary.tex index 725583ae..5b50cec7 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -46,7 +46,7 @@ \subsection{SBOL Class Names} Specifies the base coordinates of a genetic feature on a DNA or RNA molecule or a residue or site on another sequential macromolecules such as a protein. \item \emph{\sbol{MapsTo}}: -Links \sbol{Component} objects (both Components and FunctionalComponents) from different levels of hierarchy in a design, indicating that they referto the same entity (e.g., a promoter that is the target of a repressor in one module is the same promoter that regulates expression of a reporter in another module). +Links \sbol{Component} objects (both Components and FunctionalComponents) together within a larger design, indicating that they referto the same entity (e.g., a \sbol{MapsTo} could be used to indicate that a promoter that is the target of a repressor in one \sbol{Module} is the same promoter that regulates expression of a reporter in another \sbol{Module}). \item \emph{\sbol{Model}}: Links a SBOL representation of biological components and their interactions to quantitative, computational models that may be used to predict the functional behavior of a biological design. From 5a70fd80f1c64a5caf89c08d6eebf48022b3224e Mon Sep 17 00:00:00 2001 From: Curtis Madsen Date: Tue, 21 Apr 2015 10:08:51 +0000 Subject: [PATCH 020/317] Update on Overleaf. --- model.tex | 2 +- serialization.tex | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/model.tex b/model.tex index a6364245..4afc9729 100644 --- a/model.tex +++ b/model.tex @@ -996,4 +996,4 @@ \subsubsection{GenericTopLevel} \end{lstlisting} \label{ser:GenericTopLevel} -\end{figure} +\end{figure} \ No newline at end of file diff --git a/serialization.tex b/serialization.tex index 00adb484..dbedc093 100644 --- a/serialization.tex +++ b/serialization.tex @@ -7,14 +7,17 @@ \section{SBOL RDF Serialization} The SBOL serialization is designed to meet several competing requirements. Firstly, SBOL needs to support ad-hoc annotations and extensions. Secondly, SBOL needs to support processing by generic semantic web and database tools that have little or no knowledge of the SBOL data model. Thirdly, SBOL needs to support the generation of light-weight software clients so as to lower the barrier to entry for new API implementations within environments where community-maintained implementation(s) are not suitable. -The canonical serialization of SBOL is to a strict dialect of RDF/XML. This serialization provides the base from which to meet further requirements. Any RDF/XML-aware tooling can consume and analyze an SBOL file. Where possible, we have re-used predicates from widely-used terminologies (such as Dublin Core~\cite{dcmi2012}) to expose as much of the data as practical to standard RDF tooling. +The canonical serialization of SBOL is to a strict dialect of RDF/XML. This serialization provides the base from which to meet further requirements. Any RDF/XML-aware tooling can consume and analyze a SBOL file. Where possible, we have re-used predicates from widely-used terminologies (such as Dublin Core~\cite{dcmi2012}) to expose as much of the data as practical to standard RDF tooling. Arbitrary RDF/XML provides a great deal of flexibility in how equivalent data can be serialized. This flexibility can result in different serializations when processing RDF/XML files using standard off-the-shelf XML tools, such as DOM-OO mappings. To address this problem, we define a canonical association between the nesting of data structures within the SBOL UML data model and the RDF/XML file. For all ownership associations (filled diamonds), the RDF/XML for the owned entity is embedded within the owner's RDF/XML. For all associations that are by reference (open diamonds), the RDF/XML for the referenced property is linked via a resource URI. +\todo[inline]{Perhaps add or reference an example of ownership vs referencing. - cm} All first-class SBOL datatypes have an associated identity URI. In the RDF, this is the resource URI used by instances of that type. Properties and associations are asserted as nested RDF/XML assertions. Some datatypes are `top level,' which means that they always appear at the top level of the RDF/XML serialization. All other datatypes will always appear nested within their parent container. +\todo[inline]{Perhaps add or reference an example of a top level entity vs a nested entity. This may be very similar to the previous example. - cm} Each instance of a first-class SBOL datatype may have annotations attached. These annotations are composed of a name and a value. They are serialized to RDF as a triple with the subject being the identity of the instance they annotate, the predicate being the name of the annotation, and the object being the value of that annotation. Annotation values are always nested within the RDF/XML serialization of the instance that they annotate. SBOL supports top-level, user-defined annotations. This is to allow non-standardized but necessary information to be carried around as part of a design. For example, a particular sub-community may have an internal standard for data sheets. Individual data sheets can be represented as a generic top-level annotation with internal structured annotations. This annotation will be serialized into the RDF/XML in the usual way, as a RDF/XML block at the top level of the file. Other objects may refer to this entity through their annotations by reference, and this generic top-level entity may refer to other entities via references. +\todo[inline]{Perhaps add or reference examples of different annotations. - cm} -By adopting this paradigm of RDF/XML serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. Since exactly the same scheme is used to serialize annotations as is used to serialize specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of properties and associations. Those properties not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entities in an SBOL file, we enable future specifications or extensions to ratify the structure of . These entities would then become part of the explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely round-trip the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. The very regimented control of nesting versus referencing allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL RDF/XML files safely. +By adopting this paradigm of RDF/XML serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. Since exactly the same scheme is used to serialize annotations as is used to serialize specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of properties and associations. Those properties not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entities in a SBOL file, we enable future specifications or extensions to ratify the structure of other top-level objects. These entities would then become part of the explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely round-trip the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. The very regimented control of nesting versus referencing allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL RDF/XML files safely. From c0516e8c270b1e9c00a9fe86841f20c56ca923a7 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 21 Apr 2015 13:07:11 +0200 Subject: [PATCH 021/317] merged --- model.tex | 2 +- vocabulary.tex | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/model.tex b/model.tex index a6364245..f36b863b 100644 --- a/model.tex +++ b/model.tex @@ -277,7 +277,7 @@ \subsubsection{ComponentInstance} \pragraph{The \sbolheading{mapsTo} property} \label{sec:mapsTo} -The \sbol{mapsTo} property links +The \sbol{mapsTo} property links \sbol{Component} objects (both Components and FunctionalComponents) together within a larger design, indicating that they refer to the same entity. The third data field, ``mappings'', is a set of MapsTo objects that link between other ComponentInstance objects at the same level of the design hierarchy as well as other ComponentInstance objects that are lower in the design hierarchy, thereby composing these objects with greater specificity (see first module example). diff --git a/vocabulary.tex b/vocabulary.tex index bda8abc0..c377b4e3 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -45,7 +45,8 @@ \subsection{SBOL Class Names} Specifies the base coordinates of a genetic feature on a DNA or RNA molecule or a residue or site on another sequential macromolecules such as a protein. \item \emph{\sbol{MapsTo}}: -Links \sbol{Component} objects (both Components and FunctionalComponents) together within a larger design, indicating that they referto the same entity (e.g., a \sbol{MapsTo} could be used to indicate that a promoter that is the target of a repressor in one \sbol{Module} is the same promoter that regulates expression of a reporter in another \sbol{Module}). +Links \sbol{Component} objects (both Components and FunctionalComponents) together within a larger design, indicating that they refer to the same entity. +For example, a \sbol{MapsTo} could be used to indicate that a promoter that is the target of a repressor in one \sbol{Module} is the same promoter that regulates expression of a reporter in another \sbol{Module}. \item \emph{\sbol{Model}}: Links a SBOL representation of biological components and their interactions to quantitative, computational models that may be used to predict the functional behavior of a biological design. From fec9b96160769c430752b2079b4ae1ea7c2f62eb Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 21 Apr 2015 13:08:53 +0200 Subject: [PATCH 022/317] typos --- model.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/model.tex b/model.tex index f36b863b..7c38ea8f 100644 --- a/model.tex +++ b/model.tex @@ -268,20 +268,20 @@ \subsubsection{ComponentInstance} \item \sbol{FunctionalComponent} is used for describing function in a \sbol{Module}, and can be linked to by the properties of parts of a \sbol{Module}. It is described in the \sbol{Module} section. \end{itemize} -\pragraph{The \sbolheading{componentDefinition} property} +\paragraph{The \sbolheading{componentDefinition} property} \label{sec:componentDefinition} Every \sbol{ComponentInstance} MUST be associated with precisely one \sbol{ComponentDefinition}, which is the design that it is an instance of. -\pragraph{The \sbolheading{mapsTo} property} +\paragraph{The \sbolheading{mapsTo} property} \label{sec:mapsTo} The \sbol{mapsTo} property links \sbol{Component} objects (both Components and FunctionalComponents) together within a larger design, indicating that they refer to the same entity. The third data field, ``mappings'', is a set of MapsTo objects that link between other ComponentInstance objects at the same level of the design hierarchy as well as other ComponentInstance objects that are lower in the design hierarchy, thereby composing these objects with greater specificity (see first module example). -\pragraph{The \sbolheading{access} property} +\paragraph{The \sbolheading{access} property} \label{sec:access} The \sbol{access} determines whether a \sbol{ComponentInstance} From 258b93f24fa4fb7fc1300e7dd52ec08eed0387d6 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 21 Apr 2015 14:15:25 +0200 Subject: [PATCH 023/317] working on todos --- history.tex | 2 ++ overview.tex | 6 ++++-- vocabulary.tex | 37 ++++++++++++++++--------------------- 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/history.tex b/history.tex index 0f2482c4..d27a91ae 100644 --- a/history.tex +++ b/history.tex @@ -6,3 +6,5 @@ \section{History and Acknowledgements} SBOL originated in discussions between participants in the Synthetic Biology Open Language Workshops held in Blacksburg, Virginia on January 7-10, 2011, and its further development has continued at a series of subsequent open invitation workshops and through email exchanges on the SBOL Developers mailing list. Contributors to this work include: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University). + +\todo[inline]{Make Herbert write something nice to add here} \ No newline at end of file diff --git a/overview.tex b/overview.tex index 3deb0084..e3510f78 100644 --- a/overview.tex +++ b/overview.tex @@ -7,7 +7,7 @@ \section{Overview of SBOL} \begin{figure}[ht] \begin{center} -\includegraphics[scale=0.4]{images/SBOL2_2_revised.png} +\includegraphics[scale=1.2]{images/SBOL2_2_revised.png} \caption[]{ } \label{images:overview} \end{center} @@ -20,4 +20,6 @@ \section{Overview of SBOL} % \todo[inline]{I would suggest a more complete and more explicit mapping of vocabulary to the toggle switch example. -bder} -% The same toggle switch is now displayed using two LacI and TetR inverter submodules in figure \ref{images:toggleswitch_modular}. The LacI inverter uses LacI as input and produces the TetR output, and the TetR inverter uses TetR as input and produces the LacI output. These inputs and outputs are mapped in a parent module. \ No newline at end of file +% The same toggle switch is now displayed using two LacI and TetR inverter submodules in figure \ref{images:toggleswitch_modular}. The LacI inverter uses LacI as input and produces the TetR output, and the TetR inverter uses TetR as input and produces the LacI output. These inputs and outputs are mapped in a parent module. + +\todo[inline]{The sequence is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. Therefore, both experimental work and theoretical sequence composition research depend heavily on the sequence associated with component definitions.} diff --git a/vocabulary.tex b/vocabulary.tex index c377b4e3..915d8139 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -26,51 +26,46 @@ \subsection{SBOL Class Names} Represents a specific occurrence or instance of a single entity within the design of a more complex component. Each \sbol{Component} is associated with a \sbol{ComponentDefinition}, and there may be many different instances at different locations in a design that share the same definition. -\item \emph{\sbol{ComponentDefinition}}: Represents designed entities, such as DNA, RNA, and proteins, as well as other entities they interact with, such as small molecules or environmental properties. +\item \emph{\sbol{ComponentDefinition}}: Describes the structure of designed entities, such as DNA, RNA, and proteins, as well as other entities they interact with, such as small molecules or environmental properties. \item \emph{\sbol{FunctionalComponent}}: -Represents a specific occurrence or instance of an entity within the design of a \sbol{ModuleDefinition}. -Exactly like a \sbol{Component}, except that it can be associated with information about its context of use in the \sbol{Module}, rather than in the context of a more complex \sbol{Component}. - -\item \emph{\sbol{FunctionalComponent}}: -Specifies an occurrence of a component that is intended to have a biological function inside a design, as opposed to a component whose purpose is simply to compose a biological structure. +Represents a specific occurrence or instance of an entity within a \sbol{ModuleDefinition}. +Exactly like a \sbol{Component}, except that it can be associated with information about its context of use in the \sbol{Module}, rather than in the context of a containing \sbol{ComponentDefinition}. \item \emph{\sbol{GenericTopLevel}}: Represents a data container that can contain custom data added by user applications. \item \emph{\sbol{Interaction}}: -Describes a functional relationship between biological effectors, such as regulatory activation or repression. Interactions can also be used to describe processes from the central dogma of biology, such as transcription and translation. +Describes a functional relationship between biological entities, such as regulatory activation or repression, or a biological processes such as transcription or translation. \item \emph{\sbol{Location}}: -Specifies the base coordinates of a genetic feature on a DNA or RNA molecule or a residue or site on another sequential macromolecules such as a protein. +Specifies the base coordinates and orientation of a genetic feature on a DNA or RNA molecule or a residue or site on another sequential macromolecule such as a protein. \item \emph{\sbol{MapsTo}}: -Links \sbol{Component} objects (both Components and FunctionalComponents) together within a larger design, indicating that they refer to the same entity. -For example, a \sbol{MapsTo} could be used to indicate that a promoter that is the target of a repressor in one \sbol{Module} is the same promoter that regulates expression of a reporter in another \sbol{Module}. +When a design (\sbol{ComponentDefinition} or \sbol{ModuleDefinition}) includes another design as a substructure, the larger design may need to refer to a \sbol{ComponentInstance} from the sub-design. +In this case, a copy of the referenced \sbol{ComponentInstance} needs to be created in the design and a \sbol{MapsTo} is added to the instance for the sub-design, which associates the original and the copy. \item \emph{\sbol{Model}}: -Links a SBOL representation of biological components and their interactions to quantitative, computational models that may be used to predict the functional behavior of a biological design. +Links an SBOL representation of biological components and their interactions to quantitative, computational models that may be used to predict the functional behavior of a biological design. \item \emph{\sbol{Module}}: -Represents a specific occurrence or instance of a module within a larger design. For a given module definition, there may be several instances of modules that specify the overall function of a biological design. +Represents a specific occurrence or instance of a sub-system within a larger design. +Each \sbol{Module} is associated with a \sbol{ModuleDefinition}, and there may be many different instances at different locations in a design that share the same definition. \item \emph{\sbol{ModuleDefinition}}: -Desribes an abstract functional module that may be composed of many functional interactions between biological components. +Describes a ``system'' design as a collection of biological components and their functional relationships. \item \emph{\sbol{Participation}}: -Describes the role that a component plays in a functional interaction. For example, a transcription factor may participate in an interaction either as a repressor or activator. +Describes the role that a \sbol{Component} plays in an \sbol{Interaction}. +For example, a transcription factor might participate in an \sbol{Interaction} as a repressor or as an activator. \item \emph{\sbol{Sequence}}: -Represents a contiguous sequence of monomers in a macromoleculer polymer such as DNA, RNA, or protein. The -sequence is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. Therefore, both experimental work and theoretical sequence composition research depend heavily on the sequence associated with component definitions. +Represents a contiguous series of monomers in a macromoleculer polymer such as DNA, RNA, or protein. \item \emph{\sbol{SequenceAnnotation}}: -Describes the position and strand orientation (in the case of DNA molecules) of a notable sub-sequence found within the Component being -described. Annotations provide the link which describes the -sequence of a component in terms of other components (i.e., -subComponents). +Describes the \sbol{Location} of a notable sub-sequence found within a \sbol{ComponentDefinition}, optionally linking it to a \sbol{Component}. \item \emph{\sbol{SequenceConstraint}}: -Describes the relative spatial orientation of Components which are assembled together into a biological structure. +Describes the relative spatial position and orientation of two \sbol{Component} objects that are contained within the same \sbol{ComponentDefinition}. \end{description} \ No newline at end of file From b2676f857c17828814b39995c85d366f572ac2b9 Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Tue, 21 Apr 2015 13:52:14 +0000 Subject: [PATCH 024/317] Update on Overleaf. --- images/MapsTo_Diagram1.png | Bin 0 -> 337497 bytes model.tex | 11 ++++++++++- overview.tex | 2 +- uml/participation.png | Bin 5651 -> 5754 bytes 4 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 images/MapsTo_Diagram1.png diff --git a/images/MapsTo_Diagram1.png b/images/MapsTo_Diagram1.png new file mode 100644 index 0000000000000000000000000000000000000000..766e379be5e319dd6d86672dbd65f48145682e22 GIT binary patch literal 337497 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

rk8)l#j+-@6pS%?vS`S|R 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

wjmpGBbc*T*qa+Z5_je*zq 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

vL+G@dasN1sp) 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

  • +Q0uR#@dce}D&Bl+%2li9vcu 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

    i=AGc1n( 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�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 YTej7+xpsskfSNJ{p^Q|@Ry2L~KfSXy(EtDd literal 5651 zcma)AXH=8TwvM8p_<@KZiXcS+4ee7zB#4NhgkB>OnoP2QQ=^Ugc_dG@n+xSoz08!Im>1Oj1G zhpQSuAP4+FyYi zGaY`4p0KvFvvYA-9I5q!vy9s%kn1swGG_l5#$S7Tb5T}S!X(+ipGyzDz3+#J>AtpC zWYEWqeXOm|%gOb>PFddG9nJISWZVgzvz43B9nL>#>Wem4ULPDX?VL4`~ zxcK^DclXlf>TJF-F)uAG%_&-2Duoz!UO}O@s7UWH!q&!S0GARM$60yqjB2{PygV{c zLn9)U7;A^Y4COgFpTLAyAi(Rpuh9~vXKI?ivb)Vd6z1pm{4~D*FxV`lukRlB;&655 zveJzk?^hOvDkVGgO=^md$%*nFGv#W?O-oLGcVwF0@T=l0RLFOEBBZ^#x|(QFANQI| zzyxN;5H1>VgT#x>_pa;mKxd~=83p6+7Rf9aBy(QOL_gePb>LOMDmf0WN-$k zamF^n#lfL?L&N84b#d`Gg0&Q8X*}qoEHo9}ab*-5E{c>sQK{i`igMt3BIS~#WciYf zqoZa>Ny!ys9H)(o3%Mzo>-Zx!`8$Y+dq(%TGOw{ZJDHehA!5!c8Vt^^R;OwQ?ye`b z>%P8G{HPEW5OC8<`b&jI-2OA_!lX!gGgdtI(}MXWdUrDYJv@2}2?IOp>rcGG`xpHj z2S>)at#BeI@~;S(ldkINNlfSG!F9!H?=456zi+14^a@1{g+sSou zsXBO=$mjcM!lmB%!W(~1e>om&o>V|2R<^x;D^%`SAyENLuz&bQtfE&i_mSg!gA;qcSt0 z*&DFl?}hN*>gwu`yWU<969b3`Eb{Y>_~shTP)#j#=#^oP&O-GEOvRwC{>lD2#FXtd5JGY^Nu(P*^ZUL(n@&9i6EZt)2Sc!`@?S_<&-traSJ4-HVc z8vZ&wNTs@WHers_#BC6_BV(eX?BDehEitt{&n!uP`nbM|nwkhS1RH@qr|3&)tEqwE zxRt#d4!wbP?(A%qw%@sP2P^_zTU)!>=jMDhuYMDIVM2S1N~Jb=2;($0G*(tt-bb(0 zPESwU*N3igm*jm04e@NoKHKj!4(f+9)$Ei0Qk(G7F_6ctRV+r0;fWlxDWMmA@*ETk!BqcAI8sYAJujyt-O_s-0 zEdN;?s}kI&AlTp6_aZdZb&OQ7$xG3JAvJsw9kUKKj8d5gg0W>iSK4o-Ol zar&^V5T%Vw9yNqXTh!@Qmy}Ru#DjbEj0?G>@KaM$AmZh}x6$TrQ~u%`BZMz5zKp{q zR5xnG`}p_(&i97Tg20hti9pE8%R3|?DLp-z>T1hj=2w&P_$TMhs^dBvFpR>yD_5>? z`93!bd(2~|p{WU+YyP#rqoZTlsLIw#p@s|e;>99U*ZTT;PrLe@9Dpgl<1{B{XY(3# zTh#dK=7q!Def|CCHTF3UnIbWK#Pa@qH%1g!LlhQ!SBp4xKDlWGH7w*`2zvde#OBf1Aqqp0y%9!j0?K?bVA}7dP%4 zDRyiqb{yw#t2@7W{o(QKIS+e#xV5*f?MG7uaB=)g@wvkScRKa_j7IJdmAVfoQcwHD zL`L7W8#kOT6Z4~q3f!MsTE1qEkOtUp&Q90N#I#m+grl)16MrToCT{tWYHDhFdwbj3 z)bne6Rv%edj7Fc8LpeIe$HmPfNsh$aji!)eC`&W5ouA9rt_PO9_yA zig`nTzk>tKE*8t+j1k4Hpta;0_O|lTGS{wU8~&;s3+S0WdM_p##p5U;B?XnIbnNZz0Z!nFyW#iKEuEsD zHbHtO##L=U$g%$@`zGF?>uQ#vccxO{F4h?K7U5-A6Dq7LyNz}FEX^fIY;j747qX2 zdoAmvww#4dk*|}H+_h`3Sq+fL8i3NXelCWj){c(ew5Fyez^s5s@ytS$;+A&*o9X@R zLAP%8#rl?oDZV=Qk7(rh zms+|T>T9p>@d)Fs1@Xp2i|RJuB#}JQR81KxiL9lnH*dx}l4Z8kY=V|umKHKX#rfA) zHpPLU1PW6M3XM>KZ5jIsj-)+U_luFf$cJByCBIc~**3~md|6#pmAe9ta@*qt+zwEM zn_Kr#BN>7@Ud;SZm8PYmlbw}SURg=M#Q!!cA+fgdN=q!cqa(_{bmtA_sKehdSRPwx z8GRQO^jAnhrK|}-H zJ%t7FM5J+}Pv7y)00FS0qu%ogi=;^$d2Ou><4S%_(T@Uz|3;Vb-uEi);_6Da>toH? zZ_S}p>0?Czcze?_*Ehh4TwVCs9KruyL&n41y^c~WraIyZ{ka=Z{YdU-jV^;DiQ*dG zSiduzYEjKLWC;7F8c)sS`b#aJD1$ibqV z+qJc|k&%%qQqw!z^adRmZyPJiUDC?@pbRE6`h~W;d&$AH(NPP=PaiA7Nro(ch(1t# zacF|(LODasej=8<_chohmaHp=2V{~!1TWIp)wH6l%&gv5)=ew-^(r^W@2sFj)|p zrOc{0B)Li~gNw#GwmfOi^Jm3;gyla_2D>JC+nlj%$$O6^rTXsBY+|VwNsk$)$(INwJG+u%KIw<;#hTOZc$Ji}cd5ni7SH;NW1Y zG$Vr&wwcs5+aom)&mStxPxK9lqg#j=z_$H%4q|K2p1}>F$?@^lbWLe-@lrVs4Bf)v z`RvRLsypw)V5!~6h{*2oBrdMW?>zyXF6orz(SQhVacBiPLsD3V+7(SDde!gWkC zj4&g;z33{+<$yTXWHBumi!ZRBh88ZVu0FFZ*&5;0oF1e1Y+-k~&Ylt;!<1#r?mXq? z?;Vw&s-*g7a44F6SykU)GUIJka%w6_L6rF@>N_FK@Ts?VVQ{g8JV87jKUQ__jN07M z>e3e=Lj}$fb!cA_?~A|vJQb+Kal!K-y@az|?*-phJ`|x@ApB+HTObSJ5cYN5i~R5% zg{uc>J9YbF`XAl+Ph($Uf-L%{XOra;uN1$oOuU#G$SRUeR9axDy z^w%yu&}(rxTnN9!45m-01$BU&Y>~~gj&hWE7-)vp4_IT^b9oT;YgrU@ezycqe89%D zKLk$;S1q!p2z3Arf0Wfz>rbch2P{G56)?`pGY|iB>+%1+rCjH~eUI`*Ec76)v2r)) z0CpheupmBOnxFk3-@Et-nYdM^-&+8R_Rn7S8`s~(vd^;2r+d*ywRLp^_jZz1g3#l+ za4``Pk*RmlKnwG`@TA}L|MC6%(&ERrUMEOYz?r3XUDR`6#HJq!q>?Ay*q`%h5tv#K zu=4WqeiEg-+pWrcVB9Mnu#7>Y7mob%XH|7}VPWCBcbAluEaQO+6dUI|BL51`g3U(@ ziwa6xl8oveOoQZ3o7~kklic-CLL37CyzpQw~~y#|9RfkBd@*PKxk% zc6D@=l`y{+bsep9SOvP7j90L0i+mAuwu4uG)UTkRK>KlYYA*+CaWEnA<;!op2}wz{ zm-z~K?x>I2EPcsT6QTeShmZ$KW@-W}x5`R4%Jo~G_y}kt)e@wINaPO#a#ofI{RNO0 zCO8<Oq``xTg-% z6BQKhW7wQ>nAnhP(0&Ok>Dwws9xgz}Z@3%-++>eWK|6KSzG^Db6uAx^t9kPI$pwWf zf>xxX!sJj=VWAW*3zwwKHDYhj9$8EmVmV1`?25Cf-hnHV&T;~!UKpKZPbuC2zF4Rc zJXjtz5IKR3h+xHeczAGYt0rKtaN)S!d@A48)|zG-*PbabjK><{)Mvlu8@r6vQ}kI+ zm3Td#k8Ic0)=pH!uW%eWlu@n*b6d%p+{<$8UcAJA>@ukC6#Ss|^m?#NwV|T48d+)U5O)qEz)S=m-W(>0$otRE6V0BfmH9?!a`!TA}f%75Bgt7 zGQ#_4L4@-lO~82q>H2OMD6JOKE4BsbtAipS?*tbT@fYnkbj37a?P~KSS@RzB(R#%! zYva2kiac!VU%u#f_6EAAp0|B2QK+Buy%A-b3t+tTv~?)5*NsLIaip(q&M#87wzgb4 zLYcTW)Fuh`mz6S5!=sF?Z(UsNit) zxVI*Y6+ASa6|g$|P Date: Tue, 21 Apr 2015 15:57:36 +0200 Subject: [PATCH 025/317] more todos --- model.tex | 288 ++++++++++++++++++++++------------------------ overview.tex | 1 + serialization.tex | 17 +++ vocabulary.tex | 2 + 4 files changed, 160 insertions(+), 148 deletions(-) diff --git a/model.tex b/model.tex index 7c38ea8f..6fffb838 100644 --- a/model.tex +++ b/model.tex @@ -2,10 +2,9 @@ \section{SBOL Data Model} % ----------------------------------------------------------------------------- In this section, we describe the types of biological design data that can belong to an SBOL document and the relationships between these data types. The SBOL data model is specified using Unified Modeling Language (UML) 2.0 diagrams \href{http://www.omg.org/spec/UML/2.0/}{(OMG 2005)}. -This section begins with a review of UML diagrams, then each following subsection explains one of the ``top-level'' objects in the SBOL data model. +This section begins with a review of UML diagrams and naming conventions, then each following subsection explains one of the ``top-level'' objects in the SBOL data model. Complete SBOL examples and best practices when using SBOL can be found in \ref{sec:examples} and \ref{sec:bestpractices}, respectively. -\todo[inline]{Sections 8 and 10 has a funny gap, makes me think we need to look at indexing in general --JSB} \subsection{Understanding the UML Diagrams} @@ -31,6 +30,10 @@ \subsection{Understanding the UML Diagrams} \end{itemize} +\subsection{Naming Conventions} + +\todo[inline]{need to put in typography and upper case vs. camel case, etc} + Within the SBOL data model, all properties are given a singular or plural name in accordance with their data cardinalities. The forms of these names follow the usual rules of grammar. For example, \sbol{sequenceAnnotation} is the singular form of \sbol{sequenceAnnotation}s. Within the RDF serialization of SBOL, however, SBOL properties are always given singular names. The serialization does not use RDF collections to represent multiple values of an SBOL property. Hence, if a SBOL property has five values, then its serialization contains five RDF triples with singular predicate names. @@ -42,21 +45,10 @@ \subsection{Understanding the UML Diagrams} As another example, a relational implementation of the SBOL API would store the properties and associations a mixture of data fields and references via foreign keys. The fields in individual tables will correspond to the `arrowhead' end of an association (in reverse to the direction in the RDF and OO representations), and the name may be modified to reflect this change in directionality. For example, the \sbol{sequence} association between a \sbol{ComponentDefinition} and \sbol{Sequence} would be represented by a foreign key field on the \sbol{Sequence} table that references a row in the \sbol{ComponentDefinition} table, and it may be named \external{sequenceOf}. \todo[inline]{What is this even about? Is it another best practice?} -\subsection {SBOL Document} -\todo[inline]{This feels like it belongs in the serialization section, not the data model section. -Goksel: How about extending a bit more about SBOLDocument first? We can say that all the SBOL entities are included in an SBOL Document. Then we can talk about how it is serialized.} -An SBOL document is a valid RDF/XML document. Accordingly, each SBOL document starts with an XML declaration that has its XML version set to ``1.0.'' As shown in the example below, this declaration is then followed by a rdf:RDF XML element that includes the namespace declarations for RDF and SBOL. The latter namespace is used to indicate which entities and properties in the SBOL document are defined by SBOL. - -\lstsetsbol -\begin{lstlisting} - - -... - -\end{lstlisting} - -As explained in \ref{sec:annotations}, SBOL documents can also include custom namespace declarations for the purpose of embedding application-specific data. +\subsection{Data Types} +\todo[inline]{we use String, Integer, URI, Literal (these are from some W3C or XSD or whatever thing), and the classes below} +\todo[inline]{Give a forward pointer to RECOMMENDED best-practices for compliant URIs} \todo[inline]{Need to consider the order in which the classes are presented} \subsection {Identified} @@ -137,7 +129,65 @@ \subsubsection*{The \sbolheading{description} property} \end{center} \end{figure} +\todo[inline]{Make the left-right order in this figure match the order of the following sections} + + + +\subsection{Sequence} +\label{sec:Sequence} +The \sbol{Sequence} class is used to encode the primary structure of a \sbol{ComponentDefinition} object and the encoding used to capture this information. + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/sequence} +\caption[]{Sequence class} +\label{uml:sequence} +\end{center} +\end{figure} + +\subsubsection*{The \sbolheading{elements} property} +\label{sec:elements} +Required. A \external{String} of characters that represent the constituents of biological molecule, for example nucleic acid symbols for DNA molecules. + +\subsubsection*{The \sbolheading{encoding} property} +\label{sec:encoding} +Required. \sbol{Sequence} objects identify their type of encoding with a \external{URI}. For example, a \sbol{Sequence} object that encodes a DNA sequence would have an \external{IUPAC DNA} encoding, while a \sbol{Sequence} object that encodes the chemical structure of glucose might have a \external{simplified molecular-input line-entry system (SMILES)} encoding (\ref{tbl:sequence_encodings}). + +%A Summary of letters for nucleic acids and aminoacids +\begin{table}[ht] + \begin{edtable}{tabular}{ll} + \toprule + \textbf{ComponentDefinition Type} & \textbf{Encoding} \\ + \midrule + DnaRegion,RnaRegion & \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html}\\ + Protein & \url{http://www.chem.qmul.ac.uk/iupac/AminoAcid/}\\ + SmallMolecule & \url{http://www.opensmiles.org/opensmiles.html}\\ + \bottomrule + \end{edtable} + \caption{URIs for the encoding property and the corresponding ComponentDefiniton types, which are BioPAX terms.} + \label{tbl:sequence_encodings} +\end{table} + +The serialization of \sbol{Sequence} objects has the following form: +\lstsetsbol +\begin{lstlisting} + + ... + [\emph{one}] ... [\emph{element}] + [\emph{one}] [\emph{element}] + +\end{lstlisting} + +The example below shows the serialization of a \sbol{Sequence} object for a promoter. Nucleotide sequences are represented with the \sbol{elements} property and the \sbol{encoding} is serialized as a URI value. + +\lstsetsbol +\begin{lstlisting} + + ttgacagctagctcagtcctaggtataatgctagc + + +\end{lstlisting} \subsection{ComponentDefinition} @@ -482,61 +532,102 @@ \subsubsection{SequenceConstraint} \end{lstlisting} -\subsection{Sequence} -\label{sec:Sequence} -The \sbol{Sequence} class is used to encode the primary structure of a \sbol{ComponentDefinition} object and the encoding used to capture this information. +\subsection{Model} +\label{sec:Model} \begin{figure}[ht] \begin{center} -\includegraphics[scale=0.6]{uml/sequence} -\caption[]{Sequence class} -\label{uml:sequence} +\includegraphics[scale=0.6]{uml/model} +\caption[]{} +\label{uml:model} \end{center} \end{figure} +\todo[inline]{Move the link text to the section on Module} +SBOL's \sbol{Model} objects are used to link genetic descriptions of biological parts and their interactions to computational models. Each \sbol{Model} object specify the location of the actual content of a qualitative/quantitative model, the language the model is implemented with, the modelling framework and the model's role(s). In this way, there is minimal duplication of standardization efforts and users of SBOL can specify the quantitative function of their ModuleDefinition objects in a well-developed language of their choice. A ModuleDefinition object can link to more than one model since each one can encode different levels of functional detail and play different roles in engineering design. +\subsubsection*{ The \sbolheading{source} property} +This property has a data type of \external{URI}, and is required to specify the actual location of a qualitative or quantitative model. -\subsubsection*{The \sbolheading{elements} property} -\label{sec:elements} -Required. A \external{String} of characters that represent the constituents of biological molecule, for example nucleic acid symbols for DNA molecules. +\subsubsection*{ The \sbolheading{language} property} +This property has a data type of \external{URI}, and is required to specify the language the model is implemented with. Values for the URIs should be chosen from the EMBRACE Data and Methods (EDAM) ontology where possible. Some of the model types and corresponding URI values are shown in \ref{tbl:model_types}. -\subsubsection*{The \sbolheading{encoding} property} -\label{sec:encoding} -Required. \sbol{Sequence} objects identify their type of encoding with a \external{URI}. For example, a \sbol{Sequence} object that encodes a DNA sequence would have an \external{IUPAC DNA} encoding, while a \sbol{Sequence} object that encodes the chemical structure of glucose might have a \external{simplified molecular-input line-entry system (SMILES)} encoding (\ref{tbl:sequence_encodings}). +\begin{table}[ht] + \begin{edtable}{tabular}{ll} + \toprule + \textbf{Model Language} & \textbf{URI} \\ + \midrule + SBML & \url{http://identifiers.org/edam/format_2585}\\ + CellML & \url{http://identifiers.org/edam/format_3240}\\ + BioPAX & \url{http://identifiers.org/edam/format_3156}\\ + \bottomrule + \end{edtable} + \caption{Commonly used model languages and their corresponding URIs.} + \label{tbl:model_types} +\end{table} + + +\subsubsection*{ The \sbolheading{framework} property} +This property has a data type of \external{URI} and is required to specify the modelling framework a model is implemented with. Values for this property should be used from the SBO's modelling framework terms where possible (\ref{tbl:model_frameworks}). -%A Summary of letters for nucleic acids and aminoacids \begin{table}[ht] \begin{edtable}{tabular}{ll} \toprule - \textbf{ComponentDefinition Type} & \textbf{Encoding} \\ + \textbf{Framework} & \textbf{URI} \\ \midrule - DnaRegion,RnaRegion & \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html}\\ - Protein & \url{http://www.chem.qmul.ac.uk/iupac/AminoAcid/}\\ - SmallMolecule & \url{http://www.opensmiles.org/opensmiles.html}\\ + Continuous & \url{http://identifiers.org/biomodels.sbo/SBO:0000062}\\ + Discrete & \url{http://identifiers.org/biomodels.sbo/SBO:0000063}\\ \bottomrule \end{edtable} - \caption{URIs for the encoding property and the corresponding ComponentDefiniton types, which are BioPAX terms.} - \label{tbl:sequence_encodings} + \caption{Example modelling frameworks and corresponding SBO terms.} + \label{tbl:model_frameworks} \end{table} -The serialization of \sbol{Sequence} objects has the following form: +\subsubsection*{ The \sbolheading{role} property} +This property has a data type of \external{URI} and is required to specify what the model is for, such as part or interaction model (\ref{tbl:model_roles}). + +\todo[inline]{Are we agreeing on this table? Do we want to give more flexibility?} +\begin{table}[ht] + \begin{edtable}{tabular}{l} + \toprule + \textbf{Model Roles} \\ + \midrule + http://sbols.org/v2\#component\_model\\ + http://sbols.org/v2\#interaction\_model\\ + http://sbols.org/v2\#module\_model\\ + \bottomrule + \end{edtable} + \caption{URI constants for model roles} + \label{tbl:model_roles} +\end{table} + +The serialization of \sbol{Model} objects has the following form: + \lstsetsbol \begin{lstlisting} - - ... - [\emph{one}] ... [\emph{element}] - [\emph{one}] [\emph{element}] - + + ... + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{one or more}] [\emph{element}] + \end{lstlisting} -The example below shows the serialization of a \sbol{Sequence} object for a promoter. Nucleotide sequences are represented with the \sbol{elements} property and the \sbol{encoding} is serialized as a URI value. - +The example below shows the serialization of a \sbol{Model} object. The model object includes information about the models of a toggle switch. The model is implemented in SBML using a continuous modelling framework. The source property shows the physical location of the SBML model, in a model repository. \lstsetsbol \begin{lstlisting} - - ttgacagctagctcagtcctaggtataatgctagc - - + + + + + + + + + + \end{lstlisting} +\label{ser:Model} @@ -763,103 +854,6 @@ \subsubsection{Participation} \end{lstlisting} -\subsection{Model} -\label{sec:Model} - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/model} -\caption[]{} -\label{uml:model} -\end{center} -\end{figure} -SBOL's \sbol{Model} objects are used to link genetic descriptions of biological parts and their interactions to computational models. Each \sbol{Model} object specify the location of the actual content of a qualitative/quantitative model, the language the model is implemented with, the modelling framework and the model's role(s). In this way, there is minimal duplication of standardization efforts and users of SBOL can specify the quantitative function of their ModuleDefinition objects in a well-developed language of their choice. A ModuleDefinition object can link to more than one model since each one can encode different levels of functional detail and play different roles in engineering design. - -\subsubsection*{ The \sbolheading{source} property} -This property has a data type of \external{URI}, and is required to specify the actual location of a qualitative or quantitative model. - -\subsubsection*{ The \sbolheading{language} property} -This property has a data type of \external{URI}, and is required to specify the language the model is implemented with. Values for the URIs should be chosen from the EMBRACE Data and Methods (EDAM) ontology where possible. Some of the model types and corresponding URI values are shown in \ref{tbl:model_types}. - -\begin{table}[ht] - \begin{edtable}{tabular}{ll} - \toprule - \textbf{Model Language} & \textbf{URI} \\ - \midrule - SBML & \url{http://identifiers.org/edam/format_2585}\\ - CellML & \url{http://identifiers.org/edam/format_3240}\\ - BioPAX & \url{http://identifiers.org/edam/format_3156}\\ - \bottomrule - \end{edtable} - \caption{Commonly used model languages and their corresponding URIs.} - \label{tbl:model_types} -\end{table} - - -\subsubsection*{ The \sbolheading{framework} property} -This property has a data type of \external{URI} and is required to specify the modelling framework a model is implemented with. Values for this property should be used from the SBO's modelling framework terms where possible (\ref{tbl:model_frameworks}). - -\begin{table}[ht] - \begin{edtable}{tabular}{ll} - \toprule - \textbf{Framework} & \textbf{URI} \\ - \midrule - Continuous & \url{http://identifiers.org/biomodels.sbo/SBO:0000062}\\ - Discrete & \url{http://identifiers.org/biomodels.sbo/SBO:0000063}\\ - \bottomrule - \end{edtable} - \caption{Example modelling frameworks and corresponding SBO terms.} - \label{tbl:model_frameworks} -\end{table} - -\subsubsection*{ The \sbolheading{role} property} -This property has a data type of \external{URI} and is required to specify what the model is for, such as part or interaction model (\ref{tbl:model_roles}). - -\todo[inline]{Are we agreeing on this table? Do we want to give more flexibility?} -\begin{table}[ht] - \begin{edtable}{tabular}{l} - \toprule - \textbf{Model Roles} \\ - \midrule - http://sbols.org/v2\#component\_model\\ - http://sbols.org/v2\#interaction\_model\\ - http://sbols.org/v2\#module\_model\\ - \bottomrule - \end{edtable} - \caption{URI constants for model roles} - \label{tbl:model_roles} -\end{table} - -The serialization of \sbol{Model} objects has the following form: - -\lstsetsbol -\begin{lstlisting} - - ... - [\emph{one}] [\emph{element}] - [\emph{one}] [\emph{element}] - [\emph{one}] [\emph{element}] - [\emph{one or more}] [\emph{element}] - -\end{lstlisting} - -The example below shows the serialization of a \sbol{Model} object. The model object includes information about the models of a toggle switch. The model is implemented in SBML using a continuous modelling framework. The source property shows the physical location of the SBML model, in a model repository. -\lstsetsbol -\begin{lstlisting} - - - - - - - - - - -\end{lstlisting} -\label{ser:Model} - - \subsection {Collection} \label{sec:Collection} The \sbol{Collection} class is another top level class, which groups together \sbol{TopLevel} objects that have something in common. For example, a \sbol{Collection} object could be the result of a query to find all \sbol{Component} objects that function as promoters or all \sbol{Module} objects that function as inverters in a given repository. @@ -909,14 +903,12 @@ \subsubsection*{The member property} \subsection{Application Specific Data - Annotations} \label{sec:annotations} - - -\todo[inline]{example of custom annotation} +\todo[inline]{Explain that the two types of annotation correspond to top-level vs. part/whole properties} \subsubsection{Annotating SBOL objects} SBOL allows embedding application specific data that are not captured by the SBOL standard. Such data are optional, can be computationally generated and exchanged via SBOL documents without getting lost. These custom data are stored in the form of annotations, providing informative metadata about entities in an SBOL document. -Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. Property names are specified by qualified names as \external{IRI}s, each formed of a namespace and a local name. Values can be \external{IRI}s or \external{Literal}s (for example, \external{String}, \external{Integer}, \external{Double}, \external{Boolean}) or custom \sbol{identity} entities initialized with application specific types. These custom \sbol{identity} entities can further be annotated with the scheme described here. These custom entities are either serialized within an SBOL entity being annotated, or referenced using an \external{IRI} annotation and embedded within the the annotated entity's parent.%TODO Make sure if we have a choice here! +Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. Property names are specified by qualified names as \external{URI}s, each formed of a namespace and a local name. Values can be \external{URI}s or \external{Literal}s (for example, \external{String}, \external{Integer}, \external{Double}, \external{Boolean}) or custom \sbol{identity} entities initialized with application specific types. These custom \sbol{identity} entities can further be annotated with the scheme described here. These custom entities are either serialized within an SBOL entity being annotated, or referenced using an \external{URI} annotation and embedded within the the annotated entity's parent.%TODO Make sure if we have a choice here! \begin{figure}[!ht] \begin{center} diff --git a/overview.tex b/overview.tex index e3510f78..614cdb4f 100644 --- a/overview.tex +++ b/overview.tex @@ -12,6 +12,7 @@ \section{Overview of SBOL} \label{images:overview} \end{center} \end{figure} +\todo[inline]{Put a caption on the figure} SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. diff --git a/serialization.tex b/serialization.tex index dbedc093..606f24a9 100644 --- a/serialization.tex +++ b/serialization.tex @@ -21,3 +21,20 @@ \section{SBOL RDF Serialization} \todo[inline]{Perhaps add or reference examples of different annotations. - cm} By adopting this paradigm of RDF/XML serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. Since exactly the same scheme is used to serialize annotations as is used to serialize specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of properties and associations. Those properties not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entities in a SBOL file, we enable future specifications or extensions to ratify the structure of other top-level objects. These entities would then become part of the explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely round-trip the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. The very regimented control of nesting versus referencing allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL RDF/XML files safely. + +\subsection {SBOL Documents} +\todo[inline]{This needs to be integrated with the rest} +An SBOL document is a valid RDF/XML document. Accordingly, each SBOL document starts with an XML declaration that has its XML version set to ``1.0.'' As shown in the example below, this declaration is then followed by a rdf:RDF XML element that includes the namespace declarations for RDF and SBOL. The latter namespace is used to indicate which entities and properties in the SBOL document are defined by SBOL. + +\todo[inline]{Need to state ``This is the SBOL2 namespace''} + +\lstsetsbol +\begin{lstlisting} + + +... + +\end{lstlisting} + +As explained in \ref{sec:annotations}, SBOL documents can also include custom namespace declarations for the purpose of embedding application-specific data. + diff --git a/vocabulary.tex b/vocabulary.tex index 915d8139..87d05154 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -13,6 +13,8 @@ \section{SBOL Specification Vocabulary} \item The word "MAY" or the adjective "OPTIONAL" mean that an item is truly optional. \end{itemize} +\todo[inline]{Make sure all requirements words are properly upper-cased} + \subsection{SBOL Class Names} SBOL defines the following classes: From bea7ea8c0fcff69677204f763b44077c0ce96e03 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Tue, 21 Apr 2015 14:09:46 +0000 Subject: [PATCH 026/317] Update on Overleaf. --- examples_model.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples_model.tex b/examples_model.tex index 2b15e358..25d816d0 100644 --- a/examples_model.tex +++ b/examples_model.tex @@ -20,7 +20,7 @@ \subsection{LacI/TetR Toggle Switch} \end{center} \end{figure} -The LacI/TetR toggle switch is modeled in SBOL as two parallel hierarchies of structure and function. \sbol{ComponentDefinition}s are used to define physical \sbol{Component}s at every level of the structural hierarchy of the toggle switch, including the functional DNA regions, TFs, and small molecules at the base of this hierarchy, and the genes and TFs bound to small molecules at the top of this hierarchy. As an example of these data, \ref{uml:ex_comp_defs} is a UML object diagram that specifies the base \sbol{ComponentDefinition}s for the LacI inverter, while \ref{uml:ex_comp_def_compo} similarly specifies the composite \sbol{ComponentDefinition}s for the IPTG-LacI complex and TetR gene. +The LacI/TetR toggle switch is modeled in SBOL as two parallel hierarchies of structure and function. In the first case, \sbol{ComponentDefinition}s are used to define physical \sbol{Component}s at every level of the structural hierarchy of the toggle switch, including the functional DNA regions, TFs, and small molecules at the base of this hierarchy, and the genes and TFs bound to small molecules at the top of this hierarchy. As an example of these data, \ref{uml:ex_comp_defs} is a UML object diagram that specifies the base \sbol{ComponentDefinition}s for the LacI inverter, while \ref{uml:ex_comp_def_compo} similarly specifies the composite \sbol{ComponentDefinition}s for the IPTG-LacI complex and TetR gene. \begin{figure}[ht] \begin{center} @@ -38,7 +38,7 @@ \subsection{LacI/TetR Toggle Switch} \end{center} \end{figure} -In the second case, \sbol{ModuleDefinition}s are used to define functional \sbol{Module}s at every level of the functional hierarchy of the toggle switch, with LacI-dependent repression of TetR expression (the LacI inverter \sbol{Module}) and TetR-dependent repression of LacI (the TetR inverter \sbol{Module}) forming the base of this hierarchy. Each \sbol{ModuleDefinition} also contains the \sbol{FunctionalComponent}s that participate in \sbol{Interaction}s and are defined by the same \sbol{ComponentDefinition}s as the parallel \sbol{Component}s in the structural hierarchy of the toggle switch. Finally, \sbol{MapsTo} entities are used to refine which \sbol{FunctionalComponent}s of the functional hierarchy are identical or map them to \sbol{Component}s in the structural hierarchy. +Next, \sbol{ModuleDefinition}s are used to define functional \sbol{Module}s at every level of the functional hierarchy of the toggle switch, with LacI-dependent repression of TetR expression (the LacI inverter \sbol{Module}) and TetR-dependent repression of LacI (the TetR inverter \sbol{Module}) forming the base of this hierarchy. Each \sbol{ModuleDefinition} also contains the \sbol{FunctionalComponent}s that participate in \sbol{Interaction}s and are defined by the same \sbol{ComponentDefinition}s as the parallel \sbol{Component}s in the structural hierarchy of the toggle switch. Finally, \sbol{MapsTo} entities are used to refine which \sbol{FunctionalComponent}s of the functional hierarchy are identical or map them to \sbol{Component}s in the structural hierarchy. \todo[inline]{ComponentDefinition.types in the following figure are not consistent with the list of BioPax ontological terms described previously in the Data Model section} From d0b9947b7129b4c75c7075c9828a920a060f89e7 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Wed, 22 Apr 2015 07:08:55 +0000 Subject: [PATCH 027/317] Update on Overleaf. --- examples_model.tex | 11 +++-------- images/MapsTo_Diagram2.png | Bin 0 -> 453497 bytes model.tex | 16 +++++++++++++--- 3 files changed, 16 insertions(+), 11 deletions(-) create mode 100644 images/MapsTo_Diagram2.png diff --git a/examples_model.tex b/examples_model.tex index 25d816d0..12fd0034 100644 --- a/examples_model.tex +++ b/examples_model.tex @@ -5,27 +5,22 @@ \section{Examples of Data Model} \subsection{LacI/TetR Toggle Switch} - -\todo[inline]{mrp: Where do all the terms in these examples come from?} -\todo[inline]{mrp: Very brief intro to what the toggle switch is, what the major moving part are - I need to understand what we are describing before we describe it} -\todo[inline]{bab: perhaps include citation as well} - In this section, we model the design of a LacI/TetR toggle switch similar to those constructed in \cite{Gardner2000}. This design is visualized in \ref{images:toggleswitch_modular}. \begin{figure}[ht] \begin{center} \includegraphics[scale=0.4]{images/toggleswitch_modular} -\caption[]{Design of a LacI/TetR toggle switch. This design is composed of two inverter sub-designs, each containing a single gene. These genes mutually repress each other's expression via their encoded protein TFs LacI and TetR, which can be bound by the small molecules IPTG and aTc, respectively. Dashed lines indicate that the TFs in the inverter sub-designs are identical to those in the overall toggle switch design. Arrows represent different molecular interactions, including the repression of pLac via LacI, the non-covalent binding of IPTG to LacI, the transcription of TetR mRNA, and the translation of TetR.} +\caption[]{Design of a LacI/TetR toggle switch. This design is composed of two inverter sub-designs, each containing a single gene. These genes mutually repress each other's expression via their encoded protein TFs, LacI and TetR. Furthermore, both LacI and TetR are bound by specific small molecules that sequester them and prevent them from acting as repressors. In this design, arrows represent different molecular interactions, including the repression of pLac via LacI, the non-covalent binding of IPTG to LacI, the transcription of TetR mRNA, and the translation of TetR. Dashed lines serve to map between TFs in the inverter sub-designs and those in the overall toggle switch design.} \label{images:toggleswitch_modular} \end{center} \end{figure} -The LacI/TetR toggle switch is modeled in SBOL as two parallel hierarchies of structure and function. In the first case, \sbol{ComponentDefinition}s are used to define physical \sbol{Component}s at every level of the structural hierarchy of the toggle switch, including the functional DNA regions, TFs, and small molecules at the base of this hierarchy, and the genes and TFs bound to small molecules at the top of this hierarchy. As an example of these data, \ref{uml:ex_comp_defs} is a UML object diagram that specifies the base \sbol{ComponentDefinition}s for the LacI inverter, while \ref{uml:ex_comp_def_compo} similarly specifies the composite \sbol{ComponentDefinition}s for the IPTG-LacI complex and TetR gene. +The LacI/TetR toggle switch is modeled in SBOL as two parallel hierarchies of structure and function. In particular, \sbol{ComponentDefinition}s are used to define physical \sbol{Component}s at every level of the structural hierarchy of the toggle switch, including the functional DNA regions, TFs, and small molecules at the base of this hierarchy, and the genes and TF complexes at the top of this hierarchy. As examples of these objects, \ref{uml:ex_comp_defs} is a UML object diagram that specifies the base \sbol{ComponentDefinition}s of the LacI inverter, while \ref{uml:ex_comp_def_compo} specifies the composite \sbol{ComponentDefinition}s of the IPTG-LacI complex and TetR gene. \begin{figure}[ht] \begin{center} \includegraphics[width=\textwidth]{example_uml/toggle_1} -\caption[]{Examples of component definitions for one half of the LacI/TetR toggle switch. These include DNA \sbol{ComponentDefinition}s based on parts from the iGEM Registry, the RNA and protein \sbol{ComponentDefinition}s derived from them, and the small molecule \sbol{ComponentDefinition} for IPTG. Each \sbol{ComponentDefinition}s in this example is associated with a \sbol{Sequence} that has an IUPAC nucleic acid or amino acid encoding, except for the definition of IPTG, which is associated with a \sbol{Sequence} that has a SMILES encoding.} +\caption[]{Examples of component definitions for the LacI inverter. These include DNA \sbol{ComponentDefinition}s based on parts from the iGEM Registry, the RNA and protein \sbol{ComponentDefinition}s derived from them, and the small molecule \sbol{ComponentDefinition} for IPTG. Each \sbol{ComponentDefinition} in this example is associated with a \sbol{Sequence} that has an IUPAC nucleic acid or amino acid encoding, except the \sbol{ComponentDefinition} for IPTG, which is associated with a \sbol{Sequence} that has a SMILES encoding.} \label{uml:ex_comp_defs} \end{center} \end{figure} diff --git a/images/MapsTo_Diagram2.png b/images/MapsTo_Diagram2.png new file mode 100644 index 0000000000000000000000000000000000000000..8e5974b3234ee7f57ef48b3690d51e0ad4fe0ef9 GIT binary patch literal 453497 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%0Ap0qMCVj(>AJEq2`eX!0t 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

    O8s|!EVY)M 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�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๝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

    wjsR_S|Q+O}kash;Wg3orBkH^Jc9Ocj6Vg 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Ǽ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
    2?>42pf zLFr1{zV#9m(Iy+htDzdgB>A1n?L^5X=6G|ea!qVHLQjI|;Dwcvju`RycsihvCdKK% zjtpAGJ5CJPbO4^NEZ3d79mh;-78P{Fg7jm3HfgCa7XXe^%K)wo6uBXhM76Fi^j2@! zC9se+GbNm6GWh?2OB8sws24qhl4%#X9{NXi>Xgk}TjmY)gtbpfknAs((YvL!O4_V1 z?yhgO<@}fwh>fPM{4@uB6d(QlX4LR{Xhn?f@#K5majhsE6XWAYYB<^SRHhDV1q20R z(>dT)J|;k0X&QKv{4Wmp3!W3Vc(V z6Dnf63JEoe2tiIDO)L;1lA(zONH_Dg^Y7qUpn)&`r$(N zIFt!UpcU2%*e&C6nLo-9^ow;H&6Dj@!Bj*vV)nU&mrRyRensF`bJ$&Bx_I!to^XgW zj-KusnAm9FA{fXRs_NN1Ir(fMy|g^FQ>(t*dy*1-Ass8;=;R!_s#legvJl^s`$sxz z86t7hCQdc~v6;07cci0U9U?M8VFG%fFU*6EpIlqsFD;mEMeDX~7KXu44h#u(ryfXE63R@M1V^TPA4VO*_g2=6m&A(_xL}eIaVUc%zf& z%eSYCL~aHOJ9b%UTSo=YvadH(d7FnwUie1>$;N*7;5{8;EqJdP_+q2LNSFUB)MqN>zY@H-{5(;pv2cuJquX17L?rOeUDx&F# zk0EE*M$<(vVO&}z?rZ-DTGV9PT)OD?irF=;L+@a@$CF}6xxxXbzHy(FgPiJxG|1~m zJxz~=JE8+h3lIXfW-9a_f-Xv|_r4exraII`E?=q5=`}mS4v*fiY3$%$>nZ5#d3cbX z@u<7o41ZxJ9WWmf4p`x`MKaLv7NM9hoTpezg#Q0#L9lQwF_)%1HPv#IQRS=3GqqLQ z^b~$r4Yq~P7C6r8(-8HGju?Ir%d?)8qjM4MMfahVZzxXj278R}e@kzkE${T8w+lLF z@|jfRu`$6_)96(0)?MVPB!Jlnp#^VN?D@JuASmYZP?xk6R;$Ci z_meB%w9wZlM^H4snAxA6IT45#S=*lJo6+rN<;x-7GEjCBID9w!2Os|uJ|sfQ+SWcN z89CP5&)`1UDek1sEup9xVc2u9AXhVrX9gDTYJSjj$F>uVcY$<}J0!iU46wctEXo#e z>LGV8k8m-9+$!)%E) zH^~CfM_g|NPAJ2hIxxHcDD<#~sb_s^Vwe(3h| z2@7&9;t>H-{_7l=!auq|9 Date: Wed, 22 Apr 2015 09:43:55 +0200 Subject: [PATCH 028/317] JSB todos finished for sections 1-5 --- history.tex | 4 +++- model.tex | 2 +- overview.tex | 12 ++++++++++-- purpose.tex | 4 ++++ sbol2.tex | 6 +++++- 5 files changed, 23 insertions(+), 5 deletions(-) diff --git a/history.tex b/history.tex index d27a91ae..a5404e3d 100644 --- a/history.tex +++ b/history.tex @@ -7,4 +7,6 @@ \section{History and Acknowledgements} Contributors to this work include: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University). -\todo[inline]{Make Herbert write something nice to add here} \ No newline at end of file +\todo[inline]{Get lots more authors to sign on} + +\todo[inline]{Make Herbert write something nice about histor to add here -JSB} \ No newline at end of file diff --git a/model.tex b/model.tex index 3a600c3f..724943c9 100644 --- a/model.tex +++ b/model.tex @@ -658,7 +658,7 @@ \subsubsection*{The \sbolheading{subModules} property} This property is optional and includes a set of \sbol{Module} entities, which refer to \sbol{ModuleDefinition}s to be imported. \todo[inline]{GM: libSBOLj serialised the property names as component. Do we use functionalComponent ot component as the property name?} -\subsubsection{The \sbolheading{functionalComponents} property} +\subsubsection*{The \sbolheading{functionalComponents} property} This property is optional and includes a set of \sbol{FunctionalComponent} entities. These entities are then used to describe biological interactions via \sbol{Participation} entities. \subsubsection*{The \sbolheading{interactions} property} diff --git a/overview.tex b/overview.tex index 614cdb4f..eb411ca3 100644 --- a/overview.tex +++ b/overview.tex @@ -2,6 +2,7 @@ \section{Overview of SBOL} % % ----------------------------------------------------------------------------- Typically, information about a genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. Interactions between these constituents are then used to construct biologically plausible designs. +\todo[inline]{reword for better clarity and coverage of the model -JSB} % In the figure below, a simple toggle switch system is displayed, in which LacI and TetR repress each other's genes transcriptionally. The toggling of the system is controlled by adding IPTG to deactivate LacI, and ATC to deactivate TetR. The components of the system includes genetic elements, proteins, small molecules. @@ -12,15 +13,22 @@ \section{Overview of SBOL} \label{images:overview} \end{center} \end{figure} -\todo[inline]{Put a caption on the figure} +\todo[inline]{Put a caption on the figure -JSB} +\todo[inline]{Remove SBML from the figure -JSB} + +The \sbol{Sequence} is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. +Therefore, both experimental work and theoretical sequence composition research depend heavily on the sequence associated with component definitions. +\todo[inline]{need to make it clear that it includes DNA, RNA, and protein, also smooth the text --JSB} + SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. +\todo[inline]{Need to also explain annotation --JSB} SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. +\todo[inline]{This needs to be clarified. Do we really want to explain MapsTo here? -JSB} % \todo[inline]{I would suggest a more complete and more explicit mapping of vocabulary to the toggle switch example. -bder} % The same toggle switch is now displayed using two LacI and TetR inverter submodules in figure \ref{images:toggleswitch_modular}. The LacI inverter uses LacI as input and produces the TetR output, and the TetR inverter uses TetR as input and produces the LacI output. These inputs and outputs are mapped in a parent module. -\todo[inline]{The sequence is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. Therefore, both experimental work and theoretical sequence composition research depend heavily on the sequence associated with component definitions.} diff --git a/purpose.tex b/purpose.tex index d3398a80..b9fe5490 100644 --- a/purpose.tex +++ b/purpose.tex @@ -11,7 +11,9 @@ \section{Purpose} \todo[inline]{Maybe discuss more about how SBOL is a standard. Huge transition from what is Synethic Biology to SBOL} To help address these challenges, the Synthetic Biology Open Language (SBOL) introduces a standardized file format for the electronic exchange of biological designs and a standardized data model for the reproducible description of essential design details. Ultimately, SBOL is intended to speed up the research and development of designed biological systems by enhancing the exchange and reproducibility of biological designs between different labs. +\todo[inline]{it's not about a file format, it's about a representation; the fact that this is a file format is incidental -JSB} +\todo[inline]{Should the comparison with 1.1 really be there? This needs revision to be stand-alone, and right now it's basically an extract of the SBOL2 paper -JSB} Version 1.1 of the SBOL standard focused on representing the structural aspects of genetic designs. To serve as an effective medium for the computational exchange of genetic designs, SBOL must be extended to capture more aspects of a designed system, including both structural and functional information, and the composition of complex structural and functional designs by combining simpler parts. The SBOL data model proposed in this specification provides for addressing the most pressing needs for expanding SBOL Version 1.1. \begin{enumerate} @@ -29,3 +31,5 @@ \section{Purpose} Taken together, these capabilities allow SBOL sufficient expressivity to support the description and exchange of hierarchical, modular representations of both the intended structure and function of designed biological systems. To address the need for functional descriptions in SBOL, the proposed data model adds classes for modules, interactions, and models. These classes provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the Systems Biology Markup Language (SBML)~\cite{SBML} to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. + +\todo[inline]{This just sort of stops. Need a better end. --JSB} \ No newline at end of file diff --git a/sbol2.tex b/sbol2.tex index 2082588d..07f7b250 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -128,12 +128,16 @@ Anil Wipat & \emph{Newcastle University, GB}\\ Herbert Sauro & \emph{University of Washington, US}\\[8pt] \end{tabular}\\ -\href{mailto:editors@sbolstandard.org}{\sffamily editors@sbolstandard.org}} +\href{mailto:editors@sbolstandard.org}{\sffamily editors@sbolstandard.org} +\todo[inline]{What should be the authorship? -JSB}} + \maketitlepage \maketableofcontents +\todo[inline]{Need to make TOC link to right locations: right now, it links to end of prior section, rather than start of clicked section --JSB} + \input{purpose} % ----------------------------------------------------------------------------- From ae7eb312fb0436b51c0d9edc21902a39a2449d57 Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Wed, 22 Apr 2015 08:22:40 +0000 Subject: [PATCH 029/317] Update on Overleaf. --- model.tex | 30 ++++++++++++++++++++++++++++-- overview.tex | 3 +-- sbol2.tex | 2 +- serialization.tex | 3 +-- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/model.tex b/model.tex index 724943c9..b803a853 100644 --- a/model.tex +++ b/model.tex @@ -763,7 +763,33 @@ \subsubsection{MapsTo} \label{uml:maps_to} \end{center} \end{figure} -The MapsTo class serves as a means of linking between Component objects (both Components and FunctionalComponents) at different levels of the design hierarchy. For example, when a Module object is instantiated inside another Module object, a MapsTo object on the appropriate Module object can be used to link between a FunctionalComponent object in the parent Module (as specified by the ``local'' data field) and a FunctionalComponent object in the child module (as specified by the ``remote'' data field). This linking can perhaps be most easily understood via the examples in the next section. +The \sbol{MapsTo} class serves as a means of linking between \sbol{ComponentInstance} objects (both \sbol{Component}s and \sbol{FunctionalComponent}s) at different levels of the design hierarchy. For example, when a child \sbol{ModuleDefinition} object is instantiated inside a parent \sbol{ModuleDefinition} object, a \sbol{MapsTo} object is used to link these two ModuleDefinitions. + +\paragraph{The local property} +This required property is used to specify the ComponentInstance from the parent entity. + +\paragraph{The remote property} +This required property is used to specify the ComponentInstance from the child entity being imported by the parent. + +\paragraph{The refinement property} + +\begin{table}[ht] + \begin{edtable}{tabular}{ll} + \toprule + \textbf{Refinement URI} & \textbf{Description} \\ + \midrule + \url{http://sbols.org/v2#useremote} & Indicates that ComTo indicate a \sbol{FunctionalComponent} can be used as both input or output\\ + \url{http://sbols.org/v2#uselocal} & To indicate a \sbol{FunctionalComponent} can be used as input\\ + \url{http://sbols.org/v2#out} & To indicate a \sbol{FunctionalComponent} can be used as output\\ + \url{http://sbols.org/v2#none} & To indicate a \sbol{FunctionalComponent} is neither input nor output\\ + \bottomrule + \end{edtable} + \caption{URIs for the direction property.} + \label{tbl:functionalcomponent_directions} +\end{table} + + +on the former \sbol{ModuleDefinition} object can be used to link between a FunctionalComponent object in the parent Module (as specified by the ``local'' data field) and a FunctionalComponent object in the child module (as specified by the ``remote'' data field). This linking can perhaps be most easily understood via the examples in the next section. In addition to specifying a link, each MapsTo object must also specify a ``refinement'' relationship between its local and remote Components. Under this data model, there are four types of refinement: ``verifyIdentical'' requires that the Component objects link to the same ComponentDefinition object, ``useLocal'' indicates that the local Component object overrides the remote Component object, ``useRemote'' indicates the opposite, and “merge” indicates that data fields of the local and remote ComponentInstantiation objects are to be interpreted in combination. @@ -1007,4 +1033,4 @@ \subsubsection{GenericTopLevel} \end{lstlisting} \label{ser:GenericTopLevel} -\end{figure} +\end{figure} \ No newline at end of file diff --git a/overview.tex b/overview.tex index eb411ca3..4b872e02 100644 --- a/overview.tex +++ b/overview.tex @@ -30,5 +30,4 @@ \section{Overview of SBOL} % \todo[inline]{I would suggest a more complete and more explicit mapping of vocabulary to the toggle switch example. -bder} -% The same toggle switch is now displayed using two LacI and TetR inverter submodules in figure \ref{images:toggleswitch_modular}. The LacI inverter uses LacI as input and produces the TetR output, and the TetR inverter uses TetR as input and produces the LacI output. These inputs and outputs are mapped in a parent module. - +% The same toggle switch is now displayed using two LacI and TetR inverter submodules in figure \ref{images:toggleswitch_modular}. The LacI inverter uses LacI as input and produces the TetR output, and the TetR inverter uses TetR as input and produces the LacI output. These inputs and outputs are mapped in a parent module. \ No newline at end of file diff --git a/sbol2.tex b/sbol2.tex index 07f7b250..7925b3fd 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -352,4 +352,4 @@ \section{...} validation rule commands \cmd{validRule}, \cmd{consistencyRule} and \cmd{modelingRule} described in \sec{validation-rules}. -\end{itemize} +\end{itemize} \ No newline at end of file diff --git a/serialization.tex b/serialization.tex index 606f24a9..fffd2340 100644 --- a/serialization.tex +++ b/serialization.tex @@ -36,5 +36,4 @@ \section{SBOL RDF Serialization} \end{lstlisting} -As explained in \ref{sec:annotations}, SBOL documents can also include custom namespace declarations for the purpose of embedding application-specific data. - +As explained in \ref{sec:annotations}, SBOL documents can also include custom namespace declarations for the purpose of embedding application-specific data. \ No newline at end of file From 22eaf2c0c908d22a712ee423be2c6c6baf3f537e Mon Sep 17 00:00:00 2001 From: jakebeal Date: Wed, 22 Apr 2015 10:28:28 +0200 Subject: [PATCH 030/317] JSB todos in all sections except second half of data model --- examples_model.tex | 25 +++++++++++++++++++------ practices.tex | 10 +++++++++- serialization.tex | 3 ++- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/examples_model.tex b/examples_model.tex index 12fd0034..8490a1ea 100644 --- a/examples_model.tex +++ b/examples_model.tex @@ -1,21 +1,25 @@ % ----------------------------------------------------------------------------- -\section{Examples of Data Model} +\section{Example of Data Model} \label{sec:examples} % ----------------------------------------------------------------------------- -\subsection{LacI/TetR Toggle Switch} +%\subsection{LacI/TetR Toggle Switch} -In this section, we model the design of a LacI/TetR toggle switch similar to those constructed in \cite{Gardner2000}. This design is visualized in \ref{images:toggleswitch_modular}. +This section illustrates how to use the SBOL data model by specifying the design of a LacI/TetR toggle switch similar to those constructed in \cite{Gardner2000}. This design is visualized in \ref{images:toggleswitch_modular}. \begin{figure}[ht] \begin{center} \includegraphics[scale=0.4]{images/toggleswitch_modular} -\caption[]{Design of a LacI/TetR toggle switch. This design is composed of two inverter sub-designs, each containing a single gene. These genes mutually repress each other's expression via their encoded protein TFs, LacI and TetR. Furthermore, both LacI and TetR are bound by specific small molecules that sequester them and prevent them from acting as repressors. In this design, arrows represent different molecular interactions, including the repression of pLac via LacI, the non-covalent binding of IPTG to LacI, the transcription of TetR mRNA, and the translation of TetR. Dashed lines serve to map between TFs in the inverter sub-designs and those in the overall toggle switch design.} +\caption[]{Design of a LacI/TetR toggle switch. This design is composed of two inverter sub-designs, each containing a single gene. These genes mutually repress each other's expression via their encoded protein transcription factors, LacI and TetR. Furthermore, both LacI and TetR are bound by specific small molecules that sequester them and prevent them from acting as repressors. In this design, arrows represent different molecular interactions, including the repression of pLac via LacI, the non-covalent binding of IPTG to LacI, the transcription of TetR mRNA, and the translation of TetR. Dashed lines serve to map between transcription factors in the inverter sub-designs and those in the overall toggle switch design.} \label{images:toggleswitch_modular} \end{center} \end{figure} -The LacI/TetR toggle switch is modeled in SBOL as two parallel hierarchies of structure and function. In particular, \sbol{ComponentDefinition}s are used to define physical \sbol{Component}s at every level of the structural hierarchy of the toggle switch, including the functional DNA regions, TFs, and small molecules at the base of this hierarchy, and the genes and TF complexes at the top of this hierarchy. As examples of these objects, \ref{uml:ex_comp_defs} is a UML object diagram that specifies the base \sbol{ComponentDefinition}s of the LacI inverter, while \ref{uml:ex_comp_def_compo} specifies the composite \sbol{ComponentDefinition}s of the IPTG-LacI complex and TetR gene. +The LacI/TetR toggle switch is modeled in SBOL as two parallel hierarchies of structure and function. Structurally, \sbol{ComponentDefinition} objects are used to hierarchically define the physical elements that comprise the toggle switch: +\begin{itemize} +\item The base elements of the hierarchy are genetic elements, transcription factor complexes, and small-molecules. As examples, \ref{uml:ex_comp_defs} shows UML diagrams of a number of such \sbol{ComponentDefinition} objects. +\item These are composed to form more complex structures such as multi-element genetic complexes and molecular complexes. As examples, \ref{uml:ex_comp_def_compo} shows UML diagrams of the composite \sbol{ComponentDefinition} for the DNA construct for regulated expression of TetR and for the IPTG-LacI complex. +\end{itemize} \begin{figure}[ht] \begin{center} @@ -33,11 +37,20 @@ \subsection{LacI/TetR Toggle Switch} \end{center} \end{figure} -Next, \sbol{ModuleDefinition}s are used to define functional \sbol{Module}s at every level of the functional hierarchy of the toggle switch, with LacI-dependent repression of TetR expression (the LacI inverter \sbol{Module}) and TetR-dependent repression of LacI (the TetR inverter \sbol{Module}) forming the base of this hierarchy. Each \sbol{ModuleDefinition} also contains the \sbol{FunctionalComponent}s that participate in \sbol{Interaction}s and are defined by the same \sbol{ComponentDefinition}s as the parallel \sbol{Component}s in the structural hierarchy of the toggle switch. Finally, \sbol{MapsTo} entities are used to refine which \sbol{FunctionalComponent}s of the functional hierarchy are identical or map them to \sbol{Component}s in the structural hierarchy. +The functional hierarchy of the toggle switch is specified using +\sbol{ModuleDefinition} objects: +\begin{itemize} +\item The base elements of the hierarchy are LacI-dependent repression of TetR expression (the LacI inverter) and TetR-dependent repression of LacI (the TetR inverter). As an example, \ref{uml:ex_mod_def} shows a UML diagram of the LacI inverter module. +\item These are composed as \sbol{Module} objects within the \sbol{ModuleDefinition} for the entire toggle switch. \ref{uml:ex_mod_def_compo} shows the UML diagram of this composition into the toggle switch. +\end{itemize} + +Each \sbol{ModuleDefinition} also contains the \sbol{FunctionalComponent}s that participate in \sbol{Interaction}s and are defined by the same \sbol{ComponentDefinition}s as the parallel \sbol{Component}s in the structural hierarchy of the toggle switch. Finally, \sbol{MapsTo} entities are used to refine which \sbol{FunctionalComponent}s of the functional hierarchy are identical or map them to \sbol{Component}s in the structural hierarchy. +\todo[inline]{Need to clarify this explanation -JSB} \todo[inline]{ComponentDefinition.types in the following figure are not consistent with the list of BioPax ontological terms described previously in the Data Model section} As an example of functional representation, \ref{uml:ex_mod_def} specifies the module definition for a LacI inverter. This module definition aggregates and instantiates the component definitions for the TetR gene as functional components that participate in interactions. Note that the transcription and translation of TetR is represented using a single genetic production interaction that abstracts away the presence of the intermediate TetR mRNA. If this additional detail becomes necessary, then a new module could be created that includes both transcription and translation interactions and a TetR mRNA functional component. Finally, the module definition is also associated with a continuous SBML model from source file LacI\_Inverter.xml. +\todo[inline]{This paragraph and next one need better phrasing -JSB} \begin{figure}[ht] \begin{center} diff --git a/practices.tex b/practices.tex index 5162b803..b0b950e2 100644 --- a/practices.tex +++ b/practices.tex @@ -8,7 +8,15 @@ \subsection{Versioning} \todo[inline]{try to target readers unfamiliar with RDF/XML. -bder} %TODO[version]{maybe clarify what type of versioning is this object affecting? TN} -\subsection{Using External Terms} +\subsection{Compliant URIs} + +\todo[inline]{Chris, add this section} + +\subsection{Annotations: TopLevel, Embedded, and External References} + +\todo[inline]{TopLevel for independent objects, embedded for dependent. Don't drag your giant data files around in SBOL, put them as external links} + +\subsection{Recommended Ontologies for External Terms} External ontologies and controlled vocabularies are integral part of SBOL. SBOL utilises these resources to access existing biological information where possible. New SBOL specific terms are defined only when necessary. Instead, SBOL provides placeholders that can point to external terms. For example, types of components, such as DNA or protein, are indicated using BioPAX. Similarly, the role of a DNA component is indicated via the SO terms. Although preferred ontologies have been indicated in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found at \ref{tbl:preferred_external_resources}. \todo[inline]{It would be useful to add URLs to the resources - NeilW} diff --git a/serialization.tex b/serialization.tex index fffd2340..869e40ec 100644 --- a/serialization.tex +++ b/serialization.tex @@ -17,7 +17,8 @@ \section{SBOL RDF Serialization} Each instance of a first-class SBOL datatype may have annotations attached. These annotations are composed of a name and a value. They are serialized to RDF as a triple with the subject being the identity of the instance they annotate, the predicate being the name of the annotation, and the object being the value of that annotation. Annotation values are always nested within the RDF/XML serialization of the instance that they annotate. -SBOL supports top-level, user-defined annotations. This is to allow non-standardized but necessary information to be carried around as part of a design. For example, a particular sub-community may have an internal standard for data sheets. Individual data sheets can be represented as a generic top-level annotation with internal structured annotations. This annotation will be serialized into the RDF/XML in the usual way, as a RDF/XML block at the top level of the file. Other objects may refer to this entity through their annotations by reference, and this generic top-level entity may refer to other entities via references. +SBOL supports top-level, user-defined annotations. This is to allow non-standardized but necessary information to be carried around as part of a design. For example, a particular sub-community may have an internal standard for genetic device characterization data sheets. +Individual data sheets can be represented as a generic top-level annotation with internal structured annotations. This annotation will be serialized into the RDF/XML in the usual way, as a RDF/XML block at the top level of the file. Other objects may refer to this entity through their annotations by reference, and this generic top-level entity may refer to other entities via references. \todo[inline]{Perhaps add or reference examples of different annotations. - cm} By adopting this paradigm of RDF/XML serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. Since exactly the same scheme is used to serialize annotations as is used to serialize specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of properties and associations. Those properties not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entities in a SBOL file, we enable future specifications or extensions to ratify the structure of other top-level objects. These entities would then become part of the explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely round-trip the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. The very regimented control of nesting versus referencing allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL RDF/XML files safely. From e6d2148b700afde1e8ddbc833941d973e1d6128f Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Wed, 22 Apr 2015 08:28:43 +0000 Subject: [PATCH 031/317] Update on Overleaf. --- model.tex | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/model.tex b/model.tex index b803a853..f749eaf2 100644 --- a/model.tex +++ b/model.tex @@ -763,13 +763,13 @@ \subsubsection{MapsTo} \label{uml:maps_to} \end{center} \end{figure} -The \sbol{MapsTo} class serves as a means of linking between \sbol{ComponentInstance} objects (both \sbol{Component}s and \sbol{FunctionalComponent}s) at different levels of the design hierarchy. For example, when a child \sbol{ModuleDefinition} object is instantiated inside a parent \sbol{ModuleDefinition} object, a \sbol{MapsTo} object is used to link these two ModuleDefinitions. +The \sbol{MapsTo} class serves as a means of linking between \sbol{ComponentInstance} objects (both \sbol{Component}s and \sbol{FunctionalComponent}s) at different levels of the design hierarchy. For example, when a child \sbol{ModuleDefinition} object is instantiated inside a parent \sbol{ModuleDefinition} object, a \sbol{MapsTo} object is used to link these two ModuleDefinitions. MapsTo has the following properties. \paragraph{The local property} -This required property is used to specify the ComponentInstance from the parent entity. +This required property is used to specify the \sbol{ComponentInstance} from the parent entity. \paragraph{The remote property} -This required property is used to specify the ComponentInstance from the child entity being imported by the parent. +This required property is used to specify the \sbol{ComponentInstance} from the child entity being imported by the parent. \paragraph{The refinement property} @@ -778,14 +778,14 @@ \subsubsection{MapsTo} \toprule \textbf{Refinement URI} & \textbf{Description} \\ \midrule - \url{http://sbols.org/v2#useremote} & Indicates that ComTo indicate a \sbol{FunctionalComponent} can be used as both input or output\\ - \url{http://sbols.org/v2#uselocal} & To indicate a \sbol{FunctionalComponent} can be used as input\\ - \url{http://sbols.org/v2#out} & To indicate a \sbol{FunctionalComponent} can be used as output\\ - \url{http://sbols.org/v2#none} & To indicate a \sbol{FunctionalComponent} is neither input nor output\\ + \url{http://sbols.org/v2#useremote} & Indicates that \sbol{ComponentInstance} from the child entity is used in the parent, instead of the \sbol{ComponentInstance} specified in the parent entity.\\ + \url{http://sbols.org/v2#uselocal} & Indicates that \sbol{ComponentInstance} from the parent entity is used in the parent instead of the imported the \sbol{ComponentInstance} child entity.\\ + \url{http://sbols.org/v2#verifyIdentical} & \todo[inline]{Add description}\\ + \url{http://sbols.org/v2#merge} & \todo[inline]{Add description}\\ \bottomrule \end{edtable} - \caption{URIs for the direction property.} - \label{tbl:functionalcomponent_directions} + \caption{URIs for the refinement property.} + \label{tbl:mapsto_refinement} \end{table} From e09529c74bbe8b9949d5203c23e715272e6cd0a4 Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Wed, 22 Apr 2015 08:32:03 +0000 Subject: [PATCH 032/317] Update on Overleaf. --- model.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model.tex b/model.tex index f749eaf2..f5c17593 100644 --- a/model.tex +++ b/model.tex @@ -763,7 +763,7 @@ \subsubsection{MapsTo} \label{uml:maps_to} \end{center} \end{figure} -The \sbol{MapsTo} class serves as a means of linking between \sbol{ComponentInstance} objects (both \sbol{Component}s and \sbol{FunctionalComponent}s) at different levels of the design hierarchy. For example, when a child \sbol{ModuleDefinition} object is instantiated inside a parent \sbol{ModuleDefinition} object, a \sbol{MapsTo} object is used to link these two ModuleDefinitions. MapsTo has the following properties. +The \sbol{MapsTo} class serves as a means of linking between \sbol{ComponentInstance} objects (both \sbol{Component}s and \sbol{FunctionalComponent}s) at different levels of the design hierarchy. For example, when a child \sbol{ModuleDefinition} object is instantiated inside a parent \sbol{ModuleDefinition} object, a \sbol{MapsTo} object is used to link these two ModuleDefinitions. MapsTo has properties to specify components from the parent and child entitites and also to specifythe following properties. \paragraph{The local property} This required property is used to specify the \sbol{ComponentInstance} from the parent entity. From d9d0f9aa27c4ab5c40120c5182a7751fbb347cb6 Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Wed, 22 Apr 2015 08:35:43 +0000 Subject: [PATCH 033/317] Update on Overleaf. --- model.tex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/model.tex b/model.tex index f5c17593..c78a7b2e 100644 --- a/model.tex +++ b/model.tex @@ -763,7 +763,7 @@ \subsubsection{MapsTo} \label{uml:maps_to} \end{center} \end{figure} -The \sbol{MapsTo} class serves as a means of linking between \sbol{ComponentInstance} objects (both \sbol{Component}s and \sbol{FunctionalComponent}s) at different levels of the design hierarchy. For example, when a child \sbol{ModuleDefinition} object is instantiated inside a parent \sbol{ModuleDefinition} object, a \sbol{MapsTo} object is used to link these two ModuleDefinitions. MapsTo has properties to specify components from the parent and child entitites and also to specifythe following properties. +The \sbol{MapsTo} class serves as a means of linking between \sbol{ComponentInstance} objects (both \sbol{Component}s and \sbol{FunctionalComponent}s) at different levels of the design hierarchy. For example, when a child \sbol{ModuleDefinition} object is instantiated inside a parent \sbol{ModuleDefinition} object, a \sbol{MapsTo} object is used to link these two ModuleDefinitions. MapsTo has properties to specify components from the parent and child entities, and also to specify how these components are linked. \paragraph{The local property} This required property is used to specify the \sbol{ComponentInstance} from the parent entity. @@ -772,6 +772,7 @@ \subsubsection{MapsTo} This required property is used to specify the \sbol{ComponentInstance} from the child entity being imported by the parent. \paragraph{The refinement property} +Each \sbol{MapsTo} entity must also specify the relationship between its local and remote components using the refinement property. The Table \ref{tbl:mapsto_refinement} lists the values \begin{table}[ht] \begin{edtable}{tabular}{ll} From e1fc2eac6e9f09e4c2838ad54ce07cf7e0d39d03 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Wed, 22 Apr 2015 10:36:07 +0200 Subject: [PATCH 034/317] more todos --- model.tex | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/model.tex b/model.tex index b803a853..6262710e 100644 --- a/model.tex +++ b/model.tex @@ -150,10 +150,14 @@ \subsubsection*{The \sbolheading{elements} property} \label{sec:elements} Required. A \external{String} of characters that represent the constituents of biological molecule, for example nucleic acid symbols for DNA molecules. +\todo[inline]{use MUST language, give non-DNA example too -JSB} + \subsubsection*{The \sbolheading{encoding} property} \label{sec:encoding} Required. \sbol{Sequence} objects identify their type of encoding with a \external{URI}. For example, a \sbol{Sequence} object that encodes a DNA sequence would have an \external{IUPAC DNA} encoding, while a \sbol{Sequence} object that encodes the chemical structure of glucose might have a \external{simplified molecular-input line-entry system (SMILES)} encoding (\ref{tbl:sequence_encodings}). +\todo[inline]{Are these required or recommended?} + %A Summary of letters for nucleic acids and aminoacids \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -168,6 +172,7 @@ \subsubsection*{The \sbolheading{encoding} property} \caption{URIs for the encoding property and the corresponding ComponentDefiniton types, which are BioPAX terms.} \label{tbl:sequence_encodings} \end{table} +\todo[inline]{BioPAX terms unclear} The serialization of \sbol{Sequence} objects has the following form: \lstsetsbol @@ -327,6 +332,7 @@ \subsubsection{ComponentInstance} \paragraph{The \sbolheading{mapsTo} property} \label{sec:mapsTo} +\todo[inline]{Need to make sure all MapsTo statements are correct} The \sbol{mapsTo} property links \sbol{Component} objects (both Components and FunctionalComponents) together within a larger design, indicating that they refer to the same entity. The third data field, ``mappings'', is a set of MapsTo objects that link between other ComponentInstance objects at the same level of the design hierarchy as well as other ComponentInstance objects that are lower in the design hierarchy, thereby composing these objects with greater specificity (see first module example). @@ -374,7 +380,7 @@ \subsubsection{SequenceAnnotation} \sbol{SequenceAnnotation} objects MAY use this property to link location information to a \sbol{Component} object, by specifying its URI. -The serialization of SequenceAnnotation objects MUST be carried out according to the example below. A\_LOCATION\_SUBCLASS represents one of the Location subclasses. +The serialization of SequenceAnnotation objects MUST be carried out according to the template below. In this template, A\_LOCATION\_SUBCLASS represents one of the Location subclasses. \lstsetsbol \begin{lstlisting} @@ -386,6 +392,7 @@ \subsubsection{SequenceAnnotation} \end{lstlisting} +\todo[inline]{Make sure it's clear these templates specify content, not order} From 28febbc12277d09adf5a498c0308967ed75bddf8 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Wed, 22 Apr 2015 22:43:00 +0000 Subject: [PATCH 035/317] Update on Overleaf. --- example_uml/toggle_1.png | Bin 29886 -> 30966 bytes example_uml/toggle_2.png | Bin 48585 -> 48330 bytes example_uml/toggle_3.png | Bin 36692 -> 40618 bytes example_uml/toggle_4.png | Bin 60867 -> 59299 bytes example_uml/toggle_5.png | Bin 53539 -> 0 bytes examples_model.tex | 49 ++++++++++++----------------------- model.tex | 11 ++++---- practices.tex | 2 +- uml/toggleswitch_modular.png | Bin 20056 -> 0 bytes uml/toogleswitch_flat.png | Bin 32478 -> 0 bytes 10 files changed, 23 insertions(+), 39 deletions(-) delete mode 100644 example_uml/toggle_5.png delete mode 100644 uml/toggleswitch_modular.png delete mode 100644 uml/toogleswitch_flat.png diff --git a/example_uml/toggle_1.png b/example_uml/toggle_1.png index 2c6006122d7056d521e98f71520d0e074c288a79..f334dbf6b0cc0855b39e7b95da236776fc24477f 100644 GIT binary patch literal 30966 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 tL3Bm@gScq2S+m3iom0vX!(~g+={2M2B&w&5{ diff --git a/example_uml/toggle_2.png b/example_uml/toggle_2.png index d660397364d6c761e4e0d3c62302e498a21672a8..ab19ef1ab3b094d5a5f444e4e6fea0822e872825 100644 GIT binary patch literal 48330 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

    Zo+PZVK@#+_R z;Msqw@wT3x5RmxEgXU4^%X@20!1KgMhKBNed!xK4XXoai{LNnlon@H((QAjj{=VYn z=`sK_K$^%1^~b|l3U2-OXh9d#91ac+&;o`{l6|V?wVSuLwx*<{?5%}t1Mmb0fi+*1 zT_Je@u=ymvi>oUo6)<$*o&Z{T06u;{myF*9FFRY#6c7*qFdM1KnE4Mt*48e)zxmD$ zGDM|})Kp8Fw>~}wrTxh>fGwanzux$BXCbfPVh^as#Yg)3HhwHluu9C0{D>Zu-GBm^ z)5*cX!OYBe@#gQ#R%K6KMf_SgzytjAXm6>(dw35DH;DLh^}ikcFMhnY67eVecy-U6 z0(|p(xxRDzkE36U3-N22!59B|^uPJ>-ui#%_P_Y?-l<3VmX<#YUV(Dc9`S3eZ$D!E zu{E;06TQ2w=StaG*ywis;4e!$#XRD?H8)Z3OZeqIC*kjhJ2DPmomy~S=bdubOQKwH zKK}a=-qzWu_R$^Qb5#46qbg!zRObGK_im8t!nob6x3}qQyu-x(w}awtIo>QxV%Y#* zesAup46=JdeJH=+{olTW>v+nHeE83A^l4tJ zb$8yb@;K@uoGjuw_cuVLL%+dd)iXwMJtyE=wd_7@OvHk}gO*-n^OYzv0jEuNZtmjT z+#1QMu55}c0*;}PkwYURdS)enmx3Q9H`Q+W%^6k|v%rZfd77G<0R38<8-}*!|60Z$OTA-lw%gddP+BWWKiO{Ozj~?Z{vIRLOBtgSv_Ey@|H8nMf?>8Xr zd8_B!YutjWRorg>%`irg=W6cg1+s3~6x+^)uie$rnOvUw%mD5&B0RjLw6y6{l}Pcp9-$P}S8jbUah*GD=HLM<=SxTvU9wL;Km z5D-Ok24%R(%TBWh{)Zr2<;*XVyXEC~hUL#LJIe!Rl|P4IX@Pjz8T+HFZ39$Z;tnx+ zc~5e)w9A(VKw48>a!02_v?U%A>46m}bgUGcE?YMm1lzprGz5_8wyYB4ty^XG%ZVFe zH%T4Dy6GA>I<^CDK0Yu*095BEQp_`en~_q-J~K7lY%&;N30Oq=OGGPSKYxDw_%WyY zSx`HkJsYNz(g1Yb#ddCPZW`5#N~)?SGPp-+xw>D-0HTR}C~rUcUUDl4P|yn)%lt-~ znNgeJNYYjbG`5RKZ&6|BWX4A9p5?$wiy(Ka&ZU@o1rV-BjV7QDakIyk4>j||;CNj7|kc%t13-XYfua7Bg71J^^MXvj~K1ZM}Xe?U~MhQj9 zzLI9)VM?RSd)cg_#!+}=4J1v)DJczk;_Z!Jq*_ypyuQ1JYh5~Ylgm85yllPIVe&2qHX;s?2(@ld#vDODYe&PRX?=L%$2mzxXKs z^OaA|I?ms6En8Eq(y!N(Jv6Pv*N#vT4eG znfrX}&(Uz^eO(0rg4}H9XXBP#i_Zi`N1Mq2vxLp3jl7z#p?)=axfb#-Mak!iieaLh zpACR^EB~Tv_)gYSR<_EZO65YHvi&m7r+s%)eTQ0(-xcc_T~@}|^?sBS13a5>HDF4h zr!*WJE_djDWyEpw=9GdZ%e8CO+lPG4$kLu+n_&SZhDh~Mk_ZiM{RDF=(xb`S4?k7A z&a0E`tw`u%$*lbht{wuTK(9uYZwnz0L#W;{=nero;EA%bk(xLc2SH!HtLj_yg0=deq`BIQ`1qC^@ z_3`Z8{gvf$Dd`v-jtb3$2bnH&?U2yr-q72N-~XiK*KX zkX&lCRDqy4jiVNS$wvUpgW{gm(%(*Q&XEE-t#%@S{xpiirUm6&_I~rGB zoCHyKc-kCATLYBq-!9F0q^C13*V!fEvB6WC!@{I4vIMl1g#~0_p~TFjhJa{R2zpL? zN{&X37P4(UYp?T5`P z4iPZP;p=0`YTZ*5AtqM{st&o^6Eev>VtZ~rj1TiD!d?*sWf>$4V_N=uslgrXEML6z zAMyYiN@F5Fg4r8;xdY@1R+mt2pAc)Oq0b1ua2xdOp2T~vTtlfcT#p_`-_b^F9dUIF zu?ImrK2NyH=IV41u`i#2%I&(_-m9xLUJO@3rz1oJDTn!YHZ#Zo@ri>F5nP$;Ss3RY ze)#vL_D)_^1rGpsGCHa=3>pKLG5obPt`PkCIbH*|cc*ZdC_>lY--cHJSMJ?dmBo5n zZEYl~~{?t!-=?kja)E zx&axo4fQ9ZrTAgl(*s*-=3L(z8v0V0#5sn01~R;+)AD-yNG8)W*J!dSgzC-?iC{38 zZ~_kdFb3h_qy0g5mMe-)Ir;bo2L?(($}65uJU-m7*KxP+zKR zPKC0RqK&4dr6tr=j*fg>R@>soB-YdUc5okM26<`fvF0>h^%sUapsTHZAYa2#YYDQ; zOCA@JL0!Xe*hXKO`z!xzaUv(fyRBJJW7_Lo9MNiRA;nW?hK7v{K=*Mk#*gLwvl-z_ z+`pR<7R|ei>k_;%3aA@9VS}jIapBWXNnyFEd~{mbTs6YV@f@Eara#KT&p#LbzMP`j z=1inG$K1KIXQv$j#Owf#7sEZ;Gn;s={#o{$M}rta$wWt&lAPR{qpOf0=&*JRUcG-m zIp*TSb(#`tyH~uu=;P5zRu3F(*YP@SOqG?Cup3G_@EeMJIxIZ zQj;LwGEAo37<#0x;RA+x~oHlOFz)$dKNvQ5m#%b z$$UA=lA32{-(rkJ#(f$dY9VKD8w9dn%|I)&J3RA!8gK{cL32?2_yy5ot|?=(Z|6H{ zW^JJh4wP!DmaU+Ee|&)ebx$VP;&`^P2amo>k-5nv`=WV*ah;A2Fp3sw|1naZTi=;}wn(9Y3-?(~ncKkp*uJwLVn>%yK5ZB%nk@g*J5OW(Lr6K`x{ zl7d<|IpQESJ{?}}qb9Qk2z*eezkd$&m61Y*jP2G+xWZ%VzlfbE4FXX-HMEn237vTB zSD@D(?`l2LIAN@|{ZUoR@+EQ7BfjqMQKC39P}+{s^m1{gUu(Zjv3jG-vUQynMFB|v zY{b-;*i~lj}XPbSj)iQtqnnsH*14H z@MJ_I=oGnL0@0(x7WFoD~O4S zpG|ZaAhqvCTw>3td5JA*v^e`MF@;Od5+Br#9w*nj0{I;6A`*(0a2{&3p>u=F&mNb) zqy3yUP}kZ`VFcN^!*AY*w8}QC2Ju6w+QspFpeO73fB^y_ZzfNl`|U`o`Qh?!VtkO` zf|%NC<`ZE`c%xQ3Htx(Av!B{dA0<8Bqq{KsitSM z6{Wq*#C~Ud_G9C)DJ)|kQ;wFp?5?|n_#*={b9A(|iBFy^4d-WN1$7a{AVG_`Pf=R4AwcyO0sNA4J#nKhy97h={gf2479 z^3I29CpPv&3yPrry}qfb+-sRB#jZ)v&Z8#=>5}p&z`GiH>8Qk1Cn#+@#y|@4O@6(z8O#^G;2g&d$!XXQ2OJ4REiZ-L&vCtxraRYw?S6fR)?ALx!eKuuRXtukX@S z4w6KRQC$qJDa_2k@X#Wez*t}Z`|#j6K8Wd{PV&*ZCJfISlbz~))wb?T|BK_s)dtkT zSOF)BNlzDl@PNfvTmN7b#NA;{WQL_mN`8i*)%L*1j%`{PB{-tnA3hu!772gjcI5>Z zTTR%RPAa1eG9yjs7LOv9r~!%8H}R{bQjVDk8;JvQhrU>tf{fP+0*&)3h!>_V?e0xn zMbH(Dy~w%sw+#(!5nPK3H4buNkwX?Xb8O;S^+S2W%%fLrE`5|^HoPXcQg>_?Jo3?; zQO%R4&GN$HLA^g$rpazPjnlhMw0!Xt#ZN@9hWkLQ}%`9`MXUz zb-I*q9#DZ`%6ah0eK0-X9wj7CWq3kSaEcx>Vto2-o?t=*8TAn`2R}$RA-%;X#OD8* z5I5WW`Zna{(8CQNB0d{S`mhsS*D!p{a_8vR9!PIjR;(jdi+1u3LK-~)dNQDr@fmwt z8){;o(TLri>GcNg(S`yqB7yw))Ok4XgyCFVSC{PcDD+9k`A;4c78cF}x}p>?wdIAO zU>Fr00F>j_IJNOhpj)0lnSE{R`UhY7T=8R|i^3u{1mTuQj zYejd+s69M9pxFzkfzbJ)0_ZhUHBrTOSU!I2+aAsD5F8j7KVJ#q@k`q|*#gi8XeC6Y zy7j+PTAlC}e2TBDprbfr^l7g*^0YM5&@v8tk&L1uh*CbL&hV&XWSo4W)B!t49OrKw z^6v9$ucyfdk$P#nZo$@r(j~wrE&Utu4xdz(9#-#hNUj@=*K#~TAEpdcljNPVoYRo* ztD&>WKlbSUK=JO&)#HJ>4Y%%7y`EHBEbFKxLFAQ&X0n@GqvKO8B=yEYz zKolB{84jBi{5k#D5R7zhe#Vb6d0@H7u1y*tpUPU^a=(Bf{b4DRsZ#w(FMbu8`?Z%n z_S6F}cYo9it{B(_FMVP+yrb0T5daOTGBM-U1@zF@8s>XC^`mGA81}Al*pYqQT zM*Tg6qz`8{=sOjHPD!iJeGS@tEGn9f0Uazj9bI1syKz{@#xYnv4h~ROE)Ne6gE$IZ zR8WwZvsCEh7y@3@#i9yRMh9=l+U1x-D+)4o$FaYf1C9~+~wiYUT4F5TF7`n4Q#Z*OW?usU0 zi%m^$^2rjMf)rmsVfoccJLRcYd1)Mr^&q41~ zVW_VULVrr(5qXA8(qrz>p#2jlH_&<&^;3RNq%(5|D*81iM;t6=+5Eyn%pwkJ0Koif z6ZdiffN!);c#1}Yl6a`if{Ih8L`xauK_18VRD6gcD%8ZIzdAKno|{Aa1~8Kq zPD@|BxQ}njS*n1UQhyH$dY$)dyIroXYb!PhT2{?s8;nOhC{J3_Eiu}z;_X~dP@>NC zj9E#4K}E&9iDnvs6lYLh$xAM&(|tA{Nb&5cxxI0n;!(PU-mSz4y=tw74uxZ@ML|{6 za`a#ixD39J4G{aQuK)ZmjKVwo&~Vx5CVb~9{B>G1~wc*x#eC3jK|fD z90BsNh(pX95bky;_FnDp^MI$M_WtlXdi=qjv;%*DSA5|A|Ce|0iPYXle}CuicYdD+ zK&W5e`Tfq{Ck7v}_hY>Hc<%sTKP>T(_S7`0KB~z%YR(!F>_~MY8yvelW37a{e@f)3pdM2~EcN}u0cUZ0AI`8nUNpEpGQ9`?~Pq@ZA?!A&HxBaC)RBc#5r z4ln607pA7BuA~1dgZWqM_N@@0>!0HC{(J9sqH@i0%}K%DZAiV@SZr}C=jfQ33&Rq6 z%2D@{e~M9Dy5u8UtfWH*;C-YW|Dn7NU90?RMLxN8HzOjjbCyQ1w<1It3_{1-&a8z( zz?}U@N!;&3e9JijB7;U~XfQVMD3+)!FK66+Ke^vWeWM=uB5VW=?3NLvekfl>Q4zpx zy7soV?8?fK*4Fovz{@hIN-H-Nnhy2%_P*nVhE1gcWK!WLze-(CJQcLEzFwa?xDy_; z#|44%S|SN+{)-C&gZynHW=Pmkz}r46<6fgeNnbxP!wObs3#dp&5X$ZGH_ZnAvow#X zNTntqK_ob*YU5r*Cu!l7{V4lI?j2<>Ld&&LHA6a*5qd5k*@%i*ZU=AP2_4N`YljsRYt$=R3u0sM?ucMg>5Gk11!Q>v{uDEP3wl1$b0>sKDC{a48yaAP(CuJLq4F3D)_aquU6r-x1@F z@87#syvzOPZ}&tU_<-ciwtwYQRlVNKyp4EK#Qqx)8oYBgK^y=GSseW~NCa8<`F-|- z1NiufCq!`-6+4BMKhp)ka&%D6%jl7V=o9-92Oe=U?u18hCb;N$UwfT-M$ED(w;1e%FH|9;idY#cEwF0*&GUgG9Did{1z zM}z(TARLb79zNv4Xw`jWxv0LPUNur?56pN)Wo70#_-!t^K0GB6DBxS#2Db?qh=Pw- zu0Je6lc79Eefz4cV2zNlpWL7Qgv2rjes3pa;_>h8gl4z< z?qCD3<~nMss_cI-7#W$&$O$q`WW~@yxLY8SH~LE-M+=BQeCY6fv>F~CXj&Cc@dlJisjc{oqQq5Z z=FGIT=JO|YfJ21@*55-yOzgsyD|Y?f(7gg-|7=P|21FB349bl|%Xi+<(jll!aX4Mr zoDJWU07AjD7Sv*y=yYpaTb>RGT7B_tUB(=0-5<7@;tNv9`^TF?n4L`O04S6dQ}*KU zzCbo|g(>2G85(sXMT+qkf8ecnn^((*Y;O(;rt}v8^%kXMW@bjqW@3R*Y5w$yWdypR zMaP>Sgc9R-9V?HEyGK&n?+w9yU)jEF0+sv0ymPS2SU#i4BFpBxJnixgsSnTx4!d=f zkyE!=nD-Iqi=$a8V?%?Rgu-;7Zv~9XM@suuCvngWs8)KRi#W8z?8=thVL=|xd;_FE z8#lf({^%`xn-_1?_}RBAw1ezGMBv5^ydIImta9~VTkk}={k`>0YIr24xTxMk>ZXJT zoXUkDtlnIimSKe6JN&*aR7wyvLuKB&HR%0GKSy|AV&oj?20I-^XntTS$~0QAty>Sx|mu_jOXiqBINFtJy zc3N6jDB7h$>&DgITSa@&((ZS>uCng?et#d|-yh${`~G-*y4LG_ov-tJj^lYekJIch z&xsgJ+hJz-b~Nc%ylS{*Zi|lBZwvtJF-J{#0nZB_TF8m%+uyaa&bh>iy}s@{a=k6d zpH?DNbUMCc;;*D7Z;uMS*uZ%fBO>zMt@;L>3u5Nqkk#g- z?EP#@(FfKIHNbOccLCj|tgi#y0KkZA6$@kBbI^iFY(cQ<&#gVr*`=aM$SNiGYS{~> z2hR$Y=`s_mo3N$xM_wq}KsFL?&HTAleNDI>!q@O}NL~%=HLkpLc;A)Fp3wYBU0}e8 zSOFdNq>xgR`jiszK0G}ysxKBm_-S~VU5z?CLTH69vS7`teFI1IE%~;3Esg7ch`peY zeUaJLC=c+4-w-52KNSFZsHm(YWJSadbLoOLTyj09*8HIV+F}`EV1x&H*VBMcT^DvL zR>FvQ9O?3v?^xV$;C11(gH8q8&QAq#Vmxi99}az=_6X+LQXj`Bw`V{V5vPkoS-$?y z`=j~(qI-+&q>MJvBxKmNv&CBadG}*#W^=vZLjMy#2f1}giyQ$6D?+(eV@-W@xdM|$hP zev6Ei+`V@%%2cp!0l{RC3J#13H4hbYv1}Buugv3W!;)Fr82A?EQ`__WG7Vh zj!$a8sdwbs?;k*aag8HfLlY~OBlu(!)(fkcOaPc+jy6A!<#NA0IgHg`mLXk(Kl(Ip8)_~C@dg*)9&zN}^{H3B&{tmrfi8?@QcpQ_Bh^bsA zhw4gg`lFA#f;cvH1{P_1dU*l8Qd}WFiEe;|!^%(IUL;zFyVPgKt4#Th4*7!Dz2`$X z=Id8G(=ZdWn!lN;>8Awxks}tDP$7R=^ZCwa`p>3M`@ifvP5MwwHSTo^P|PyW7>r3t z{x&lnJHvwiU-y^_A+Dw{Tuu8*Rx-%fm*&?a-ZRoi)iu*HcDP(i%j$D)Xn?TSar||A zrocHCj!{Inwc9B~3gY$M=dT=a|6X-})F`jC^wHS-x5H`72fkGJfZImzKa<}$CZ?F# zKj9EB!+-A4gWZ9<-S78!tnGZ@et)yXsdWwJkK8qO+qki2*Wd5sS*LaJ{_az!9-ZXf z)oB@)ZvJR@TA=x)_tGeK1-N`;~UCOX_mbG7koZ;pwPgXjsCFw*3Ry3DRJ>Q zscP^Sn>;GxN3=vgFr;M)Pi>+*u9YV%Jmu-`ZnkwG=GBONW^%I9d4ncBJtL!)uJrlL zOkWQ7yZAW6UW72r0QLrcRR@p3xPdc)t(_L70Dbjy=XOxT-Zh+jX&Nc$Jbyv%tqQ|_ zhqW#kPRl4nr@x?()%RfJ_|Kl5_HIkdth$up8;Ny!;J`Jrg`@F^;NP^81~|)YYls)s&nMgrnj<8+h1jE+BfAp z$K|A??v2RJm$TA%6vGA=H7#np*owNnP~UNd|; zxoJG4DYLi~6`R1Br!6tBuD&~>)=_`$(vt9H6Xg&py_tDeL+-=!38{0$nm9)J)Nxw_ z&j!wAx?1rJFJh&5?y z?pOl?RjF}y@*Cm{*L~*aP*K0_+G{vpG?lDev;dv}_8J}qXjMM*jL7jatg;b@ON(;v zqwa%jr=1ort7#$OVILZ^)lh=gCip~5BhfWA=Q2!ZnL+>_N|h-Q`kD|R9ju!X=zB#X zMum}@n3@+jG@;G-w4@|rIQaW}Zf>z?4nJ_9?ACkQLLVp=bPijC?Sv3#-TL()ViwTC zZ2=rCUx%fN?w;dHifU?VBobZiH0q(xl?^B#Kc?G!H`dqJf12ncUGWY+Fwx4due+Ob z1&x3(ap5(bpU&sq2QIE>ZDuA{hKR0hKX*iU_z|r4>j0Jdz8&du2<#Vo7=V)3}hk;)B%LaRmW-lm>%TEx18`qQy$)jrL?KbAlaBA^8} zCCMH=a zsWMV}RX2pY4mX*aPM3Oy9*4?S=^gEqEA0=aNHxgPp^9^9$rR-5XjSE&s{4UHrQq}J z+EGMFb|XFK&>rwK@uUkq+j)TX^XBEyrm%@!wXqQxQVI!xXw7Z=iFf_qV`F2x`#Y7M zZVtPk#gu6^m^VgpjWamXeU`fEI2Ia@ln5Tc+|(ALf*kIL=mAj{*uW3A5x==9G>7&< zpA(S{qEzJOhP7coF~Yi(c%sz(DTWFFu@~Q#P{*)c8*@m!LhRVzw(*aT&28CF$31;S zD8%RHv7Nm8YvZ51N*P^c%qM5%HD9J>_ovJk;pEY?!F05GKlQ47w!|N%>zHfsH$2D7nq3!0sbArv$)VL;q8%spra4<8;9}(U z?0lK#-5d+=(7$Qc!e7oFTZJr_?Q|NR-1BscKc)+5790~k~3siK4+MqWi z0Mu}YhA|Yl5PR~PFNM)9P_wO2<%6idp5BqNqqR>*N3Y$Yerxu-noH`ve9&6_d<3Ch zWo6~7SBIsM-SqYLHsowW5W^MT1s|(!!b)yaH{YfE1Tv5i!u-cCxcDHr3C=^suudKr zqdat=HT%7xVFd%ch>pEXh=*t6vPE2ja6x)iL#T@SqPkd~jh01kQN7!+ZdpyjTwK^u z$tX0b-191i&h!XS!C;cJaVZLW`K?49NnHHS-MdG=D62eyNRLuj<(Jo4p}wsxE#-RF z&7gMZ!Djju80&N#^*f`U%3hOkz_{q^T@St=|6!K%T$^^$`2qJ#1dw|s(pl1Rum;^f zb-Wk3>k#)Hmf;AKun3?lizkxk)Qu#sg zQEQ-A7O0!po~cM})u>w68I5{LuTy1pMMdJPSD_gSHYiqhG^{f6w+?>&dh+X6Q&{!h z+WW-G+B#E z;#owf4vXfB25K>qI~EN;m5fxIKxssmCw@X?uv-4htBc;QuZ^;qu@&e3TgQ2ap4Y}r zae?_jbuv3?6%-e^>O9s{>KwkUvK0y%>@9CC5?<4+M&8NVHJaQn?zdC7um~u4yD}}? z$C3bR$w<2%8o%Of0Fl9xYZJW0WqlKc?Z(Sr)Yfw?XC*m16V>_tfliHW}Ht57g+Ykd@&G%Zm&q%|uPvvF%@TiOIMvJG-lie|N*ogkE%;w9hJBpNP`Kfd~i?_}kFH zG9aLATko~}8wx`Dcwn>v7t{ve@GG_tvT~g#qjEKTW>}`(6d22XlKaLlm+kelp@%g5 z72pgs7^@6O^YMGxZ26~`PIU#0u~i`=E0iNAoE|)X1LY;=;??q(jJ2zo!iBzssuWL#ND1U$E_6;4HQ+^z%JXKd zuF+bzN%8?#(SC2+m_Lmshoj(fS>5Ob#H$x0;TX);-Jv&4hdtH}9XPlUPw)+4+Yw{V zdXvR`G=v|>9B>X3x@m=~q9e57yr<@4I9dj4` zx3|WSKmYFHXP*k;ou#8&aF0KnI0A@IIofX5o7c}yCy0M{eq8Du?wNQMQ|U9GxHmpq zzW0Q$pZn6>eBy}{kpc4vcipa(l9OM~ErF4_PB=8em9gfw4@UD2dA|r|?v$`z*CAp3 z=*d&&u;JsL2I`u5q`^qxDT$1bEc3;J60)Tp$MAncy9Fh%Qu6iyjhsqvnld&wS9IW( zb}lB~p&{PIhjM7QYpWc;Gebye(oB7cSoW{4f4MaZP*b{_omZ54(M8k?cTyJ=8*2_j z%Kqcji&1}8LUtW)(oAnh;~VL<)DPakC^6ti$dB%Sr2W>k`$O4}(a{WjX6+$XeCtN1 zQImCFIwh$0hWonL@&0@@^|pJLe^X-mzj}wc^T&6dulT04^|$Z*eCO1Lf$rEW{U+4b zRNG48{lu=c&`|GpZZd|bVOZpGj*J&C3NI}Y>}DMLG5p`|qABjxs{sJsjb9Y*vK1}( z_YbV~uztF)e_+GhjLbfX*@?dE<^SP_h57kE{KrTf zkTS*El{DQuX~p{X_O+lQULe_b!@_nY_V@H$_&8=gPG2)}6h|`hM zN-tV4Upnf720rU=B8`)euj8OT_&|2d)s5)j zM$5JB^yC--I>`#0&B00%k>V+$X1={hM8z#A&flnZllVomM?N>?OO(hcEVs0_8X&~^ z@PVs&aEx*ka|5sGmnTRvs&Ux<3@-?C79L7gWQ8uHCM13mVmfeSjh-eb#;xCc+zgjL_6G(M z#j#_D2IP82Zhvs~O)`01D^F+nzU`c}e;&B#>5E=#{^|Q9MJ1xUIy(L?Dq5`%h)=Eo z=nBn*GNNL*Q}hTNLC(4BF*#0Z`lI@EXjamKk)fdtn>Mx5{TcY2VIfPBpwtLZ@aBja zn#I%8C*V#+VwW#kfUpm|c641Lr0NT2>3M`eCNS%gNc2C3a#DlR0pSV?C7~C9N}Kn3 zc-joLSR-`ELo>000(2e4q$FMyNmBKmnO+lzFvWk&PUunXsJ@*1{Hqogz6^|L^FbV| zy@V8wtWBDUk#XaO4d`vKxOz1b`l0MW$R2fR2uHl4{3MR3^12{}-(5O&m^a*IcD)eK zmRK-r0<*Zdg@m4fQTy)mu=PC`7vk`sqe4OKP&4c`Gc$u4AIo0=r^x3pdq^I@SX93G zWME>-FBMGI)!hE^o1NHv<#Ye^?qTv`OO-_dV6>@5*F%*1t##I@Q#&p#(35)-lg9sYBKM)uMsv_M#kC^24v2bP~Ed< zC~wD4bGM!_tXR)OOa5V-KYf0RkNvdvHwcG8eQC~6;+lBr*naDUbN*oV5^&R(OBtv} zZPq*?Vwf94=j{A%JodGE@P-)_4dGz_z+?Kyi0wd)#tZ&{m18z_@w`j*BN&F*XQ*nM_b+g`;Do7 z2PKmZcGVld-@|niOYtSwPGb5dmR3 zX6*&>3K1+;pNY*o1}i{O`vZV<~7pb7ZFpy z;pq7BD>3EQ@joJl3Ah1ts=Z$}KQ|YBR1O*%H}HWUPyjwhjdP+DNp>jpiLC}Qz2L^Y zrQUyqrs*v zC?KFb-p>ea3POpmUq6ck(GATD`$)8ZeihT$qqzJy)_qpOi< zl>{d`*`x|=hiFyKYF~IVO2)>)b?pkUYCu@LNTew{V4W#{F=AGPxK%QUW?>%y4+sWV17qBB4Ln)7Rmotz6Wl0iWvNkmYNd<>CwV_cpYxufmq5_Wc4^(-yK41n*mO$6+Cfic zoR}2lg$$b%5G+r}#AFiTeEarkr>@SMzO@DBgcEI_)M2a)tUE z-u~-%6|`4>Qj5V zu)MMHMPpQSbcxI!X6Be+AC_kgN+6s2W+YxQH@`TdDi~q?d<2v{6k?LW=Od{F>S-4% z=!3y?);UV6fULUlFLVw8v$K?r>GFNv)zedcR&R&0r**~a*e#aR1ge51#cSOz_SI%Vm^Y0w4}~|+T+%1j$;jCF6bs2u?cBK%DaEHq%P2bh7W}?78_KZB zD5ZV%se=$7>vk|L*wotNyo)6H(r#{UP4$j3ERg4%3I>@fPt1*RaRy3L<%-KE^rR~GlA?;` zFR9ZlTQp>jW-R5V`3U1l07VI~as!<01TO5<(oSmgCvYT0=?)p2vYOP4iE=*YM~oxbF%DFp363Iwm^fvo+`xZvR6=x99zN zi)K&Jptd zO@%mo){>T1wGTotGKMQBHF8f0L+R76@9lYu6BgBQ@PHc|lCo5{_NVSNB2ft>bE^ zqHf{Pik2i#T}@~dn^)+le(KEfX#YNuDutoVPD5DWtnW$g`}8DHQFT2pHP;~i8CY^e zg7QXNk}jO(sC`z`WayD>=2<7bfN;}3Z{NBWlHm1bF^bR9X)Vm4^@qD4_MD3fW_{E= z>ev3;H&RW+|IsH%jhv5L}P>}&+z z`Faa8mNh&jux>3)P2j0<85!GlKh@CDS&FCY@756F3Q!Prtl?`%(HSN@GZ}C5GIti4 z$h}X^Y^P&+v!E_f^zmbvI7*G>;K8k9P#!RRdMY62eT>;FRLN3O{?ceA z&IwFNc=hTsuA1`}Jq&chxc#iL>TR{?^1=xa12_jOt10%@v)3gM-j+8+J}W}GQ|N;< z4u>w5*VT0oj-9?&IEE%9oVE$+S067}t<3eHb3c%6e5<4fu0vT2mu$zR7vvH%c+A7G zZPj9vQ&W9?-hQ=`4k+hVk&^nTw*`A5_RV_~>)rC>!8Ky+BB8K(wU9Wf1`3X!Zg}vG z8RhrIxz>VL%Qrz!1}H6AwJ$1$*g$k6w6Ty?Bg$+z02hpfA=j~e&*!!zjd1YEY^D?Dp^L#k(f8bVE zl6?JW!K%+Qxf@HajI4tL{ z5%k!_+J*nFN0ok$B@d`b619NC2G67(F9MINVJJ-!>-&sGgIan@imvb)h|-0vTeE(> z0vMcN%Qi#c#4nz84kMe^)p}{ zs0fR)B=JW5z6Q>a@)SccIUoX~!%w;?{c0?Z3S6^{XyPwX497Y{cqvGyOzxQ!`S_h$ z7SExTtl++S+0IUohbJj4tabErpK>RS1_QBSp2^@q)T4IeL!+My&7mCSx)Im49UItV zfj8@_dku#sroMgq23@?PLRRc-0s`j`xG4VI!#hxeGB3o*)7>Tzoz_DowqzYwTyI|= zun-(tf%sdWf`^7pA;8DCjD=)59qc4Fp153dNp`!%mD0(^(2X(SpxgPR8_W(TPhv1@ z*=y!{2t+jc%7}~eeP6l&!^~=|-d4`X#r5=QNJ1DX>)N+>8P(Jh_1Zv=?0SphYY|x@ zt|P1R8)?*4#5=aFh2cKP%*(@bTv%{x(pp$P{eYtdn#BFKS3lo#fN`l&v+Ikwjn5E7 z^Dm1$mxNJMwcY>A!^tel9;li(Pws&^Zo7rT_<7-7iLFHFD?&*LkRR@P^C7t9k3KbOL;A~qogj5lteL2wU+7}Qs_9eEG!bUvK%g4xBzO5;+ouf z(&*)bNI8xu=GQ?>wL&Y(=1=9r=}|pCQD>1_Sz5ZT_Qia8Q8Kukgj;wl1Lbw=ql~WZ zZOwpL)n;euL)Yh=9E7(B@R|$`_DfLkE99FV+~JP=BN-y-=9R=OV};T~k&)B(21Y}~lfuRqSI@HOUi^Rtx#mjtL$V96Rzu$Ft1 z3Eg*;^k1v>7wee2hHskw?l6-)Eh8)I@2&f!rA5=`oc1P*i20Bd!I?I18uiKyNdD8~ zRaua%M~aDrXz=UU^MG=SavQ41+alqS-tiE=*40DDg}$XEOl)9qY_J{sCat_IKJ9iH z_oec3OkA4`+ROAU038!R#R%%G64k}UYZ7jW_fl)!CnYGvG1EOdsPHNpn-?lgc@gB* z(vJl?f`Q@W)YO`D{u>wy1+Q;oWYnjd8Iqkb2i|*oJ=ZBzuyx-}882VTJAS*!S49+&BAR-Yd5E ziJtX8dMywWl2cGJ8?fe&Zt1k0(6qL$&AX4-iDg+$|E<4v&f1N&1so?5_j7QROw($f zIN`X2WpJzz37tHl;alY=aV#X02_k45Bmh)9$Cobr#bpslUYcMoXY%i$% zQBj%KzU?&MkwY6WDJcWqp5#%^U;|d|W8Sx#oIaJ#Zor{@+HA}LfQ0=zl}_GG{lZPR zQ5dLy`9Q&ky_Lc`9y-R7X5koN%+Zayg=`8qPIR?V)xfJ7H zIOCgHK=5bn3MlU^Qb(l1M7+zRKqg+9MQn*&=DPnn&YSiw6Q@UQGtvE0Mlp3yRI%Me z5tglJicLd2OXOm+|IH?2(<0l~peVZpg7ZS~zea6^ z2HUhWG&Eo%jf|cTX5d&Snb;~YwpBquW@)u8!m@aZyk-}c}umG?F zLbr`y0^X*26-!?}C$$E~9W4hUu9nU28`q8J#eD2~XSpDJIgxD6{zp7Z%{<{V#Z>_W zk2FMI4DB#Sq`0@4KLJlLCg(Ix@&TMWg8WLrF)$0pxjo4@sXwMG5lI?2EfLT(tD$J= z#2L_}OY|9-UA}hHCVIK5_)~d0ex0W>b6M{!Xivb7Hd?orLrlc{IC2aevs|ZBKtJJ~ zH7V+VNp&n71Su%CN`Ok}PsE{Ne)K)A^9#k= zdG_VrBD&yWr;{wCkSnLU7D@h5A-F@I%&Uzcl52z$k8F-yYTb;~@Q4X62d%J}SBg_! z$O?khuPr-IUU1_WW*q1xd^CJ*1W^I>=i=w@dgT@GMgBitWl;%)RDFH*m12=S z#I2ZpGA&dqm!%f%QcmN^@+WS0hkhm>Bt<-W8DT6sMa7H4vGmGhuIDVlEMfAYz64X< zo~1DS4y;p0G>%n38`#a8H?bnA-Sl9j6PYWJHyu;9-R2%L>SUQg1G-IMGV$M#|Dz~G zm_8pw7R5|fcW!k(V7;h*a(LgGWj>u5>s7S*zVB5P)cKER$f5m)l|K7HSW8yjA61M0 z4v%qfM0`vIDE5>7chv$`gRnTio1nQ@99KR4p9PZt#(?U{KJ%*r&ht?Lm7gF_%n8m< zbn_5@FR0fB=CW_`b*1Yb^MD)?rKqiQZxM00=aDxD=Ao>zh(MFhET0!Uk9oc+6*(f_ zc_V@MfZ$wOWxObBdc1p6#`3_W_yqQ_aVqs5uAdJaZ^gMKAK9}~u7&Gxuimxq6Ty}x zz_B~@^CG`M)z)^T$M>ERs%*c%^GAhE%}HnlQOuzZ5ZANy4YpyFiA@n*%11L>Liu|5@WE3sP2oPhM{B&s@R(!s|lk3 zy$h@6x(87Wy|5&F`DQA}H~XY=XsJXfqJ)N9jMKH(mMCqBB zvOww{pU|JnP~eKdm#84p4Stw9)IO7=?@$GzY}#U4#PMhOK4_ z4r_myaeRYHSJ8hJAD`$1+FV;Rm>`H;ZEYvfdt^kvWeZws1L138QJsg21J;HfeuPuj zR@>K{nLxBLY>E;UCBh14&!R50RHisIAZAti#SCbnp8Z&*fFRCN?lxN93SvdEe^awg zvLY<0s}kW<$5Pkjbpi)2h>R$7FK&hm9+)Ola8Js+3{!{EUIf zPrUHcYy%c$Z3QCp#G?x1wzYUx)`ZkvCtBNdl^^SVzIF5F0zoeItM`T;!6XY^0owB; zz@ZjUx#6d4Uqd5CM+?n)GNXW};57v&(9%5N+4Z1in*!O;l`~xb@@4rlJl{h3#{mI` z>c$4nA0HJ=Bt@9%>i%6BNc0Txl3KSR?C|#f2j}7reba3)f{mJSGgc`OL@oRZ*t4WW zPWtGzuWydxB*GWY^z`&PEF@(5$hy$L#Q@MY;&ST2Bk~P$^D7dj+y&^Ov$IdsW&gJB zsfi2va@MwqeLD$nhLbqQlzptExM2O8UZI}W+0}J8i=zrB6-UVLLAxyuy@99UYA7%N zocUSYLX4XWIW`B!%g9JEb~zhD;ppytadrtD2@o`)SR?w+#UN=meGly!n@PT)TiZB( ze(SijZGUXl1d60(_T%#5Euq#Iz0SzVX_#o8RKEN)O^d7#|7UfVXB4r1A3K0P4o-*B zuk-)88%?ge5Nc(q`D=1OQblQ_Ix;h*A8RurVe!=0kyP*3>FErXa_-ue(~`X4O#WOX zM47#$xIIE~{x1sAXCq6HPUzJyWz5qUyWPHku&6D&Rl=!8{p!i<>9C&ELWAjh%{6Fp zkY7B9^52CC0?NOgF!97!2q%K(r@10N)%S7kBmFQ}bF~jDgOl(I#89q3#1F%)6Q=CU z^FKd}m*)M)hp`a<^V7k^EzJ&{%CG!sRH^RO@dWLU(ggAMZ#H&5*taKs)j_DXme|t7 z@E!FnZVw|eS0a&8|KOei3Q9~nMOwFpNHPc)_{&biOH#in8ol7hM8Fr#+G*5b@IU4o zL@nkwJH3W8>Z~UV+Cr#715rwu9bc#;_7#qG0)iQ^sEayfZg=T501?~a$krE|hX#Oj za%NaMIH<>#HpRb4fNBH!@=EgpF7LpuQ%_oa z-JzRw#UwH#CpoZna15z$(aVR}>FsAbPw!`80Z8$Z`N3c`PHP1c;}?n0YUoTacG@@u z$k1}`5W%^aIhGVy?vlBJIGOorF8}i@Yde?F$p%c`mf@$9C#9kz|IM2>sVlTP>{Ty1 z6j|%5v{WqSSQyHz4Q5~`Tb0R~XnFcq?d>r7S!xu%FD{tM6C^oG2TrmWWA$sk$&p=i z1oz&~sdB>R>ecThI>16uv52Kykloswo@9yq$kz7tvu8bMdTEOW8v#g2qJg!EiR@H_ z5h_NJ!V0DX$`uku{u~NYm1b96w&=Z-=~g+JCX&0JIV;3N{_jeV#@_?}J0}b1%zn_v z?14h-x>z=>2S+XRv;-731D!rk_AKo64Wn6XQ1EGRtml%ecCmUO9g9A2+mOgUG@~`q zfTS032@dMS1JzE{c2P0Vjb2{s6L;Rg*qguP9XhYLn}@9-`}oc{#D=o0;R4aDss`a) zT}xJ7QLNKQ^U|FANWJls%|Ue}n=Rf^%(UhG!MNdIg7YjIw~30aAilUgW#+ z@$tV+cf$pkk-6-@gn7k=?6R}+-k_4LMs!}QeIse zRD<=ee&|dnRDH^zc+_lwfuEjy2DTiG|0`!K&x%Kf2OfSb8C9(3%cBkAMD+Rufuwm$ zdQGBA)jxYi-tIIqx}J1a$Jt7^a9N^HuUvXkfnnSP&2i+%TR3s3K}Zbff_}58-qMV3 zWCdt$P_)W1zfKYp3?5Xk_%W3O zo*YnCln#4#7Be0}bHy&W)0I$a9B3OL8wDKUW^f`H(@^PsOq?#G`;?OvG zIK-ojQe0Z9xfCwXri;82UFMKVubx=Lveb__j5saf)RhU5#fA0NL|U46%XqMvrf-7I za>Xt*5;8oqG;(_`KsJEZgNS&*(IAh#+Nkve%VlFL}6;Kg~IhHr#!Dy*Yh|QQ3pK)hr!3W78A;_hgIr>MiUE zlo<}W%b{O>Em~SoTIthg3)9k!oW-hAzP<%UhVcSC`b+F|KZx#zC9^lHI<9rQ(+lP) zj;>TtyE>30#KEf@Fu@?v$%*lPmQ(!Qik*s)hPiSN zlx(YRx!if7d^(Jkq`})}o6cmp0u3^%LR@rdZ~e-~PO% zEV+Of&R(>fYWwi^Py4&hd~J5L6q^cOTPUcFqpF)wkFgJZb4gd}mM)IqsR&7^(&iJs z7`|R?p~ehNt)c4!U`9#FPMU7xl2dKN))vj0ndBQDRrM0z*KIOq4RFBa>NnvNFhV22da!)AjB=l_v6(=8oah9&mMiF@>0SETY4o0z*|t?5Niet$ z26m;HS>FBN^KcCPv_WlmtN$2R9+l9hL?1c3%iGFYXGGWZNR#yx<_AINJs-@0;;zhRDI*+wb6AP zjN{tx=w=+uyOZkYwt>@pZM15<-Q|c7)d2wqMUJ5yxpyTGV>!-GZ8e{X4Gj$q37O9v zo8{5Bhpj_dvg!dqtdVA{)u|-2r#@?0)}gjow3gF;ypuV8GLCK_)?q4UP;~`KREH8L zJTI)X!y8s4*J znIcqu9zU*8P?9P$Y%7P3A2jZGnGW!Fl%8ZQG#RzQ^`7~taArMse_;t^Zb z-fbwGovOW%sB1&G@YO}_Pw&!0zr-U;bpJc!NK45RhDdW7?xE5@SPLdx zh6;n0n5H0?@Jvh3)?Ou)uGIv1c=pyM+D?>(_67Mb-&Xs0V|h`VaNiNx0OV%is#VL1 zJIqXdul*Y`=g$=*CEyI$2yonVU|gV6t>xy6aEi6jD!E5o>esF)e;0L+LJ1lrg6^kX zKG8gTqi;Wd==U({1CMq*op=C8cHgt3T;B679aKGq6exERwi10$(`IcT7Wp37Jm{Jc z>=A+@la3;Cz-hlG??arrZKLZ6ft_0cxu8-T1~ zW$#E|;u8D8Fs`<9f$W7(a^4&CJ(aq46Fu4P3I+|EM2Q`vr+NE1 zPwl+NBJIqa*=NP~Y^?|f@+Syk-zz$lGnZGT(VAA)iAx5d?OS;j5r5A(zo1hww(KI9 ztOAaL=egE)GFCLwg!IB*kWY@ZK5DP_DKqtBJ^E#dfA8I!*UcPn7e$#5oYv(#ntZud z=DXe47G2ji>&46_p&mLcW@(#O3Kloz@OOQF{@f#kPQKe>dY@?V@b!uBW$#$*Rz^GtG|?$ ztt;bE9Abr{&sO%=uUJot2i(_0-B2o9L#P{FC%P5T~UOT5e@y{V;ZJ8gAo9NSRqYa5B+#h$JKjKK z4x5xsVD^4?wm=1?r$8?LJRd33ZD2s>Efh3(?5e(J8Ed!U#HCI}=;BG@kK=os*@ z@*Fr2gKCew)*Mi;VRD%e*`!mJQ&Fi$Jve^cr=~H>0m3}`+PFmrXtcE9NZM@-3<3|n z<{A9=kouu7gEJGMzhi~qL~W+>M90v%DjlMNGPgZ$+O4na-j&pa=D-H57{dr|dw z3GlT)xJusb@+=$y?sQ(^paugdo7A!?&a+5tgtbCfijNPDSa}4!lk-cnd7dm$P*H54 zWFx~8R8dv6*iW+5?hRuE57_yCUJgDf&t4mP9BY=9gFSO|jymKc6Grij`mL&xkK4>LE04s(qS7l^^7{%C+Jc*TJ@Yi0^?LrOvI;P=2BS$ojj!wSPbZ)TFk<8fXei#1v^logM-k zhy^=Cx|GDk^1r=b$~J5N-|>)nqD!7MuUxsZ&BL3#0C`%(ov3}fbm+k)o?t$;UGp|8 z2}R{LOK|`#peFl*ByIP-FR*45l-Tp+9tu{Xc3Uwzq}2yj3I5fXE(Bo=-VPUopam;YK?Y#JFh%(s%j zD06y}flCb>7k(D~2vP;c4h(hSCEL!caIH-XRQ9y%=k6dyPF@Z9&&L?XV%5pluYuaZ zFA6UK0Njtg*VNC>%9^ofrqkoMg5WPCVXl4v#CO^I-yq+A;v|2G0*B=q$~m=;P5@Y z$@Rg5uGomqHM5ZVXXsy;!- zUshOTx{g4)Q>iLB&7swGJC+!`{CWLl?Y(Oj@`}zC8VF?_u}y3zi~s#%p+v`jz4#x$ z8Q?3Pe1f)q!~EZGh>w%)$BR^qW%f4t7NU?5Gj0nW_9aHa7%LobgWg-r+I0_=JL{nG zWXduPIjyRSid0IlPJ@Z>kE+FGNGyHocxUq0xpQOakLe#6lkwIeY9$05G<&~0j#@AW z4DToEDFk{yd%-*6PwN=#SN%COVU2!UQ-MDxYw}j(SK-*WS84&Z0#bv6EesxGwF1&F)zNCH`grmRw_%Xn4pJwI|q=}sjG{?1A+DUf;)l(1t8uMERPdz$R7^lh_`-?`)+QK5ttb& zll^g?xyys)4kOkq}%A}=;;}<&Y1OdWbU@WGK6qQ3t=J)Oqz~!n?&No43Lrh znam+<7~lUg(|VYNjZH=h3Np_JU8|@S@oTJ+Q1DuhCPQ60ecpR5o5BB>4IH3*wD((Q z88cY4uU{K7*2)u5^a#|J%5bMo0t1aAxKH3@j`$8Ay~j^mJ!aIP-}#iKHQ;ULH+=>? z5^fw0rsEY|1*xRPtdc&WWYS{KyJwy_#C7!(%gML^uI#eS~03osO0-kc3`QFW|P3 zZgp>YvbBv365-wfuuLgMDrd;E#VqQxXq8(jdHOUmhDu1lBz$(9vnwJ!!TE68oG1BssmuWCq+liUt_vyxJCr!& zq?Tx7nh@&2iHi^HCmJPRmfI>l4zU*8!t-#E5C0Y{uqeEs@xdg!irI5S~D=fSSd+ead-EET^dUY|9s&==ZAq9W#a18}(HZ1I(dL8)(0ze0VT z`ujxd8-Abob-Y7tvH#2K{uB|NqNknE$-pc|?Uc<-z25cdYtBQpn&B>xT*1 zuKBCf>&XJs8FluTk+@zqfTL%?;-iEsIu*|Q^~OA2`>`+H!jsLb3;lN%%F~S>oW<*@ zQgb||k+^V|x*fAV2D5X0u=Vwzh7?`$iCLck6EF{j-@$B87Gvi* z--3BYJ$FV!@{dn#%57XA_vg=FK6F(?k({z^!Ow@AvX$bx=JB6Dvqx|Htc$Wp53FS+yMeu#%!s1D_tl(U+|YQf%mXS8Oa8^^je3t^&vl-2*h{4ea@ zzJxHG)I!RwFm{{A*Izg#|aU6fdVw{z&X}der$Z{Qm)~7fXXzSB9B*J=f^kqblpiP8j;0r&Z;i0zB}m%9##<1W=M zUAlBQE-C43nMvd8k_4Fs_w~z{FCQwlZD1{xQrvW0xCx0(!dtc#yy@C~>lR}K2UhwO zq^?YAxb(fj`yU!VDf7eiAy~;Sd-}9F54d0*v~pYf(QFzIUBX1!=suqcU-?T00Y`#B z;payGOaDOuz zpF}98_GC^xGRgk41v%v##|d;V=+S)WXlq7}d?X!k2KET|w@+^u4wgeekx+RGh*r$a z$$>j%46-#;Ol?wR^WG!IFGo7YZRBu4#^UqWuf@03Lf!Hiny2r$pV_4Mv)k8pUo(7xzbHj{NsxuE(f ztgJY}`oXSw(?L?9QCu%u`ah)C?%ehtbRW{q? z&F~MYD+@=&|8>1bJ{o7%*3{Q?CC|Uf$Ip-0Z}~*|res#|)IF1enHq(@Ke~GLYBn27 zDWy=oGqc`F-Ik%S;ia7LpH?n(x3+D#5oh>v7=>!)+uZ0srdQON=T<6?;j;a*;MQA1Xd(=*Sf@y@PIFErQ*=nwYO_acY`}zOV zNPyA(>yuQ^H#?GJ(P<%z7Tn-WoS2#}j@(&5`AXxhsr6TP;nS8>y4?45*`PlR4JAyg zy_QjXaf?qv@aWY*f<(p9nt(&nG7}OMwXUmW#>ZcYsKPNw-K24w%EvhT9qQ+&YJC*g zo%x$~r0!01^RKD~alF zLL>?Q2dm%5>D*_Muquep${2j7&yl^$d);4(uV`v)v`l6*Yy~MB$%&TCz5@s1SEL4q z@>wwi1o-(qLPbLCUTM?7z~wrN_9%}QRBj5lMFPn6P4O(Tx_EK-`x|5Zd)kv8_{>k< zqrLB0_fZ;~?9N(((mCHo(_wP7q2VQ!w13~FurmoIvo0-O%^P(mgc8o&rqJ4Dp8kfy{O0N9_n z0yf<;DX!9qXMAcJ2Qnh>>-tOg2r9XU2jw^9zK^QOR2GeV9MXdYBv+XZo2FbhJ$`aXWGhoWMVkOXz588%CGXXh}WZ>-jgg zRlAnOL=gB0R6aL;= zur)19j>op;b7~;1D?O+UX@7It?L;?5!Y*z8XBHX^iD1-7$P^_~q~ta*hc&+M&zi}E zTdE0d6hD2s{K=C`K${35#a1^6B~t>G+K{{X3!bTB3M{ z{&?@ueKMz#J<_}?*kom7ZrhDKvyd;VZ34ZwJ@FtaR5R)}?W@=2Zxn0Z`S%G%H_?Zz z7uUXAyY}48HM&-O>H?HvC{%GeS{|%aS%QV-%+x77H$(ydXF1Q~* zv%)?1)XAiK+eHp;{I+dGjBT(jNT5c-mOd-?VS{ga{8f`e!S7E593F{#MBgtA#j(=6 zrs0L673JIRj*G(dW^kNXziK#CGF;Qd@$7JO_EP`TDiyKkJf;7>|LppTZPsm*@p&+GQkvrwMe2t`WR#P{#7-?^`EK3u1m-^KA z4_j^5N$)Ma$PyOMt*x%!L{yr3p0UKo#eH@7I|%nE5hK6zYSr2g_YJ3;N0ylE5}@k2 zA~`1*3fx1d^Q2wmF|a zW{>z`CORxuVKa_hPvFn*aUolsraWxI38n|M|9+zAFc#?l`TuL|N`soZqOed!)Nv_@ zvJb-&5K1c&oE9c2rGXM{iY%dkY$CE6u|}gHTd@O8EFd}&ct#&V5J(7dKn#|pZq%|Q z5EhX@KwzW}5ECMmAzJKtL8eouKfHhP=G}Mh&7J$+yXSr9JKs&+ykC)cm^Se0fKBu5 z<9fM%_|iJuIhU^ogFV2Tl!~2O%J-SN;_D#cvne?mDRw}*Z{zG*jLEj@4!Jxcu_x@w z>j(2>e5rQUl3Ib>j-qIDlt3>9Hwr=8P1^8uR(d?09>^UZF&m7}@#AAD%;sU!b@}Q~ zMAnnUQ>m#nqT8{Rt!W1x*#qOO_DNWYBAbO5+_rCA_p%nWDVDIg6Nj)D=XlR&W)KuD z95xDkSyD3bDZ&fpFQrF1A5F=qiW-!0tB%Ou8_EsCw(4~T!3j~Q`{AL zwf~}aEHv^Hx#d%;1kiSC6oxzxk3-cgh@bF@Y1~jNA`@qrxQ8tr&O2G%s?o=?3HXO| z3n68^rubJ8eB%)LydXzN5|T9F^B;dxn|<~Ir?c8A^KZ>y?LImJ>@3k;mHOHKp^4;1 zgaHtJ=az7tcq*4omh$k#VWUd_=9r{0-|i+JTE*zO8QAa~;y|T}zIzJCzG?**yX%0+ zmaxa0a=Gis>Ba@vQdQ6m5p{3D#EJIh<+d?Ru-uesl4Lg+NSk!-Zy`xzr!&+bu!<Pgfo? z*b8FU%rP&NN`Q@B=oU-&fzKL5XpmP&%)6!7#{E1$|3hQR(g46!H!@!J!-T^tv-aD8 zSG{*4(kJFNqY3pU6cCB_dFGbqK_FO|n{zmvTMB@w7}qHIHcY+G!rS)7B_vrl?q{Kd z3hZf1MMq__zIZJE*!VPqVfzOx>knt`BfoERqOS~BTqpssh*v28leTqZ3NHL(SF0;7 z57IKZ2VlSJV#*UrcblQGGJu@13+4L=hwVS2uQPN@& zYh^}xnRl*|V)C#hKl6Nnp%6V2u@s}XdUvLtIz<)pmDEEf${r6kxNYN~#~CAxhYMsy zAHLn_c;t5pF|PaSIlC1=Z!`DUyB zH#>ChdtOQ~pp=vGOq_Hjf7Z8Q5puzB3O;=8+zEfNo_MAKoTFcIU5Lbj-MzL5>7Bt! z7S)ma>nBDdb`X5nrwU#=EAh*F56gbMrm~AfrH8(LB1{&3YOF&YJwf3hUwZ|k3?prnW zgg?PF$)*Cy^k2(kzC~-eSch0cWx(6iYKMb2jTO-N)c!&v+VbC8P+b4N+IKqT@7Kck mv}Hxb{KINNd0lJM^u_Wzvx@2ZkuOmuc7p8v9jVSMI_DoUNC9L3 diff --git a/example_uml/toggle_3.png b/example_uml/toggle_3.png index 3d8f1dd3470cebcd1c18a57ce7025a6cc640418d..61a8dd53d47d4b9752018bce3eb5c8017b13e9e4 100644 GIT binary patch literal 40618 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

    KeCZrnviZ>(Uo_(1CC; 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 Q5TiJ#q_&@`c=Gc90C}%(hX4Qo diff --git a/example_uml/toggle_4.png b/example_uml/toggle_4.png index 264624aec100ab561291694165af3554e1e08456..26e8388d24fe055473261847dcbe6496e86b25b3 100644 GIT binary patch literal 59299 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 F_%C6{m306B literal 60867 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 diff --git a/examples_model.tex b/examples_model.tex index 8490a1ea..45b5a793 100644 --- a/examples_model.tex +++ b/examples_model.tex @@ -1,5 +1,5 @@ % ----------------------------------------------------------------------------- -\section{Example of Data Model} +\section{Data Model Examples} \label{sec:examples} % ----------------------------------------------------------------------------- @@ -15,16 +15,16 @@ \section{Example of Data Model} \end{center} \end{figure} -The LacI/TetR toggle switch is modeled in SBOL as two parallel hierarchies of structure and function. Structurally, \sbol{ComponentDefinition} objects are used to hierarchically define the physical elements that comprise the toggle switch: +The LacI/TetR toggle switch is modeled in SBOL as two parallel hierarchies of structure and function. The structural hierarchy of the toggle switch is represented using \sbol{ComponentDefinition}s: \begin{itemize} -\item The base elements of the hierarchy are genetic elements, transcription factor complexes, and small-molecules. As examples, \ref{uml:ex_comp_defs} shows UML diagrams of a number of such \sbol{ComponentDefinition} objects. -\item These are composed to form more complex structures such as multi-element genetic complexes and molecular complexes. As examples, \ref{uml:ex_comp_def_compo} shows UML diagrams of the composite \sbol{ComponentDefinition} for the DNA construct for regulated expression of TetR and for the IPTG-LacI complex. +\item The base elements of the hierarchy are DNA components, transcription factors, and small molecules. As an example, \ref{uml:ex_comp_defs} is a UML diagram of the \sbol{ComponentDefinition}s that represent these elements. +\item Base elements are composed to form more complex structures at the top of the hierarchy, including genes and molecular complexes between transcription factors and small molecules. As an example, \ref{uml:ex_comp_def_compo} is a UML diagram of the composite \sbol{ComponentDefinition}s that represent the TetR gene and IPTG-LacI complex. \end{itemize} \begin{figure}[ht] \begin{center} \includegraphics[width=\textwidth]{example_uml/toggle_1} -\caption[]{Examples of component definitions for the LacI inverter. These include DNA \sbol{ComponentDefinition}s based on parts from the iGEM Registry, the RNA and protein \sbol{ComponentDefinition}s derived from them, and the small molecule \sbol{ComponentDefinition} for IPTG. Each \sbol{ComponentDefinition} in this example is associated with a \sbol{Sequence} that has an IUPAC nucleic acid or amino acid encoding, except the \sbol{ComponentDefinition} for IPTG, which is associated with a \sbol{Sequence} that has a SMILES encoding.} +\caption[]{\sbol{ComponentDefinition}s for the LacI inverter. These include \sbol{ComponentDefinition}s based on DNA parts from the iGEM Registry and \sbol{ComponentDefinition}s that represent TetR mRNA, TetR, LacI, and and IPTG. Each \sbol{ComponentDefinition} is associated with a \sbol{Sequence} that has an IUPAC nucleic acid or amino acid encoding, except the \sbol{ComponentDefinition} for IPTG, which is associated with a \sbol{Sequence} that has a SMILES encoding.} \label{uml:ex_comp_defs} \end{center} \end{figure} @@ -32,54 +32,39 @@ \section{Example of Data Model} \begin{figure}[ht] \begin{center} \includegraphics[width=\textwidth]{example_uml/toggle_2} -\caption[]{Example of composite \sbol{ComponentDefinition}s for the LacI inverter. In the case of the TetR gene, its sub-\sbol{Component}s are located as \sbol{Range}s along its \sbol{Sequence} using \sbol{SequenceAnnotation}s. The IPTG-LacI complex, however, has no sequence and its subcomponents are aggregated without any data about their relative locations.} +\caption[]{Composite \sbol{ComponentDefinition}s for the LacI inverter. In the case of the \sbol{ComponentDefinition} that represents the TetR gene, its sub-\sbol{Component}s are located as \sbol{Range}s along its \sbol{Sequence} using \sbol{SequenceAnnotation}s. The \sbol{ComponentDefinition} that represents the IPTG-LacI complex, however, has no \sbol{Sequence} and its sub-\sbol{Component}s are aggregated without any data about their relative positions.} \label{uml:ex_comp_def_compo} \end{center} \end{figure} -The functional hierarchy of the toggle switch is specified using -\sbol{ModuleDefinition} objects: +The functional hierarchy of the toggle switch is represented using +\sbol{ModuleDefinition}s: \begin{itemize} -\item The base elements of the hierarchy are LacI-dependent repression of TetR expression (the LacI inverter) and TetR-dependent repression of LacI (the TetR inverter). As an example, \ref{uml:ex_mod_def} shows a UML diagram of the LacI inverter module. -\item These are composed as \sbol{Module} objects within the \sbol{ModuleDefinition} for the entire toggle switch. \ref{uml:ex_mod_def_compo} shows the UML diagram of this composition into the toggle switch. +\item The base elements of the hierarchy are LacI-dependent repression of TetR expression (the LacI inverter) and TetR-dependent repression of LacI (the TetR inverter). As an example, \ref{uml:ex_mod_def} is a UML diagram of the \sbol{ModuleDefinition} that represents the LacI inverter. +\item Base elements are composed to form the toggle switch at the top of the hierarchy. As an example, \ref{uml:ex_mod_def_compo} is a UML diagram of the \sbol{ModuleDefinition} that represents the toggle switch. \end{itemize} -Each \sbol{ModuleDefinition} also contains the \sbol{FunctionalComponent}s that participate in \sbol{Interaction}s and are defined by the same \sbol{ComponentDefinition}s as the parallel \sbol{Component}s in the structural hierarchy of the toggle switch. Finally, \sbol{MapsTo} entities are used to refine which \sbol{FunctionalComponent}s of the functional hierarchy are identical or map them to \sbol{Component}s in the structural hierarchy. -\todo[inline]{Need to clarify this explanation -JSB} - -\todo[inline]{ComponentDefinition.types in the following figure are not consistent with the list of BioPax ontological terms described previously in the Data Model section} - -As an example of functional representation, \ref{uml:ex_mod_def} specifies the module definition for a LacI inverter. This module definition aggregates and instantiates the component definitions for the TetR gene as functional components that participate in interactions. Note that the transcription and translation of TetR is represented using a single genetic production interaction that abstracts away the presence of the intermediate TetR mRNA. If this additional detail becomes necessary, then a new module could be created that includes both transcription and translation interactions and a TetR mRNA functional component. Finally, the module definition is also associated with a continuous SBML model from source file LacI\_Inverter.xml. -\todo[inline]{This paragraph and next one need better phrasing -JSB} - \begin{figure}[ht] \begin{center} \includegraphics[width=\textwidth]{example_uml/toggle_3} -\caption[]{Example of module definition for a LacI inverter.} +\caption[]{\sbol{ModuleDefinition} for the LacI inverter. This \sbol{ModuleDefinition} instantiates the \sbol{ComponentDefinition}s for the LacI/TetR transcription factors and the sub-\sbol{ComponentDefinition}s of the TetR gene as \sbol{FunctionalComponent}s that participate in a repression \sbol{Interaction} and a genetic production \sbol{Interaction}. In this case, the transcription and translation of TetR are represented as a single genetic production \sbol{Interaction} that abstracts away the presence of the intermediate TetR mRNA. In addition, the \sbol{ComponentDefinition} for the TetR gene is instantiated by the LacI inverter \sbol{ModuleDefinition} to indicate that the latter describes the function of the TetR gene as a whole. Finally, this \sbol{ModuleDefinition} is also associated with a continuous \sbol{Model} written in the SBML source file ``LacI\_Inverter.xml.''} \label{uml:ex_mod_def} \end{center} \end{figure} -As an example of functional composition, \ref{uml:ex_mod_def_compo} specifies the composite module definition for the LacI/TetR toggle switch. This module definition aggregates and instantiates the LacI and TetR inverter module definitions as submodules. It also instantiates the LacI and TetR component definitions as the functional component inputs and/or outputs to both the toggle switch and inverter module definitions. To complete the functional composition of the toggle switch, mappings are made between these functional components to indicate that the output of the LacI inverter is the input to the TetR inverter and vice versa. - \begin{figure}[ht] \begin{center} \includegraphics[width=\textwidth]{example_uml/toggle_4} -\caption[]{Example of composing the module definitions for a LacI inverter and TetR inverter into a module definition for a LacI/TetR toggle switch.} +\caption[]{Composite \sbol{ModuleDefinition} for the LacI/TetR toggle switch. This \sbol{ModuleDefinition} instantiates the LacI and TetR inverter \sbol{ModuleDefinition}s as sub-\sbol{Module}s. It also instantiates the \sbol{ComponentDefinition}s for the LacI/TetR transcription factors and IPTG/aTc small molecules as \sbol{FunctionalComponent}s that participate in non-covalent binding \sbol{Interaction}s. To complete the composition of the \sbol{ModuleDefinition} for the toggle switch, \sbol{MapsTo} objects are used to indicate that the output of the LacI inverter is identical to the input of the TetR inverter and vice versa. +} \label{uml:ex_mod_def_compo} \end{center} \end{figure} -Lastly, as an example of further detailing the connection between structure and function, \ref{uml:ex_comp_mapping} specifies a mapping between the composite component definition for the TetR gene +% Each \sbol{ModuleDefinition} also contains the \sbol{FunctionalComponent}s that participate in \sbol{Interaction}s and are defined by the same \sbol{ComponentDefinition}s as the parallel \sbol{Component}s in the structural hierarchy of the toggle switch. Finally, \sbol{MapsTo} entities are used to refine which \sbol{FunctionalComponent}s of the functional hierarchy are identical or map them to \sbol{Component}s in the structural hierarchy. -% The first use case is to indicate with greater fidelity how a module describes the function of a composite component, namely by asserting that particular component instantiations within the module correspond to particular component instantiations within the component. +\todo[inline]{ComponentDefinition.types in the following figure are not consistent with the list of BioPax ontological terms described previously in the Data Model section} -% As an example of this use case, one might compose the structure and function of the LacI-repressible gene of the genetic toggle switch. In this example, the LacI-repressible gene and two of its subcomponents, the pLac promoter and cTetR CDS, are to be composed with the LacI inverter module. In order to compose these components with the LacI inverter module and indicate that it describes their behavior, they are instantiated inside the module. In addition, port maps are placed on the instantiation of the LacI-repressible gene to connect between its pLac plus cTetR subcomponent instantiations and the corresponding component instantiations in the module. Doing so makes it clear which subcomponent instantiations in the gene are being described by which component instantiations in the module. In this way, GDA tools for sequence editing and biochemical modeling can guarantee that their users are handling corresponding elements of a given genetic design, while GDA tools for genetic technology mapping can make explicit connections between the structural and functional elements of a design. +% The first use case is to indicate with greater fidelity how a module describes the function of a composite component, namely by asserting that particular component instantiations within the module correspond to particular component instantiations within the component. -\begin{figure}[ht] -\begin{center} -\includegraphics[width=\textwidth]{example_uml/toggle_5} -\caption[]{Example of mapping between the structural and functional components of a LacI inverter.} -\label{uml:ex_comp_mapping} -\end{center} -\end{figure} +% As an example of this use case, one might compose the structure and function of the LacI-repressible gene of the genetic toggle switch. In this example, the LacI-repressible gene and two of its subcomponents, the pLac promoter and cTetR CDS, are to be composed with the LacI inverter module. In order to compose these components with the LacI inverter module and indicate that it describes their behavior, they are instantiated inside the module. In addition, port maps are placed on the instantiation of the LacI-repressible gene to connect between its pLac plus cTetR subcomponent instantiations and the corresponding component instantiations in the module. Doing so makes it clear which subcomponent instantiations in the gene are being described by which component instantiations in the module. In this way, GDA tools for sequence editing and biochemical modeling can guarantee that their users are handling corresponding elements of a given genetic design, while GDA tools for genetic technology mapping can make explicit connections between the structural and functional elements of a design. \ No newline at end of file diff --git a/model.tex b/model.tex index ae01b2c2..d3368f06 100644 --- a/model.tex +++ b/model.tex @@ -788,8 +788,8 @@ \subsubsection{MapsTo} \midrule \url{http://sbols.org/v2#useremote} & Indicates that \sbol{ComponentInstance} from the child entity is used in the parent, instead of the \sbol{ComponentInstance} specified in the parent entity.\\ \url{http://sbols.org/v2#uselocal} & Indicates that \sbol{ComponentInstance} from the parent entity is used in the parent instead of the imported the \sbol{ComponentInstance} child entity.\\ - \url{http://sbols.org/v2#verifyIdentical} & \todo[inline]{Add description}\\ - \url{http://sbols.org/v2#merge} & \todo[inline]{Add description}\\ + \url{http://sbols.org/v2#verifyIdentical} & Indicates that ComponentInstance entities must link to the same \sbol{ComponentDefinition} object\\ + \url{http://sbols.org/v2#merge} & Indicates that data fields of the local and remote ComponentInstantiation entities are to be interpreted in combination\\ \bottomrule \end{edtable} \caption{URIs for the refinement property.} @@ -797,9 +797,8 @@ \subsubsection{MapsTo} \end{table} -on the former \sbol{ModuleDefinition} object can be used to link between a FunctionalComponent object in the parent Module (as specified by the ``local'' data field) and a FunctionalComponent object in the child module (as specified by the ``remote'' data field). This linking can perhaps be most easily understood via the examples in the next section. - -In addition to specifying a link, each MapsTo object must also specify a ``refinement'' relationship between its local and remote Components. Under this data model, there are four types of refinement: ``verifyIdentical'' requires that the Component objects link to the same ComponentDefinition object, ``useLocal'' indicates that the local Component object overrides the remote Component object, ``useRemote'' indicates the opposite, and “merge” indicates that data fields of the local and remote ComponentInstantiation objects are to be interpreted in combination. +%GM: The paragraph below is now explained in the table above. Commented for now. Please remove the commented lines if you agree with the table description. +%In addition to specifying a link, each MapsTo object must also specify a ``refinement'' relationship between its local and remote Components. Under this data model, there are four types of refinement: ``verifyIdentical'' requires that the Component objects link to the same ComponentDefinition object, ``useLocal'' indicates that the local Component object overrides the remote Component object, ``useRemote'' indicates the opposite, and “merge” indicates that data fields of the local and remote ComponentInstantiation objects are to be interpreted in combination. %\begin{figure}[ht] @@ -818,7 +817,7 @@ \subsubsection{MapsTo} \end{center} \end{figure} -An example design of a \sbol{ComponentDefinition} using \sbol{MapsTo} entities is shown at the left hand side of the Figure \ref{image:maps_to_diagram2}. The resulting entity is formed of a promoter, a RBS and a CDS. Three sub components to create the design includes: a promoter-RBS \sbol{ComponentDefinition} with a RBS placeholder without detailed definition; a RBS \sbol{ComponentDefinition} with full description; and a RBS-CDS \sbol{ComponentDefinition} with a RBS placeholder, which is also not defined in full detail. In the figure, boxes with the C label represent \sbol{Component} entities and boxes with the M label represent the \sbol{MapsTo} entities. In the design RBSs that are not fully defined are replaced with another RBS \sbol{ComponentDefinition} (displayed in green colour). \sbol{MapsTo} entities attached to sub components for promoter-RBS and RBS-CDS \sbol{ComponentDefinition}s include the ''use local'' refinement to replace RBSs with the fully defined version. In the second design at the right hand side of the figure, \sbol{MapsTo} entities are used to import the RBS from the promoter-RBS \sbol{ComponentDefinition} overwriting the RBS in RBS-CDS \sbol{ComponentDefinition}. +An example design of a \sbol{ComponentDefinition} using \sbol{MapsTo} entities is shown at the left hand side of the Figure \ref{image:maps_to_diagram2}. The resulting entity is formed of a promoter, a RBS and a CDS. Three sub components to create the design includes: a promoter-RBS \sbol{ComponentDefinition} with a RBS placeholder without detailed definition; a RBS \sbol{ComponentDefinition} with full description; and a RBS-CDS \sbol{ComponentDefinition} with a RBS placeholder, which is also not defined in full detail. In the figure, boxes with the C label represent \sbol{Component} entities and boxes with the M label represent the \sbol{MapsTo} entities. In the design RBSs that are not fully defined are replaced with another RBS \sbol{ComponentDefinition} (displayed in green colour). \sbol{MapsTo} entities attached to sub components for promoter-RBS and RBS-CDS \sbol{ComponentDefinition}s include the ``use local'' refinement to replace RBSs with the fully defined version. In the second design at the right hand side of the figure, \sbol{MapsTo} entities are used to import the RBS from the promoter-RBS \sbol{ComponentDefinition} overwriting the RBS in RBS-CDS \sbol{ComponentDefinition}. \todo[inline]{Add a table for refinement values and represent the value when serialized using the rdf:resource property} The serialization of \sbol{MapsTo}s has the following form. diff --git a/practices.tex b/practices.tex index b0b950e2..f13de5c3 100644 --- a/practices.tex +++ b/practices.tex @@ -41,4 +41,4 @@ \subsection{Recommended Ontologies for External Terms} \end{edtable} \caption{SBOL properties and preferred external resources to choose values from.} \label{tbl:preferred_external_resources} -\end{table} +\end{table} \ No newline at end of file diff --git a/uml/toggleswitch_modular.png b/uml/toggleswitch_modular.png deleted file mode 100644 index 2f1f8b83f7e60414fddcb2bb6242aeff456ebbe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20056 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 diff --git a/uml/toogleswitch_flat.png b/uml/toogleswitch_flat.png deleted file mode 100644 index 3eedd04da969e41b93d34fdf87cf5456a4ffd55f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32478 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 Date: Thu, 23 Apr 2015 09:17:04 +0200 Subject: [PATCH 036/317] JSB comments on location, seq, model --- model.tex | 111 +++++++++++++++++++++++++++++++++++++----------------- sbol2.tex | 3 +- 2 files changed, 78 insertions(+), 36 deletions(-) diff --git a/model.tex b/model.tex index d3368f06..6004ea7b 100644 --- a/model.tex +++ b/model.tex @@ -379,6 +379,7 @@ \subsubsection{SequenceAnnotation} \paragraph{The \sbolheading{component} property} \sbol{SequenceAnnotation} objects MAY use this property to link location information to a \sbol{Component} object, by specifying its URI. +\todo[inline]{Separate serialization better} The serialization of SequenceAnnotation objects MUST be carried out according to the template below. In this template, A\_LOCATION\_SUBCLASS represents one of the Location subclasses. \lstsetsbol @@ -398,7 +399,7 @@ \subsubsection{SequenceAnnotation} \subsubsection{Location} \label{sec:Location} -The Location class is extended by the \sbol{Range}, \sbol{MultiRange}, and \sbol{Cut} classes. +The Location class is extended by the \sbol{Range}, \sbol{MultiRange}, \sbol{Cut}, and \sbol{GenericLocation} classes. \begin{figure}[ht] @@ -416,14 +417,14 @@ \subsubsection{Location} \label{sec:Range} A \sbol{Range} object specifies inclusive start and end positions. These properties are required in \sbol{Range} objects and they can have \external{integer} values greater than zero. A \sbol{Range} object also includes an ``orientation'' property, for example to to specify directionality on a potentially double-stranded \sbol{Component} object. -\paragraph{The \sbolheading{start} property} -Specifies the start of a \sbol{Range}. This property is required and can have \external{integer} values greater than zero. +\subparagraph{The \sbolheading{start} property} +Specifies the start of a \sbol{Range}. This property is REQUIRED and can have \external{integer} values greater than zero. -\paragraph{The \sbolheading{end} property} -Specifies the end of a \sbol{Range}. This property is required and can have \external{integer} values greater than zero. +\subparagraph{The \sbolheading{end} property} +Specifies the end of a \sbol{Range}. This property is REQUIRED and can have \external{integer} values greater than zero. -\paragraph{The \sbolheading{orientation} property} -This property is optional has a \external{URI} value. However, for \sbol{ComponentDefinition} objects representing DNA molecules, it is recommended that one of the orientation values are chosen (\ref{tbl:orientation_types}). +\subparagraph{The \sbolheading{orientation} property} +This OPTIONAL property has a URI value. For \sbol{ComponentDefinition} objects representing DNA molecules, it is RECOMMENDED to use one of the values in \ref{tbl:orientation_types}. \begin{table}[ht] \begin{edtable}{tabular}{l} @@ -453,9 +454,9 @@ \subsubsection{Location} \lstsetsbol \begin{lstlisting} + 56 68 - \end{lstlisting} @@ -465,16 +466,35 @@ \subsubsection{Location} \paragraph{Cut} \label{sec:Cut} -The Cut class has been introduced to enable the specification of a location between two indices. Each Cut object has a single integer data field, ``at'', that specifies the index just before the location represented by the Cut object. Even though there is no zero index on Structure objects in SBOL, a Cut object with “at” equal to zero represents the location just before index one. The OrientedCut class extends the Cut class with an orientation in the same way that the OrientedRange class extends the Range class. +The Cut class has been introduced to enable the specification of a location between two indices. +Each Cut object has properties, \sbol{at} and \sbol{orientation}. + +\subparagraph{The \sbolheading{at} property} + +The REQUIRED \sbol{at} property is an index greater than or equal to zero that specifies the index just before the location represented by the Cut object. +A Cut object with \sbol{at} equal to zero represents the location just before index one (even though there is no zero index on Structure objects in SBOL). -Finally, while the Range and Cut classes are best suited to describing locations on sequential structures, the Location class can be extended in the future to better describe locations on Component Objects with non-sequential structure (see unspecified Moeity class as potential means for specifying locations in more than one dimension). +\subparagraph{The \sbolheading{orientation} property} +This OPTIONAL property has a URI value. For \sbol{ComponentDefinition} objects representing DNA molecules, it is RECOMMENDED to use one of the values in \ref{tbl:orientation_types} (above with \sbol{Range}). +\paragraph{GenericLocation} +\label{sec:GenericLocation} +While the \sbol{Range} and \sbol{Cut} classes are best suited to +describing locations on sequential structures, the +\sbol{GenericLocation} is included as a hook for extensions, e.g., for +describing locations in non-sequential structures. + +\todo[inline]{Need serialization examples for MultiRange, Cut, and GenericLocation} +\todo[inline]{Make sure that every property has a section label so that it hyperlinks correctly} \subsubsection{SequenceConstraint} \label{sec:SequenceConstraint} -A \sbol{ComponentDefinition} object can link to \sbol{SequenceConstraint} objects to assert different kinds of structural restrictions between two \sbol{Component} objects that are its subcomponents. A SequenceConstraint object requires \sbol{restriction}, \sbol{subject} and \sbol{object} properties to specify different constraints. +A \sbol{ComponentDefinition} object can link to \sbol{SequenceConstraint} objects to assert various kinds of structural restrictions between two \sbol{Component} objects that are its subcomponents. +The purpose of \sbol{SequenceConstraint} is to allow partial designs to be specified when the precise identity, location, or ordering of \sbol{Component} objects is not yet fully determined. + +A \sbol{SequenceConstraint} object requires \sbol{restriction}, \sbol{subject} and \sbol{object} properties to specify such constraints. \begin{figure}[ht] \begin{center} @@ -486,36 +506,39 @@ \subsubsection{SequenceConstraint} \paragraph{The \sbolheading{subject} property} \label{sec:subject} -This property is required to specify the component that a restriction is applied to, and includes the \external{URI} \sbol{identity} of this \sbol{Component} object. +This REQUIRED property specifies the URI \sbol{identity} of the first \sbol{Component} object in the relation. + +\todo[inline]{Check to make sure we say URI identity and not just URI everywhere that we mean an identity} \paragraph{The \sbolheading{object} property} \label{sec:object} -This property includes the \external{URI} \sbol{identity} of a \sbol{Component} object that is the value of the restriction. - +This REQUIRED property specifies the URI \sbol{identity} of the second \sbol{Component} object in the relation. \paragraph{The \sbolheading{restriction} property} \label{sec:restriction} -This property property qualifies the relationship between the \sbol{subject} and \sbol{object} \sbol{Component}s. It includes a \external{URI} value, indicating the restriction type. In SBOL Version 1.1 partial designs are made possible by means of SequenceAnnotation objects that can specify that their locations precede those of other SequenceAnnotation objects. In Version 2.0 the ``precedes'' data field has been generalized to the StructuralConstraint class. +This REQUIRED property specifies a URI that identifies the type of relationship between the \sbol{subject} and \sbol{object} \sbol{Component} objects. +The RECOMMENDED values for this property are given in \ref{tbl:restriction_types}. -These restrictions could also include ``sameOrientationAs'' or ``oppositeOrientationAs'' to enable the relative orientation of Component objects whose ComponentDefinition objects lack associated Sequence objects in partial designs (\ref{tbl:restriction_types}). +Note: With regards to SBOL Version 1.1., this is a generalization of former \sbol{SequenceAnnotation} property \external{precedes}. \begin{table}[ht] - \begin{edtable}{tabular}{l} + \begin{edtable}{tabular}{ll} \toprule - \textbf{Restriction Types} \\ + \textbf{Restriction Types} & Subject/Object Relation \\ \midrule - http://sbols.org/v2\#precedes\\ - http://sbols.org/v2\#sameOrientationAs\\ - http://sbols.org/v2\#oppositeOrientationAs\\ + http://sbols.org/v2\#precedes & Subject location is strictly less than object location \\ + http://sbols.org/v2\#sameOrientationAs & Subject and object have equal orientation URIs\\ + http://sbols.org/v2\#oppositeOrientationAs & Object orientation is ``opposite'' of subject\\ \bottomrule \end{edtable} \caption{URI constants for restriction values} \label{tbl:restriction_types} \end{table} +\Dtodo{Should we have nextTo?} - +\paragraph{Serialization} The serialization of \sbol{SequenceConstraint} objects has the following form: \lstsetsbol @@ -532,13 +555,14 @@ \subsubsection{SequenceConstraint} \lstsetsbol \begin{lstlisting} - + \end{lstlisting} - - + +\todo[inline]{In every serialization example, make sure something differs in order from the template, to more intuitively illustrate the unimportance of order} + \subsection{Model} \label{sec:Model} @@ -549,14 +573,20 @@ \subsection{Model} \label{uml:model} \end{center} \end{figure} -\todo[inline]{Move the link text to the section on Module} -SBOL's \sbol{Model} objects are used to link genetic descriptions of biological parts and their interactions to computational models. Each \sbol{Model} object specify the location of the actual content of a qualitative/quantitative model, the language the model is implemented with, the modelling framework and the model's role(s). In this way, there is minimal duplication of standardization efforts and users of SBOL can specify the quantitative function of their ModuleDefinition objects in a well-developed language of their choice. A ModuleDefinition object can link to more than one model since each one can encode different levels of functional detail and play different roles in engineering design. + +SBOL's \sbol{Model} objects are placeholders that point to some external modeling mechanism, with some additional meta-data to enable better reasoning about the contents of that external mechanism. +In this way, there is minimal duplication of standardization efforts and users of SBOL can specify the quantitative function of \sbol{ModuleDefinition} objects in a well-developed language of their choice. + +Each \sbol{Model} object specifies the location of the actual content of a qualitative/quantitative model, the language the model is implemented with, the modelling framework and the model's role(s). \subsubsection*{ The \sbolheading{source} property} -This property has a data type of \external{URI}, and is required to specify the actual location of a qualitative or quantitative model. +This REQUIRED property is a URI that specifies the actual location of a qualitative or quantitative model. \subsubsection*{ The \sbolheading{language} property} -This property has a data type of \external{URI}, and is required to specify the language the model is implemented with. Values for the URIs should be chosen from the EMBRACE Data and Methods (EDAM) ontology where possible. Some of the model types and corresponding URI values are shown in \ref{tbl:model_types}. +This REQUIRED property is a URI that specifies the language the model is implemented with. +Values for this URI are RECOMMENDED to be chosen from the EMBRACE Data and Methods (EDAM) ontology where possible. A few suggested model types and corresponding URI values are shown in \ref{tbl:model_types}. + +\todo[inline]{Made sure EDAM goes in ontology best-practices section} \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -574,7 +604,8 @@ \subsubsection*{ The \sbolheading{language} property} \subsubsection*{ The \sbolheading{framework} property} -This property has a data type of \external{URI} and is required to specify the modelling framework a model is implemented with. Values for this property should be used from the SBO's modelling framework terms where possible (\ref{tbl:model_frameworks}). +This REQUIRED property is a URI that specifies the modelling framework that a model is implemented within. +Values for this URI are RECOMMENDED to be chosen from the SBO's modelling framework terms where possible. A few suggested model frameworks and corresponding URI values are shown in \ref{tbl:model_frameworks}. \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -589,10 +620,14 @@ \subsubsection*{ The \sbolheading{framework} property} \label{tbl:model_frameworks} \end{table} +\todo[inline]{Made sure SBO frameworks goes in ontology best-practices section} + \subsubsection*{ The \sbolheading{role} property} -This property has a data type of \external{URI} and is required to specify what the model is for, such as part or interaction model (\ref{tbl:model_roles}). +This OPTIONAL property is a URI that specifies what the model is for, such as part or interaction model (\ref{tbl:model_roles}). +\Dtodo{What does this actually mean? -JSB} + +\Dtodo{Are we agreeing on this table? Do we want to give more flexibility?} -\todo[inline]{Are we agreeing on this table? Do we want to give more flexibility?} \begin{table}[ht] \begin{edtable}{tabular}{l} \toprule @@ -607,6 +642,8 @@ \subsubsection*{ The \sbolheading{role} property} \label{tbl:model_roles} \end{table} +\subsubsection*{Serialization} + The serialization of \sbol{Model} objects has the following form: \lstsetsbol @@ -626,10 +663,10 @@ \subsubsection*{ The \sbolheading{role} property} - + + - @@ -659,6 +696,9 @@ \subsubsection*{The \sbolheading{roles} property} \subsubsection*{The \sbolheading{models} property} This property is optional and includes identities of associated \sbol{Model} entities. +SBOL's \sbol{Model} objects are used to link genetic descriptions of biological parts and their interactions to computational models. +A ModuleDefinition object can link to more than one model since each one can encode different levels of functional detail and play different roles in engineering design. + \todo[inline]{GM:Is the property called submodules or modules? libSBOLj serialises using the subModule property.} \subsubsection*{The \sbolheading{subModules} property} @@ -908,7 +948,8 @@ \subsubsection{Participation} \subsection {Collection} \label{sec:Collection} -The \sbol{Collection} class is another top level class, which groups together \sbol{TopLevel} objects that have something in common. For example, a \sbol{Collection} object could be the result of a query to find all \sbol{Component} objects that function as promoters or all \sbol{Module} objects that function as inverters in a given repository. +The \sbol{Collection} class is a class that groups together a set of \sbol{TopLevel} objects that have something in common. +For example, a \sbol{Collection} object might contain be the result of a query to find all \sbol{ComponentDefinition} objects that function as promoters,might be a collection \sbol{ModuleDefinition} objects that function as inverters in a given repository. \begin{figure}[ht] \begin{center} diff --git a/sbol2.tex b/sbol2.tex index 7925b3fd..70621913 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -85,6 +85,7 @@ %Commands to format SBOL terms in the document \newcommand{\sbolheading}[1]{\texttt{#1}} \newcommand{\sbol}[1]{\texttt{\hyperref[sec:#1]{#1}}} +\newcommand{\Dtodo}[1]{\todo[inline,color=red]{#1}} %Command to format external terms in the document \newcommand{\external}[1]{\texttt{#1}} @@ -129,7 +130,7 @@ Herbert Sauro & \emph{University of Washington, US}\\[8pt] \end{tabular}\\ \href{mailto:editors@sbolstandard.org}{\sffamily editors@sbolstandard.org} -\todo[inline]{What should be the authorship? -JSB}} +\Dtodo{What should be the authorship? -JSB}} From 670c19d50099c4874340a2e82c482d7790b78eac Mon Sep 17 00:00:00 2001 From: jakebeal Date: Thu, 23 Apr 2015 09:29:12 +0200 Subject: [PATCH 037/317] JSB todos in collection --- model.tex | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/model.tex b/model.tex index 6004ea7b..259a2233 100644 --- a/model.tex +++ b/model.tex @@ -949,7 +949,12 @@ \subsubsection{Participation} \subsection {Collection} \label{sec:Collection} The \sbol{Collection} class is a class that groups together a set of \sbol{TopLevel} objects that have something in common. -For example, a \sbol{Collection} object might contain be the result of a query to find all \sbol{ComponentDefinition} objects that function as promoters,might be a collection \sbol{ModuleDefinition} objects that function as inverters in a given repository. +Some examples of \sbol{Collection} objects: +\begin{itemize} +\item Results of a query to find all \sbol{ComponentDefinition} objects that function as promoters in a repository. +\item A set of \sbol{ModuleDefinition} objects representing a library of NAND gates. +\item A \sbol{ModuleDefinition} for a complex design, and all of the \sbol{ModuleDefinition}, \sbol{ComponentDefinition}, \sbol{Sequence}, and \sbol{Model} objects used to provide its full specification. +\end{itemize} \begin{figure}[ht] \begin{center} @@ -960,7 +965,9 @@ \subsubsection{Participation} \end{figure} \subsubsection*{The member property} -The member property has a data type of \external{URI} and has the \sbol{identity} value of a \sbol{TopLevel} entity. Each collection must have at least one member. +The member property has a data type of URI and has the \sbol{identity} value of a \sbol{TopLevel} entity. A collection may have any number of members, including none. + +\subsubsection*{Serialization} The serialization of \sbol{Collection} objects has the following form: @@ -972,18 +979,20 @@ \subsubsection*{The member property} \end{lstlisting} -The example below shows the serialization of a \sbol{Collection} object. Promoters from a library of constitutive promoters are grouped using the collection example. +\Dtodo{Should we make all of the example URIs compliant?} + +The example below shows the serialization of a \sbol{Collection} object grouping together a library of constitutive promoters. \lstsetsbol \begin{lstlisting} - Anderson Anderson promoters - The Anderson promoter collection + Anderson ... + The Anderson promoter collection From 570a32b829d7fc9acb4a4c704707bf1a40a301d6 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 23 Apr 2015 08:37:15 +0000 Subject: [PATCH 038/317] Update on Overleaf. --- model.tex | 14 +++++--------- uml/identified.png | Bin 3751 -> 5734 bytes vocabulary.tex | 7 +++++++ 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/model.tex b/model.tex index 259a2233..5b8a0777 100644 --- a/model.tex +++ b/model.tex @@ -4,14 +4,13 @@ \section{SBOL Data Model} In this section, we describe the types of biological design data that can belong to an SBOL document and the relationships between these data types. The SBOL data model is specified using Unified Modeling Language (UML) 2.0 diagrams \href{http://www.omg.org/spec/UML/2.0/}{(OMG 2005)}. This section begins with a review of UML diagrams and naming conventions, then each following subsection explains one of the ``top-level'' objects in the SBOL data model. -Complete SBOL examples and best practices when using SBOL can be found in \ref{sec:examples} and \ref{sec:bestpractices}, respectively. +Complete SBOL examples and best practices when using the standard can be found in \ref{sec:examples} and \ref{sec:bestpractices}, respectively. \subsection{Understanding the UML Diagrams} -The types of biological design data modeled by SBOL are commonly referred to as {\em classes}, especially when discussing the details of software implementation. Classes are represented in UML diagrams as rectangles labeled at the top with class names. Classes may be connected to other classes by association properties, which are represented in UML as arrows labeled with data cardinality (i.e., how many instances of that association can exist, as explained below). Finally, the remaining (non-association) properties of a class properties are listed below its name inside the rectangle, and each property is labeled with its data types and cardinality. -\todo[inline]{Need to also explain inheritance arrows} +The types of biological design data modeled by SBOL are commonly referred to as {\em classes}, especially when discussing the details of software implementation. Classes are represented in UML diagrams as rectangles labeled at the top with class names. Classes may be connected to other classes by association properties, which are represented in UML as arrows labeled with data cardinality (i.e., how many instances of that association can exist, as explained below). The remaining (non-association) properties of a class are listed below its name inside the rectangle, and each property is labeled with its data type and cardinality. Finally, classes can inherit the properties of other classes. Inheritance is represented in UML as an arrow with an open-faced, triangular arrowhead that points from the inheriting class to the inherited class. -An association property is a directional relationship between SBOL classes, represented by an arrow. The object at that the arrow comes from has the property, and the object that the arrow points to is the associated object. A diamond at the tail of the arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, which means that associated objects exist independently of objects of the class that has the association property (e.g., a parent and child). In contrast, filled diamonds indicate composite aggregation, also known as a part-whole relationship, in which objects of the associated class cannot exist independently and must be associated with at most one object of the class that has the association property (e.g., the pattern on a piece of clothing). +An association property is a directional relationship between SBOL classes, represented by an arrow. The object that the arrow comes from has the property, and the object that the arrow points to is the associated object. A diamond at the tail of the arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, which means that associated objects exist independently of objects of the class that has the association property. In contrast, filled diamonds indicate composite aggregation, also known as a part-whole relationship, in which objects of the associated class cannot exist independently and must be associated with at most one object of the class that has the association property. %For example, it will later be shown how objects of the \sbol{SequenceAnnotation} class must associated with an object of the \sbol{ComponentDefinition} class (and only that object). All SBOL properties are labeled with one of several restrictions on data cardinality. These are: @@ -61,15 +60,12 @@ \subsection{Data Types} \label{uml:identified} \end{center} \end{figure} -\todo[inline]{Diagram needs to include annotation} -All SBOL-defined classes are directly or indirectly derived from the \sbol{Identified} class. This inheritance enables SBOL objects to be identified using unique URIs that may refer to relative locations within an SBOL document or URLs that refer to locations on the World Wide Web. This class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, and \sbol{version}. -(\ref{uml:identified}), as well as annotations (described below in their own section). -\todo[inline]{Is there any example SBOL entity that does not derive from Identified?} +All SBOL-defined classes are directly or indirectly derived from the \sbol{Identified} class. This inheritance enables SBOL objects to be identified using unique \external{URI}s that may refer to relative locations within an SBOL document or URLs that refer to locations on the World Wide Web. As shown in \ref{uml:identified}, this class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, \sbol{version}, and \sbol{annotations}. The latter property is described separately in \ref{sec:annotations}. \subsubsection*{The \sbolheading{identity} property} \label{sec:identity} -This property is required by all \sbol{Identified} objects and has a datatype of \external{URI}. This \external{URI} serves to uniquely identify an SBOL object (as in SBOL Version 1.1). The \sbol{identity} property can be used to point to other objects in the same SBOL document or resources on the Web. Although most SBOL properties are defined under the SBOL namespace, because unique identity interacts with the RDF specification, this property is defined under the RDF namespace using the following term: +This property is required by all \sbol{Identified} objects and has a datatype of \external{URI}. This \external{URI} serves to uniquely identify an SBOL object. The \sbol{identity} property can be used to point to other objects in the same SBOL document or resources on the Web. Although most SBOL properties are defined under the SBOL namespace, because unique identity interacts with the RDF specification, this property is defined under the RDF namespace using the following term: \external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. diff --git a/uml/identified.png b/uml/identified.png index c20a69ecc9c26a9f4fb1417a59af54ab33c95b0c..b865092e7597a4c5346a63e6dbf0146ab6dcb4f8 100644 GIT binary patch literal 5734 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 literal 3751 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 Date: Thu, 23 Apr 2015 10:37:39 +0200 Subject: [PATCH 039/317] JSB comments on annotations --- model.tex | 53 ++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/model.tex b/model.tex index 259a2233..1196e3bd 100644 --- a/model.tex +++ b/model.tex @@ -1002,30 +1002,49 @@ \subsubsection*{Serialization} -\subsection{Application Specific Data - Annotations} +\subsection{Extending the SBOL Representation: Annotations} \label{sec:annotations} -\todo[inline]{Explain that the two types of annotation correspond to top-level vs. part/whole properties} +SBOL does not attempt to represent all information about a biological system, since many things do not yet have a clear ``right way'' to be represented, such as design intent, biological context, or performance data. +Instead, SBOL allows the embedding of application specific data that are not captured by the SBOL standard. +Such data are optional, but can be computationally generated and exchanged via SBOL documents without getting lost. + +To do this, SBOL provides an ``annotation'' mechanism for attaching arbitrary information to SBOL objects, which allows SBOL models to be connected with any other models in an extensible manner. +In particular, three models are supported for connecting the SBOL model with other, possibly application-specific models: +\begin{itemize} +\item Information that is ``part'' of an SBOL object (i.e., a ``filled diamond'' relationship) is annotated simply by adding non-conflicting properties and custom identity entries to an SBOL object. An example might be source information about the registry from which a \sbol{ComponentDefinition} was imported. +\item Information that is an independent object is annotated by wrapping it inside of a \sbol{GenericTopLevel} object. An example might be a data sheet describing the performance of a \sbol{ModuleDefinition} in some particular context. +\item Conversely, rather than embedding external objects in SBOL, SBOL objects can also be linked from or embedded inside of other data models. The only requirement is that some URI resolution mechanism must be available that allows the links between SBOL objects thus separated from one another to be followed when needed. +\end{itemize} + +\todo[inline]{Make sure we explain about annotations up in the motivation and overview, since it's really, really important.} \subsubsection{Annotating SBOL objects} -SBOL allows embedding application specific data that are not captured by the SBOL standard. Such data are optional, can be computationally generated and exchanged via SBOL documents without getting lost. These custom data are stored in the form of annotations, providing informative metadata about entities in an SBOL document. -Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. Property names are specified by qualified names as \external{URI}s, each formed of a namespace and a local name. Values can be \external{URI}s or \external{Literal}s (for example, \external{String}, \external{Integer}, \external{Double}, \external{Boolean}) or custom \sbol{identity} entities initialized with application specific types. These custom \sbol{identity} entities can further be annotated with the scheme described here. These custom entities are either serialized within an SBOL entity being annotated, or referenced using an \external{URI} annotation and embedded within the the annotated entity's parent.%TODO Make sure if we have a choice here! +\Dtodo{URI: plain or courier?} + +Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. +Property names are specified by qualified names as \external{URI}s, each formed of a namespace and a local name. +Values can be \external{URI}s or \external{Literal} data (for example, \external{String}, \external{Integer}, \external{Double}, \external{Boolean}) or custom \sbol{Identified} entities initialized with application specific types. +These custom \sbol{Identified} entities can further be annotated with the scheme described here. These custom entities are either serialized within an SBOL entity being annotated, or referenced using an \external{URI} annotation and embedded within the the annotated entity's parent. +\Dtodo{Make sure if we have a choice here!} \begin{figure}[!ht] \begin{center} - -%Consider putting Identified, uRI, and Literal on the bottom so that inheritance arrows point in the same direction as they do in other diagrams. Another consideration for maintaing consistency with the other diagrams is to add arrow heads to the opposite ends of the black diamond relations. - Nic - \includegraphics[scale=0.6]{uml/identified_annotations} \caption[]{Annotating SBOL's Identified entities with application specific data.} \label{uml:identified_annotations} \end{center} \end{figure} +\Dtodo{I think this should actually be: add any object here of your own custom class (which MUST NOT use the SBOL namespace), not ``make chains of identified''} +\Dtodo{Is this figure how the annotations are actually handled in libSBOLj?} +\Dtodo{Consider putting Identified, uRI, and Literal on the bottom so that inheritance arrows point in the same direction as they do in other diagrams. Another consideration for maintaing consistency with the other diagrams is to add arrow heads to the opposite ends of the black diamond relations. - Nic} - Each annotation is serialised as an RDF subject-property-object triplet in which the subject is the SBOL object being annotated, the property is the annotation name, and the object is the annotation value. Simple values URIs are serialised as RDF literals, and URI values are represented with the \external{\path{http://www.w3.org/1999/02/22-rdf-syntax-ns#resource}} RDF property. If the annotation value is another complex object then the object is embedded as an RDF resource, which can further be annotated similarly.%TODO If we allow URI reference of a custom object stored, then update this paragraph +Each annotation is serialised as an RDF subject-property-object triplet in which the subject is the SBOL object being annotated, the property is the annotation name, and the object is the annotation value. Simple values URIs are serialised as RDF literals, and URI values are represented with the \external{\path{http://www.w3.org/1999/02/22-rdf-syntax-ns#resource}} RDF property. If the annotation value is another complex object then the object is embedded as an RDF resource, which can further be annotated similarly. +\Dtodo{If we allow URI reference of a custom object stored, then update this paragraph} -The ComponentDefinition example for a promoter below shows how annotations can be added to SBOL objects. Annotations are added using the relevant information from the Parts Registry. Annotation property names are qualified with the \external{http://www.partsregistry.org/} namespace, which is prefixed using \external{pr}. The first annotation is named as \external{pr:group}, indicating the iGEM group designing the promoter, and has a \external{String} value. The second \external{pr:experience} annotation has a \external{URI} value and is serialised as an RDF resource pointing to the information Web page on the Parts Registry for the promoter. The \external{pr:information} property represents a complex annotation which is a type of \external{pr:Information} and includes information about the regulatory details of the promoter using Parts Registry categories. +\paragraph{Serialization} +The ComponentDefinition example for a promoter serialized below shows how annotations can be added to SBOL objects. Annotations are added using the relevant information from the Parts Registry. Annotation property names are qualified with the \external{http://www.partsregistry.org/} namespace, which is prefixed using \external{pr}. The first annotation is named as \external{pr:group}, indicating the iGEM group designing the promoter, and has a \external{String} value. The second \external{pr:experience} annotation has a \external{URI} value and is serialised as an RDF resource pointing to the information Web page on the Parts Registry for the promoter. The \external{pr:information} property represents a complex annotation which is a type of \external{pr:Information} and includes information about the regulatory details of the promoter using Parts Registry categories. \begin{figure} [ht] \lstsetsbol @@ -1056,8 +1075,12 @@ \subsubsection{Annotating SBOL objects} \subsubsection{GenericTopLevel} \label{sec:GenericTopLevel} -SBOL documents can also be annotated at the top level. SBOL's \sbol{GenericTopLevel} is a top-level entity that can include a set of annotations as described above. Entities that are at the top-level and are not recognised by the SBOL standard are loaded into these top level entities. These \sbol{GenericTopLevel} entities may have multiple type information and can be used safely by tools to exchange custom data. As with any other top level entities, \sbol{GenericTopLevel} entities may include SBOL properties such as \sbol{name}, \sbol{description}, \sbol{displayId} and so on. The type of the generic entity is indicated using the RDF's \external{type} property. -%TODO: Is it possible to have multiple types for GenericTopLevel elements? If so, update the diagram. +SBOL documents can also be annotated at the top level. +SBOL's \sbol{GenericTopLevel} is a top-level entity whose only purpose is to include a set of annotations as described above. +Entities that have independent existence (i.e., would be another ``top level'' class) and are not recognised by the SBOL standard are loaded into these top level entities. +These \sbol{GenericTopLevel} entities can thus be safely used by tools to exchange non-SBOL data embedded separately within SBOL. +As with any other top level entities, \sbol{GenericTopLevel} entities may include SBOL properties such as \sbol{name}, \sbol{description}, \sbol{displayId} and so on. The type of data found in the generic entity is indicated using the standard \external{rdf:type} property. +\Dtodo{Is it possible to have multiple types for GenericTopLevel elements? If so, update the diagram.} \begin{figure}[ht] \begin{center} @@ -1067,7 +1090,11 @@ \subsubsection{GenericTopLevel} \end{center} \end{figure} -The example below shows adding a datasheet object to a SBOL document using the \sbol{GenericTopLevel} class. The J23119 promoter example is annotated with the URI of a top Level Datasheet object. The annotation properties are defined using the custom \external{\path{http://www.myapp.org/}} namespace and the \external{myapp} prefix. The datasheet object, with the data type of \external{myapp:Datasheet}, is accessed using the \external{URI} value specified by the \external{myapp:characterizationData} property of the promoter component definition. The datasheet object is further annotated with the transcription rate and the URI for the actual characterization data using the \external{myapp:transcriptionRate} and \external{myapp:characterizationData} properties respectively. +The example below shows how a datasheet object can be added to an SBOL document using the \sbol{GenericTopLevel} class. +The J23119 promoter example is annotated with the URI of a top Level Datasheet object, here defining the annotation properties using the custom \external{\path{http://www.myapp.org/}} namespace and the \external{myapp} prefix. +The datasheet object, with the data type of \external{myapp:Datasheet}, is accessed using the \external{URI} value specified by the \external{myapp:characterizationData} property of the promoter component definition. +The datasheet object is further annotated with the transcription rate and the URI for the actual characterization data using the \external{myapp:transcriptionRate} and \external{myapp:characterizationData} properties respectively. +Finally, this data sheet is linked from the component is describes using an annotation with a \external{myapp:datasheet} property whose value is the data sheet's URI. \begin{figure}[ht] \lstsetsbol @@ -1090,4 +1117,4 @@ \subsubsection{GenericTopLevel} \end{lstlisting} \label{ser:GenericTopLevel} -\end{figure} \ No newline at end of file +\end{figure} From 26dee82d35fa1bc8d9ef39e61a39df9082f46551 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 23 Apr 2015 08:58:40 +0000 Subject: [PATCH 040/317] Update on Overleaf. --- model.tex | 2 +- overview.tex | 12 ++++++++++++ purpose.tex | 4 ++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/model.tex b/model.tex index 8301fca2..21e702ad 100644 --- a/model.tex +++ b/model.tex @@ -1113,4 +1113,4 @@ \subsubsection{GenericTopLevel} \end{lstlisting} \label{ser:GenericTopLevel} -\end{figure} +\end{figure} \ No newline at end of file diff --git a/overview.tex b/overview.tex index 4b872e02..9972736c 100644 --- a/overview.tex +++ b/overview.tex @@ -28,6 +28,18 @@ \section{Overview of SBOL} SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. \todo[inline]{This needs to be clarified. Do we really want to explain MapsTo here? -JSB} + +\todo[inline]{Why is it important to separate definitions from instantiations?} + +\todo[inline]{The motivation for separating structural and functional considerations is not explained. Which class names are structural, which class names are functional, and how are the two connected? Do all structural components require a functional counterpart? If not, explain why only a subset of structural components would have functional definitions.} + +\todo[inline]{As a person reading about SBOL2 for the first time, I rank this as the most important section. This is your chance to concisely tell someone who won't read the whole document about the take-home messages for the new data model.} + +\todo[inline]{Why are URI's needed for Components? Why not just for ComponentDefinitions? Is there anything in SBOL that does not require a URI?} + + +\todo[inline]{where did the XML-RDF section go?} + % \todo[inline]{I would suggest a more complete and more explicit mapping of vocabulary to the toggle switch example. -bder} % The same toggle switch is now displayed using two LacI and TetR inverter submodules in figure \ref{images:toggleswitch_modular}. The LacI inverter uses LacI as input and produces the TetR output, and the TetR inverter uses TetR as input and produces the LacI output. These inputs and outputs are mapped in a parent module. \ No newline at end of file diff --git a/purpose.tex b/purpose.tex index b9fe5490..ec250132 100644 --- a/purpose.tex +++ b/purpose.tex @@ -13,6 +13,10 @@ \section{Purpose} To help address these challenges, the Synthetic Biology Open Language (SBOL) introduces a standardized file format for the electronic exchange of biological designs and a standardized data model for the reproducible description of essential design details. Ultimately, SBOL is intended to speed up the research and development of designed biological systems by enhancing the exchange and reproducibility of biological designs between different labs. \todo[inline]{it's not about a file format, it's about a representation; the fact that this is a file format is incidental -JSB} + +\todo[inline]{Motivate/discuss URI's?} + + \todo[inline]{Should the comparison with 1.1 really be there? This needs revision to be stand-alone, and right now it's basically an extract of the SBOL2 paper -JSB} Version 1.1 of the SBOL standard focused on representing the structural aspects of genetic designs. To serve as an effective medium for the computational exchange of genetic designs, SBOL must be extended to capture more aspects of a designed system, including both structural and functional information, and the composition of complex structural and functional designs by combining simpler parts. The SBOL data model proposed in this specification provides for addressing the most pressing needs for expanding SBOL Version 1.1. From 24b948ace64c767e7cc1a9df505fbc4953251c97 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 23 Apr 2015 09:32:35 +0000 Subject: [PATCH 041/317] Update on Overleaf. --- model.tex | 2 +- overview.tex | 4 +++- purpose.tex | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/model.tex b/model.tex index 21e702ad..229d8702 100644 --- a/model.tex +++ b/model.tex @@ -65,7 +65,7 @@ \subsection{Data Types} \subsubsection*{The \sbolheading{identity} property} \label{sec:identity} -This property is required by all \sbol{Identified} objects and has a datatype of \external{URI}. This \external{URI} serves to uniquely identify an SBOL object. The \sbol{identity} property can be used to point to other objects in the same SBOL document or resources on the Web. Although most SBOL properties are defined under the SBOL namespace, because unique identity interacts with the RDF specification, this property is defined under the RDF namespace using the following term: +This property is required by all \sbol{Identified} objects and has a datatype of \external{URI}. This \external{URI} serves to uniquely identify an SBOL object. The \sbol{identity} property can be used to point to other objects in the same SBOL document or to resources on the Web. Although most SBOL properties are defined under the SBOL namespace, the \sbol{identity} property is already adequately described RDF specification, this property is defined under the RDF namespace using the following term: \external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. diff --git a/overview.tex b/overview.tex index 9972736c..c195a088 100644 --- a/overview.tex +++ b/overview.tex @@ -21,6 +21,9 @@ \section{Overview of SBOL} \todo[inline]{need to make it clear that it includes DNA, RNA, and protein, also smooth the text --JSB} +In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} + + SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. \todo[inline]{Need to also explain annotation --JSB} @@ -35,7 +38,6 @@ \section{Overview of SBOL} \todo[inline]{As a person reading about SBOL2 for the first time, I rank this as the most important section. This is your chance to concisely tell someone who won't read the whole document about the take-home messages for the new data model.} -\todo[inline]{Why are URI's needed for Components? Why not just for ComponentDefinitions? Is there anything in SBOL that does not require a URI?} \todo[inline]{where did the XML-RDF section go?} diff --git a/purpose.tex b/purpose.tex index ec250132..becf9e65 100644 --- a/purpose.tex +++ b/purpose.tex @@ -14,7 +14,7 @@ \section{Purpose} \todo[inline]{it's not about a file format, it's about a representation; the fact that this is a file format is incidental -JSB} -\todo[inline]{Motivate/discuss URI's?} +\todo[inline]{Explicit and unambiguous data model, promotes global data exhchange, allows flexible annotation with meta data while associating an authority with that annotation.} \todo[inline]{Should the comparison with 1.1 really be there? This needs revision to be stand-alone, and right now it's basically an extract of the SBOL2 paper -JSB} From 0295ad38d4fd1fbb02e82569799d4c0c6a22baef Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 23 Apr 2015 09:32:45 +0000 Subject: [PATCH 042/317] Update on Overleaf. --- overview.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overview.tex b/overview.tex index c195a088..07da53b7 100644 --- a/overview.tex +++ b/overview.tex @@ -21,7 +21,7 @@ \section{Overview of SBOL} \todo[inline]{need to make it clear that it includes DNA, RNA, and protein, also smooth the text --JSB} -In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} +In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. From 72394b01058d19ac7446180b0be39e444506fdc7 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Thu, 23 Apr 2015 11:32:41 +0200 Subject: [PATCH 043/317] color by priority --- examples_model.tex | 4 ++- examples_serialization.tex | 4 +-- history.tex | 4 +-- model.tex | 73 ++++++++++++++++---------------------- overview.tex | 54 +++++++++++++++++++++------- practices.tex | 33 +++++++++++------ purpose.tex | 10 +++--- sbol2.tex | 57 ++++++++++------------------- serialization.tex | 12 +++---- vocabulary.tex | 9 +---- 10 files changed, 132 insertions(+), 128 deletions(-) diff --git a/examples_model.tex b/examples_model.tex index 45b5a793..bda01506 100644 --- a/examples_model.tex +++ b/examples_model.tex @@ -5,6 +5,8 @@ \section{Data Model Examples} %\subsection{LacI/TetR Toggle Switch} +\Ctodo{I would suggest a more complete and more explicit mapping of vocabulary to the toggle switch example. -bder} + This section illustrates how to use the SBOL data model by specifying the design of a LacI/TetR toggle switch similar to those constructed in \cite{Gardner2000}. This design is visualized in \ref{images:toggleswitch_modular}. \begin{figure}[ht] @@ -63,7 +65,7 @@ \section{Data Model Examples} % Each \sbol{ModuleDefinition} also contains the \sbol{FunctionalComponent}s that participate in \sbol{Interaction}s and are defined by the same \sbol{ComponentDefinition}s as the parallel \sbol{Component}s in the structural hierarchy of the toggle switch. Finally, \sbol{MapsTo} entities are used to refine which \sbol{FunctionalComponent}s of the functional hierarchy are identical or map them to \sbol{Component}s in the structural hierarchy. -\todo[inline]{ComponentDefinition.types in the following figure are not consistent with the list of BioPax ontological terms described previously in the Data Model section} +\Dtodo{ComponentDefinition.types in the following figure are not consistent with the list of BioPax ontological terms described previously in the Data Model section} % The first use case is to indicate with greater fidelity how a module describes the function of a composite component, namely by asserting that particular component instantiations within the module correspond to particular component instantiations within the component. diff --git a/examples_serialization.tex b/examples_serialization.tex index 85dc00ce..a3b1ff90 100644 --- a/examples_serialization.tex +++ b/examples_serialization.tex @@ -5,7 +5,7 @@ \subsection{PoPS Receiver} This example shows the serialization of the PoPS Receiver device designed by Canton and co-workers. Details of the device can be found at http://parts.igem.org/Part:BBa\_F2620. -\todo[inline]{Add more description and ref} +\LDtodo{Add more description and ref} \label{ser:F2620} \lstsetsbol @@ -172,7 +172,7 @@ \subsection{PoPS Receiver} \end{lstlisting} \subsection{Toggle Switch} -\todo[inline]{Explain the example} +\Ctodo{Explain the example} \label{ser:toggleswitch} \lstsetsbol diff --git a/history.tex b/history.tex index a5404e3d..6ac6b941 100644 --- a/history.tex +++ b/history.tex @@ -7,6 +7,6 @@ \section{History and Acknowledgements} Contributors to this work include: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University). -\todo[inline]{Get lots more authors to sign on} +\Ctodo{Get lots more authors to sign on} -\todo[inline]{Make Herbert write something nice about histor to add here -JSB} \ No newline at end of file +\LDtodo{Make Herbert write something nice about history to add here -JSB} diff --git a/model.tex b/model.tex index 21e702ad..a5b810e3 100644 --- a/model.tex +++ b/model.tex @@ -31,25 +31,18 @@ \subsection{Understanding the UML Diagrams} \subsection{Naming Conventions} -\todo[inline]{need to put in typography and upper case vs. camel case, etc} +\Ctodo{need to put in typography and upper case vs. camel case, etc.} Within the SBOL data model, all properties are given a singular or plural name in accordance with their data cardinalities. The forms of these names follow the usual rules of grammar. For example, \sbol{sequenceAnnotation} is the singular form of \sbol{sequenceAnnotation}s. Within the RDF serialization of SBOL, however, SBOL properties are always given singular names. The serialization does not use RDF collections to represent multiple values of an SBOL property. Hence, if a SBOL property has five values, then its serialization contains five RDF triples with singular predicate names. -\todo[inline]{Why, why, why are these two different?} - -Within an implementing Object-Oriented (OO) API, SBOL properties should be mapped to member accessors that are similarly named and that return idiomatic representations of these properties. For example, a Java implementation would use common Java idioms. In this case, the member accessor for an optional SBOL property could return a Java primitive value, Java object, or null, while the accessor for a multi-valued SBOL property could return a Java \external{Collection}. In general, OO member accessors for multi-valued SBOL properties should never return null. -\todo[inline]{I think this is a best practice, and not part of the data model.} - -As another example, a relational implementation of the SBOL API would store the properties and associations a mixture of data fields and references via foreign keys. The fields in individual tables will correspond to the `arrowhead' end of an association (in reverse to the direction in the RDF and OO representations), and the name may be modified to reflect this change in directionality. For example, the \sbol{sequence} association between a \sbol{ComponentDefinition} and \sbol{Sequence} would be represented by a foreign key field on the \sbol{Sequence} table that references a row in the \sbol{ComponentDefinition} table, and it may be named \external{sequenceOf}. -\todo[inline]{What is this even about? Is it another best practice?} +\Dtodo{Why, why, why are these two different?} \subsection{Data Types} -\todo[inline]{we use String, Integer, URI, Literal (these are from some W3C or XSD or whatever thing), and the classes below} -\todo[inline]{Give a forward pointer to RECOMMENDED best-practices for compliant URIs} +\Ctodo{we use String, Integer, URI, Literal (these are from some W3C or XSD or whatever thing), and the classes below} +\Ctodo{Give a forward pointer to RECOMMENDED best-practices for compliant URIs} -\todo[inline]{Need to consider the order in which the classes are presented} \subsection {Identified} \label{sec:Identified} @@ -69,13 +62,11 @@ \subsubsection*{The \sbolheading{identity} property} \external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. -\todo[inline]{Should compliant URIs, per the paper, be required or just recommended as a best practice?} - \subsubsection*{The \sbolheading{persistentIdentity} property} \label{sec:persistentIdentity} The \sbol{persistentIdentity} property is optional and also has a datatype of \external{URI}. This property is used to declare that a set of SBOL objects refer to the ``same'' thing (by virtue of having the same persistent identity), e.g., a sequence of improvements on a design. This persistent identity can then be used to return the most up-to-date version of a SBOL object. -\todo[inline]{consider not putting the toggle switch example at the end, but rather weaving references to the toggle switch into each subsection} +\Dtodo{consider not putting the toggle switch example at the end, but rather weaving references to the toggle switch into each subsection} \subsubsection*{The \sbolheading{version} property} @@ -93,7 +84,7 @@ \subsubsection*{The \sbolheading{version} property} \label{uml:documented} \end{center} \end{figure} -\todo[inline]{Reorder displayId and name} +\Ctodo{Reorder displayId and name} \subsubsection*{The \sbolheading{name} property} \label{sec:name} @@ -106,7 +97,7 @@ \subsubsection*{The \sbolheading{displayId} property} In particular, displayId string MUST be compliant with type \external{http://www.w3.org/TR/xmlschema-2/\#NCName} -\todo[inline]{Need to add sanitization to libSBOLj} +\Dtodo{Confirm sanitized URIs; need to add sanitization to libSBOLj} \subsubsection*{The \sbolheading{description} property} \label{sec:description} @@ -125,7 +116,7 @@ \subsubsection*{The \sbolheading{description} property} \end{center} \end{figure} -\todo[inline]{Make the left-right order in this figure match the order of the following sections} +\Ctodo{Make the left-right order in this figure match the order of the following sections} @@ -144,15 +135,15 @@ \subsection{Sequence} \subsubsection*{The \sbolheading{elements} property} \label{sec:elements} -Required. A \external{String} of characters that represent the constituents of biological molecule, for example nucleic acid symbols for DNA molecules. +A REQUIRED \external{String} of characters that represent the constituents of biological molecule, for example nucleic acid symbols for DNA molecules. -\todo[inline]{use MUST language, give non-DNA example too -JSB} +\Ctodo{give non-DNA example too -JSB} \subsubsection*{The \sbolheading{encoding} property} \label{sec:encoding} Required. \sbol{Sequence} objects identify their type of encoding with a \external{URI}. For example, a \sbol{Sequence} object that encodes a DNA sequence would have an \external{IUPAC DNA} encoding, while a \sbol{Sequence} object that encodes the chemical structure of glucose might have a \external{simplified molecular-input line-entry system (SMILES)} encoding (\ref{tbl:sequence_encodings}). -\todo[inline]{Are these required or recommended?} +\Dtodo{Are these required or recommended?} %A Summary of letters for nucleic acids and aminoacids \begin{table}[ht] @@ -168,7 +159,7 @@ \subsubsection*{The \sbolheading{encoding} property} \caption{URIs for the encoding property and the corresponding ComponentDefiniton types, which are BioPAX terms.} \label{tbl:sequence_encodings} \end{table} -\todo[inline]{BioPAX terms unclear} +\Dtodo{BioPAX terms unclear} The serialization of \sbol{Sequence} objects has the following form: \lstsetsbol @@ -208,7 +199,7 @@ \subsection{ComponentDefinition} -\todo[inline]{Examples of ontologies for non-molecular type gs (eg, light)...?} +\LDtodo{Examples of ontologies for non-molecular type gs (eg, light)...?} \subsubsection*{The \sbolheading{types} property} \label{sec:types} Every \sbol{ComponentDefinition} MUST have at least one \sbol{types} \external{URI} that identifies a term from an appropriate ontology, such as the BioPAX ontology (some recommended examples are given in \ref{tbl:componentdefinition_types}) or the ontology of Chemical Entities of Biological Interest (ChEBI). A type URI documents the category of biochemical or physical entity (for example DNA, protein, or RNA) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. If a \sbol{ComponentDefinition} object has multiple type URIs, then they MUST identify synonymous terms. @@ -228,13 +219,11 @@ \subsubsection*{The \sbolheading{types} property} \label{tbl:componentdefinition_types} \end{table} - -\todo[inline]{Should roles and types be optional or required?} \subsubsection*{The \sbolheading{roles} property} \label{sec:roles} The \sbol{roles} of a ComponentDefinition object MUST contain at least one URI. These identify ontology terms that clarify a \sbol{ComponentDefinition} object's potential function in a biological context. For example, a \sbol{ComponentDefinition} for a DNA component might have a role of ``promoter'' or ``terminator,'' terms taken from the Sequence Ontology (SO). A ComponentDefinition object for a protein, on the other hand, might have a role of ``transcription factor'' or ``protease.'' -\todo[inline]{Taken from what ontology?} +\LDtodo{Taken from what ontology?} The \sbol{roles} are analogous to the \external{type} of a \external{DnaComponent} object in SBOL Version 1.1. @@ -253,19 +242,19 @@ \subsubsection*{The \sbolheading{sequence} property} \subsubsection*{The \sbolheading{sequenceConstraint} property} \label{sec:sequenceConstraint} -\todo[inline]{This needs to be explained} +\Ctodo{This needs to be explained} \subsubsection*{The \sbolheading{sequenceAnnotation} property} \label{sec:sequenceAnnotation} -\todo[inline]{This appears to be completely obsolete. Does this property even still exist? -JSB} +\Ctodo{This needs to be better explained. -JSB} A \sbol{ComponentDefinition} object can define its structure by linking to objects that belong to the Component, Sequence, SequenceAnnotation, and SequenceConstraint classes. These classes are described below. \subsubsection*{Serialization} The parents of the \sbol{ComponentDefinition} class are \sbol{TopLevel} and, transitively, \sbol{Documented} and \sbol{Identified}. As a result, inherited properties are serialised as explained for these parent classes. The sequence property of a \sbol{ComponentDefinition} object includes a URI to a \sbol{Sequence} object and this URI is serialized as an \external{rdf:resource}. The \sbol{types} property may include a collection of type URIs and is serialized as an implicit collection, ignoring the property name ``types''. The \sbol{roles} property is also similarly serialized as an implicit collection of sbol:roles properties. -\todo[inline]{Add the serialization descriptions to parent classes.} +\Ctodo{Add the serialization descriptions to parent classes; make sure everything has its serialization} \lstsetsbol \begin{lstlisting} @@ -283,7 +272,7 @@ \subsubsection*{Serialization} [\emph{elements}] \end{lstlisting} -\todo[inline]{what is this listing? -JSB} +\Dtodo{Have we explained anywhere how to interpret these template listings?} The example below shows the serialization of a simple \sbol{ComponentDefinition} object. The \external{DnaRegion} from BioPAX and \external{CHEBI:4705} from CHEBI are used to indicate the type of the biological entity as a DNA molecule. Its role is specified via the generic \external{SO:0000167} (\external{promoter}) and more specific \external{SO:0000613} (\external{bacterial\_RNApol\_promoter}) terms. @@ -328,7 +317,7 @@ \subsubsection{ComponentInstance} \paragraph{The \sbolheading{mapsTo} property} \label{sec:mapsTo} -\todo[inline]{Need to make sure all MapsTo statements are correct} +\Ctodo{Need to make sure all MapsTo statements are correct} The \sbol{mapsTo} property links \sbol{Component} objects (both Components and FunctionalComponents) together within a larger design, indicating that they refer to the same entity. The third data field, ``mappings'', is a set of MapsTo objects that link between other ComponentInstance objects at the same level of the design hierarchy as well as other ComponentInstance objects that are lower in the design hierarchy, thereby composing these objects with greater specificity (see first module example). @@ -375,7 +364,7 @@ \subsubsection{SequenceAnnotation} \paragraph{The \sbolheading{component} property} \sbol{SequenceAnnotation} objects MAY use this property to link location information to a \sbol{Component} object, by specifying its URI. -\todo[inline]{Separate serialization better} +\Ctodo{Separate serialization better - give paragraph/subsubsec headers} The serialization of SequenceAnnotation objects MUST be carried out according to the template below. In this template, A\_LOCATION\_SUBCLASS represents one of the Location subclasses. \lstsetsbol @@ -389,7 +378,7 @@ \subsubsection{SequenceAnnotation} \end{lstlisting} -\todo[inline]{Make sure it's clear these templates specify content, not order} +\Ctodo{Make sure it's clear these templates specify content, not order} @@ -482,8 +471,8 @@ \subsubsection{Location} \sbol{GenericLocation} is included as a hook for extensions, e.g., for describing locations in non-sequential structures. -\todo[inline]{Need serialization examples for MultiRange, Cut, and GenericLocation} -\todo[inline]{Make sure that every property has a section label so that it hyperlinks correctly} +\Ctodo{Need serialization examples for MultiRange, Cut, and GenericLocation} +\Ctodo{Make sure that every property has a section label so that it hyperlinks correctly} \subsubsection{SequenceConstraint} \label{sec:SequenceConstraint} @@ -504,7 +493,7 @@ \subsubsection{SequenceConstraint} \label{sec:subject} This REQUIRED property specifies the URI \sbol{identity} of the first \sbol{Component} object in the relation. -\todo[inline]{Check to make sure we say URI identity and not just URI everywhere that we mean an identity} +\Dtodo{Check to make sure we say URI identity and not just URI everywhere that we mean an identity} \paragraph{The \sbolheading{object} property} \label{sec:object} @@ -557,7 +546,7 @@ \subsubsection{SequenceConstraint} \end{lstlisting} -\todo[inline]{In every serialization example, make sure something differs in order from the template, to more intuitively illustrate the unimportance of order} +\Dtodo{In every serialization example, make sure something differs in order from the template, to more intuitively illustrate the unimportance of order} \subsection{Model} \label{sec:Model} @@ -582,7 +571,7 @@ \subsubsection*{ The \sbolheading{language} property} This REQUIRED property is a URI that specifies the language the model is implemented with. Values for this URI are RECOMMENDED to be chosen from the EMBRACE Data and Methods (EDAM) ontology where possible. A few suggested model types and corresponding URI values are shown in \ref{tbl:model_types}. -\todo[inline]{Made sure EDAM goes in ontology best-practices section} +\LDtodo{Make sure EDAM goes in ontology best-practices section} \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -616,7 +605,7 @@ \subsubsection*{ The \sbolheading{framework} property} \label{tbl:model_frameworks} \end{table} -\todo[inline]{Made sure SBO frameworks goes in ontology best-practices section} +\LDtodo{Made sure SBO frameworks goes in ontology best-practices section} \subsubsection*{ The \sbolheading{role} property} This OPTIONAL property is a URI that specifies what the model is for, such as part or interaction model (\ref{tbl:model_roles}). @@ -671,7 +660,7 @@ \subsubsection*{Serialization} -\todo[inline]{This section has not been edited much compared to other sections. We need to explain classes and their properties a bit more in detail.} +\Dtodo{This section has not been edited much compared to other sections. We need to explain classes and their properties a bit more in detail.} \subsection{ModuleDefinition} \label{sec:ModuleDefinition} @@ -908,7 +897,7 @@ \subsubsection{Interaction} \end{lstlisting} -\todo[inline]{Can an interaction have serial participants?} +\Dtodo{Can an interaction have serial participants?} \begin{figure}[ht] \begin{center} @@ -1013,11 +1002,11 @@ \subsection{Extending the SBOL Representation: Annotations} \item Conversely, rather than embedding external objects in SBOL, SBOL objects can also be linked from or embedded inside of other data models. The only requirement is that some URI resolution mechanism must be available that allows the links between SBOL objects thus separated from one another to be followed when needed. \end{itemize} -\todo[inline]{Make sure we explain about annotations up in the motivation and overview, since it's really, really important.} +\Ctodo{Make sure we explain about annotations up in the motivation and overview, since it's really, really important.} \subsubsection{Annotating SBOL objects} -\Dtodo{URI: plain or courier?} +\LDtodo{URI: plain or courier?} Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. Property names are specified by qualified names as \external{URI}s, each formed of a namespace and a local name. diff --git a/overview.tex b/overview.tex index 9972736c..51652d56 100644 --- a/overview.tex +++ b/overview.tex @@ -2,7 +2,7 @@ \section{Overview of SBOL} % % ----------------------------------------------------------------------------- Typically, information about a genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. Interactions between these constituents are then used to construct biologically plausible designs. -\todo[inline]{reword for better clarity and coverage of the model -JSB} +\Ctodo{reword for better clarity and coverage of the model -JSB} % In the figure below, a simple toggle switch system is displayed, in which LacI and TetR repress each other's genes transcriptionally. The toggling of the system is controlled by adding IPTG to deactivate LacI, and ATC to deactivate TetR. The components of the system includes genetic elements, proteins, small molecules. @@ -13,33 +13,61 @@ \section{Overview of SBOL} \label{images:overview} \end{center} \end{figure} -\todo[inline]{Put a caption on the figure -JSB} -\todo[inline]{Remove SBML from the figure -JSB} +\Ctodo{Put a caption on the figure -JSB} +\LDtodo{Remove SBML from the figure -JSB} The \sbol{Sequence} is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. Therefore, both experimental work and theoretical sequence composition research depend heavily on the sequence associated with component definitions. -\todo[inline]{need to make it clear that it includes DNA, RNA, and protein, also smooth the text --JSB} +\Ctodo{need to make it clear that it includes DNA, RNA, and protein, also smooth the text --JSB} SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. -\todo[inline]{Need to also explain annotation --JSB} +\Ctodo{Need to also explain annotation --JSB} SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. -\todo[inline]{This needs to be clarified. Do we really want to explain MapsTo here? -JSB} +\Ctodo{This needs to be clarified. Do we really want to explain MapsTo here? -JSB} -\todo[inline]{Why is it important to separate definitions from instantiations?} +\Ctodo{Explain why it is important to separate definitions from instantiations?} -\todo[inline]{The motivation for separating structural and functional considerations is not explained. Which class names are structural, which class names are functional, and how are the two connected? Do all structural components require a functional counterpart? If not, explain why only a subset of structural components would have functional definitions.} +\LDtodo{The motivation for separating structural and functional considerations is not explained. Which class names are structural, which class names are functional, and how are the two connected? Do all structural components require a functional counterpart? If not, explain why only a subset of structural components would have functional definitions.} -\todo[inline]{As a person reading about SBOL2 for the first time, I rank this as the most important section. This is your chance to concisely tell someone who won't read the whole document about the take-home messages for the new data model.} +\Ctodo{As a person reading about SBOL2 for the first time, I rank this as the most important section. This is your chance to concisely tell someone who won't read the whole document about the take-home messages for the new data model.} -\todo[inline]{Why are URI's needed for Components? Why not just for ComponentDefinitions? Is there anything in SBOL that does not require a URI?} +\LDtodo{Why are URI's needed for Components? Why not just for ComponentDefinitions? Is there anything in SBOL that does not require a URI?} +\Dtodo{where did the XML-RDF section go?} -\todo[inline]{where did the XML-RDF section go?} +% The same toggle switch is now displayed using two LacI and TetR inverter submodules in figure \ref{images:toggleswitch_modular}. The LacI inverter uses LacI as input and produces the TetR output, and the TetR inverter uses TetR as input and produces the LacI output. These inputs and outputs are mapped in a parent module. -% \todo[inline]{I would suggest a more complete and more explicit mapping of vocabulary to the toggle switch example. -bder} +% Removed as redundant: +%----------------------------------------------------------------------------- +%\section{Introduction} +% ----------------------------------------------------------------------------- +%While the first version of the Synthetic Biology Open Language (SBOL) has been adopted by several academic and commercial genetic design automation (GDA) software tools, it only covers a limited range of the requirements for a standardized exchange format for synthetic biology. The SBOL 2.0 specification revises version 1.1, enabling the representation of a wider range of components with and without sequences, including RNA components, protein components, small molecules, and molecular complexes. Additionally, the latest SBOL can be used to convey the intended function of a design, as well as its structural composition. +%This dichotomous representation of the structural and functional features of a design is a paradigm applied to great success in electrical and computer engineering, and is essential for the development of design automation software in synthetic biology. +% +%The goal of this specification is to define the terminology and relationships used to describe biological designs. In order to provide a shared understanding between engineers seeking to exchange biological designs, SBOL provides a common definition of the concepts needed. As much as possible, we attempt to make explicit the meaning of all terminology and data structures. + + +% % ----------------------------------------------------------------------------- +% \section{Overview of SBOL} +% % ----------------------------------------------------------------------------- +% Typically, information about a genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. Interactions between these constituents are then used to construct biologically plausible designs. + +% In the figure below, a simple toggle switch system is displayed, in which LacI and TetR repress each other's genes transcriptionally. The toggling of the system is controlled by adding IPTG to deactivate LacI, and ATC to deactivate TetR. The components of the system includes genetic elements, proteins, small molecules. + +% \begin{figure}[ht] +% \begin{center} +% \includegraphics[scale=0.4]{images/toggleswitch_flat} +% \caption[]{An example toggle swicth genetic circuit. } +% \label{images:toggleswitch_flat} +% \end{center} +% \end{figure} + +% SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. + + +% SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. -% The same toggle switch is now displayed using two LacI and TetR inverter submodules in figure \ref{images:toggleswitch_modular}. The LacI inverter uses LacI as input and produces the TetR output, and the TetR inverter uses TetR as input and produces the LacI output. These inputs and outputs are mapped in a parent module. \ No newline at end of file diff --git a/practices.tex b/practices.tex index f13de5c3..fa1152e9 100644 --- a/practices.tex +++ b/practices.tex @@ -5,21 +5,25 @@ \section{Best Practices} \subsection{Versioning} Currently, if a developer wishes to change a SBOL object that has been published to the Web, then as a best practice they should create a copy of the SBOL object that incorporates the change, but has a new URI. This practice, however, does not inherently involve a standardized declaration that the second object is a version of the first. Consequently, the \sbol{persistentIdentity}, and \sbol{version} data fields have been created to provide developers with the means to declare that a set of SBOL objects are versions of each other (by virtue of having the same persistent URI) and label these objects with version Strings. -\todo[inline]{try to target readers unfamiliar with RDF/XML. -bder} -%TODO[version]{maybe clarify what type of versioning is this object affecting? TN} +\Ctodo{try to target readers unfamiliar with RDF/XML. -bder} +\Ctodo{maybe clarify what type of versioning is this object affecting? TN} + +\subsection{Creation and Modification Dates} + +\LDtodo{Annotations: Annotating with created and modified dates, and how to add them.} \subsection{Compliant URIs} -\todo[inline]{Chris, add this section} +\Ctodo{Chris, add this section} -\subsection{Annotations: TopLevel, Embedded, and External References} +\subsection{Annotations: Embedded Objects vs. External References} -\todo[inline]{TopLevel for independent objects, embedded for dependent. Don't drag your giant data files around in SBOL, put them as external links} +\LDtodo{Don't drag your giant data files around in SBOL, put them as external links} \subsection{Recommended Ontologies for External Terms} External ontologies and controlled vocabularies are integral part of SBOL. SBOL utilises these resources to access existing biological information where possible. New SBOL specific terms are defined only when necessary. Instead, SBOL provides placeholders that can point to external terms. For example, types of components, such as DNA or protein, are indicated using BioPAX. Similarly, the role of a DNA component is indicated via the SO terms. Although preferred ontologies have been indicated in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found at \ref{tbl:preferred_external_resources}. -\todo[inline]{It would be useful to add URLs to the resources - NeilW} +\Ctodo{It would be useful to add URLs to the resources - NeilW} \begin{table}[ht] @@ -30,9 +34,7 @@ \subsection{Recommended Ontologies for External Terms} \textbf{ComponentDefinition} & type & BioPAX \\ & role & SO (if type is \textit{DNA} or \textit{RNA}) \\ & role & CHEBI (if type is \textit{small molecule}) \\ - & role & UniProt (if type is \textit{protein}??) \\%TODO What is the external resource for proteins, discuss it. protein - GO instead of UniProt -\\%TODO Should there be an external listing for all Top Level? - + & role & UniProt (if type is \textit{protein}??) \\ \textbf{Interaction} & type & SBO \\ \textbf{Participation} & type & SBO \\ \textbf{Model} & language & EDAM \\ @@ -41,4 +43,15 @@ \subsection{Recommended Ontologies for External Terms} \end{edtable} \caption{SBOL properties and preferred external resources to choose values from.} \label{tbl:preferred_external_resources} -\end{table} \ No newline at end of file +\end{table} + +\Dtodo{?? --> What is the external resource for proteins, discuss it. protein - GO instead of UniProt} +\Dtodo{Should there be an external listing for all Top Level?} + + +\subsection{Naming in Other Implementations} +\Dtodo{Moved these from model, where they clearly didn't belong. I'm not sure they should exist at all, though. -JSB} + +Within an implementing Object-Oriented (OO) API, SBOL properties should be mapped to member accessors that are similarly named and that return idiomatic representations of these properties. For example, a Java implementation would use common Java idioms. In this case, the member accessor for an optional SBOL property could return a Java primitive value, Java object, or null, while the accessor for a multi-valued SBOL property could return a Java \external{Collection}. In general, OO member accessors for multi-valued SBOL properties should never return null. + +As another example, a relational implementation of the SBOL API would store the properties and associations a mixture of data fields and references via foreign keys. The fields in individual tables will correspond to the `arrowhead' end of an association (in reverse to the direction in the RDF and OO representations), and the name may be modified to reflect this change in directionality. For example, the \sbol{sequence} association between a \sbol{ComponentDefinition} and \sbol{Sequence} would be represented by a foreign key field on the \sbol{Sequence} table that references a row in the \sbol{ComponentDefinition} table, and it may be named \external{sequenceOf}. diff --git a/purpose.tex b/purpose.tex index ec250132..b4ffcde9 100644 --- a/purpose.tex +++ b/purpose.tex @@ -8,16 +8,16 @@ \section{Purpose} % Below is my revision. Any thoughts? - Nic Synthetic biology builds upon the techniques and successes of genetics, molecular biology and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. -\todo[inline]{Maybe discuss more about how SBOL is a standard. Huge transition from what is Synethic Biology to SBOL} +\Ctodo{Maybe discuss more about how SBOL is a standard. Huge transition from what is Syntetic Biology to SBOL} To help address these challenges, the Synthetic Biology Open Language (SBOL) introduces a standardized file format for the electronic exchange of biological designs and a standardized data model for the reproducible description of essential design details. Ultimately, SBOL is intended to speed up the research and development of designed biological systems by enhancing the exchange and reproducibility of biological designs between different labs. -\todo[inline]{it's not about a file format, it's about a representation; the fact that this is a file format is incidental -JSB} +\Ctodo{it's not about a file format, it's about a representation; the fact that this is a file format is incidental -JSB} -\todo[inline]{Motivate/discuss URI's?} +\Ctodo{Motivate/discuss URI's?} -\todo[inline]{Should the comparison with 1.1 really be there? This needs revision to be stand-alone, and right now it's basically an extract of the SBOL2 paper -JSB} +\Ctodo{Should the comparison with 1.1 really be there? This needs revision to be stand-alone, and right now it's basically an extract of the SBOL2 paper -JSB} Version 1.1 of the SBOL standard focused on representing the structural aspects of genetic designs. To serve as an effective medium for the computational exchange of genetic designs, SBOL must be extended to capture more aspects of a designed system, including both structural and functional information, and the composition of complex structural and functional designs by combining simpler parts. The SBOL data model proposed in this specification provides for addressing the most pressing needs for expanding SBOL Version 1.1. \begin{enumerate} @@ -36,4 +36,4 @@ \section{Purpose} To address the need for functional descriptions in SBOL, the proposed data model adds classes for modules, interactions, and models. These classes provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the Systems Biology Markup Language (SBML)~\cite{SBML} to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. -\todo[inline]{This just sort of stops. Need a better end. --JSB} \ No newline at end of file +\Ctodo{This just sort of stops. Need a better end. --JSB} diff --git a/sbol2.tex b/sbol2.tex index 70621913..552f7ab5 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -85,7 +85,11 @@ %Commands to format SBOL terms in the document \newcommand{\sbolheading}[1]{\texttt{#1}} \newcommand{\sbol}[1]{\texttt{\hyperref[sec:#1]{#1}}} +% Decision vs. Low-Priority Decision vs. Clarification TODOs: \newcommand{\Dtodo}[1]{\todo[inline,color=red]{#1}} +\newcommand{\LDtodo}[1]{\todo[inline,color=yellow]{#1}} +\newcommand{\Ctodo}[1]{\todo[inline,color=cyan]{#1}} +\newcommand{\Rtodo}[1]{\todo[inline,color=green]{#1}} %Command to format external terms in the document \newcommand{\external}[1]{\texttt{#1}} @@ -130,58 +134,35 @@ Herbert Sauro & \emph{University of Washington, US}\\[8pt] \end{tabular}\\ \href{mailto:editors@sbolstandard.org}{\sffamily editors@sbolstandard.org} -\Dtodo{What should be the authorship? -JSB}} +\LDtodo{What should be the authorship? -JSB}} \maketitlepage \maketableofcontents -\todo[inline]{Need to make TOC link to right locations: right now, it links to end of prior section, rather than start of clicked section --JSB} +\Rtodo{When editing, change the todos that you handle to \Rtodo, rather than just deleting them, so that a second person can review} -\input{purpose} - -% ----------------------------------------------------------------------------- -%\section{Relation to other BBF RFCs} -% ----------------------------------------------------------------------------- - -\input{copyright} - -\input{history} - -% Removed as redundant: -%----------------------------------------------------------------------------- -%\section{Introduction} -% ----------------------------------------------------------------------------- -%While the first version of the Synthetic Biology Open Language (SBOL) has been adopted by several academic and commercial genetic design automation (GDA) software tools, it only covers a limited range of the requirements for a standardized exchange format for synthetic biology. The SBOL 2.0 specification revises version 1.1, enabling the representation of a wider range of components with and without sequences, including RNA components, protein components, small molecules, and molecular complexes. Additionally, the latest SBOL can be used to convey the intended function of a design, as well as its structural composition. -%This dichotomous representation of the structural and functional features of a design is a paradigm applied to great success in electrical and computer engineering, and is essential for the development of design automation software in synthetic biology. -% -%The goal of this specification is to define the terminology and relationships used to describe biological designs. In order to provide a shared understanding between engineers seeking to exchange biological designs, SBOL provides a common definition of the concepts needed. As much as possible, we attempt to make explicit the meaning of all terminology and data structures. +\Ctodo{Final pass before release must include: +Ensure that all references are defined -% % ----------------------------------------------------------------------------- -% \section{Overview of SBOL} -% % ----------------------------------------------------------------------------- -% Typically, information about a genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. Interactions between these constituents are then used to construct biologically plausible designs. +Make sure all requirements words are properly upper-cased -% In the figure below, a simple toggle switch system is displayed, in which LacI and TetR repress each other's genes transcriptionally. The toggling of the system is controlled by adding IPTG to deactivate LacI, and ATC to deactivate TetR. The components of the system includes genetic elements, proteins, small molecules. +Spell check -% \begin{figure}[ht] -% \begin{center} -% \includegraphics[scale=0.4]{images/toggleswitch_flat} -% \caption[]{An example toggle swicth genetic circuit. } -% \label{images:toggleswitch_flat} -% \end{center} -% \end{figure} +Ensure that TOC links to correct locations} -% SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. +\input{purpose} -% SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. +% ----------------------------------------------------------------------------- +%\section{Relation to other BBF RFCs} +% ----------------------------------------------------------------------------- -% \todo[inline]{I would suggest a more complete and more explicit mapping of vocabulary to the toggle switch example. -bder} +\input{copyright} -% The same toggle switch is now displayed using two LacI and TetR inverter submodules in figure \ref{images:toggleswitch_modular}. The LacI inverter uses LacI as input and produces the TetR output, and the TetR inverter uses TetR as input and produces the LacI output. These inputs and outputs are mapped in a parent module. +\input{history} \input{vocabulary} @@ -196,8 +177,6 @@ \input{practices} -%TODO: Annotations: Annotating with created and modified dates, and how to add them. - \newpage \bibliography{sbol} @@ -209,7 +188,7 @@ % ----------------------------------------------------------------------------- -% Random junk at the end: this section contains examples of potentially useful code for formatting tables, bullets, etc. +% Random non-printing junk at the end: this section contains examples of potentially useful code for formatting tables, bullets, etc. \begin{table}[hb] \begin{edtable}{tabular}{ll} diff --git a/serialization.tex b/serialization.tex index 869e40ec..b398ee02 100644 --- a/serialization.tex +++ b/serialization.tex @@ -3,31 +3,31 @@ \section{SBOL RDF Serialization} \label{sec:serialization} % ----------------------------------------------------------------------------- -\todo[inline]{try to target readers unfamiliar with RDF/XML. -bder} +\Ctodo{try to target readers unfamiliar with RDF/XML. -bder} The SBOL serialization is designed to meet several competing requirements. Firstly, SBOL needs to support ad-hoc annotations and extensions. Secondly, SBOL needs to support processing by generic semantic web and database tools that have little or no knowledge of the SBOL data model. Thirdly, SBOL needs to support the generation of light-weight software clients so as to lower the barrier to entry for new API implementations within environments where community-maintained implementation(s) are not suitable. The canonical serialization of SBOL is to a strict dialect of RDF/XML. This serialization provides the base from which to meet further requirements. Any RDF/XML-aware tooling can consume and analyze a SBOL file. Where possible, we have re-used predicates from widely-used terminologies (such as Dublin Core~\cite{dcmi2012}) to expose as much of the data as practical to standard RDF tooling. Arbitrary RDF/XML provides a great deal of flexibility in how equivalent data can be serialized. This flexibility can result in different serializations when processing RDF/XML files using standard off-the-shelf XML tools, such as DOM-OO mappings. To address this problem, we define a canonical association between the nesting of data structures within the SBOL UML data model and the RDF/XML file. For all ownership associations (filled diamonds), the RDF/XML for the owned entity is embedded within the owner's RDF/XML. For all associations that are by reference (open diamonds), the RDF/XML for the referenced property is linked via a resource URI. -\todo[inline]{Perhaps add or reference an example of ownership vs referencing. - cm} +\Ctodo{Perhaps add or reference an example of ownership vs referencing. - cm} All first-class SBOL datatypes have an associated identity URI. In the RDF, this is the resource URI used by instances of that type. Properties and associations are asserted as nested RDF/XML assertions. Some datatypes are `top level,' which means that they always appear at the top level of the RDF/XML serialization. All other datatypes will always appear nested within their parent container. -\todo[inline]{Perhaps add or reference an example of a top level entity vs a nested entity. This may be very similar to the previous example. - cm} +\Ctodo{Perhaps add or reference an example of a top level entity vs a nested entity. This may be very similar to the previous example. - cm} Each instance of a first-class SBOL datatype may have annotations attached. These annotations are composed of a name and a value. They are serialized to RDF as a triple with the subject being the identity of the instance they annotate, the predicate being the name of the annotation, and the object being the value of that annotation. Annotation values are always nested within the RDF/XML serialization of the instance that they annotate. SBOL supports top-level, user-defined annotations. This is to allow non-standardized but necessary information to be carried around as part of a design. For example, a particular sub-community may have an internal standard for genetic device characterization data sheets. Individual data sheets can be represented as a generic top-level annotation with internal structured annotations. This annotation will be serialized into the RDF/XML in the usual way, as a RDF/XML block at the top level of the file. Other objects may refer to this entity through their annotations by reference, and this generic top-level entity may refer to other entities via references. -\todo[inline]{Perhaps add or reference examples of different annotations. - cm} +\Ctodo{Perhaps add or reference examples of different annotations. - cm} By adopting this paradigm of RDF/XML serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. Since exactly the same scheme is used to serialize annotations as is used to serialize specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of properties and associations. Those properties not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entities in a SBOL file, we enable future specifications or extensions to ratify the structure of other top-level objects. These entities would then become part of the explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely round-trip the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. The very regimented control of nesting versus referencing allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL RDF/XML files safely. \subsection {SBOL Documents} -\todo[inline]{This needs to be integrated with the rest} +\Ctodo{This needs to be integrated with the rest} An SBOL document is a valid RDF/XML document. Accordingly, each SBOL document starts with an XML declaration that has its XML version set to ``1.0.'' As shown in the example below, this declaration is then followed by a rdf:RDF XML element that includes the namespace declarations for RDF and SBOL. The latter namespace is used to indicate which entities and properties in the SBOL document are defined by SBOL. -\todo[inline]{Need to state ``This is the SBOL2 namespace''} +\Ctodo{Need to state ``This is the SBOL2 namespace''} \lstsetsbol \begin{lstlisting} diff --git a/vocabulary.tex b/vocabulary.tex index dd69b0d1..47f95dac 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -13,18 +13,11 @@ \section{SBOL Specification Vocabulary} \item The word "MAY" or the adjective "OPTIONAL" mean that an item is truly optional. \end{itemize} -\todo[inline]{Make sure all requirements words are properly upper-cased} - \subsection{SBOL Class Names} SBOL defines the following classes: -\todo[inline]{Organize these functionally, not alphabetically. -bder} - - - - - +\LDtodo{Organize these functionally, not alphabetically. -bder} \begin{description} From 7922ad4fdffaea232caf1ce1cfb77adf9efc71e2 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 23 Apr 2015 09:34:28 +0000 Subject: [PATCH 044/317] Update on Overleaf. --- model.tex | 4 +++- overview.tex | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/model.tex b/model.tex index 229d8702..a4f2e208 100644 --- a/model.tex +++ b/model.tex @@ -65,10 +65,12 @@ \subsection{Data Types} \subsubsection*{The \sbolheading{identity} property} \label{sec:identity} -This property is required by all \sbol{Identified} objects and has a datatype of \external{URI}. This \external{URI} serves to uniquely identify an SBOL object. The \sbol{identity} property can be used to point to other objects in the same SBOL document or to resources on the Web. Although most SBOL properties are defined under the SBOL namespace, the \sbol{identity} property is already adequately described RDF specification, this property is defined under the RDF namespace using the following term: +This property is required by all \sbol{Identified} objects and has a datatype of \external{URI}. This \external{URI} serves to uniquely identify an SBOL object. The \sbol{identity} property can be used to point to other objects in the same SBOL document or to resources on the Web. Although most SBOL properties are defined under the SBOL namespace, the \sbol{identity} property is defined under the RDF namespace using the the following analogous term: \external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. +This + \todo[inline]{Should compliant URIs, per the paper, be required or just recommended as a best practice?} \subsubsection*{The \sbolheading{persistentIdentity} property} diff --git a/overview.tex b/overview.tex index 07da53b7..f8f20c52 100644 --- a/overview.tex +++ b/overview.tex @@ -21,7 +21,7 @@ \section{Overview of SBOL} \todo[inline]{need to make it clear that it includes DNA, RNA, and protein, also smooth the text --JSB} -In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. +In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. A functional layer is defined SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. From e08cd48d400a04e015d013ee1e4de076ffa2f8ec Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 23 Apr 2015 09:35:31 +0000 Subject: [PATCH 045/317] Update on Overleaf. --- model.tex | 2 +- overview.tex | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/model.tex b/model.tex index a4f2e208..d3293c7e 100644 --- a/model.tex +++ b/model.tex @@ -69,7 +69,7 @@ \subsubsection*{The \sbolheading{identity} property} \external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. -This +This substitution adheres to the SBOL practice of avo \todo[inline]{Should compliant URIs, per the paper, be required or just recommended as a best practice?} diff --git a/overview.tex b/overview.tex index f8f20c52..f286ceee 100644 --- a/overview.tex +++ b/overview.tex @@ -21,7 +21,7 @@ \section{Overview of SBOL} \todo[inline]{need to make it clear that it includes DNA, RNA, and protein, also smooth the text --JSB} -In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. A functional layer is defined +In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. A functional layer can be defined to describe the behaviors that arise from the structural layer. \sbol{ModuleDefinition}s defin SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. From d6f18483a8cf52cfa22af4a298a779a2d96e6fd1 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 23 Apr 2015 09:36:29 +0000 Subject: [PATCH 046/317] Update on Overleaf. --- model.tex | 2 +- overview.tex | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/model.tex b/model.tex index d3293c7e..1218e75f 100644 --- a/model.tex +++ b/model.tex @@ -69,7 +69,7 @@ \subsubsection*{The \sbolheading{identity} property} \external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. -This substitution adheres to the SBOL practice of avo +This substitution adheres to \todo[inline]{Should compliant URIs, per the paper, be required or just recommended as a best practice?} diff --git a/overview.tex b/overview.tex index f286ceee..9fdaef03 100644 --- a/overview.tex +++ b/overview.tex @@ -21,7 +21,7 @@ \section{Overview of SBOL} \todo[inline]{need to make it clear that it includes DNA, RNA, and protein, also smooth the text --JSB} -In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. A functional layer can be defined to describe the behaviors that arise from the structural layer. \sbol{ModuleDefinition}s defin +In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. A functional layer can be defined to describe the behaviors that arise from the structural layer. \sbol{ModuleDefinition}s define functional aspects of the system. SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. From bde92cfff2998debff35dae121492ded49ac3239 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 23 Apr 2015 09:36:35 +0000 Subject: [PATCH 047/317] Update on Overleaf. --- model.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model.tex b/model.tex index 1218e75f..f67a03d0 100644 --- a/model.tex +++ b/model.tex @@ -69,7 +69,7 @@ \subsubsection*{The \sbolheading{identity} property} \external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. -This substitution adheres to +This substitution adheres to the commitment of SBOL \todo[inline]{Should compliant URIs, per the paper, be required or just recommended as a best practice?} From 3667f7445579069386a95555f6426465616999b9 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 23 Apr 2015 09:36:40 +0000 Subject: [PATCH 048/317] Update on Overleaf. --- model.tex | 2 +- overview.tex | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/model.tex b/model.tex index f67a03d0..0edb11dc 100644 --- a/model.tex +++ b/model.tex @@ -69,7 +69,7 @@ \subsubsection*{The \sbolheading{identity} property} \external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. -This substitution adheres to the commitment of SBOL +This substitution adheres to the \todo[inline]{Should compliant URIs, per the paper, be required or just recommended as a best practice?} diff --git a/overview.tex b/overview.tex index 9fdaef03..c81cd09c 100644 --- a/overview.tex +++ b/overview.tex @@ -21,7 +21,7 @@ \section{Overview of SBOL} \todo[inline]{need to make it clear that it includes DNA, RNA, and protein, also smooth the text --JSB} -In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. A functional layer can be defined to describe the behaviors that arise from the structural layer. \sbol{ModuleDefinition}s define functional aspects of the system. +In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. A functional layer can be defined to describe the behaviors that arise from the structural layer. \sbol{ModuleDefinition}s define behav SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. From 14dc13be5528311e2966b47797899911c46797ea Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 23 Apr 2015 09:36:45 +0000 Subject: [PATCH 049/317] Update on Overleaf. --- model.tex | 2 +- overview.tex | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/model.tex b/model.tex index 0edb11dc..a6d7a65c 100644 --- a/model.tex +++ b/model.tex @@ -69,7 +69,7 @@ \subsubsection*{The \sbolheading{identity} property} \external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. -This substitution adheres to the +This substitution adheres to the com \todo[inline]{Should compliant URIs, per the paper, be required or just recommended as a best practice?} diff --git a/overview.tex b/overview.tex index c81cd09c..47753920 100644 --- a/overview.tex +++ b/overview.tex @@ -21,7 +21,7 @@ \section{Overview of SBOL} \todo[inline]{need to make it clear that it includes DNA, RNA, and protein, also smooth the text --JSB} -In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. A functional layer can be defined to describe the behaviors that arise from the structural layer. \sbol{ModuleDefinition}s define behav +In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. A functional layer can be defined to describe the behaviors that arise from the structural layer. \sbol{ModuleDefinition}s define behaviors by SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. From 24880d100e851ad46e692045e154ec121512162f Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 23 Apr 2015 09:36:50 +0000 Subject: [PATCH 050/317] Update on Overleaf. --- model.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model.tex b/model.tex index a6d7a65c..57a41c96 100644 --- a/model.tex +++ b/model.tex @@ -69,7 +69,7 @@ \subsubsection*{The \sbolheading{identity} property} \external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. -This substitution adheres to the com +This substitution adheres to the commitment of the SBO \todo[inline]{Should compliant URIs, per the paper, be required or just recommended as a best practice?} From fd91ad90ae5471451df3f20b53eeeeac2a94ef51 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 23 Apr 2015 09:36:55 +0000 Subject: [PATCH 051/317] Update on Overleaf. --- model.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model.tex b/model.tex index 57a41c96..e2ce306d 100644 --- a/model.tex +++ b/model.tex @@ -69,7 +69,7 @@ \subsubsection*{The \sbolheading{identity} property} \external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. -This substitution adheres to the commitment of the SBO +This substitution adheres to the commitment of the SBOL community to avoid \todo[inline]{Should compliant URIs, per the paper, be required or just recommended as a best practice?} From 23bc96dd45ffb97318aa5f134455f751a8123c14 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 23 Apr 2015 10:04:54 +0000 Subject: [PATCH 052/317] Update on Overleaf. --- model.tex | 9 +++++---- overview.tex | 8 +++++--- practices.tex | 2 ++ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/model.tex b/model.tex index e2ce306d..a7079e6b 100644 --- a/model.tex +++ b/model.tex @@ -35,6 +35,9 @@ \subsection{Naming Conventions} Within the SBOL data model, all properties are given a singular or plural name in accordance with their data cardinalities. The forms of these names follow the usual rules of grammar. For example, \sbol{sequenceAnnotation} is the singular form of \sbol{sequenceAnnotation}s. + +\todo[inline]{has RDF been introduced yet?} + Within the RDF serialization of SBOL, however, SBOL properties are always given singular names. The serialization does not use RDF collections to represent multiple values of an SBOL property. Hence, if a SBOL property has five values, then its serialization contains five RDF triples with singular predicate names. \todo[inline]{Why, why, why are these two different?} @@ -65,13 +68,11 @@ \subsection{Data Types} \subsubsection*{The \sbolheading{identity} property} \label{sec:identity} -This property is required by all \sbol{Identified} objects and has a datatype of \external{URI}. This \external{URI} serves to uniquely identify an SBOL object. The \sbol{identity} property can be used to point to other objects in the same SBOL document or to resources on the Web. Although most SBOL properties are defined under the SBOL namespace, the \sbol{identity} property is defined under the RDF namespace using the the following analogous term: +This property is required by all \sbol{Identified} objects and has a datatype of \external{URI}. This \external{URI} serves to uniquely identify an SBOL object. The \sbol{identity} property can be used to point to other objects in the same SBOL document or to resources on the Web. Although most SBOL properties are defined by SBOL and serialized with its namespace, the \sbol{identity} property is defined by the analogous RDF \external{about} property and is seralized with the RDF namespace as follows: \external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. -This substitution adheres to the commitment of the SBOL community to avoid - -\todo[inline]{Should compliant URIs, per the paper, be required or just recommended as a best practice?} +This substitution is in keeping with the SBOL's commitment to the practical reuse of existing standards. \subsubsection*{The \sbolheading{persistentIdentity} property} \label{sec:persistentIdentity} diff --git a/overview.tex b/overview.tex index 47753920..34dc22f1 100644 --- a/overview.tex +++ b/overview.tex @@ -21,24 +21,26 @@ \section{Overview of SBOL} \todo[inline]{need to make it clear that it includes DNA, RNA, and protein, also smooth the text --JSB} -In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. A functional layer can be defined to describe the behaviors that arise from the structural layer. \sbol{ModuleDefinition}s define behaviors by +In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a structural hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. A functional layer can be defined to describe the behaviors that arise from the structural layer. \sbol{ModuleDefinition}s contain information about molecular interactions and their participating components. They can contain \sbol{FunctionalComponent}s that are instances of \sbol{ComponentDefinition}s that can be assigned functional properties, and they can also contain other modules in a functional hierarchy. The functions and interactions of these components and other modules within the \sbol{ModuleDefinition} can be quantitatively or qualitatively described using a \sbol{Model}. SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. \todo[inline]{Need to also explain annotation --JSB} + + SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. \todo[inline]{This needs to be clarified. Do we really want to explain MapsTo here? -JSB} \todo[inline]{Why is it important to separate definitions from instantiations?} -\todo[inline]{The motivation for separating structural and functional considerations is not explained. Which class names are structural, which class names are functional, and how are the two connected? Do all structural components require a functional counterpart? If not, explain why only a subset of structural components would have functional definitions.} -\todo[inline]{As a person reading about SBOL2 for the first time, I rank this as the most important section. This is your chance to concisely tell someone who won't read the whole document about the take-home messages for the new data model.} +\todo[inline]{As a person reading about SBOL2 for the first time, I rank this as the most important section. While the document should be technically focused overall, this section is your chance to concisely tell someone who won't read the whole document about the take-home messages for the new data model.} +\todo[inline]{Also briefly mention URI} \todo[inline]{where did the XML-RDF section go?} diff --git a/practices.tex b/practices.tex index f13de5c3..a4a83e7f 100644 --- a/practices.tex +++ b/practices.tex @@ -12,6 +12,8 @@ \subsection{Compliant URIs} \todo[inline]{Chris, add this section} +\todo[inline]{Should compliant URIs, per the paper, be required or just recommended as a best practice?} + \subsection{Annotations: TopLevel, Embedded, and External References} \todo[inline]{TopLevel for independent objects, embedded for dependent. Don't drag your giant data files around in SBOL, put them as external links} From d6a00a49722d244d59ee18391d3c3a63527af1d9 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Thu, 23 Apr 2015 12:06:12 +0200 Subject: [PATCH 053/317] JSB todo pass complete --- model.tex | 72 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 59 insertions(+), 13 deletions(-) diff --git a/model.tex b/model.tex index a72b54c9..c540532d 100644 --- a/model.tex +++ b/model.tex @@ -676,31 +676,42 @@ \subsection{ModuleDefinition} \end{center} \end{figure} -The \sbol{ModuleDefinition} class forms the hub for functional description of genetic designs. A \sbol{ModuleDefinition} object is composed from zero or more \sbol{FunctionalComponent}, \sbol{Module}, and \sbol{Interaction} objects, and links to zero or more \sbol{Model} objects. A \sbol{ModuleDefinition} object relies on the ``direction'' data fields of its \sbol{FunctionalComponent} objects to specify whether they serve as its inputs or outputs. +The \sbol{ModuleDefinition} class is the hub where the structural and functional aspects of genetic designs come together to form a complete picture of the design. +A \sbol{ModuleDefinition} object is composed from zero or more \sbol{FunctionalComponent}, \sbol{Module}, and \sbol{Interaction} objects, and links to zero or more \sbol{Model} objects. +A \sbol{ModuleDefinition} object relies on the ``direction'' data fields of its \sbol{FunctionalComponent} objects to specify whether they serve as its inputs or outputs. +\Ctodo{the direction bit needs to be said much more clearly} \subsubsection*{The \sbolheading{roles} property} -This property is optional and may include set of URIs in order to specify the intended use of a \sbol{ModuleDefinition} entity. These URIs may identify terms for abstract module roles, such as``inverter'' or ``AND gate'', or they may identify terms for biological module roles, such as ``metabolic pathway'' and ``signaling cascade''. -\todo[inline]{GM:inverter is also a biological module role. Would it make sense to rewrite the sentence above?} +This property is OPTIONAL and may include a set of URIs that specifies the intended use of a \sbol{ModuleDefinition} entity. +These URIs may identify terms for abstract module roles, such as``inverter'' or ``AND gate'', or they may identify terms for purely biological roles, such as ``metabolic pathway'' and ``signaling cascade''. +\Ctodo{make this sentence clearer} +\Ctodo{Make these more paralell to componentdefinition in the way that they are written} \subsubsection*{The \sbolheading{models} property} -This property is optional and includes identities of associated \sbol{Model} entities. +This property is OPTIONAL and includes identities of associated \sbol{Model} entities. SBOL's \sbol{Model} objects are used to link genetic descriptions of biological parts and their interactions to computational models. A ModuleDefinition object can link to more than one model since each one can encode different levels of functional detail and play different roles in engineering design. +\Ctodo{clarify this bit with a bit more explanation and better content} -\todo[inline]{GM:Is the property called submodules or modules? libSBOLj serialises using the subModule property.} +\Dtodo{GM:Is the property called submodules or modules? libSBOLj serialises using the subModule property.} \subsubsection*{The \sbolheading{subModules} property} This property is optional and includes a set of \sbol{Module} entities, which refer to \sbol{ModuleDefinition}s to be imported. +\Ctodo{use better language, like in componentdefinition} \todo[inline]{GM: libSBOLj serialised the property names as component. Do we use functionalComponent ot component as the property name?} \subsubsection*{The \sbolheading{functionalComponents} property} This property is optional and includes a set of \sbol{FunctionalComponent} entities. These entities are then used to describe biological interactions via \sbol{Participation} entities. +\Ctodo{use better language} + \subsubsection*{The \sbolheading{interactions} property} This property is optional and includes a set of \sbol{Interaction} entities, which include \sbol{Participation} entities. -The serialization of \sbol{ModuleDefinition}s has the following form. +\subsubsection*{Serialization} + +The serialization of \sbol{ModuleDefinition}s has the following form: \lstsetsbol \begin{lstlisting} @@ -721,10 +732,15 @@ \subsubsection*{The \sbolheading{interactions} property} \end{lstlisting} +\Ctodo{Add an example, like for all the rest} + \subsubsection{FunctionalComponent} \label{sec:FunctionalComponent} -Composition of the functional layer of SBOL designs, on the other hand, is accomplished using \sbol{FunctionalComponent} objects. Each FunctionalComponent object is owned by a \sbol{ModuleDefinition} or \sbol{Module} object and serves as an explicit usage of a \sbol{Component} object for the purpose of fulfilling some function. In addition, each \sbol{FunctionalComponent} must specify via the ``direction'' field (\ref{tbl:functionalcomponent_directions}) whether it serves as an input, output, both, or neither for its parent \sbol{ModuleDefinition} object. +Composition of the functional layer of SBOL designs is accomplished using \sbol{FunctionalComponent} objects. Each FunctionalComponent object is owned by a \sbol{ModuleDefinition} and serves as an explicit usage of a \sbol{Component} object for the purpose of fulfilling some function. In addition, each \sbol{FunctionalComponent} must specify via the ``direction'' field (\ref{tbl:functionalcomponent_directions}) whether it serves as an input, output, both, or neither for its parent \sbol{ModuleDefinition} object. +\Dtodo{Previously said a Module could own a FunctionalComponet, which i'm pretty sure is false -JB} + +\LDtodo{Need to explain direction better.} \sbol{FunctionalComponent} derives from \sbol{ComponentInstance}, and therefore has the definition and access properties. @@ -744,6 +760,8 @@ \subsubsection{FunctionalComponent} \label{tbl:functionalcomponent_directions} \end{table} +\paragraph{Serialization} + The serialization of \sbol{FunctionalComponent}s has the following form. \lstsetsbol \begin{lstlisting} @@ -775,8 +793,11 @@ \subsubsection{Module} \end{center} \end{figure} -The Module class enables the composition of Module objects from other sub-Module objects. \textcolor{red}{The first data field, ``definition'', links to the ModuleDefinition object that is effectively a part of the Module object that owns the Module object.} The second data field, ``mappings'', is a set of MapsTo objects that link between the Component objects at the same level of the design hierarchy as the Module object and the Component objects that are lower in the design hierarchy, thereby composing these objects with greater specificity. +The \sbol{Module} class enables the composition of \sbol{ModuleDefinition} objects from other, smaller \sbol{ModuleDefinition} objects. \textcolor{red}{The first data field, ``definition'', links to the ModuleDefinition object that is effectively a part of the Module object that owns the Module object.} The second data field, ``mappings'', is a set of MapsTo objects that link between the Component objects at the same level of the design hierarchy as the Module object and the Component objects that are lower in the design hierarchy, thereby composing these objects with greater specificity. +\Dtodo{mappings or mapsTo?} +\Ctodo{need to clean up this whole description} +\Dtodo{Is the notion of ``level of design hierarchy'' real? I think it doesn't need to be stated here, it's actually a best practice.} The serialization of \sbol{Module}s has the following form. \lstsetsbol @@ -789,6 +810,8 @@ \subsubsection{Module} \end{lstlisting} +\Ctodo{add an example} + \subsubsection{MapsTo} \label{sec:MapsTo} @@ -801,6 +824,8 @@ \subsubsection{MapsTo} \end{figure} The \sbol{MapsTo} class serves as a means of linking between \sbol{ComponentInstance} objects (both \sbol{Component}s and \sbol{FunctionalComponent}s) at different levels of the design hierarchy. For example, when a child \sbol{ModuleDefinition} object is instantiated inside a parent \sbol{ModuleDefinition} object, a \sbol{MapsTo} object is used to link these two ModuleDefinitions. MapsTo has properties to specify components from the parent and child entities, and also to specify how these components are linked. +\Ctodo{need to explain the whole 3-way mapsto model and importation better} + \paragraph{The local property} This required property is used to specify the \sbol{ComponentInstance} from the parent entity. @@ -811,7 +836,7 @@ \subsubsection{MapsTo} Each \sbol{MapsTo} entity must also specify the relationship between its local and remote components using the refinement property. The Table \ref{tbl:mapsto_refinement} lists the values \begin{table}[ht] - \begin{edtable}{tabular}{ll} + \begin{edtable}{tabular}{lp{4in}} \toprule \textbf{Refinement URI} & \textbf{Description} \\ \midrule @@ -825,6 +850,7 @@ \subsubsection{MapsTo} \label{tbl:mapsto_refinement} \end{table} +\Dtodo{The notion of refinement is very unclear -JB} %GM: The paragraph below is now explained in the table above. Commented for now. Please remove the commented lines if you agree with the table description. %In addition to specifying a link, each MapsTo object must also specify a ``refinement'' relationship between its local and remote Components. Under this data model, there are four types of refinement: ``verifyIdentical'' requires that the Component objects link to the same ComponentDefinition object, ``useLocal'' indicates that the local Component object overrides the remote Component object, ``useRemote'' indicates the opposite, and “merge” indicates that data fields of the local and remote ComponentInstantiation objects are to be interpreted in combination. @@ -845,11 +871,19 @@ \subsubsection{MapsTo} \label{image:maps_to_diagram2} \end{center} \end{figure} +\Ctodo{Caption: why are some RBSs not filled in?} -An example design of a \sbol{ComponentDefinition} using \sbol{MapsTo} entities is shown at the left hand side of the Figure \ref{image:maps_to_diagram2}. The resulting entity is formed of a promoter, a RBS and a CDS. Three sub components to create the design includes: a promoter-RBS \sbol{ComponentDefinition} with a RBS placeholder without detailed definition; a RBS \sbol{ComponentDefinition} with full description; and a RBS-CDS \sbol{ComponentDefinition} with a RBS placeholder, which is also not defined in full detail. In the figure, boxes with the C label represent \sbol{Component} entities and boxes with the M label represent the \sbol{MapsTo} entities. In the design RBSs that are not fully defined are replaced with another RBS \sbol{ComponentDefinition} (displayed in green colour). \sbol{MapsTo} entities attached to sub components for promoter-RBS and RBS-CDS \sbol{ComponentDefinition}s include the ``use local'' refinement to replace RBSs with the fully defined version. In the second design at the right hand side of the figure, \sbol{MapsTo} entities are used to import the RBS from the promoter-RBS \sbol{ComponentDefinition} overwriting the RBS in RBS-CDS \sbol{ComponentDefinition}. +An example design of a \sbol{ComponentDefinition} using \sbol{MapsTo} entities is shown at the left hand side of the Figure \ref{image:maps_to_diagram2}. The resulting entity is formed of a promoter, a RBS and a CDS. +Three sub components to create the design includes: a promoter-RBS \sbol{ComponentDefinition} with a RBS placeholder without detailed definition; a RBS \sbol{ComponentDefinition} with full description; and a RBS-CDS \sbol{ComponentDefinition} with a RBS placeholder, which is also not defined in full detail. +In the figure, boxes with the C label represent \sbol{Component} entities and boxes with the M label represent the \sbol{MapsTo} entities. +In the design RBSs that are not fully defined are replaced with another RBS \sbol{ComponentDefinition} (displayed in green colour). \sbol{MapsTo} entities attached to sub components for promoter-RBS and RBS-CDS \sbol{ComponentDefinition}s include the ``use local'' refinement to replace RBSs with the fully defined version. In the second design at the right hand side of the figure, \sbol{MapsTo} entities are used to import the RBS from the promoter-RBS \sbol{ComponentDefinition} overwriting the RBS in RBS-CDS \sbol{ComponentDefinition}. -\todo[inline]{Add a table for refinement values and represent the value when serialized using the rdf:resource property} -The serialization of \sbol{MapsTo}s has the following form. +\Ctodo{Need to expand this explanation a bit more to drive home the points -JB} + +\Dtodo{Add a table for refinement values and represent the value when serialized using the rdf:resource property} + +\paragraph{Serialization} +The serialization of \sbol{MapsTo} has the following form. \lstsetsbol \begin{lstlisting} @@ -859,7 +893,7 @@ \subsubsection{MapsTo} \end{lstlisting} -\todo[inline]{The local and remote description in the MapsTo description is not same as the one below. Should not we use local for fcs in the submodules?} +\Dtodo{The local and remote description in the MapsTo description is not same as the one below. Should not we use local for fcs in the submodules?} In the example below, a \sbol{FunctionalComponent} entity from the submodule is linked to a \sbol{FunctionalComponent} entity in a parent module. The former is described in the imported \sbol{ModuleDefinition} entity which is referred to by the definition property of the \sbol{Module} entity. The latter is defined in the parent \sbol{ModuleDefinition}, importing the sub module. The full example can be found in \ref{ser:toggleswitch}. \lstsetsbol \begin{lstlisting} @@ -883,11 +917,16 @@ \subsubsection{Interaction} \end{center} \end{figure} +\Ctodo{Some of this description is incorrect or unclear} The Interaction class provides a qualitative basis for asserting the intended function of a given ModuleDefinition object. The proposed data model supports the representation of regulatory interactions, such as activation or repression, and processes from the central dogma of biology, such as transcription and translation. Other supported interaction types include non-covalent binding between a small molecule and TF, and phosphorylation of a TF by an enzyme. +\Dtodo{What does it mean for an interaction to be supported?} Each Interaction object must specify its type with at least one URI that identifies an appropriate ontology term, such as a term from the Systems Biology Ontology (SBO). If an Interaction object has multiple type URIs, then they must identify synonymous terms. +\Dtodo{Is SBO RECOMMENDED or just an example?} + Furthermore, each Interaction object must specify its participating \sbol{FunctionalComponent} entities by linking to one or more objects of the Participation class. +\LDtodo{I don't think this is really a MUST} The serialization of \sbol{Interaction}s has the following form. \lstsetsbol @@ -913,10 +952,17 @@ \subsubsection{Interaction} \subsubsection{Participation} \label{sec:Participation} + +\Ctodo{Fix the linking and clean grammar} + Each object of the Participation class must specify the role of its participant FunctionalComponent object in its parent Interaction object with at least one URI that identifies an appropriate ontology term. If a Participation object has multiple role URIs, then they must identify synonymous terms. +\Dtodo{Do we have a RECOMMENDED ontology? SBO?} + While the Interaction class provide a qualitative description of genetic function, quantitative descriptions are also needed for genetic design. Instead of introducing a new language for the specification of mathematical models of biology, the proposed data model leverages existing standards and links to them via the Model class. +\paragraph{Serialization} + The serialization of \sbol{Participation}s has the following form. \lstsetsbol \begin{lstlisting} From ae5e1538812a3c99dff374153428490f3d460506 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 23 Apr 2015 10:07:05 +0000 Subject: [PATCH 054/317] Update on Overleaf. --- model.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/model.tex b/model.tex index a7079e6b..ab260c95 100644 --- a/model.tex +++ b/model.tex @@ -68,11 +68,11 @@ \subsection{Data Types} \subsubsection*{The \sbolheading{identity} property} \label{sec:identity} -This property is required by all \sbol{Identified} objects and has a datatype of \external{URI}. This \external{URI} serves to uniquely identify an SBOL object. The \sbol{identity} property can be used to point to other objects in the same SBOL document or to resources on the Web. Although most SBOL properties are defined by SBOL and serialized with its namespace, the \sbol{identity} property is defined by the analogous RDF \external{about} property and is seralized with the RDF namespace as follows: +This property is required by all \sbol{Identified} objects and has a datatype of \external{URI}. This \external{URI} serves to uniquely identify an SBOL object. The \sbol{identity} property can be used to point to other objects in the same SBOL document or to resources on the Web. Although most SBOL properties are defined by SBOL and serialized with its namespace, the \sbol{identity} property is defined by the analogous RDF \external{about} property and is serialized with the RDF namespace as follows: \external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. -This substitution is in keeping with the SBOL's commitment to the practical reuse of existing standards. +This substitution is in keeping with the commitment of the SBOL community to the practical reuse of existing standards. \subsubsection*{The \sbolheading{persistentIdentity} property} \label{sec:persistentIdentity} From 8944fe20263a2a77e692424d8ce5e684bf674b6d Mon Sep 17 00:00:00 2001 From: jakebeal Date: Thu, 23 Apr 2015 12:48:37 +0200 Subject: [PATCH 055/317] resolved a bunch todo --- examples_model.tex | 4 +++- overview.tex | 2 -- practices.tex | 9 +++------ 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/examples_model.tex b/examples_model.tex index bda01506..c1760cc8 100644 --- a/examples_model.tex +++ b/examples_model.tex @@ -9,6 +9,8 @@ \section{Data Model Examples} This section illustrates how to use the SBOL data model by specifying the design of a LacI/TetR toggle switch similar to those constructed in \cite{Gardner2000}. This design is visualized in \ref{images:toggleswitch_modular}. +\Ctodo{Add a standard toggle switch diagram of two things repressing each other and a simple explanation for people who do not already know the toggle switch.} + \begin{figure}[ht] \begin{center} \includegraphics[scale=0.4]{images/toggleswitch_modular} @@ -65,7 +67,7 @@ \section{Data Model Examples} % Each \sbol{ModuleDefinition} also contains the \sbol{FunctionalComponent}s that participate in \sbol{Interaction}s and are defined by the same \sbol{ComponentDefinition}s as the parallel \sbol{Component}s in the structural hierarchy of the toggle switch. Finally, \sbol{MapsTo} entities are used to refine which \sbol{FunctionalComponent}s of the functional hierarchy are identical or map them to \sbol{Component}s in the structural hierarchy. -\Dtodo{ComponentDefinition.types in the following figure are not consistent with the list of BioPax ontological terms described previously in the Data Model section} +\Ctodo{ComponentDefinition.types in the following figure are not consistent with the list of BioPax ontological terms described previously in the Data Model section. Nick will fix this.} % The first use case is to indicate with greater fidelity how a module describes the function of a composite component, namely by asserting that particular component instantiations within the module correspond to particular component instantiations within the component. diff --git a/overview.tex b/overview.tex index 8a78fe6f..31ba2389 100644 --- a/overview.tex +++ b/overview.tex @@ -43,8 +43,6 @@ \section{Overview of SBOL} \LDtodo{Why are URI's needed for Components? Why not just for ComponentDefinitions? Is there anything in SBOL that does not require a URI?} \Ctodo{Also briefly mention URI} -\Dtodo{where did the XML-RDF section go?} - % The same toggle switch is now displayed using two LacI and TetR inverter submodules in figure \ref{images:toggleswitch_modular}. The LacI inverter uses LacI as input and produces the TetR output, and the TetR inverter uses TetR as input and produces the LacI output. These inputs and outputs are mapped in a parent module. % Removed as redundant: diff --git a/practices.tex b/practices.tex index fa1152e9..788ccf70 100644 --- a/practices.tex +++ b/practices.tex @@ -45,13 +45,10 @@ \subsection{Recommended Ontologies for External Terms} \label{tbl:preferred_external_resources} \end{table} -\Dtodo{?? --> What is the external resource for proteins, discuss it. protein - GO instead of UniProt} -\Dtodo{Should there be an external listing for all Top Level?} +\Ctodo{Goksel and Neil need to sort out GO vs. UniProt, and possibly just recommend both here.} - -\subsection{Naming in Other Implementations} -\Dtodo{Moved these from model, where they clearly didn't belong. I'm not sure they should exist at all, though. -JSB} +\Ctodo{Somebody who cares about this should decide whether any of gets put on the JavaDocs, but it is getting deleted from this document Within an implementing Object-Oriented (OO) API, SBOL properties should be mapped to member accessors that are similarly named and that return idiomatic representations of these properties. For example, a Java implementation would use common Java idioms. In this case, the member accessor for an optional SBOL property could return a Java primitive value, Java object, or null, while the accessor for a multi-valued SBOL property could return a Java \external{Collection}. In general, OO member accessors for multi-valued SBOL properties should never return null. -As another example, a relational implementation of the SBOL API would store the properties and associations a mixture of data fields and references via foreign keys. The fields in individual tables will correspond to the `arrowhead' end of an association (in reverse to the direction in the RDF and OO representations), and the name may be modified to reflect this change in directionality. For example, the \sbol{sequence} association between a \sbol{ComponentDefinition} and \sbol{Sequence} would be represented by a foreign key field on the \sbol{Sequence} table that references a row in the \sbol{ComponentDefinition} table, and it may be named \external{sequenceOf}. +As another example, a relational implementation of the SBOL API would store the properties and associations a mixture of data fields and references via foreign keys. The fields in individual tables will correspond to the `arrowhead' end of an association (in reverse to the direction in the RDF and OO representations), and the name may be modified to reflect this change in directionality. For example, the \sbol{sequence} association between a \sbol{ComponentDefinition} and \sbol{Sequence} would be represented by a foreign key field on the \sbol{Sequence} table that references a row in the \sbol{ComponentDefinition} table, and it may be named \external{sequenceOf}.} \ No newline at end of file From 6319796f0f1470e10c73366ebad1cdba54b63cd2 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 23 Apr 2015 11:57:19 +0000 Subject: [PATCH 056/317] Update on Overleaf. --- example_uml/toggle_3.png | Bin 40618 -> 39523 bytes examples_serialization.tex | 3 +-- history.tex | 2 +- overview.tex | 3 +-- purpose.tex | 2 +- uml/model.png | Bin 4392 -> 3863 bytes 6 files changed, 4 insertions(+), 6 deletions(-) diff --git a/example_uml/toggle_3.png b/example_uml/toggle_3.png index 61a8dd53d47d4b9752018bce3eb5c8017b13e9e4..018a4407e7bd1dc4c148b338e9079ea673dbba9c 100644 GIT binary patch delta 16146 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 -\end{lstlisting} - +\end{lstlisting} \ No newline at end of file diff --git a/history.tex b/history.tex index 6ac6b941..8843f7dd 100644 --- a/history.tex +++ b/history.tex @@ -9,4 +9,4 @@ \section{History and Acknowledgements} \Ctodo{Get lots more authors to sign on} -\LDtodo{Make Herbert write something nice about history to add here -JSB} +\LDtodo{Make Herbert write something nice about history to add here -JSB} \ No newline at end of file diff --git a/overview.tex b/overview.tex index 31ba2389..b7a5e0aa 100644 --- a/overview.tex +++ b/overview.tex @@ -73,5 +73,4 @@ \section{Overview of SBOL} % SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. -% SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. - +% SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. \ No newline at end of file diff --git a/purpose.tex b/purpose.tex index dd9620cc..0be03c50 100644 --- a/purpose.tex +++ b/purpose.tex @@ -36,4 +36,4 @@ \section{Purpose} To address the need for functional descriptions in SBOL, the proposed data model adds classes for modules, interactions, and models. These classes provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the Systems Biology Markup Language (SBML)~\cite{SBML} to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. -\Ctodo{This just sort of stops. Need a better end. --JSB} +\Ctodo{This just sort of stops. Need a better end. --JSB} \ No newline at end of file diff --git a/uml/model.png b/uml/model.png index c97a860061ce87f13842fdec84f43691bbcbd78e..6839c4b24c837021ddea6f11943c534711e0c9c7 100644 GIT binary patch literal 3863 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 Date: Thu, 23 Apr 2015 14:04:56 +0200 Subject: [PATCH 057/317] red queries handled --- model.tex | 94 +++++++++++++++++++++++++------------------------------ 1 file changed, 43 insertions(+), 51 deletions(-) diff --git a/model.tex b/model.tex index 037043fe..d41fd495 100644 --- a/model.tex +++ b/model.tex @@ -36,10 +36,10 @@ \subsection{Naming Conventions} Within the SBOL data model, all properties are given a singular or plural name in accordance with their data cardinalities. The forms of these names follow the usual rules of grammar. For example, \sbol{sequenceAnnotation} is the singular form of \sbol{sequenceAnnotation}s. -\todo[inline]{has RDF been introduced yet?} +\Ctodo{has RDF been introduced yet?} -Within the RDF serialization of SBOL, however, SBOL properties are always given singular names. The serialization does not use RDF collections to represent multiple values of an SBOL property. Hence, if a SBOL property has five values, then its serialization contains five RDF triples with singular predicate names. -\Dtodo{Why, why, why are these two different?} +Within the RDF serialization of SBOL, however, SBOL properties are always given singular names. This is because the serialization writes each property element down individually, so if there are multiple values, they are represented as several entries of a single value each. +For example, if a SBOL property has five values, then its serialization contains five RDF triples with singular predicate names. \subsection{Data Types} @@ -71,8 +71,9 @@ \subsubsection*{The \sbolheading{persistentIdentity} property} \label{sec:persistentIdentity} The \sbol{persistentIdentity} property is optional and also has a datatype of \external{URI}. This property is used to declare that a set of SBOL objects refer to the ``same'' thing (by virtue of having the same persistent identity), e.g., a sequence of improvements on a design. This persistent identity can then be used to return the most up-to-date version of a SBOL object. -\Dtodo{consider not putting the toggle switch example at the end, but rather weaving references to the toggle switch into each subsection} +\Ctodo{Put a small concrete example for each toplevel, in the style of the mapsTo diagram} +\Ctodo{need to somehow explain stuff about Maven versioning} \subsubsection*{The \sbolheading{version} property} \label{sec:version} @@ -91,18 +92,23 @@ \subsubsection*{The \sbolheading{version} property} \end{figure} \Ctodo{Reorder displayId and name} +\subsubsection*{The \sbolheading{displayId} property} +\label{sec:displayId} +An optional identifier, with a data type of \external{String}. It is intended to be an intermediate between \sbol{name} and \sbol{identity}: machine-friendly text that is not necessarily unique, and more human-friendly than the full URI of an \sbol{identity}. + +In particular, displayId string MUST be compliant with type \external{http://www.w3.org/TR/xmlschema-2/\#NCName} + \subsubsection*{The \sbolheading{name} property} \label{sec:name} An optional, human readable name property, with a data type of \external{String}. It is intended to be displayed to a human when visualising SBOL objects. If a \sbol{Documented} object lacks a name, it is expected that software tools will instead display the entity's \sbol{displayId} or \sbol{identity} as a last resort. -\subsubsection*{The \sbolheading{displayId} property} -\label{sec:displayId} -An optional identifier, with a data type of \external{String}. It is intended to be an intermediate between \sbol{name} and \sbol{identity}: machine-friendly text that is not necessarily unique, and more human-friendly than the full URI of an \sbol{identity}. +\Ctodo{name is no longer the preferred, also we need to say that displayId should be to the best of one's ability locally unique. And RECOMMEND that any software tool give people the ability to switch perspectives between looking at names (for human-friendliness) and looking at displayIds (for better uniqueness).} -In particular, displayId string MUST be compliant with type \external{http://www.w3.org/TR/xmlschema-2/\#NCName} +\Ctodo{Need to require use of DublinCore names and show examples of them: non-stanard mappings per Matt: Title vs. Name, descripton is dcterms:description} -\Dtodo{Confirm sanitized URIs; need to add sanitization to libSBOLj} +\Ctodo{SHOULD sanitize your displayId entries} +\Ctodo{need to add sanitization to libSBOLj} \subsubsection*{The \sbolheading{description} property} \label{sec:description} @@ -148,7 +154,7 @@ \subsubsection*{The \sbolheading{encoding} property} \label{sec:encoding} Required. \sbol{Sequence} objects identify their type of encoding with a \external{URI}. For example, a \sbol{Sequence} object that encodes a DNA sequence would have an \external{IUPAC DNA} encoding, while a \sbol{Sequence} object that encodes the chemical structure of glucose might have a \external{simplified molecular-input line-entry system (SMILES)} encoding (\ref{tbl:sequence_encodings}). -\Dtodo{Are these required or recommended?} +\Ctodo{These are RECOMMENDED.} %A Summary of letters for nucleic acids and aminoacids \begin{table}[ht] @@ -164,7 +170,8 @@ \subsubsection*{The \sbolheading{encoding} property} \caption{URIs for the encoding property and the corresponding ComponentDefiniton types, which are BioPAX terms.} \label{tbl:sequence_encodings} \end{table} -\Dtodo{BioPAX terms unclear} +\Ctodo{Need to fix the caption of table 1, and need to match the biopa terms and give a forward pointer to table 2} +\Ctodo{Matthew Pocock is in charge of deciding whether any more ontologies should be listed.} The serialization of \sbol{Sequence} objects has the following form: \lstsetsbol @@ -209,6 +216,8 @@ \subsubsection*{The \sbolheading{types} property} \label{sec:types} Every \sbol{ComponentDefinition} MUST have at least one \sbol{types} \external{URI} that identifies a term from an appropriate ontology, such as the BioPAX ontology (some recommended examples are given in \ref{tbl:componentdefinition_types}) or the ontology of Chemical Entities of Biological Interest (ChEBI). A type URI documents the category of biochemical or physical entity (for example DNA, protein, or RNA) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. If a \sbol{ComponentDefinition} object has multiple type URIs, then they MUST identify synonymous terms. +\Ctodo{It is REQUIRED that if your component fits a Table 2 term, that you MUST use that term as at least one of the terms.} + \begin{table}[ht] \begin{edtable}{tabular}{ll} \toprule @@ -277,7 +286,7 @@ \subsubsection*{Serialization} [\emph{elements}] \end{lstlisting} -\Dtodo{Have we explained anywhere how to interpret these template listings?} +\Ctodo{We need to have an explanation of how to interpret these, and also have a pointer to it from each example.} The example below shows the serialization of a simple \sbol{ComponentDefinition} object. The \external{DnaRegion} from BioPAX and \external{CHEBI:4705} from CHEBI are used to indicate the type of the biological entity as a DNA molecule. Its role is specified via the generic \external{SO:0000167} (\external{promoter}) and more specific \external{SO:0000613} (\external{bacterial\_RNApol\_promoter}) terms. @@ -496,9 +505,11 @@ \subsubsection{SequenceConstraint} \paragraph{The \sbolheading{subject} property} \label{sec:subject} -This REQUIRED property specifies the URI \sbol{identity} of the first \sbol{Component} object in the relation. +This REQUIRED property specifies the \sbol{identity} URI of the first \sbol{Component} object in the relation. + +\Ctodo{Need to document that you can reference a persistentIdentity or an identity when you reference a version. Everywhere we say ``URI'' for an SBOL object, it means one of these two properties} -\Dtodo{Check to make sure we say URI identity and not just URI everywhere that we mean an identity} +\Ctodo{Remove ``identity'' for names of URIs everywhere} \paragraph{The \sbolheading{object} property} \label{sec:object} @@ -526,7 +537,7 @@ \subsubsection{SequenceConstraint} \label{tbl:restriction_types} \end{table} -\Dtodo{Should we have nextTo?} +\Ctodo{We need things like nextTo and overlapping, and think we might be able to get it from region-connection-calculus ontology} \paragraph{Serialization} @@ -551,7 +562,7 @@ \subsubsection{SequenceConstraint} \end{lstlisting} -\Dtodo{In every serialization example, make sure something differs in order from the template, to more intuitively illustrate the unimportance of order} +\Ctodo{In every serialization example, make sure something differs in order from the template, to more intuitively illustrate the unimportance of order --> actually no, jake shoud put bac the examples he messed with} \subsection{Model} \label{sec:Model} @@ -612,25 +623,7 @@ \subsubsection*{ The \sbolheading{framework} property} \LDtodo{Made sure SBO frameworks goes in ontology best-practices section} -\subsubsection*{ The \sbolheading{role} property} -This OPTIONAL property is a URI that specifies what the model is for, such as part or interaction model (\ref{tbl:model_roles}). -\Dtodo{What does this actually mean? -JSB} - -\Dtodo{Are we agreeing on this table? Do we want to give more flexibility?} - -\begin{table}[ht] - \begin{edtable}{tabular}{l} - \toprule - \textbf{Model Roles} \\ - \midrule - http://sbols.org/v2\#component\_model\\ - http://sbols.org/v2\#interaction\_model\\ - http://sbols.org/v2\#module\_model\\ - \bottomrule - \end{edtable} - \caption{URI constants for model roles} - \label{tbl:model_roles} -\end{table} +\Ctodo{We are dropping the role property entirely --- make sure it gets deleted} \subsubsection*{Serialization} @@ -665,7 +658,7 @@ \subsubsection*{Serialization} -\Dtodo{This section has not been edited much compared to other sections. We need to explain classes and their properties a bit more in detail.} +\Ctodo{This section has not been edited much compared to other sections. We need to explain classes and their properties a bit more in detail.} \subsection{ModuleDefinition} \label{sec:ModuleDefinition} @@ -695,13 +688,13 @@ \subsubsection*{The \sbolheading{models} property} A ModuleDefinition object can link to more than one model since each one can encode different levels of functional detail and play different roles in engineering design. \Ctodo{clarify this bit with a bit more explanation and better content} -\Dtodo{GM:Is the property called submodules or modules? libSBOLj serialises using the subModule property.} +\Ctodo{make sure submodules --> modules} -\subsubsection*{The \sbolheading{subModules} property} +\subsubsection*{The \sbolheading{modules} property} This property is optional and includes a set of \sbol{Module} entities, which refer to \sbol{ModuleDefinition}s to be imported. \Ctodo{use better language, like in componentdefinition} -\todo[inline]{GM: libSBOLj serialised the property names as component. Do we use functionalComponent ot component as the property name?} +\Ctodo{component --> functionalComponent in examples} \subsubsection*{The \sbolheading{functionalComponents} property} This property is optional and includes a set of \sbol{FunctionalComponent} entities. These entities are then used to describe biological interactions via \sbol{Participation} entities. @@ -739,7 +732,7 @@ \subsubsection*{Serialization} \subsubsection{FunctionalComponent} \label{sec:FunctionalComponent} Composition of the functional layer of SBOL designs is accomplished using \sbol{FunctionalComponent} objects. Each FunctionalComponent object is owned by a \sbol{ModuleDefinition} and serves as an explicit usage of a \sbol{Component} object for the purpose of fulfilling some function. In addition, each \sbol{FunctionalComponent} must specify via the ``direction'' field (\ref{tbl:functionalcomponent_directions}) whether it serves as an input, output, both, or neither for its parent \sbol{ModuleDefinition} object. -\Dtodo{Previously said a Module could own a FunctionalComponet, which i'm pretty sure is false -JB} +\Ctodo{Previously said a Module could own a FunctionalComponet, which i'm pretty sure is false -JB Yes, it's false, fix it} \LDtodo{Need to explain direction better.} @@ -796,9 +789,9 @@ \subsubsection{Module} The \sbol{Module} class enables the composition of \sbol{ModuleDefinition} objects from other, smaller \sbol{ModuleDefinition} objects. \textcolor{red}{The first data field, ``definition'', links to the ModuleDefinition object that is effectively a part of the Module object that owns the Module object.} The second data field, ``mappings'', is a set of MapsTo objects that link between the Component objects at the same level of the design hierarchy as the Module object and the Component objects that are lower in the design hierarchy, thereby composing these objects with greater specificity. -\Dtodo{mappings or mapsTo?} +\Ctodo{mappings or mapsTo? --> mapsTo} \Ctodo{need to clean up this whole description} -\Dtodo{Is the notion of ``level of design hierarchy'' real? I think it doesn't need to be stated here, it's actually a best practice.} +\Ctodo{Is the notion of ``level of design hierarchy'' real? I think it doesn't need to be stated here, it's actually a best practice. --> it's a best practice. Nick will write this better.} The serialization of \sbol{Module}s has the following form. \lstsetsbol @@ -851,7 +844,8 @@ \subsubsection{MapsTo} \label{tbl:mapsto_refinement} \end{table} -\Dtodo{The notion of refinement is very unclear -JB} +\Ctodo{libsbol and refinements types here need to agree on consistent capitalization} +\Ctodo{The notion of refinement is very unclear -JB Clean up the text} %GM: The paragraph below is now explained in the table above. Commented for now. Please remove the commented lines if you agree with the table description. %In addition to specifying a link, each MapsTo object must also specify a ``refinement'' relationship between its local and remote Components. Under this data model, there are four types of refinement: ``verifyIdentical'' requires that the Component objects link to the same ComponentDefinition object, ``useLocal'' indicates that the local Component object overrides the remote Component object, ``useRemote'' indicates the opposite, and “merge” indicates that data fields of the local and remote ComponentInstantiation objects are to be interpreted in combination. @@ -894,7 +888,6 @@ \subsubsection{MapsTo} \end{lstlisting} -\Dtodo{The local and remote description in the MapsTo description is not same as the one below. Should not we use local for fcs in the submodules?} In the example below, a \sbol{FunctionalComponent} entity from the submodule is linked to a \sbol{FunctionalComponent} entity in a parent module. The former is described in the imported \sbol{ModuleDefinition} entity which is referred to by the definition property of the \sbol{Module} entity. The latter is defined in the parent \sbol{ModuleDefinition}, importing the sub module. The full example can be found in \ref{ser:toggleswitch}. \lstsetsbol \begin{lstlisting} @@ -920,11 +913,11 @@ \subsubsection{Interaction} \Ctodo{Some of this description is incorrect or unclear} The Interaction class provides a qualitative basis for asserting the intended function of a given ModuleDefinition object. The proposed data model supports the representation of regulatory interactions, such as activation or repression, and processes from the central dogma of biology, such as transcription and translation. Other supported interaction types include non-covalent binding between a small molecule and TF, and phosphorylation of a TF by an enzyme. -\Dtodo{What does it mean for an interaction to be supported?} +\Ctodo{What does it mean for an interaction to be supported? --> nothing, pick a better word} Each Interaction object must specify its type with at least one URI that identifies an appropriate ontology term, such as a term from the Systems Biology Ontology (SBO). If an Interaction object has multiple type URIs, then they must identify synonymous terms. -\Dtodo{Is SBO RECOMMENDED or just an example?} +\Ctodo{Like the others, SBO is REQUIRED if the term exists, and you can add other stuff. We also need to explain this up front in the beginning of the section} Furthermore, each Interaction object must specify its participating \sbol{FunctionalComponent} entities by linking to one or more objects of the Participation class. \LDtodo{I don't think this is really a MUST} @@ -941,8 +934,6 @@ \subsubsection{Interaction} \end{lstlisting} -\Dtodo{Can an interaction have serial participants?} - \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/participation} @@ -958,7 +949,9 @@ \subsubsection{Participation} Each object of the Participation class must specify the role of its participant FunctionalComponent object in its parent Interaction object with at least one URI that identifies an appropriate ontology term. If a Participation object has multiple role URIs, then they must identify synonymous terms. -\Dtodo{Do we have a RECOMMENDED ontology? SBO?} +\Ctodo{SBO is our REQUIRED term if available, just as in the prior cases} + +\Ctodo{Goksel is going to check if there is a superset ontology that should displace SBO} While the Interaction class provide a qualitative description of genetic function, quantitative descriptions are also needed for genetic design. Instead of introducing a new language for the specification of mathematical models of biology, the proposed data model leverages existing standards and links to them via the Model class. @@ -1015,7 +1008,7 @@ \subsubsection*{Serialization} \end{lstlisting} -\Dtodo{Should we make all of the example URIs compliant?} +\Ctodo{We should make all of the example URIs compliant} The example below shows the serialization of a \sbol{Collection} object grouping together a library of constitutive promoters. \lstsetsbol @@ -1116,7 +1109,6 @@ \subsubsection{GenericTopLevel} Entities that have independent existence (i.e., would be another ``top level'' class) and are not recognised by the SBOL standard are loaded into these top level entities. These \sbol{GenericTopLevel} entities can thus be safely used by tools to exchange non-SBOL data embedded separately within SBOL. As with any other top level entities, \sbol{GenericTopLevel} entities may include SBOL properties such as \sbol{name}, \sbol{description}, \sbol{displayId} and so on. The type of data found in the generic entity is indicated using the standard \external{rdf:type} property. -\Dtodo{Is it possible to have multiple types for GenericTopLevel elements? If so, update the diagram.} \begin{figure}[ht] \begin{center} From 064b6271c27098cc004c2043c63fb8397d0975fe Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 23 Apr 2015 14:54:11 +0000 Subject: [PATCH 058/317] Update on Overleaf. --- examples_model.tex | 2 -- model.tex | 17 ++++++++--------- sbol2.tex | 1 + 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/examples_model.tex b/examples_model.tex index c1760cc8..78be8d4b 100644 --- a/examples_model.tex +++ b/examples_model.tex @@ -5,8 +5,6 @@ \section{Data Model Examples} %\subsection{LacI/TetR Toggle Switch} -\Ctodo{I would suggest a more complete and more explicit mapping of vocabulary to the toggle switch example. -bder} - This section illustrates how to use the SBOL data model by specifying the design of a LacI/TetR toggle switch similar to those constructed in \cite{Gardner2000}. This design is visualized in \ref{images:toggleswitch_modular}. \Ctodo{Add a standard toggle switch diagram of two things repressing each other and a simple explanation for people who do not already know the toggle switch.} diff --git a/model.tex b/model.tex index d41fd495..e8ed4bd8 100644 --- a/model.tex +++ b/model.tex @@ -49,6 +49,8 @@ \subsection{Data Types} \subsection {Identified} \label{sec:Identified} +\Ctodo{Put a small concrete example for each toplevel, in the style of the mapsTo diagram} + \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/identified} @@ -57,11 +59,11 @@ \subsection{Data Types} \end{center} \end{figure} -All SBOL-defined classes are directly or indirectly derived from the \sbol{Identified} class. This inheritance enables SBOL objects to be identified using unique \external{URI}s that may refer to relative locations within an SBOL document or URLs that refer to locations on the World Wide Web. As shown in \ref{uml:identified}, this class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, \sbol{version}, and \sbol{annotations}. The latter property is described separately in \ref{sec:annotations}. +All SBOL-defined classes are directly or indirectly derived from the \sbol{Identified} class. This inheritance means that all SBOL objects are identified using \external{URI}s that uniquely refer to these objects within an SBOL document or at locations on the World Wide Web. As shown in \ref{uml:identified}, the \sbol{Identified} class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, \sbol{version}, and \sbol{annotations}. The latter property is described separately in \ref{sec:annotations}. \subsubsection*{The \sbolheading{identity} property} \label{sec:identity} -This property is required by all \sbol{Identified} objects and has a datatype of \external{URI}. This \external{URI} serves to uniquely identify an SBOL object. The \sbol{identity} property can be used to point to other objects in the same SBOL document or to resources on the Web. Although most SBOL properties are defined by SBOL and serialized with its namespace, the \sbol{identity} property is defined by the analogous RDF \external{about} property and is serialized with the RDF namespace as follows: +The \sbol{identity} property is required by all \sbol{Identified} objects and has a data type of \external{URI}. This \external{URI} serves to uniquely identify an SBOL object. Although most SBOL properties are defined by SBOL and serialized with its namespace, the \sbol{identity} property is defined by the analogous RDF \external{about} property and is serialized with the RDF namespace as follows: \external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. @@ -69,15 +71,13 @@ \subsubsection*{The \sbolheading{identity} property} \subsubsection*{The \sbolheading{persistentIdentity} property} \label{sec:persistentIdentity} -The \sbol{persistentIdentity} property is optional and also has a datatype of \external{URI}. This property is used to declare that a set of SBOL objects refer to the ``same'' thing (by virtue of having the same persistent identity), e.g., a sequence of improvements on a design. This persistent identity can then be used to return the most up-to-date version of a SBOL object. - -\Ctodo{Put a small concrete example for each toplevel, in the style of the mapsTo diagram} - -\Ctodo{need to somehow explain stuff about Maven versioning} +The \sbol{persistentIdentity} property is optional and also has a data type of \external{URI}. This \external{URI} serves to uniquely refer to a set of SBOL objects that are different versions of each other. An SBOL object can referred to by either its \sbol{identity} \external{URI} or its \sbol{persistentIdentity} \external{URI}. In the latter case, this reference only holds if the SBOL object has the latest \sbol{version} property out of those objects with the same \sbol{persistentIdentity}. \subsubsection*{The \sbolheading{version} property} \label{sec:version} -This property has a datatype of \external{String} and is used along with the \sbol{persistentIdentity} property to indicate the version of an SBOL object for comparison with other SBOL objects with the same persistent identity. + +\Ctodo{need to somehow explain stuff about Maven versioning} +The \sbol{version} property is optional and has a data type of \external{String}. This property can be used to compare two SBOL objects with the same \sbol{persistentIdentity}. \subsection {Documented} \label{sec:Documented} @@ -90,7 +90,6 @@ \subsubsection*{The \sbolheading{version} property} \label{uml:documented} \end{center} \end{figure} -\Ctodo{Reorder displayId and name} \subsubsection*{The \sbolheading{displayId} property} \label{sec:displayId} diff --git a/sbol2.tex b/sbol2.tex index 552f7ab5..ec57ca22 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -128,6 +128,7 @@ Goksel Misirli & \emph{Newcastle University, GB}\\ Nicholas Roehner & \emph{Boston University, US}\\ Matthew Pocock & \emph{Newcastle University, GB}\\ +Curtis Madsen & \emph{Newcastle University, GB}\\ lots of other community members & all over the world\\ Chris Myers & \emph{University of Utah, US}\\ Anil Wipat & \emph{Newcastle University, GB}\\ From 1590aad8a3b50f1b7528c721a4c931c4a3cf7d9e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 7 May 2015 02:32:53 +0000 Subject: [PATCH 059/317] Update on Overleaf. --- apdx-validation.tex | 230 ++++++++++++++++++++++++++++++++++++++++++++ model.tex | 91 ++++++++++-------- practices.tex | 21 +++- sbol2.tex | 3 + serialization.tex | 1 + uml/documented.png | Bin 4914 -> 4433 bytes uml/identified.png | Bin 5734 -> 6401 bytes 7 files changed, 304 insertions(+), 42 deletions(-) create mode 100644 apdx-validation.tex diff --git a/apdx-validation.tex b/apdx-validation.tex new file mode 100644 index 00000000..1e7ee420 --- /dev/null +++ b/apdx-validation.tex @@ -0,0 +1,230 @@ +\newcounter{sbolCtr} +\newcommand{\printValid}{\validRule{sbol-\arabic{sbolCtr}\addtocounter{sbolCtr}{1}}} +\newcommand{\printModeling}{\modelingRule{sbol-\arabic{sbolCtr}\addtocounter{sbolCtr}{1}}} + +\section{Validation Rules} +\label{validation} + +This section summarizes all the conditions that must (or in some cases, +at least \emph{should}) be true of an SBOL Version~2 document. +There are different degrees of rule strictness. Formally, the differences are expressed in the statement of a rule: either a rule states that a condition \emph{must} be true, or a rule states that it \emph{should} be true. Rules of the former kind are strict SBOL validation rules---data encoded in SBOL must conform to +all of them in order to be considered valid. Rules of the latter kind +are consistency rules. To help highlight these differences, we use the +following three symbols next to the rule numbers: + +\begin{description} + +\item[\hspace*{6.5pt}\vSymbol\vsp] A \vSymbolName indicates a + \emph{requirement} for SBOL conformance. If a SBOL document does not follow this rule, it does not conform to the SBOL + specification. (Mnemonic intention behind the choice of symbol: + ``This must be checked.'') + +\item[\hspace*{6.5pt}\cSymbol\csp] A \cSymbolName indicates a + \emph{recommendation} for consistency. If a SBOL document does not + follow this rule, it is not considered strictly invalid as far as the + SBOL specification is concerned; however, it indicates that the model contains a physical or conceptual inconsistency. (Mnemonic intention behind the choice of symbol: + ``This is a cause for warning.'') + +\item[\hspace*{6.5pt}\mSymbol\msp] A \mSymbolName indicates a strong + recommendation for best practice. This rule is not strictly + a matter of SBOL encoding, but the recommendation comes from logical + reasoning. As in the previous case, if a SBOL document does not follow this rule, it is not considered an invalid SBOL encoding. (Mnemonic intention behind the choice of symbol: ``You're a star if you heed this.'') + +\end{description} + +The validation rules listed in the following subsections are all stated +or implied in the rest of this specification document. They are +enumerated here for convenience. + +For \notice convenience and brievity, we use the shorthand +``\token{sbol:x}'' to stand for an attribute or element name \token{x} +in the namespace for the SBOL specification, using +the namespace prefix \token{sbol}. In reality, the prefix string may be different from the literal ``\token{sbol}'' used here (and indeed, it can be any valid XML namespace prefix that the software +chooses). We use ``\token{sbol:x}'' because it is shorter than to +write a full explanation everywhere we refer to an attribute or element +in the SBOL specification namespace. + +\subsubsection*{General rules about an SBOL document} +\setcounter{sbolCtr}{10101} + +\printValid{An SBOL document must declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://sbols.org/v2\#}}. (Reference: + \sec{xml-namespace}.)} + +\printValid{An SBOL document must declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://www.w3.org/1999/02/22-rdf-syntax-ns\#}}. (Reference: \sec{xml-namespace}.)} + +\printValid{An SBOL document must declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://purl.org/dc/terms/}}. (Reference: \sec{xml-namespace}.)} + +\printModeling{An SBOL document should declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://www.w3.org/ns/prov\#}}. (Reference: \sec{xml-namespace}.)} + +\subsubsection*{Rules for the \class{Identified} class} +\setcounter{sbolCtr}{10201} + +\printValid{The \sbol{identity} is a required property for all \sbol{Identified} objects and has a data type of URI with a syntax defined by:\\ +\uri{http://www.w3.org/1999/02/22-rdf-syntax\#about} (Reference: \sec{sec:Identified})} + +\printValid{The \sbol{persistentIdentity} is an optional property for all \sbol{Identified} objects and, if provided, has a data type of URI with a syntax defined by:\\ \uri{http://www.w3.org/1999/02/22-rdf-syntax\#about} (Reference: \sec{sec:Identified})} + +\printValid{The \sbol{displayId} is an optional property for all \sbol{Identified} objects and, if provided, has a data type of String that is composed only of alphanumeric or underscore characters and must not begin with a digit. (Reference: \sec{sec:Identified})} + +\printValid{The \sbol{version} is an optional property for all \sbol{Identified} objects and, if provided, has a data type of String that is composed only of alphanumeric characters, underscores, hyphens, and periods and must begin with a digit. (Reference: \sec{sec:Identified})} + +\printValid{The \sbol{annotations} field is an optional list of for all \sbol{Identified} objects and, if provided, includes references to \sbol{Annotation} objects. (Reference: \sec{sec:Identified})} + +\printModeling{The \sbol{identity} of a compliant object must either be equal to the \sbol{persistentIdentity} when no \sbol{version} is specified or equal to "\refObj{persistentIdentity}/\refObj{version}" when a \sbol{version} is provided. (Reference: \sec{sec:compliant})} + +\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{Collection} object is required and must end with "/col/\refObj{displayId}". (Reference: \sec{sec:compliant})} + +\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{ModuleDefinition} object is required and must end with "/md/\refObj{displayId}". (Reference: \sec{sec:compliant})} + +\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{Model} object is required and must end with\\ "/mod/\refObj{displayId}". (Reference: \sec{sec:compliant})} + +\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{ComponentDefinition} object is required and must end with "/cd/\refObj{displayId}". (Reference: \sec{sec:compliant})} + +\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{Sequence} object is required and must end with "/seq/\refObj{displayId}". (Reference: \sec{sec:compliant})} + +\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{GenericTopLevel} object is required and must end with "/gen/\refObj{displayId}". (Reference: \sec{sec:compliant})} + +\printModeling{The \sbol{persistentIdentity} of a compliant child object is required must begin with the\\ \sbol{persistentIdentity} of its parent object and be immediately followed by "/\refObj{displayId}". (Reference: \sec{sec:compliant})} + +\printModeling{The \sbol{version} of a compliant child object is required to be equal to the \sbol{version} of its parent object. (Reference: \sec{sec:compliant})} + +\printModeling{The \sbol{displayId} of a compliant object is required. (Reference: \sec{sec:compliant})} + +\subsubsection*{Rules for the \class{Documented} class} +\setcounter{sbolCtr}{10301} + +\printValid{A \sbol{Documented} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Documented})} + +\printValid{The \sbol{name} is an optional property for all \sbol{Documented} objects and, if provided, has a data type of String. (Reference: \sec{sec:Documented})} + +\printValid{The \sbol{description} is an optional property for all \sbol{Documented} objects and, if provided, has a data type of String. (Reference: \sec{sec:Documented})} + +\subsubsection*{Rules for the \class{TopLevel} class} +\setcounter{sbolCtr}{10401} + +\printValid{A \sbol{TopLevel} object inherits all properties of a \sbol{Documented} object. (Reference: \sec{sec:TopLevel})} + +\subsubsection*{Rules for the \class{Sequence} class} +\setcounter{sbolCtr}{10501} + +\printValid{A \sbol{Sequence} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Sequence})} + +\printValid{The \sbol{elements} is a required property for all \sbol{Sequence} objects and has a data type of String. Its format must be consistent with its specified \sbol{encoding}. (Reference: \sec{sec:Sequence})} + +\printValid{The \sbol{encoding} is a required property for all \sbol{Sequence} objects and has a data type of URI. (Reference: \sec{sec:Sequence})} + +\Ctodo{add best practices about URIs to use for encoding} + +\subsubsection*{Rules for the \class{ComponentDefinition} class} +\setcounter{sbolCtr}{10601} + +\printValid{A \sbol{ComponentDefinition} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:ComponentDefinition})} + +\Ctodo{At least one type is required} + +\Ctodo{Need a rule for each optional list to indicate their required types.} + +\subsubsection*{Rules for the \class{ComponentInstance} class} +\setcounter{sbolCtr}{10701} + +\printValid{A \sbol{ComponentInstance} object inherits all properties of a \sbol{Documented} object. (Reference: \sec{sec:ComponentInstance})} + +\Ctodo{access, definition are required URIs, mapsTo is optional} + +\printValid{A \sbol{Component} object inherits all properties of a \sbol{ComponentInstance} object. (Reference: \sec{sec:ComponentInstance})} + +\printValid{A \sbol{FunctionalComponent} object inherits all properties of a \sbol{ComponentInstance} object. (Reference: \sec{sec:ComponentInstance})} + +\Ctodo{direction is required URI} + +\subsubsection*{Rules for the \class{SequenceAnnotation} class} +\setcounter{sbolCtr}{10801} + +\printValid{A \sbol{SequenceAnnotation} object inherits all properties of a \sbol{Documented} object. (Reference: \sec{sec:SequenceAnnotation})} + +\Ctodo{Required location and optional component.} + +\subsubsection*{Rules for the \class{Location} class} +\setcounter{sbolCtr}{10901} + +\printValid{A \sbol{Location} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Location})} + +\Ctodo{MultiRange, Range, Cut, GenericLocation inherit} + +\Ctodo{MultiRange must have 2 ranges} + +\Ctodo{Range must have start, end >0 with optional orientation URI} + +\Ctodo{Cut must have at >= 0 with optional orientation URI} + +\Ctodo{GenericLocation can have optional orientation URI} + +\subsubsection*{Rules for the \class{SequenceConstraint} class} +\setcounter{sbolCtr}{11001} + +\printValid{A \sbol{SequenceConstraint} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:SequenceConstraint})} + +\Ctodo{Required restriction URI, required subject/object URIs} + +\subsubsection*{Rules for the \class{Model} class} +\setcounter{sbolCtr}{11101} + +\printValid{A \sbol{Model} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Model})} + +\Ctodo{Required source, language, and framework URIs} + +\subsubsection*{Rules for the \class{ModuleDefinition} class} +\setcounter{sbolCtr}{11201} + +\printValid{A \sbol{ModuleDefinition} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:ModuleDefinition})} + +\Ctodo{Optional roles, modules, interactions, models, and functionalComponents} + +\subsubsection*{Rules for the \class{Module} class} +\setcounter{sbolCtr}{11301} + +\printValid{A \sbol{Module} object inherits all properties of a \sbol{Documented} object. (Reference: \sec{sec:Module})} + +\Ctodo{Required definition, optional mapsTos} + +\subsubsection*{Rules for the \class{MapsTo} class} +\setcounter{sbolCtr}{11401} + +\printValid{A \sbol{MapsTo} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:MapsTo})} + +\Ctodo{Required refinement URI, required local/remote URIs} + +\subsubsection*{Rules for the \class{Interaction} class} +\setcounter{sbolCtr}{11501} + +\printValid{A \sbol{Interaction} object inherits all properties of a \sbol{Documented} object. (Reference: \sec{sec:Interaction})} + +\Ctodo{Required type, optional participations} + +\subsubsection*{Rules for the \class{Participation} class} +\setcounter{sbolCtr}{11601} + +\printValid{A \sbol{Participation} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Participation})} + +\Ctodo{Optional roles, required participant} + +\subsubsection*{Rules for the \class{Collection} class} +\setcounter{sbolCtr}{11701} + +\printValid{A \sbol{Collection} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} + +\Ctodo{Optional members} + +\subsubsection*{Rules for the \class{Annotation} class} +\setcounter{sbolCtr}{11801} + +\Ctodo{Not sure what the rules are for this one} + +\subsubsection*{Rules for the \class{GenericTopLevel} class} +\setcounter{sbolCtr}{11701} + +\printValid{A \sbol{GenericTopLevel} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:GenericTopLevel})} + +\Ctodo{Required rdf type} + + diff --git a/model.tex b/model.tex index e8ed4bd8..54306bcc 100644 --- a/model.tex +++ b/model.tex @@ -1,16 +1,14 @@ % ----------------------------------------------------------------------------- \section{SBOL Data Model} % ----------------------------------------------------------------------------- -In this section, we describe the types of biological design data that can belong to an SBOL document and the relationships between these data types. The SBOL data model is specified using Unified Modeling Language (UML) 2.0 diagrams \href{http://www.omg.org/spec/UML/2.0/}{(OMG 2005)}. -This section begins with a review of UML diagrams and naming conventions, then each following subsection explains one of the ``top-level'' objects in the SBOL data model. - -Complete SBOL examples and best practices when using the standard can be found in \ref{sec:examples} and \ref{sec:bestpractices}, respectively. +In this section, we describe the types of biological design data that can belong to an SBOL document and the relationships between these data types. The SBOL data model is specified using Unified Modeling Language (UML) 2.0 diagrams \href{http://www.omg.org/spec/UML/2.0/}{(OMG 2005)}. Subsections \ref{sec:umldiagrams}, \ref{sec:nameconventions}, \ref{sec:datatypes} review the basics of UML diagrams and explain the naming conventions and generic data types used in this specification. The remaining sections then describe the SBOL data model in detail. Complete SBOL examples and best practices when using the standard can be found in \ref{sec:examples} and \ref{sec:bestpractices}, respectively. \subsection{Understanding the UML Diagrams} +\label{sec:umldiagrams} -The types of biological design data modeled by SBOL are commonly referred to as {\em classes}, especially when discussing the details of software implementation. Classes are represented in UML diagrams as rectangles labeled at the top with class names. Classes may be connected to other classes by association properties, which are represented in UML as arrows labeled with data cardinality (i.e., how many instances of that association can exist, as explained below). The remaining (non-association) properties of a class are listed below its name inside the rectangle, and each property is labeled with its data type and cardinality. Finally, classes can inherit the properties of other classes. Inheritance is represented in UML as an arrow with an open-faced, triangular arrowhead that points from the inheriting class to the inherited class. +The types of biological design data modeled by SBOL are commonly referred to as {\em classes}, especially when discussing the details of software implementation. Classes are represented in UML diagrams as rectangles labeled at the top with class names. Classes may be connected to other classes by association properties, which are represented in UML diagrams as arrows. These arrows are labeled with data cardinalities in order to indicate how many values a given association property may possess (see below). The remaining (non-association) properties of a class are listed below its name. Each one of these properties is labeled with its data type and cardinality. Finally, classes can inherit the properties of other classes. Inheritance relationships are represented in UML diagrams as open-faced, triangular arrows that point from the inheriting class to the inherited class. -An association property is a directional relationship between SBOL classes, represented by an arrow. The object that the arrow comes from has the property, and the object that the arrow points to is the associated object. A diamond at the tail of the arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, which means that associated objects exist independently of objects of the class that has the association property. In contrast, filled diamonds indicate composite aggregation, also known as a part-whole relationship, in which objects of the associated class cannot exist independently and must be associated with at most one object of the class that has the association property. +As mentioned above, an association property is a directional relationship between two SBOL classes that is represented using an arrow. The class from which an arrow originates is the owner of the association property, while the class to which the arrow points is the value of the association property. A diamond at the origin of the arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, in which that the owner of the association property exists independently of its value. By contrast, filled diamonds indicate composite aggregation, also known as a part-whole relationship, in which the value of the association property cannot exist independently of its owner. %For example, it will later be shown how objects of the \sbol{SequenceAnnotation} class must associated with an object of the \sbol{ComponentDefinition} class (and only that object). All SBOL properties are labeled with one of several restrictions on data cardinality. These are: @@ -30,6 +28,7 @@ \subsection{Understanding the UML Diagrams} \end{itemize} \subsection{Naming Conventions} +\label{sec:nameconventions} \Ctodo{need to put in typography and upper case vs. camel case, etc.} @@ -42,6 +41,7 @@ \subsection{Naming Conventions} For example, if a SBOL property has five values, then its serialization contains five RDF triples with singular predicate names. \subsection{Data Types} +\label{sec:datatypes} \Ctodo{we use String, Integer, URI, Literal (these are from some W3C or XSD or whatever thing), and the classes below} \Ctodo{Give a forward pointer to RECOMMENDED best-practices for compliant URIs} @@ -73,6 +73,14 @@ \subsubsection*{The \sbolheading{persistentIdentity} property} \label{sec:persistentIdentity} The \sbol{persistentIdentity} property is optional and also has a data type of \external{URI}. This \external{URI} serves to uniquely refer to a set of SBOL objects that are different versions of each other. An SBOL object can referred to by either its \sbol{identity} \external{URI} or its \sbol{persistentIdentity} \external{URI}. In the latter case, this reference only holds if the SBOL object has the latest \sbol{version} property out of those objects with the same \sbol{persistentIdentity}. +\subsubsection*{The \sbolheading{displayId} property} +\label{sec:displayId} +An optional identifier, with a data type of \external{String}. It is intended to be an intermediate between \sbol{name} and \sbol{identity}: machine-friendly text that is not necessarily unique, and more human-friendly than the full URI of an \sbol{identity}. + +\Ctodo{This is the wrong syntax. It allows "-" and "." which we do not allow.} + +In particular, displayId string MUST be compliant with type \external{http://www.w3.org/TR/xmlschema-2/\#NCName} + \subsubsection*{The \sbolheading{version} property} \label{sec:version} @@ -91,12 +99,6 @@ \subsubsection*{The \sbolheading{version} property} \end{center} \end{figure} -\subsubsection*{The \sbolheading{displayId} property} -\label{sec:displayId} -An optional identifier, with a data type of \external{String}. It is intended to be an intermediate between \sbol{name} and \sbol{identity}: machine-friendly text that is not necessarily unique, and more human-friendly than the full URI of an \sbol{identity}. - -In particular, displayId string MUST be compliant with type \external{http://www.w3.org/TR/xmlschema-2/\#NCName} - \subsubsection*{The \sbolheading{name} property} \label{sec:name} An optional, human readable name property, with a data type of \external{String}. It is intended to be displayed to a human when visualising SBOL objects. @@ -171,6 +173,8 @@ \subsubsection*{The \sbolheading{encoding} property} \end{table} \Ctodo{Need to fix the caption of table 1, and need to match the biopa terms and give a forward pointer to table 2} \Ctodo{Matthew Pocock is in charge of deciding whether any more ontologies should be listed.} +\Ctodo{GM: Add the BioPax terms Dna and Rna in addition to DnaRegion and RnaRegion.} + The serialization of \sbol{Sequence} objects has the following form: \lstsetsbol @@ -272,11 +276,11 @@ \subsubsection*{Serialization} \begin{lstlisting} ... - [\emph{zero or one}] ...[\emph{element}] - [\emph{zero or one}] ...[\emph{element}] - [\emph{zero or one}] [\emph{element}] - [\emph{one or more}] [\emph{elements}] - [\emph{one or more}] [\emph{elements}] + [\emph{zero or one}] ... [\emph{element}] + [\emph{zero or one}] ... [\emph{element}] + [\emph{zero or one}] [\emph{element}] + [\emph{one or more}] [\emph{elements}] + [\emph{one or more}] [\emph{elements}] [\emph{zero or more}] ... [\emph{elements}] @@ -292,8 +296,8 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - J23119 promoter - Constitutive promoter + J23119 promoter + Constitutive promoter @@ -362,6 +366,7 @@ \subsubsection{SequenceAnnotation} \label{sec:SequenceAnnotation} The \sbol{SequenceAnnotation} class describes a precisely known location of interest on the \sbol{Sequence} object linked by its parent \sbol{ComponentDefinition} object. It can also optionally associate this location with a \sbol{Component} object. \sbol{SequenceAnnotation} objects specify their location using a \sbol{Location} object, as described below. +\Dtodo{Can we change location to locations (1..*) and eliminate MultiRange class?} \begin{figure}[ht] \begin{center} @@ -422,6 +427,7 @@ \subsubsection{Location} Specifies the end of a \sbol{Range}. This property is REQUIRED and can have \external{integer} values greater than zero. \subparagraph{The \sbolheading{orientation} property} +\label{sec:orientation} This OPTIONAL property has a URI value. For \sbol{ComponentDefinition} objects representing DNA molecules, it is RECOMMENDED to use one of the values in \ref{tbl:orientation_types}. \begin{table}[ht] @@ -460,15 +466,15 @@ \subsubsection{Location} \paragraph{MultiRange} \label{sec:MultiRange} -A MultiRange object represents a location that is specified by multiple Range objects. For example, this capability can be used to specify a ComponentDefinition object that represents the introns or exons of a eukaryotic gene. +A \sbol{MultiRange} object represents a location that is specified by multiple \sbol{Range} objects. For example, this capability can be used to specify a \sbol{ComponentDefinition} object that represents the introns or exons of a eukaryotic gene. \paragraph{Cut} \label{sec:Cut} -The Cut class has been introduced to enable the specification of a location between two indices. -Each Cut object has properties, \sbol{at} and \sbol{orientation}. +The \sbol{Cut} class has been introduced to enable the specification of a location between two indices. +Each \sbol{Cut} object has properties, \sbol{at} and \sbol{orientation}. \subparagraph{The \sbolheading{at} property} - +\label{sec:at} The REQUIRED \sbol{at} property is an index greater than or equal to zero that specifies the index just before the location represented by the Cut object. A Cut object with \sbol{at} equal to zero represents the location just before index one (even though there is no zero index on Structure objects in SBOL). @@ -494,6 +500,8 @@ \subsubsection{SequenceConstraint} A \sbol{SequenceConstraint} object requires \sbol{restriction}, \sbol{subject} and \sbol{object} properties to specify such constraints. +\Dtodo{Should SequenceConstraint be Documented?} + \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/sequence_constraint} @@ -709,10 +717,10 @@ \subsubsection*{Serialization} \begin{lstlisting} ... - [\emph{zero or one}] ...[\emph{element}] - [\emph{zero or one}] ...[\emph{element}] - [\emph{zero or more}] [\emph{elements}] - [\emph{zero or more}] [\emph{elements}] + [\emph{zero or one}] ... [\emph{element}] + [\emph{zero or one}] ... [\emph{element}] + [\emph{zero or more}] [\emph{elements}] + [\emph{zero or more}] [\emph{elements}] [\emph{zero or more}] ... [\emph{elements}] @@ -760,8 +768,8 @@ \subsubsection{FunctionalComponent} \begin{lstlisting} [\emph{zero or one}] [\emph{element}] - [\emph{one}] [\emph{element}] - [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] \end{lstlisting} @@ -843,7 +851,7 @@ \subsubsection{MapsTo} \label{tbl:mapsto_refinement} \end{table} -\Ctodo{libsbol and refinements types here need to agree on consistent capitalization} +\Ctodo{libsbol and refinements types here need to agree on consistent capitalization. GM: We agreed to start with lowercase and use the Capital for the next word.} \Ctodo{The notion of refinement is very unclear -JB Clean up the text} %GM: The paragraph below is now explained in the table above. Commented for now. Please remove the commented lines if you agree with the table description. @@ -932,6 +940,7 @@ \subsubsection{Interaction} \end{lstlisting} +\Dtodo{Should roles be required types instead?} \begin{figure}[ht] \begin{center} @@ -1013,14 +1022,14 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - + - Anderson promoters Anderson + Anderson promoters + The Anderson promoter collection ... - The Anderson promoter collection @@ -1078,7 +1087,7 @@ \subsubsection{Annotating SBOL objects} \lstsetsbol \begin{lstlisting} - + iGEM2006_Berkeley @@ -1088,8 +1097,8 @@ \subsubsection{Annotating SBOL objects} //regulation/constitutive - J23119 - Constitutive promoter + J23119 + Constitutive promoter @@ -1109,6 +1118,8 @@ \subsubsection{GenericTopLevel} These \sbol{GenericTopLevel} entities can thus be safely used by tools to exchange non-SBOL data embedded separately within SBOL. As with any other top level entities, \sbol{GenericTopLevel} entities may include SBOL properties such as \sbol{name}, \sbol{description}, \sbol{displayId} and so on. The type of data found in the generic entity is indicated using the standard \external{rdf:type} property. +\Ctodo{rdf:type should be rdfType} + \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/generictoplevel} @@ -1127,18 +1138,18 @@ \subsubsection{GenericTopLevel} \lstsetsbol \begin{lstlisting} - + - J23119 - Constitutive promoter + J23119 + Constitutive promoter 1 - Datasheet 1 + Datasheet 1 diff --git a/practices.tex b/practices.tex index 788ccf70..e9898aa1 100644 --- a/practices.tex +++ b/practices.tex @@ -12,14 +12,31 @@ \subsection{Creation and Modification Dates} \LDtodo{Annotations: Annotating with created and modified dates, and how to add them.} -\subsection{Compliant URIs} +\subsection{Compliant SBOL Objects} +\label{sec:compliant} -\Ctodo{Chris, add this section} +Maintaining unique identity URIs for all SBOL objects is a very challenging implementation task. To reduce the developer's burden, users of SBOL 2.0 are encouraged to follow a few simple rules when constructing the identity and related fields for SBOL objects. When these rules are followed, we say that the SBOL object is \emph{compliant}. The rules are as follows: +\begin{enumerate} +\item The \sbol{identity} of an SBOL object should begin with a \emph{URI prefix} that maps to a domain over which the user has control. Namely, the user can guarantee uniqueness of identities within this domain. +\item In a compliant SBOL object, the \sbol{persistentIdentity} and \sbol{displayId} properties are required. +\item When a SBOL object is not given a \sbol{version}, the \sbol{identity} and \sbol{persistentIdentity} must be equal. +\item When a SBOL object is given a \sbol{version}, the \sbol{identity} must be equal to the "\refObj{persistentIdentity}/\refObj{version}". +\item The \sbol{persistentIdentity} of a compliant \sbol{Collection} object must end with "/col/\refObj{displayId}". +\item The \sbol{persistentIdentity} of a compliant \sbol{ModuleDefinition} object must end with "/md/\refObj{displayId}". +\item The \sbol{persistentIdentity} of a compliant \sbol{Model} object must end with "/mod/\refObj{displayId}". +\item The \sbol{persistentIdentity} of a compliant \sbol{ComponentDefinition} object must end with "/cd/\refObj{displayId}". +\item The \sbol{persistentIdentity} of a compliant \sbol{Sequence} object must end with "/seq/\refObj{displayId}". +\item The \sbol{persistentIdentity} of a compliant \sbol{GenericTopLevel} object must end with "/gen/\refObj{displayId}". +\item The \sbol{persistentIdentity} of a compliant child object must begin with the \sbol{persistentIdentity} of its parent object and be immediately followed by "/\refObj{displayId}". +\item The \sbol{version} of a compliant child object must be equal to the \sbol{version} of it parent object. +\end{enumerate} \subsection{Annotations: Embedded Objects vs. External References} \LDtodo{Don't drag your giant data files around in SBOL, put them as external links} +Ctodo{Would be good to also talk about completeness checking here. Namely, if all objects are in the file, should verify that links are all valid. When they are not, need a scheme to validate external references.} + \subsection{Recommended Ontologies for External Terms} External ontologies and controlled vocabularies are integral part of SBOL. SBOL utilises these resources to access existing biological information where possible. New SBOL specific terms are defined only when necessary. Instead, SBOL provides placeholders that can point to external terms. For example, types of components, such as DNA or protein, are indicated using BioPAX. Similarly, the role of a DNA component is indicated via the SO terms. Although preferred ontologies have been indicated in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found at \ref{tbl:preferred_external_resources}. diff --git a/sbol2.tex b/sbol2.tex index ec57ca22..7a100685 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -85,6 +85,7 @@ %Commands to format SBOL terms in the document \newcommand{\sbolheading}[1]{\texttt{#1}} \newcommand{\sbol}[1]{\texttt{\hyperref[sec:#1]{#1}}} +\newcommand{\refObj}[1]{$\langle$#1$\rangle$} % Decision vs. Low-Priority Decision vs. Clarification TODOs: \newcommand{\Dtodo}[1]{\todo[inline,color=red]{#1}} \newcommand{\LDtodo}[1]{\todo[inline,color=yellow]{#1}} @@ -183,6 +184,8 @@ \appendix +\input{apdx-validation} + \input{examples_serialization} \end{document} diff --git a/serialization.tex b/serialization.tex index b398ee02..a9e31483 100644 --- a/serialization.tex +++ b/serialization.tex @@ -11,6 +11,7 @@ \section{SBOL RDF Serialization} Arbitrary RDF/XML provides a great deal of flexibility in how equivalent data can be serialized. This flexibility can result in different serializations when processing RDF/XML files using standard off-the-shelf XML tools, such as DOM-OO mappings. To address this problem, we define a canonical association between the nesting of data structures within the SBOL UML data model and the RDF/XML file. For all ownership associations (filled diamonds), the RDF/XML for the owned entity is embedded within the owner's RDF/XML. For all associations that are by reference (open diamonds), the RDF/XML for the referenced property is linked via a resource URI. \Ctodo{Perhaps add or reference an example of ownership vs referencing. - cm} +\Ctodo{GM: Add a statement to indicate that the order of properties is not important.} All first-class SBOL datatypes have an associated identity URI. In the RDF, this is the resource URI used by instances of that type. Properties and associations are asserted as nested RDF/XML assertions. Some datatypes are `top level,' which means that they always appear at the top level of the RDF/XML serialization. All other datatypes will always appear nested within their parent container. \Ctodo{Perhaps add or reference an example of a top level entity vs a nested entity. This may be very similar to the previous example. - cm} diff --git a/uml/documented.png b/uml/documented.png index 2c3983b19c630b7b50b3cc5f4b4b862a7e12e428..4ccb69c480a973e7f5413924ed2f1df5de6f1998 100644 GIT binary patch literal 4433 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 F{{vyea8&>R diff --git a/uml/identified.png b/uml/identified.png index b865092e7597a4c5346a63e6dbf0146ab6dcb4f8..01ba29e8a3ee17cce7b47a49d11ce570ed82412a 100644 GIT binary patch literal 6401 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 W>tD_Arw9Jppn$3BsGyY|A^!`!ZiG7k literal 5734 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 From 80643be2fc62524b79e3118212fe2cfdda80379e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 7 May 2015 13:33:08 +0000 Subject: [PATCH 060/317] Update on Overleaf. --- model.tex | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/model.tex b/model.tex index 54306bcc..f4b7f3bb 100644 --- a/model.tex +++ b/model.tex @@ -30,15 +30,20 @@ \subsection{Understanding the UML Diagrams} \subsection{Naming Conventions} \label{sec:nameconventions} -\Ctodo{need to put in typography and upper case vs. camel case, etc.} +\Rtodo{need to put in typography and upper case vs. camel case, etc.} -Within the SBOL data model, all properties are given a singular or plural name in accordance with their data cardinalities. The forms of these names follow the usual rules of grammar. For example, \sbol{sequenceAnnotation} is the singular form of \sbol{sequenceAnnotation}s. +Within the SBOL data model, each property is given a singular or plural name in accordance with its data cardinalities. The forms of these names follow the usual rules of grammar. For example, \sbol{sequenceAnnotation} is the singular form of \sbol{sequenceAnnotation}s. +Within the \emph{Resource Description Framework} (RDF) serialization of SBOL (see \ref{sec:serialization}), however, SBOL properties are always given singular names. This is because the SBOL data model does not contain classes that correspond directly to the RDF elements that group elements into ordered or unordered sets. Consequently, if an SBOL property has multiple values, than it is serialized as multiple property entries, each with a singluar name and a single value. +For example, if a SBOL property has five values, then its serialization contains five RDF triples, each with a singular predicate name and one of the five values as its object. + +In both the SBOL data model and RDF serialization, property names are written in lower camel case. That is, property names are written as compound words in which each word after the first is capitalized. Class names, however, are written in upper camel case, in which the first word is capitalized as well. + +Lastly, font color is used in the body text of this specification to indicate whether a class or property is defined externally or within the SBOL data model. In particular, if a class or property name is written in a blue font, then it is defined by SBOL. If it is written in a bold font, then it is defined externally. + +\Rtodo{has RDF been introduced yet? added ponter } -\Ctodo{has RDF been introduced yet?} -Within the RDF serialization of SBOL, however, SBOL properties are always given singular names. This is because the serialization writes each property element down individually, so if there are multiple values, they are represented as several entries of a single value each. -For example, if a SBOL property has five values, then its serialization contains five RDF triples with singular predicate names. \subsection{Data Types} \label{sec:datatypes} From ebdca5d890593f7b52ccd5faa67990dded8ce914 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 7 May 2015 13:33:18 +0000 Subject: [PATCH 061/317] Update on Overleaf. --- model.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model.tex b/model.tex index f4b7f3bb..8cc9add2 100644 --- a/model.tex +++ b/model.tex @@ -41,7 +41,7 @@ \subsection{Naming Conventions} Lastly, font color is used in the body text of this specification to indicate whether a class or property is defined externally or within the SBOL data model. In particular, if a class or property name is written in a blue font, then it is defined by SBOL. If it is written in a bold font, then it is defined externally. -\Rtodo{has RDF been introduced yet? added ponter } +\Rtodo{has RDF been introduced yet? added pointer later section on RDF - Nic} From 6553ee68bcbc5c7fbb083af9748adaa886d5f737 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Thu, 7 May 2015 08:33:07 -0500 Subject: [PATCH 062/317] resolved a bunch of todos --- model.tex | 90 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 60 insertions(+), 30 deletions(-) diff --git a/model.tex b/model.tex index 54306bcc..968e1ace 100644 --- a/model.tex +++ b/model.tex @@ -30,21 +30,35 @@ \subsection{Understanding the UML Diagrams} \subsection{Naming Conventions} \label{sec:nameconventions} -\Ctodo{need to put in typography and upper case vs. camel case, etc.} +\Rtodo{need to put in typography and upper case vs. camel case, etc.} + +In this text, data objects are denoted by {\tt monospace font} and all SBOL objects and properties are designated by blue links. +SBOL classes are generally given an upper case ``proper noun'' name, e.g. \sbol{Identified}. +Properties, on the other hand, are named using ``camel case,'' meaning that they begin lower case (e.g., \sbol{identity}) but if they consist of multiple words, all words after the first begin with an upper case letter (e.g., \sbol{persistentIdentity}). Within the SBOL data model, all properties are given a singular or plural name in accordance with their data cardinalities. The forms of these names follow the usual rules of grammar. For example, \sbol{sequenceAnnotation} is the singular form of \sbol{sequenceAnnotation}s. -\Ctodo{has RDF been introduced yet?} +\Rtodo{has RDF been introduced yet?} -Within the RDF serialization of SBOL, however, SBOL properties are always given singular names. This is because the serialization writes each property element down individually, so if there are multiple values, they are represented as several entries of a single value each. +When SBOL objects are serialized to be exchanged (using RDF as described in \ref{sec:serialization}), however, SBOL properties are always given singular names. +This is because the serialization writes each property element down individually, so if there are multiple values, they are represented as several entries of a single value each. For example, if a SBOL property has five values, then its serialization contains five RDF triples with singular predicate names. \subsection{Data Types} \label{sec:datatypes} \Ctodo{we use String, Integer, URI, Literal (these are from some W3C or XSD or whatever thing), and the classes below} -\Ctodo{Give a forward pointer to RECOMMENDED best-practices for compliant URIs} +\Rtodo{Give a forward pointer to RECOMMENDED best-practices for compliant URIs} + +When SBOL use simple ``primitive'' data types such as strings or integers, these are defined as the following specific formal types: +\begin{itemize} +\item String: \url{http://www.w3.org/2001/XMLSchema#string} +\item Integer: \url{http://www.w3.org/2001/XMLSchema#integer} +\item URI: \url{something goes here} + It is further RECOMMENDED that URI structure follows the recommended best-practices for compliant URIs specified in \ref{sec:compliant}.. +\item Literal: \url{something goes here} +\end{itemize} \subsection {Identified} \label{sec:Identified} @@ -75,18 +89,28 @@ \subsubsection*{The \sbolheading{persistentIdentity} property} \subsubsection*{The \sbolheading{displayId} property} \label{sec:displayId} -An optional identifier, with a data type of \external{String}. It is intended to be an intermediate between \sbol{name} and \sbol{identity}: machine-friendly text that is not necessarily unique, and more human-friendly than the full URI of an \sbol{identity}. +An optional identifier, with a data type of \external{String}. It is intended to be an intermediate between \sbol{name} and \sbol{identity}. +It is machine-friendly text that is intended to be locally unique (though global uniqueness is not guaranteed), but more human-friendly than the full URI of an \sbol{identity}. \Ctodo{This is the wrong syntax. It allows "-" and "." which we do not allow.} In particular, displayId string MUST be compliant with type \external{http://www.w3.org/TR/xmlschema-2/\#NCName} +% +Every SBOL implementation MUST enforce such compliance. + +\Rtodo{SHOULD sanitize your displayId entries} \subsubsection*{The \sbolheading{version} property} \label{sec:version} -\Ctodo{need to somehow explain stuff about Maven versioning} +\Rtodo{need to somehow explain stuff about Maven versioning.} The \sbol{version} property is optional and has a data type of \external{String}. This property can be used to compare two SBOL objects with the same \sbol{persistentIdentity}. +If the \sbol{version} property is used, it is RECOMMENDED that version numbering should follow the conventions of semantic versioning (\url{http://semver.org/}), particularly as implemented by Maven (\url{http://maven.apache.org/}). +This convention represents versions as a sequence of numbers and qualifiers separated by {\tt .} and {\tt -} characters and compared in lexicographical order (e.g., 1 < 1.3.1 < 2.0-beta). +For a full explanation, see the linked resources. + + \subsection {Documented} \label{sec:Documented} The Documented class in SBOL represents objects that can be decorated with human-readable properties, such as name and description. This class extends \sbol{Identified} with three additional data properties: \sbol{displayId}, \sbol{name}, and \sbol{description} (\ref{uml:documented}). @@ -102,15 +126,13 @@ \subsubsection*{The \sbolheading{version} property} \subsubsection*{The \sbolheading{name} property} \label{sec:name} An optional, human readable name property, with a data type of \external{String}. It is intended to be displayed to a human when visualising SBOL objects. -If a \sbol{Documented} object lacks a name, it is expected that software tools will instead display the entity's \sbol{displayId} or \sbol{identity} as a last resort. +If a \sbol{Documented} object lacks a name, it is expected that software tools will instead display the entity's \sbol{displayId} or \sbol{identity}. +It is RECOMMENDED that any software tool give users the ability to switch perspectives between looking at names (for human-friendliness) and looking at displayIds (for better uniqueness). -\Ctodo{name is no longer the preferred, also we need to say that displayId should be to the best of one's ability locally unique. And RECOMMEND that any software tool give people the ability to switch perspectives between looking at names (for human-friendliness) and looking at displayIds (for better uniqueness).} +\Rtodo{name is no longer the preferred, also we need to say that displayId should be to the best of one's ability locally unique. And RECOMMEND that any software tool give people the ability to switch perspectives between looking at names (for human-friendliness) and looking at displayIds (for better uniqueness).} \Ctodo{Need to require use of DublinCore names and show examples of them: non-stanard mappings per Matt: Title vs. Name, descripton is dcterms:description} -\Ctodo{SHOULD sanitize your displayId entries} -\Ctodo{need to add sanitization to libSBOLj} - \subsubsection*{The \sbolheading{description} property} \label{sec:description} An OPTIONAL, free text property with the data type of \external{String}, intended to contain a more thorough description of an object. @@ -147,33 +169,35 @@ \subsection{Sequence} \subsubsection*{The \sbolheading{elements} property} \label{sec:elements} -A REQUIRED \external{String} of characters that represent the constituents of biological molecule, for example nucleic acid symbols for DNA molecules. +A REQUIRED \external{String} of characters that represent the constituents of biological molecule, for example nucleic acid symbols for DNA molecules or amino acid symbols for a protein sequence. -\Ctodo{give non-DNA example too -JSB} +\Rtodo{give non-DNA example too -JSB} \subsubsection*{The \sbolheading{encoding} property} \label{sec:encoding} -Required. \sbol{Sequence} objects identify their type of encoding with a \external{URI}. For example, a \sbol{Sequence} object that encodes a DNA sequence would have an \external{IUPAC DNA} encoding, while a \sbol{Sequence} object that encodes the chemical structure of glucose might have a \external{simplified molecular-input line-entry system (SMILES)} encoding (\ref{tbl:sequence_encodings}). +This REQUIRED property contains a \external{URI} used by \sbol{Sequence} objects to how it interpret the characters describing their elements. +For example, a \sbol{Sequence} object that encodes a DNA sequence would have an \external{IUPAC DNA} encoding, while a \sbol{Sequence} object that encodes the chemical structure of glucose might have a \external{simplified molecular-input line-entry system (SMILES)} encoding. +\ref{tbl:sequence_encodings} provides a list of RECOMMENDED encodings to be used. -\Ctodo{These are RECOMMENDED.} +\Rtodo{These are RECOMMENDED.} %A Summary of letters for nucleic acids and aminoacids \begin{table}[ht] \begin{edtable}{tabular}{ll} \toprule - \textbf{ComponentDefinition Type} & \textbf{Encoding} \\ + \textbf{BioPAX term} & \textbf{Encoding} \\ \midrule DnaRegion,RnaRegion & \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html}\\ Protein & \url{http://www.chem.qmul.ac.uk/iupac/AminoAcid/}\\ SmallMolecule & \url{http://www.opensmiles.org/opensmiles.html}\\ \bottomrule \end{edtable} - \caption{URIs for the encoding property and the corresponding ComponentDefiniton types, which are BioPAX terms.} + \caption{The RECOMMENDED URIs for encoding common types of sequences, specified by BioPAX term (see \ref{tbl:componentdefinition_types}). When the sequence is included in a \sbol{ComponentDefinition}, the encoding SHOULD match at least one of its \sbol{types}} \label{tbl:sequence_encodings} \end{table} -\Ctodo{Need to fix the caption of table 1, and need to match the biopa terms and give a forward pointer to table 2} +\Rtodo{Need to fix the caption of table 1, and need to match the biopa terms and give a forward pointer to table 2} \Ctodo{Matthew Pocock is in charge of deciding whether any more ontologies should be listed.} -\Ctodo{GM: Add the BioPax terms Dna and Rna in addition to DnaRegion and RnaRegion.} +\LDtodo{GM: Add the BioPax terms Dna and Rna in addition to DnaRegion and RnaRegion. JSB: is this wise? What distinguishes a Dna from a DnaRegion for the requirement of component-type?} The serialization of \sbol{Sequence} objects has the following form: @@ -217,9 +241,11 @@ \subsection{ComponentDefinition} \LDtodo{Examples of ontologies for non-molecular type gs (eg, light)...?} \subsubsection*{The \sbolheading{types} property} \label{sec:types} -Every \sbol{ComponentDefinition} MUST have at least one \sbol{types} \external{URI} that identifies a term from an appropriate ontology, such as the BioPAX ontology (some recommended examples are given in \ref{tbl:componentdefinition_types}) or the ontology of Chemical Entities of Biological Interest (ChEBI). A type URI documents the category of biochemical or physical entity (for example DNA, protein, or RNA) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. If a \sbol{ComponentDefinition} object has multiple type URIs, then they MUST identify synonymous terms. +Every \sbol{ComponentDefinition} MUST have at least one \sbol{types} \external{URI} that identifies a term from an appropriate ontology, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). A type URI documents the category of biochemical or physical entity (for example DNA, protein, or RNA) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. If a \sbol{ComponentDefinition} object has multiple type URIs, then they MUST identify synonymous terms. -\Ctodo{It is REQUIRED that if your component fits a Table 2 term, that you MUST use that term as at least one of the terms.} +To maximize the compatibility of descriptions, any component that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its types. + +\Rtodo{It is REQUIRED that if your component fits a Table 2 term, that you MUST use that term as at least one of the terms.} \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -254,19 +280,21 @@ \subsubsection*{The \sbolheading{components} property} \subsubsection*{The \sbolheading{sequence} property} \label{sec:sequence} -The sequence property is optional and includes the URI for a corresponding \sbol{Sequence} object. +The sequence property is OPTIONAL and includes the URI for a corresponding \sbol{Sequence} object. \subsubsection*{The \sbolheading{sequenceConstraint} property} \label{sec:sequenceConstraint} -\Ctodo{This needs to be explained} +This OPTIONAL property links to one or more \sbol{SequenceConstraint} objects describing structural restrictions on the placement of subcomponents with respect to the \sbol{Sequence} of a \sbol{ComponentDefinition}. + +\Rtodo{This needs to be explained} \subsubsection*{The \sbolheading{sequenceAnnotation} property} \label{sec:sequenceAnnotation} -\Ctodo{This needs to be better explained. -JSB} +\Rtodo{This needs to be better explained. -JSB} -A \sbol{ComponentDefinition} object can define its structure by linking to objects that belong to the Component, Sequence, SequenceAnnotation, and SequenceConstraint classes. These classes are described below. +This OPTIONAL property links to one or more \sbol{SequenceAnnotation} objects describing the precise locations of subcomponents with respect to the \sbol{Sequence} of a \sbol{ComponentDefinition}. \subsubsection*{Serialization} The parents of the \sbol{ComponentDefinition} class are \sbol{TopLevel} and, transitively, \sbol{Documented} and \sbol{Identified}. As a result, inherited properties are serialised as explained for these parent classes. The sequence property of a \sbol{ComponentDefinition} object includes a URI to a \sbol{Sequence} object and this URI is serialized as an \external{rdf:resource}. The \sbol{types} property may include a collection of type URIs and is serialized as an implicit collection, ignoring the property name ``types''. The \sbol{roles} property is also similarly serialized as an implicit collection of sbol:roles properties. @@ -396,6 +424,8 @@ \subsubsection{SequenceAnnotation} \end{lstlisting} +\Ctodo{Need to give an example with this one} + \Ctodo{Make sure it's clear these templates specify content, not order} @@ -458,9 +488,9 @@ \subsubsection{Location} \lstsetsbol \begin{lstlisting} - 56 68 + \end{lstlisting} @@ -563,13 +593,13 @@ \subsubsection{SequenceConstraint} \lstsetsbol \begin{lstlisting} + - \end{lstlisting} -\Ctodo{In every serialization example, make sure something differs in order from the template, to more intuitively illustrate the unimportance of order --> actually no, jake shoud put bac the examples he messed with} +\Rtodo{In every serialization example, make sure something differs in order from the template, to more intuitively illustrate the unimportance of order --> actually no, jake shoud put bac the examples he messed with} \subsection{Model} \label{sec:Model} @@ -653,10 +683,10 @@ \subsubsection*{Serialization} - - + + From 6c206640dc1af065cb65a9916c969718e963619f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 7 May 2015 13:34:16 +0000 Subject: [PATCH 063/317] Update on Overleaf. --- model.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/model.tex b/model.tex index 8cc9add2..43966b71 100644 --- a/model.tex +++ b/model.tex @@ -30,7 +30,7 @@ \subsection{Understanding the UML Diagrams} \subsection{Naming Conventions} \label{sec:nameconventions} -\Rtodo{need to put in typography and upper case vs. camel case, etc.} +\Rtodo{need to put in typography and upper case vs. camel case, etc. / } Within the SBOL data model, each property is given a singular or plural name in accordance with its data cardinalities. The forms of these names follow the usual rules of grammar. For example, \sbol{sequenceAnnotation} is the singular form of \sbol{sequenceAnnotation}s. @@ -41,7 +41,7 @@ \subsection{Naming Conventions} Lastly, font color is used in the body text of this specification to indicate whether a class or property is defined externally or within the SBOL data model. In particular, if a class or property name is written in a blue font, then it is defined by SBOL. If it is written in a bold font, then it is defined externally. -\Rtodo{has RDF been introduced yet? added pointer later section on RDF - Nic} +\Rtodo{has RDF been introduced yet? / Added pointer to later section on RDF - Nic} From 91d38080db33f18f32372971c6da4496b28e51b0 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 7 May 2015 13:34:21 +0000 Subject: [PATCH 064/317] Update on Overleaf. --- model.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model.tex b/model.tex index 43966b71..8ceb4e89 100644 --- a/model.tex +++ b/model.tex @@ -30,7 +30,7 @@ \subsection{Understanding the UML Diagrams} \subsection{Naming Conventions} \label{sec:nameconventions} -\Rtodo{need to put in typography and upper case vs. camel case, etc. / } +\Rtodo{need to put in typography and upper case vs. camel case, etc. / Done - Nic} Within the SBOL data model, each property is given a singular or plural name in accordance with its data cardinalities. The forms of these names follow the usual rules of grammar. For example, \sbol{sequenceAnnotation} is the singular form of \sbol{sequenceAnnotation}s. From 161717de93482ec16d07168630220d11abc7257e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 7 May 2015 13:34:33 +0000 Subject: [PATCH 065/317] Update on Overleaf. --- model.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model.tex b/model.tex index 8ceb4e89..70318c03 100644 --- a/model.tex +++ b/model.tex @@ -41,7 +41,7 @@ \subsection{Naming Conventions} Lastly, font color is used in the body text of this specification to indicate whether a class or property is defined externally or within the SBOL data model. In particular, if a class or property name is written in a blue font, then it is defined by SBOL. If it is written in a bold font, then it is defined externally. -\Rtodo{has RDF been introduced yet? / Added pointer to later section on RDF - Nic} +\Rtodo{has RDF been introduced yet? / Added pointer to later section on RDF. - Nic} From 15f930ff4375f677061c04be8b744852ee9754bd Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 7 May 2015 13:34:39 +0000 Subject: [PATCH 066/317] Update on Overleaf. --- model.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model.tex b/model.tex index 70318c03..580523d2 100644 --- a/model.tex +++ b/model.tex @@ -30,7 +30,7 @@ \subsection{Understanding the UML Diagrams} \subsection{Naming Conventions} \label{sec:nameconventions} -\Rtodo{need to put in typography and upper case vs. camel case, etc. / Done - Nic} +\Rtodo{need to put in typography and upper case vs. camel case, etc. / Done. - Nic} Within the SBOL data model, each property is given a singular or plural name in accordance with its data cardinalities. The forms of these names follow the usual rules of grammar. For example, \sbol{sequenceAnnotation} is the singular form of \sbol{sequenceAnnotation}s. From 6c645e496a17276585a5e2412a772ae9c27de99c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 7 May 2015 13:34:45 +0000 Subject: [PATCH 067/317] Update on Overleaf. --- model.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model.tex b/model.tex index 580523d2..f8ca0dcb 100644 --- a/model.tex +++ b/model.tex @@ -30,7 +30,7 @@ \subsection{Understanding the UML Diagrams} \subsection{Naming Conventions} \label{sec:nameconventions} -\Rtodo{need to put in typography and upper case vs. camel case, etc. / Done. - Nic} +\Rtodo{Need to put in typography and upper case vs. camel case, etc. / Done. - Nic} Within the SBOL data model, each property is given a singular or plural name in accordance with its data cardinalities. The forms of these names follow the usual rules of grammar. For example, \sbol{sequenceAnnotation} is the singular form of \sbol{sequenceAnnotation}s. From b0357b3f7e08599f40c6d55d54a423dcb8a51c15 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 7 May 2015 13:34:52 +0000 Subject: [PATCH 068/317] Update on Overleaf. --- model.tex | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/model.tex b/model.tex index f8ca0dcb..998a9851 100644 --- a/model.tex +++ b/model.tex @@ -41,9 +41,7 @@ \subsection{Naming Conventions} Lastly, font color is used in the body text of this specification to indicate whether a class or property is defined externally or within the SBOL data model. In particular, if a class or property name is written in a blue font, then it is defined by SBOL. If it is written in a bold font, then it is defined externally. -\Rtodo{has RDF been introduced yet? / Added pointer to later section on RDF. - Nic} - - +\Rtodo{Has RDF been introduced yet? / Added pointer to later section on RDF. - Nic} \subsection{Data Types} \label{sec:datatypes} From edf3a30c7f7dd1fa907bb5b4ad24fc63e7eda9af Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Fri, 8 May 2015 16:19:13 +0000 Subject: [PATCH 069/317] Update on Overleaf. --- model.tex | 131 ++++++++++++++++++++--------------------------- uml/toplevel.png | Bin 7553 -> 7571 bytes 2 files changed, 55 insertions(+), 76 deletions(-) diff --git a/model.tex b/model.tex index 623ca276..7b2cae0b 100644 --- a/model.tex +++ b/model.tex @@ -6,9 +6,11 @@ \section{SBOL Data Model} \subsection{Understanding the UML Diagrams} \label{sec:umldiagrams} -The types of biological design data modeled by SBOL are commonly referred to as {\em classes}, especially when discussing the details of software implementation. Classes are represented in UML diagrams as rectangles labeled at the top with class names. Classes may be connected to other classes by association properties, which are represented in UML diagrams as arrows. These arrows are labeled with data cardinalities in order to indicate how many values a given association property may possess (see below). The remaining (non-association) properties of a class are listed below its name. Each one of these properties is labeled with its data type and cardinality. Finally, classes can inherit the properties of other classes. Inheritance relationships are represented in UML diagrams as open-faced, triangular arrows that point from the inheriting class to the inherited class. +The types of biological design data modeled by SBOL are commonly referred to as {\em classes}, especially when discussing the details of software implementation. Each SBOL class can be instantiated by many SBOL objects. These objects may contain data that differ in content, but they MUST agree on the type and form of their data as dictated by their common class. Classes are represented in UML diagrams as rectangles labeled at the top with class names. -As mentioned above, an association property is a directional relationship between two SBOL classes that is represented using an arrow. The class from which an arrow originates is the owner of the association property, while the class to which the arrow points is the value of the association property. A diamond at the origin of the arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, in which that the owner of the association property exists independently of its value. By contrast, filled diamonds indicate composite aggregation, also known as a part-whole relationship, in which the value of the association property cannot exist independently of its owner. +Classes may be connected to other classes by association properties, which are represented in UML diagrams as arrows. These arrows are labeled with data cardinalities in order to indicate how many values a given association property may possess (see below). The remaining (non-association) properties of a class are listed below its name. Each one of these properties is labeled with its data type and cardinality. + +In the case of an association property, the class from which the arrow originates is the owner of the association property, while the class to which the arrow points is the value of the association property. A diamond at the origin of the arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, in which the owner of the association property exists independently of its value. By contrast, filled diamonds indicate composite aggregation, also known as a part-whole relationship, in which the value of the association property MUST NOT exist independently of its owner. In addition, in the SBOL data model, it is REQUIRED that the value of each composite aggregation property is unique (that is, not the value for more than one such property). %For example, it will later be shown how objects of the \sbol{SequenceAnnotation} class must associated with an object of the \sbol{ComponentDefinition} class (and only that object). All SBOL properties are labeled with one of several restrictions on data cardinality. These are: @@ -27,32 +29,21 @@ \subsection{Understanding the UML Diagrams} \end{itemize} -\subsection{Naming Conventions} -\label{sec:nameconventions} +Finally, classes can inherit the properties of other classes. Inheritance relationships are represented in UML diagrams as open-faced, triangular arrows that point from the inheriting class to the inherited class. Some classes in the SBOL data model cannot be instantiated as objects and exist only to group common properties for inheritance. These classes have italicized names and are known as abstract classes. -\Rtodo{Need to put in typography and upper case vs. camel case, etc. / Done. - Nic} +\subsection{Naming and Font Conventions} +\label{sec:nameconventions} -In this text, data objects are denoted by {\tt monospace font} and all SBOL objects and properties are designated by blue links. -SBOL classes are generally given an upper case ``proper noun'' name, e.g. \sbol{Identified}. -Properties, on the other hand, are named using ``camel case,'' meaning that they begin lower case (e.g., \sbol{identity}) but if they consist of multiple words, all words after the first begin with an upper case letter (e.g., \sbol{persistentIdentity}). +SBOL classes are named using upper "camel case," meaning that each word is capitalized and all words are run together without spaces e.g. \sbol{Identified}, \sbol{SequenceAnnotation}. +Properties, on the other hand, are named using lower camel case, meaning that they begin lower case (e.g., \sbol{identity}) but if they consist of multiple words, all words after the first begin with an upper case letter (e.g., \sbol{persistentIdentity}). Within the SBOL data model, each property is given a singular or plural name in accordance with its data cardinalities. The forms of these names follow the usual rules of grammar. For example, \sbol{sequenceAnnotation} is the singular form of \sbol{sequenceAnnotation}s. -Within the \emph{Resource Description Framework} (RDF) serialization of SBOL (see \ref{sec:serialization}), however, SBOL properties are always given singular names. This is because the SBOL data model does not contain classes that correspond directly to the RDF elements that group elements into ordered or unordered sets. Consequently, if an SBOL property has multiple values, than it is serialized as multiple property entries, each with a singluar name and a single value. -For example, if a SBOL property has five values, then its serialization contains five RDF triples, each with a singular predicate name and one of the five values as its object. - -In both the SBOL data model and RDF serialization, property names are written in lower camel case. That is, property names are written as compound words in which each word after the first is capitalized. Class names, however, are written in upper camel case, in which the first word is capitalized as well. +When SBOL objects are serialized to be exchanged (using \emph{Resource Description Framework} (RDF) as described in \ref{sec:serialization}), however, SBOL properties are always given singular names. This is because the SBOL data model does not contain classes that correspond directly to the RDF elements that group other elements into ordered or unordered sets. Consequently, if an SBOL property has multiple values, then it is serialized as multiple property entries, each with a singular name and a single value. +For example, if an SBOL property has five values, then its serialization contains five RDF triples, each with a singular predicate name and one of the five values as its object. Lastly, font color is used in the body text of this specification to indicate whether a class or property is defined externally or within the SBOL data model. In particular, if a class or property name is written in a blue font, then it is defined by SBOL. If it is written in a bold font, then it is defined externally. -\Rtodo{has RDF been introduced yet? / Added pointer to later section on RDF. - Nic} - -\Rtodo{has RDF been introduced yet?} - -When SBOL objects are serialized to be exchanged (using RDF as described in \ref{sec:serialization}), however, SBOL properties are always given singular names. -This is because the serialization writes each property element down individually, so if there are multiple values, they are represented as several entries of a single value each. -For example, if a SBOL property has five values, then its serialization contains five RDF triples with singular predicate names. - \subsection{Data Types} \label{sec:datatypes} @@ -73,19 +64,23 @@ \subsection{Data Types} \Ctodo{Put a small concrete example for each toplevel, in the style of the mapsTo diagram} +All SBOL-defined classes are directly or indirectly derived from the \sbol{Identified} abstract class. This inheritance means that all SBOL objects are identified using \external{URI}s that uniquely refer to these objects within an SBOL document or at locations on the World Wide Web. + +As shown in \ref{uml:identified}, the \sbol{Identified} class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, \sbol{version}, and \sbol{annotations}. The latter property is described separately in \ref{sec:annotations}. + \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/identified} -\caption[]{The Identified abstract class} +\caption[]{The \sbol{Identified} abstract class.} \label{uml:identified} \end{center} \end{figure} -All SBOL-defined classes are directly or indirectly derived from the \sbol{Identified} class. This inheritance means that all SBOL objects are identified using \external{URI}s that uniquely refer to these objects within an SBOL document or at locations on the World Wide Web. As shown in \ref{uml:identified}, the \sbol{Identified} class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, \sbol{version}, and \sbol{annotations}. The latter property is described separately in \ref{sec:annotations}. - \subsubsection*{The \sbolheading{identity} property} \label{sec:identity} -The \sbol{identity} property is required by all \sbol{Identified} objects and has a data type of \external{URI}. This \external{URI} serves to uniquely identify an SBOL object. Although most SBOL properties are defined by SBOL and serialized with its namespace, the \sbol{identity} property is defined by the analogous RDF \external{about} property and is serialized with the RDF namespace as follows: +The \sbol{identity} property is REQUIRED by all \sbol{Identified} objects and has a data type of \external{URI}. A given \sbol{Identified} object's \sbol{identity} \external{URI} MUST be globally unique among all other \sbol{identity} \external{URI}s. + +Although most SBOL properties are defined by SBOL and serialized with its namespace, the \sbol{identity} property is defined by the analogous RDF \external{about} property and is serialized with the RDF namespace as follows: \external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. @@ -93,83 +88,75 @@ \subsubsection*{The \sbolheading{identity} property} \subsubsection*{The \sbolheading{persistentIdentity} property} \label{sec:persistentIdentity} -The \sbol{persistentIdentity} property is optional and also has a data type of \external{URI}. This \external{URI} serves to uniquely refer to a set of SBOL objects that are different versions of each other. An SBOL object can referred to by either its \sbol{identity} \external{URI} or its \sbol{persistentIdentity} \external{URI}. In the latter case, this reference only holds if the SBOL object has the latest \sbol{version} property out of those objects with the same \sbol{persistentIdentity}. +The \sbol{persistentIdentity} property is OPTIONAL and has a data type of \external{URI}. This \external{URI} serves to uniquely refer to a set of SBOL objects that are different versions of each other. + +An \sbol{Identified} object MUST be referred to in association properties using its \sbol{identity} \external{URI} or its \sbol{persistentIdentity} \external{URI}. In the latter case, this reference only holds if the SBOL object has the latest \sbol{version} property of all objects with the same \sbol{persistentIdentity}. \subsubsection*{The \sbolheading{displayId} property} \label{sec:displayId} -An optional identifier, with a data type of \external{String}. It is intended to be an intermediate between \sbol{name} and \sbol{identity}. -It is machine-friendly text that is intended to be locally unique (though global uniqueness is not guaranteed), but more human-friendly than the full URI of an \sbol{identity}. - -\Ctodo{This is the wrong syntax. It allows "-" and "." which we do not allow.} +The \sbol{displayId} property is an OPTIONAL identifier with a data type of \external{String}. This property is intended to be an intermediate between \sbol{name} and \sbol{identity} that is machine-readable, but more human-readable than the full \external{URI} of an \sbol{identity}. -In particular, displayId string MUST be compliant with type \external{http://www.w3.org/TR/xmlschema-2/\#NCName} -% -Every SBOL implementation MUST enforce such compliance. +If the \sbol{displayId} property is used, then its \external{String} value SHOULD be locally unique (global uniqueness is not required) and MUST be compliant with the type \external{http://www.w3.org/TR/xmlschema-2/\#NCName} -\Rtodo{SHOULD sanitize your displayId entries} +\Ctodo{This is the wrong syntax. It allows "-" and "." which we do not allow.} \subsubsection*{The \sbolheading{version} property} \label{sec:version} -\Rtodo{need to somehow explain stuff about Maven versioning.} -The \sbol{version} property is optional and has a data type of \external{String}. This property can be used to compare two SBOL objects with the same \sbol{persistentIdentity}. +The \sbol{version} property is OPTIONAL and has a data type of \external{String}. This property can be used to compare two SBOL objects with the same \sbol{persistentIdentity}. -If the \sbol{version} property is used, it is RECOMMENDED that version numbering should follow the conventions of semantic versioning (\url{http://semver.org/}), particularly as implemented by Maven (\url{http://maven.apache.org/}). -This convention represents versions as a sequence of numbers and qualifiers separated by {\tt .} and {\tt -} characters and compared in lexicographical order (e.g., 1 < 1.3.1 < 2.0-beta). +If the \sbol{version} property is used, then it is RECOMMENDED that version numbering should follow the conventions of semantic versioning (\url{http://semver.org/}), particularly as implemented by Maven (\url{http://maven.apache.org/}). +This convention represents versions as sequences of numbers and qualifiers separated by the characters {\tt .} and {\tt -} and compared in lexicographical order (for example, 1 < 1.3.1 < 2.0-beta). For a full explanation, see the linked resources. \subsection {Documented} \label{sec:Documented} -The Documented class in SBOL represents objects that can be decorated with human-readable properties, such as name and description. This class extends \sbol{Identified} with three additional data properties: \sbol{displayId}, \sbol{name}, and \sbol{description} (\ref{uml:documented}). +The \sbol{Documented} abstract class is inherited by the classes of SBOL objects that can contain human-readable properties, such as name and description. This class extends \sbol{Identified} with two additional data properties: \sbol{name}, and \sbol{description} (\ref{uml:documented}). \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/documented} -\caption[]{The Documented class} +\caption[]{The \sbol{Documented} abstract class.} \label{uml:documented} \end{center} \end{figure} \subsubsection*{The \sbolheading{name} property} \label{sec:name} -An optional, human readable name property, with a data type of \external{String}. It is intended to be displayed to a human when visualising SBOL objects. -If a \sbol{Documented} object lacks a name, it is expected that software tools will instead display the entity's \sbol{displayId} or \sbol{identity}. -It is RECOMMENDED that any software tool give users the ability to switch perspectives between looking at names (for human-friendliness) and looking at displayIds (for better uniqueness). - -\Rtodo{name is no longer the preferred, also we need to say that displayId should be to the best of one's ability locally unique. And RECOMMEND that any software tool give people the ability to switch perspectives between looking at names (for human-friendliness) and looking at displayIds (for better uniqueness).} \Ctodo{Need to require use of DublinCore names and show examples of them: non-stanard mappings per Matt: Title vs. Name, descripton is dcterms:description} +The \sbol{name} property is OPTIONAL and has a data type of \external{String}. This property is intended to be displayed to a human when visualizing an \sbol{Documented} object. + +If a \sbol{Documented} object lacks a name, then software tools SHOULD instead display the object's \sbol{displayId} or \sbol{identity}. +It is RECOMMENDED that software tools give users the ability to switch perspectives between \sbol{name}s that are human-readable and \sbol{displayId}s that are less human-readable, but are more likely to be unique. + \subsubsection*{The \sbolheading{description} property} \label{sec:description} -An OPTIONAL, free text property with the data type of \external{String}, intended to contain a more thorough description of an object. +The \sbol{description} property is OPTIONAL and has a data type of \external{String}. This property is intended to contain a more thorough description of a \sbol{Documented} object. \subsection {TopLevel} \label{sec:TopLevel} -\sbol{TopLevel} is an abstract class that is extended by any \sbol{Documented} object that can be found at the top level of a SBOL file, i.e., any SBOL object that is not nested inside another object when written to a file. Instead of nesting, composite \sbol{TopLevel} objects link to their subordinate \sbol{TopLevel} objects via \external{URI}s when written to a file. For example, a composite \sbol{Component} object A would link to its sub-Component object B using B's \external{URI}. The TopLevel classes defined by this specification are \sbol{Sequence}, \sbol{ComponentDefinition}, \sbol{ModuleDefinition}, \sbol{Module}, \sbol{Collection} and \sbol{GenericTopLevel} (\ref{uml:toplevel}). +\sbol{TopLevel} is an abstract class that is extended by any \sbol{Documented} class that can be found at the top level of an SBOL file. In other words, when an object that belongs to a \sbol{TopLevel} class is serialized to a file representation, it is not nested inside any other object. Instead of nesting, composite \sbol{TopLevel} objects refer to subordinate \sbol{TopLevel} objects by their \sbol{identity} or \sbol{persistentIdentity} \external{URI}s. The \sbol{TopLevel} classes defined by this specification are \sbol{Sequence}, \sbol{ComponentDefinition}, \sbol{Model}, \sbol{ModuleDefinition}, \sbol{Collection}, and \sbol{GenericTopLevel} (\ref{uml:toplevel}). \begin{figure}[ht] \begin{center} \includegraphics[width=\textwidth]{uml/toplevel} -\caption[]{The TopLevel classes} +\caption[]{Classes that inherit from the \sbol{TopLevel} abstract class.} \label{uml:toplevel} \end{center} \end{figure} -\Ctodo{Make the left-right order in this figure match the order of the following sections} - - - \subsection{Sequence} \label{sec:Sequence} -The \sbol{Sequence} class is used to encode the primary structure of a \sbol{ComponentDefinition} object and the encoding used to capture this information. +The purpose of the \sbol{Sequence} class is to represent the primary structure of a \sbol{ComponentDefinition} object and the manner in which it is encoded. This representation is accomplished by means of the \sbol{elements} property and \sbol{encoding} property (\ref{uml:sequence}). \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/sequence} -\caption[]{Sequence class} +\caption[]{The \sbol{Sequence} class.} \label{uml:sequence} \end{center} \end{figure} @@ -177,38 +164,31 @@ \subsection{Sequence} \subsubsection*{The \sbolheading{elements} property} \label{sec:elements} -A REQUIRED \external{String} of characters that represent the constituents of biological molecule, for example nucleic acid symbols for DNA molecules or amino acid symbols for a protein sequence. - -\Rtodo{give non-DNA example too -JSB} +The \sbol{elements} property is a REQUIRED \external{String} of characters that represents the constituents of a biological or chemical molecule. For example, these characters could represent the nucleotide bases of a molecule of DNA, the amino acid residues of a protein, or the atoms and chemical bonds of a small molecule. \subsubsection*{The \sbolheading{encoding} property} \label{sec:encoding} -This REQUIRED property contains a \external{URI} used by \sbol{Sequence} objects to how it interpret the characters describing their elements. -For example, a \sbol{Sequence} object that encodes a DNA sequence would have an \external{IUPAC DNA} encoding, while a \sbol{Sequence} object that encodes the chemical structure of glucose might have a \external{simplified molecular-input line-entry system (SMILES)} encoding. -\ref{tbl:sequence_encodings} provides a list of RECOMMENDED encodings to be used. - -\Rtodo{These are RECOMMENDED.} +The \sbol{encoding} property is REQUIRED and has a data type of \external{URI}. This property is used to indicate how the \sbol{elements} property of its \sbol{Sequence} object MUST be formed and interpreted. +For example, a \sbol{Sequence} object that represents a DNA sequence would have an \external{IUPAC DNA} encoding that requires the \sbol{elements} property to contain characters that represent nucleotide bases, such as {\tt a}, {\tt t}, {\tt c}, and {\tt g}. A \sbol{Sequence} object that represents the chemical structure of glucose, however, might have a \external{simplified molecular-input line-entry system (SMILES)} encoding that requires the \sbol{elements} property to contain characters that represent atoms and bonds, such as {\tt C}, {\tt N}, {\tt O}, and {\tt =}. +\ref{tbl:sequence_encodings} provides a list of RECOMMENDED encoding \external{URI}s. %A Summary of letters for nucleic acids and aminoacids \begin{table}[ht] - \begin{edtable}{tabular}{ll} + \begin{edtable}{tabular}{lll} \toprule - \textbf{BioPAX term} & \textbf{Encoding} \\ + \textbf{Encoding} & \textbf{URI} & \textbf{ComponentDefinition Type} \\ \midrule - DnaRegion,RnaRegion & \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html}\\ - Protein & \url{http://www.chem.qmul.ac.uk/iupac/AminoAcid/}\\ - SmallMolecule & \url{http://www.opensmiles.org/opensmiles.html}\\ + IUPAC DNA, RNA & \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html} & DnaRegion,RnaRegion \\ + IUPAC Protein & \url{http://www.chem.qmul.ac.uk/iupac/AminoAcid/} & Protein\\ + SMILES & \url{http://www.opensmiles.org/opensmiles.html} & SmallMolecule \\ \bottomrule \end{edtable} - \caption{The RECOMMENDED URIs for encoding common types of sequences, specified by BioPAX term (see \ref{tbl:componentdefinition_types}). When the sequence is included in a \sbol{ComponentDefinition}, the encoding SHOULD match at least one of its \sbol{types}} + \caption{The RECOMMENDED \external{URI}s for encoding common types of sequences, organized by corresponding BioPAX \sbol{types} of \sbol{ComponentDefinition}s (see \ref{tbl:componentdefinition_types}). When a \sbol{ComponentDefinition} includes a \sbol{Sequence}, the \sbol{encoding} property of the \sbol{Sequence} SHOULD correspond to at least one of the BioPAX \sbol{types} of the \sbol{ComponentDefinition}.} \label{tbl:sequence_encodings} \end{table} -\Rtodo{Need to fix the caption of table 1, and need to match the biopa terms and give a forward pointer to table 2} -\Ctodo{Matthew Pocock is in charge of deciding whether any more ontologies should be listed.} -\LDtodo{GM: Add the BioPax terms Dna and Rna in addition to DnaRegion and RnaRegion. JSB: is this wise? What distinguishes a Dna from a DnaRegion for the requirement of component-type?} - -The serialization of \sbol{Sequence} objects has the following form: +\subsubsection*{Serialization} +The serialization of a \sbol{Sequence} object has the following form: \lstsetsbol \begin{lstlisting} @@ -218,7 +198,7 @@ \subsubsection*{The \sbolheading{encoding} property} \end{lstlisting} -The example below shows the serialization of a \sbol{Sequence} object for a promoter. Nucleotide sequences are represented with the \sbol{elements} property and the \sbol{encoding} is serialized as a URI value. +The example below shows the serialization of the \sbol{Sequence} object for the \sbol{ComponentDefinition} of a promoter. The nucleotide bases of the \sbol{Sequence} are serialized as the \external{String} value for its \sbol{elements} property, while its \external{IUPAC DNA} encoding is serialized as the \external{URI} value for its \sbol{encoding} property. \lstsetsbol \begin{lstlisting} @@ -232,8 +212,8 @@ \subsubsection*{The \sbolheading{encoding} property} \subsection{ComponentDefinition} \label{sec:ComponentDefinition} -A \sbol{ComponentDefinition} is an entity in the biological system that is being represented. Its motivating usage is to represent objects with designed sequences (DNA, RNA, or proteins), but it can also represent any other object that is part of or interacts with a design, such as small molecules, molecular complexes, or light. -(this is a generalization from prior versions of SBOL, which only represented DNA). +The \sbol{ComponentDefinition} class represents the structural entities of a biological system design. The primary usage of this class is to represent entities with designed sequences, such as DNA, RNA, and proteins, but it can also be used to represent any other object that is part of the design, such as small molecules, molecular complexes, and light. +(this is a generalization from prior versions of SBOL, which only represented DNA). As shown in \ref{uml:component_definition}, the \sbol{ComponentDefinition} class is described by the properties \sbol{types}, \sbol{roles}, and \sbol{sequence}. In addition, the class includes properties for describing and organizing its substructure, including \sbol{components}, \sbol{sequenceConstraint}s, and \sbol{sequenceAnnotation}s. % Figure has some classes named incorrectly \begin{figure}[ht] @@ -245,7 +225,6 @@ \subsection{ComponentDefinition} \end{figure} - \LDtodo{Examples of ontologies for non-molecular type gs (eg, light)...?} \subsubsection*{The \sbolheading{types} property} \label{sec:types} diff --git a/uml/toplevel.png b/uml/toplevel.png index f25ebd9e8aec888a60cb8121dea8c5aa9b6b21c7..eae0fb81934f1597d433edff9ae15b4daff95414 100644 GIT binary patch literal 7571 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 literal 7553 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 From 2b85530a2ded6e0c43279ac97b20a09cca89e38f Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Fri, 8 May 2015 16:22:37 +0000 Subject: [PATCH 070/317] Update on Overleaf. --- model.tex | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/model.tex b/model.tex index 7b2cae0b..2c659908 100644 --- a/model.tex +++ b/model.tex @@ -226,9 +226,11 @@ \subsection{ComponentDefinition} \LDtodo{Examples of ontologies for non-molecular type gs (eg, light)...?} + \subsubsection*{The \sbolheading{types} property} \label{sec:types} -Every \sbol{ComponentDefinition} MUST have at least one \sbol{types} \external{URI} that identifies a term from an appropriate ontology, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). A type URI documents the category of biochemical or physical entity (for example DNA, protein, or RNA) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. If a \sbol{ComponentDefinition} object has multiple type URIs, then they MUST identify synonymous terms. + +Every \sbol{ComponentDefinition} MUST have at least one \external{URI} in its \sbol{types} property that identifies a term from an appropriate ontology, such as the BioPAX ontology or that of Chemical Entities of Biological Interest (ChEBI). A type URI documents the category of biochemical or physical entity (for example DNA, protein, or RNA) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. If a \sbol{ComponentDefinition} object has multiple type URIs, then they MUST identify synonymous terms. To maximize the compatibility of descriptions, any component that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its types. From 9fe1569dedf9cb3475cca83ed5486dcca0ac3410 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Fri, 8 May 2015 16:26:09 +0000 Subject: [PATCH 071/317] Update on Overleaf. --- model.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model.tex b/model.tex index 2c659908..c7bbce0c 100644 --- a/model.tex +++ b/model.tex @@ -230,7 +230,7 @@ \subsection{ComponentDefinition} \subsubsection*{The \sbolheading{types} property} \label{sec:types} -Every \sbol{ComponentDefinition} MUST have at least one \external{URI} in its \sbol{types} property that identifies a term from an appropriate ontology, such as the BioPAX ontology or that of Chemical Entities of Biological Interest (ChEBI). A type URI documents the category of biochemical or physical entity (for example DNA, protein, or RNA) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. If a \sbol{ComponentDefinition} object has multiple type URIs, then they MUST identify synonymous terms. +Every \sbol{ComponentDefinition} MUST have at least one \external{URI} in its \sbol{types} property that identifies a term from an appropriate ontology, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). A type \external{URI} documents the category of biochemical or physical entity (for example DNA, protein, or RNA) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. If a \sbol{ComponentDefinition} object has multiple type URIs, then they MUST identify synonymous terms. To maximize the compatibility of descriptions, any component that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its types. From ed9484624da9734bebcfdc9d157cd67c8794c162 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Fri, 8 May 2015 18:16:59 +0000 Subject: [PATCH 072/317] Update on Overleaf. --- model.tex | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/model.tex b/model.tex index c7bbce0c..54392e24 100644 --- a/model.tex +++ b/model.tex @@ -130,7 +130,7 @@ \subsubsection*{The \sbolheading{name} property} The \sbol{name} property is OPTIONAL and has a data type of \external{String}. This property is intended to be displayed to a human when visualizing an \sbol{Documented} object. If a \sbol{Documented} object lacks a name, then software tools SHOULD instead display the object's \sbol{displayId} or \sbol{identity}. -It is RECOMMENDED that software tools give users the ability to switch perspectives between \sbol{name}s that are human-readable and \sbol{displayId}s that are less human-readable, but are more likely to be unique. +It is RECOMMENDED that software tools give users the ability to switch perspectives between \sbol{name} properties that are human-readable and \sbol{displayId} properties that are less human-readable, but are more likely to be unique. \subsubsection*{The \sbolheading{description} property} \label{sec:description} @@ -183,7 +183,7 @@ \subsubsection*{The \sbolheading{encoding} property} SMILES & \url{http://www.opensmiles.org/opensmiles.html} & SmallMolecule \\ \bottomrule \end{edtable} - \caption{The RECOMMENDED \external{URI}s for encoding common types of sequences, organized by corresponding BioPAX \sbol{types} of \sbol{ComponentDefinition}s (see \ref{tbl:componentdefinition_types}). When a \sbol{ComponentDefinition} includes a \sbol{Sequence}, the \sbol{encoding} property of the \sbol{Sequence} SHOULD correspond to at least one of the BioPAX \sbol{types} of the \sbol{ComponentDefinition}.} + \caption{The RECOMMENDED \external{URI}s for encoding common types of sequences, organized by corresponding \sbol{types} of \sbol{ComponentDefinition}s (see \ref{tbl:componentdefinition_types}). When a \sbol{ComponentDefinition} includes a \sbol{Sequence}, the \sbol{encoding} property of the \sbol{Sequence} SHOULD correspond to at least one of the \sbol{types} of the \sbol{ComponentDefinition}.} \label{tbl:sequence_encodings} \end{table} @@ -212,14 +212,16 @@ \subsubsection*{Serialization} \subsection{ComponentDefinition} \label{sec:ComponentDefinition} -The \sbol{ComponentDefinition} class represents the structural entities of a biological system design. The primary usage of this class is to represent entities with designed sequences, such as DNA, RNA, and proteins, but it can also be used to represent any other object that is part of the design, such as small molecules, molecular complexes, and light. -(this is a generalization from prior versions of SBOL, which only represented DNA). As shown in \ref{uml:component_definition}, the \sbol{ComponentDefinition} class is described by the properties \sbol{types}, \sbol{roles}, and \sbol{sequence}. In addition, the class includes properties for describing and organizing its substructure, including \sbol{components}, \sbol{sequenceConstraint}s, and \sbol{sequenceAnnotation}s. +The \sbol{ComponentDefinition} class represents the structural entities of a biological design. The primary usage of this class is to represent structural entities with designed sequences, such as DNA, RNA, and proteins, but it can also be used to represent any other entity that is part of the design, such as small molecules, molecular complexes, and light. +(this is a generalization from prior versions of SBOL, which only represented DNA). + +As shown in \ref{uml:component_definition}, the \sbol{ComponentDefinition} class describes a structural design entity using the following properties: \sbol{types}, \sbol{roles}, and \sbol{sequence}. In addition, this class has properties for describing and organizing the substructure of said design entity, including \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations}. % Figure has some classes named incorrectly \begin{figure}[ht] \begin{center} \includegraphics[width=0.95\textwidth]{uml/component_definition} -\caption[]{ComponentDefinition} +\caption[]{The \sbol{ComponentDefinition} class.} \label{uml:component_definition} \end{center} \end{figure} @@ -230,16 +232,14 @@ \subsection{ComponentDefinition} \subsubsection*{The \sbolheading{types} property} \label{sec:types} -Every \sbol{ComponentDefinition} MUST have at least one \external{URI} in its \sbol{types} property that identifies a term from an appropriate ontology, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). A type \external{URI} documents the category of biochemical or physical entity (for example DNA, protein, or RNA) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. If a \sbol{ComponentDefinition} object has multiple type URIs, then they MUST identify synonymous terms. - -To maximize the compatibility of descriptions, any component that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its types. +The \sbol{types} property is a REQUIRED set of \external{URI}s that specifies the category of biochemical or physical entity (for example DNA, protein, or small molecule) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. -\Rtodo{It is REQUIRED that if your component fits a Table 2 term, that you MUST use that term as at least one of the terms.} +The \sbol{types} property of every \sbol{ComponentDefinition} MUST contain at least one \external{URI} that identifies a term from an appropriate ontology, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). Furthermore, if the \sbol{types} property contains multiple URIs, then they MUST identify synonymous terms. Finally, in order to maximize the compatibility of descriptions, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbol{types}. \begin{table}[ht] \begin{edtable}{tabular}{ll} \toprule - \textbf{Entity Type} & \textbf{BioPAX Term} \\ + \textbf{ComponentDefinition Type} & \textbf{URI for BioPAX Term} \\ \midrule DNA & \url{http://www.biopax.org/release/biopax-level3.owl#DnaRegion}\\ RNA & \url{http://www.biopax.org/release/biopax-level3.owl#RnaRegion}\\ @@ -247,17 +247,19 @@ \subsubsection*{The \sbolheading{types} property} Small Molecule & \url{http://www.biopax.org/release/biopax-level3.owl#SmallMolecule}\\ \bottomrule \end{edtable} - \caption{BioPAX terms to specify the types of ComponentDefinition objects.} + \caption{BioPAX terms to specify the \sbol{types} property of a \sbol{ComponentDefinition}.} \label{tbl:componentdefinition_types} \end{table} \subsubsection*{The \sbolheading{roles} property} \label{sec:roles} -The \sbol{roles} of a ComponentDefinition object MUST contain at least one URI. These identify ontology terms that clarify a \sbol{ComponentDefinition} object's potential function in a biological context. For example, a \sbol{ComponentDefinition} for a DNA component might have a role of ``promoter'' or ``terminator,'' terms taken from the Sequence Ontology (SO). A ComponentDefinition object for a protein, on the other hand, might have a role of ``transcription factor'' or ``protease.'' +The \sbol{roles} property is a REQUIRED set of \external{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} object in a biological context. + +The \sbol{roles} property of every \sbol{ComponentDefinition} object MUST contain at least one \external{URI} that identifies a term from an ontology that is consistent with the type of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA \sbol{ComponentDefinition} component SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). Any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbol{types}. \LDtodo{Taken from what ontology?} -The \sbol{roles} are analogous to the \external{type} of a \external{DnaComponent} object in SBOL Version 1.1. +The \sbol{roles} property is analogous to the \external{type} of a \external{DnaComponent} in SBOL Version 1.1. \subsubsection*{The \sbolheading{components} property} @@ -271,15 +273,15 @@ \subsubsection*{The \sbolheading{sequence} property} \label{sec:sequence} The sequence property is OPTIONAL and includes the URI for a corresponding \sbol{Sequence} object. -\subsubsection*{The \sbolheading{sequenceConstraint} property} -\label{sec:sequenceConstraint} +\subsubsection*{The \sbolheading{sequenceConstraints} property} +\label{sec:sequenceConstraints} This OPTIONAL property links to one or more \sbol{SequenceConstraint} objects describing structural restrictions on the placement of subcomponents with respect to the \sbol{Sequence} of a \sbol{ComponentDefinition}. \Rtodo{This needs to be explained} -\subsubsection*{The \sbolheading{sequenceAnnotation} property} -\label{sec:sequenceAnnotation} +\subsubsection*{The \sbolheading{sequenceAnnotations} property} +\label{sec:sequenceAnnotations} \Rtodo{This needs to be better explained. -JSB} From 0907f2f0d744c6b5d3a5b4dab4fab5d5f7b7e3c8 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 8 May 2015 20:24:48 +0000 Subject: [PATCH 073/317] Update on Overleaf. --- model.tex | 22 +++++++++++++++++----- purpose.tex | 2 +- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/model.tex b/model.tex index 54392e24..cceef6c9 100644 --- a/model.tex +++ b/model.tex @@ -212,8 +212,7 @@ \subsubsection*{Serialization} \subsection{ComponentDefinition} \label{sec:ComponentDefinition} -The \sbol{ComponentDefinition} class represents the structural entities of a biological design. The primary usage of this class is to represent structural entities with designed sequences, such as DNA, RNA, and proteins, but it can also be used to represent any other entity that is part of the design, such as small molecules, molecular complexes, and light. -(this is a generalization from prior versions of SBOL, which only represented DNA). +The \sbol{ComponentDefinition} class represents the structural entities of a biological design. The primary usage of this class is to represent structural entities with designed sequences, such as DNA, RNA, and proteins, but it can also be used to represent any other entity that is part of the design, such as small molecules, molecular complexes, and light. As shown in \ref{uml:component_definition}, the \sbol{ComponentDefinition} class describes a structural design entity using the following properties: \sbol{types}, \sbol{roles}, and \sbol{sequence}. In addition, this class has properties for describing and organizing the substructure of said design entity, including \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations}. @@ -256,11 +255,24 @@ \subsubsection*{The \sbolheading{roles} property} The \sbol{roles} property is a REQUIRED set of \external{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} object in a biological context. -The \sbol{roles} property of every \sbol{ComponentDefinition} object MUST contain at least one \external{URI} that identifies a term from an ontology that is consistent with the type of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA \sbol{ComponentDefinition} component SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). Any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbol{types}. -\LDtodo{Taken from what ontology?} +The \sbol{roles} property of every \sbol{ComponentDefinition} object MUST contain at least one \external{URI} that identifies a term from an ontology that is consistent with the type of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA \sbol{ComponentDefinition} component SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). Any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use that term as one of its \sbol{roles}. -The \sbol{roles} property is analogous to the \external{type} of a \external{DnaComponent} in SBOL Version 1.1. +\begin{table}[ht] + \begin{edtable}{tabular}{lll} + \toprule + \textbf{ComponentDefinition Role} & \textbf{URI for Ontology Term} & \textbf{ComponentDefinition Type} \\ + \midrule + & \\ + & \\ + & \\ + & \\ + \bottomrule + \end{edtable} + \caption{Ontology terms to specify the \sbol{roles} property of a \sbol{ComponentDefinition}.} + \label{tbl:componentdefinition_roles} +\end{table} +\LDtodo{Taken from what ontology?} \subsubsection*{The \sbolheading{components} property} \label{sec:components} diff --git a/purpose.tex b/purpose.tex index 0be03c50..7476d571 100644 --- a/purpose.tex +++ b/purpose.tex @@ -7,7 +7,7 @@ \section{Purpose} % Below is my revision. Any thoughts? - Nic -Synthetic biology builds upon the techniques and successes of genetics, molecular biology and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. +Synthetic biology builds upon the techniques and successes of genetics, molecular biology and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. \Ctodo{Maybe discuss more about how SBOL is a standard. Huge transition from what is Syntetic Biology to SBOL} To help address these challenges, the Synthetic Biology Open Language (SBOL) introduces a standardized file format for the electronic exchange of biological designs and a standardized data model for the reproducible description of essential design details. Ultimately, SBOL is intended to speed up the research and development of designed biological systems by enhancing the exchange and reproducibility of biological designs between different labs. From dcf36e2fe1ce1bb20d047403c8510b841f782104 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 8 May 2015 20:51:25 +0000 Subject: [PATCH 074/317] Update on Overleaf. --- purpose.tex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/purpose.tex b/purpose.tex index 7476d571..ed446cf9 100644 --- a/purpose.tex +++ b/purpose.tex @@ -7,9 +7,10 @@ \section{Purpose} % Below is my revision. Any thoughts? - Nic -Synthetic biology builds upon the techniques and successes of genetics, molecular biology and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. +Synthetic biology builds upon the techniques and successes of genetics, molecular biology and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. One of the greatest challenges is the exchange of information between laboraties. Synthetic biology typically relies upon associating a given sequence with a functional role. Often the functional role may be associated with another type of molecule entirely, such as a small chemical, a DNA, an RNA or a Protein molecule. An example is an DNA sequence that is transcribed into a messenger RNA that contains an encoded microRNA binding site, and the messenger RNA in turn being translated into a protein molecule which is a transcription factor binding protein. Functionally the representation of the products of the DNA sequence need to describe the role of microRNA binding to the messenger RNA leading to possible degredation, or the functional consequence of the protein being absent, leading to repression of expression of another gene. The DNA sequence itself it one or two steps removed from the functional role of the designed device or circuit. Current file formats such as Genbank and SwissProt represent sequence information based upon annotation of sequence features - they do not represent the functional consequence of these sequences. Systems Biology Markup Language represents reactions, pathways and models but does not typically represent the associated sequences. Synthetic biology needs a standard with common formats to represent relevant molecues and their functional roles within the designed system, standarized rules on how such information is encoded in the file and the means to enable exchange of such data between participating laboraties as part of publications. \Ctodo{Maybe discuss more about how SBOL is a standard. Huge transition from what is Syntetic Biology to SBOL} + To help address these challenges, the Synthetic Biology Open Language (SBOL) introduces a standardized file format for the electronic exchange of biological designs and a standardized data model for the reproducible description of essential design details. Ultimately, SBOL is intended to speed up the research and development of designed biological systems by enhancing the exchange and reproducibility of biological designs between different labs. \Ctodo{it's not about a file format, it's about a representation; the fact that this is a file format is incidental -JSB} From 14560830c536c14d54102b9cfa4ee68fc9419372 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Fri, 8 May 2015 15:51:13 -0500 Subject: [PATCH 075/317] resolved 2 todos --- practices.tex | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/practices.tex b/practices.tex index e9898aa1..4ccf0160 100644 --- a/practices.tex +++ b/practices.tex @@ -2,11 +2,22 @@ \section{Best Practices} \label{sec:bestpractices} % ----------------------------------------------------------------------------- -\subsection{Versioning} -Currently, if a developer wishes to change a SBOL object that has been published to the Web, then as a best practice they should create a copy of the SBOL object that incorporates the change, but has a new URI. This practice, however, does not inherently involve a standardized declaration that the second object is a version of the first. Consequently, the \sbol{persistentIdentity}, and \sbol{version} data fields have been created to provide developers with the means to declare that a set of SBOL objects are versions of each other (by virtue of having the same persistent URI) and label these objects with version Strings. +\subsection{Indicate Modification of Data with Version} -\Ctodo{try to target readers unfamiliar with RDF/XML. -bder} -\Ctodo{maybe clarify what type of versioning is this object affecting? TN} +Once an SBOL object has been published where others might have accessed it (e.g., to an online repository), it may be the case that others make copies of the object or else come to depend on the particular contents of the object. +Thus, in order to avoid confusion, if a person wants to change the properties of a published object, the best practice is to do so by making a new copy that incorporates the change, with a new URI. + +The relationship between the old and new objects (i.e., that the new object was derived from the old object), however, is not visible unless it is explicitly declared. +This is RECOMMENDED to be done using the \sbol{persistentIdentity}, and \sbol{version} properties. +The preferred practice for declaring such a relationship is to use the same \sbol{persistentIdentity} for both objects, and label the newer one as being the newer version. +Then, when the new object is published, it can be clear to both humans and machines that this object is intended to replace the one that was published previously. + +As stated in \ref{sec:version}, it is RECOMMENDED that version numbering should follow the conventions of semantic versioning (\url{http://semver.org/}), particularly as implemented by Maven (\url{http://maven.apache.org/}). +This convention represents versions as sequences of numbers and qualifiers separated by the characters {\tt .} and {\tt -} and compared in lexicographical order (for example, 1 < 1.3.1 < 2.0-beta). +For a full explanation, see the linked resources. + +\Rtodo{try to target readers unfamiliar with RDF/XML. -bder} +\Rtodo{maybe clarify what type of versioning is this object affecting? TN} \subsection{Creation and Modification Dates} @@ -35,7 +46,7 @@ \subsection{Annotations: Embedded Objects vs. External References} \LDtodo{Don't drag your giant data files around in SBOL, put them as external links} -Ctodo{Would be good to also talk about completeness checking here. Namely, if all objects are in the file, should verify that links are all valid. When they are not, need a scheme to validate external references.} +\Ctodo{Would be good to also talk about completeness checking here. Namely, if all objects are in the file, should verify that links are all valid. When they are not, need a scheme to validate external references.} \subsection{Recommended Ontologies for External Terms} External ontologies and controlled vocabularies are integral part of SBOL. SBOL utilises these resources to access existing biological information where possible. New SBOL specific terms are defined only when necessary. Instead, SBOL provides placeholders that can point to external terms. For example, types of components, such as DNA or protein, are indicated using BioPAX. Similarly, the role of a DNA component is indicated via the SO terms. Although preferred ontologies have been indicated in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found at \ref{tbl:preferred_external_resources}. From 026b2ab85a9af0f81011a3b7d43f8de42cc1ef08 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 8 May 2015 21:34:14 +0000 Subject: [PATCH 076/317] Update on Overleaf. --- purpose.tex | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/purpose.tex b/purpose.tex index ed446cf9..ac314379 100644 --- a/purpose.tex +++ b/purpose.tex @@ -7,16 +7,18 @@ \section{Purpose} % Below is my revision. Any thoughts? - Nic -Synthetic biology builds upon the techniques and successes of genetics, molecular biology and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. One of the greatest challenges is the exchange of information between laboraties. Synthetic biology typically relies upon associating a given sequence with a functional role. Often the functional role may be associated with another type of molecule entirely, such as a small chemical, a DNA, an RNA or a Protein molecule. An example is an DNA sequence that is transcribed into a messenger RNA that contains an encoded microRNA binding site, and the messenger RNA in turn being translated into a protein molecule which is a transcription factor binding protein. Functionally the representation of the products of the DNA sequence need to describe the role of microRNA binding to the messenger RNA leading to possible degredation, or the functional consequence of the protein being absent, leading to repression of expression of another gene. The DNA sequence itself it one or two steps removed from the functional role of the designed device or circuit. Current file formats such as Genbank and SwissProt represent sequence information based upon annotation of sequence features - they do not represent the functional consequence of these sequences. Systems Biology Markup Language represents reactions, pathways and models but does not typically represent the associated sequences. Synthetic biology needs a standard with common formats to represent relevant molecues and their functional roles within the designed system, standarized rules on how such information is encoded in the file and the means to enable exchange of such data between participating laboraties as part of publications. +Synthetic biology builds upon the techniques and successes of genetics, molecular biology and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. One of the greatest challenges is the exchange of information between laboraties. Synthetic biology typically relies upon associating a given sequence with a functional role. Often the functional role may be associated with another type of molecule entirely, such as a small chemical, a DNA, an RNA or a Protein molecule. An example is an DNA sequence that is transcribed into a messenger RNA that contains an encoded microRNA binding site, and the messenger RNA in turn being translated into a protein molecule which is a transcription factor binding protein. Functionally the representation of the products of the DNA sequence need to describe the role of microRNA binding to the messenger RNA leading to possible degredation, or the functional consequence of the protein being absent, leading to repression of expression of another gene. The DNA sequence itself is one or two steps removed from the functional role of the designed device or circuit. Current file formats such as Genbank and SwissProt represent sequence information based upon annotation of sequence features - they do not represent the functional consequence of these sequences. Systems Biology Markup Language represents reactions, pathways and models but does not typically represent the associated sequences. Synthetic biology needs a standard with common formats to represent relevant molecues and their functional roles within the designed system, standarized rules on how such information is encoded in the file and the means to enable exchange of such data between participating laboraties as part of publications. \Ctodo{Maybe discuss more about how SBOL is a standard. Huge transition from what is Syntetic Biology to SBOL} +\Rtodo{Added some text on the need for a standard and why other standards do not meet the current needs for SynBio data exchange - KC} -To help address these challenges, the Synthetic Biology Open Language (SBOL) introduces a standardized file format for the electronic exchange of biological designs and a standardized data model for the reproducible description of essential design details. Ultimately, SBOL is intended to speed up the research and development of designed biological systems by enhancing the exchange and reproducibility of biological designs between different labs. +To help address these challenges, the Synthetic Biology Open Language (SBOL)Standard introduces a standardized format for the electronic exchange of information describing the structural and functional aspects of biological designs. The standard is designed to support the development of explicit and unambiguous data models of biological designs through the use of a well defined format on how to represent the component molecues, and theri structural and functional roles in a systematic fashion. The stanrard describes rules and best practices on how to include, develop and populate this format with relevant information of essential design details. Because the standard itself can represent information from other sources for sequence representations, reaction information and ontologies to represent biological design information, the standard uses modern information exchange techniques such as Universal Resource Identifiers (URIs). This permits the reuse of existing information without the need to repeat it, thus avoiding both redundancy and future information rot. The ultimate utility of URIs in the SBOL Standard is the ability to support flexible annotation with meta data while associating an authority with that annotation. The definition of the data model and associated format, the rules on the addition of data within the format and the representation of this in electronic data files make the SBOL Standard an excellent means of promoting global data exchange between laboraties and between software programs. \Ctodo{it's not about a file format, it's about a representation; the fact that this is a file format is incidental -JSB} - \Ctodo{Motivate/discuss URI's?} \Ctodo{Explicit and unambiguous data model, promotes global data exhchange, allows flexible annotation with meta data while associating an authority with that annotation.} +\Rtodo{reworked the text to add in the suggestions from the associated comments - KC} + \Ctodo{Should the comparison with 1.1 really be there? This needs revision to be stand-alone, and right now it's basically an extract of the SBOL2 paper -JSB} Version 1.1 of the SBOL standard focused on representing the structural aspects of genetic designs. To serve as an effective medium for the computational exchange of genetic designs, SBOL must be extended to capture more aspects of a designed system, including both structural and functional information, and the composition of complex structural and functional designs by combining simpler parts. The SBOL data model proposed in this specification provides for addressing the most pressing needs for expanding SBOL Version 1.1. @@ -37,4 +39,6 @@ \section{Purpose} To address the need for functional descriptions in SBOL, the proposed data model adds classes for modules, interactions, and models. These classes provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the Systems Biology Markup Language (SBML)~\cite{SBML} to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. -\Ctodo{This just sort of stops. Need a better end. --JSB} \ No newline at end of file +\Ctodo{This just sort of stops. Need a better end. --JSB} +The SBOL standard has been developed in collaboration between both wet bench scientists and ascientific modelers active within the Synthetic Biology community. As with the earlier SBOL v1.1 standard this community has met to discuss, argue and agree upon needs that the SBOL standard should address. This information has been used by developers within our community to design, develop and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects as well as the ability to share designs between different laboratories. The standard has been used to develop softwares that employ the standard for developing and sharing synthetic design projects. The purpose of the current specification is to share the details of the SBOL standard with a wider community of users and developers so it can be more widely employed through the scientific community. +\Rtodo{} \ No newline at end of file From 9224f08c030b2b213c911198106b31ef2a0c17e1 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 8 May 2015 21:34:20 +0000 Subject: [PATCH 077/317] Update on Overleaf. --- purpose.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purpose.tex b/purpose.tex index ac314379..124030be 100644 --- a/purpose.tex +++ b/purpose.tex @@ -41,4 +41,4 @@ \section{Purpose} \Ctodo{This just sort of stops. Need a better end. --JSB} The SBOL standard has been developed in collaboration between both wet bench scientists and ascientific modelers active within the Synthetic Biology community. As with the earlier SBOL v1.1 standard this community has met to discuss, argue and agree upon needs that the SBOL standard should address. This information has been used by developers within our community to design, develop and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects as well as the ability to share designs between different laboratories. The standard has been used to develop softwares that employ the standard for developing and sharing synthetic design projects. The purpose of the current specification is to share the details of the SBOL standard with a wider community of users and developers so it can be more widely employed through the scientific community. -\Rtodo{} \ No newline at end of file +\Rtodo{I wrote a } \ No newline at end of file From eaa42f00fe23aa3dccdcf4361121d994de5fb693 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Fri, 8 May 2015 16:33:58 -0500 Subject: [PATCH 078/317] resolves some practices todos --- practices.tex | 61 +++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 52 insertions(+), 9 deletions(-) diff --git a/practices.tex b/practices.tex index 4ccf0160..b8b47aa8 100644 --- a/practices.tex +++ b/practices.tex @@ -44,9 +44,58 @@ \subsection{Compliant SBOL Objects} \subsection{Annotations: Embedded Objects vs. External References} -\LDtodo{Don't drag your giant data files around in SBOL, put them as external links} - -\Ctodo{Would be good to also talk about completeness checking here. Namely, if all objects are in the file, should verify that links are all valid. When they are not, need a scheme to validate external references.} +When annotating an SBOL model with additional information, there are +two general methods that can be used: +\begin{itemize} +\item Embed the information in the SBOL model, either as non-SBOL + properties or wrapped in \sbol{GenericTopLevel} objects. +\item Store the information separately and annotate the SBOL model + with URIs that point to it. +\end{itemize} + +In theory, either can be used in any case. In practice, however, +embedding massive amounts of non-SBOL data into SBOL models is likely +to cause problems for people and software tools trying to manage and +exchange such models. + +It is thus RECOMMENDED that small amounts of information (e.g., design +notes, preferred graphical layout) be embedded in the SBOL model, +while large amounts of information (e.g., the scientific publication +from which a model was derived, flow cytometry data characterizing +performance) be linked with URIs pointing to external resources. +% +The boundary between ``small'' and ``large'' is left deliberately +vague, recognizing that it will likely depend on the particulars of a +given SBOL application. + +\Rtodo{Don't drag your giant data files around in SBOL, put them as external links} + +\subsection{Completeness and Validation} + +RDF documents containing serialized SBOL objects may or may not be +entirely self-contained. A document is self-contained or ``complete'' +if every SBOL object referred to in the document is contained in the +document. + +It is RECOMMENDED that serializations be complete whenever practical. +In order words, when serializing an SBOL object, serialize all of the +other objects that it points to, then serialize all of the additional +objects that they point to, etc., until the document is complete. + +Complementarily, note that there is no guarantee that an RDF document +contains valid SBOL. When an RDF document is de-serialized into SBOL +objects, the program doing so SHOULD verify that all of the property +values encoded therein have the right type (e.g., that the object +pointed to by the \sbol{sequence} property of a +\sbol{ComponentDefinition} really is a \sbol{Sequence} object). +% +For complete files, this can be carried out readily and entirely +locally. For files that are not complete, an implementation needs to +either have a means of validating those external references (e.g., by +retrieving them from various repositories) or else to mark them as +being unverified and not depend on their correctness. + +\Rtodo{Would be good to also talk about completeness checking here. Namely, if all objects are in the file, should verify that links are all valid. When they are not, need a scheme to validate external references.} \subsection{Recommended Ontologies for External Terms} External ontologies and controlled vocabularies are integral part of SBOL. SBOL utilises these resources to access existing biological information where possible. New SBOL specific terms are defined only when necessary. Instead, SBOL provides placeholders that can point to external terms. For example, types of components, such as DNA or protein, are indicated using BioPAX. Similarly, the role of a DNA component is indicated via the SO terms. Although preferred ontologies have been indicated in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found at \ref{tbl:preferred_external_resources}. @@ -74,9 +123,3 @@ \subsection{Recommended Ontologies for External Terms} \end{table} \Ctodo{Goksel and Neil need to sort out GO vs. UniProt, and possibly just recommend both here.} - -\Ctodo{Somebody who cares about this should decide whether any of gets put on the JavaDocs, but it is getting deleted from this document - -Within an implementing Object-Oriented (OO) API, SBOL properties should be mapped to member accessors that are similarly named and that return idiomatic representations of these properties. For example, a Java implementation would use common Java idioms. In this case, the member accessor for an optional SBOL property could return a Java primitive value, Java object, or null, while the accessor for a multi-valued SBOL property could return a Java \external{Collection}. In general, OO member accessors for multi-valued SBOL properties should never return null. - -As another example, a relational implementation of the SBOL API would store the properties and associations a mixture of data fields and references via foreign keys. The fields in individual tables will correspond to the `arrowhead' end of an association (in reverse to the direction in the RDF and OO representations), and the name may be modified to reflect this change in directionality. For example, the \sbol{sequence} association between a \sbol{ComponentDefinition} and \sbol{Sequence} would be represented by a foreign key field on the \sbol{Sequence} table that references a row in the \sbol{ComponentDefinition} table, and it may be named \external{sequenceOf}.} \ No newline at end of file From c8cdac3aa5af76e83ba44e05bd81c9fbdb3a66c7 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 8 May 2015 21:34:27 +0000 Subject: [PATCH 079/317] Update on Overleaf. --- purpose.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purpose.tex b/purpose.tex index 124030be..675bfe3d 100644 --- a/purpose.tex +++ b/purpose.tex @@ -41,4 +41,4 @@ \section{Purpose} \Ctodo{This just sort of stops. Need a better end. --JSB} The SBOL standard has been developed in collaboration between both wet bench scientists and ascientific modelers active within the Synthetic Biology community. As with the earlier SBOL v1.1 standard this community has met to discuss, argue and agree upon needs that the SBOL standard should address. This information has been used by developers within our community to design, develop and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects as well as the ability to share designs between different laboratories. The standard has been used to develop softwares that employ the standard for developing and sharing synthetic design projects. The purpose of the current specification is to share the details of the SBOL standard with a wider community of users and developers so it can be more widely employed through the scientific community. -\Rtodo{I wrote a } \ No newline at end of file +\Rtodo{I wrote a final paragraph to expand upon } \ No newline at end of file From 82d1b15e74f54036e33cf2a21bac273e1ec3c2e9 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 8 May 2015 21:34:34 +0000 Subject: [PATCH 080/317] Update on Overleaf. --- purpose.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purpose.tex b/purpose.tex index 675bfe3d..c6ad1c6f 100644 --- a/purpose.tex +++ b/purpose.tex @@ -41,4 +41,4 @@ \section{Purpose} \Ctodo{This just sort of stops. Need a better end. --JSB} The SBOL standard has been developed in collaboration between both wet bench scientists and ascientific modelers active within the Synthetic Biology community. As with the earlier SBOL v1.1 standard this community has met to discuss, argue and agree upon needs that the SBOL standard should address. This information has been used by developers within our community to design, develop and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects as well as the ability to share designs between different laboratories. The standard has been used to develop softwares that employ the standard for developing and sharing synthetic design projects. The purpose of the current specification is to share the details of the SBOL standard with a wider community of users and developers so it can be more widely employed through the scientific community. -\Rtodo{I wrote a final paragraph to expand upon } \ No newline at end of file +\Rtodo{I wrote a final paragraph to } \ No newline at end of file From 384febefbb941c4aae8fee069a27573982c241d8 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 8 May 2015 21:34:39 +0000 Subject: [PATCH 081/317] Update on Overleaf. --- purpose.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purpose.tex b/purpose.tex index c6ad1c6f..a00768b2 100644 --- a/purpose.tex +++ b/purpose.tex @@ -41,4 +41,4 @@ \section{Purpose} \Ctodo{This just sort of stops. Need a better end. --JSB} The SBOL standard has been developed in collaboration between both wet bench scientists and ascientific modelers active within the Synthetic Biology community. As with the earlier SBOL v1.1 standard this community has met to discuss, argue and agree upon needs that the SBOL standard should address. This information has been used by developers within our community to design, develop and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects as well as the ability to share designs between different laboratories. The standard has been used to develop softwares that employ the standard for developing and sharing synthetic design projects. The purpose of the current specification is to share the details of the SBOL standard with a wider community of users and developers so it can be more widely employed through the scientific community. -\Rtodo{I wrote a final paragraph to } \ No newline at end of file +\Rtodo{I wrote a final paragraph to provide a better end} \ No newline at end of file From 2f6fa89c0ea0d7c4d93eea0ff00897eb4f096512 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 8 May 2015 21:34:44 +0000 Subject: [PATCH 082/317] Update on Overleaf. --- purpose.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purpose.tex b/purpose.tex index a00768b2..8f1802a8 100644 --- a/purpose.tex +++ b/purpose.tex @@ -41,4 +41,4 @@ \section{Purpose} \Ctodo{This just sort of stops. Need a better end. --JSB} The SBOL standard has been developed in collaboration between both wet bench scientists and ascientific modelers active within the Synthetic Biology community. As with the earlier SBOL v1.1 standard this community has met to discuss, argue and agree upon needs that the SBOL standard should address. This information has been used by developers within our community to design, develop and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects as well as the ability to share designs between different laboratories. The standard has been used to develop softwares that employ the standard for developing and sharing synthetic design projects. The purpose of the current specification is to share the details of the SBOL standard with a wider community of users and developers so it can be more widely employed through the scientific community. -\Rtodo{I wrote a final paragraph to provide a better end} \ No newline at end of file +\Rtodo{I wrote a final paragraph to provide a better end - KC} \ No newline at end of file From ed1014659fcb3627246e06792471df36be0684ea Mon Sep 17 00:00:00 2001 From: Kevin Clancy Date: Fri, 8 May 2015 22:31:02 +0000 Subject: [PATCH 083/317] Update on Overleaf. --- overview.tex | 2 +- practices.tex | 2 +- purpose.tex | 9 ++++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/overview.tex b/overview.tex index b7a5e0aa..56e818cc 100644 --- a/overview.tex +++ b/overview.tex @@ -1,7 +1,7 @@ % % ----------------------------------------------------------------------------- \section{Overview of SBOL} % % ----------------------------------------------------------------------------- -Typically, information about a genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. Interactions between these constituents are then used to construct biologically plausible designs. +Typically, information about a designed genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. Interactions between these constituents are then used to construct biologically plausible designs. \Ctodo{reword for better clarity and coverage of the model -JSB} % In the figure below, a simple toggle switch system is displayed, in which LacI and TetR repress each other's genes transcriptionally. The toggling of the system is controlled by adding IPTG to deactivate LacI, and ATC to deactivate TetR. The components of the system includes genetic elements, proteins, small molecules. diff --git a/practices.tex b/practices.tex index b8b47aa8..6766fa06 100644 --- a/practices.tex +++ b/practices.tex @@ -122,4 +122,4 @@ \subsection{Recommended Ontologies for External Terms} \label{tbl:preferred_external_resources} \end{table} -\Ctodo{Goksel and Neil need to sort out GO vs. UniProt, and possibly just recommend both here.} +\Ctodo{Goksel and Neil need to sort out GO vs. UniProt, and possibly just recommend both here.} \ No newline at end of file diff --git a/purpose.tex b/purpose.tex index 8f1802a8..92e282d1 100644 --- a/purpose.tex +++ b/purpose.tex @@ -7,12 +7,14 @@ \section{Purpose} % Below is my revision. Any thoughts? - Nic -Synthetic biology builds upon the techniques and successes of genetics, molecular biology and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. One of the greatest challenges is the exchange of information between laboraties. Synthetic biology typically relies upon associating a given sequence with a functional role. Often the functional role may be associated with another type of molecule entirely, such as a small chemical, a DNA, an RNA or a Protein molecule. An example is an DNA sequence that is transcribed into a messenger RNA that contains an encoded microRNA binding site, and the messenger RNA in turn being translated into a protein molecule which is a transcription factor binding protein. Functionally the representation of the products of the DNA sequence need to describe the role of microRNA binding to the messenger RNA leading to possible degredation, or the functional consequence of the protein being absent, leading to repression of expression of another gene. The DNA sequence itself is one or two steps removed from the functional role of the designed device or circuit. Current file formats such as Genbank and SwissProt represent sequence information based upon annotation of sequence features - they do not represent the functional consequence of these sequences. Systems Biology Markup Language represents reactions, pathways and models but does not typically represent the associated sequences. Synthetic biology needs a standard with common formats to represent relevant molecues and their functional roles within the designed system, standarized rules on how such information is encoded in the file and the means to enable exchange of such data between participating laboraties as part of publications. +Synthetic biology builds upon the techniques and successes of genetics, molecular biology and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. A common factor within these challenges is the exchange of information about designed systems between laboraties. As part of the design of synthetic systems Synthetic Biologists need to exchange information about multipe types of molecules and their planned roles within the designed and natural system they are working to change. Often the functional role may be associated with another type of molecule entirely, such as a small chemical, a DNA, an RNA or a Protein molecule. An example is an DNA sequence that is transcribed into a messenger RNA that contains an encoded microRNA binding site, and the messenger RNA in turn being translated into a protein molecule which is a transcription factor binding protein. Functionally the representation of the products of the designed DNA sequence need to describe the role of microRNA binding to the messenger RNA leading to possible degradation, the functional consequence of the transcription factor protein being absent leading to repression of expression of another gene and the kinetic information associated with these different elements so they can be mathematically modelled. The DNA sequence itself is thus one or two steps removed from the functional role of the designed device or circuit. + +Current file formats such as Genbank and SwissProt represent sequence information based upon annotation of sequence features - they do not represent the functional roles or consequences of these sequences. Systems Biology Markup Language (SBML) represents reactions, pathways and models but does not typically represent the associated sequences. Kinetic information may be present in SBML~\cite{SBML} or may be represented by mathematical equations in other systems such as the COBRA Toolbox~\cite{COBRA}. Synthetic Biology needs a structured standard with defined ways on how to represent relevant molecues and their functional roles within the designed system, standarized rules on how such information is encoded in the file and the means to enable exchange of such data between participating laboraties as part of publications. \Ctodo{Maybe discuss more about how SBOL is a standard. Huge transition from what is Syntetic Biology to SBOL} \Rtodo{Added some text on the need for a standard and why other standards do not meet the current needs for SynBio data exchange - KC} -To help address these challenges, the Synthetic Biology Open Language (SBOL)Standard introduces a standardized format for the electronic exchange of information describing the structural and functional aspects of biological designs. The standard is designed to support the development of explicit and unambiguous data models of biological designs through the use of a well defined format on how to represent the component molecues, and theri structural and functional roles in a systematic fashion. The stanrard describes rules and best practices on how to include, develop and populate this format with relevant information of essential design details. Because the standard itself can represent information from other sources for sequence representations, reaction information and ontologies to represent biological design information, the standard uses modern information exchange techniques such as Universal Resource Identifiers (URIs). This permits the reuse of existing information without the need to repeat it, thus avoiding both redundancy and future information rot. The ultimate utility of URIs in the SBOL Standard is the ability to support flexible annotation with meta data while associating an authority with that annotation. The definition of the data model and associated format, the rules on the addition of data within the format and the representation of this in electronic data files make the SBOL Standard an excellent means of promoting global data exchange between laboraties and between software programs. +To help address these challenges, the Synthetic Biology Open Language (SBOL) Standard introduces a standardized format for the electronic exchange of information describing the structural and functional aspects of biological designs. The standard is designed to support the development of explicit and unambiguous data models of biological designs through the use of a well defined format on how to represent the component molecues, and their structural and functional roles in a systematic fashion. The standard describes rules and best practices on how to include, develop and populate this format with relevant information of essential design details. Because the standard itself can represent information from other sources for sequence representations, reaction information and ontologies to represent biological design information, the standard uses modern information exchange techniques such as Universal Resource Identifiers (URIs). This permits the reuse of existing information without the need to repeat it, thus avoiding both redundancy and future information rot within shared files. The ultimate utility of URIs in the SBOL Standard is the ability to support flexible annotation with appriate metadata while associating an authority with that annotation. The definition of the data model and associated format, the rules on the addition of data within the format and the representation of this in electronic data files make the SBOL Standard an excellent means of promoting global data exchange between laboraties and between software programs. \Ctodo{it's not about a file format, it's about a representation; the fact that this is a file format is incidental -JSB} \Ctodo{Motivate/discuss URI's?} @@ -21,7 +23,8 @@ \section{Purpose} \Ctodo{Should the comparison with 1.1 really be there? This needs revision to be stand-alone, and right now it's basically an extract of the SBOL2 paper -JSB} -Version 1.1 of the SBOL standard focused on representing the structural aspects of genetic designs. To serve as an effective medium for the computational exchange of genetic designs, SBOL must be extended to capture more aspects of a designed system, including both structural and functional information, and the composition of complex structural and functional designs by combining simpler parts. The SBOL data model proposed in this specification provides for addressing the most pressing needs for expanding SBOL Version 1.1. +\Rtodo{ Updated the verbiage to emphasize the shortcoming of 1.1 and the need for the standard to evolve - KC} +Version 1.1 of the SBOL standard focused on representing the structural aspects of genetic designs. Users of the standard were ablt to use it to echange inforamtion on DNA designs but quickly identified the inability to represent molecules other thn DNA or the ability to represent the functional aspects of their dsigns beyond the DNA sequences. To serve as an effective medium for the computational exchange of genetic designs, SBOL must be extended to capture more aspects of a designed system, including both structural and functional information, and the composition of complex structural and functional designs by combining simpler parts. The SBOL data model proposed in this specification provides for addressing the most pressing needs for expanding SBOL Version 1.1. \begin{enumerate} From ee298bff7b01e6c445f3cf1ecef2fc543123c05f Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Sun, 10 May 2015 17:26:46 +0000 Subject: [PATCH 084/317] Update on Overleaf. --- apdx-validation.tex | 104 ++++++++++++++++++++++++++++++++++++++------ history.tex | 2 +- model.tex | 3 +- overview.tex | 13 +++++- 4 files changed, 105 insertions(+), 17 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 1e7ee420..e154531e 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -113,36 +113,79 @@ \subsubsection*{Rules for the \class{Sequence} class} \printValid{The \sbol{encoding} is a required property for all \sbol{Sequence} objects and has a data type of URI. (Reference: \sec{sec:Sequence})} -\Ctodo{add best practices about URIs to use for encoding} +\printModeling{A DNA \sbol{Sequence} should use the IUPAC DNA encoding:\\ \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html}. (Reference: \sec{sec:Sequence})} + +\printModeling{A RNA \sbol{Sequence} should use the IUPAC RNA encoding:\\ \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html}. (Reference: \sec{sec:Sequence})} + +\printModeling{A protein \sbol{Sequence} should use the IUPAC Protein encoding:\\ \url{http://www.chem.qmul.ac.uk/iupac/AminoAcid/}. (Reference: \sec{sec:Sequence})} + +\printModeling{A small molecule \sbol{Sequence} should use the SMILES encoding:\\ \url{http://www.opensmiles.org/opensmiles.html}. (Reference: \sec{sec:Sequence})} \subsubsection*{Rules for the \class{ComponentDefinition} class} \setcounter{sbolCtr}{10601} \printValid{A \sbol{ComponentDefinition} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:ComponentDefinition})} -\Ctodo{At least one type is required} +\printValid{The \sbol{types} property is a set of URIs, and it is required to include at least entry. (Reference: \sec{sec:ComponentDefinition})} + +\printValid{The \sbol{roles} property is an optional set of URIs. (Reference: \sec{sec:ComponentDefinition})} + +\printValid{The \sbol{components} property is an optional set of \sbol{Component} objects. (Reference: \sec{sec:ComponentDefinition})} + +\printValid{The \sbol{sequenceConstraints} property is an optional set of \sbol{SequenceConstraint} objects. (Reference: \sec{sec:ComponentDefinition})} + +\printValid{The \sbol{sequenceAnnotation} property is an optional set of \sbol{SequenceAnnotation} objects. (Reference: \sec{sec:ComponentDefinition})} + +\printValid{The \sbol{sequence} property is an optional URI reference to a \sbol{Sequence} object. (Reference: \sec{sec:ComponentDefinition})} -\Ctodo{Need a rule for each optional list to indicate their required types.} +\printModeling{The \sbol{sequence} property URI, if specified, should reference a \sbol{Sequence} object. (Reference: \sec{sec:ComponentDefinition})} + +\printValid{A DNA \sbol{ComponentDefinition} must include the URI\\ +\url{http://www.biopax.org/release/biopax-level3.owl\#DnaRegion} +in the set of \sbol{types}. (Reference: \sec{sec:ComponentDefinition})} + +\printValid{A RNA \sbol{ComponentDefinition} must include the URI\\ +\url{http://www.biopax.org/release/biopax-level3.owl\#RnaRegion} in the set of \sbol{types}. (Reference: \sec{sec:ComponentDefinition})} + +\printValid{A protein \sbol{ComponentDefinition} must include the URI\\ +\url{http://www.biopax.org/release/biopax-level3.owl\#Protein} in the set of \sbol{types}. (Reference: \sec{sec:ComponentDefinition})} + +\printValid{A small molecule \sbol{ComponentDefinition} must include the URI\\ +\url{http://www.biopax.org/release/biopax-level3.owl\#SmallMolecule} in the set of \sbol{types}. (Reference: \sec{sec:ComponentDefinition})} + +\printModeling{A least one type in the set of \sbol{types} should be a URI from the BioPAX or ChEBI ontologies. (Reference: \sec{sec:ComponentDefinition})} \subsubsection*{Rules for the \class{ComponentInstance} class} \setcounter{sbolCtr}{10701} \printValid{A \sbol{ComponentInstance} object inherits all properties of a \sbol{Documented} object. (Reference: \sec{sec:ComponentInstance})} -\Ctodo{access, definition are required URIs, mapsTo is optional} +\printValid{The \sbol{access} property is a required URI which must be one of the following: +\url{http://sbols.org/v2\#public} or \url{http://sbols.org/v2\#private}. +(Reference: \sec{sec:ComponentInstance})} + +\printValid{The \sbol{definition} property is a required URI reference to a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} + +\printModeling{The \sbol{definition} property URI should reference a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} + +\printValid{The \sbol{mapsTos} property is an optional set of \sbol{MapsTo} objects. (Reference: \sec{sec:ComponentInstance})} \printValid{A \sbol{Component} object inherits all properties of a \sbol{ComponentInstance} object. (Reference: \sec{sec:ComponentInstance})} \printValid{A \sbol{FunctionalComponent} object inherits all properties of a \sbol{ComponentInstance} object. (Reference: \sec{sec:ComponentInstance})} -\Ctodo{direction is required URI} +\printValid{The \sbol{direction} property is a required URI for \sbol{FunctionalComponent} objects which must be one of the following: +\url{http://sbols.org/v2\#inout}, \url{http://sbols.org/v2\#in}, \url{http://sbols.org/v2\#out}, or \url{http://sbols.org/v2\#none}. +(Reference: \sec{sec:FunctionalComponent})} \subsubsection*{Rules for the \class{SequenceAnnotation} class} \setcounter{sbolCtr}{10801} \printValid{A \sbol{SequenceAnnotation} object inherits all properties of a \sbol{Documented} object. (Reference: \sec{sec:SequenceAnnotation})} -\Ctodo{Required location and optional component.} +\printValid{The \sbol{location} is a required property for all \sbol{SequenceAnnotation} objects and is a \sbol{Location} class object. (Reference: \sec{sec:SequenceAnnotation})} + +\printValid{The \sbol{component} property is an optional URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceAnnotation})} \subsubsection*{Rules for the \class{Location} class} \setcounter{sbolCtr}{10901} @@ -159,12 +202,26 @@ \subsubsection*{Rules for the \class{Location} class} \Ctodo{GenericLocation can have optional orientation URI} +\printValid{A \sbol{GenericLocation} object inherits all properties of a \sbol{Location} object. (Reference: \sec{sec:GenericLocation})} + +\printValid{The \sbol{orientation} property is an optional URI which, if specified, must be one of the following: \url{http://sbols.org/v2\#inline}, +\url{http://sbols.org/v2\#reverseComplement}. +(Reference: \sec{sec:GenericLocation})} + \subsubsection*{Rules for the \class{SequenceConstraint} class} \setcounter{sbolCtr}{11001} \printValid{A \sbol{SequenceConstraint} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:SequenceConstraint})} -\Ctodo{Required restriction URI, required subject/object URIs} +\printValid{The \sbol{restriction} property is a required URI which must be one of the following: +\url{http://sbols.org/v2\#precedes}, +\url{http://sbols.org/v2\#sameOrientationAs}, or +\url{http://sbols.org/v2\#oppositeOrientationAs}. +(Reference: \sec{sec:SequenceConstraint})} + +\printValid{The \sbol{subject} property is an required URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceConstraint})} + +\printValid{The \sbol{object} property is a required URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceConstraint})} \subsubsection*{Rules for the \class{Model} class} \setcounter{sbolCtr}{11101} @@ -178,14 +235,26 @@ \subsubsection*{Rules for the \class{ModuleDefinition} class} \printValid{A \sbol{ModuleDefinition} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:ModuleDefinition})} -\Ctodo{Optional roles, modules, interactions, models, and functionalComponents} +\printValid{The \sbol{roles} property is an optional set of URIs. (Reference: \sec{sec:ModuleDefinition})} + +\printValid{The \sbol{modules} property is an optional set of \sbol{Module} objects. (Reference: \sec{sec:ModuleDefinition})} + +\printValid{The \sbol{interactions} property is an optional set of \sbol{Interaction} objects. (Reference: \sec{sec:ModuleDefinition})} + +\printValid{The \sbol{functionalComponents} property is an optional set of \sbol{FunctionalComponent} objects. (Reference: \sec{sec:ModuleDefinition})} + +\printValid{The \sbol{models} property is an optional set of URIs. that reference \sbol{Model} objects. (Reference: \sec{sec:ModuleDefinition})} + +\printModeling{Each URI in the set of \sbol{models} should reference a \sbol{Model} object. (Reference: \sec{sec:ModuleDefinition})} \subsubsection*{Rules for the \class{Module} class} \setcounter{sbolCtr}{11301} \printValid{A \sbol{Module} object inherits all properties of a \sbol{Documented} object. (Reference: \sec{sec:Module})} -\Ctodo{Required definition, optional mapsTos} +\printValid{The \sbol{definition} property is a required URI reference to a \sbol{ModuleDefinition} object. (Reference: \sec{sec:Module})} + +\printValid{The \sbol{mapsTos} property is an optional set of \sbol{MapsTo} objects. (Reference: \sec{sec:Module})} \subsubsection*{Rules for the \class{MapsTo} class} \setcounter{sbolCtr}{11401} @@ -194,26 +263,34 @@ \subsubsection*{Rules for the \class{MapsTo} class} \Ctodo{Required refinement URI, required local/remote URIs} +\Ctodo{Maps to must not reference private acesss components} + \subsubsection*{Rules for the \class{Interaction} class} \setcounter{sbolCtr}{11501} \printValid{A \sbol{Interaction} object inherits all properties of a \sbol{Documented} object. (Reference: \sec{sec:Interaction})} -\Ctodo{Required type, optional participations} +\Ctodo{Required type} + +\printValid{The \sbol{participations} property is an optional set of \sbol{Participation} objects. (Reference: \sec{sec:Interaction})} \subsubsection*{Rules for the \class{Participation} class} \setcounter{sbolCtr}{11601} \printValid{A \sbol{Participation} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Participation})} -\Ctodo{Optional roles, required participant} +\printValid{The \sbol{participant} property is a required URI that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:Participation})} + +\printValid{The \sbol{roles} property is an optional set of URIs. (Reference: \sec{sec:Participation})} \subsubsection*{Rules for the \class{Collection} class} \setcounter{sbolCtr}{11701} \printValid{A \sbol{Collection} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} -\Ctodo{Optional members} +\printValid{The \sbol{members} property is an optional set of URIs. that reference \sbol{TopLevel} objects. (Reference: \sec{sec:Collection})} + +\printModeling{Each URI in the set of \sbol{members} should reference a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} \subsubsection*{Rules for the \class{Annotation} class} \setcounter{sbolCtr}{11801} @@ -225,6 +302,5 @@ \subsubsection*{Rules for the \class{GenericTopLevel} class} \printValid{A \sbol{GenericTopLevel} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:GenericTopLevel})} -\Ctodo{Required rdf type} - +\printValid{The \sbol{rdfType} property is required, and it has data type QName. (Reference: \sec{sec:GenericTopLevel})} diff --git a/history.tex b/history.tex index 8843f7dd..d942bfaa 100644 --- a/history.tex +++ b/history.tex @@ -3,7 +3,7 @@ \section{History and Acknowledgements} % ----------------------------------------------------------------------------- %Add yourself if you have helped and aren't on the list -SBOL originated in discussions between participants in the Synthetic Biology Open Language Workshops held in Blacksburg, Virginia on January 7-10, 2011, and its further development has continued at a series of subsequent open invitation workshops and through email exchanges on the SBOL Developers mailing list. +In early 2006 Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26 to 27 in 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deep Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. The original SBOL 1.0 was developed through his efforts together withthe small group of dedicated researchers. An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group and the over all pace of developed quickened. Its further development has continued at a series of subsequent open invitation workshops and through email exchanges on the SBOL Developers mailing list. Finally, afte repeated attempts, the SBOL core team finally secured federal funding from the National Science Foundation. This document is partly a result of that support. Contributors to this work include: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University). diff --git a/model.tex b/model.tex index cceef6c9..21564c2b 100644 --- a/model.tex +++ b/model.tex @@ -768,6 +768,7 @@ \subsubsection*{Serialization} \Ctodo{Add an example, like for all the rest} +\Ctodo{Should this be here or defined in ComponentInstance section?} \subsubsection{FunctionalComponent} \label{sec:FunctionalComponent} @@ -1151,7 +1152,7 @@ \subsubsection{GenericTopLevel} These \sbol{GenericTopLevel} entities can thus be safely used by tools to exchange non-SBOL data embedded separately within SBOL. As with any other top level entities, \sbol{GenericTopLevel} entities may include SBOL properties such as \sbol{name}, \sbol{description}, \sbol{displayId} and so on. The type of data found in the generic entity is indicated using the standard \external{rdf:type} property. -\Ctodo{rdf:type should be rdfType} +\Ctodo{rdf:type should be rdfType, and I believe its type is QName.} \begin{figure}[ht] \begin{center} diff --git a/overview.tex b/overview.tex index 56e818cc..8b5dd225 100644 --- a/overview.tex +++ b/overview.tex @@ -1,19 +1,30 @@ % % ----------------------------------------------------------------------------- \section{Overview of SBOL} % % ----------------------------------------------------------------------------- +Synthetic designs need to convey three types of information: +\begin{enumerate} +\item The physical molecule, represented by a sequence or a chemical structure +\item The functional role of the element in the design +\item The functional consequence of this element within the overall design or the biological system where it will perform +\end{enumerate} Typically, information about a designed genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. Interactions between these constituents are then used to construct biologically plausible designs. + +Figure 1 illustrates a generic synthetic design, showing the connections between a defined component and its physical representation as defined in the Component Definition and its functional representation as defined in the Functional Component. The Functional Component is part of a Module Definition, defining the behaviour of the designed Component which can be represented both as the participating biological molecules the Functional Component interacts with or the model that defines the overall system. + \Ctodo{reword for better clarity and coverage of the model -JSB} +\Dtodo{reworded to talk to the figure below - KC} % In the figure below, a simple toggle switch system is displayed, in which LacI and TetR repress each other's genes transcriptionally. The toggling of the system is controlled by adding IPTG to deactivate LacI, and ATC to deactivate TetR. The components of the system includes genetic elements, proteins, small molecules. \begin{figure}[ht] \begin{center} \includegraphics[scale=1.2]{images/SBOL2_2_revised.png} -\caption[]{ } +\caption[Generic representation of the SBOL standard]{Generic representation of the SBOL standard} \label{images:overview} \end{center} \end{figure} \Ctodo{Put a caption on the figure -JSB} +\Dtodo{added caption} \LDtodo{Remove SBML from the figure -JSB} The \sbol{Sequence} is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. From f17db9fd92490f5643f2a4e10601dce6e986c181 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Sun, 10 May 2015 17:51:33 +0000 Subject: [PATCH 085/317] Update on Overleaf. --- apdx-validation.tex | 41 +++++++++++++++++++++++++++++------------ model.tex | 5 ++--- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index e154531e..b7cf244a 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -134,7 +134,7 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{The \sbol{sequenceConstraints} property is an optional set of \sbol{SequenceConstraint} objects. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{sequenceAnnotation} property is an optional set of \sbol{SequenceAnnotation} objects. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{sequenceAnnotations} property is an optional set of \sbol{SequenceAnnotation} objects. (Reference: \sec{sec:ComponentDefinition})} \printValid{The \sbol{sequence} property is an optional URI reference to a \sbol{Sequence} object. (Reference: \sec{sec:ComponentDefinition})} @@ -183,6 +183,8 @@ \subsubsection*{Rules for the \class{SequenceAnnotation} class} \printValid{A \sbol{SequenceAnnotation} object inherits all properties of a \sbol{Documented} object. (Reference: \sec{sec:SequenceAnnotation})} +\Ctodo{Rule below needs to change if becomes a set of locations} + \printValid{The \sbol{location} is a required property for all \sbol{SequenceAnnotation} objects and is a \sbol{Location} class object. (Reference: \sec{sec:SequenceAnnotation})} \printValid{The \sbol{component} property is an optional URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceAnnotation})} @@ -190,23 +192,27 @@ \subsubsection*{Rules for the \class{SequenceAnnotation} class} \subsubsection*{Rules for the \class{Location} class} \setcounter{sbolCtr}{10901} +\Ctodo{Written assuming change in Location class to remove MultiRange} + \printValid{A \sbol{Location} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Location})} -\Ctodo{MultiRange, Range, Cut, GenericLocation inherit} +\printValid{The \sbol{orientation} property is an optional URI which, if specified, must be one of the following: \url{http://sbols.org/v2\#inline}, +\url{http://sbols.org/v2\#reverseComplement}. +(Reference: \sec{sec:GenericLocation})} -\Ctodo{MultiRange must have 2 ranges} +\printValid{A \sbol{GenericLocation} object inherits all properties of a \sbol{Location} object. (Reference: \sec{sec:GenericLocation})} -\Ctodo{Range must have start, end >0 with optional orientation URI} +\printValid{A \sbol{Range} object inherits all properties of a \sbol{Location} object. (Reference: \sec{sec:Range})} -\Ctodo{Cut must have at >= 0 with optional orientation URI} +\printValid{The \sbol{start} property is required for all \sbol{Range} objects, and it must be a positive integer. (Reference: \sec{sec:Range})} -\Ctodo{GenericLocation can have optional orientation URI} +\printValid{The \sbol{end} property is required for all \sbol{Range} objects, and it must be a positive integer. (Reference: \sec{sec:Range})} -\printValid{A \sbol{GenericLocation} object inherits all properties of a \sbol{Location} object. (Reference: \sec{sec:GenericLocation})} +\printValid{A \sbol{Cut} object inherits all properties of a \sbol{Location} object. (Reference: \sec{sec:Cut})} -\printValid{The \sbol{orientation} property is an optional URI which, if specified, must be one of the following: \url{http://sbols.org/v2\#inline}, -\url{http://sbols.org/v2\#reverseComplement}. -(Reference: \sec{sec:GenericLocation})} +\printValid{The \sbol{at} property is required for all \sbol{Cut} objects, and it must be a non-negative integer. (Reference: \sec{sec:Cut})} + +% \Ctodo{MultiRange must have 2 ranges} \subsubsection*{Rules for the \class{SequenceConstraint} class} \setcounter{sbolCtr}{11001} @@ -261,7 +267,14 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{A \sbol{MapsTo} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:MapsTo})} -\Ctodo{Required refinement URI, required local/remote URIs} +\printValid{The \sbol{refinement} property is a required URI for \sbol{MapsTo} objects which must be one of the following: +\url{http://sbols.org/v2\#useremote}, +\url{http://sbols.org/v2\#uselocal}, +\url{http://sbols.org/v2\#verifyIdentical}, and +\url{http://sbols.org/v2\#merge}. +(Reference: \sec{sec:MapsTo})} + +\Ctodo{required local/remote URIs} \Ctodo{Maps to must not reference private acesss components} @@ -270,7 +283,9 @@ \subsubsection*{Rules for the \class{Interaction} class} \printValid{A \sbol{Interaction} object inherits all properties of a \sbol{Documented} object. (Reference: \sec{sec:Interaction})} -\Ctodo{Required type} +\printValid{The \sbol{types} property is a set of URIs, and it is required to include at least entry. (Reference: \sec{sec:Interaction})} + +\printModeling{A least one type in the set of \sbol{types} should be a URI from the Systems Biology Ontology (SBO). (Reference: \sec{sec:Interaction})} \printValid{The \sbol{participations} property is an optional set of \sbol{Participation} objects. (Reference: \sec{sec:Interaction})} @@ -281,6 +296,8 @@ \subsubsection*{Rules for the \class{Participation} class} \printValid{The \sbol{participant} property is a required URI that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:Participation})} +\Dtodo{Should this be required and changed to "types"?} + \printValid{The \sbol{roles} property is an optional set of URIs. (Reference: \sec{sec:Participation})} \subsubsection*{Rules for the \class{Collection} class} diff --git a/model.tex b/model.tex index 21564c2b..f34e561c 100644 --- a/model.tex +++ b/model.tex @@ -446,9 +446,6 @@ \subsubsection{Location} \end{center} \end{figure} - - - \paragraph{Range} \label{sec:Range} A \sbol{Range} object specifies inclusive start and end positions. These properties are required in \sbol{Range} objects and they can have \external{integer} values greater than zero. A \sbol{Range} object also includes an ``orientation'' property, for example to to specify directionality on a potentially double-stranded \sbol{Component} object. @@ -459,6 +456,8 @@ \subsubsection{Location} \subparagraph{The \sbolheading{end} property} Specifies the end of a \sbol{Range}. This property is REQUIRED and can have \external{integer} values greater than zero. +\Ctodo{If we remove MultiRange than Orientation can be moved to the Location class.} + \subparagraph{The \sbolheading{orientation} property} \label{sec:orientation} This OPTIONAL property has a URI value. For \sbol{ComponentDefinition} objects representing DNA molecules, it is RECOMMENDED to use one of the values in \ref{tbl:orientation_types}. From 38df06241910ea496c8cd55e5bd89e1a73658f5c Mon Sep 17 00:00:00 2001 From: jakebeal Date: Sun, 10 May 2015 13:00:53 -0500 Subject: [PATCH 086/317] resolved a couple of todos --- overview.tex | 13 +++++++------ sbol2.tex | 1 + 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/overview.tex b/overview.tex index 8b5dd225..73ef5164 100644 --- a/overview.tex +++ b/overview.tex @@ -9,22 +9,23 @@ \section{Overview of SBOL} \end{enumerate} Typically, information about a designed genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. Interactions between these constituents are then used to construct biologically plausible designs. -Figure 1 illustrates a generic synthetic design, showing the connections between a defined component and its physical representation as defined in the Component Definition and its functional representation as defined in the Functional Component. The Functional Component is part of a Module Definition, defining the behaviour of the designed Component which can be represented both as the participating biological molecules the Functional Component interacts with or the model that defines the overall system. +Figure 1 illustrates the relationships between the main classes of information encoded by SBOL. +The physical structure of an element is represented with a \sbol{ComponentDefinition}, often corresponding to a particular \sbol{Sequence} (e.g., DNA, RNA, amino acids), and with its structure further described in terms of the smaller \sbol{Component} instances contained within, and their absolute and relative positions within the component. +Functional relationships are represented with a \sbol{ModuleDefinition}, often also described by some \sbol{Model}, and with its structure further described in terms of the smaller \sbol{Module} instances contained within, as well as particular components (designated \sbol{FunctionalComponent} to indicate their use in defining a module), and their interactions. -\Ctodo{reword for better clarity and coverage of the model -JSB} -\Dtodo{reworded to talk to the figure below - KC} +\Rtodo{reword for better clarity and coverage of the model -JSB +reworded to talk to the figure below - KC Added some further tweaks -JSB} % In the figure below, a simple toggle switch system is displayed, in which LacI and TetR repress each other's genes transcriptionally. The toggling of the system is controlled by adding IPTG to deactivate LacI, and ATC to deactivate TetR. The components of the system includes genetic elements, proteins, small molecules. \begin{figure}[ht] \begin{center} \includegraphics[scale=1.2]{images/SBOL2_2_revised.png} -\caption[Generic representation of the SBOL standard]{Generic representation of the SBOL standard} +\caption{Main classes of information represented by the SBOL standard, and their relationships. Red boxes are ``top level'' classes, while blue classes are used in describing a top-level class; an arrow indicates that one class refers to another.} \label{images:overview} \end{center} \end{figure} -\Ctodo{Put a caption on the figure -JSB} -\Dtodo{added caption} +\Rtodo{Put a caption on the figure -JSB Done -KC Tweaked further -JSB} \LDtodo{Remove SBML from the figure -JSB} The \sbol{Sequence} is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. diff --git a/sbol2.tex b/sbol2.tex index 7a100685..dfce144b 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -90,6 +90,7 @@ \newcommand{\Dtodo}[1]{\todo[inline,color=red]{#1}} \newcommand{\LDtodo}[1]{\todo[inline,color=yellow]{#1}} \newcommand{\Ctodo}[1]{\todo[inline,color=cyan]{#1}} +% Resolved todos awaiting review: \newcommand{\Rtodo}[1]{\todo[inline,color=green]{#1}} %Command to format external terms in the document From 44c88257356d25067f1f54b87e6b49f3f2d14cf3 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Sun, 10 May 2015 14:06:30 -0500 Subject: [PATCH 087/317] resolved some more --- purpose.tex | 32 +++++++++++++++++--------------- sbol.bib | 11 +++++++++++ vocabulary.tex | 47 ++++++++++++++++++++++++++--------------------- 3 files changed, 54 insertions(+), 36 deletions(-) diff --git a/purpose.tex b/purpose.tex index 92e282d1..bb600178 100644 --- a/purpose.tex +++ b/purpose.tex @@ -9,22 +9,21 @@ \section{Purpose} Synthetic biology builds upon the techniques and successes of genetics, molecular biology and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. A common factor within these challenges is the exchange of information about designed systems between laboraties. As part of the design of synthetic systems Synthetic Biologists need to exchange information about multipe types of molecules and their planned roles within the designed and natural system they are working to change. Often the functional role may be associated with another type of molecule entirely, such as a small chemical, a DNA, an RNA or a Protein molecule. An example is an DNA sequence that is transcribed into a messenger RNA that contains an encoded microRNA binding site, and the messenger RNA in turn being translated into a protein molecule which is a transcription factor binding protein. Functionally the representation of the products of the designed DNA sequence need to describe the role of microRNA binding to the messenger RNA leading to possible degradation, the functional consequence of the transcription factor protein being absent leading to repression of expression of another gene and the kinetic information associated with these different elements so they can be mathematically modelled. The DNA sequence itself is thus one or two steps removed from the functional role of the designed device or circuit. -Current file formats such as Genbank and SwissProt represent sequence information based upon annotation of sequence features - they do not represent the functional roles or consequences of these sequences. Systems Biology Markup Language (SBML) represents reactions, pathways and models but does not typically represent the associated sequences. Kinetic information may be present in SBML~\cite{SBML} or may be represented by mathematical equations in other systems such as the COBRA Toolbox~\cite{COBRA}. Synthetic Biology needs a structured standard with defined ways on how to represent relevant molecues and their functional roles within the designed system, standarized rules on how such information is encoded in the file and the means to enable exchange of such data between participating laboraties as part of publications. -\Ctodo{Maybe discuss more about how SBOL is a standard. Huge transition from what is Syntetic Biology to SBOL} -\Rtodo{Added some text on the need for a standard and why other standards do not meet the current needs for SynBio data exchange - KC} +SBOL has been designed as a standard to support synthetic biology, filling a need not satisfied by other pre-existing standards. +Previous file formats such as Genbank and SwissProt represent sequence information based upon annotation of sequence features - they do not represent the functional roles or consequences of these sequences. Systems Biology Markup Language (SBML) represents reactions, pathways and models but does not typically represent the associated sequences. Kinetic information may be present in SBML~\cite{SBML} or may be represented by mathematical equations in other systems such as the COBRA Toolbox~\cite{COBRA}. Synthetic Biology needs a structured standard with defined ways on how to represent relevant molecues and their functional roles within the designed system, standarized rules on how such information is encoded in the file and the means to enable exchange of such data between participating laboratories as part of publications. +\Rtodo{Maybe discuss more about how SBOL is a standard. Huge transition from what is Synthetic Biology to SBOL. Added some text on the need for a standard and why other standards do not meet the current needs for SynBio data exchange - KC Small further tweaks -JB} -To help address these challenges, the Synthetic Biology Open Language (SBOL) Standard introduces a standardized format for the electronic exchange of information describing the structural and functional aspects of biological designs. The standard is designed to support the development of explicit and unambiguous data models of biological designs through the use of a well defined format on how to represent the component molecues, and their structural and functional roles in a systematic fashion. The standard describes rules and best practices on how to include, develop and populate this format with relevant information of essential design details. Because the standard itself can represent information from other sources for sequence representations, reaction information and ontologies to represent biological design information, the standard uses modern information exchange techniques such as Universal Resource Identifiers (URIs). This permits the reuse of existing information without the need to repeat it, thus avoiding both redundancy and future information rot within shared files. The ultimate utility of URIs in the SBOL Standard is the ability to support flexible annotation with appriate metadata while associating an authority with that annotation. The definition of the data model and associated format, the rules on the addition of data within the format and the representation of this in electronic data files make the SBOL Standard an excellent means of promoting global data exchange between laboraties and between software programs. -\Ctodo{it's not about a file format, it's about a representation; the fact that this is a file format is incidental -JSB} -\Ctodo{Motivate/discuss URI's?} -\Ctodo{Explicit and unambiguous data model, promotes global data exhchange, allows flexible annotation with meta data while associating an authority with that annotation.} -\Rtodo{reworked the text to add in the suggestions from the associated comments - KC} +To help address these challenges, the Synthetic Biology Open Language (SBOL) Standard introduces a standardized format for the electronic exchange of information describing the structural and functional aspects of biological designs. +The standard is designed to support the development of explicit and unambiguous data models of biological designs through the use of a well defined model on how to represent the component molecues, and their structural and functional roles in a systematic fashion. +The standard further describes rules and best practices on how to include, develop and populate this format with relevant information of essential design details. +Because the standard itself can represent information from other sources for sequence representations, reaction information and ontologies to represent biological design information, the standard uses modern information exchange techniques such as Universal Resource Identifiers (URIs). This permits the reuse of existing information without the need to repeat it, thus avoiding both redundancy and likely future information decay within shared files. The ultimate utility of URIs in the SBOL Standard is the ability to support flexible annotation with appriate metadata while associating an authority with that annotation. The definition of the data model and associated format, the rules on the addition of data within the format and the representation of this in electronic data files make the SBOL Standard an excellent means of promoting global data exchange between laboraties and between software programs. - -\Ctodo{Should the comparison with 1.1 really be there? This needs revision to be stand-alone, and right now it's basically an extract of the SBOL2 paper -JSB} -\Rtodo{ Updated the verbiage to emphasize the shortcoming of 1.1 and the need for the standard to evolve - KC} -Version 1.1 of the SBOL standard focused on representing the structural aspects of genetic designs. Users of the standard were ablt to use it to echange inforamtion on DNA designs but quickly identified the inability to represent molecules other thn DNA or the ability to represent the functional aspects of their dsigns beyond the DNA sequences. To serve as an effective medium for the computational exchange of genetic designs, SBOL must be extended to capture more aspects of a designed system, including both structural and functional information, and the composition of complex structural and functional designs by combining simpler parts. The SBOL data model proposed in this specification provides for addressing the most pressing needs for expanding SBOL Version 1.1. +This document presents the second version of SBOL. +The previous version 1.1 of the SBOL standard focused on representing the structural aspects of genetic designs. +Users of the standard were able to use it to echange information on DNA designs but could not represent molecules other than DNA or represent the functional aspects of their designs beyond the DNA sequences. +To serve as an effective medium for the computational exchange of genetic designs, SBOL must be extended to capture more aspects of a designed system, including both structural and functional information, and the composition of complex structural and functional designs by combining simpler parts. The SBOL 2.0 data model proposed in this specification thus provides for addressing the most pressing needs for expanding SBOL Version 1.1. \begin{enumerate} @@ -42,6 +41,9 @@ \section{Purpose} To address the need for functional descriptions in SBOL, the proposed data model adds classes for modules, interactions, and models. These classes provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the Systems Biology Markup Language (SBML)~\cite{SBML} to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. -\Ctodo{This just sort of stops. Need a better end. --JSB} -The SBOL standard has been developed in collaboration between both wet bench scientists and ascientific modelers active within the Synthetic Biology community. As with the earlier SBOL v1.1 standard this community has met to discuss, argue and agree upon needs that the SBOL standard should address. This information has been used by developers within our community to design, develop and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects as well as the ability to share designs between different laboratories. The standard has been used to develop softwares that employ the standard for developing and sharing synthetic design projects. The purpose of the current specification is to share the details of the SBOL standard with a wider community of users and developers so it can be more widely employed through the scientific community. -\Rtodo{I wrote a final paragraph to provide a better end - KC} \ No newline at end of file +The SBOL standard has been developed in collaboration between both ``wet'' bench scientists and ``dry'' scientific modelers and tool designers active within the Synthetic Biology community. +As with the earlier SBOL v1.1 standard this community (open for any practitioner to join) has met to discuss, argue and agree upon needs that the SBOL standard should address. +This information has then been used by developers within our community to design, develop and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects as well as the ability to share designs between different laboratories. +The standard has also been used to develop software tools that employ the standard for developing and sharing synthetic design projects. +The publication of specification now share the details of the SBOL standard that have been worked out with the entire community of potentual users and developers so it can be more widely employed through the scientific community. +\Rtodo{I wrote a final paragraph to provide a better end - KC Tweaked further -JSB} \ No newline at end of file diff --git a/sbol.bib b/sbol.bib index 74ec689c..1065753c 100644 --- a/sbol.bib +++ b/sbol.bib @@ -1,3 +1,14 @@ +@article{COBRA, + title={Quantitative prediction of cellular metabolism with constraint-based models: the COBRA Toolbox v2. 0}, + author={Schellenberger, Jan and Que, Richard and Fleming, Ronan MT and Thiele, Ines and Orth, Jeffrey D and Feist, Adam M and Zielinski, Daniel C and Bordbar, Aarash and Lewis, Nathan E and Rahmanian, Sorena and others}, + journal={Nature protocols}, + volume={6}, + number={9}, + pages={1290--1307}, + year={2011}, + publisher={Nature Publishing Group} +} + @article{CellML, Author = {A Garny and DP Nickerson and J Cooper and R Weber dos Santos and AK Miller and S McKeever and PM Nielsen and PJ Hunter}, Journal = {Philos. Transact. A: Math Phys Eng Sci}, diff --git a/vocabulary.tex b/vocabulary.tex index 47f95dac..bf4b9391 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -15,59 +15,64 @@ \section{SBOL Specification Vocabulary} \subsection{SBOL Class Names} -SBOL defines the following classes: +SBOL defines the following ``top-level'' and dependent classes: -\LDtodo{Organize these functionally, not alphabetically. -bder} +\Rtodo{Organize these functionally, not alphabetically. -bder. Done by creating toplevel/dependent substructure -JSB} \begin{description} \item \emph{\sbol{Collection}}: Represents a user-defined container for organizing a group of SBOL objects. +\item \emph{\sbol{ComponentDefinition}}: Describes the structure of designed entities, such as DNA, RNA, and proteins, as well as other entities they interact with, such as small molecules or environmental properties. + +\begin{itemize} \item \emph{\sbol{Component}}: Represents a specific occurrence or instance of a single entity within the design of a more complex component. Each \sbol{Component} is associated with a \sbol{ComponentDefinition}, and there may be many different instances at different locations in a design that share the same definition. -\item \emph{\sbol{ComponentDefinition}}: Describes the structure of designed entities, such as DNA, RNA, and proteins, as well as other entities they interact with, such as small molecules or environmental properties. +\item \emph{\sbol{Location}}: +Specifies the base coordinates and orientation of a genetic feature on a DNA or RNA molecule or a residue or site on another sequential macromolecule such as a protein. -\item \emph{\sbol{FunctionalComponent}}: -Represents a specific occurrence or instance of an entity within a \sbol{ModuleDefinition}. -Exactly like a \sbol{Component}, except that it can be associated with information about its context of use in the \sbol{Module}, rather than in the context of a containing \sbol{ComponentDefinition}. +\item \emph{\sbol{SequenceAnnotation}}: +Describes the \sbol{Location} of a notable sub-sequence found within a \sbol{ComponentDefinition}, optionally linking it to a \sbol{Component}. + +\item \emph{\sbol{SequenceConstraint}}: +Describes the relative spatial position and orientation of two \sbol{Component} objects that are contained within the same \sbol{ComponentDefinition}. +\end{itemize} \item \emph{\sbol{GenericTopLevel}}: Represents a data container that can contain custom data added by user applications. +\item \emph{\sbol{Model}}: +Links an SBOL representation of biological components and their interactions to quantitative, computational models that may be used to predict the functional behavior of a biological design. + +\item \emph{\sbol{ModuleDefinition}}: +Describes a ``system'' design as a collection of biological components and their functional relationships. + +\begin{itemize} +\item \emph{\sbol{FunctionalComponent}}: +Represents a specific occurrence or instance of an entity within a \sbol{ModuleDefinition}. +Exactly like a \sbol{Component}, except that it can be associated with information about its context of use in the \sbol{Module}, rather than in the context of a containing \sbol{ComponentDefinition}. + \item \emph{\sbol{Interaction}}: Describes a functional relationship between biological entities, such as regulatory activation or repression, or a biological processes such as transcription or translation. -\item \emph{\sbol{Location}}: -Specifies the base coordinates and orientation of a genetic feature on a DNA or RNA molecule or a residue or site on another sequential macromolecule such as a protein. - \item \emph{\sbol{MapsTo}}: When a design (\sbol{ComponentDefinition} or \sbol{ModuleDefinition}) includes another design as a substructure, the larger design may need to refer to a \sbol{ComponentInstance} from the sub-design. In this case, a copy of the referenced \sbol{ComponentInstance} needs to be created in the design and a \sbol{MapsTo} is added to the instance for the sub-design, which associates the original and the copy. -\item \emph{\sbol{Model}}: -Links an SBOL representation of biological components and their interactions to quantitative, computational models that may be used to predict the functional behavior of a biological design. - \item \emph{\sbol{Module}}: Represents a specific occurrence or instance of a sub-system within a larger design. Each \sbol{Module} is associated with a \sbol{ModuleDefinition}, and there may be many different instances at different locations in a design that share the same definition. -\item \emph{\sbol{ModuleDefinition}}: -Describes a ``system'' design as a collection of biological components and their functional relationships. - \item \emph{\sbol{Participation}}: Describes the role that a \sbol{Component} plays in an \sbol{Interaction}. For example, a transcription factor might participate in an \sbol{Interaction} as a repressor or as an activator. +\end{itemize} + \item \emph{\sbol{Sequence}}: Represents a contiguous series of monomers in a macromoleculer polymer such as DNA, RNA, or protein. -\item \emph{\sbol{SequenceAnnotation}}: -Describes the \sbol{Location} of a notable sub-sequence found within a \sbol{ComponentDefinition}, optionally linking it to a \sbol{Component}. - -\item \emph{\sbol{SequenceConstraint}}: -Describes the relative spatial position and orientation of two \sbol{Component} objects that are contained within the same \sbol{ComponentDefinition}. - \end{description} \ No newline at end of file From e1f7de31dbc7d154b680ddf929f98f65dc81f56f Mon Sep 17 00:00:00 2001 From: jakebeal Date: Sun, 10 May 2015 17:35:35 -0500 Subject: [PATCH 088/317] resolved a couple more model todos --- model.tex | 27 ++++++++++++++++++++++----- serialization.tex | 4 +++- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/model.tex b/model.tex index f34e561c..45c7017c 100644 --- a/model.tex +++ b/model.tex @@ -226,7 +226,7 @@ \subsection{ComponentDefinition} \end{figure} -\LDtodo{Examples of ontologies for non-molecular type gs (eg, light)...?} +\Rtodo{Examples of ontologies for non-molecular type gs (eg, light)...? JSB: I don't think we need it.} \subsubsection*{The \sbolheading{types} property} \label{sec:types} @@ -290,12 +290,12 @@ \subsubsection*{The \sbolheading{sequenceConstraints} property} This OPTIONAL property links to one or more \sbol{SequenceConstraint} objects describing structural restrictions on the placement of subcomponents with respect to the \sbol{Sequence} of a \sbol{ComponentDefinition}. -\Rtodo{This needs to be explained} +\Rtodo{This needs to be explained. JSB: done.} \subsubsection*{The \sbolheading{sequenceAnnotations} property} \label{sec:sequenceAnnotations} -\Rtodo{This needs to be better explained. -JSB} +\Rtodo{This needs to be better explained. -JSB; JSB: done.} This OPTIONAL property links to one or more \sbol{SequenceAnnotation} objects describing the precise locations of subcomponents with respect to the \sbol{Sequence} of a \sbol{ComponentDefinition}. @@ -427,9 +427,26 @@ \subsubsection{SequenceAnnotation} \end{lstlisting} -\Ctodo{Need to give an example with this one} +The example below shows the serialization of a \sbol{SequenceAnnotation} object. It specifies the location of a particular \sbol{Component} named BBa\_F2620. +\lstsetsbol +\begin{lstlisting} + + + + + 56 + 68 + + + + + + +\end{lstlisting} + +\Rtodo{Need to give an example with this one. JSB: done.} -\Ctodo{Make sure it's clear these templates specify content, not order} +\Rtodo{Make sure it's clear these templates specify content, not order. JSB: put a note explaining ordering is flexible in the serialization section.} diff --git a/serialization.tex b/serialization.tex index a9e31483..11a04b62 100644 --- a/serialization.tex +++ b/serialization.tex @@ -9,7 +9,9 @@ \section{SBOL RDF Serialization} The canonical serialization of SBOL is to a strict dialect of RDF/XML. This serialization provides the base from which to meet further requirements. Any RDF/XML-aware tooling can consume and analyze a SBOL file. Where possible, we have re-used predicates from widely-used terminologies (such as Dublin Core~\cite{dcmi2012}) to expose as much of the data as practical to standard RDF tooling. -Arbitrary RDF/XML provides a great deal of flexibility in how equivalent data can be serialized. This flexibility can result in different serializations when processing RDF/XML files using standard off-the-shelf XML tools, such as DOM-OO mappings. To address this problem, we define a canonical association between the nesting of data structures within the SBOL UML data model and the RDF/XML file. For all ownership associations (filled diamonds), the RDF/XML for the owned entity is embedded within the owner's RDF/XML. For all associations that are by reference (open diamonds), the RDF/XML for the referenced property is linked via a resource URI. +Arbitrary RDF/XML provides a great deal of flexibility in how equivalent data can be serialized. This flexibility can result in different serializations when processing RDF/XML files using standard off-the-shelf XML tools, such as DOM-OO mappings. +To address this problem, we define a canonical association between the nesting of data structures within the SBOL UML data model and the RDF/XML file. For all ownership associations (filled diamonds), the RDF/XML for the owned entity is embedded within the owner's RDF/XML (the set of property values, however, may still be listed in any order). +For all associations that are by reference (open diamonds), the RDF/XML for the referenced property is linked via a resource URI. \Ctodo{Perhaps add or reference an example of ownership vs referencing. - cm} \Ctodo{GM: Add a statement to indicate that the order of properties is not important.} From 2005c9b86ec81907f4ba6776df3d00bdc3e82e32 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Mon, 11 May 2015 01:58:10 +0000 Subject: [PATCH 089/317] Update on Overleaf. --- model.tex | 7 ++----- sbol.bib | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/model.tex b/model.tex index 45c7017c..1a736bda 100644 --- a/model.tex +++ b/model.tex @@ -212,7 +212,7 @@ \subsubsection*{Serialization} \subsection{ComponentDefinition} \label{sec:ComponentDefinition} -The \sbol{ComponentDefinition} class represents the structural entities of a biological design. The primary usage of this class is to represent structural entities with designed sequences, such as DNA, RNA, and proteins, but it can also be used to represent any other entity that is part of the design, such as small molecules, molecular complexes, and light. +The \sbol{ComponentDefinition} class represents the structural entities of a biological design. The primary usage of this class is to represent structural entities with designed sequences, such as DNA, RNA, and proteins, but it can also be used to represent any other entity that is part of a design, such as small molecules, molecular complexes, and light. As shown in \ref{uml:component_definition}, the \sbol{ComponentDefinition} class describes a structural design entity using the following properties: \sbol{types}, \sbol{roles}, and \sbol{sequence}. In addition, this class has properties for describing and organizing the substructure of said design entity, including \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations}. @@ -225,15 +225,12 @@ \subsection{ComponentDefinition} \end{center} \end{figure} - -\Rtodo{Examples of ontologies for non-molecular type gs (eg, light)...? JSB: I don't think we need it.} - \subsubsection*{The \sbolheading{types} property} \label{sec:types} The \sbol{types} property is a REQUIRED set of \external{URI}s that specifies the category of biochemical or physical entity (for example DNA, protein, or small molecule) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. -The \sbol{types} property of every \sbol{ComponentDefinition} MUST contain at least one \external{URI} that identifies a term from an appropriate ontology, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). Furthermore, if the \sbol{types} property contains multiple URIs, then they MUST identify synonymous terms. Finally, in order to maximize the compatibility of descriptions, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbol{types}. +The \sbol{types} property of every \sbol{ComponentDefinition} MUST contain at least one \external{URI} that identifies a term from an appropriate ontology, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). Furthermore, if the \sbol{types} property contains multiple URIs, then they MUST identify synonymous terms. In order to maximize the compatibility of descriptions, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbol{types}. \begin{table}[ht] \begin{edtable}{tabular}{ll} diff --git a/sbol.bib b/sbol.bib index 1065753c..0b3859cc 100644 --- a/sbol.bib +++ b/sbol.bib @@ -53,4 +53,4 @@ @techreport{dcmi2012 type = {{DCMI} Recommendation}, url = {http://dublincore.org/documents/2012/06/14/dcmi-terms/}, year = 2012 -} +} \ No newline at end of file From ac1a517a71476e9a0fb455b16db920f0eb94d83f Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Mon, 11 May 2015 04:09:09 +0000 Subject: [PATCH 090/317] Update on Overleaf. --- model.tex | 15 +++++++++------ overview.tex | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/model.tex b/model.tex index 1a736bda..e1c45f85 100644 --- a/model.tex +++ b/model.tex @@ -230,7 +230,7 @@ \subsubsection*{The \sbolheading{types} property} The \sbol{types} property is a REQUIRED set of \external{URI}s that specifies the category of biochemical or physical entity (for example DNA, protein, or small molecule) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. -The \sbol{types} property of every \sbol{ComponentDefinition} MUST contain at least one \external{URI} that identifies a term from an appropriate ontology, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). Furthermore, if the \sbol{types} property contains multiple URIs, then they MUST identify synonymous terms. In order to maximize the compatibility of descriptions, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbol{types}. +The \sbol{types} property of every \sbol{ComponentDefinition} MUST contain at least one \external{URI} that SHOULD identify a term from an appropriate ontology, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). Furthermore, if the \sbol{types} property contains multiple URIs, then they MUST identify synonymous terms. In order to maximize the compatibility of descriptions, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbol{types}. \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -252,17 +252,20 @@ \subsubsection*{The \sbolheading{roles} property} The \sbol{roles} property is a REQUIRED set of \external{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} object in a biological context. -The \sbol{roles} property of every \sbol{ComponentDefinition} object MUST contain at least one \external{URI} that identifies a term from an ontology that is consistent with the type of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA \sbol{ComponentDefinition} component SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). Any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use that term as one of its \sbol{roles}. +The \sbol{roles} property of every \sbol{ComponentDefinition} object MUST contain at least one \external{URI} that SHOULD identify a term from an ontology that is consistent with the type of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} component SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). Any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use that term as one of its \sbol{roles}. \begin{table}[ht] \begin{edtable}{tabular}{lll} \toprule \textbf{ComponentDefinition Role} & \textbf{URI for Ontology Term} & \textbf{ComponentDefinition Type} \\ \midrule - & \\ - & \\ - & \\ - & \\ + Promoter & http://identifiers.org/so/SO:0000167 & DNA \\ + RBS & http://identifiers.org/so/SO:0000139 & DNA \\ + CDS & http://identifiers.org/so/SO:0000316 & DNA \\ + Terminator & http://identifiers.org/so/SO:0000141 & DNA \\ + Gene & http://identifiers.org/so/SO:0000704 & DNA \\ + mRNA & http://identifiers.org/so/SO:0000234 & RNA \\ + Effector & identifiers.org/chebi/CHEBI:35224 & Small Molecule \\ \bottomrule \end{edtable} \caption{Ontology terms to specify the \sbol{roles} property of a \sbol{ComponentDefinition}.} diff --git a/overview.tex b/overview.tex index 73ef5164..5d55daea 100644 --- a/overview.tex +++ b/overview.tex @@ -36,7 +36,7 @@ \section{Overview of SBOL} In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a structural hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. A functional layer can be defined to describe the behaviors that arise from the structural layer. \sbol{ModuleDefinition}s contain information about molecular interactions and their participating components. They can contain \sbol{FunctionalComponent}s that are instances of \sbol{ComponentDefinition}s that can be assigned functional properties, and they can also contain other modules in a functional hierarchy. The functions and interactions of these components and other modules within the \sbol{ModuleDefinition} can be quantitatively or qualitatively described using a \sbol{Model}. -SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. +SBOL includes different entities to describe such genetic circuits. Genetic elements such as a promoter, ribosome binding site (RBS), coding sequence (CDS), or terminator are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. \Ctodo{Need to also explain annotation --JSB} From e4d6cbefcc5f79b3b30cf019826adfc4ed767055 Mon Sep 17 00:00:00 2001 From: Jacob Beal Date: Mon, 11 May 2015 04:43:14 +0000 Subject: [PATCH 091/317] Update on Overleaf. --- images/toggle-highlevel.pptx | Bin 0 -> 31476 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/toggle-highlevel.pptx diff --git a/images/toggle-highlevel.pptx b/images/toggle-highlevel.pptx new file mode 100644 index 0000000000000000000000000000000000000000..6e2288874ce53e3bb51933ce923459be83c45548 GIT binary patch literal 31476 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 literal 0 HcmV?d00001 From 7bb6d101ae871ffedd3f9d7abf1dcc4a50cbdced Mon Sep 17 00:00:00 2001 From: jakebeal Date: Sun, 10 May 2015 23:57:01 -0500 Subject: [PATCH 092/317] add high-level toggle description --- examples_model.tex | 20 ++++++++++++++++++-- images/toggle-highlevel.pdf | Bin 0 -> 28782 bytes 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 images/toggle-highlevel.pdf diff --git a/examples_model.tex b/examples_model.tex index 78be8d4b..03ad2f5b 100644 --- a/examples_model.tex +++ b/examples_model.tex @@ -5,9 +5,25 @@ \section{Data Model Examples} %\subsection{LacI/TetR Toggle Switch} -This section illustrates how to use the SBOL data model by specifying the design of a LacI/TetR toggle switch similar to those constructed in \cite{Gardner2000}. This design is visualized in \ref{images:toggleswitch_modular}. +This section illustrates how to use the SBOL data model by specifying the design of a LacI/TetR toggle switch similar to those constructed in \cite{Gardner2000}. This design is visualized conceptually in \ref{images:toggle} and in detail in \ref{images:toggleswitch_modular}. -\Ctodo{Add a standard toggle switch diagram of two things repressing each other and a simple explanation for people who do not already know the toggle switch.} +Conceptually, the toggle switch is constructed from two mutually repressing genes. +With strongly repressors LacI and TetR, this results in a bi-stable system that will tend to settle into a state where precisely one of the two repressors is strongly expressed, repressing the other. +Each of these repressors can have its activity disrupted by a small molecule (IPTG for LacI, aTc for TetR), which allows the system to be ``toggled'' from one state to the other by dosing it with the appropriate small molecule. + +\Rtodo{Add a standard toggle switch diagram of two things repressing each other and a simple explanation for people who do not already know the toggle switch.} + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=1.0]{images/toggle-highlevel.pdf} +\caption[]{Conceptual diagram of LacI/TetR toggle switch: the LacI + and TetR transcriptional factors are arranged to mutually repress, + creating a bi-stable system. Transition between the two states + is triggered by the small-molecule signals aTc (which disrupts TetR + repression) and IPTG (which disrupts LacI repression).} +\label{images:toggle} +\end{center} +\end{figure} \begin{figure}[ht] \begin{center} diff --git a/images/toggle-highlevel.pdf b/images/toggle-highlevel.pdf new file mode 100644 index 0000000000000000000000000000000000000000..bc86f5d8a323e575e0247348f6d8bb035fa10cfd GIT binary patch literal 28782 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 Date: Mon, 11 May 2015 00:01:49 -0500 Subject: [PATCH 093/317] accounting tweak --- sbol2.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sbol2.tex b/sbol2.tex index dfce144b..f745c92d 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -90,7 +90,7 @@ \newcommand{\Dtodo}[1]{\todo[inline,color=red]{#1}} \newcommand{\LDtodo}[1]{\todo[inline,color=yellow]{#1}} \newcommand{\Ctodo}[1]{\todo[inline,color=cyan]{#1}} -% Resolved todos awaiting review: +% Resolved but still awaiting review: \newcommand{\Rtodo}[1]{\todo[inline,color=green]{#1}} %Command to format external terms in the document @@ -337,4 +337,4 @@ \section{...} validation rule commands \cmd{validRule}, \cmd{consistencyRule} and \cmd{modelingRule} described in \sec{validation-rules}. -\end{itemize} \ No newline at end of file +\end{itemize} From ce0cb2690c0cec2f71eb934f446f82d5ee153526 Mon Sep 17 00:00:00 2001 From: Kevin Clancy Date: Mon, 11 May 2015 19:45:19 +0000 Subject: [PATCH 094/317] Update on Overleaf. --- model.tex | 9 +++++---- overview.tex | 10 ++++++---- sbol2.tex | 2 +- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/model.tex b/model.tex index e1c45f85..215cb6c1 100644 --- a/model.tex +++ b/model.tex @@ -230,7 +230,7 @@ \subsubsection*{The \sbolheading{types} property} The \sbol{types} property is a REQUIRED set of \external{URI}s that specifies the category of biochemical or physical entity (for example DNA, protein, or small molecule) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. -The \sbol{types} property of every \sbol{ComponentDefinition} MUST contain at least one \external{URI} that SHOULD identify a term from an appropriate ontology, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). Furthermore, if the \sbol{types} property contains multiple URIs, then they MUST identify synonymous terms. In order to maximize the compatibility of descriptions, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbol{types}. +The \sbol{types} property of every \sbol{ComponentDefinition} MUST contain at least one \external{URI} that SHOULD identify a term from an appropriate ontology, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). Furthermore, if the \sbol{types} property contains multiple URIs, then they MUST identify synonymous terms. In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbol{types}. \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -252,7 +252,7 @@ \subsubsection*{The \sbolheading{roles} property} The \sbol{roles} property is a REQUIRED set of \external{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} object in a biological context. -The \sbol{roles} property of every \sbol{ComponentDefinition} object MUST contain at least one \external{URI} that SHOULD identify a term from an ontology that is consistent with the type of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} component SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). Any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use that term as one of its \sbol{roles}. +The \sbol{roles} property of every \sbol{ComponentDefinition} object MAY contain zero or more \external{URI}s that SHOULD identify terms from ontologies that are consistent with the type of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} component SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). As with the \sbol{types} property, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use that term as one of its \sbol{roles}. \begin{table}[ht] \begin{edtable}{tabular}{lll} @@ -265,14 +265,15 @@ \subsubsection*{The \sbolheading{roles} property} Terminator & http://identifiers.org/so/SO:0000141 & DNA \\ Gene & http://identifiers.org/so/SO:0000704 & DNA \\ mRNA & http://identifiers.org/so/SO:0000234 & RNA \\ - Effector & identifiers.org/chebi/CHEBI:35224 & Small Molecule \\ + Transcription Factor & http://identifiers.org/go/GO:0003700 & Protein \\ + Effector & http://identifiers.org/chebi/CHEBI:35224 & Small Molecule \\ \bottomrule \end{edtable} \caption{Ontology terms to specify the \sbol{roles} property of a \sbol{ComponentDefinition}.} \label{tbl:componentdefinition_roles} \end{table} -\LDtodo{Taken from what ontology?} +\Rtodo{Taken from what ontology?} \subsubsection*{The \sbolheading{components} property} \label{sec:components} diff --git a/overview.tex b/overview.tex index 5d55daea..39f0a9b9 100644 --- a/overview.tex +++ b/overview.tex @@ -28,23 +28,25 @@ \section{Overview of SBOL} \Rtodo{Put a caption on the figure -JSB Done -KC Tweaked further -JSB} \LDtodo{Remove SBML from the figure -JSB} -The \sbol{Sequence} is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. -Therefore, both experimental work and theoretical sequence composition research depend heavily on the sequence associated with component definitions. +The \sbol{Sequence} is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. In designed systems such objects can consist of small chemical molecules, DNAs, RNAs or Proteins. The \sbol{Sequence} object has been designed to encapsulate any of these types of molecules. Small molecule \sbol{Sequence} objects are typically referred to via their chemical formulae. Molecules where sequence specific information is important, such as DNA, RNA and Protein \sbol{Sequence} objects, use the object to incorporate this information. The \sbol{Sequence} object encapsulates this positional information as well as the associated experimental work or other information related to a sequenced molecule. \Ctodo{need to make it clear that it includes DNA, RNA, and protein, also smooth the text --JSB} +\Rtodo{made addiitons based upon the suggested changes - KC} -In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a structural hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. A functional layer can be defined to describe the behaviors that arise from the structural layer. \sbol{ModuleDefinition}s contain information about molecular interactions and their participating components. They can contain \sbol{FunctionalComponent}s that are instances of \sbol{ComponentDefinition}s that can be assigned functional properties, and they can also contain other modules in a functional hierarchy. The functions and interactions of these components and other modules within the \sbol{ModuleDefinition} can be quantitatively or qualitatively described using a \sbol{Model}. +In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a structural hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. A functional layer can be defined to describe the behaviors that arise from the structural layer. \sbol{ModuleDefinition}s contain information about molecular interactions and their participating components. They can contain \sbol{FunctionalComponent}s that are instances of \sbol{ComponentDefinition}s that can be assigned functional properties, and they can also contain other modules in a functional hierarchy. The functions and interactions of these components and other modules within the \sbol{ModuleDefinition} can be quantitatively or qualitatively described using a \sbol{Model}. The \sbol{SequenceAnnotation} object defines data associated the \sbol{Sequence} and \sbol{ComponentDefinition} objects that is needed beyond basic definitions. This can refer to local annotations of the object as well as a container for URIs to external information sources. -SBOL includes different entities to describe such genetic circuits. Genetic elements such as a promoter, ribosome binding site (RBS), coding sequence (CDS), or terminator are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. +SBOL includes different entities to describe such genetic circuits. Genetic elements such as a promoter, ribosome binding site (RBS), coding sequence (CDS), or terminator are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. \sbol{Sequence Annotation}s can be used to carry data associated with the successful running of that model on another computer, can be used to point towards sources of some or all of the circuit and the location of experimental data associated with the development of the model. \Ctodo{Need to also explain annotation --JSB} +\Dtodo{Provided some text for review describing annotation - KC} SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. \Ctodo{This needs to be clarified. Do we really want to explain MapsTo here? -JSB} +\Ctodo{it's not in the diagram. So it should be removed or dealt with in the figure and earlier in the text- KC} \Ctodo{Explain why it is important to separate definitions from instantiations?} diff --git a/sbol2.tex b/sbol2.tex index f745c92d..70bcdc77 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -337,4 +337,4 @@ \section{...} validation rule commands \cmd{validRule}, \cmd{consistencyRule} and \cmd{modelingRule} described in \sec{validation-rules}. -\end{itemize} +\end{itemize} \ No newline at end of file From 7680eb88f229f2be37387e88b90fdb45cb25e543 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Mon, 11 May 2015 21:14:45 -0500 Subject: [PATCH 095/317] working on serializations in model --- model.tex | 124 ++++++++++++++++++++++++++++++++++++++++++++++----- overview.tex | 7 ++- 2 files changed, 116 insertions(+), 15 deletions(-) diff --git a/model.tex b/model.tex index 215cb6c1..eb9814dd 100644 --- a/model.tex +++ b/model.tex @@ -59,7 +59,7 @@ \subsection{Data Types} \item Literal: \url{something goes here} \end{itemize} -\subsection {Identified} +\subsection{Identified} \label{sec:Identified} \Ctodo{Put a small concrete example for each toplevel, in the style of the mapsTo diagram} @@ -109,8 +109,12 @@ \subsubsection*{The \sbolheading{version} property} This convention represents versions as sequences of numbers and qualifiers separated by the characters {\tt .} and {\tt -} and compared in lexicographical order (for example, 1 < 1.3.1 < 2.0-beta). For a full explanation, see the linked resources. +\subsubsection*{Serialization} + +No serialization is defined for \sbol{Identified}, since this class is +only used indirectly through its child classes. -\subsection {Documented} +\subsection{Documented} \label{sec:Documented} The \sbol{Documented} abstract class is inherited by the classes of SBOL objects that can contain human-readable properties, such as name and description. This class extends \sbol{Identified} with two additional data properties: \sbol{name}, and \sbol{description} (\ref{uml:documented}). @@ -137,6 +141,11 @@ \subsubsection*{The \sbolheading{description} property} The \sbol{description} property is OPTIONAL and has a data type of \external{String}. This property is intended to contain a more thorough description of a \sbol{Documented} object. +\subsubsection*{Serialization} + +No serialization is defined for \sbol{Documented}, since this class is +only used indirectly through its child classes. + \subsection {TopLevel} \label{sec:TopLevel} \sbol{TopLevel} is an abstract class that is extended by any \sbol{Documented} class that can be found at the top level of an SBOL file. In other words, when an object that belongs to a \sbol{TopLevel} class is serialized to a file representation, it is not nested inside any other object. Instead of nesting, composite \sbol{TopLevel} objects refer to subordinate \sbol{TopLevel} objects by their \sbol{identity} or \sbol{persistentIdentity} \external{URI}s. The \sbol{TopLevel} classes defined by this specification are \sbol{Sequence}, \sbol{ComponentDefinition}, \sbol{Model}, \sbol{ModuleDefinition}, \sbol{Collection}, and \sbol{GenericTopLevel} (\ref{uml:toplevel}). @@ -149,6 +158,11 @@ \subsubsection*{The \sbolheading{description} property} \end{center} \end{figure} +\subsubsection*{Serialization} + +No serialization is defined for \sbol{TopLevel}, since this class is +only used indirectly through its child classes. + \subsection{Sequence} \label{sec:Sequence} The purpose of the \sbol{Sequence} class is to represent the primary structure of a \sbol{ComponentDefinition} object and the manner in which it is encoded. This representation is accomplished by means of the \sbol{elements} property and \sbol{encoding} property (\ref{uml:sequence}). @@ -260,7 +274,7 @@ \subsubsection*{The \sbolheading{roles} property} \textbf{ComponentDefinition Role} & \textbf{URI for Ontology Term} & \textbf{ComponentDefinition Type} \\ \midrule Promoter & http://identifiers.org/so/SO:0000167 & DNA \\ - RBS & http://identifiers.org/so/SO:0000139 & DNA \\ + Ribosome Entry Site & http://identifiers.org/so/SO:0000139 & DNA \\ CDS & http://identifiers.org/so/SO:0000316 & DNA \\ Terminator & http://identifiers.org/so/SO:0000141 & DNA \\ Gene & http://identifiers.org/so/SO:0000704 & DNA \\ @@ -273,8 +287,6 @@ \subsubsection*{The \sbolheading{roles} property} \label{tbl:componentdefinition_roles} \end{table} -\Rtodo{Taken from what ontology?} - \subsubsection*{The \sbolheading{components} property} \label{sec:components} @@ -345,10 +357,11 @@ \subsubsection{ComponentInstance} \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/component_instance} -\caption[]{ComponentInstance} +\caption[]{The \sbol{ComponentInstance} class} \label{uml:component} \end{center} \end{figure} +\Ctodo{Make sure all captions are sane and similar -JSB} When a \sbol{ComponentDefinition} is used as an element of a larger design, each separate use is represented by a \sbol{ComponentInstance} object. The \sbol{ComponentInstance} class is abstract, so every usage must be as one of its two subclasses: @@ -386,6 +399,11 @@ \subsubsection{ComponentInstance} If the access is private, the \sbol{ComponentInstance} MUST NOT be linked by any \sbol{MapsTo} object. \end{itemize} +\paragraph{Serialization} + +No serialization is defined for \sbol{ComponentInstance}, since this class is +only used indirectly through its child classes. + \subsubsection{Component} \label{sec:Component} @@ -393,6 +411,31 @@ \subsubsection{Component} All \sbol{Component} objects directly referenced within a \sbol{ComponentDefinition}'s \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} parts MUST be associated with that \sbol{ComponentDefinition} by means of its \sbol{components} property. +\paragraph{Serialization} + +The serialization of a \sbol{ComponentInstance} object has the following form: + +\lstsetsbol +\begin{lstlisting} + + ... + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{elements}] + [\emph{zero or more}] [\emph{elements}] + +\end{lstlisting} + +The example below shows the serialization of a \sbol{Component} +representing an instance of promoter: + +\lstsetsbol +\begin{lstlisting} + + + + +\end{lstlisting} + \subsubsection{SequenceAnnotation} \label{sec:SequenceAnnotation} @@ -416,6 +459,8 @@ \subsubsection{SequenceAnnotation} \Ctodo{Separate serialization better - give paragraph/subsubsec headers} +\paragraph{Serialization} + The serialization of SequenceAnnotation objects MUST be carried out according to the template below. In this template, A\_LOCATION\_SUBCLASS represents one of the Location subclasses. \lstsetsbol \begin{lstlisting} @@ -493,6 +538,8 @@ \subsubsection{Location} \label{tbl:orientation_types} \end{table} +\subparagraph{Serialization} + The serialization of Range objects has the following form: \lstsetsbol \begin{lstlisting} @@ -531,6 +578,27 @@ \subsubsection{Location} \subparagraph{The \sbolheading{orientation} property} This OPTIONAL property has a URI value. For \sbol{ComponentDefinition} objects representing DNA molecules, it is RECOMMENDED to use one of the values in \ref{tbl:orientation_types} (above with \sbol{Range}). +\subparagraph{Serialization} + +The serialization of \sbol{Cut} objects has the following form: +\lstsetsbol +\begin{lstlisting} + + ... + [\emph{one}] ... [\emph{element}] + [\emph{zero or one}] [\emph{element}] + +\end{lstlisting} + +The example below shows the serialization of a \sbol{Cut} object. It specifies the location after 27, and the orientation is given as \external{inline}. +\lstsetsbol +\begin{lstlisting} + + 27 + + +\end{lstlisting} + \paragraph{GenericLocation} \label{sec:GenericLocation} @@ -540,9 +608,29 @@ \subsubsection{Location} \sbol{GenericLocation} is included as a hook for extensions, e.g., for describing locations in non-sequential structures. -\Ctodo{Need serialization examples for MultiRange, Cut, and GenericLocation} +\Rtodo{Need serialization examples for MultiRange, Cut, and GenericLocation: JSB - done for Cut and GenericLocation; ignoring MultiRange as it is likely to be cut} \Ctodo{Make sure that every property has a section label so that it hyperlinks correctly} +\subparagraph{Serialization} + +The serialization of \sbol{GenericLocation} objects has the following form: +\lstsetsbol +\begin{lstlisting} + + ... + [\emph{one}] ... [\emph{element}] + [\emph{zero or one}] [\emph{element}] + +\end{lstlisting} + +The example below shows the serialization of a \sbol{GenericLocation} object with a reverse orientation: +\lstsetsbol +\begin{lstlisting} + + + +\end{lstlisting} + \subsubsection{SequenceConstraint} \label{sec:SequenceConstraint} A \sbol{ComponentDefinition} object can link to \sbol{SequenceConstraint} objects to assert various kinds of structural restrictions between two \sbol{Component} objects that are its subcomponents. @@ -818,9 +906,10 @@ \subsubsection{FunctionalComponent} \lstsetsbol \begin{lstlisting} - [\emph{zero or one}] [\emph{element}] - [\emph{one}] [\emph{element}] - [\emph{one}] [\emph{element}] + [\emph{zero or one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{zero or more}] [\emph{elements}] \end{lstlisting} @@ -851,6 +940,7 @@ \subsubsection{Module} \Ctodo{need to clean up this whole description} \Ctodo{Is the notion of ``level of design hierarchy'' real? I think it doesn't need to be stated here, it's actually a best practice. --> it's a best practice. Nick will write this better.} +\paragraph{Serialization} The serialization of \sbol{Module}s has the following form. \lstsetsbol \begin{lstlisting} @@ -862,7 +952,17 @@ \subsubsection{Module} \end{lstlisting} -\Ctodo{add an example} +The example below specifies a TetR inverter that is being used as +a part of a toggle switch: + +\lstsetsbol +\begin{lstlisting} + + + +\end{lstlisting} + +\Rtodo{add an example; JSB: done} \subsubsection{MapsTo} \label{sec:MapsTo} @@ -980,6 +1080,8 @@ \subsubsection{Interaction} Furthermore, each Interaction object must specify its participating \sbol{FunctionalComponent} entities by linking to one or more objects of the Participation class. \LDtodo{I don't think this is really a MUST} +\paragraph{Serialization} + The serialization of \sbol{Interaction}s has the following form. \lstsetsbol \begin{lstlisting} diff --git a/overview.tex b/overview.tex index 39f0a9b9..48315b81 100644 --- a/overview.tex +++ b/overview.tex @@ -30,16 +30,15 @@ \section{Overview of SBOL} The \sbol{Sequence} is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. In designed systems such objects can consist of small chemical molecules, DNAs, RNAs or Proteins. The \sbol{Sequence} object has been designed to encapsulate any of these types of molecules. Small molecule \sbol{Sequence} objects are typically referred to via their chemical formulae. Molecules where sequence specific information is important, such as DNA, RNA and Protein \sbol{Sequence} objects, use the object to incorporate this information. The \sbol{Sequence} object encapsulates this positional information as well as the associated experimental work or other information related to a sequenced molecule. -\Ctodo{need to make it clear that it includes DNA, RNA, and protein, also smooth the text --JSB} -\Rtodo{made addiitons based upon the suggested changes - KC} +\Rtodo{need to make it clear that it includes DNA, RNA, and protein, also smooth the text --JSB made addiitons based upon the suggested changes - KC} In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a structural hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. A functional layer can be defined to describe the behaviors that arise from the structural layer. \sbol{ModuleDefinition}s contain information about molecular interactions and their participating components. They can contain \sbol{FunctionalComponent}s that are instances of \sbol{ComponentDefinition}s that can be assigned functional properties, and they can also contain other modules in a functional hierarchy. The functions and interactions of these components and other modules within the \sbol{ModuleDefinition} can be quantitatively or qualitatively described using a \sbol{Model}. The \sbol{SequenceAnnotation} object defines data associated the \sbol{Sequence} and \sbol{ComponentDefinition} objects that is needed beyond basic definitions. This can refer to local annotations of the object as well as a container for URIs to external information sources. SBOL includes different entities to describe such genetic circuits. Genetic elements such as a promoter, ribosome binding site (RBS), coding sequence (CDS), or terminator are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. \sbol{Sequence Annotation}s can be used to carry data associated with the successful running of that model on another computer, can be used to point towards sources of some or all of the circuit and the location of experimental data associated with the development of the model. -\Ctodo{Need to also explain annotation --JSB} -\Dtodo{Provided some text for review describing annotation - KC} +\Rtodo{Need to also explain annotation --JSB +Provided some text for review describing annotation - KC} From 9781a745fb27aaffd8d41a494bad7980c082862a Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Tue, 12 May 2015 02:45:50 +0000 Subject: [PATCH 096/317] Update on Overleaf. --- apdx-validation.tex | 20 +++++++++++++++----- model.tex | 2 -- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index b7cf244a..b6f5d314 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -234,7 +234,15 @@ \subsubsection*{Rules for the \class{Model} class} \printValid{A \sbol{Model} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Model})} -\Ctodo{Required source, language, and framework URIs} +\printValid{The \sbol{source} property is a required URI that MUST specify the location of the model source file.} + +\printValid{The \sbol{language} property is a required URI that specifies the language in which the model is encoded.} + +\printModeling{The \sbol{language} property should be a URI from the EMBRACE Data and Methods (EDAM) ontology.} + +\printValid{The \sbol{framework} property is a required URI that specifies the modeling framework.} + +\printModeling{The \sbol{framework} property should be a URI from the Systems Biology Ontology (SBO).} \subsubsection*{Rules for the \class{ModuleDefinition} class} \setcounter{sbolCtr}{11201} @@ -274,9 +282,13 @@ \subsubsection*{Rules for the \class{MapsTo} class} \url{http://sbols.org/v2\#merge}. (Reference: \sec{sec:MapsTo})} -\Ctodo{required local/remote URIs} +\printValid{The \sbol{local} property is a required URI that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:MapsTo})} -\Ctodo{Maps to must not reference private acesss components} +\printValid{The \sbol{FunctionalComponent} referenced by the \sbol{local} property must have \sbol{public} access type.} + +\printValid{The \sbol{remote} property is a required URI that MUST reference a \sbol{FunctionalComponent} that is specified within the \sbol{ModuleDefinition} referred to by the \sbol{definition} property of the \sbol{Module} that contains this \sbol{MapsTo} object. (Reference: \sec{sec:MapsTo})} + +\printValid{The \sbol{FunctionalComponent} referenced by the \sbol{remote} property must have \sbol{public} access type.} \subsubsection*{Rules for the \class{Interaction} class} \setcounter{sbolCtr}{11501} @@ -296,8 +308,6 @@ \subsubsection*{Rules for the \class{Participation} class} \printValid{The \sbol{participant} property is a required URI that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:Participation})} -\Dtodo{Should this be required and changed to "types"?} - \printValid{The \sbol{roles} property is an optional set of URIs. (Reference: \sec{sec:Participation})} \subsubsection*{Rules for the \class{Collection} class} diff --git a/model.tex b/model.tex index eb9814dd..aaed3521 100644 --- a/model.tex +++ b/model.tex @@ -1093,8 +1093,6 @@ \subsubsection{Interaction} \end{lstlisting} -\Dtodo{Should roles be required types instead?} - \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/participation} From c10c6745489d2e0b23f79c664ca4b64a4ebc0cdc Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Tue, 12 May 2015 03:13:24 +0000 Subject: [PATCH 097/317] Update on Overleaf. --- model.tex | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/model.tex b/model.tex index aaed3521..7541a576 100644 --- a/model.tex +++ b/model.tex @@ -1217,6 +1217,7 @@ \subsubsection{Annotating SBOL objects} These custom \sbol{Identified} entities can further be annotated with the scheme described here. These custom entities are either serialized within an SBOL entity being annotated, or referenced using an \external{URI} annotation and embedded within the the annotated entity's parent. \Dtodo{Make sure if we have a choice here!} + \begin{figure}[!ht] \begin{center} \includegraphics[scale=0.6]{uml/identified_annotations} @@ -1224,6 +1225,9 @@ \subsubsection{Annotating SBOL objects} \label{uml:identified_annotations} \end{center} \end{figure} + +\Ctodo{CJM: I think the link from AnnotationValue from Identified should be removed. Instead, there should be a new object that inherits from AnnotationValue called "ListOfAnnotations" which has properties nestedQName : QName, nestedURI : URI, and a 0..* annotations link to the Annotation class. I think we should also change the type of name in the Annotation class to QName.} + \Dtodo{I think this should actually be: add any object here of your own custom class (which MUST NOT use the SBOL namespace), not ``make chains of identified''} \Dtodo{Is this figure how the annotations are actually handled in libSBOLj?} \Dtodo{Consider putting Identified, uRI, and Literal on the bottom so that inheritance arrows point in the same direction as they do in other diagrams. Another consideration for maintaing consistency with the other diagrams is to add arrow heads to the opposite ends of the black diamond relations. - Nic} From ac5db2603d22dd95cb370d3f1560866dd442887c Mon Sep 17 00:00:00 2001 From: jakebeal Date: Mon, 11 May 2015 22:17:31 -0500 Subject: [PATCH 098/317] working on serializations --- examples_serialization.tex | 2 ++ model.tex | 59 +++++++++++++++++++++++++++++++------- 2 files changed, 51 insertions(+), 10 deletions(-) diff --git a/examples_serialization.tex b/examples_serialization.tex index 8892fa93..eb097f7b 100644 --- a/examples_serialization.tex +++ b/examples_serialization.tex @@ -174,6 +174,8 @@ \subsection{PoPS Receiver} \subsection{Toggle Switch} \Ctodo{Explain the example} +\Ctodo{Make sure that these are using the current and correct terminology} + \label{ser:toggleswitch} \lstsetsbol \begin{lstlisting} diff --git a/model.tex b/model.tex index aaed3521..3c5ad461 100644 --- a/model.tex +++ b/model.tex @@ -111,8 +111,13 @@ \subsubsection*{The \sbolheading{version} property} \subsubsection*{Serialization} -No serialization is defined for \sbol{Identified}, since this class is -only used indirectly through its child classes. +No complete serialization is defined for \sbol{Identified}, since this +class is only used indirectly through its child classes. Any such +child class, however, has the following form for serializing +properties inherited from \sbol{Identified}, where CLASS\_NAME is +replaced by the name of the class: + +\Ctodo{Need to fill in template and example} \subsection{Documented} \label{sec:Documented} @@ -143,8 +148,13 @@ \subsubsection*{The \sbolheading{description} property} \subsubsection*{Serialization} -No serialization is defined for \sbol{Documented}, since this class is -only used indirectly through its child classes. +No complete serialization is defined for \sbol{Documented}, since this +class is only used indirectly through its child classes. Any such +child class, however, has the following form for serializing +properties inherited from \sbol{Documented}, where CLASS\_NAME is +replaced by the name of the class: + +\Ctodo{Need to fill in template and example} \subsection {TopLevel} \label{sec:TopLevel} @@ -160,8 +170,9 @@ \subsubsection*{Serialization} \subsubsection*{Serialization} -No serialization is defined for \sbol{TopLevel}, since this class is -only used indirectly through its child classes. +No serialization is defined for \sbol{TopLevel}, since this class has +no properties of its own and is only used indirectly through its child +classes. \subsection{Sequence} \label{sec:Sequence} @@ -315,7 +326,7 @@ \subsubsection*{The \sbolheading{sequenceAnnotations} property} \subsubsection*{Serialization} The parents of the \sbol{ComponentDefinition} class are \sbol{TopLevel} and, transitively, \sbol{Documented} and \sbol{Identified}. As a result, inherited properties are serialised as explained for these parent classes. The sequence property of a \sbol{ComponentDefinition} object includes a URI to a \sbol{Sequence} object and this URI is serialized as an \external{rdf:resource}. The \sbol{types} property may include a collection of type URIs and is serialized as an implicit collection, ignoring the property name ``types''. The \sbol{roles} property is also similarly serialized as an implicit collection of sbol:roles properties. -\Ctodo{Add the serialization descriptions to parent classes; make sure everything has its serialization} +\Rtodo{Add the serialization descriptions to parent classes; make sure everything has its serialization. JSB: almost all done; marked the couple of places still to go. } \lstsetsbol \begin{lstlisting} @@ -850,7 +861,7 @@ \subsubsection*{The \sbolheading{interactions} property} \subsubsection*{Serialization} -The serialization of \sbol{ModuleDefinition}s has the following form: +The serialization of \sbol{ModuleDefinition} has the following form: \lstsetsbol \begin{lstlisting} @@ -870,10 +881,38 @@ \subsubsection*{Serialization} [\emph{elements}] \end{lstlisting} +\Ctodo{Is this template still correct, given ``subModule''?} -\Ctodo{Add an example, like for all the rest} +\Rtodo{Add an example, like for all the rest. JSB: done, but needs to be sanity-checked since I created it by hand.} + +The example below shows a simple \sbol{ModuleDefinition} containing two components, a \sbol{FunctionalComponent} for a DNA sequence encoding constitutive expression of GFP and another for the GFP protein expressed from this sequence, plus an interaction describing that relation. + +\lstsetsbol +\begin{lstlisting} + + + + + + + + + + + + + + + + + + ... + + + +\end{lstlisting} -\Ctodo{Should this be here or defined in ComponentInstance section?} +\Rtodo{Should this be here or defined in ComponentInstance section? JSB: here} \subsubsection{FunctionalComponent} \label{sec:FunctionalComponent} From 3756adb2df47b31630fb0ba16f8e7e63622ab40d Mon Sep 17 00:00:00 2001 From: jakebeal Date: Mon, 11 May 2015 22:23:16 -0500 Subject: [PATCH 099/317] more resolution --- model.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/model.tex b/model.tex index 491ddd6b..c3055f63 100644 --- a/model.tex +++ b/model.tex @@ -468,7 +468,7 @@ \subsubsection{SequenceAnnotation} \paragraph{The \sbolheading{component} property} \sbol{SequenceAnnotation} objects MAY use this property to link location information to a \sbol{Component} object, by specifying its URI. -\Ctodo{Separate serialization better - give paragraph/subsubsec headers} +\Rtodo{Separate serialization better - give paragraph/subsubsec headers. JSB: done.} \paragraph{Serialization} @@ -1116,8 +1116,8 @@ \subsubsection{Interaction} \Ctodo{Like the others, SBO is REQUIRED if the term exists, and you can add other stuff. We also need to explain this up front in the beginning of the section} -Furthermore, each Interaction object must specify its participating \sbol{FunctionalComponent} entities by linking to one or more objects of the Participation class. -\LDtodo{I don't think this is really a MUST} +Furthermore, an\sbol{Interaction} object can specify the set of \sbol{FunctionalComponent} entities that are interacting by linking to \sbol{Participation} objects that descibe how each one participates in the interaction. +\Rtodo{I don't think this is really a MUST. JSB: it wasn't; it is resolved.} \paragraph{Serialization} From 91890ba4beb4716feaa0958238ce4522a1808f40 Mon Sep 17 00:00:00 2001 From: Kevin Clancy Date: Tue, 12 May 2015 18:30:31 +0000 Subject: [PATCH 100/317] Update on Overleaf. --- apdx-validation.tex | 6 ++++-- overview.tex | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index b6f5d314..abdd2bc2 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -242,7 +242,7 @@ \subsubsection*{Rules for the \class{Model} class} \printValid{The \sbol{framework} property is a required URI that specifies the modeling framework.} -\printModeling{The \sbol{framework} property should be a URI from the Systems Biology Ontology (SBO).} +\printModeling{The \sbol{framework} property should be a URI from the modeling framework branch of the Systems Biology Ontology (SBO).} \subsubsection*{Rules for the \class{ModuleDefinition} class} \setcounter{sbolCtr}{11201} @@ -297,7 +297,7 @@ \subsubsection*{Rules for the \class{Interaction} class} \printValid{The \sbol{types} property is a set of URIs, and it is required to include at least entry. (Reference: \sec{sec:Interaction})} -\printModeling{A least one type in the set of \sbol{types} should be a URI from the Systems Biology Ontology (SBO). (Reference: \sec{sec:Interaction})} +\printModeling{A least one type in the set of \sbol{types} should be a URI from the occurring entity relationship branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Interaction})} \printValid{The \sbol{participations} property is an optional set of \sbol{Participation} objects. (Reference: \sec{sec:Interaction})} @@ -310,6 +310,8 @@ \subsubsection*{Rules for the \class{Participation} class} \printValid{The \sbol{roles} property is an optional set of URIs. (Reference: \sec{sec:Participation})} +\printModeling{A least one role in the set of \sbol{roles} should be a URI from the participant role branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Participation})} + \subsubsection*{Rules for the \class{Collection} class} \setcounter{sbolCtr}{11701} diff --git a/overview.tex b/overview.tex index 48315b81..9b428fa4 100644 --- a/overview.tex +++ b/overview.tex @@ -44,6 +44,7 @@ \section{Overview of SBOL} SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. + \Ctodo{This needs to be clarified. Do we really want to explain MapsTo here? -JSB} \Ctodo{it's not in the diagram. So it should be removed or dealt with in the figure and earlier in the text- KC} @@ -86,4 +87,4 @@ \section{Overview of SBOL} % SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. -% SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. \ No newline at end of file +% SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. From 856f9c58051ac519f145a45348986514da137685 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Wed, 13 May 2015 16:16:18 +0000 Subject: [PATCH 101/317] Update on Overleaf. --- apdx-validation.tex | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index abdd2bc2..870952fe 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -3,7 +3,9 @@ \newcommand{\printModeling}{\modelingRule{sbol-\arabic{sbolCtr}\addtocounter{sbolCtr}{1}}} \section{Validation Rules} -\label{validation} +\label{validation + +\Rtodo{} This section summarizes all the conditions that must (or in some cases, at least \emph{should}) be true of an SBOL Version~2 document. From a901fc4f40ffc5c4739e0e912ac83ad7bf78b914 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Wed, 13 May 2015 16:16:27 +0000 Subject: [PATCH 102/317] Update on Overleaf. --- apdx-validation.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 870952fe..21bb61c1 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -5,7 +5,7 @@ \section{Validation Rules} \label{validation -\Rtodo{} +\Rtodo{Someone please } This section summarizes all the conditions that must (or in some cases, at least \emph{should}) be true of an SBOL Version~2 document. From 6ab8d8bad50af243e5d725ab2d6348538b030213 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Wed, 13 May 2015 16:16:32 +0000 Subject: [PATCH 103/317] Update on Overleaf. --- apdx-validation.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 21bb61c1..3e8497f5 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -5,7 +5,7 @@ \section{Validation Rules} \label{validation -\Rtodo{Someone please } +\Rtodo{Someone please review.} This section summarizes all the conditions that must (or in some cases, at least \emph{should}) be true of an SBOL Version~2 document. From a124a0bed82972290742577afc9e627abd3177ec Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Wed, 13 May 2015 16:41:16 +0000 Subject: [PATCH 104/317] Update on Overleaf. --- apdx-validation.tex | 2 +- model.tex | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 3e8497f5..6a64079f 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -3,7 +3,7 @@ \newcommand{\printModeling}{\modelingRule{sbol-\arabic{sbolCtr}\addtocounter{sbolCtr}{1}}} \section{Validation Rules} -\label{validation +\label{validation} \Rtodo{Someone please review.} diff --git a/model.tex b/model.tex index c3055f63..71dcc7f4 100644 --- a/model.tex +++ b/model.tex @@ -62,6 +62,8 @@ \subsection{Data Types} \subsection{Identified} \label{sec:Identified} +\Ctodo{Merge identified and documented, add wasDerivedFrom, and change all UML that inherits from Documented to inherit from Identified.} + \Ctodo{Put a small concrete example for each toplevel, in the style of the mapsTo diagram} All SBOL-defined classes are directly or indirectly derived from the \sbol{Identified} abstract class. This inheritance means that all SBOL objects are identified using \external{URI}s that uniquely refer to these objects within an SBOL document or at locations on the World Wide Web. @@ -452,7 +454,7 @@ \subsubsection{SequenceAnnotation} \label{sec:SequenceAnnotation} The \sbol{SequenceAnnotation} class describes a precisely known location of interest on the \sbol{Sequence} object linked by its parent \sbol{ComponentDefinition} object. It can also optionally associate this location with a \sbol{Component} object. \sbol{SequenceAnnotation} objects specify their location using a \sbol{Location} object, as described below. -\Dtodo{Can we change location to locations (1..*) and eliminate MultiRange class?} +\Ctodo{We will change location to locations (1..*) and eliminate MultiRange class.} \begin{figure}[ht] \begin{center} @@ -649,8 +651,6 @@ \subsubsection{SequenceConstraint} A \sbol{SequenceConstraint} object requires \sbol{restriction}, \sbol{subject} and \sbol{object} properties to specify such constraints. -\Dtodo{Should SequenceConstraint be Documented?} - \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/sequence_constraint} From 9034f9dc2a29ae40440c35065009f2d6776d6c33 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Wed, 13 May 2015 16:42:19 +0000 Subject: [PATCH 105/317] Update on Overleaf. --- model.tex | 2 -- 1 file changed, 2 deletions(-) diff --git a/model.tex b/model.tex index 71dcc7f4..31837399 100644 --- a/model.tex +++ b/model.tex @@ -1072,8 +1072,6 @@ \subsubsection{MapsTo} \Ctodo{Need to expand this explanation a bit more to drive home the points -JB} -\Dtodo{Add a table for refinement values and represent the value when serialized using the rdf:resource property} - \paragraph{Serialization} The serialization of \sbol{MapsTo} has the following form. \lstsetsbol From 64311f2c3cd57a2660cabad297e0df19bc170ab0 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Wed, 13 May 2015 17:29:40 +0000 Subject: [PATCH 106/317] Update on Overleaf. --- model.tex | 61 +++++++++++++++++++----------------- uml/collection.png | Bin 4257 -> 3272 bytes uml/component_instance.png | Bin 11368 -> 11091 bytes uml/generictoplevel.png | Bin 3339 -> 3560 bytes uml/identified.png | Bin 6401 -> 9351 bytes uml/interaction.png | Bin 5326 -> 5082 bytes uml/location.png | Bin 13618 -> 8285 bytes uml/sequence_annotation.png | Bin 7039 -> 6936 bytes uml/toplevel.png | Bin 7571 -> 7264 bytes 9 files changed, 33 insertions(+), 28 deletions(-) diff --git a/model.tex b/model.tex index 31837399..4f417eee 100644 --- a/model.tex +++ b/model.tex @@ -1,6 +1,9 @@ % ----------------------------------------------------------------------------- \section{SBOL Data Model} % ----------------------------------------------------------------------------- + +\Ctodo{All captions need full explanations.} + In this section, we describe the types of biological design data that can belong to an SBOL document and the relationships between these data types. The SBOL data model is specified using Unified Modeling Language (UML) 2.0 diagrams \href{http://www.omg.org/spec/UML/2.0/}{(OMG 2005)}. Subsections \ref{sec:umldiagrams}, \ref{sec:nameconventions}, \ref{sec:datatypes} review the basics of UML diagrams and explain the naming conventions and generic data types used in this specification. The remaining sections then describe the SBOL data model in detail. Complete SBOL examples and best practices when using the standard can be found in \ref{sec:examples} and \ref{sec:bestpractices}, respectively. \subsection{Understanding the UML Diagrams} @@ -111,28 +114,6 @@ \subsubsection*{The \sbolheading{version} property} This convention represents versions as sequences of numbers and qualifiers separated by the characters {\tt .} and {\tt -} and compared in lexicographical order (for example, 1 < 1.3.1 < 2.0-beta). For a full explanation, see the linked resources. -\subsubsection*{Serialization} - -No complete serialization is defined for \sbol{Identified}, since this -class is only used indirectly through its child classes. Any such -child class, however, has the following form for serializing -properties inherited from \sbol{Identified}, where CLASS\_NAME is -replaced by the name of the class: - -\Ctodo{Need to fill in template and example} - -\subsection{Documented} -\label{sec:Documented} -The \sbol{Documented} abstract class is inherited by the classes of SBOL objects that can contain human-readable properties, such as name and description. This class extends \sbol{Identified} with two additional data properties: \sbol{name}, and \sbol{description} (\ref{uml:documented}). - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/documented} -\caption[]{The \sbol{Documented} abstract class.} -\label{uml:documented} -\end{center} -\end{figure} - \subsubsection*{The \sbolheading{name} property} \label{sec:name} @@ -145,19 +126,41 @@ \subsubsection*{The \sbolheading{name} property} \subsubsection*{The \sbolheading{description} property} \label{sec:description} -The \sbol{description} property is OPTIONAL and has a data type of \external{String}. This property is intended to contain a more thorough description of a \sbol{Documented} object. +The \sbol{description} property is OPTIONAL and has a data type of \external{String}. This property is intended to contain a more thorough description of a \sbol{Documented} object. \subsubsection*{Serialization} -No complete serialization is defined for \sbol{Documented}, since this +No complete serialization is defined for \sbol{Identified}, since this class is only used indirectly through its child classes. Any such child class, however, has the following form for serializing -properties inherited from \sbol{Documented}, where CLASS\_NAME is +properties inherited from \sbol{Identified}, where CLASS\_NAME is replaced by the name of the class: \Ctodo{Need to fill in template and example} +% \subsection{Documented} +% \label{sec:Documented} +% The \sbol{Documented} abstract class is inherited by the classes of SBOL objects that can contain human-readable properties, such as name and description. This class extends \sbol{Identified} with two additional data properties: \sbol{name}, and \sbol{description} (\ref{uml:documented}). + +% \begin{figure}[ht] +% \begin{center} +% \includegraphics[scale=0.6]{uml/documented} +% \caption[]{The \sbol{Documented} abstract class.} +% \label{uml:documented} +% \end{center} +% \end{figure} + +% \subsubsection*{Serialization} + +% No complete serialization is defined for \sbol{Documented}, since this +% class is only used indirectly through its child classes. Any such +% child class, however, has the following form for serializing +% properties inherited from \sbol{Documented}, where CLASS\_NAME is +% replaced by the name of the class: + +% \Ctodo{Need to fill in template and example} + \subsection {TopLevel} \label{sec:TopLevel} \sbol{TopLevel} is an abstract class that is extended by any \sbol{Documented} class that can be found at the top level of an SBOL file. In other words, when an object that belongs to a \sbol{TopLevel} class is serialized to a file representation, it is not nested inside any other object. Instead of nesting, composite \sbol{TopLevel} objects refer to subordinate \sbol{TopLevel} objects by their \sbol{identity} or \sbol{persistentIdentity} \external{URI}s. The \sbol{TopLevel} classes defined by this specification are \sbol{Sequence}, \sbol{ComponentDefinition}, \sbol{Model}, \sbol{ModuleDefinition}, \sbol{Collection}, and \sbol{GenericTopLevel} (\ref{uml:toplevel}). @@ -1246,6 +1249,8 @@ \subsection{Extending the SBOL Representation: Annotations} \subsubsection{Annotating SBOL objects} +\Ctodo{CJM: will edit this to match the library} + \LDtodo{URI: plain or courier?} Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. @@ -1265,9 +1270,9 @@ \subsubsection{Annotating SBOL objects} \Ctodo{CJM: I think the link from AnnotationValue from Identified should be removed. Instead, there should be a new object that inherits from AnnotationValue called "ListOfAnnotations" which has properties nestedQName : QName, nestedURI : URI, and a 0..* annotations link to the Annotation class. I think we should also change the type of name in the Annotation class to QName.} -\Dtodo{I think this should actually be: add any object here of your own custom class (which MUST NOT use the SBOL namespace), not ``make chains of identified''} -\Dtodo{Is this figure how the annotations are actually handled in libSBOLj?} -\Dtodo{Consider putting Identified, uRI, and Literal on the bottom so that inheritance arrows point in the same direction as they do in other diagrams. Another consideration for maintaing consistency with the other diagrams is to add arrow heads to the opposite ends of the black diamond relations. - Nic} +\Ctodo{I think this should actually be: add any object here of your own custom class (which MUST NOT use the SBOL namespace), not ``make chains of identified''} +\Ctodo{Is this figure how the annotations are actually handled in libSBOLj?} +\Ctodo{Consider putting Identified, uRI, and Literal on the bottom so that inheritance arrows point in the same direction as they do in other diagrams. Another consideration for maintaing consistency with the other diagrams is to add arrow heads to the opposite ends of the black diamond relations. - Nic} Each annotation is serialised as an RDF subject-property-object triplet in which the subject is the SBOL object being annotated, the property is the annotation name, and the object is the annotation value. Simple values URIs are serialised as RDF literals, and URI values are represented with the \external{\path{http://www.w3.org/1999/02/22-rdf-syntax-ns#resource}} RDF property. If the annotation value is another complex object then the object is embedded as an RDF resource, which can further be annotated similarly. \Dtodo{If we allow URI reference of a custom object stored, then update this paragraph} diff --git a/uml/collection.png b/uml/collection.png index fbb81ff56e5fd423da1a0ff407a514568a032ba5..97be9ec022339f082fda326e7f2edfad44fed0ee 100644 GIT binary patch literal 3272 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 H&L{r^h%so< literal 4257 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 diff --git a/uml/component_instance.png b/uml/component_instance.png index 913f7944cd2972811bb445fad8750c7dde85908c..88665dc41f64eb6b01b6194160aa90e0d89a764a 100644 GIT binary patch literal 11091 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 E0e}6U8~^|S literal 11368 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 diff --git a/uml/generictoplevel.png b/uml/generictoplevel.png index 55f715fa4291382d0bbba57e89cd60f77d2d4a66..098ac9865ce9539b509915a5cd430f63e30dfe92 100644 GIT binary patch literal 3560 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 W>tD_Arw9Jppn$3BsGyY|A^!`!ZiG7k diff --git a/uml/interaction.png b/uml/interaction.png index c8a66651ecde68be6707e2cd1f68c1620e1a2ece..cc8cbebf02a2fb6bbe9718bc90046be9767cae4c 100644 GIT binary patch literal 5082 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 literal 5326 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 b{iVvyxg@}8c}W+jQ-U<_=)%ix***OSqh1Y; diff --git a/uml/location.png b/uml/location.png index 323d142c1bb24a71f9b6585fbc6a0b4641561ce1..fca61090bb5bd8a2873046052da58cc50b4ec30e 100644 GIT binary patch literal 8285 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 McQur-3Z_s0A0?m+>i_@% literal 13618 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 literal 7039 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 Yr5H@r4U*d3!EhRwrk(~??e3HR0D7llzyJUM diff --git a/uml/toplevel.png b/uml/toplevel.png index eae0fb81934f1597d433edff9ae15b4daff95414..b4e3df5542bfe02a2c98a8255491a37d0c2e2e5e 100644 GIT binary patch literal 7264 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 literal 7571 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 From 5c15abca97a818721942e43f14ab7a969a7e00de Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Wed, 13 May 2015 21:52:56 +0000 Subject: [PATCH 107/317] Update on Overleaf. --- uml/identified.png | Bin 9351 -> 9068 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/uml/identified.png b/uml/identified.png index e5d9b89c08176a27482c452ae2761560bb2d4d76..01384cae75891e86ad8d9a85f15ab78e801f0ae5 100644 GIT binary patch literal 9068 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­7|25i+Oc+g!hh}awkTSkxPj~`4u-rl9xb(3%kWrJ=D=bfn+A>f_jkd!G|^P z-*cxz_(tArG~hC7>d;azoa7Usyzf@G*Wfk9aGku6K z|Ne-S8y_|OtRZWA^3?#720QoMC`$M-j433zuAZ6ZY#KN+V1;Ko8Pl6HaT^Fx!ErR8 zFyB2$6ZmAtfxGttVu52L>N^K01;rsc`^nQ6-jJCt#5kbOd9Wd@H+X#T=HH{yY^CTr zw?1IU{x?~kLgHkEDJwbt{{1`PkexE<0OZc>A)TjNSuxx$ZeplDSQPxhjqU`!ke(V3 z&|j$B&`!)qMWE04cv*1>%h0%jr`us%TpTH*@bdDqX;|u*3GVJ?LBSsXo&^8R=`isc zJ^5!4upK;9y|0GL0%%4l$jChKTJSvBCfvwl{5HI(UR**sVVc zJG+m|k_vyh?hhL9`VO|((6NxtJFojhX+sDOB2NFZf@Hg|D;l&=L;d~155CGj`m;be zdEd=vxYUc19u}7TcJHjW+>~?9ZP+lxzwTD@W8*TC^bpck*A}g%Yj13s8lD z=&XupB1U@deDgb$giO!$u+`U%w;E4`*NrQ%V=Y!zN{Wl~N~}$v@ihTT^^RJSbQ^7& zOBc>TW1RJ2USbOApK}rF)$z{3$APSof_%KZRNO6vJsFCjA(int05wAPCiXs#%!MRCB}1Ix9MDx-1gqzCWIFL&x@_%2$;`pUtc+* zBoeHP{VAZL&!BLk)}zPwW8Jit+}s1LA>QKnwXeiV`0J12YzmM znS#o@Ax$5x_VxAa*C!|b*`@jUfp65#x-5Q$=$*|4N*J1b{ZjZ0S}&EJOANZ_E8dQo(6UrGhRziBMURau)MA3X zX@EhM9vrJ*P_HT~vQxMk930%;fB7t!Wy7`&M#n{mM>3w5R7!jTZ2j8WnuxG)Tx={4 z3ysEk(jWFgGm=fadATv6BB)XeG3af zA;ntg>_R61zl)a<2TW)cAP5Qg^di z(kRfZB_$!z_b@kS=AF*^Wrtyt;Xu=i@u8RW9|@Z3qTQ;G`{&xyeRLr}A%K`uJUtTs zg`eJH0&HkO0cQKh9WdAg8EEIr*+wvRoJG04M`_9ZOwb^3G8W`X!dxPGo{)ej{rpl; zM5N^UYcf-JZag9)d%qK`l zeESea;&R~@mtn=i)Y8F0nIM);{)z1>Gb=#?;0EUHFqkLGkfnJK*dFGcL?%qs(UT z{<51wCkLT{Jd<>i3>LO&G&|uDtQ3dDZzV?WzlWq4%Rqra%YxRm z>)+_Ztt) zi+MIAQPo(Vo1ZQ{HmmLb@_Gi#f@NCfV8h7kG;7HJ|63zx_ci`rNjXb7=l4WZ4fsBt a!nGaa{E-a&o8T4=L_<|q1*d#3@V@|}S}^(m literal 9351 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 Date: Wed, 13 May 2015 16:56:51 -0500 Subject: [PATCH 108/317] resolved two outstanding validations based on elimination of multirange --- apdx-validation.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 6a64079f..139ea4c9 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -185,16 +185,16 @@ \subsubsection*{Rules for the \class{SequenceAnnotation} class} \printValid{A \sbol{SequenceAnnotation} object inherits all properties of a \sbol{Documented} object. (Reference: \sec{sec:SequenceAnnotation})} -\Ctodo{Rule below needs to change if becomes a set of locations} +\Rtodo{Rule below needs to change if becomes a set of locations} -\printValid{The \sbol{location} is a required property for all \sbol{SequenceAnnotation} objects and is a \sbol{Location} class object. (Reference: \sec{sec:SequenceAnnotation})} +\printValid{The \sbol{location} is a required property for all \sbol{SequenceAnnotation} objects and is a set of \sbol{Location} objects. (Reference: \sec{sec:SequenceAnnotation})} \printValid{The \sbol{component} property is an optional URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceAnnotation})} \subsubsection*{Rules for the \class{Location} class} \setcounter{sbolCtr}{10901} -\Ctodo{Written assuming change in Location class to remove MultiRange} +\Rtodo{Written assuming change in Location class to remove MultiRange} \printValid{A \sbol{Location} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Location})} From 0383428bc7e999ef39cc0394d7f73977fd06ff1e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 14 May 2015 04:18:33 +0000 Subject: [PATCH 109/317] Update on Overleaf. --- apdx-validation.tex | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 139ea4c9..c59fa169 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -92,19 +92,14 @@ \subsubsection*{Rules for the \class{Identified} class} \printModeling{The \sbol{displayId} of a compliant object is required. (Reference: \sec{sec:compliant})} -\subsubsection*{Rules for the \class{Documented} class} -\setcounter{sbolCtr}{10301} +\printValid{The \sbol{name} is an optional property for all \sbol{Identified} objects and, if provided, has a data type of String. (Reference: \sec{sec:Identified})} -\printValid{A \sbol{Documented} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Documented})} - -\printValid{The \sbol{name} is an optional property for all \sbol{Documented} objects and, if provided, has a data type of String. (Reference: \sec{sec:Documented})} - -\printValid{The \sbol{description} is an optional property for all \sbol{Documented} objects and, if provided, has a data type of String. (Reference: \sec{sec:Documented})} +\printValid{The \sbol{description} is an optional property for all \sbol{Identified} objects and, if provided, has a data type of String. (Reference: \sec{sec:Identified})} \subsubsection*{Rules for the \class{TopLevel} class} \setcounter{sbolCtr}{10401} -\printValid{A \sbol{TopLevel} object inherits all properties of a \sbol{Documented} object. (Reference: \sec{sec:TopLevel})} +\printValid{A \sbol{TopLevel} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:TopLevel})} \subsubsection*{Rules for the \class{Sequence} class} \setcounter{sbolCtr}{10501} @@ -160,7 +155,7 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \subsubsection*{Rules for the \class{ComponentInstance} class} \setcounter{sbolCtr}{10701} -\printValid{A \sbol{ComponentInstance} object inherits all properties of a \sbol{Documented} object. (Reference: \sec{sec:ComponentInstance})} +\printValid{A \sbol{ComponentInstance} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:ComponentInstance})} \printValid{The \sbol{access} property is a required URI which must be one of the following: \url{http://sbols.org/v2\#public} or \url{http://sbols.org/v2\#private}. @@ -183,19 +178,15 @@ \subsubsection*{Rules for the \class{ComponentInstance} class} \subsubsection*{Rules for the \class{SequenceAnnotation} class} \setcounter{sbolCtr}{10801} -\printValid{A \sbol{SequenceAnnotation} object inherits all properties of a \sbol{Documented} object. (Reference: \sec{sec:SequenceAnnotation})} - -\Rtodo{Rule below needs to change if becomes a set of locations} +\printValid{A \sbol{SequenceAnnotation} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:SequenceAnnotation})} -\printValid{The \sbol{location} is a required property for all \sbol{SequenceAnnotation} objects and is a set of \sbol{Location} objects. (Reference: \sec{sec:SequenceAnnotation})} +\printValid{The \sbol{locations} property is a set of \sbol{Location} objects, and it must include at least one \sbol{Location}. (Reference: \sec{sec:SequenceAnnotation})} \printValid{The \sbol{component} property is an optional URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceAnnotation})} \subsubsection*{Rules for the \class{Location} class} \setcounter{sbolCtr}{10901} -\Rtodo{Written assuming change in Location class to remove MultiRange} - \printValid{A \sbol{Location} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Location})} \printValid{The \sbol{orientation} property is an optional URI which, if specified, must be one of the following: \url{http://sbols.org/v2\#inline}, @@ -266,7 +257,7 @@ \subsubsection*{Rules for the \class{ModuleDefinition} class} \subsubsection*{Rules for the \class{Module} class} \setcounter{sbolCtr}{11301} -\printValid{A \sbol{Module} object inherits all properties of a \sbol{Documented} object. (Reference: \sec{sec:Module})} +\printValid{A \sbol{Module} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:Module})} \printValid{The \sbol{definition} property is a required URI reference to a \sbol{ModuleDefinition} object. (Reference: \sec{sec:Module})} @@ -295,7 +286,7 @@ \subsubsection*{Rules for the \class{MapsTo} class} \subsubsection*{Rules for the \class{Interaction} class} \setcounter{sbolCtr}{11501} -\printValid{A \sbol{Interaction} object inherits all properties of a \sbol{Documented} object. (Reference: \sec{sec:Interaction})} +\printValid{A \sbol{Interaction} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:Interaction})} \printValid{The \sbol{types} property is a set of URIs, and it is required to include at least entry. (Reference: \sec{sec:Interaction})} @@ -333,5 +324,4 @@ \subsubsection*{Rules for the \class{GenericTopLevel} class} \printValid{A \sbol{GenericTopLevel} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:GenericTopLevel})} -\printValid{The \sbol{rdfType} property is required, and it has data type QName. (Reference: \sec{sec:GenericTopLevel})} - +\printValid{The \sbol{rdfType} property is required, and it has data type QName. (Reference: \sec{sec:GenericTopLevel})} \ No newline at end of file From 79ff81281c720b925076d819537af317a617f68a Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Thu, 14 May 2015 15:34:41 +0000 Subject: [PATCH 110/317] Update on Overleaf. --- apdx-validation.tex | 50 ++++++++++++++++++++++++++------------------- model.tex | 48 +++++++++++++------------------------------ overview.tex | 2 ++ 3 files changed, 45 insertions(+), 55 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index c59fa169..3437f682 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -5,7 +5,7 @@ \section{Validation Rules} \label{validation} -\Rtodo{Someone please review.} +\Rtodo{All please review.} This section summarizes all the conditions that must (or in some cases, at least \emph{should}) be true of an SBOL Version~2 document. @@ -97,12 +97,12 @@ \subsubsection*{Rules for the \class{Identified} class} \printValid{The \sbol{description} is an optional property for all \sbol{Identified} objects and, if provided, has a data type of String. (Reference: \sec{sec:Identified})} \subsubsection*{Rules for the \class{TopLevel} class} -\setcounter{sbolCtr}{10401} +\setcounter{sbolCtr}{10301} \printValid{A \sbol{TopLevel} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:TopLevel})} \subsubsection*{Rules for the \class{Sequence} class} -\setcounter{sbolCtr}{10501} +\setcounter{sbolCtr}{10401} \printValid{A \sbol{Sequence} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Sequence})} @@ -119,7 +119,7 @@ \subsubsection*{Rules for the \class{Sequence} class} \printModeling{A small molecule \sbol{Sequence} should use the SMILES encoding:\\ \url{http://www.opensmiles.org/opensmiles.html}. (Reference: \sec{sec:Sequence})} \subsubsection*{Rules for the \class{ComponentDefinition} class} -\setcounter{sbolCtr}{10601} +\setcounter{sbolCtr}{10501} \printValid{A \sbol{ComponentDefinition} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:ComponentDefinition})} @@ -133,9 +133,9 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{The \sbol{sequenceAnnotations} property is an optional set of \sbol{SequenceAnnotation} objects. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{sequence} property is an optional URI reference to a \sbol{Sequence} object. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{sequences} property is an optional set of URI references to \sbol{Sequence} objects. (Reference: \sec{sec:ComponentDefinition})} -\printModeling{The \sbol{sequence} property URI, if specified, should reference a \sbol{Sequence} object. (Reference: \sec{sec:ComponentDefinition})} +\printModeling{Each URI in the set of \sbol{sequences} should reference a \sbol{Sequence} object. (Reference: \sec{sec:Sequence})} \printValid{A DNA \sbol{ComponentDefinition} must include the URI\\ \url{http://www.biopax.org/release/biopax-level3.owl\#DnaRegion} @@ -153,7 +153,7 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printModeling{A least one type in the set of \sbol{types} should be a URI from the BioPAX or ChEBI ontologies. (Reference: \sec{sec:ComponentDefinition})} \subsubsection*{Rules for the \class{ComponentInstance} class} -\setcounter{sbolCtr}{10701} +\setcounter{sbolCtr}{10601} \printValid{A \sbol{ComponentInstance} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:ComponentInstance})} @@ -176,7 +176,7 @@ \subsubsection*{Rules for the \class{ComponentInstance} class} (Reference: \sec{sec:FunctionalComponent})} \subsubsection*{Rules for the \class{SequenceAnnotation} class} -\setcounter{sbolCtr}{10801} +\setcounter{sbolCtr}{10701} \printValid{A \sbol{SequenceAnnotation} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:SequenceAnnotation})} @@ -185,7 +185,7 @@ \subsubsection*{Rules for the \class{SequenceAnnotation} class} \printValid{The \sbol{component} property is an optional URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceAnnotation})} \subsubsection*{Rules for the \class{Location} class} -\setcounter{sbolCtr}{10901} +\setcounter{sbolCtr}{10801} \printValid{A \sbol{Location} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Location})} @@ -208,7 +208,7 @@ \subsubsection*{Rules for the \class{Location} class} % \Ctodo{MultiRange must have 2 ranges} \subsubsection*{Rules for the \class{SequenceConstraint} class} -\setcounter{sbolCtr}{11001} +\setcounter{sbolCtr}{10901} \printValid{A \sbol{SequenceConstraint} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:SequenceConstraint})} @@ -223,7 +223,7 @@ \subsubsection*{Rules for the \class{SequenceConstraint} class} \printValid{The \sbol{object} property is a required URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceConstraint})} \subsubsection*{Rules for the \class{Model} class} -\setcounter{sbolCtr}{11101} +\setcounter{sbolCtr}{11001} \printValid{A \sbol{Model} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Model})} @@ -238,7 +238,7 @@ \subsubsection*{Rules for the \class{Model} class} \printModeling{The \sbol{framework} property should be a URI from the modeling framework branch of the Systems Biology Ontology (SBO).} \subsubsection*{Rules for the \class{ModuleDefinition} class} -\setcounter{sbolCtr}{11201} +\setcounter{sbolCtr}{11101} \printValid{A \sbol{ModuleDefinition} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:ModuleDefinition})} @@ -255,7 +255,7 @@ \subsubsection*{Rules for the \class{ModuleDefinition} class} \printModeling{Each URI in the set of \sbol{models} should reference a \sbol{Model} object. (Reference: \sec{sec:ModuleDefinition})} \subsubsection*{Rules for the \class{Module} class} -\setcounter{sbolCtr}{11301} +\setcounter{sbolCtr}{11201} \printValid{A \sbol{Module} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:Module})} @@ -264,7 +264,7 @@ \subsubsection*{Rules for the \class{Module} class} \printValid{The \sbol{mapsTos} property is an optional set of \sbol{MapsTo} objects. (Reference: \sec{sec:Module})} \subsubsection*{Rules for the \class{MapsTo} class} -\setcounter{sbolCtr}{11401} +\setcounter{sbolCtr}{11301} \printValid{A \sbol{MapsTo} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:MapsTo})} @@ -284,7 +284,7 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{The \sbol{FunctionalComponent} referenced by the \sbol{remote} property must have \sbol{public} access type.} \subsubsection*{Rules for the \class{Interaction} class} -\setcounter{sbolCtr}{11501} +\setcounter{sbolCtr}{11401} \printValid{A \sbol{Interaction} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:Interaction})} @@ -295,7 +295,7 @@ \subsubsection*{Rules for the \class{Interaction} class} \printValid{The \sbol{participations} property is an optional set of \sbol{Participation} objects. (Reference: \sec{sec:Interaction})} \subsubsection*{Rules for the \class{Participation} class} -\setcounter{sbolCtr}{11601} +\setcounter{sbolCtr}{11501} \printValid{A \sbol{Participation} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Participation})} @@ -306,7 +306,7 @@ \subsubsection*{Rules for the \class{Participation} class} \printModeling{A least one role in the set of \sbol{roles} should be a URI from the participant role branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Participation})} \subsubsection*{Rules for the \class{Collection} class} -\setcounter{sbolCtr}{11701} +\setcounter{sbolCtr}{11601} \printValid{A \sbol{Collection} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} @@ -315,13 +315,21 @@ \subsubsection*{Rules for the \class{Collection} class} \printModeling{Each URI in the set of \sbol{members} should reference a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} \subsubsection*{Rules for the \class{Annotation} class} -\setcounter{sbolCtr}{11801} +\setcounter{sbolCtr}{11701} + +\printValid{The \sbol{name} property is required, and it has data type \external{QName}. (Reference: \sec{sec:Annotations})} + +\printValid{The \sbol{value} property is required, and it has data type \sbol{AnnotationValue}. (Reference: \sec{sec:Annotations})} -\Ctodo{Not sure what the rules are for this one} +\printValid{The \sbol{AnnotationValue} class can be of data type \external{String}, \external{URI} or \external{ListOfAnnotations}. (Reference: \sec{sec:Annotations})} + +\printValid{The \sbol{nestedURI} property is required for a \sbol{ListOfAnnotations} object, and it has data type \external{URI}. (Reference: \sec{sec:Annotations})} + +\printValid{The \sbol{annotations} property is an optional set for a \sbol{ListOfAnnotations} object, and each member is of data type \external{Annotation}. (Reference: \sec{sec:Annotations})} \subsubsection*{Rules for the \class{GenericTopLevel} class} -\setcounter{sbolCtr}{11701} +\setcounter{sbolCtr}{11801} \printValid{A \sbol{GenericTopLevel} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:GenericTopLevel})} -\printValid{The \sbol{rdfType} property is required, and it has data type QName. (Reference: \sec{sec:GenericTopLevel})} \ No newline at end of file +\printValid{The \sbol{rdfType} property is required, and it has data type \external{QName}. (Reference: \sec{sec:GenericTopLevel})} \ No newline at end of file diff --git a/model.tex b/model.tex index 4f417eee..82a7fc8a 100644 --- a/model.tex +++ b/model.tex @@ -40,7 +40,7 @@ \subsection{Naming and Font Conventions} SBOL classes are named using upper "camel case," meaning that each word is capitalized and all words are run together without spaces e.g. \sbol{Identified}, \sbol{SequenceAnnotation}. Properties, on the other hand, are named using lower camel case, meaning that they begin lower case (e.g., \sbol{identity}) but if they consist of multiple words, all words after the first begin with an upper case letter (e.g., \sbol{persistentIdentity}). -Within the SBOL data model, each property is given a singular or plural name in accordance with its data cardinalities. The forms of these names follow the usual rules of grammar. For example, \sbol{sequenceAnnotation} is the singular form of \sbol{sequenceAnnotation}s. +Within the SBOL data model, each property is given a singular or plural name in accordance with its data cardinalities. The forms of these names follow the usual rules of grammar. For example, \sbol{SequenceAnnotation} is the singular form of \sbol{SequenceAnnotation}s. When SBOL objects are serialized to be exchanged (using \emph{Resource Description Framework} (RDF) as described in \ref{sec:serialization}), however, SBOL properties are always given singular names. This is because the SBOL data model does not contain classes that correspond directly to the RDF elements that group other elements into ordered or unordered sets. Consequently, if an SBOL property has multiple values, then it is serialized as multiple property entries, each with a singular name and a single value. For example, if an SBOL property has five values, then its serialization contains five RDF triples, each with a singular predicate name and one of the five values as its object. @@ -71,7 +71,7 @@ \subsection{Identified} All SBOL-defined classes are directly or indirectly derived from the \sbol{Identified} abstract class. This inheritance means that all SBOL objects are identified using \external{URI}s that uniquely refer to these objects within an SBOL document or at locations on the World Wide Web. -As shown in \ref{uml:identified}, the \sbol{Identified} class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, \sbol{version}, and \sbol{annotations}. The latter property is described separately in \ref{sec:annotations}. +As shown in \ref{uml:identified}, the \sbol{Identified} class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, \sbol{version}, and \sbol{annotations}. The latter property is described separately in \ref{sec:Annotations}. \begin{figure}[ht] \begin{center} @@ -246,7 +246,8 @@ \subsection{ComponentDefinition} As shown in \ref{uml:component_definition}, the \sbol{ComponentDefinition} class describes a structural design entity using the following properties: \sbol{types}, \sbol{roles}, and \sbol{sequence}. In addition, this class has properties for describing and organizing the substructure of said design entity, including \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations}. -% Figure has some classes named incorrectly +\Ctodo{Change sequence to sequences and make 0..*} + \begin{figure}[ht] \begin{center} \includegraphics[width=0.95\textwidth]{uml/component_definition} @@ -1227,38 +1228,26 @@ \subsubsection*{Serialization} \end{lstlisting} \label{ser:Collection} - - - \subsection{Extending the SBOL Representation: Annotations} -\label{sec:annotations} +\label{sec:Annotations} -SBOL does not attempt to represent all information about a biological system, since many things do not yet have a clear ``right way'' to be represented, such as design intent, biological context, or performance data. -Instead, SBOL allows the embedding of application specific data that are not captured by the SBOL standard. -Such data are optional, but can be computationally generated and exchanged via SBOL documents without getting lost. +\Rtodo{Matthew/Goksel/Jake: please review.} + +SBOL does not attempt to represent all information about a biological system, since many things do not yet have a clear ``right way'' to be represented, such as design intent, biological context, or performance data. Instead, SBOL allows the embedding of application specific data that are not captured by the SBOL standard. Such data are optional, but can be computationally generated and exchanged via SBOL documents without getting lost. To do this, SBOL provides an ``annotation'' mechanism for attaching arbitrary information to SBOL objects, which allows SBOL models to be connected with any other models in an extensible manner. -In particular, three models are supported for connecting the SBOL model with other, possibly application-specific models: -\begin{itemize} +In particular, three methods are supported for connecting the SBOL data model with other, possibly application-specific data: +\begin{enumerate} \item Information that is ``part'' of an SBOL object (i.e., a ``filled diamond'' relationship) is annotated simply by adding non-conflicting properties and custom identity entries to an SBOL object. An example might be source information about the registry from which a \sbol{ComponentDefinition} was imported. \item Information that is an independent object is annotated by wrapping it inside of a \sbol{GenericTopLevel} object. An example might be a data sheet describing the performance of a \sbol{ModuleDefinition} in some particular context. -\item Conversely, rather than embedding external objects in SBOL, SBOL objects can also be linked from or embedded inside of other data models. The only requirement is that some URI resolution mechanism must be available that allows the links between SBOL objects thus separated from one another to be followed when needed. -\end{itemize} - -\Ctodo{Make sure we explain about annotations up in the motivation and overview, since it's really, really important.} +\item Conversely, rather than embedding external objects in SBOL, SBOL objects can also be linked to external data. The only requirement is that some URI resolution mechanism must be available that allows the links from SBOL objects to be followed when needed. +\end{enumerate} \subsubsection{Annotating SBOL objects} -\Ctodo{CJM: will edit this to match the library} - -\LDtodo{URI: plain or courier?} - -Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. -Property names are specified by qualified names as \external{URI}s, each formed of a namespace and a local name. -Values can be \external{URI}s or \external{Literal} data (for example, \external{String}, \external{Integer}, \external{Double}, \external{Boolean}) or custom \sbol{Identified} entities initialized with application specific types. -These custom \sbol{Identified} entities can further be annotated with the scheme described here. These custom entities are either serialized within an SBOL entity being annotated, or referenced using an \external{URI} annotation and embedded within the the annotated entity's parent. -\Dtodo{Make sure if we have a choice here!} +Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. The \sbol{name} property is specified by a qualified name (\external{QName}), which is composed of a namespace, a prefix, and a local name. The \sbol{value} property can be of type \external{String}, \external{URI}, or \external{ListOfAnnotations}. The \external{ListOfAnnotations} is composed of a \sbol{nestedQName}, \sbol{nestedURI}, and a list of nested \sbol{annotations}. +\Ctodo{NIC: Please update UML as follows: remove link from Identifed to AnnotationValue, change type of name to QName, change label of Literal box to String, add new class ListOfAnnotations that inherits from AnnotationValue with properties nestedQName : QName, nestedURI : URI, and a 0..* annotations link to the Annotation class.} \begin{figure}[!ht] \begin{center} @@ -1268,15 +1257,6 @@ \subsubsection{Annotating SBOL objects} \end{center} \end{figure} -\Ctodo{CJM: I think the link from AnnotationValue from Identified should be removed. Instead, there should be a new object that inherits from AnnotationValue called "ListOfAnnotations" which has properties nestedQName : QName, nestedURI : URI, and a 0..* annotations link to the Annotation class. I think we should also change the type of name in the Annotation class to QName.} - -\Ctodo{I think this should actually be: add any object here of your own custom class (which MUST NOT use the SBOL namespace), not ``make chains of identified''} -\Ctodo{Is this figure how the annotations are actually handled in libSBOLj?} -\Ctodo{Consider putting Identified, uRI, and Literal on the bottom so that inheritance arrows point in the same direction as they do in other diagrams. Another consideration for maintaing consistency with the other diagrams is to add arrow heads to the opposite ends of the black diamond relations. - Nic} - -Each annotation is serialised as an RDF subject-property-object triplet in which the subject is the SBOL object being annotated, the property is the annotation name, and the object is the annotation value. Simple values URIs are serialised as RDF literals, and URI values are represented with the \external{\path{http://www.w3.org/1999/02/22-rdf-syntax-ns#resource}} RDF property. If the annotation value is another complex object then the object is embedded as an RDF resource, which can further be annotated similarly. -\Dtodo{If we allow URI reference of a custom object stored, then update this paragraph} - \paragraph{Serialization} The ComponentDefinition example for a promoter serialized below shows how annotations can be added to SBOL objects. Annotations are added using the relevant information from the Parts Registry. Annotation property names are qualified with the \external{http://www.partsregistry.org/} namespace, which is prefixed using \external{pr}. The first annotation is named as \external{pr:group}, indicating the iGEM group designing the promoter, and has a \external{String} value. The second \external{pr:experience} annotation has a \external{URI} value and is serialised as an RDF resource pointing to the information Web page on the Parts Registry for the promoter. The \external{pr:information} property represents a complex annotation which is a type of \external{pr:Information} and includes information about the regulatory details of the promoter using Parts Registry categories. diff --git a/overview.tex b/overview.tex index 9b428fa4..5f673789 100644 --- a/overview.tex +++ b/overview.tex @@ -57,6 +57,8 @@ \section{Overview of SBOL} \LDtodo{Why are URI's needed for Components? Why not just for ComponentDefinitions? Is there anything in SBOL that does not require a URI?} \Ctodo{Also briefly mention URI} +\Ctodo{Make sure we explain about annotations up in the motivation and overview, since it's really, really important.} + % The same toggle switch is now displayed using two LacI and TetR inverter submodules in figure \ref{images:toggleswitch_modular}. The LacI inverter uses LacI as input and produces the TetR output, and the TetR inverter uses TetR as input and produces the LacI output. These inputs and outputs are mapped in a parent module. % Removed as redundant: From 30e5044a6432308e971c059897d5b0c6d986ca21 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 14 May 2015 17:19:05 +0000 Subject: [PATCH 111/317] Update on Overleaf. --- uml/component_definition.png | Bin 14122 -> 14051 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/uml/component_definition.png b/uml/component_definition.png index e0b81f7466b2682a9c936bb0f294a21f5594136e..f93a709c3bb7ec50cdd40b83ee378d1574022827 100644 GIT binary patch literal 14051 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 literal 14122 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 U-OrM~KauC Date: Thu, 14 May 2015 18:04:16 +0000 Subject: [PATCH 112/317] Update on Overleaf. --- model.tex | 27 +++++++++------------------ overview.tex | 2 +- practices.tex | 12 ++++++------ 3 files changed, 16 insertions(+), 25 deletions(-) diff --git a/model.tex b/model.tex index 82a7fc8a..613b2b34 100644 --- a/model.tex +++ b/model.tex @@ -65,7 +65,7 @@ \subsection{Data Types} \subsection{Identified} \label{sec:Identified} -\Ctodo{Merge identified and documented, add wasDerivedFrom, and change all UML that inherits from Documented to inherit from Identified.} +\Rtodo{Merge identified and documented, add wasDerivedFrom, and change all UML that inherits from Documented to inherit from Identified.} \Ctodo{Put a small concrete example for each toplevel, in the style of the mapsTo diagram} @@ -117,6 +117,8 @@ \subsubsection*{The \sbolheading{version} property} \subsubsection*{The \sbolheading{name} property} \label{sec:name} +\Ctodo{Eliminate references to Documented and/or replace with Identified} + \Ctodo{Need to require use of DublinCore names and show examples of them: non-stanard mappings per Matt: Title vs. Name, descripton is dcterms:description} The \sbol{name} property is OPTIONAL and has a data type of \external{String}. This property is intended to be displayed to a human when visualizing an \sbol{Documented} object. @@ -246,7 +248,7 @@ \subsection{ComponentDefinition} As shown in \ref{uml:component_definition}, the \sbol{ComponentDefinition} class describes a structural design entity using the following properties: \sbol{types}, \sbol{roles}, and \sbol{sequence}. In addition, this class has properties for describing and organizing the substructure of said design entity, including \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations}. -\Ctodo{Change sequence to sequences and make 0..*} +\Ctodo{Make sure that text is consistent with sequences property have cardinality of 0..*} \begin{figure}[ht] \begin{center} @@ -738,7 +740,7 @@ \subsection{Model} SBOL's \sbol{Model} objects are placeholders that point to some external modeling mechanism, with some additional meta-data to enable better reasoning about the contents of that external mechanism. In this way, there is minimal duplication of standardization efforts and users of SBOL can specify the quantitative function of \sbol{ModuleDefinition} objects in a well-developed language of their choice. -Each \sbol{Model} object specifies the location of the actual content of a qualitative/quantitative model, the language the model is implemented with, the modelling framework and the model's role(s). +Each \sbol{Model} object specifies the location of the actual content of a qualitative/quantitative model, the language the model is implemented with, the modeling framework and the model's role(s). \subsubsection*{ The \sbolheading{source} property} This REQUIRED property is a URI that specifies the actual location of a qualitative or quantitative model. @@ -747,8 +749,6 @@ \subsubsection*{ The \sbolheading{language} property} This REQUIRED property is a URI that specifies the language the model is implemented with. Values for this URI are RECOMMENDED to be chosen from the EMBRACE Data and Methods (EDAM) ontology where possible. A few suggested model types and corresponding URI values are shown in \ref{tbl:model_types}. -\LDtodo{Make sure EDAM goes in ontology best-practices section} - \begin{table}[ht] \begin{edtable}{tabular}{ll} \toprule @@ -765,8 +765,8 @@ \subsubsection*{ The \sbolheading{language} property} \subsubsection*{ The \sbolheading{framework} property} -This REQUIRED property is a URI that specifies the modelling framework that a model is implemented within. -Values for this URI are RECOMMENDED to be chosen from the SBO's modelling framework terms where possible. A few suggested model frameworks and corresponding URI values are shown in \ref{tbl:model_frameworks}. +This REQUIRED property is a URI that specifies the modeling framework that a model is implemented within. +Values for this URI are RECOMMENDED to be chosen from the SBO's modeling framework terms where possible. A few suggested model frameworks and corresponding URI values are shown in \ref{tbl:model_frameworks}. \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -781,10 +781,6 @@ \subsubsection*{ The \sbolheading{framework} property} \label{tbl:model_frameworks} \end{table} -\LDtodo{Made sure SBO frameworks goes in ontology best-practices section} - -\Ctodo{We are dropping the role property entirely --- make sure it gets deleted} - \subsubsection*{Serialization} The serialization of \sbol{Model} objects has the following form: @@ -796,7 +792,6 @@ \subsubsection*{Serialization} [\emph{one}] [\emph{element}] [\emph{one}] [\emph{element}] [\emph{one}] [\emph{element}] - [\emph{one or more}] [\emph{element}] \end{lstlisting} @@ -809,19 +804,17 @@ \subsubsection*{Serialization} - \end{lstlisting} \label{ser:Model} - - -\Ctodo{This section has not been edited much compared to other sections. We need to explain classes and their properties a bit more in detail.} \subsection{ModuleDefinition} \label{sec:ModuleDefinition} +\Ctodo{This section has not been edited much compared to other sections. We need to explain classes and their properties a bit more in detail.} + \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/module_definition} @@ -1295,8 +1288,6 @@ \subsubsection{GenericTopLevel} These \sbol{GenericTopLevel} entities can thus be safely used by tools to exchange non-SBOL data embedded separately within SBOL. As with any other top level entities, \sbol{GenericTopLevel} entities may include SBOL properties such as \sbol{name}, \sbol{description}, \sbol{displayId} and so on. The type of data found in the generic entity is indicated using the standard \external{rdf:type} property. -\Ctodo{rdf:type should be rdfType, and I believe its type is QName.} - \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/generictoplevel} diff --git a/overview.tex b/overview.tex index 5f673789..ec70e36d 100644 --- a/overview.tex +++ b/overview.tex @@ -26,7 +26,7 @@ \section{Overview of SBOL} \end{center} \end{figure} \Rtodo{Put a caption on the figure -JSB Done -KC Tweaked further -JSB} -\LDtodo{Remove SBML from the figure -JSB} +\Ctodo{Remove SBML from the figure -JSB} The \sbol{Sequence} is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. In designed systems such objects can consist of small chemical molecules, DNAs, RNAs or Proteins. The \sbol{Sequence} object has been designed to encapsulate any of these types of molecules. Small molecule \sbol{Sequence} objects are typically referred to via their chemical formulae. Molecules where sequence specific information is important, such as DNA, RNA and Protein \sbol{Sequence} objects, use the object to incorporate this information. The \sbol{Sequence} object encapsulates this positional information as well as the associated experimental work or other information related to a sequenced molecule. diff --git a/practices.tex b/practices.tex index 6766fa06..7e3d244b 100644 --- a/practices.tex +++ b/practices.tex @@ -108,12 +108,12 @@ \subsection{Recommended Ontologies for External Terms} \toprule \textbf{SBOL Entity} & \textbf{Property} & \textbf{Preferred External Resource}\\ \midrule - \textbf{ComponentDefinition} & type & BioPAX \\ - & role & SO (if type is \textit{DNA} or \textit{RNA}) \\ - & role & CHEBI (if type is \textit{small molecule}) \\ - & role & UniProt (if type is \textit{protein}??) \\ - \textbf{Interaction} & type & SBO \\ - \textbf{Participation} & type & SBO \\ + \textbf{ComponentDefinition} & types & BioPAX \\ + & roles & SO (if type is \textit{DNA} or \textit{RNA}) \\ + & roles & CHEBI (if type is \textit{small molecule}) \\ + & roles & UniProt (if type is \textit{protein}??) \\ + \textbf{Interaction} & types & SBO \\ + \textbf{Participation} & roles & SBO \\ \textbf{Model} & language & EDAM \\ & framework & SBO \\ \bottomrule From 24a8571b70a2057b9cb0325d3ae2dbd6d6bc47bd Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 14 May 2015 21:08:55 +0000 Subject: [PATCH 113/317] Update on Overleaf. --- model.tex | 39 ++++++++++++++++++--------------------- sbol2.tex | 2 +- 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/model.tex b/model.tex index 613b2b34..c6a2bc46 100644 --- a/model.tex +++ b/model.tex @@ -201,8 +201,9 @@ \subsubsection*{The \sbolheading{elements} property} \subsubsection*{The \sbolheading{encoding} property} \label{sec:encoding} The \sbol{encoding} property is REQUIRED and has a data type of \external{URI}. This property is used to indicate how the \sbol{elements} property of its \sbol{Sequence} object MUST be formed and interpreted. -For example, a \sbol{Sequence} object that represents a DNA sequence would have an \external{IUPAC DNA} encoding that requires the \sbol{elements} property to contain characters that represent nucleotide bases, such as {\tt a}, {\tt t}, {\tt c}, and {\tt g}. A \sbol{Sequence} object that represents the chemical structure of glucose, however, might have a \external{simplified molecular-input line-entry system (SMILES)} encoding that requires the \sbol{elements} property to contain characters that represent atoms and bonds, such as {\tt C}, {\tt N}, {\tt O}, and {\tt =}. -\ref{tbl:sequence_encodings} provides a list of RECOMMENDED encoding \external{URI}s. +For example, a \sbol{Sequence} object that represents a DNA sequence would have an \external{IUPAC DNA} encoding that requires the \sbol{elements} property to contain characters that represent nucleotide bases, such as {\tt a}, {\tt t}, {\tt c}, and {\tt g}. A \sbol{Sequence} object that represents the chemical structure of glucose, however, might have a \external{simplified molecular-input line-entry system (SMILES)} encoding that requires the \sbol{elements} property to contain characters that represent atoms and chemical bonds, such as {\tt C}, {\tt N}, {\tt O}, and {\tt =}. + +\ref{tbl:sequence_encodings} provides a list of RECOMMENDED \external{URI}s for the \sbol{encoding} property. When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \external{URI}s in \ref{tbl:sequence_encodings}, it SHOULD use that \external{URI} for this property. %A Summary of letters for nucleic acids and aminoacids \begin{table}[ht] @@ -215,7 +216,7 @@ \subsubsection*{The \sbolheading{encoding} property} SMILES & \url{http://www.opensmiles.org/opensmiles.html} & SmallMolecule \\ \bottomrule \end{edtable} - \caption{The RECOMMENDED \external{URI}s for encoding common types of sequences, organized by corresponding \sbol{types} of \sbol{ComponentDefinition}s (see \ref{tbl:componentdefinition_types}). When a \sbol{ComponentDefinition} includes a \sbol{Sequence}, the \sbol{encoding} property of the \sbol{Sequence} SHOULD correspond to at least one of the \sbol{types} of the \sbol{ComponentDefinition}.} + \caption{The RECOMMENDED \external{URI}s for encoding the \sbol{Sequence} objects for common types of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}).} \label{tbl:sequence_encodings} \end{table} @@ -246,7 +247,7 @@ \subsection{ComponentDefinition} The \sbol{ComponentDefinition} class represents the structural entities of a biological design. The primary usage of this class is to represent structural entities with designed sequences, such as DNA, RNA, and proteins, but it can also be used to represent any other entity that is part of a design, such as small molecules, molecular complexes, and light. -As shown in \ref{uml:component_definition}, the \sbol{ComponentDefinition} class describes a structural design entity using the following properties: \sbol{types}, \sbol{roles}, and \sbol{sequence}. In addition, this class has properties for describing and organizing the substructure of said design entity, including \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations}. +As shown in \ref{uml:component_definition}, the \sbol{ComponentDefinition} class describes a structural design entity using the following properties: \sbol{types}, \sbol{roles}, and \sbol{sequences}. In addition, this class has properties for describing and organizing the substructure of said design entity, including \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations}. \Ctodo{Make sure that text is consistent with sequences property have cardinality of 0..*} @@ -263,7 +264,7 @@ \subsubsection*{The \sbolheading{types} property} The \sbol{types} property is a REQUIRED set of \external{URI}s that specifies the category of biochemical or physical entity (for example DNA, protein, or small molecule) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. -The \sbol{types} property of every \sbol{ComponentDefinition} MUST contain at least one \external{URI} that SHOULD identify a term from an appropriate ontology, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). Furthermore, if the \sbol{types} property contains multiple URIs, then they MUST identify synonymous terms. In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbol{types}. +The \sbol{types} property of every \sbol{ComponentDefinition} MUST contain at least one \external{URI} that SHOULD identify a term from an appropriate ontology, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). \ref{tbl:componentdefinition_types} provides a list of RECOMMENDED ontology terms for the \sbol{types} property and their \external{URI}s. In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} SHOULD use that term as one of its \sbol{types}. Finally, if the \sbol{types} property contains multiple \external{URIs}, then they SHOULD identify synonymous terms. \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -276,16 +277,16 @@ \subsubsection*{The \sbolheading{types} property} Small Molecule & \url{http://www.biopax.org/release/biopax-level3.owl#SmallMolecule}\\ \bottomrule \end{edtable} - \caption{BioPAX terms to specify the \sbol{types} property of a \sbol{ComponentDefinition}.} + \caption{RECOMMENDED BioPAX terms to specify the \sbol{types} property of a \sbol{ComponentDefinition}.} \label{tbl:componentdefinition_types} \end{table} \subsubsection*{The \sbolheading{roles} property} \label{sec:roles} -The \sbol{roles} property is a REQUIRED set of \external{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} object in a biological context. +The \sbol{roles} property is a OPTIONAL set of \external{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} in a biological context. -The \sbol{roles} property of every \sbol{ComponentDefinition} object MAY contain zero or more \external{URI}s that SHOULD identify terms from ontologies that are consistent with the type of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} component SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). As with the \sbol{types} property, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use that term as one of its \sbol{roles}. +The \sbol{roles} property of a \sbol{ComponentDefinition} MAY contain a collection of \external{URI}s that SHOULD identify terms from ontologies that are consistent with the \sbol{types} property of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} component SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbol{roles} property and their \external{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they are expected to apply. As with the \sbol{types} property, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} SHOULD use that term as one of its \sbol{roles}. \begin{table}[ht] \begin{edtable}{tabular}{lll} @@ -302,37 +303,33 @@ \subsubsection*{The \sbolheading{roles} property} Effector & http://identifiers.org/chebi/CHEBI:35224 & Small Molecule \\ \bottomrule \end{edtable} - \caption{Ontology terms to specify the \sbol{roles} property of a \sbol{ComponentDefinition}.} + \caption{RECOMMENDED ontology terms to specify the \sbol{roles} property of a \sbol{ComponentDefinition}.} \label{tbl:componentdefinition_roles} \end{table} \subsubsection*{The \sbolheading{components} property} \label{sec:components} -If \sbol{ComponentDefinition} class is analogous to a blueprint or parts specification sheet for a biological part. In contrast, the \sbol{Component} class represents specific occurrences of parts within a design. This allows biological designs that use a component more than once. -The \sbol{components} property specifies a collection of such parts contained within a particular \sbol{ComponentDefinition}. +The \sbol{components} property is OPTIONAL and MAY specify a collection of \sbol{Component} objects contained by its \sbol{ComponentDefinition}. +While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of parts within a design. Hence, this class allows a biological design to include multiple copies of a particular part. For example, the \sbol{ComponentDefinition} of a gene MAY contain two \sbol{Component} objects that refer to the same \external{URI} for the \sbol{ComponentDefinition} of a CDS. -\subsubsection*{The \sbolheading{sequence} property} -\label{sec:sequence} -The sequence property is OPTIONAL and includes the URI for a corresponding \sbol{Sequence} object. +\subsubsection*{The \sbolheading{sequences} property} +\label{sec:sequences} +The \sbol{sequences} property is OPTIONAL and MAY include a collection of \external{URI}s for \sbol{Sequence} objects. These objects define the primary structure of the \sbol{ComponentDefinition} with this property and SHOULD be consistent with each other. \subsubsection*{The \sbolheading{sequenceConstraints} property} \label{sec:sequenceConstraints} -This OPTIONAL property links to one or more \sbol{SequenceConstraint} objects describing structural restrictions on the placement of subcomponents with respect to the \sbol{Sequence} of a \sbol{ComponentDefinition}. - -\Rtodo{This needs to be explained. JSB: done.} +The \sbol{sequenceConstraints} property is OPTIONAL and MAY contain a collection of \sbol{SequenceConstraint} objects. These objects describe any restrictions on the relative, sequence-based positions of \sbol{Component} objects that belong to the \sbol{ComponentDefinition}. \subsubsection*{The \sbolheading{sequenceAnnotations} property} \label{sec:sequenceAnnotations} -\Rtodo{This needs to be better explained. -JSB; JSB: done.} - -This OPTIONAL property links to one or more \sbol{SequenceAnnotation} objects describing the precise locations of subcomponents with respect to the \sbol{Sequence} of a \sbol{ComponentDefinition}. +The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a collection of \sbol{SequenceAnnotation} objects. These objects describe \sbol{Location}s on the \sbol{Sequence} objects of the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} MAY position a \sbol{Component} of the \sbol{ComponentDefinition} at its specified \sbol{Location}. \subsubsection*{Serialization} -The parents of the \sbol{ComponentDefinition} class are \sbol{TopLevel} and, transitively, \sbol{Documented} and \sbol{Identified}. As a result, inherited properties are serialised as explained for these parent classes. The sequence property of a \sbol{ComponentDefinition} object includes a URI to a \sbol{Sequence} object and this URI is serialized as an \external{rdf:resource}. The \sbol{types} property may include a collection of type URIs and is serialized as an implicit collection, ignoring the property name ``types''. The \sbol{roles} property is also similarly serialized as an implicit collection of sbol:roles properties. +The parent classes of the \sbol{ComponentDefinition} class are \sbol{TopLevel} and, transitively, \sbol{Identified}. As a result, inherited properties are serialised as explained for these parent classes. The sequence property of a \sbol{ComponentDefinition} object includes a URI to a \sbol{Sequence} object and this URI is serialized as an \external{rdf:resource}. The \sbol{types} property may include a collection of type URIs and is serialized as an implicit collection, ignoring the property name ``types''. The \sbol{roles} property is also similarly serialized as an implicit collection of sbol:roles properties. \Rtodo{Add the serialization descriptions to parent classes; make sure everything has its serialization. JSB: almost all done; marked the couple of places still to go. } \lstsetsbol diff --git a/sbol2.tex b/sbol2.tex index 70bcdc77..f74eb691 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -56,7 +56,7 @@ \definecolor{gray}{rgb}{0.5,0.5,0.5} \definecolor{light-gray}{gray}{0.97} \lstdefinelanguage{sbol} - {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:MapsTo, sbol:sequence,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation,sbol:component,sbol:location, sbol:sequenceAnnotation, sbol:Range, sbol:start, sbol:end, sbol:orientation,sbol:SequenceConstraint, sbol:restriction, sbol:subject, sbol:object,sbol:Sequence, sbol:elements, sbol:encoding,sbol:Model, sbol:source, sbol:language, sbol:framework,sbol:FunctionalComponent, sbol:Module, sbol:Interaction, sbol:interaction, sbol:subModule, sbol:model,sbol:Model,sbol:definition, sbol:access, sbol:direction, sbol:mapping, sbol:refinement, sbol:local, sbol:remote, sbol:participation, sbol:Participation, sbol:participant}, + {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:MapsTo, sbol:sequences,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation,sbol:component,sbol:location, sbol:sequenceAnnotation, sbol:Range, sbol:start, sbol:end, sbol:orientation,sbol:SequenceConstraint, sbol:restriction, sbol:subject, sbol:object,sbol:Sequence, sbol:elements, sbol:encoding,sbol:Model, sbol:source, sbol:language, sbol:framework,sbol:FunctionalComponent, sbol:Module, sbol:Interaction, sbol:interaction, sbol:subModule, sbol:model,sbol:Model,sbol:definition, sbol:access, sbol:direction, sbol:mapping, sbol:refinement, sbol:local, sbol:remote, sbol:participation, sbol:Participation, sbol:participant}, basicstyle=\fontsize{7}{9}\selectfont\ttfamily, backgroundcolor=\color{light-gray}, keywordstyle=\color{blue}, From a5916ad75b727bb89f5f43c1891fa3514f75cf5f Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 14 May 2015 21:21:58 +0000 Subject: [PATCH 114/317] Update on Overleaf. --- model.tex | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/model.tex b/model.tex index c6a2bc46..048f4334 100644 --- a/model.tex +++ b/model.tex @@ -326,12 +326,14 @@ \subsubsection*{The \sbolheading{sequenceConstraints} property} \subsubsection*{The \sbolheading{sequenceAnnotations} property} \label{sec:sequenceAnnotations} -The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a collection of \sbol{SequenceAnnotation} objects. These objects describe \sbol{Location}s on the \sbol{Sequence} objects of the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} MAY position a \sbol{Component} of the \sbol{ComponentDefinition} at its specified \sbol{Location}. +The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a collection of \sbol{SequenceAnnotation} objects. These objects describe \sbol{Location}s on the \sbol{Sequence} objects of the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at its specified \sbol{Location}. \subsubsection*{Serialization} -The parent classes of the \sbol{ComponentDefinition} class are \sbol{TopLevel} and, transitively, \sbol{Identified}. As a result, inherited properties are serialised as explained for these parent classes. The sequence property of a \sbol{ComponentDefinition} object includes a URI to a \sbol{Sequence} object and this URI is serialized as an \external{rdf:resource}. The \sbol{types} property may include a collection of type URIs and is serialized as an implicit collection, ignoring the property name ``types''. The \sbol{roles} property is also similarly serialized as an implicit collection of sbol:roles properties. +% The parent classes of the \sbol{ComponentDefinition} class are \sbol{TopLevel} and, transitively, \sbol{Identified}. As a result, inherited properties are serialized as explained for these parent classes. +The sequence property of a \sbol{ComponentDefinition} includes a URI that identifies a \sbol{Sequence}. As shown in the example below, this URI is serialized as an \external{rdf:resource}. The \sbol{types} property, on the other hand, can include a collection of type URIs and is serialized as an implicit collection, ignoring the property name ``types''. The \sbol{roles} property is also similarly serialized as an implicit collection of sbol:roles properties. + +\Ctodo{The name (title) and description properties should be moved from this example to one for Identified. Identified is an abstract class that shouldn't be serialized, but perhaps we could use a non-abstract class (probably ComponentDefinition) to provide an example of displayId, version, name, description, etc. - Nic} -\Rtodo{Add the serialization descriptions to parent classes; make sure everything has its serialization. JSB: almost all done; marked the couple of places still to go. } \lstsetsbol \begin{lstlisting} From 433933d731cc053bdeb21d679835621a9ef49451 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 14 May 2015 21:58:21 +0000 Subject: [PATCH 115/317] Update on Overleaf. --- model.tex | 22 +++++++++++----------- sbol2.tex | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/model.tex b/model.tex index 048f4334..fddf8906 100644 --- a/model.tex +++ b/model.tex @@ -286,21 +286,21 @@ \subsubsection*{The \sbolheading{roles} property} The \sbol{roles} property is a OPTIONAL set of \external{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} in a biological context. -The \sbol{roles} property of a \sbol{ComponentDefinition} MAY contain a collection of \external{URI}s that SHOULD identify terms from ontologies that are consistent with the \sbol{types} property of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} component SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbol{roles} property and their \external{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they are expected to apply. As with the \sbol{types} property, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} SHOULD use that term as one of its \sbol{roles}. +The \sbol{roles} property of a \sbol{ComponentDefinition} MAY contain a collection of \external{URI}s that SHOULD identify terms from ontologies that are consistent with the \sbol{types} property of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} component SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbol{roles} property and their \external{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they MUST apply. As with the \sbol{types} property, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} SHOULD use that term as one of its \sbol{roles}. \begin{table}[ht] \begin{edtable}{tabular}{lll} \toprule \textbf{ComponentDefinition Role} & \textbf{URI for Ontology Term} & \textbf{ComponentDefinition Type} \\ \midrule - Promoter & http://identifiers.org/so/SO:0000167 & DNA \\ - Ribosome Entry Site & http://identifiers.org/so/SO:0000139 & DNA \\ - CDS & http://identifiers.org/so/SO:0000316 & DNA \\ - Terminator & http://identifiers.org/so/SO:0000141 & DNA \\ - Gene & http://identifiers.org/so/SO:0000704 & DNA \\ - mRNA & http://identifiers.org/so/SO:0000234 & RNA \\ - Transcription Factor & http://identifiers.org/go/GO:0003700 & Protein \\ - Effector & http://identifiers.org/chebi/CHEBI:35224 & Small Molecule \\ + Promoter & \url{http://identifiers.org/so/SO:0000167} & DNA \\ + Ribosome Entry Site & \url{http://identifiers.org/so/SO:0000139} & DNA \\ + CDS & \url{http://identifiers.org/so/SO:0000316} & DNA \\ + Terminator & \url{http://identifiers.org/so/SO:0000141} & DNA \\ + Gene & \url{http://identifiers.org/so/SO:0000704} & DNA \\ + mRNA & \url{http://identifiers.org/so/SO:0000234} & RNA \\ + Transcription Factor & \url{http://identifiers.org/go/GO:0003700} & Protein \\ + Effector & \url{http://identifiers.org/chebi/CHEBI:35224} & Small Molecule \\ \bottomrule \end{edtable} \caption{RECOMMENDED ontology terms to specify the \sbol{roles} property of a \sbol{ComponentDefinition}.} @@ -330,7 +330,7 @@ \subsubsection*{The \sbolheading{sequenceAnnotations} property} \subsubsection*{Serialization} % The parent classes of the \sbol{ComponentDefinition} class are \sbol{TopLevel} and, transitively, \sbol{Identified}. As a result, inherited properties are serialized as explained for these parent classes. -The sequence property of a \sbol{ComponentDefinition} includes a URI that identifies a \sbol{Sequence}. As shown in the example below, this URI is serialized as an \external{rdf:resource}. The \sbol{types} property, on the other hand, can include a collection of type URIs and is serialized as an implicit collection, ignoring the property name ``types''. The \sbol{roles} property is also similarly serialized as an implicit collection of sbol:roles properties. +The \sbol{sequences} property and \sbol{types} property of a \sbol{ComponentDefinition} include collections of \external{URI}s that identify \sbol{Sequence} objects and ontology terms, respectively. As shown in the example below, each of these URIs is serialized as an \external{rdf:resource} as part of an implicit collection of {\tt \color{blue} sequence} that ignores the property name ``types.'' The \sbol{roles} property is similarly serialized as an implicit collection of sbol:roles properties. \Ctodo{The name (title) and description properties should be moved from this example to one for Identified. Identified is an abstract class that shouldn't be serialized, but perhaps we could use a non-abstract class (probably ComponentDefinition) to provide an example of displayId, version, name, description, etc. - Nic} @@ -340,7 +340,7 @@ \subsubsection*{Serialization} ... [\emph{zero or one}] ... [\emph{element}] [\emph{zero or one}] ... [\emph{element}] - [\emph{zero or one}] [\emph{element}] + [\emph{zero or more}] [\emph{element}] [\emph{one or more}] [\emph{elements}] [\emph{one or more}] [\emph{elements}] [\emph{zero or more}] diff --git a/sbol2.tex b/sbol2.tex index f74eb691..70bcdc77 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -56,7 +56,7 @@ \definecolor{gray}{rgb}{0.5,0.5,0.5} \definecolor{light-gray}{gray}{0.97} \lstdefinelanguage{sbol} - {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:MapsTo, sbol:sequences,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation,sbol:component,sbol:location, sbol:sequenceAnnotation, sbol:Range, sbol:start, sbol:end, sbol:orientation,sbol:SequenceConstraint, sbol:restriction, sbol:subject, sbol:object,sbol:Sequence, sbol:elements, sbol:encoding,sbol:Model, sbol:source, sbol:language, sbol:framework,sbol:FunctionalComponent, sbol:Module, sbol:Interaction, sbol:interaction, sbol:subModule, sbol:model,sbol:Model,sbol:definition, sbol:access, sbol:direction, sbol:mapping, sbol:refinement, sbol:local, sbol:remote, sbol:participation, sbol:Participation, sbol:participant}, + {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:MapsTo, sbol:sequence,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation,sbol:component,sbol:location, sbol:sequenceAnnotation, sbol:Range, sbol:start, sbol:end, sbol:orientation,sbol:SequenceConstraint, sbol:restriction, sbol:subject, sbol:object,sbol:Sequence, sbol:elements, sbol:encoding,sbol:Model, sbol:source, sbol:language, sbol:framework,sbol:FunctionalComponent, sbol:Module, sbol:Interaction, sbol:interaction, sbol:subModule, sbol:model,sbol:Model,sbol:definition, sbol:access, sbol:direction, sbol:mapping, sbol:refinement, sbol:local, sbol:remote, sbol:participation, sbol:Participation, sbol:participant}, basicstyle=\fontsize{7}{9}\selectfont\ttfamily, backgroundcolor=\color{light-gray}, keywordstyle=\color{blue}, From f4c5cc460c2d6f26ededa536fe866d9042599394 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 14 May 2015 22:15:41 +0000 Subject: [PATCH 116/317] Update on Overleaf. --- model.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/model.tex b/model.tex index fddf8906..47f34139 100644 --- a/model.tex +++ b/model.tex @@ -330,7 +330,7 @@ \subsubsection*{The \sbolheading{sequenceAnnotations} property} \subsubsection*{Serialization} % The parent classes of the \sbol{ComponentDefinition} class are \sbol{TopLevel} and, transitively, \sbol{Identified}. As a result, inherited properties are serialized as explained for these parent classes. -The \sbol{sequences} property and \sbol{types} property of a \sbol{ComponentDefinition} include collections of \external{URI}s that identify \sbol{Sequence} objects and ontology terms, respectively. As shown in the example below, each of these URIs is serialized as an \external{rdf:resource} as part of an implicit collection of {\tt \color{blue} sequence} that ignores the property name ``types.'' The \sbol{roles} property is similarly serialized as an implicit collection of sbol:roles properties. +The \sbol{sequences}, \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations} properties of a \sbol{ComponentDefinition} include \external{URI}s that identify objects belonging to the appropriate SBOL classes, while the \sbol{types} and \sbol{roles} properties include URIs that identify ontology terms. As shown in the example below, each of these URIs is serialized as an \external{rdf:resource} as part of an implicit collection of SBOL properties with singular rather then plural names. \Ctodo{The name (title) and description properties should be moved from this example to one for Identified. Identified is an abstract class that shouldn't be serialized, but perhaps we could use a non-abstract class (probably ComponentDefinition) to provide an example of displayId, version, name, description, etc. - Nic} @@ -353,7 +353,7 @@ \subsubsection*{Serialization} \end{lstlisting} \Ctodo{We need to have an explanation of how to interpret these, and also have a pointer to it from each example.} -The example below shows the serialization of a simple \sbol{ComponentDefinition} object. The \external{DnaRegion} from BioPAX and \external{CHEBI:4705} from CHEBI are used to indicate the type of the biological entity as a DNA molecule. Its role is specified via the generic \external{SO:0000167} (\external{promoter}) and more specific \external{SO:0000613} (\external{bacterial\_RNApol\_promoter}) terms. +The example below shows the serialization of a simple \sbol{ComponentDefinition} for a promoter. The BioPAX term \external{DnaRegion} and the ChEBI term \external{CHEBI:4705} (\external{double-stranded DNA}) are used to indicate that the type of biological entity represented by this \sbol{ComponentDefinition} is DNA. Its role is specified using the SO terms \external{SO:0000167} (\external{promoter}) and the more specific \external{SO:0000613} (\external{bacterial\_RNApol\_promoter}). \lstsetsbol \begin{lstlisting} From 5d2bd1ed6db910a168de0d3563f5ed842f6f1bb0 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 14 May 2015 23:43:54 +0000 Subject: [PATCH 117/317] Update on Overleaf. --- model.tex | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/model.tex b/model.tex index 47f34139..813038a1 100644 --- a/model.tex +++ b/model.tex @@ -286,7 +286,7 @@ \subsubsection*{The \sbolheading{roles} property} The \sbol{roles} property is a OPTIONAL set of \external{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} in a biological context. -The \sbol{roles} property of a \sbol{ComponentDefinition} MAY contain a collection of \external{URI}s that SHOULD identify terms from ontologies that are consistent with the \sbol{types} property of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} component SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbol{roles} property and their \external{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they MUST apply. As with the \sbol{types} property, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} SHOULD use that term as one of its \sbol{roles}. +The \sbol{roles} property of a \sbol{ComponentDefinition} MAY contain a collection of \external{URI}s that SHOULD identify terms from ontologies that are consistent with the \sbol{types} property of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} component SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbol{roles} property and their \external{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply. As with the \sbol{types} property, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} SHOULD use that term as one of its \sbol{roles}. \begin{table}[ht] \begin{edtable}{tabular}{lll} @@ -381,11 +381,11 @@ \subsubsection{ComponentInstance} \end{figure} \Ctodo{Make sure all captions are sane and similar -JSB} -When a \sbol{ComponentDefinition} is used as an element of a larger design, each separate use is represented by a \sbol{ComponentInstance} object. -The \sbol{ComponentInstance} class is abstract, so every usage must be as one of its two subclasses: +When a \sbol{ComponentDefinition} is used as an element of a larger design, each separate usage is represented by a \sbol{ComponentInstance} object. +The \sbol{ComponentInstance} class is abstract, so every usage must belong to one of its two subclasses: \begin{itemize} -\item \sbol{Component} is used for specifying hierarchical structure, and can be linked to by the properties of parts of a \sbol{ComponentDefinition}. -\item \sbol{FunctionalComponent} is used for describing function in a \sbol{Module}, and can be linked to by the properties of parts of a \sbol{Module}. It is described in the \sbol{Module} section. +\item The \sbol{Component} class is used to specify the structural usage of \sbol{ComponentDefinition} inside another \sbol{ComponentDefinition} via the \sbol{components} property. +\item The \sbol{FunctionalComponent} class is used to specify the functional usage of \sbol{ComponentDefinition} inside a \sbol{ModuleDefinition} via the \sbol{functionalComponents} property. This class is described in \ref{sec:FunctionalComponent}. \end{itemize} \paragraph{The \sbolheading{componentDefinition} property} @@ -848,6 +848,7 @@ \subsubsection*{The \sbolheading{modules} property} \Ctodo{component --> functionalComponent in examples} \subsubsection*{The \sbolheading{functionalComponents} property} +\label{sec:functionalComponents} This property is optional and includes a set of \sbol{FunctionalComponent} entities. These entities are then used to describe biological interactions via \sbol{Participation} entities. \Ctodo{use better language} From 179d5875b0a9ee5296409048dd48d870caa6775d Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 14 May 2015 23:48:02 +0000 Subject: [PATCH 118/317] Update on Overleaf. --- model.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/model.tex b/model.tex index 813038a1..9a659ae0 100644 --- a/model.tex +++ b/model.tex @@ -384,8 +384,8 @@ \subsubsection{ComponentInstance} When a \sbol{ComponentDefinition} is used as an element of a larger design, each separate usage is represented by a \sbol{ComponentInstance} object. The \sbol{ComponentInstance} class is abstract, so every usage must belong to one of its two subclasses: \begin{itemize} -\item The \sbol{Component} class is used to specify the structural usage of \sbol{ComponentDefinition} inside another \sbol{ComponentDefinition} via the \sbol{components} property. -\item The \sbol{FunctionalComponent} class is used to specify the functional usage of \sbol{ComponentDefinition} inside a \sbol{ModuleDefinition} via the \sbol{functionalComponents} property. This class is described in \ref{sec:FunctionalComponent}. +\item The \sbol{Component} class is used to specify the structural usage of a \sbol{ComponentDefinition} inside another \sbol{ComponentDefinition} via the \sbol{components} property. +\item The \sbol{FunctionalComponent} class is used to specify the functional usage of a \sbol{ComponentDefinition} inside a \sbol{ModuleDefinition} via the \sbol{functionalComponents} property. This class is described in \ref{sec:FunctionalComponent}. \end{itemize} \paragraph{The \sbolheading{componentDefinition} property} From 5c9bd9b6e30cfb1a9d11c7e975674c8d4221dc63 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Thu, 14 May 2015 18:48:28 -0500 Subject: [PATCH 119/317] defer region-connecting-calculus to next version --- model.tex | 2 +- sbol2.tex | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/model.tex b/model.tex index 813038a1..a8e8d679 100644 --- a/model.tex +++ b/model.tex @@ -698,7 +698,7 @@ \subsubsection{SequenceConstraint} \label{tbl:restriction_types} \end{table} -\Ctodo{We need things like nextTo and overlapping, and think we might be able to get it from region-connection-calculus ontology} +\NVtodo{We need things like nextTo and overlapping, and think we might be able to get it from region-connection-calculus ontology} \paragraph{Serialization} diff --git a/sbol2.tex b/sbol2.tex index 70bcdc77..a4432f1f 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -92,6 +92,8 @@ \newcommand{\Ctodo}[1]{\todo[inline,color=cyan]{#1}} % Resolved but still awaiting review: \newcommand{\Rtodo}[1]{\todo[inline,color=green]{#1}} +% Deferred to the next (minor) version +\newcommand{\NVtodo}[1]{\todo[inline,color=blue]{#1}} %Command to format external terms in the document \newcommand{\external}[1]{\texttt{#1}} From 938adb6d4fd16bb647f3a8b385f28ceb7b97b099 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Thu, 14 May 2015 18:53:01 -0500 Subject: [PATCH 120/317] improving captions --- practices.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/practices.tex b/practices.tex index 7e3d244b..0c97f238 100644 --- a/practices.tex +++ b/practices.tex @@ -118,7 +118,7 @@ \subsection{Recommended Ontologies for External Terms} & framework & SBO \\ \bottomrule \end{edtable} - \caption{SBOL properties and preferred external resources to choose values from.} + \caption{Preferred external resources from which to draw values for various SBOL properties.} \label{tbl:preferred_external_resources} \end{table} From d228c400c1258cf598f4e758464766a486422b10 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Thu, 14 May 2015 19:08:55 -0500 Subject: [PATCH 121/317] captions expanded and regularized --- model.tex | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/model.tex b/model.tex index 6be9230f..e5d3b929 100644 --- a/model.tex +++ b/model.tex @@ -2,7 +2,8 @@ \section{SBOL Data Model} % ----------------------------------------------------------------------------- -\Ctodo{All captions need full explanations.} +\Rtodo{All captions need full explanations. JSB: done} +\Rtodo{Make sure all captions are sane and similar -JSB; JSB: done} In this section, we describe the types of biological design data that can belong to an SBOL document and the relationships between these data types. The SBOL data model is specified using Unified Modeling Language (UML) 2.0 diagrams \href{http://www.omg.org/spec/UML/2.0/}{(OMG 2005)}. Subsections \ref{sec:umldiagrams}, \ref{sec:nameconventions}, \ref{sec:datatypes} review the basics of UML diagrams and explain the naming conventions and generic data types used in this specification. The remaining sections then describe the SBOL data model in detail. Complete SBOL examples and best practices when using the standard can be found in \ref{sec:examples} and \ref{sec:bestpractices}, respectively. @@ -76,7 +77,7 @@ \subsection{Identified} \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/identified} -\caption[]{The \sbol{Identified} abstract class.} +\caption[]{Diagram of the \sbol{Identified} abstract class and its associated properties} \label{uml:identified} \end{center} \end{figure} @@ -188,7 +189,7 @@ \subsection{Sequence} \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/sequence} -\caption[]{The \sbol{Sequence} class.} +\caption[]{Diagram of the \sbol{Sequence} class and its associated properties.} \label{uml:sequence} \end{center} \end{figure} @@ -254,7 +255,7 @@ \subsection{ComponentDefinition} \begin{figure}[ht] \begin{center} \includegraphics[width=0.95\textwidth]{uml/component_definition} -\caption[]{The \sbol{ComponentDefinition} class.} +\caption[]{Diagram of the \sbol{ComponentDefinition} class and its associated properties.} \label{uml:component_definition} \end{center} \end{figure} @@ -375,11 +376,10 @@ \subsubsection{ComponentInstance} \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/component_instance} -\caption[]{The \sbol{ComponentInstance} class} +\caption[]{Diagram of the \sbol{ComponentInstance} class and its associated properties.} \label{uml:component} \end{center} \end{figure} -\Ctodo{Make sure all captions are sane and similar -JSB} When a \sbol{ComponentDefinition} is used as an element of a larger design, each separate usage is represented by a \sbol{ComponentInstance} object. The \sbol{ComponentInstance} class is abstract, so every usage must belong to one of its two subclasses: @@ -464,7 +464,7 @@ \subsubsection{SequenceAnnotation} \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/sequence_annotation} -\caption[]{SequenceAnnotation class} +\caption[]{Diagram of the \sbol{SequenceAnnotation} class and its associated properties.} \label{uml:sequence_annotation} \end{center} \end{figure} @@ -522,7 +522,7 @@ \subsubsection{Location} \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/location} -\caption[]{Location class} +\caption[]{Diagram of the \sbol{Location} class and its associated properties.} \label{uml:location} \end{center} \end{figure} @@ -552,7 +552,7 @@ \subsubsection{Location} http://sbols.org/v2\#reverseComplement\\ \bottomrule \end{edtable} - \caption{URI constants for orientation values} + \caption{URI constants for \sbol{orientation} values} \label{tbl:orientation_types} \end{table} @@ -659,7 +659,7 @@ \subsubsection{SequenceConstraint} \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/sequence_constraint} -\caption[]{SequenceConstraint class} +\caption[]{Diagram of the \sbol{SequenceConstraint} class and its associated properties.} \label{uml:sequence_constraint} \end{center} \end{figure} @@ -694,7 +694,7 @@ \subsubsection{SequenceConstraint} http://sbols.org/v2\#oppositeOrientationAs & Object orientation is ``opposite'' of subject\\ \bottomrule \end{edtable} - \caption{URI constants for restriction values} + \caption{URI constants for \sbol{restriction} values} \label{tbl:restriction_types} \end{table} @@ -731,7 +731,7 @@ \subsection{Model} \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/model} -\caption[]{} +\caption[]{Diagram of the \sbol{Model} class and its associated properties.} \label{uml:model} \end{center} \end{figure} @@ -758,7 +758,7 @@ \subsubsection*{ The \sbolheading{language} property} BioPAX & \url{http://identifiers.org/edam/format_3156}\\ \bottomrule \end{edtable} - \caption{Commonly used model languages and their corresponding URIs.} + \caption{Some commonly used model languages and their corresponding URIs.} \label{tbl:model_types} \end{table} @@ -817,7 +817,7 @@ \subsection{ModuleDefinition} \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/module_definition} -\caption[]{ModuleDefinition} +\caption[]{Diagram of the \sbol{ModuleDefinition} class and its associated properties.} \label{uml:module_definition} \end{center} \end{figure} @@ -932,7 +932,7 @@ \subsubsection{FunctionalComponent} \url{http://sbols.org/v2#none} & To indicate a \sbol{FunctionalComponent} is neither input nor output\\ \bottomrule \end{edtable} - \caption{URIs for the direction property.} + \caption{URIs for the \sbol{direction} property.} \label{tbl:functionalcomponent_directions} \end{table} @@ -965,7 +965,7 @@ \subsubsection{Module} \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/module} -\caption[]{Module} +\caption[]{Diagram of the \sbol{Module} class and its associated properties.} \label{uml:module} \end{center} \end{figure} @@ -1006,7 +1006,7 @@ \subsubsection{MapsTo} \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/maps_to} -\caption[]{} +\caption[]{Diagram of the \sbol{MapsTo} class and its associated properties.} \label{uml:maps_to} \end{center} \end{figure} @@ -1034,7 +1034,7 @@ \subsubsection{MapsTo} \url{http://sbols.org/v2#merge} & Indicates that data fields of the local and remote ComponentInstantiation entities are to be interpreted in combination\\ \bottomrule \end{edtable} - \caption{URIs for the refinement property.} + \caption{URIs for the \sbol{refinement} property.} \label{tbl:mapsto_refinement} \end{table} @@ -1056,7 +1056,7 @@ \subsubsection{MapsTo} \begin{figure}[ht] \begin{center} \includegraphics[scale=1]{images/MapsTo_Diagram2} -\caption{Linking Components using MapsTo entities. Boxed with the C label represent Component entities and boxes with the M label represent MapsTo entities.} +\caption{Linking Components using \sbol{MapsTo} entities. Boxed with the C label represent Component entities and boxes with the M label represent \sbol{MapsTo} entities.} \label{image:maps_to_diagram2} \end{center} \end{figure} @@ -1098,7 +1098,7 @@ \subsubsection{Interaction} \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/interaction} -\caption[]{Interaction} +\caption[]{Diagram of the \sbol{Interaction} class and its associated properties.} \label{uml:interaction} \end{center} \end{figure} @@ -1130,7 +1130,7 @@ \subsubsection{Interaction} \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/participation} -\caption[]{Participation} +\caption[]{Diagram of the \sbol{Participation} class and its associated properties.} \label{uml:participation} \end{center} \end{figure} @@ -1181,7 +1181,7 @@ \subsubsection{Participation} \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/collection} -\caption[]{The Collection class} +\caption[]{Diagram of the \sbol{Collection} class and its associated properties.} \label{uml:collection} \end{center} \end{figure} @@ -1245,7 +1245,7 @@ \subsubsection{Annotating SBOL objects} \begin{figure}[!ht] \begin{center} \includegraphics[scale=0.6]{uml/identified_annotations} -\caption[]{Annotating SBOL's Identified entities with application specific data.} +\caption[]{Diagram of the \sbol{Annotation} class and its association with \sbol{Identified} and \sbol{AnnotationValue} objects, which is used for annotating SBOL entities with application specific data.} \label{uml:identified_annotations} \end{center} \end{figure} @@ -1291,7 +1291,7 @@ \subsubsection{GenericTopLevel} \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/generictoplevel} -\caption[]{Annotating SBOL documents with GenericTopLevel entities.} +\caption[]{Diagram of the \sbol{GenericTopLevel} class and its associated properties, which is used for embedding externally defined entities into SBOL documents.} \label{uml:generictoplevel} \end{center} \end{figure} From 4ebc4078796de4870e9296e1a12b9f9f2afd1e31 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Thu, 14 May 2015 19:17:59 -0500 Subject: [PATCH 122/317] persistentIdentity vs. identity --- model.tex | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/model.tex b/model.tex index e5d3b929..f8252a4c 100644 --- a/model.tex +++ b/model.tex @@ -74,6 +74,12 @@ \subsection{Identified} As shown in \ref{uml:identified}, the \sbol{Identified} class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, \sbol{version}, and \sbol{annotations}. The latter property is described separately in \ref{sec:Annotations}. +When an SBOL object is referred to using a URI, that URI may be either the value of an \sbol{identity} property or to the value of a \sbol{persistentIdentity} property. +If the URI is equal to the value of an \sbol{identity} property, then it is guaranteed to be unique, and refers to precisely to one SBOL object with that value. +If the URI is equal to the value of a \sbol{persistentIdentity} property, then multiple objects that are different ``versions'' of one another may hold that value (as described below); these SHOULD then be compared to one another to determine which is the ``best'' (usually most recent) single object to resolve the reference to. +Throughout this document, when we use URI to refer to an SBOL object, it means that it may be either of these cases. +\Rtodo{Need somebody to sanity check what I've written here -JSB} + \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/identified} From ad799d524f70a0841f8593847f6f0641f81c39ea Mon Sep 17 00:00:00 2001 From: jakebeal Date: Thu, 14 May 2015 19:34:50 -0500 Subject: [PATCH 123/317] identity/persistentIdentity --> URI --- model.tex | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/model.tex b/model.tex index f8252a4c..15faf7f4 100644 --- a/model.tex +++ b/model.tex @@ -79,6 +79,9 @@ \subsection{Identified} If the URI is equal to the value of a \sbol{persistentIdentity} property, then multiple objects that are different ``versions'' of one another may hold that value (as described below); these SHOULD then be compared to one another to determine which is the ``best'' (usually most recent) single object to resolve the reference to. Throughout this document, when we use URI to refer to an SBOL object, it means that it may be either of these cases. \Rtodo{Need somebody to sanity check what I've written here -JSB} +\Rtodo{Need to document that you can reference a persistentIdentity or an identity when you reference a version. Everywhere we say ``URI'' for an SBOL object, it means one of these two properties. JSB: done} +\Rtodo{Remove ``identity'' for names of URIs everywhere. JSB: done} + \begin{figure}[ht] \begin{center} @@ -130,7 +133,7 @@ \subsubsection*{The \sbolheading{name} property} The \sbol{name} property is OPTIONAL and has a data type of \external{String}. This property is intended to be displayed to a human when visualizing an \sbol{Documented} object. -If a \sbol{Documented} object lacks a name, then software tools SHOULD instead display the object's \sbol{displayId} or \sbol{identity}. +If a \sbol{Documented} object lacks a name, then software tools SHOULD instead display the object's \sbol{displayId} or URI. It is RECOMMENDED that software tools give users the ability to switch perspectives between \sbol{name} properties that are human-readable and \sbol{displayId} properties that are less human-readable, but are more likely to be unique. \subsubsection*{The \sbolheading{description} property} @@ -172,7 +175,7 @@ \subsubsection*{Serialization} \subsection {TopLevel} \label{sec:TopLevel} -\sbol{TopLevel} is an abstract class that is extended by any \sbol{Documented} class that can be found at the top level of an SBOL file. In other words, when an object that belongs to a \sbol{TopLevel} class is serialized to a file representation, it is not nested inside any other object. Instead of nesting, composite \sbol{TopLevel} objects refer to subordinate \sbol{TopLevel} objects by their \sbol{identity} or \sbol{persistentIdentity} \external{URI}s. The \sbol{TopLevel} classes defined by this specification are \sbol{Sequence}, \sbol{ComponentDefinition}, \sbol{Model}, \sbol{ModuleDefinition}, \sbol{Collection}, and \sbol{GenericTopLevel} (\ref{uml:toplevel}). +\sbol{TopLevel} is an abstract class that is extended by any \sbol{Documented} class that can be found at the top level of an SBOL file. In other words, when an object that belongs to a \sbol{TopLevel} class is serialized to a file representation, it is not nested inside any other object. Instead of nesting, composite \sbol{TopLevel} objects refer to subordinate \sbol{TopLevel} objects by their URIs. The \sbol{TopLevel} classes defined by this specification are \sbol{Sequence}, \sbol{ComponentDefinition}, \sbol{Model}, \sbol{ModuleDefinition}, \sbol{Collection}, and \sbol{GenericTopLevel} (\ref{uml:toplevel}). \begin{figure}[ht] \begin{center} @@ -672,15 +675,11 @@ \subsubsection{SequenceConstraint} \paragraph{The \sbolheading{subject} property} \label{sec:subject} -This REQUIRED property specifies the \sbol{identity} URI of the first \sbol{Component} object in the relation. - -\Ctodo{Need to document that you can reference a persistentIdentity or an identity when you reference a version. Everywhere we say ``URI'' for an SBOL object, it means one of these two properties} - -\Ctodo{Remove ``identity'' for names of URIs everywhere} +This REQUIRED property specifies the URI of the first \sbol{Component} object in the relation. \paragraph{The \sbolheading{object} property} \label{sec:object} -This REQUIRED property specifies the URI \sbol{identity} of the second \sbol{Component} object in the relation. +This REQUIRED property specifies the URI of the second \sbol{Component} object in the relation. \paragraph{The \sbolheading{restriction} property} \label{sec:restriction} @@ -1193,7 +1192,7 @@ \subsubsection{Participation} \end{figure} \subsubsection*{The member property} -The member property has a data type of URI and has the \sbol{identity} value of a \sbol{TopLevel} entity. A collection may have any number of members, including none. +The member property has a data type of URI and has the URI for a \sbol{TopLevel} entity. A collection may have any number of members, including none. \subsubsection*{Serialization} @@ -1237,7 +1236,7 @@ \subsection{Extending the SBOL Representation: Annotations} To do this, SBOL provides an ``annotation'' mechanism for attaching arbitrary information to SBOL objects, which allows SBOL models to be connected with any other models in an extensible manner. In particular, three methods are supported for connecting the SBOL data model with other, possibly application-specific data: \begin{enumerate} -\item Information that is ``part'' of an SBOL object (i.e., a ``filled diamond'' relationship) is annotated simply by adding non-conflicting properties and custom identity entries to an SBOL object. An example might be source information about the registry from which a \sbol{ComponentDefinition} was imported. +\item Information that is ``part'' of an SBOL object (i.e., a ``filled diamond'' relationship) is annotated simply by adding non-conflicting properties and custom entries to an SBOL object. An example might be source information about the registry from which a \sbol{ComponentDefinition} was imported. \item Information that is an independent object is annotated by wrapping it inside of a \sbol{GenericTopLevel} object. An example might be a data sheet describing the performance of a \sbol{ModuleDefinition} in some particular context. \item Conversely, rather than embedding external objects in SBOL, SBOL objects can also be linked to external data. The only requirement is that some URI resolution mechanism must be available that allows the links from SBOL objects to be followed when needed. \end{enumerate} From 138f81827616c022806cefcd2dcb956e22b9b947 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Thu, 14 May 2015 19:37:07 -0500 Subject: [PATCH 124/317] eliminated last traces of Documented --- model.tex | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/model.tex b/model.tex index 15faf7f4..0b238e60 100644 --- a/model.tex +++ b/model.tex @@ -127,19 +127,19 @@ \subsubsection*{The \sbolheading{version} property} \subsubsection*{The \sbolheading{name} property} \label{sec:name} -\Ctodo{Eliminate references to Documented and/or replace with Identified} +\Rtodo{Eliminate references to Documented and/or replace with Identified. JSB: Done} \Ctodo{Need to require use of DublinCore names and show examples of them: non-stanard mappings per Matt: Title vs. Name, descripton is dcterms:description} -The \sbol{name} property is OPTIONAL and has a data type of \external{String}. This property is intended to be displayed to a human when visualizing an \sbol{Documented} object. +The \sbol{name} property is OPTIONAL and has a data type of \external{String}. This property is intended to be displayed to a human when visualizing an \sbol{Identified} object. -If a \sbol{Documented} object lacks a name, then software tools SHOULD instead display the object's \sbol{displayId} or URI. +If an \sbol{Identified} object lacks a name, then software tools SHOULD instead display the object's \sbol{displayId} or URI. It is RECOMMENDED that software tools give users the ability to switch perspectives between \sbol{name} properties that are human-readable and \sbol{displayId} properties that are less human-readable, but are more likely to be unique. \subsubsection*{The \sbolheading{description} property} \label{sec:description} -The \sbol{description} property is OPTIONAL and has a data type of \external{String}. This property is intended to contain a more thorough description of a \sbol{Documented} object. +The \sbol{description} property is OPTIONAL and has a data type of \external{String}. This property is intended to contain a more thorough description of an \sbol{Identified} object. \subsubsection*{Serialization} @@ -175,7 +175,7 @@ \subsubsection*{Serialization} \subsection {TopLevel} \label{sec:TopLevel} -\sbol{TopLevel} is an abstract class that is extended by any \sbol{Documented} class that can be found at the top level of an SBOL file. In other words, when an object that belongs to a \sbol{TopLevel} class is serialized to a file representation, it is not nested inside any other object. Instead of nesting, composite \sbol{TopLevel} objects refer to subordinate \sbol{TopLevel} objects by their URIs. The \sbol{TopLevel} classes defined by this specification are \sbol{Sequence}, \sbol{ComponentDefinition}, \sbol{Model}, \sbol{ModuleDefinition}, \sbol{Collection}, and \sbol{GenericTopLevel} (\ref{uml:toplevel}). +\sbol{TopLevel} is an abstract class that is extended by any \sbol{Identified} class that can be found at the top level of an SBOL file. In other words, when an object that belongs to a \sbol{TopLevel} class is serialized to a file representation, it is not nested inside any other object. Instead of nesting, composite \sbol{TopLevel} objects refer to subordinate \sbol{TopLevel} objects by their URIs. The \sbol{TopLevel} classes defined by this specification are \sbol{Sequence}, \sbol{ComponentDefinition}, \sbol{Model}, \sbol{ModuleDefinition}, \sbol{Collection}, and \sbol{GenericTopLevel} (\ref{uml:toplevel}). \begin{figure}[ht] \begin{center} From 6de328fcaa41971ab667e3a9abd29ae50c90b29d Mon Sep 17 00:00:00 2001 From: jakebeal Date: Thu, 14 May 2015 20:23:56 -0500 Subject: [PATCH 125/317] working on serialization section --- sbol.bib | 8 ++++++++ serialization.tex | 12 ++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/sbol.bib b/sbol.bib index 0b3859cc..782104e6 100644 --- a/sbol.bib +++ b/sbol.bib @@ -1,3 +1,11 @@ +@article{rdfxml, + title={RDF/XML syntax specification (revised)}, + author={Beckett, Dave and McBride, Brian}, + journal={W3C recommendation}, + volume={10}, + year={2004} +} + @article{COBRA, title={Quantitative prediction of cellular metabolism with constraint-based models: the COBRA Toolbox v2. 0}, author={Schellenberger, Jan and Que, Richard and Fleming, Ronan MT and Thiele, Ines and Orth, Jeffrey D and Feist, Adam M and Zielinski, Daniel C and Bordbar, Aarash and Lewis, Nathan E and Rahmanian, Sorena and others}, diff --git a/serialization.tex b/serialization.tex index 11a04b62..d4a79477 100644 --- a/serialization.tex +++ b/serialization.tex @@ -5,9 +5,17 @@ \section{SBOL RDF Serialization} \Ctodo{try to target readers unfamiliar with RDF/XML. -bder} -The SBOL serialization is designed to meet several competing requirements. Firstly, SBOL needs to support ad-hoc annotations and extensions. Secondly, SBOL needs to support processing by generic semantic web and database tools that have little or no knowledge of the SBOL data model. Thirdly, SBOL needs to support the generation of light-weight software clients so as to lower the barrier to entry for new API implementations within environments where community-maintained implementation(s) are not suitable. +In order to SBOL objects to be readily stored and exchanged, it is important that they be able to be {\em serialized}, i.e., converted to a sequence of bytes that can be stored in a file or exchanged over a network. -The canonical serialization of SBOL is to a strict dialect of RDF/XML. This serialization provides the base from which to meet further requirements. Any RDF/XML-aware tooling can consume and analyze a SBOL file. Where possible, we have re-used predicates from widely-used terminologies (such as Dublin Core~\cite{dcmi2012}) to expose as much of the data as practical to standard RDF tooling. +The serialization format for SBOL is designed to meet several competing requirements. +First, SBOL needs to support ad-hoc annotations and extensions. +Second, SBOL needs to support processing by general database and semantic web software tools that have little or no knowledge of the SBOL data model. +Finally, it should be relatively simple to write a new software implementation, so that SBOL can be used even in software environments where community-maintained implementation(s) are not available. + +To meet these goals, the canonical serialization of SBOL has been selected to be a strict dialect of the RDF/XML~\cite{rdfxml}, a syntactic standard defined for Semantic Web data exchange. +This serialization provides a standard base from which to meet further requirements. +Moreover, it allows any RDF/XML-aware software tool to consume and operate on an SBOL file without needig any customization to support SBOL. +Where possible, we have re-used predicates from widely-used terminologies (such as Dublin Core~\cite{dcmi2012}) to expose as much of the data as practical to such standard RDF tooling. Arbitrary RDF/XML provides a great deal of flexibility in how equivalent data can be serialized. This flexibility can result in different serializations when processing RDF/XML files using standard off-the-shelf XML tools, such as DOM-OO mappings. To address this problem, we define a canonical association between the nesting of data structures within the SBOL UML data model and the RDF/XML file. For all ownership associations (filled diamonds), the RDF/XML for the owned entity is embedded within the owner's RDF/XML (the set of property values, however, may still be listed in any order). From 3fdf20cf06d2292bb16ce078a52177d0f3598b1d Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Fri, 15 May 2015 02:04:07 +0000 Subject: [PATCH 126/317] Update on Overleaf. --- history.tex | 6 +++++- practices.tex | 44 ++++++++------------------------------------ 2 files changed, 13 insertions(+), 37 deletions(-) diff --git a/history.tex b/history.tex index d942bfaa..b3675103 100644 --- a/history.tex +++ b/history.tex @@ -9,4 +9,8 @@ \section{History and Acknowledgements} \Ctodo{Get lots more authors to sign on} -\LDtodo{Make Herbert write something nice about history to add here -JSB} \ No newline at end of file +\LDtodo{Make Herbert write something nice about history to add here -JSB} + +\Ctodo{Need to cite NBT paper here.} + +\Ctodo{Nic should write something about the history of SBOL 2.0 including the publication for the proposal.} \ No newline at end of file diff --git a/practices.tex b/practices.tex index 0c97f238..274fb00a 100644 --- a/practices.tex +++ b/practices.tex @@ -4,17 +4,11 @@ \section{Best Practices} % ----------------------------------------------------------------------------- \subsection{Indicate Modification of Data with Version} -Once an SBOL object has been published where others might have accessed it (e.g., to an online repository), it may be the case that others make copies of the object or else come to depend on the particular contents of the object. -Thus, in order to avoid confusion, if a person wants to change the properties of a published object, the best practice is to do so by making a new copy that incorporates the change, with a new URI. +Once an SBOL object has been published where others might have accessed it (e.g., to an online repository), it may be the case that others make copies of the object or else come to depend on the particular contents of the object. Thus, in order to avoid confusion, if a person wants to change the properties of a published object, the best practice is to do so by making a new copy that incorporates the change, with a new URI. -The relationship between the old and new objects (i.e., that the new object was derived from the old object), however, is not visible unless it is explicitly declared. -This is RECOMMENDED to be done using the \sbol{persistentIdentity}, and \sbol{version} properties. -The preferred practice for declaring such a relationship is to use the same \sbol{persistentIdentity} for both objects, and label the newer one as being the newer version. -Then, when the new object is published, it can be clear to both humans and machines that this object is intended to replace the one that was published previously. +The relationship between the old and new objects (i.e., that the new object was derived from the old object), however, is not visible unless it is explicitly declared. This is RECOMMENDED to be done using the \sbol{persistentIdentity}, and \sbol{version} properties. The preferred practice for declaring such a relationship is to use the same \sbol{persistentIdentity} for both objects, and label the newer one as being the newer version. Then, when the new object is published, it can be clear to both humans and machines that this object is intended to replace the one that was published previously. In this way also, when the user of an object always wants the latest version, they can obtain it by referencing the object with the \sbol{persistentIdentity} rather than the \sbol{identity}. -As stated in \ref{sec:version}, it is RECOMMENDED that version numbering should follow the conventions of semantic versioning (\url{http://semver.org/}), particularly as implemented by Maven (\url{http://maven.apache.org/}). -This convention represents versions as sequences of numbers and qualifiers separated by the characters {\tt .} and {\tt -} and compared in lexicographical order (for example, 1 < 1.3.1 < 2.0-beta). -For a full explanation, see the linked resources. +As stated in \ref{sec:version}, it is RECOMMENDED that version numbering should follow the conventions of semantic versions (\url{http://semver.org/}), particularly as implemented by Maven (\url{http://maven.apache.org/}). This convention represents versions as sequences of numbers and qualifiers separated by the characters {\tt .} and {\tt -} and compared in lexicographical order (for example, 1 < 1.3.1 < 2.0-beta). For a full explanation, see the linked resources. \Rtodo{try to target readers unfamiliar with RDF/XML. -bder} \Rtodo{maybe clarify what type of versioning is this object affecting? TN} @@ -52,53 +46,31 @@ \subsection{Annotations: Embedded Objects vs. External References} \item Store the information separately and annotate the SBOL model with URIs that point to it. \end{itemize} - In theory, either can be used in any case. In practice, however, embedding massive amounts of non-SBOL data into SBOL models is likely to cause problems for people and software tools trying to manage and -exchange such models. - -It is thus RECOMMENDED that small amounts of information (e.g., design -notes, preferred graphical layout) be embedded in the SBOL model, -while large amounts of information (e.g., the scientific publication -from which a model was derived, flow cytometry data characterizing -performance) be linked with URIs pointing to external resources. -% -The boundary between ``small'' and ``large'' is left deliberately -vague, recognizing that it will likely depend on the particulars of a -given SBOL application. - -\Rtodo{Don't drag your giant data files around in SBOL, put them as external links} +exchange such models. Therefore, it is RECOMMENDED that small amounts of information (e.g., design notes, preferred graphical layout) be embedded in the SBOL model, while large amounts of information (e.g., the contents of the scientific publication from which a model was derived, flow cytometry data characterizing performance) be linked with URIs pointing to external resources. The boundary between ``small'' and ``large'' is left deliberately vague, recognizing that it will likely depend on the particulars of a given SBOL application. \subsection{Completeness and Validation} RDF documents containing serialized SBOL objects may or may not be -entirely self-contained. A document is self-contained or ``complete'' -if every SBOL object referred to in the document is contained in the -document. +entirely self-contained. A SBOL document is self-contained or ``complete'' if every SBOL object referred to in the document is contained in the document. It is RECOMMENDED that serializations be complete whenever practical. In order words, when serializing an SBOL object, serialize all of the other objects that it points to, then serialize all of the additional objects that they point to, etc., until the document is complete. -It is RECOMMENDED that serializations be complete whenever practical. -In order words, when serializing an SBOL object, serialize all of the -other objects that it points to, then serialize all of the additional -objects that they point to, etc., until the document is complete. - -Complementarily, note that there is no guarantee that an RDF document +It is important to note that there is no guarantee that an RDF document contains valid SBOL. When an RDF document is de-serialized into SBOL objects, the program doing so SHOULD verify that all of the property values encoded therein have the right type (e.g., that the object pointed to by the \sbol{sequence} property of a \sbol{ComponentDefinition} really is a \sbol{Sequence} object). -% For complete files, this can be carried out readily and entirely locally. For files that are not complete, an implementation needs to either have a means of validating those external references (e.g., by retrieving them from various repositories) or else to mark them as being unverified and not depend on their correctness. -\Rtodo{Would be good to also talk about completeness checking here. Namely, if all objects are in the file, should verify that links are all valid. When they are not, need a scheme to validate external references.} - \subsection{Recommended Ontologies for External Terms} -External ontologies and controlled vocabularies are integral part of SBOL. SBOL utilises these resources to access existing biological information where possible. New SBOL specific terms are defined only when necessary. Instead, SBOL provides placeholders that can point to external terms. For example, types of components, such as DNA or protein, are indicated using BioPAX. Similarly, the role of a DNA component is indicated via the SO terms. Although preferred ontologies have been indicated in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found at \ref{tbl:preferred_external_resources}. + +External ontologies and controlled vocabularies are an integral part of SBOL. SBOL utilizes these resources to access existing biological information where possible. New SBOL specific terms are defined only when necessary. Instead, SBOL provides placeholders that can point to external terms. For example, types of components, such as DNA or protein, are indicated using BioPAX. Similarly, the role of a DNA component is indicated via the SO terms. Although preferred ontologies have been indicated in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found at \ref{tbl:preferred_external_resources}. \Ctodo{It would be useful to add URLs to the resources - NeilW} From 56f06f9693f5eb5603be5e02ba8b61467c39d5f6 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Sat, 16 May 2015 00:02:52 -0500 Subject: [PATCH 127/317] serialization --- model.tex | 2 +- serialization.tex | 58 +++++++++++++++++++++++++++-------------------- 2 files changed, 35 insertions(+), 25 deletions(-) diff --git a/model.tex b/model.tex index 0b238e60..81ce2886 100644 --- a/model.tex +++ b/model.tex @@ -1,5 +1,5 @@ % ----------------------------------------------------------------------------- -\section{SBOL Data Model} +\section{SBOL Data Model}\label{sec:model} % ----------------------------------------------------------------------------- \Rtodo{All captions need full explanations. JSB: done} diff --git a/serialization.tex b/serialization.tex index d4a79477..57247e95 100644 --- a/serialization.tex +++ b/serialization.tex @@ -3,42 +3,31 @@ \section{SBOL RDF Serialization} \label{sec:serialization} % ----------------------------------------------------------------------------- -\Ctodo{try to target readers unfamiliar with RDF/XML. -bder} +\Rtodo{try to target readers unfamiliar with RDF/XML. -bder JSB: done, I think} -In order to SBOL objects to be readily stored and exchanged, it is important that they be able to be {\em serialized}, i.e., converted to a sequence of bytes that can be stored in a file or exchanged over a network. +In order for SBOL objects to be readily stored and exchanged, it is important that they be able to be {\em serialized}, i.e., converted to a sequence of bytes that can be stored in a file or exchanged over a network. The serialization format for SBOL is designed to meet several competing requirements. First, SBOL needs to support ad-hoc annotations and extensions. Second, SBOL needs to support processing by general database and semantic web software tools that have little or no knowledge of the SBOL data model. -Finally, it should be relatively simple to write a new software implementation, so that SBOL can be used even in software environments where community-maintained implementation(s) are not available. +Finally, it should be relatively simple to write a new software implementation, so that SBOL can be readily used even in software environments where community-maintained implementations are not available. -To meet these goals, the canonical serialization of SBOL has been selected to be a strict dialect of the RDF/XML~\cite{rdfxml}, a syntactic standard defined for Semantic Web data exchange. +To meet these goals, the canonical serialization of SBOL has been selected to be a strict dialect of RDF/XML~\cite{rdfxml}, a syntactic standard defined for Semantic Web data exchange. This serialization provides a standard base from which to meet further requirements. Moreover, it allows any RDF/XML-aware software tool to consume and operate on an SBOL file without needig any customization to support SBOL. Where possible, we have re-used predicates from widely-used terminologies (such as Dublin Core~\cite{dcmi2012}) to expose as much of the data as practical to such standard RDF tooling. -Arbitrary RDF/XML provides a great deal of flexibility in how equivalent data can be serialized. This flexibility can result in different serializations when processing RDF/XML files using standard off-the-shelf XML tools, such as DOM-OO mappings. -To address this problem, we define a canonical association between the nesting of data structures within the SBOL UML data model and the RDF/XML file. For all ownership associations (filled diamonds), the RDF/XML for the owned entity is embedded within the owner's RDF/XML (the set of property values, however, may still be listed in any order). +Arbitrary RDF/XML, however, provides a sometimes problematically large amount of flexibility in how equivalent data can be serialized. This flexibility can result in different serializations when processing RDF/XML files using standard off-the-shelf XML tools, such as DOM-OO mappings. +To simplify the issue, we define a canonical association between the nesting of data structures within the SBOL UML data model and the RDF/XML file. For all ownership associations (filled diamonds), the RDF/XML for the owned entity is embedded within the owner's RDF/XML (note, however, that the property values may be listed in any order). For all associations that are by reference (open diamonds), the RDF/XML for the referenced property is linked via a resource URI. -\Ctodo{Perhaps add or reference an example of ownership vs referencing. - cm} -\Ctodo{GM: Add a statement to indicate that the order of properties is not important.} +For example, the serialization of a \sbol{ComponentDefinition} embeds the serializations of the \sbol{SequenceConstraint} and \sbol{Component} objects associated with it. Those \sbol{SequenceConstraint} objects, however, link to the \sbol{Component} objects with a URI rather than embedding another copy. +\Rtodo{Perhaps add or reference an example of ownership vs referencing. - cm; JSB: done} +\Rtodo{GM: Add a statement to indicate that the order of properties is not important. JSB: done} -All first-class SBOL datatypes have an associated identity URI. In the RDF, this is the resource URI used by instances of that type. Properties and associations are asserted as nested RDF/XML assertions. Some datatypes are `top level,' which means that they always appear at the top level of the RDF/XML serialization. All other datatypes will always appear nested within their parent container. -\Ctodo{Perhaps add or reference an example of a top level entity vs a nested entity. This may be very similar to the previous example. - cm} +\Rtodo{This needs to be integrated with the rest JSB: done } +Every SBOL document must be a valid RDF/XML document. Accordingly, each SBOL document starts with an XML declaration that has its XML version set to ``1.0.'' As shown in the example below, this declaration is then followed by an \external{rdf:RDF} XML element that includes the namespace declarations for RDF and SBOL. SBOL namespace, which is \url{http://sbols.org/v2#}, is used to indicate which entities and properties in the SBOL document are defined by SBOL, and SHOULD NOT be used for any entities or properties not defined in this specification. -Each instance of a first-class SBOL datatype may have annotations attached. These annotations are composed of a name and a value. They are serialized to RDF as a triple with the subject being the identity of the instance they annotate, the predicate being the name of the annotation, and the object being the value of that annotation. Annotation values are always nested within the RDF/XML serialization of the instance that they annotate. - -SBOL supports top-level, user-defined annotations. This is to allow non-standardized but necessary information to be carried around as part of a design. For example, a particular sub-community may have an internal standard for genetic device characterization data sheets. -Individual data sheets can be represented as a generic top-level annotation with internal structured annotations. This annotation will be serialized into the RDF/XML in the usual way, as a RDF/XML block at the top level of the file. Other objects may refer to this entity through their annotations by reference, and this generic top-level entity may refer to other entities via references. -\Ctodo{Perhaps add or reference examples of different annotations. - cm} - -By adopting this paradigm of RDF/XML serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. Since exactly the same scheme is used to serialize annotations as is used to serialize specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of properties and associations. Those properties not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entities in a SBOL file, we enable future specifications or extensions to ratify the structure of other top-level objects. These entities would then become part of the explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely round-trip the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. The very regimented control of nesting versus referencing allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL RDF/XML files safely. - -\subsection {SBOL Documents} -\Ctodo{This needs to be integrated with the rest} -An SBOL document is a valid RDF/XML document. Accordingly, each SBOL document starts with an XML declaration that has its XML version set to ``1.0.'' As shown in the example below, this declaration is then followed by a rdf:RDF XML element that includes the namespace declarations for RDF and SBOL. The latter namespace is used to indicate which entities and properties in the SBOL document are defined by SBOL. - -\Ctodo{Need to state ``This is the SBOL2 namespace''} +\Rtodo{Need to state ``This is the SBOL2 namespace'' JSB: done} \lstsetsbol \begin{lstlisting} @@ -48,4 +37,25 @@ \section{SBOL RDF Serialization} \end{lstlisting} -As explained in \ref{sec:annotations}, SBOL documents can also include custom namespace declarations for the purpose of embedding application-specific data. \ No newline at end of file + +All first-class SBOL data types (i.e., those enumerated in \ref{sec:model}) have an associated identifying URI. In the RDF, this is the resource URI used by instances of that type. For example, \sbol{ComponentDefinition} has the +type URI \external{sbol:ComponentDefinition}. +Properties and associations are then asserted as nested RDF/XML assertions. +\ref{sec:model} provides the serialization template and an example at the end of its description of each data type. +All of the data types that are \sbol{TopLevel} are so named because they always appear at the top-most level of the RDF/XML serialization. All other datatypes will always appear nested within their parent container and, ultimately, some \sbol{TopLevel} object. +For example, a \sbol{ComponentDefinition} is a \sbol{TopLevel} and therefore listed at the top-most level of the RDF/XML serialiation, and contains its \sbol{SequenceConstraint} objects, since they are not \sbol{TopLevel}. Its \sbol{Sequence}, however, is also \sbol{TopLevel} and is therefore not nested within and instead linked via a URI. +\Rtodo{Perhaps add or reference an example of a top level entity vs a nested entity. This may be very similar to the previous example. - cm. JSB: done} + +Each instance of a first-class SBOL datatype may also have annotations attached, as described in \ref{sec:Annotations}. These annotations are composed of a name and a value. They are serialized to RDF as a triple with the subject being the identity of the instance they annotate, the predicate being the name of the annotation, and the object being the value of that annotation. Annotation values are always nested within the RDF/XML serialization of the instance that they annotate. +For example, a \sbol{ModuleDefinition} might add a DOI annotation that links to the scientific article that first described the system that it represents. + +SBOL also supports top-level, user-defined annotations, again as described in \ref{sec:Annotations}. This is to allow non-standardized but necessary information to be carried around as part of a design. For example, a particular sub-community may have an internal standard for genetic device characterization data sheets. +Such data can be represented as a \sbol{GenericTopLevel} object with internal structured annotations. +For example, each individual data sheets might be contained in its own \sbol{GenericTopLevel} instance. +This annotation will be serialized into the RDF/XML in the usual way, as an RDF/XML block at the top level of the file. +Other objects may refer to this entity through their annotations by reference, and this generic top-level entity may refer to other entities via references. +For example, a \sbol{ModuleDefinition} might use an annotation to refer to the data sheet \sbol{GenericTopLevel} that documents its properties. +\Rtodo{Perhaps add or reference examples of different annotations. - cm; JSB: done} + +By adopting this paradigm of RDF/XML serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. Since exactly the same scheme is used to serialize annotations as is used to serialize specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of properties and associations. Those properties not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entities in a SBOL file, we enable future specifications or extensions to ratify the structure of other top-level objects. These entities would then become part of the explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely read in, manipulate, and write out the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. Finally, the very regimented control of nesting versus referencing also allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL RDF/XML files safely. + From 453078241d0b9b58b163a68b425f84945b09f1d0 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Sat, 16 May 2015 00:31:28 -0500 Subject: [PATCH 128/317] tweaks that match last-minute pre-freeze model changes --- model.tex | 52 ++++++++++++++++++++++++---------------------------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/model.tex b/model.tex index 81ce2886..5cf881ee 100644 --- a/model.tex +++ b/model.tex @@ -259,7 +259,7 @@ \subsection{ComponentDefinition} As shown in \ref{uml:component_definition}, the \sbol{ComponentDefinition} class describes a structural design entity using the following properties: \sbol{types}, \sbol{roles}, and \sbol{sequences}. In addition, this class has properties for describing and organizing the substructure of said design entity, including \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations}. -\Ctodo{Make sure that text is consistent with sequences property have cardinality of 0..*} +\Rtodo{Make sure that text is consistent with sequences property have cardinality of 0..*; JSB: done} \begin{figure}[ht] \begin{center} @@ -328,6 +328,9 @@ \subsubsection*{The \sbolheading{sequences} property} \label{sec:sequences} The \sbol{sequences} property is OPTIONAL and MAY include a collection of \external{URI}s for \sbol{Sequence} objects. These objects define the primary structure of the \sbol{ComponentDefinition} with this property and SHOULD be consistent with each other. +\Rtodo{Please check that this constraint is appropriate -JSB} +Many \sbol{Component} objects will have precisely one \sbol{Sequence} object in this collection. In certain use cases, however, it may be appropriate to have multiple \sbol{Sequence} objects (e.g., two different representations of the same object), and accordingly multiple objects are permitted. If there is more than one \sbol{Sequence}, however, it must be the case that their length and topology are precisely the same, such that it is unambiguous what is referred to be \sbol{SequenceConstraint} and \sbol{SequenceAnnotation} objects. + \subsubsection*{The \sbolheading{sequenceConstraints} property} \label{sec:sequenceConstraints} @@ -466,9 +469,9 @@ \subsubsection{Component} \subsubsection{SequenceAnnotation} \label{sec:SequenceAnnotation} -The \sbol{SequenceAnnotation} class describes a precisely known location of interest on the \sbol{Sequence} object linked by its parent \sbol{ComponentDefinition} object. It can also optionally associate this location with a \sbol{Component} object. \sbol{SequenceAnnotation} objects specify their location using a \sbol{Location} object, as described below. +The \sbol{SequenceAnnotation} class describes a precisely known location of interest on the \sbol{Sequence} objects linked by its parent \sbol{ComponentDefinition} object. It can also optionally associate this location with a \sbol{Component} object. \sbol{SequenceAnnotation} objects specify their location using a \sbol{Location} object, as described below. -\Ctodo{We will change location to locations (1..*) and eliminate MultiRange class.} +\Rtodo{We will change location to locations (1..*) and eliminate MultiRange class.} \begin{figure}[ht] \begin{center} @@ -478,8 +481,8 @@ \subsubsection{SequenceAnnotation} \end{center} \end{figure} -\paragraph{The \sbolheading{location} property} -Every \sbol{SequenceAnnotation} MUST have a location property. The value of this property is a nested \sbol{Location} object. +\paragraph{The \sbolheading{locations} property} +Every \sbol{SequenceAnnotation} MUST has at least one \sbol{Location} object in its collection of \sbol{locations}. The value of this property is a nested \sbol{Location} object. \paragraph{The \sbolheading{component} property} \sbol{SequenceAnnotation} objects MAY use this property to link location information to a \sbol{Component} object, by specifying its URI. @@ -525,8 +528,7 @@ \subsubsection{SequenceAnnotation} \subsubsection{Location} \label{sec:Location} -The Location class is extended by the \sbol{Range}, \sbol{MultiRange}, \sbol{Cut}, and \sbol{GenericLocation} classes. - +The Location class is extended by the \sbol{Range}, \sbol{Cut}, and \sbol{GenericLocation} classes. All of these thus share its \sbol{orientation} property, for example to to specify directionality on a potentially double-stranded \sbol{Component} object. \begin{figure}[ht] \begin{center} @@ -536,18 +538,6 @@ \subsubsection{Location} \end{center} \end{figure} -\paragraph{Range} -\label{sec:Range} -A \sbol{Range} object specifies inclusive start and end positions. These properties are required in \sbol{Range} objects and they can have \external{integer} values greater than zero. A \sbol{Range} object also includes an ``orientation'' property, for example to to specify directionality on a potentially double-stranded \sbol{Component} object. - -\subparagraph{The \sbolheading{start} property} -Specifies the start of a \sbol{Range}. This property is REQUIRED and can have \external{integer} values greater than zero. - -\subparagraph{The \sbolheading{end} property} -Specifies the end of a \sbol{Range}. This property is REQUIRED and can have \external{integer} values greater than zero. - -\Ctodo{If we remove MultiRange than Orientation can be moved to the Location class.} - \subparagraph{The \sbolheading{orientation} property} \label{sec:orientation} This OPTIONAL property has a URI value. For \sbol{ComponentDefinition} objects representing DNA molecules, it is RECOMMENDED to use one of the values in \ref{tbl:orientation_types}. @@ -565,6 +555,19 @@ \subsubsection{Location} \label{tbl:orientation_types} \end{table} + +\paragraph{Range} +\label{sec:Range} +A \sbol{Range} object specifies inclusive start and end positions. These properties are required in \sbol{Range} objects and they can have \external{integer} values greater than zero. + +\subparagraph{The \sbolheading{start} property} +Specifies the start of a \sbol{Range}. This property is REQUIRED and can have \external{integer} values greater than zero. + +\subparagraph{The \sbolheading{end} property} +Specifies the end of a \sbol{Range}. This property is REQUIRED and can have \external{integer} values greater than zero. + +\Rtodo{If we remove MultiRange than Orientation can be moved to the Location class. Done: Nic and JSB} + \subparagraph{Serialization} The serialization of Range objects has the following form: @@ -588,23 +591,16 @@ \subsubsection{Location} \end{lstlisting} -\paragraph{MultiRange} -\label{sec:MultiRange} -A \sbol{MultiRange} object represents a location that is specified by multiple \sbol{Range} objects. For example, this capability can be used to specify a \sbol{ComponentDefinition} object that represents the introns or exons of a eukaryotic gene. - \paragraph{Cut} \label{sec:Cut} The \sbol{Cut} class has been introduced to enable the specification of a location between two indices. -Each \sbol{Cut} object has properties, \sbol{at} and \sbol{orientation}. +Each \sbol{Cut} object has the property \sbol{at}. \subparagraph{The \sbolheading{at} property} \label{sec:at} The REQUIRED \sbol{at} property is an index greater than or equal to zero that specifies the index just before the location represented by the Cut object. A Cut object with \sbol{at} equal to zero represents the location just before index one (even though there is no zero index on Structure objects in SBOL). -\subparagraph{The \sbolheading{orientation} property} -This OPTIONAL property has a URI value. For \sbol{ComponentDefinition} objects representing DNA molecules, it is RECOMMENDED to use one of the values in \ref{tbl:orientation_types} (above with \sbol{Range}). - \subparagraph{Serialization} The serialization of \sbol{Cut} objects has the following form: @@ -635,7 +631,7 @@ \subsubsection{Location} \sbol{GenericLocation} is included as a hook for extensions, e.g., for describing locations in non-sequential structures. -\Rtodo{Need serialization examples for MultiRange, Cut, and GenericLocation: JSB - done for Cut and GenericLocation; ignoring MultiRange as it is likely to be cut} +\Rtodo{Need serialization examples, Cut, and GenericLocation: JSB - done for Cut and GenericLocation} \Ctodo{Make sure that every property has a section label so that it hyperlinks correctly} \subparagraph{Serialization} From dcd27fcec1d1f2a6a6d03883c0d11d62315f1d9b Mon Sep 17 00:00:00 2001 From: jakebeal Date: Sat, 16 May 2015 10:06:56 -0500 Subject: [PATCH 129/317] eliminated most bad links --- apdx-validation.tex | 12 ++++----- model.tex | 60 +++++++++++++++++++++++++++------------------ overview.tex | 3 ++- practices.tex | 2 +- sbol2.tex | 2 +- serialization.tex | 1 + 6 files changed, 46 insertions(+), 34 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 3437f682..0e8931b3 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -161,11 +161,11 @@ \subsubsection*{Rules for the \class{ComponentInstance} class} \url{http://sbols.org/v2\#public} or \url{http://sbols.org/v2\#private}. (Reference: \sec{sec:ComponentInstance})} -\printValid{The \sbol{definition} property is a required URI reference to a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} +\printValid{The \sbol{componentDefinition} property is a required URI reference to a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} -\printModeling{The \sbol{definition} property URI should reference a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} +\printModeling{The \sbol{componentDefinition} property URI should reference a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} -\printValid{The \sbol{mapsTos} property is an optional set of \sbol{MapsTo} objects. (Reference: \sec{sec:ComponentInstance})} +\printValid{The \sbol{mapsTo} property is an optional set of \sbol{MapsTo} objects. (Reference: \sec{sec:ComponentInstance})} \printValid{A \sbol{Component} object inherits all properties of a \sbol{ComponentInstance} object. (Reference: \sec{sec:ComponentInstance})} @@ -205,8 +205,6 @@ \subsubsection*{Rules for the \class{Location} class} \printValid{The \sbol{at} property is required for all \sbol{Cut} objects, and it must be a non-negative integer. (Reference: \sec{sec:Cut})} -% \Ctodo{MultiRange must have 2 ranges} - \subsubsection*{Rules for the \class{SequenceConstraint} class} \setcounter{sbolCtr}{10901} @@ -261,7 +259,7 @@ \subsubsection*{Rules for the \class{Module} class} \printValid{The \sbol{definition} property is a required URI reference to a \sbol{ModuleDefinition} object. (Reference: \sec{sec:Module})} -\printValid{The \sbol{mapsTos} property is an optional set of \sbol{MapsTo} objects. (Reference: \sec{sec:Module})} +\printValid{The \sbol{mapsTo} property is an optional set of \sbol{MapsTo} objects. (Reference: \sec{sec:Module})} \subsubsection*{Rules for the \class{MapsTo} class} \setcounter{sbolCtr}{11301} @@ -279,7 +277,7 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{The \sbol{FunctionalComponent} referenced by the \sbol{local} property must have \sbol{public} access type.} -\printValid{The \sbol{remote} property is a required URI that MUST reference a \sbol{FunctionalComponent} that is specified within the \sbol{ModuleDefinition} referred to by the \sbol{definition} property of the \sbol{Module} that contains this \sbol{MapsTo} object. (Reference: \sec{sec:MapsTo})} +\printValid{The \sbol{remote} property is a required URI that MUST reference a \sbol{FunctionalComponent} that is specified within the \sbol{ModuleDefinition} referred to by the \sbol{functionalComponents} property of the \sbol{Module} that contains this \sbol{MapsTo} object. (Reference: \sec{sec:MapsTo})} \printValid{The \sbol{FunctionalComponent} referenced by the \sbol{remote} property must have \sbol{public} access type.} diff --git a/model.tex b/model.tex index 5cf881ee..c8d9fadf 100644 --- a/model.tex +++ b/model.tex @@ -471,7 +471,7 @@ \subsubsection{SequenceAnnotation} \label{sec:SequenceAnnotation} The \sbol{SequenceAnnotation} class describes a precisely known location of interest on the \sbol{Sequence} objects linked by its parent \sbol{ComponentDefinition} object. It can also optionally associate this location with a \sbol{Component} object. \sbol{SequenceAnnotation} objects specify their location using a \sbol{Location} object, as described below. -\Rtodo{We will change location to locations (1..*) and eliminate MultiRange class.} +\Rtodo{We will change location to locations (1..*) and eliminate MultiRange class. JSB, Nic: done} \begin{figure}[ht] \begin{center} @@ -481,10 +481,11 @@ \subsubsection{SequenceAnnotation} \end{center} \end{figure} -\paragraph{The \sbolheading{locations} property} +\paragraph{The \sbolheading{locations} property}\label{sec:locations} +\label{sec:locations} Every \sbol{SequenceAnnotation} MUST has at least one \sbol{Location} object in its collection of \sbol{locations}. The value of this property is a nested \sbol{Location} object. -\paragraph{The \sbolheading{component} property} +\paragraph{The \sbolheading{component} property}\label{sec:component} \sbol{SequenceAnnotation} objects MAY use this property to link location information to a \sbol{Component} object, by specifying its URI. \Rtodo{Separate serialization better - give paragraph/subsubsec headers. JSB: done.} @@ -560,10 +561,10 @@ \subsubsection{Location} \label{sec:Range} A \sbol{Range} object specifies inclusive start and end positions. These properties are required in \sbol{Range} objects and they can have \external{integer} values greater than zero. -\subparagraph{The \sbolheading{start} property} +\subparagraph{The \sbolheading{start} property}\label{sec:start} Specifies the start of a \sbol{Range}. This property is REQUIRED and can have \external{integer} values greater than zero. -\subparagraph{The \sbolheading{end} property} +\subparagraph{The \sbolheading{end} property}\label{sec:end} Specifies the end of a \sbol{Range}. This property is REQUIRED and can have \external{integer} values greater than zero. \Rtodo{If we remove MultiRange than Orientation can be moved to the Location class. Done: Nic and JSB} @@ -632,7 +633,6 @@ \subsubsection{Location} describing locations in non-sequential structures. \Rtodo{Need serialization examples, Cut, and GenericLocation: JSB - done for Cut and GenericLocation} -\Ctodo{Make sure that every property has a section label so that it hyperlinks correctly} \subparagraph{Serialization} @@ -669,15 +669,15 @@ \subsubsection{SequenceConstraint} \end{center} \end{figure} -\paragraph{The \sbolheading{subject} property} +\paragraph{The \sbolheading{subject} property}\label{sec:subject} \label{sec:subject} This REQUIRED property specifies the URI of the first \sbol{Component} object in the relation. -\paragraph{The \sbolheading{object} property} +\paragraph{The \sbolheading{object} property}\label{sec:object} \label{sec:object} This REQUIRED property specifies the URI of the second \sbol{Component} object in the relation. -\paragraph{The \sbolheading{restriction} property} +\paragraph{The \sbolheading{restriction} property}\label{sec:restriction} \label{sec:restriction} This REQUIRED property specifies a URI that identifies the type of relationship between the \sbol{subject} and \sbol{object} \sbol{Component} objects. @@ -742,10 +742,10 @@ \subsection{Model} Each \sbol{Model} object specifies the location of the actual content of a qualitative/quantitative model, the language the model is implemented with, the modeling framework and the model's role(s). -\subsubsection*{ The \sbolheading{source} property} +\subsubsection*{ The \sbolheading{source} property}\label{sec:source} This REQUIRED property is a URI that specifies the actual location of a qualitative or quantitative model. -\subsubsection*{ The \sbolheading{language} property} +\subsubsection*{ The \sbolheading{language} property}\label{sec:language} This REQUIRED property is a URI that specifies the language the model is implemented with. Values for this URI are RECOMMENDED to be chosen from the EMBRACE Data and Methods (EDAM) ontology where possible. A few suggested model types and corresponding URI values are shown in \ref{tbl:model_types}. @@ -764,7 +764,7 @@ \subsubsection*{ The \sbolheading{language} property} \end{table} -\subsubsection*{ The \sbolheading{framework} property} +\subsubsection*{ The \sbolheading{framework} property}\label{sec:framework} This REQUIRED property is a URI that specifies the modeling framework that a model is implemented within. Values for this URI are RECOMMENDED to be chosen from the SBO's modeling framework terms where possible. A few suggested model frameworks and corresponding URI values are shown in \ref{tbl:model_frameworks}. @@ -828,13 +828,13 @@ \subsection{ModuleDefinition} A \sbol{ModuleDefinition} object relies on the ``direction'' data fields of its \sbol{FunctionalComponent} objects to specify whether they serve as its inputs or outputs. \Ctodo{the direction bit needs to be said much more clearly} -\subsubsection*{The \sbolheading{roles} property} +\subsubsection*{The \sbolheading{roles} property}\label{sec:roles} This property is OPTIONAL and may include a set of URIs that specifies the intended use of a \sbol{ModuleDefinition} entity. These URIs may identify terms for abstract module roles, such as``inverter'' or ``AND gate'', or they may identify terms for purely biological roles, such as ``metabolic pathway'' and ``signaling cascade''. \Ctodo{make this sentence clearer} \Ctodo{Make these more paralell to componentdefinition in the way that they are written} -\subsubsection*{The \sbolheading{models} property} +\subsubsection*{The \sbolheading{models} property}\label{sec:models} This property is OPTIONAL and includes identities of associated \sbol{Model} entities. SBOL's \sbol{Model} objects are used to link genetic descriptions of biological parts and their interactions to computational models. @@ -843,7 +843,7 @@ \subsubsection*{The \sbolheading{models} property} \Ctodo{make sure submodules --> modules} -\subsubsection*{The \sbolheading{modules} property} +\subsubsection*{The \sbolheading{modules} property}\label{sec:modules} This property is optional and includes a set of \sbol{Module} entities, which refer to \sbol{ModuleDefinition}s to be imported. \Ctodo{use better language, like in componentdefinition} @@ -854,7 +854,7 @@ \subsubsection*{The \sbolheading{functionalComponents} property} \Ctodo{use better language} -\subsubsection*{The \sbolheading{interactions} property} +\subsubsection*{The \sbolheading{interactions} property}\label{sec:interactions} This property is optional and includes a set of \sbol{Interaction} entities, which include \sbol{Participation} entities. \subsubsection*{Serialization} @@ -914,12 +914,18 @@ \subsubsection*{Serialization} \subsubsection{FunctionalComponent} \label{sec:FunctionalComponent} -Composition of the functional layer of SBOL designs is accomplished using \sbol{FunctionalComponent} objects. Each FunctionalComponent object is owned by a \sbol{ModuleDefinition} and serves as an explicit usage of a \sbol{Component} object for the purpose of fulfilling some function. In addition, each \sbol{FunctionalComponent} must specify via the ``direction'' field (\ref{tbl:functionalcomponent_directions}) whether it serves as an input, output, both, or neither for its parent \sbol{ModuleDefinition} object. +Composition of the functional layer of SBOL designs is accomplished using \sbol{FunctionalComponent} objects. Each FunctionalComponent object is owned by a \sbol{ModuleDefinition} and serves as an explicit usage of a \sbol{Component} object for the purpose of fulfilling some function. + +\sbol{FunctionalComponent} derives from \sbol{ComponentInstance}, and therefore has the definition and access properties. Additionally, it has a \sbol{direction} property that specifies whether it serves as an input, output, both, or neither for the \sbol{ModuleDefinition} that contains it. + \Ctodo{Previously said a Module could own a FunctionalComponet, which i'm pretty sure is false -JB Yes, it's false, fix it} -\LDtodo{Need to explain direction better.} +\paragraph{The \sbolheading{direction} property}\label{sec:direction} +Each \sbol{FunctionalComponent} MUST specify via the \sbol{direction} property whether it serves as an input, output, both, or neither for its parent \sbol{ModuleDefinition} object. +The value for this property MUST be one of the values given in \ref{tbl:functionalcomponent_directions}. + -\sbol{FunctionalComponent} derives from \sbol{ComponentInstance}, and therefore has the definition and access properties. +\LDtodo{Need to explain direction better.} \begin{table}[ht] @@ -1015,13 +1021,13 @@ \subsubsection{MapsTo} \Ctodo{need to explain the whole 3-way mapsto model and importation better} -\paragraph{The local property} +\paragraph{The \sbolheading{local} property}\label{sec:local} This required property is used to specify the \sbol{ComponentInstance} from the parent entity. -\paragraph{The remote property} +\paragraph{The \sbolheading{remote} property}\label{sec:remote} This required property is used to specify the \sbol{ComponentInstance} from the child entity being imported by the parent. -\paragraph{The refinement property} +\paragraph{The \sbolheading{refinement} property}\label{sec:refinement} Each \sbol{MapsTo} entity must also specify the relationship between its local and remote components using the refinement property. The Table \ref{tbl:mapsto_refinement} lists the values \begin{table}[ht] @@ -1187,8 +1193,8 @@ \subsubsection{Participation} \end{center} \end{figure} -\subsubsection*{The member property} -The member property has a data type of URI and has the URI for a \sbol{TopLevel} entity. A collection may have any number of members, including none. +\subsubsection*{The \sbolheading{members} property} +The \sbol{members} property has a data type of URI and has the URI for a \sbol{TopLevel} entity. A collection may have any number of members, including none. \subsubsection*{Serialization} @@ -1224,6 +1230,7 @@ \subsubsection*{Serialization} \subsection{Extending the SBOL Representation: Annotations} \label{sec:Annotations} +\label{sec:annotations} \Rtodo{Matthew/Goksel/Jake: please review.} @@ -1238,6 +1245,11 @@ \subsection{Extending the SBOL Representation: Annotations} \end{enumerate} \subsubsection{Annotating SBOL objects} +% whole set of labels for the properties defined herein +\label{sec:value} +\label{sec:Annotation} +\label{sec:AnnotationValue} +\label{sec:ListOfAnnotations} Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. The \sbol{name} property is specified by a qualified name (\external{QName}), which is composed of a namespace, a prefix, and a local name. The \sbol{value} property can be of type \external{String}, \external{URI}, or \external{ListOfAnnotations}. The \external{ListOfAnnotations} is composed of a \sbol{nestedQName}, \sbol{nestedURI}, and a list of nested \sbol{annotations}. diff --git a/overview.tex b/overview.tex index ec70e36d..d15b08ac 100644 --- a/overview.tex +++ b/overview.tex @@ -35,7 +35,8 @@ \section{Overview of SBOL} In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a structural hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. A functional layer can be defined to describe the behaviors that arise from the structural layer. \sbol{ModuleDefinition}s contain information about molecular interactions and their participating components. They can contain \sbol{FunctionalComponent}s that are instances of \sbol{ComponentDefinition}s that can be assigned functional properties, and they can also contain other modules in a functional hierarchy. The functions and interactions of these components and other modules within the \sbol{ModuleDefinition} can be quantitatively or qualitatively described using a \sbol{Model}. The \sbol{SequenceAnnotation} object defines data associated the \sbol{Sequence} and \sbol{ComponentDefinition} objects that is needed beyond basic definitions. This can refer to local annotations of the object as well as a container for URIs to external information sources. -SBOL includes different entities to describe such genetic circuits. Genetic elements such as a promoter, ribosome binding site (RBS), coding sequence (CDS), or terminator are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. \sbol{Sequence Annotation}s can be used to carry data associated with the successful running of that model on another computer, can be used to point towards sources of some or all of the circuit and the location of experimental data associated with the development of the model. +SBOL includes different entities to describe such genetic circuits. Genetic elements such as a promoter, ribosome binding site (RBS), coding sequence (CDS), or terminator are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. +\sbol{SequenceAnnotation}s can be used to carry data associated with the successful running of that model on another computer, can be used to point towards sources of some or all of the circuit and the location of experimental data associated with the development of the model. \Rtodo{Need to also explain annotation --JSB Provided some text for review describing annotation - KC} diff --git a/practices.tex b/practices.tex index 274fb00a..ef7b9b35 100644 --- a/practices.tex +++ b/practices.tex @@ -60,7 +60,7 @@ \subsection{Completeness and Validation} contains valid SBOL. When an RDF document is de-serialized into SBOL objects, the program doing so SHOULD verify that all of the property values encoded therein have the right type (e.g., that the object -pointed to by the \sbol{sequence} property of a +pointed to by the \sbol{sequences} property of a \sbol{ComponentDefinition} really is a \sbol{Sequence} object). For complete files, this can be carried out readily and entirely locally. For files that are not complete, an implementation needs to diff --git a/sbol2.tex b/sbol2.tex index a4432f1f..69fe109b 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -150,7 +150,7 @@ \Ctodo{Final pass before release must include: -Ensure that all references are defined +Ensure that all references are defined precisely once (grep 'undefined' and 'multiply' in log) Make sure all requirements words are properly upper-cased diff --git a/serialization.tex b/serialization.tex index 57247e95..ce905a3e 100644 --- a/serialization.tex +++ b/serialization.tex @@ -26,6 +26,7 @@ \section{SBOL RDF Serialization} \Rtodo{This needs to be integrated with the rest JSB: done } Every SBOL document must be a valid RDF/XML document. Accordingly, each SBOL document starts with an XML declaration that has its XML version set to ``1.0.'' As shown in the example below, this declaration is then followed by an \external{rdf:RDF} XML element that includes the namespace declarations for RDF and SBOL. SBOL namespace, which is \url{http://sbols.org/v2#}, is used to indicate which entities and properties in the SBOL document are defined by SBOL, and SHOULD NOT be used for any entities or properties not defined in this specification. +\label{xml-namespace} \Rtodo{Need to state ``This is the SBOL2 namespace'' JSB: done} From a7885a430ac912f66dfd01e1239dc83dfb4c647b Mon Sep 17 00:00:00 2001 From: jakebeal Date: Sat, 16 May 2015 10:23:16 -0500 Subject: [PATCH 130/317] minor todo cleanup --- examples_model.tex | 2 +- model.tex | 6 +++--- practices.tex | 4 ++-- sbol2.tex | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/examples_model.tex b/examples_model.tex index 03ad2f5b..8f97f22e 100644 --- a/examples_model.tex +++ b/examples_model.tex @@ -11,7 +11,7 @@ \section{Data Model Examples} With strongly repressors LacI and TetR, this results in a bi-stable system that will tend to settle into a state where precisely one of the two repressors is strongly expressed, repressing the other. Each of these repressors can have its activity disrupted by a small molecule (IPTG for LacI, aTc for TetR), which allows the system to be ``toggled'' from one state to the other by dosing it with the appropriate small molecule. -\Rtodo{Add a standard toggle switch diagram of two things repressing each other and a simple explanation for people who do not already know the toggle switch.} +\Rtodo{Add a standard toggle switch diagram of two things repressing each other and a simple explanation for people who do not already know the toggle switch. JSB: done} \begin{figure}[ht] \begin{center} diff --git a/model.tex b/model.tex index c8d9fadf..113c7941 100644 --- a/model.tex +++ b/model.tex @@ -52,7 +52,7 @@ \subsection{Data Types} \label{sec:datatypes} \Ctodo{we use String, Integer, URI, Literal (these are from some W3C or XSD or whatever thing), and the classes below} -\Rtodo{Give a forward pointer to RECOMMENDED best-practices for compliant URIs} +\Rtodo{Give a forward pointer to RECOMMENDED best-practices for compliant URIs. JSB: done} When SBOL use simple ``primitive'' data types such as strings or integers, these are defined as the following specific formal types: \begin{itemize} @@ -66,7 +66,7 @@ \subsection{Data Types} \subsection{Identified} \label{sec:Identified} -\Rtodo{Merge identified and documented, add wasDerivedFrom, and change all UML that inherits from Documented to inherit from Identified.} +\Rtodo{Merge identified and documented, add wasDerivedFrom, and change all UML that inherits from Documented to inherit from Identified. JSB: done} \Ctodo{Put a small concrete example for each toplevel, in the style of the mapsTo diagram} @@ -724,7 +724,7 @@ \subsubsection{SequenceConstraint} \end{lstlisting} -\Rtodo{In every serialization example, make sure something differs in order from the template, to more intuitively illustrate the unimportance of order --> actually no, jake shoud put bac the examples he messed with} +\Rtodo{In every serialization example, make sure something differs in order from the template, to more intuitively illustrate the unimportance of order --> actually no, jake shoud put bac the examples he messed with; JSB: done} \subsection{Model} \label{sec:Model} diff --git a/practices.tex b/practices.tex index ef7b9b35..77ca6df8 100644 --- a/practices.tex +++ b/practices.tex @@ -10,8 +10,8 @@ \subsection{Indicate Modification of Data with Version} As stated in \ref{sec:version}, it is RECOMMENDED that version numbering should follow the conventions of semantic versions (\url{http://semver.org/}), particularly as implemented by Maven (\url{http://maven.apache.org/}). This convention represents versions as sequences of numbers and qualifiers separated by the characters {\tt .} and {\tt -} and compared in lexicographical order (for example, 1 < 1.3.1 < 2.0-beta). For a full explanation, see the linked resources. -\Rtodo{try to target readers unfamiliar with RDF/XML. -bder} -\Rtodo{maybe clarify what type of versioning is this object affecting? TN} +\Rtodo{try to target readers unfamiliar with RDF/XML. -bder; JSB: done} +\Rtodo{maybe clarify what type of versioning is this object affecting? TN JSB: done} \subsection{Creation and Modification Dates} diff --git a/sbol2.tex b/sbol2.tex index 69fe109b..e7ac6085 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -146,7 +146,7 @@ \maketitlepage \maketableofcontents -\Rtodo{When editing, change the todos that you handle to \Rtodo, rather than just deleting them, so that a second person can review} +\Rtodo{When editing, change the todos that you handle to ``Rtodo'' (``R'' for ``resolved''), rather than just deleting them, so that a second person can review} \Ctodo{Final pass before release must include: From 784c88a1f173945f6c0b13dd3b26666d0c4001e7 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Sat, 16 May 2015 11:50:49 -0500 Subject: [PATCH 131/317] worked in validation --- apdx-validation.tex | 182 +++++++++++++++++++++++--------------------- model.tex | 2 +- 2 files changed, 95 insertions(+), 89 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 0e8931b3..342c5b22 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -7,36 +7,42 @@ \section{Validation Rules} \Rtodo{All please review.} -This section summarizes all the conditions that must (or in some cases, -at least \emph{should}) be true of an SBOL Version~2 document. -There are different degrees of rule strictness. Formally, the differences are expressed in the statement of a rule: either a rule states that a condition \emph{must} be true, or a rule states that it \emph{should} be true. Rules of the former kind are strict SBOL validation rules---data encoded in SBOL must conform to +This section summarizes all the conditions that MUST be or +are RECOMMENDED to be true of an SBOL Version~2 document. +There are different degrees of rule strictness. +Rules of the former kind are strict SBOL validation rules---data encoded in SBOL MUST conform to all of them in order to be considered valid. Rules of the latter kind -are consistency rules. To help highlight these differences, we use the -following three symbols next to the rule numbers: +are consistency rules that are RECCOMENDED for following best practices. To help highlight these differences, we use the +following symbols next to the rule numbers: \begin{description} \item[\hspace*{6.5pt}\vSymbol\vsp] A \vSymbolName indicates a - \emph{requirement} for SBOL conformance. If a SBOL document does not follow this rule, it does not conform to the SBOL + REQUIRED condition for SBOL conformance. If a SBOL document does not follow this rule, it does not conform to the SBOL specification. (Mnemonic intention behind the choice of symbol: ``This must be checked.'') -\item[\hspace*{6.5pt}\cSymbol\csp] A \cSymbolName indicates a - \emph{recommendation} for consistency. If a SBOL document does not - follow this rule, it is not considered strictly invalid as far as the - SBOL specification is concerned; however, it indicates that the model contains a physical or conceptual inconsistency. (Mnemonic intention behind the choice of symbol: - ``This is a cause for warning.'') +\Rtodo{Removed triangle symbol because we are not currently using it.} +% \item[\hspace*{6.5pt}\cSymbol\csp] A \cSymbolName indicates a +% \emph{recommendation} for consistency. If a SBOL document does not +% follow this rule, it is not considered strictly invalid as far as the +% SBOL specification is concerned; however, it indicates that the model contains a physical or conceptual inconsistency. (Mnemonic intention behind the choice of symbol: +% ``This is a cause for warning.'') -\item[\hspace*{6.5pt}\mSymbol\msp] A \mSymbolName indicates a strong - recommendation for best practice. This rule is not strictly +\item[\hspace*{6.5pt}\mSymbol\msp] A \mSymbolName indicates a + RECOMMENDED condition for following best practices. This rule is not strictly a matter of SBOL encoding, but the recommendation comes from logical - reasoning. As in the previous case, if a SBOL document does not follow this rule, it is not considered an invalid SBOL encoding. (Mnemonic intention behind the choice of symbol: ``You're a star if you heed this.'') + reasoning. If an SBOL document does not follow this rule, it is still a valid SBOL encoding, but may have degraded functionality in some tools. (Mnemonic intention behind the choice of symbol: ``You're a star if you heed this.'') \end{description} -The validation rules listed in the following subsections are all stated -or implied in the rest of this specification document. They are -enumerated here for convenience. +The validation rules listed in the following subsections should all be +stated or implied in the rest of this specification document. They +are enumerated here for convenience and to provide a ``master +checklist'' for SBOL compliance. In case of a conflict between this +section and other portions of the specification (though there should +be none), this section is considered authoritative for purpose of +determining SBOL document compliance. For \notice convenience and brievity, we use the shorthand ``\token{sbol:x}'' to stand for an attribute or element name \token{x} @@ -49,52 +55,52 @@ \section{Validation Rules} \subsubsection*{General rules about an SBOL document} \setcounter{sbolCtr}{10101} -\printValid{An SBOL document must declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://sbols.org/v2\#}}. (Reference: +\printValid{An SBOL document MUST declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://sbols.org/v2\#}}. (Reference: \sec{xml-namespace}.)} -\printValid{An SBOL document must declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://www.w3.org/1999/02/22-rdf-syntax-ns\#}}. (Reference: \sec{xml-namespace}.)} +\printValid{An SBOL document MUST declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://www.w3.org/1999/02/22-rdf-syntax-ns\#}}. (Reference: \sec{xml-namespace}.)} -\printValid{An SBOL document must declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://purl.org/dc/terms/}}. (Reference: \sec{xml-namespace}.)} +\printValid{An SBOL document MUST declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://purl.org/dc/terms/}}. (Reference: \sec{xml-namespace}.)} -\printModeling{An SBOL document should declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://www.w3.org/ns/prov\#}}. (Reference: \sec{xml-namespace}.)} +\printModeling{An SBOL document SHOULD declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://www.w3.org/ns/prov\#}}. (Reference: \sec{xml-namespace}.)} \subsubsection*{Rules for the \class{Identified} class} \setcounter{sbolCtr}{10201} -\printValid{The \sbol{identity} is a required property for all \sbol{Identified} objects and has a data type of URI with a syntax defined by:\\ +\printValid{The \sbol{identity} is a REQUIRED property for all \sbol{Identified} objects and has a data type of URI with a syntax defined by:\\ \uri{http://www.w3.org/1999/02/22-rdf-syntax\#about} (Reference: \sec{sec:Identified})} -\printValid{The \sbol{persistentIdentity} is an optional property for all \sbol{Identified} objects and, if provided, has a data type of URI with a syntax defined by:\\ \uri{http://www.w3.org/1999/02/22-rdf-syntax\#about} (Reference: \sec{sec:Identified})} +\printValid{The \sbol{persistentIdentity} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of URI with a syntax defined by:\\ \uri{http://www.w3.org/1999/02/22-rdf-syntax\#about} (Reference: \sec{sec:Identified})} -\printValid{The \sbol{displayId} is an optional property for all \sbol{Identified} objects and, if provided, has a data type of String that is composed only of alphanumeric or underscore characters and must not begin with a digit. (Reference: \sec{sec:Identified})} +\printValid{The \sbol{displayId} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String that is composed only of alphanumeric or underscore characters and MUST NOT begin with a digit. (Reference: \sec{sec:Identified})} -\printValid{The \sbol{version} is an optional property for all \sbol{Identified} objects and, if provided, has a data type of String that is composed only of alphanumeric characters, underscores, hyphens, and periods and must begin with a digit. (Reference: \sec{sec:Identified})} +\printValid{The \sbol{version} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String that is composed only of alphanumeric characters, underscores, hyphens, and periods and MUST begin with a digit. (Reference: \sec{sec:Identified})} -\printValid{The \sbol{annotations} field is an optional list of for all \sbol{Identified} objects and, if provided, includes references to \sbol{Annotation} objects. (Reference: \sec{sec:Identified})} +\printValid{The \sbol{annotations} field is an OPTIONAL list of for all \sbol{Identified} objects and, if provided, includes references to \sbol{Annotation} objects. (Reference: \sec{sec:Identified})} -\printModeling{The \sbol{identity} of a compliant object must either be equal to the \sbol{persistentIdentity} when no \sbol{version} is specified or equal to "\refObj{persistentIdentity}/\refObj{version}" when a \sbol{version} is provided. (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{identity} of a compliant object MUST either be equal to the \sbol{persistentIdentity} when no \sbol{version} is specified or equal to "\refObj{persistentIdentity}/\refObj{version}" when a \sbol{version} is provided. (Reference: \sec{sec:compliant})} -\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{Collection} object is required and must end with "/col/\refObj{displayId}". (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{Collection} object is REQUIRED and MUST end with "/col/\refObj{displayId}". (Reference: \sec{sec:compliant})} -\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{ModuleDefinition} object is required and must end with "/md/\refObj{displayId}". (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{ModuleDefinition} object is REQUIRED and MUST end with "/md/\refObj{displayId}". (Reference: \sec{sec:compliant})} -\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{Model} object is required and must end with\\ "/mod/\refObj{displayId}". (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{Model} object is REQUIRED and MUST end with\\ "/mod/\refObj{displayId}". (Reference: \sec{sec:compliant})} -\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{ComponentDefinition} object is required and must end with "/cd/\refObj{displayId}". (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{ComponentDefinition} object is REQUIRED and MUST end with "/cd/\refObj{displayId}". (Reference: \sec{sec:compliant})} -\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{Sequence} object is required and must end with "/seq/\refObj{displayId}". (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{Sequence} object is REQUIRED and MUST end with "/seq/\refObj{displayId}". (Reference: \sec{sec:compliant})} -\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{GenericTopLevel} object is required and must end with "/gen/\refObj{displayId}". (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{GenericTopLevel} object is REQUIRED and MUST end with "/gen/\refObj{displayId}". (Reference: \sec{sec:compliant})} -\printModeling{The \sbol{persistentIdentity} of a compliant child object is required must begin with the\\ \sbol{persistentIdentity} of its parent object and be immediately followed by "/\refObj{displayId}". (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{persistentIdentity} of a compliant child object is REQUIRED MUST begin with the\\ \sbol{persistentIdentity} of its parent object and be immediately followed by "/\refObj{displayId}". (Reference: \sec{sec:compliant})} -\printModeling{The \sbol{version} of a compliant child object is required to be equal to the \sbol{version} of its parent object. (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{version} of a compliant child object is REQUIRED to be equal to the \sbol{version} of its parent object. (Reference: \sec{sec:compliant})} -\printModeling{The \sbol{displayId} of a compliant object is required. (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{displayId} of a compliant object is REQUIRED. (Reference: \sec{sec:compliant})} -\printValid{The \sbol{name} is an optional property for all \sbol{Identified} objects and, if provided, has a data type of String. (Reference: \sec{sec:Identified})} +\printValid{The \sbol{name} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String. (Reference: \sec{sec:Identified})} -\printValid{The \sbol{description} is an optional property for all \sbol{Identified} objects and, if provided, has a data type of String. (Reference: \sec{sec:Identified})} +\printValid{The \sbol{description} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String. (Reference: \sec{sec:Identified})} \subsubsection*{Rules for the \class{TopLevel} class} \setcounter{sbolCtr}{10301} @@ -106,9 +112,9 @@ \subsubsection*{Rules for the \class{Sequence} class} \printValid{A \sbol{Sequence} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Sequence})} -\printValid{The \sbol{elements} is a required property for all \sbol{Sequence} objects and has a data type of String. Its format must be consistent with its specified \sbol{encoding}. (Reference: \sec{sec:Sequence})} +\printValid{The \sbol{elements} is a REQUIRED property for all \sbol{Sequence} objects and has a data type of String. Its format MUST be consistent with its specified \sbol{encoding}. (Reference: \sec{sec:Sequence})} -\printValid{The \sbol{encoding} is a required property for all \sbol{Sequence} objects and has a data type of URI. (Reference: \sec{sec:Sequence})} +\printValid{The \sbol{encoding} is a REQUIRED property for all \sbol{Sequence} objects and has a data type of URI. (Reference: \sec{sec:Sequence})} \printModeling{A DNA \sbol{Sequence} should use the IUPAC DNA encoding:\\ \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html}. (Reference: \sec{sec:Sequence})} @@ -123,31 +129,31 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{A \sbol{ComponentDefinition} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{types} property is a set of URIs, and it is required to include at least entry. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{types} property is a set of URIs, and it is REQUIRED to include at least entry. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{roles} property is an optional set of URIs. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{roles} property is an OPTIONAL set of URIs. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{components} property is an optional set of \sbol{Component} objects. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{components} property is an OPTIONAL set of \sbol{Component} objects. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{sequenceConstraints} property is an optional set of \sbol{SequenceConstraint} objects. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{sequenceConstraints} property is an OPTIONAL set of \sbol{SequenceConstraint} objects. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{sequenceAnnotations} property is an optional set of \sbol{SequenceAnnotation} objects. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{sequenceAnnotations} property is an OPTIONAL set of \sbol{SequenceAnnotation} objects. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{sequences} property is an optional set of URI references to \sbol{Sequence} objects. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{sequences} property is an OPTIONAL set of URI references to \sbol{Sequence} objects. (Reference: \sec{sec:ComponentDefinition})} \printModeling{Each URI in the set of \sbol{sequences} should reference a \sbol{Sequence} object. (Reference: \sec{sec:Sequence})} -\printValid{A DNA \sbol{ComponentDefinition} must include the URI\\ +\printValid{A DNA \sbol{ComponentDefinition} MUST include the URI\\ \url{http://www.biopax.org/release/biopax-level3.owl\#DnaRegion} in the set of \sbol{types}. (Reference: \sec{sec:ComponentDefinition})} -\printValid{A RNA \sbol{ComponentDefinition} must include the URI\\ +\printValid{A RNA \sbol{ComponentDefinition} MUST include the URI\\ \url{http://www.biopax.org/release/biopax-level3.owl\#RnaRegion} in the set of \sbol{types}. (Reference: \sec{sec:ComponentDefinition})} -\printValid{A protein \sbol{ComponentDefinition} must include the URI\\ +\printValid{A protein \sbol{ComponentDefinition} MUST include the URI\\ \url{http://www.biopax.org/release/biopax-level3.owl\#Protein} in the set of \sbol{types}. (Reference: \sec{sec:ComponentDefinition})} -\printValid{A small molecule \sbol{ComponentDefinition} must include the URI\\ +\printValid{A small molecule \sbol{ComponentDefinition} MUST include the URI\\ \url{http://www.biopax.org/release/biopax-level3.owl\#SmallMolecule} in the set of \sbol{types}. (Reference: \sec{sec:ComponentDefinition})} \printModeling{A least one type in the set of \sbol{types} should be a URI from the BioPAX or ChEBI ontologies. (Reference: \sec{sec:ComponentDefinition})} @@ -157,21 +163,21 @@ \subsubsection*{Rules for the \class{ComponentInstance} class} \printValid{A \sbol{ComponentInstance} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:ComponentInstance})} -\printValid{The \sbol{access} property is a required URI which must be one of the following: +\printValid{The \sbol{access} property is a REQUIRED URI which MUST be one of the following: \url{http://sbols.org/v2\#public} or \url{http://sbols.org/v2\#private}. (Reference: \sec{sec:ComponentInstance})} -\printValid{The \sbol{componentDefinition} property is a required URI reference to a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} +\printValid{The \sbol{componentDefinition} property is a REQUIRED URI reference to a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} \printModeling{The \sbol{componentDefinition} property URI should reference a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} -\printValid{The \sbol{mapsTo} property is an optional set of \sbol{MapsTo} objects. (Reference: \sec{sec:ComponentInstance})} +\printValid{The \sbol{mapsTo} property is an OPTIONAL set of \sbol{MapsTo} objects. (Reference: \sec{sec:ComponentInstance})} \printValid{A \sbol{Component} object inherits all properties of a \sbol{ComponentInstance} object. (Reference: \sec{sec:ComponentInstance})} \printValid{A \sbol{FunctionalComponent} object inherits all properties of a \sbol{ComponentInstance} object. (Reference: \sec{sec:ComponentInstance})} -\printValid{The \sbol{direction} property is a required URI for \sbol{FunctionalComponent} objects which must be one of the following: +\printValid{The \sbol{direction} property is a REQUIRED URI for \sbol{FunctionalComponent} objects which MUST be one of the following: \url{http://sbols.org/v2\#inout}, \url{http://sbols.org/v2\#in}, \url{http://sbols.org/v2\#out}, or \url{http://sbols.org/v2\#none}. (Reference: \sec{sec:FunctionalComponent})} @@ -180,16 +186,16 @@ \subsubsection*{Rules for the \class{SequenceAnnotation} class} \printValid{A \sbol{SequenceAnnotation} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:SequenceAnnotation})} -\printValid{The \sbol{locations} property is a set of \sbol{Location} objects, and it must include at least one \sbol{Location}. (Reference: \sec{sec:SequenceAnnotation})} +\printValid{The \sbol{locations} property is a set of \sbol{Location} objects, and it MUST include at least one \sbol{Location}. (Reference: \sec{sec:SequenceAnnotation})} -\printValid{The \sbol{component} property is an optional URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceAnnotation})} +\printValid{The \sbol{component} property is an OPTIONAL URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceAnnotation})} \subsubsection*{Rules for the \class{Location} class} \setcounter{sbolCtr}{10801} \printValid{A \sbol{Location} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Location})} -\printValid{The \sbol{orientation} property is an optional URI which, if specified, must be one of the following: \url{http://sbols.org/v2\#inline}, +\printValid{The \sbol{orientation} property is an OPTIONAL URI which, if specified, MUST be one of the following: \url{http://sbols.org/v2\#inline}, \url{http://sbols.org/v2\#reverseComplement}. (Reference: \sec{sec:GenericLocation})} @@ -197,41 +203,41 @@ \subsubsection*{Rules for the \class{Location} class} \printValid{A \sbol{Range} object inherits all properties of a \sbol{Location} object. (Reference: \sec{sec:Range})} -\printValid{The \sbol{start} property is required for all \sbol{Range} objects, and it must be a positive integer. (Reference: \sec{sec:Range})} +\printValid{The \sbol{start} property is REQUIRED for all \sbol{Range} objects, and it MUST be a positive integer. (Reference: \sec{sec:Range})} -\printValid{The \sbol{end} property is required for all \sbol{Range} objects, and it must be a positive integer. (Reference: \sec{sec:Range})} +\printValid{The \sbol{end} property is REQUIRED for all \sbol{Range} objects, and it MUST be a positive integer. (Reference: \sec{sec:Range})} \printValid{A \sbol{Cut} object inherits all properties of a \sbol{Location} object. (Reference: \sec{sec:Cut})} -\printValid{The \sbol{at} property is required for all \sbol{Cut} objects, and it must be a non-negative integer. (Reference: \sec{sec:Cut})} +\printValid{The \sbol{at} property is REQUIRED for all \sbol{Cut} objects, and it MUST be a non-negative integer. (Reference: \sec{sec:Cut})} \subsubsection*{Rules for the \class{SequenceConstraint} class} \setcounter{sbolCtr}{10901} \printValid{A \sbol{SequenceConstraint} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:SequenceConstraint})} -\printValid{The \sbol{restriction} property is a required URI which must be one of the following: +\printValid{The \sbol{restriction} property is a REQUIRED URI which MUST be one of the following: \url{http://sbols.org/v2\#precedes}, \url{http://sbols.org/v2\#sameOrientationAs}, or \url{http://sbols.org/v2\#oppositeOrientationAs}. (Reference: \sec{sec:SequenceConstraint})} -\printValid{The \sbol{subject} property is an required URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceConstraint})} +\printValid{The \sbol{subject} property is an REQUIRED URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceConstraint})} -\printValid{The \sbol{object} property is a required URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceConstraint})} +\printValid{The \sbol{object} property is a REQUIRED URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceConstraint})} \subsubsection*{Rules for the \class{Model} class} \setcounter{sbolCtr}{11001} \printValid{A \sbol{Model} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Model})} -\printValid{The \sbol{source} property is a required URI that MUST specify the location of the model source file.} +\printValid{The \sbol{source} property is a REQUIRED URI that MUST specify the location of the model source file.} -\printValid{The \sbol{language} property is a required URI that specifies the language in which the model is encoded.} +\printValid{The \sbol{language} property is a REQUIRED URI that specifies the language in which the model is encoded.} \printModeling{The \sbol{language} property should be a URI from the EMBRACE Data and Methods (EDAM) ontology.} -\printValid{The \sbol{framework} property is a required URI that specifies the modeling framework.} +\printValid{The \sbol{framework} property is a REQUIRED URI that specifies the modeling framework.} \printModeling{The \sbol{framework} property should be a URI from the modeling framework branch of the Systems Biology Ontology (SBO).} @@ -240,15 +246,15 @@ \subsubsection*{Rules for the \class{ModuleDefinition} class} \printValid{A \sbol{ModuleDefinition} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:ModuleDefinition})} -\printValid{The \sbol{roles} property is an optional set of URIs. (Reference: \sec{sec:ModuleDefinition})} +\printValid{The \sbol{roles} property is an OPTIONAL set of URIs. (Reference: \sec{sec:ModuleDefinition})} -\printValid{The \sbol{modules} property is an optional set of \sbol{Module} objects. (Reference: \sec{sec:ModuleDefinition})} +\printValid{The \sbol{modules} property is an OPTIONAL set of \sbol{Module} objects. (Reference: \sec{sec:ModuleDefinition})} -\printValid{The \sbol{interactions} property is an optional set of \sbol{Interaction} objects. (Reference: \sec{sec:ModuleDefinition})} +\printValid{The \sbol{interactions} property is an OPTIONAL set of \sbol{Interaction} objects. (Reference: \sec{sec:ModuleDefinition})} -\printValid{The \sbol{functionalComponents} property is an optional set of \sbol{FunctionalComponent} objects. (Reference: \sec{sec:ModuleDefinition})} +\printValid{The \sbol{functionalComponents} property is an OPTIONAL set of \sbol{FunctionalComponent} objects. (Reference: \sec{sec:ModuleDefinition})} -\printValid{The \sbol{models} property is an optional set of URIs. that reference \sbol{Model} objects. (Reference: \sec{sec:ModuleDefinition})} +\printValid{The \sbol{models} property is an OPTIONAL set of URIs. that reference \sbol{Model} objects. (Reference: \sec{sec:ModuleDefinition})} \printModeling{Each URI in the set of \sbol{models} should reference a \sbol{Model} object. (Reference: \sec{sec:ModuleDefinition})} @@ -257,49 +263,49 @@ \subsubsection*{Rules for the \class{Module} class} \printValid{A \sbol{Module} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:Module})} -\printValid{The \sbol{definition} property is a required URI reference to a \sbol{ModuleDefinition} object. (Reference: \sec{sec:Module})} +\printValid{The \sbol{definition} property is a REQUIRED URI reference to a \sbol{ModuleDefinition} object. (Reference: \sec{sec:Module})} -\printValid{The \sbol{mapsTo} property is an optional set of \sbol{MapsTo} objects. (Reference: \sec{sec:Module})} +\printValid{The \sbol{mapsTo} property is an OPTIONAL set of \sbol{MapsTo} objects. (Reference: \sec{sec:Module})} \subsubsection*{Rules for the \class{MapsTo} class} \setcounter{sbolCtr}{11301} \printValid{A \sbol{MapsTo} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{refinement} property is a required URI for \sbol{MapsTo} objects which must be one of the following: +\printValid{The \sbol{refinement} property is a REQUIRED URI for \sbol{MapsTo} objects which MUST be one of the following: \url{http://sbols.org/v2\#useremote}, \url{http://sbols.org/v2\#uselocal}, \url{http://sbols.org/v2\#verifyIdentical}, and \url{http://sbols.org/v2\#merge}. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{local} property is a required URI that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:MapsTo})} +\printValid{The \sbol{local} property is a REQUIRED URI that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{FunctionalComponent} referenced by the \sbol{local} property must have \sbol{public} access type.} +\printValid{The \sbol{FunctionalComponent} referenced by the \sbol{local} property MUST have \sbol{public} access type.} -\printValid{The \sbol{remote} property is a required URI that MUST reference a \sbol{FunctionalComponent} that is specified within the \sbol{ModuleDefinition} referred to by the \sbol{functionalComponents} property of the \sbol{Module} that contains this \sbol{MapsTo} object. (Reference: \sec{sec:MapsTo})} +\printValid{The \sbol{remote} property is a REQUIRED URI that MUST reference a \sbol{FunctionalComponent} that is specified within the \sbol{ModuleDefinition} referred to by the \sbol{functionalComponents} property of the \sbol{Module} that contains this \sbol{MapsTo} object. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{FunctionalComponent} referenced by the \sbol{remote} property must have \sbol{public} access type.} +\printValid{The \sbol{FunctionalComponent} referenced by the \sbol{remote} property MUST have \sbol{public} access type.} \subsubsection*{Rules for the \class{Interaction} class} \setcounter{sbolCtr}{11401} \printValid{A \sbol{Interaction} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:Interaction})} -\printValid{The \sbol{types} property is a set of URIs, and it is required to include at least entry. (Reference: \sec{sec:Interaction})} +\printValid{The \sbol{types} property is a set of URIs, and it is REQUIRED to include at least entry. (Reference: \sec{sec:Interaction})} \printModeling{A least one type in the set of \sbol{types} should be a URI from the occurring entity relationship branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Interaction})} -\printValid{The \sbol{participations} property is an optional set of \sbol{Participation} objects. (Reference: \sec{sec:Interaction})} +\printValid{The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects. (Reference: \sec{sec:Interaction})} \subsubsection*{Rules for the \class{Participation} class} \setcounter{sbolCtr}{11501} \printValid{A \sbol{Participation} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Participation})} -\printValid{The \sbol{participant} property is a required URI that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:Participation})} +\printValid{The \sbol{participant} property is a REQUIRED URI that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:Participation})} -\printValid{The \sbol{roles} property is an optional set of URIs. (Reference: \sec{sec:Participation})} +\printValid{The \sbol{roles} property is an OPTIONAL set of URIs. (Reference: \sec{sec:Participation})} \printModeling{A least one role in the set of \sbol{roles} should be a URI from the participant role branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Participation})} @@ -308,26 +314,26 @@ \subsubsection*{Rules for the \class{Collection} class} \printValid{A \sbol{Collection} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} -\printValid{The \sbol{members} property is an optional set of URIs. that reference \sbol{TopLevel} objects. (Reference: \sec{sec:Collection})} +\printValid{The \sbol{members} property is an OPTIONAL set of URIs. that reference \sbol{TopLevel} objects. (Reference: \sec{sec:Collection})} \printModeling{Each URI in the set of \sbol{members} should reference a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} \subsubsection*{Rules for the \class{Annotation} class} \setcounter{sbolCtr}{11701} -\printValid{The \sbol{name} property is required, and it has data type \external{QName}. (Reference: \sec{sec:Annotations})} +\printValid{The \sbol{name} property is REQUIRED, and it has data type \external{QName}. (Reference: \sec{sec:Annotations})} -\printValid{The \sbol{value} property is required, and it has data type \sbol{AnnotationValue}. (Reference: \sec{sec:Annotations})} +\printValid{The \sbol{value} property is REQUIRED, and it has data type \sbol{AnnotationValue}. (Reference: \sec{sec:Annotations})} \printValid{The \sbol{AnnotationValue} class can be of data type \external{String}, \external{URI} or \external{ListOfAnnotations}. (Reference: \sec{sec:Annotations})} -\printValid{The \sbol{nestedURI} property is required for a \sbol{ListOfAnnotations} object, and it has data type \external{URI}. (Reference: \sec{sec:Annotations})} +\printValid{The \sbol{nestedURI} property is REQUIRED for a \sbol{ListOfAnnotations} object, and it has data type \external{URI}. (Reference: \sec{sec:Annotations})} -\printValid{The \sbol{annotations} property is an optional set for a \sbol{ListOfAnnotations} object, and each member is of data type \external{Annotation}. (Reference: \sec{sec:Annotations})} +\printValid{The \sbol{annotations} property is an OPTIONAL set for a \sbol{ListOfAnnotations} object, and each member is of data type \external{Annotation}. (Reference: \sec{sec:Annotations})} \subsubsection*{Rules for the \class{GenericTopLevel} class} \setcounter{sbolCtr}{11801} \printValid{A \sbol{GenericTopLevel} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:GenericTopLevel})} -\printValid{The \sbol{rdfType} property is required, and it has data type \external{QName}. (Reference: \sec{sec:GenericTopLevel})} \ No newline at end of file +\printValid{The \sbol{rdfType} property is REQUIRED, and it has data type \external{QName}. (Reference: \sec{sec:GenericTopLevel})} \ No newline at end of file diff --git a/model.tex b/model.tex index 113c7941..ff3de4e9 100644 --- a/model.tex +++ b/model.tex @@ -113,7 +113,7 @@ \subsubsection*{The \sbolheading{displayId} property} If the \sbol{displayId} property is used, then its \external{String} value SHOULD be locally unique (global uniqueness is not required) and MUST be compliant with the type \external{http://www.w3.org/TR/xmlschema-2/\#NCName} -\Ctodo{This is the wrong syntax. It allows "-" and "." which we do not allow.} +\Ctodo{This is the wrong syntax. It allows "-" and "." which we do not allow. When resolving, make sure validation rules are in sync with the decision taken.} \subsubsection*{The \sbolheading{version} property} \label{sec:version} From 60a3f4775942d2c08ff80c587f405e30ea42750f Mon Sep 17 00:00:00 2001 From: jakebeal Date: Sat, 16 May 2015 22:48:11 -0500 Subject: [PATCH 132/317] working on serialization examples --- model.tex | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/model.tex b/model.tex index ff3de4e9..e19791ec 100644 --- a/model.tex +++ b/model.tex @@ -149,7 +149,16 @@ \subsubsection*{Serialization} properties inherited from \sbol{Identified}, where CLASS\_NAME is replaced by the name of the class: -\Ctodo{Need to fill in template and example} +\lstsetsbol +\begin{lstlisting} + + [\emph{zero or one}] ... [\emph{element}] + [\emph{zero or one}] ... [\emph{element}] + ... + +\end{lstlisting} + +\Ctodo{Need somebody who knows DublinCore to fill in rest of template} % \subsection{Documented} % \label{sec:Documented} @@ -171,8 +180,6 @@ \subsubsection*{Serialization} % properties inherited from \sbol{Documented}, where CLASS\_NAME is % replaced by the name of the class: -% \Ctodo{Need to fill in template and example} - \subsection {TopLevel} \label{sec:TopLevel} \sbol{TopLevel} is an abstract class that is extended by any \sbol{Identified} class that can be found at the top level of an SBOL file. In other words, when an object that belongs to a \sbol{TopLevel} class is serialized to a file representation, it is not nested inside any other object. Instead of nesting, composite \sbol{TopLevel} objects refer to subordinate \sbol{TopLevel} objects by their URIs. The \sbol{TopLevel} classes defined by this specification are \sbol{Sequence}, \sbol{ComponentDefinition}, \sbol{Model}, \sbol{ModuleDefinition}, \sbol{Collection}, and \sbol{GenericTopLevel} (\ref{uml:toplevel}). @@ -345,26 +352,27 @@ \subsubsection*{Serialization} % The parent classes of the \sbol{ComponentDefinition} class are \sbol{TopLevel} and, transitively, \sbol{Identified}. As a result, inherited properties are serialized as explained for these parent classes. The \sbol{sequences}, \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations} properties of a \sbol{ComponentDefinition} include \external{URI}s that identify objects belonging to the appropriate SBOL classes, while the \sbol{types} and \sbol{roles} properties include URIs that identify ontology terms. As shown in the example below, each of these URIs is serialized as an \external{rdf:resource} as part of an implicit collection of SBOL properties with singular rather then plural names. -\Ctodo{The name (title) and description properties should be moved from this example to one for Identified. Identified is an abstract class that shouldn't be serialized, but perhaps we could use a non-abstract class (probably ComponentDefinition) to provide an example of displayId, version, name, description, etc. - Nic} +\Rtodo{The name (title) and description properties should be moved from this example to one for Identified. Identified is an abstract class that shouldn't be serialized, but perhaps we could use a non-abstract class (probably ComponentDefinition) to provide an example of displayId, version, name, description, etc. - Nic; JSB: moved forward} \lstsetsbol \begin{lstlisting} ... - [\emph{zero or one}] ... [\emph{element}] - [\emph{zero or one}] ... [\emph{element}] [\emph{zero or more}] [\emph{element}] [\emph{one or more}] [\emph{elements}] - [\emph{one or more}] [\emph{elements}] - [\emph{zero or more}] + [\emph{zero or more}] [\emph{elements}] + [\emph{zero or more}] ... - [\emph{elements}] + [\emph{elements}] [\emph{zero or more}] ... [\emph{elements}] - + [\emph{zero or more}] + ... + [\emph{elements}] + \end{lstlisting} -\Ctodo{We need to have an explanation of how to interpret these, and also have a pointer to it from each example.} +\Rtodo{We need to have an explanation of how to interpret these, and also have a pointer to it from each example. JSB: I think the serialization section is enough, actually, and that these are relatively intuitive} The example below shows the serialization of a simple \sbol{ComponentDefinition} for a promoter. The BioPAX term \external{DnaRegion} and the ChEBI term \external{CHEBI:4705} (\external{double-stranded DNA}) are used to indicate that the type of biological entity represented by this \sbol{ComponentDefinition} is DNA. Its role is specified using the SO terms \external{SO:0000167} (\external{promoter}) and the more specific \external{SO:0000613} (\external{bacterial\_RNApol\_promoter}). @@ -864,8 +872,6 @@ \subsubsection*{Serialization} \begin{lstlisting} ... - [\emph{zero or one}] ... [\emph{element}] - [\emph{zero or one}] ... [\emph{element}] [\emph{zero or more}] [\emph{elements}] [\emph{zero or more}] [\emph{elements}] [\emph{zero or more}] From 127292d7cc8abff8ac6984de9fb624d0d27425d5 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Sun, 17 May 2015 14:28:42 -0500 Subject: [PATCH 133/317] reviewed validation rules --- apdx-validation.tex | 38 ++++++++++++++++++++------------------ model.tex | 1 + 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 342c5b22..6fb3ad0f 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -5,7 +5,7 @@ \section{Validation Rules} \label{validation} -\Rtodo{All please review.} +\Rtodo{All please review. JSB: reviewed, some small changes made. Needs a second reviewer} This section summarizes all the conditions that MUST be or are RECOMMENDED to be true of an SBOL Version~2 document. @@ -78,7 +78,7 @@ \subsubsection*{Rules for the \class{Identified} class} \printValid{The \sbol{annotations} field is an OPTIONAL list of for all \sbol{Identified} objects and, if provided, includes references to \sbol{Annotation} objects. (Reference: \sec{sec:Identified})} -\printModeling{The \sbol{identity} of a compliant object MUST either be equal to the \sbol{persistentIdentity} when no \sbol{version} is specified or equal to "\refObj{persistentIdentity}/\refObj{version}" when a \sbol{version} is provided. (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{identity} of a compliant object SHOULD either be equal to the \sbol{persistentIdentity} when no \sbol{version} is specified or equal to "\refObj{persistentIdentity}/\refObj{version}" when a \sbol{version} is provided. (Reference: \sec{sec:compliant})} \printModeling{The \sbol{persistentIdentity} of a compliant \sbol{Collection} object is REQUIRED and MUST end with "/col/\refObj{displayId}". (Reference: \sec{sec:compliant})} @@ -98,6 +98,8 @@ \subsubsection*{Rules for the \class{Identified} class} \printModeling{The \sbol{displayId} of a compliant object is REQUIRED. (Reference: \sec{sec:compliant})} +\printValid{The \sbol{wasDerivedFrom} property is OPTIONAL for all \sbol{Identified} objects and, if provided, data type of URI. (Reference: \sec{sec:Identified})} + \printValid{The \sbol{name} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String. (Reference: \sec{sec:Identified})} \printValid{The \sbol{description} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String. (Reference: \sec{sec:Identified})} @@ -116,20 +118,20 @@ \subsubsection*{Rules for the \class{Sequence} class} \printValid{The \sbol{encoding} is a REQUIRED property for all \sbol{Sequence} objects and has a data type of URI. (Reference: \sec{sec:Sequence})} -\printModeling{A DNA \sbol{Sequence} should use the IUPAC DNA encoding:\\ \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html}. (Reference: \sec{sec:Sequence})} +\printModeling{A DNA \sbol{Sequence} SHOULD use the IUPAC DNA encoding:\\ \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html}. (Reference: \sec{sec:Sequence})} -\printModeling{A RNA \sbol{Sequence} should use the IUPAC RNA encoding:\\ \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html}. (Reference: \sec{sec:Sequence})} +\printModeling{A RNA \sbol{Sequence} SHOULD use the IUPAC RNA encoding:\\ \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html}. (Reference: \sec{sec:Sequence})} -\printModeling{A protein \sbol{Sequence} should use the IUPAC Protein encoding:\\ \url{http://www.chem.qmul.ac.uk/iupac/AminoAcid/}. (Reference: \sec{sec:Sequence})} +\printModeling{A protein \sbol{Sequence} SHOULD use the IUPAC Protein encoding:\\ \url{http://www.chem.qmul.ac.uk/iupac/AminoAcid/}. (Reference: \sec{sec:Sequence})} -\printModeling{A small molecule \sbol{Sequence} should use the SMILES encoding:\\ \url{http://www.opensmiles.org/opensmiles.html}. (Reference: \sec{sec:Sequence})} +\printModeling{A small molecule \sbol{Sequence} SHOULD use the SMILES encoding:\\ \url{http://www.opensmiles.org/opensmiles.html}. (Reference: \sec{sec:Sequence})} \subsubsection*{Rules for the \class{ComponentDefinition} class} \setcounter{sbolCtr}{10501} \printValid{A \sbol{ComponentDefinition} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{types} property is a set of URIs, and it is REQUIRED to include at least entry. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{types} property is a set of URIs, and it is REQUIRED to include at least one entry. (Reference: \sec{sec:ComponentDefinition})} \printValid{The \sbol{roles} property is an OPTIONAL set of URIs. (Reference: \sec{sec:ComponentDefinition})} @@ -141,7 +143,7 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{The \sbol{sequences} property is an OPTIONAL set of URI references to \sbol{Sequence} objects. (Reference: \sec{sec:ComponentDefinition})} -\printModeling{Each URI in the set of \sbol{sequences} should reference a \sbol{Sequence} object. (Reference: \sec{sec:Sequence})} +\printModeling{Each URI in the set of \sbol{sequences} SHOULD reference an equivalent \sbol{Sequence} object. (Reference: \sec{sec:Sequence})} \printValid{A DNA \sbol{ComponentDefinition} MUST include the URI\\ \url{http://www.biopax.org/release/biopax-level3.owl\#DnaRegion} @@ -156,7 +158,7 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{A small molecule \sbol{ComponentDefinition} MUST include the URI\\ \url{http://www.biopax.org/release/biopax-level3.owl\#SmallMolecule} in the set of \sbol{types}. (Reference: \sec{sec:ComponentDefinition})} -\printModeling{A least one type in the set of \sbol{types} should be a URI from the BioPAX or ChEBI ontologies. (Reference: \sec{sec:ComponentDefinition})} +\printModeling{A least one type in the set of \sbol{types} SHOULD be a URI from the BioPAX or ChEBI ontologies. (Reference: \sec{sec:ComponentDefinition})} \subsubsection*{Rules for the \class{ComponentInstance} class} \setcounter{sbolCtr}{10601} @@ -169,7 +171,7 @@ \subsubsection*{Rules for the \class{ComponentInstance} class} \printValid{The \sbol{componentDefinition} property is a REQUIRED URI reference to a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} -\printModeling{The \sbol{componentDefinition} property URI should reference a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} +\printModeling{The \sbol{componentDefinition} property URI SHOULD reference a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} \printValid{The \sbol{mapsTo} property is an OPTIONAL set of \sbol{MapsTo} objects. (Reference: \sec{sec:ComponentInstance})} @@ -235,11 +237,11 @@ \subsubsection*{Rules for the \class{Model} class} \printValid{The \sbol{language} property is a REQUIRED URI that specifies the language in which the model is encoded.} -\printModeling{The \sbol{language} property should be a URI from the EMBRACE Data and Methods (EDAM) ontology.} +\printModeling{The \sbol{language} property SHOULD be a URI from the EMBRACE Data and Methods (EDAM) ontology.} \printValid{The \sbol{framework} property is a REQUIRED URI that specifies the modeling framework.} -\printModeling{The \sbol{framework} property should be a URI from the modeling framework branch of the Systems Biology Ontology (SBO).} +\printModeling{The \sbol{framework} property SHOULD be a URI from the modeling framework branch of the Systems Biology Ontology (SBO).} \subsubsection*{Rules for the \class{ModuleDefinition} class} \setcounter{sbolCtr}{11101} @@ -256,7 +258,7 @@ \subsubsection*{Rules for the \class{ModuleDefinition} class} \printValid{The \sbol{models} property is an OPTIONAL set of URIs. that reference \sbol{Model} objects. (Reference: \sec{sec:ModuleDefinition})} -\printModeling{Each URI in the set of \sbol{models} should reference a \sbol{Model} object. (Reference: \sec{sec:ModuleDefinition})} +\printModeling{Each URI in the set of \sbol{models} SHOULD reference a \sbol{Model} object. (Reference: \sec{sec:ModuleDefinition})} \subsubsection*{Rules for the \class{Module} class} \setcounter{sbolCtr}{11201} @@ -294,7 +296,7 @@ \subsubsection*{Rules for the \class{Interaction} class} \printValid{The \sbol{types} property is a set of URIs, and it is REQUIRED to include at least entry. (Reference: \sec{sec:Interaction})} -\printModeling{A least one type in the set of \sbol{types} should be a URI from the occurring entity relationship branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Interaction})} +\printModeling{A least one type in the set of \sbol{types} SHOULD be a URI from the occurring entity relationship branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Interaction})} \printValid{The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects. (Reference: \sec{sec:Interaction})} @@ -307,7 +309,7 @@ \subsubsection*{Rules for the \class{Participation} class} \printValid{The \sbol{roles} property is an OPTIONAL set of URIs. (Reference: \sec{sec:Participation})} -\printModeling{A least one role in the set of \sbol{roles} should be a URI from the participant role branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Participation})} +\printModeling{A least one role in the set of \sbol{roles} SHOULD be a URI from the participant role branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Participation})} \subsubsection*{Rules for the \class{Collection} class} \setcounter{sbolCtr}{11601} @@ -316,7 +318,7 @@ \subsubsection*{Rules for the \class{Collection} class} \printValid{The \sbol{members} property is an OPTIONAL set of URIs. that reference \sbol{TopLevel} objects. (Reference: \sec{sec:Collection})} -\printModeling{Each URI in the set of \sbol{members} should reference a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} +\printModeling{Each URI in the set of \sbol{members} SHOULD reference a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} \subsubsection*{Rules for the \class{Annotation} class} \setcounter{sbolCtr}{11701} @@ -325,11 +327,11 @@ \subsubsection*{Rules for the \class{Annotation} class} \printValid{The \sbol{value} property is REQUIRED, and it has data type \sbol{AnnotationValue}. (Reference: \sec{sec:Annotations})} -\printValid{The \sbol{AnnotationValue} class can be of data type \external{String}, \external{URI} or \external{ListOfAnnotations}. (Reference: \sec{sec:Annotations})} +\printValid{The \sbol{AnnotationValue} class MUST be of data type \external{String}, \external{URI} or \sbol{ListOfAnnotations}. (Reference: \sec{sec:Annotations})} \printValid{The \sbol{nestedURI} property is REQUIRED for a \sbol{ListOfAnnotations} object, and it has data type \external{URI}. (Reference: \sec{sec:Annotations})} -\printValid{The \sbol{annotations} property is an OPTIONAL set for a \sbol{ListOfAnnotations} object, and each member is of data type \external{Annotation}. (Reference: \sec{sec:Annotations})} +\printValid{The \sbol{annotations} property is an OPTIONAL set for a \sbol{ListOfAnnotations} object, and each member is of data type \sbol{Annotation}. (Reference: \sec{sec:Annotations})} \subsubsection*{Rules for the \class{GenericTopLevel} class} \setcounter{sbolCtr}{11801} diff --git a/model.tex b/model.tex index e19791ec..0463e8ab 100644 --- a/model.tex +++ b/model.tex @@ -400,6 +400,7 @@ \subsubsection{ComponentInstance} \label{uml:component} \end{center} \end{figure} +\Ctodo{Nic, please change definition to componentDefinition in the diagram to match the text.} When a \sbol{ComponentDefinition} is used as an element of a larger design, each separate usage is represented by a \sbol{ComponentInstance} object. The \sbol{ComponentInstance} class is abstract, so every usage must belong to one of its two subclasses: From c96734a12c344caae29cff06dc4b44247f70d120 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Sun, 17 May 2015 14:51:21 -0500 Subject: [PATCH 134/317] first piece of mapsTo --- model.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/model.tex b/model.tex index 0463e8ab..379bd5f0 100644 --- a/model.tex +++ b/model.tex @@ -418,10 +418,10 @@ \subsubsection{ComponentInstance} \paragraph{The \sbolheading{mapsTo} property} \label{sec:mapsTo} -\Ctodo{Need to make sure all MapsTo statements are correct} +\Rtodo{Need to make sure all MapsTo statements are correct; JSB: done} The \sbol{mapsTo} property links \sbol{Component} objects (both Components and FunctionalComponents) together within a larger design, indicating that they refer to the same entity. -The third data field, ``mappings'', is a set of MapsTo objects that link between other ComponentInstance objects at the same level of the design hierarchy as well as other ComponentInstance objects that are lower in the design hierarchy, thereby composing these objects with greater specificity (see first module example). +The third data field, \sbol{mapsTo}, is a set of \sbol{MapsTo} objects. These are used as described below in the section on \sbol{MapsTo} below, to identify definition relationships between other \sbol{ComponentInstance} objects. \paragraph{The \sbolheading{access} property} \label{sec:access} From e1149765cf4d277352352d62853f1ed2ca1cdf9d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 18 May 2015 01:33:39 +0000 Subject: [PATCH 135/317] Update on Overleaf. --- apdx-validation.tex | 12 ++++++++---- model.tex | 38 +++++++++++++++++++++----------------- overview.tex | 2 +- purpose.tex | 2 +- sbol2.tex | 2 +- serialization.tex | 3 +-- 6 files changed, 33 insertions(+), 26 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 6fb3ad0f..8a6ffec8 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -281,13 +281,17 @@ \subsubsection*{Rules for the \class{MapsTo} class} \url{http://sbols.org/v2\#merge}. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{local} property is a REQUIRED URI that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:MapsTo})} +\printValid{When a \sbol{MapsTo} object is specified by a \sbol{ComponentInstance} object, the \sbol{local} property is a REQUIRED URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{FunctionalComponent} referenced by the \sbol{local} property MUST have \sbol{public} access type.} +\printValid{When a \sbol{MapsTo} object is specified by a \sbol{ComponentInstance} object, the \sbol{remote} property is a REQUIRED URI that MUST reference a \sbol{Component} that is specified within the \sbol{ComponentDefinition} referred to by the \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{remote} property is a REQUIRED URI that MUST reference a \sbol{FunctionalComponent} that is specified within the \sbol{ModuleDefinition} referred to by the \sbol{functionalComponents} property of the \sbol{Module} that contains this \sbol{MapsTo} object. (Reference: \sec{sec:MapsTo})} +\printValid{When a \sbol{MapsTo} object is specified by a \sbol{Module} object, the \sbol{local} property is a REQUIRED URI that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{FunctionalComponent} referenced by the \sbol{remote} property MUST have \sbol{public} access type.} +\printValid{When a \sbol{MapsTo} object is specified by a \sbol{Module} object, the \sbol{remote} property is a REQUIRED URI that MUST reference a \sbol{FunctionalComponent} that is specified within the \sbol{ModuleDefinition} referred to by the \sbol{Module}. (Reference: \sec{sec:MapsTo})} + +\printValid{The \sbol{ComponentInstance} referenced by the \sbol{local} property MUST have \sbol{public} access type.} + +\printValid{The \sbol{ComponentInstance} referenced by the \sbol{remote} property MUST have \sbol{public} access type.} \subsubsection*{Rules for the \class{Interaction} class} \setcounter{sbolCtr}{11401} diff --git a/model.tex b/model.tex index 379bd5f0..43cf6194 100644 --- a/model.tex +++ b/model.tex @@ -12,9 +12,11 @@ \subsection{Understanding the UML Diagrams} The types of biological design data modeled by SBOL are commonly referred to as {\em classes}, especially when discussing the details of software implementation. Each SBOL class can be instantiated by many SBOL objects. These objects may contain data that differ in content, but they MUST agree on the type and form of their data as dictated by their common class. Classes are represented in UML diagrams as rectangles labeled at the top with class names. -Classes may be connected to other classes by association properties, which are represented in UML diagrams as arrows. These arrows are labeled with data cardinalities in order to indicate how many values a given association property may possess (see below). The remaining (non-association) properties of a class are listed below its name. Each one of these properties is labeled with its data type and cardinality. +Classes may be connected to other classes by association properties, which are represented in UML diagrams as arrows. These arrows are labeled with data cardinalities in order to indicate how many values a given association property may possess (see below). The remaining (non-association) properties of a class are listed below its name. Each of the latter properties is labeled with its data type and cardinality. -In the case of an association property, the class from which the arrow originates is the owner of the association property, while the class to which the arrow points is the value of the association property. A diamond at the origin of the arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, in which the owner of the association property exists independently of its value. By contrast, filled diamonds indicate composite aggregation, also known as a part-whole relationship, in which the value of the association property MUST NOT exist independently of its owner. In addition, in the SBOL data model, it is REQUIRED that the value of each composite aggregation property is unique (that is, not the value for more than one such property). +In the case of an association property, the class from which the arrow originates is the owner of the association property. A diamond at the origin of the arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, in which the owner of the association property exists independently of its value. In the SBOL data model, the value of an association property MUST be a URI or collection of URIs that refer to one or more SBOL objects belonging to the class at the tip of the arrow. + +By contrast, filled diamonds indicate composite aggregation, also known as a part-whole relationship, in which the value of the association property MUST NOT exist independently of its owner. In addition, in the SBOL data model, it is REQUIRED that the value of each composite aggregation property is a unique SBOL object (that is, not the value for more than one such property). %For example, it will later be shown how objects of the \sbol{SequenceAnnotation} class must associated with an object of the \sbol{ComponentDefinition} class (and only that object). All SBOL properties are labeled with one of several restrictions on data cardinality. These are: @@ -66,20 +68,17 @@ \subsection{Data Types} \subsection{Identified} \label{sec:Identified} -\Rtodo{Merge identified and documented, add wasDerivedFrom, and change all UML that inherits from Documented to inherit from Identified. JSB: done} - \Ctodo{Put a small concrete example for each toplevel, in the style of the mapsTo diagram} All SBOL-defined classes are directly or indirectly derived from the \sbol{Identified} abstract class. This inheritance means that all SBOL objects are identified using \external{URI}s that uniquely refer to these objects within an SBOL document or at locations on the World Wide Web. -As shown in \ref{uml:identified}, the \sbol{Identified} class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, \sbol{version}, and \sbol{annotations}. The latter property is described separately in \ref{sec:Annotations}. +As shown in \ref{uml:identified}, the \sbol{Identified} class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, \sbol{version}, \sbol{wasDerivedFrom}, \sbol{name}, \sbol{description}, and \sbol{annotations}. The latter property is described separately in \ref{sec:Annotations}. -When an SBOL object is referred to using a URI, that URI may be either the value of an \sbol{identity} property or to the value of a \sbol{persistentIdentity} property. +When an SBOL object is referred to using a URI, that URI may either be the value of an \sbol{identity} property or to the value of a \sbol{persistentIdentity} property. If the URI is equal to the value of an \sbol{identity} property, then it is guaranteed to be unique, and refers to precisely to one SBOL object with that value. -If the URI is equal to the value of a \sbol{persistentIdentity} property, then multiple objects that are different ``versions'' of one another may hold that value (as described below); these SHOULD then be compared to one another to determine which is the ``best'' (usually most recent) single object to resolve the reference to. -Throughout this document, when we use URI to refer to an SBOL object, it means that it may be either of these cases. -\Rtodo{Need somebody to sanity check what I've written here -JSB} -\Rtodo{Need to document that you can reference a persistentIdentity or an identity when you reference a version. Everywhere we say ``URI'' for an SBOL object, it means one of these two properties. JSB: done} +If the URI is equal to the value of a \sbol{persistentIdentity} property, then it may refer to multiple SBOL objects that are different ``versions'' of each other. These objects SHOULD be compared to one another to determine which single object the URI should be resolved to (usually the most recent version - see \ref{sec:version}). +Throughout this document, when a URI is used to refer to an SBOL object, it could fall into either of these cases. + \Rtodo{Remove ``identity'' for names of URIs everywhere. JSB: done} @@ -105,7 +104,7 @@ \subsubsection*{The \sbolheading{persistentIdentity} property} \label{sec:persistentIdentity} The \sbol{persistentIdentity} property is OPTIONAL and has a data type of \external{URI}. This \external{URI} serves to uniquely refer to a set of SBOL objects that are different versions of each other. -An \sbol{Identified} object MUST be referred to in association properties using its \sbol{identity} \external{URI} or its \sbol{persistentIdentity} \external{URI}. In the latter case, this reference only holds if the SBOL object has the latest \sbol{version} property of all objects with the same \sbol{persistentIdentity}. +An \sbol{Identified} object MUST be referred to using either its \sbol{identity} \external{URI} or its \sbol{persistentIdentity} \external{URI}. \subsubsection*{The \sbolheading{displayId} property} \label{sec:displayId} @@ -121,25 +120,30 @@ \subsubsection*{The \sbolheading{version} property} The \sbol{version} property is OPTIONAL and has a data type of \external{String}. This property can be used to compare two SBOL objects with the same \sbol{persistentIdentity}. If the \sbol{version} property is used, then it is RECOMMENDED that version numbering should follow the conventions of semantic versioning (\url{http://semver.org/}), particularly as implemented by Maven (\url{http://maven.apache.org/}). -This convention represents versions as sequences of numbers and qualifiers separated by the characters {\tt .} and {\tt -} and compared in lexicographical order (for example, 1 < 1.3.1 < 2.0-beta). +This convention represents versions as sequences of numbers and qualifiers that are separated by the characters {\tt .} and {\tt -} and are compared in lexicographical order (for example, 1 < 1.3.1 < 2.0-beta). For a full explanation, see the linked resources. +\subsubsection*{The \sbolheading{wasDerivedFrom} property} +\label{sec:wasDerivedFrom} + +The \sbol{wasDerivedFrom} property is OPTIONAL and has a data type of \external{URI}. An SBOL object with this property refers to another SBOL object or non-SBOL resource from which this object was derived. + +If the \sbol{wasDerivedFrom} URI of an SBOL object $B$ refers to another SBOL object $A$ and either $B$ or $A$ has a \sbol{persistentIdentity}, then both $B$ and $A$ must have the same \sbol{persistentIdentity} \external{URI}. In addition, if both $B$ and $A$ have a \sbol{version}, then the \sbol{version} \external{String} of $A$ MUST come before that of $B$. Finally, an SBOL object MUST NOT refer to itself via its own \sbol{wasDerivedFrom} property or form a circular chain of references via its \sbol{wasDerivedFrom} property and those of other SBOL objects (for example, the reference chain ``$B$ was derived from $A$ and $A$ was derived from $B$'' is circular). + \subsubsection*{The \sbolheading{name} property} \label{sec:name} -\Rtodo{Eliminate references to Documented and/or replace with Identified. JSB: Done} - \Ctodo{Need to require use of DublinCore names and show examples of them: non-stanard mappings per Matt: Title vs. Name, descripton is dcterms:description} The \sbol{name} property is OPTIONAL and has a data type of \external{String}. This property is intended to be displayed to a human when visualizing an \sbol{Identified} object. -If an \sbol{Identified} object lacks a name, then software tools SHOULD instead display the object's \sbol{displayId} or URI. +If an \sbol{Identified} object lacks a name, then software tools SHOULD instead display the object's \sbol{displayId} or \sbol{identity}. It is RECOMMENDED that software tools give users the ability to switch perspectives between \sbol{name} properties that are human-readable and \sbol{displayId} properties that are less human-readable, but are more likely to be unique. \subsubsection*{The \sbolheading{description} property} \label{sec:description} -The \sbol{description} property is OPTIONAL and has a data type of \external{String}. This property is intended to contain a more thorough description of an \sbol{Identified} object. +The \sbol{description} property is OPTIONAL and has a data type of \external{String}. This property is intended to contain a more thorough text description of an \sbol{Identified} object. \subsubsection*{Serialization} @@ -182,7 +186,7 @@ \subsubsection*{Serialization} \subsection {TopLevel} \label{sec:TopLevel} -\sbol{TopLevel} is an abstract class that is extended by any \sbol{Identified} class that can be found at the top level of an SBOL file. In other words, when an object that belongs to a \sbol{TopLevel} class is serialized to a file representation, it is not nested inside any other object. Instead of nesting, composite \sbol{TopLevel} objects refer to subordinate \sbol{TopLevel} objects by their URIs. The \sbol{TopLevel} classes defined by this specification are \sbol{Sequence}, \sbol{ComponentDefinition}, \sbol{Model}, \sbol{ModuleDefinition}, \sbol{Collection}, and \sbol{GenericTopLevel} (\ref{uml:toplevel}). +\sbol{TopLevel} is an abstract class that is extended by any \sbol{Identified} class that can be found at the top level of an SBOL document or file. In other words, \sbol{TopLevel} objects are not nested inside any other object via a composite aggregation or black diamond arrow association property. Instead of nesting, composite \sbol{TopLevel} objects refer to subordinate \sbol{TopLevel} objects by their URIs using shared aggregation or white diamond arrow association properties. The \sbol{TopLevel} classes defined in this specification are \sbol{Sequence}, \sbol{ComponentDefinition}, \sbol{Model}, \sbol{ModuleDefinition}, \sbol{Collection}, and \sbol{GenericTopLevel} (\ref{uml:toplevel}). \begin{figure}[ht] \begin{center} diff --git a/overview.tex b/overview.tex index d15b08ac..267c3b8b 100644 --- a/overview.tex +++ b/overview.tex @@ -90,4 +90,4 @@ \section{Overview of SBOL} % SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. -% SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. +% SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. \ No newline at end of file diff --git a/purpose.tex b/purpose.tex index bb600178..f74a3724 100644 --- a/purpose.tex +++ b/purpose.tex @@ -7,7 +7,7 @@ \section{Purpose} % Below is my revision. Any thoughts? - Nic -Synthetic biology builds upon the techniques and successes of genetics, molecular biology and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. A common factor within these challenges is the exchange of information about designed systems between laboraties. As part of the design of synthetic systems Synthetic Biologists need to exchange information about multipe types of molecules and their planned roles within the designed and natural system they are working to change. Often the functional role may be associated with another type of molecule entirely, such as a small chemical, a DNA, an RNA or a Protein molecule. An example is an DNA sequence that is transcribed into a messenger RNA that contains an encoded microRNA binding site, and the messenger RNA in turn being translated into a protein molecule which is a transcription factor binding protein. Functionally the representation of the products of the designed DNA sequence need to describe the role of microRNA binding to the messenger RNA leading to possible degradation, the functional consequence of the transcription factor protein being absent leading to repression of expression of another gene and the kinetic information associated with these different elements so they can be mathematically modelled. The DNA sequence itself is thus one or two steps removed from the functional role of the designed device or circuit. +Synthetic biology builds upon the techniques and successes of genetics, molecular biology and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. A common factor of these challenges is the exchange of information about designed systems between laboratories. When designing a synthetic system, synthetic biologists need to exchange information about multipe types of molecules and their planned roles in the design. Often the functional role may be associated with another type of molecule entirely, such as a small chemical, a DNA, an RNA or a Protein molecule. An example is an DNA sequence that is transcribed into a messenger RNA that contains an encoded microRNA binding site, and the messenger RNA in turn being translated into a protein molecule which is a transcription factor binding protein. Functionally the representation of the products of the designed DNA sequence need to describe the role of microRNA binding to the messenger RNA leading to possible degradation, the functional consequence of the transcription factor protein being absent leading to repression of expression of another gene and the kinetic information associated with these different elements so they can be mathematically modelled. The DNA sequence itself is thus one or two steps removed from the functional role of the designed device or circuit. SBOL has been designed as a standard to support synthetic biology, filling a need not satisfied by other pre-existing standards. Previous file formats such as Genbank and SwissProt represent sequence information based upon annotation of sequence features - they do not represent the functional roles or consequences of these sequences. Systems Biology Markup Language (SBML) represents reactions, pathways and models but does not typically represent the associated sequences. Kinetic information may be present in SBML~\cite{SBML} or may be represented by mathematical equations in other systems such as the COBRA Toolbox~\cite{COBRA}. Synthetic Biology needs a structured standard with defined ways on how to represent relevant molecues and their functional roles within the designed system, standarized rules on how such information is encoded in the file and the means to enable exchange of such data between participating laboratories as part of publications. diff --git a/sbol2.tex b/sbol2.tex index e7ac6085..cf490d6b 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -56,7 +56,7 @@ \definecolor{gray}{rgb}{0.5,0.5,0.5} \definecolor{light-gray}{gray}{0.97} \lstdefinelanguage{sbol} - {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:MapsTo, sbol:sequence,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation,sbol:component,sbol:location, sbol:sequenceAnnotation, sbol:Range, sbol:start, sbol:end, sbol:orientation,sbol:SequenceConstraint, sbol:restriction, sbol:subject, sbol:object,sbol:Sequence, sbol:elements, sbol:encoding,sbol:Model, sbol:source, sbol:language, sbol:framework,sbol:FunctionalComponent, sbol:Module, sbol:Interaction, sbol:interaction, sbol:subModule, sbol:model,sbol:Model,sbol:definition, sbol:access, sbol:direction, sbol:mapping, sbol:refinement, sbol:local, sbol:remote, sbol:participation, sbol:Participation, sbol:participant}, + {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:MapsTo, sbol:sequence,sbol:wasDerivedFrom,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation,sbol:component,sbol:location, sbol:sequenceAnnotation, sbol:Range, sbol:start, sbol:end, sbol:orientation,sbol:SequenceConstraint, sbol:restriction, sbol:subject, sbol:object,sbol:Sequence, sbol:elements, sbol:encoding,sbol:Model, sbol:source, sbol:language, sbol:framework,sbol:FunctionalComponent, sbol:Module, sbol:Interaction, sbol:interaction, sbol:subModule, sbol:model,sbol:Model,sbol:definition, sbol:access, sbol:direction, sbol:mapping, sbol:refinement, sbol:local, sbol:remote, sbol:participation, sbol:Participation, sbol:participant}, basicstyle=\fontsize{7}{9}\selectfont\ttfamily, backgroundcolor=\color{light-gray}, keywordstyle=\color{blue}, diff --git a/serialization.tex b/serialization.tex index ce905a3e..00abd784 100644 --- a/serialization.tex +++ b/serialization.tex @@ -58,5 +58,4 @@ \section{SBOL RDF Serialization} For example, a \sbol{ModuleDefinition} might use an annotation to refer to the data sheet \sbol{GenericTopLevel} that documents its properties. \Rtodo{Perhaps add or reference examples of different annotations. - cm; JSB: done} -By adopting this paradigm of RDF/XML serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. Since exactly the same scheme is used to serialize annotations as is used to serialize specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of properties and associations. Those properties not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entities in a SBOL file, we enable future specifications or extensions to ratify the structure of other top-level objects. These entities would then become part of the explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely read in, manipulate, and write out the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. Finally, the very regimented control of nesting versus referencing also allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL RDF/XML files safely. - +By adopting this paradigm of RDF/XML serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. Since exactly the same scheme is used to serialize annotations as is used to serialize specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of properties and associations. Those properties not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entities in a SBOL file, we enable future specifications or extensions to ratify the structure of other top-level objects. These entities would then become part of the explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely read in, manipulate, and write out the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. Finally, the very regimented control of nesting versus referencing also allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL RDF/XML files safely. \ No newline at end of file From 21261f27cbb079de6a1f27534e2af76805abb3ca Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 18 May 2015 18:29:29 +0000 Subject: [PATCH 136/317] Update on Overleaf. --- model.tex | 50 ++++++++++++++++++++++---------------------------- 1 file changed, 22 insertions(+), 28 deletions(-) diff --git a/model.tex b/model.tex index 43cf6194..a420a5ca 100644 --- a/model.tex +++ b/model.tex @@ -2,9 +2,6 @@ \section{SBOL Data Model}\label{sec:model} % ----------------------------------------------------------------------------- -\Rtodo{All captions need full explanations. JSB: done} -\Rtodo{Make sure all captions are sane and similar -JSB; JSB: done} - In this section, we describe the types of biological design data that can belong to an SBOL document and the relationships between these data types. The SBOL data model is specified using Unified Modeling Language (UML) 2.0 diagrams \href{http://www.omg.org/spec/UML/2.0/}{(OMG 2005)}. Subsections \ref{sec:umldiagrams}, \ref{sec:nameconventions}, \ref{sec:datatypes} review the basics of UML diagrams and explain the naming conventions and generic data types used in this specification. The remaining sections then describe the SBOL data model in detail. Complete SBOL examples and best practices when using the standard can be found in \ref{sec:examples} and \ref{sec:bestpractices}, respectively. \subsection{Understanding the UML Diagrams} @@ -14,7 +11,7 @@ \subsection{Understanding the UML Diagrams} Classes may be connected to other classes by association properties, which are represented in UML diagrams as arrows. These arrows are labeled with data cardinalities in order to indicate how many values a given association property may possess (see below). The remaining (non-association) properties of a class are listed below its name. Each of the latter properties is labeled with its data type and cardinality. -In the case of an association property, the class from which the arrow originates is the owner of the association property. A diamond at the origin of the arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, in which the owner of the association property exists independently of its value. In the SBOL data model, the value of an association property MUST be a URI or collection of URIs that refer to one or more SBOL objects belonging to the class at the tip of the arrow. +In the case of an association property, the class from which the arrow originates is the owner of the association property. A diamond at the origin of the arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, in which the owner of the association property exists independently of its value. In the SBOL data model, the value of an association property MUST be a URI or collection of URIs that refer to SBOL objects belonging to the class at the tip of the arrow. By contrast, filled diamonds indicate composite aggregation, also known as a part-whole relationship, in which the value of the association property MUST NOT exist independently of its owner. In addition, in the SBOL data model, it is REQUIRED that the value of each composite aggregation property is a unique SBOL object (that is, not the value for more than one such property). %For example, it will later be shown how objects of the \sbol{SequenceAnnotation} class must associated with an object of the \sbol{ComponentDefinition} class (and only that object). @@ -54,14 +51,13 @@ \subsection{Data Types} \label{sec:datatypes} \Ctodo{we use String, Integer, URI, Literal (these are from some W3C or XSD or whatever thing), and the classes below} -\Rtodo{Give a forward pointer to RECOMMENDED best-practices for compliant URIs. JSB: done} When SBOL use simple ``primitive'' data types such as strings or integers, these are defined as the following specific formal types: \begin{itemize} \item String: \url{http://www.w3.org/2001/XMLSchema#string} \item Integer: \url{http://www.w3.org/2001/XMLSchema#integer} \item URI: \url{something goes here} - It is further RECOMMENDED that URI structure follows the recommended best-practices for compliant URIs specified in \ref{sec:compliant}.. + It is further RECOMMENDED that URI structure follows the recommended best-practices for compliant URIs specified in \ref{sec:compliant}. \item Literal: \url{something goes here} \end{itemize} @@ -79,9 +75,6 @@ \subsection{Identified} If the URI is equal to the value of a \sbol{persistentIdentity} property, then it may refer to multiple SBOL objects that are different ``versions'' of each other. These objects SHOULD be compared to one another to determine which single object the URI should be resolved to (usually the most recent version - see \ref{sec:version}). Throughout this document, when a URI is used to refer to an SBOL object, it could fall into either of these cases. -\Rtodo{Remove ``identity'' for names of URIs everywhere. JSB: done} - - \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/identified} @@ -221,10 +214,10 @@ \subsubsection*{The \sbolheading{elements} property} \subsubsection*{The \sbolheading{encoding} property} \label{sec:encoding} -The \sbol{encoding} property is REQUIRED and has a data type of \external{URI}. This property is used to indicate how the \sbol{elements} property of its \sbol{Sequence} object MUST be formed and interpreted. -For example, a \sbol{Sequence} object that represents a DNA sequence would have an \external{IUPAC DNA} encoding that requires the \sbol{elements} property to contain characters that represent nucleotide bases, such as {\tt a}, {\tt t}, {\tt c}, and {\tt g}. A \sbol{Sequence} object that represents the chemical structure of glucose, however, might have a \external{simplified molecular-input line-entry system (SMILES)} encoding that requires the \sbol{elements} property to contain characters that represent atoms and chemical bonds, such as {\tt C}, {\tt N}, {\tt O}, and {\tt =}. +The \sbol{encoding} property is REQUIRED and has a data type of \external{URI}. This property is used to indicate how the \sbol{elements} property of a \sbol{Sequence} MUST be formed and interpreted. +For example, the \sbol{elements} property of a \sbol{Sequence} with an \external{IUPAC DNA} encoding property MUST contain characters that represent nucleotide bases, such as {\tt a}, {\tt t}, {\tt c}, and {\tt g}. The \sbol{elements} property of a \sbol{Sequence} with a \external{simplified molecular-input line-entry system (SMILES)} encoding, however, MUST contain characters that represent atoms and chemical bonds, such as {\tt C}, {\tt N}, {\tt O}, and {\tt =}. -\ref{tbl:sequence_encodings} provides a list of RECOMMENDED \external{URI}s for the \sbol{encoding} property. When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \external{URI}s in \ref{tbl:sequence_encodings}, it SHOULD use that \external{URI} for this property. +\ref{tbl:sequence_encodings} provides a list of RECOMMENDED \external{URI}s for the \sbol{encoding} property. These terms are organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that MUST refer to a \sbol{Sequence} with such an \sbol{encoding}. When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \external{URI}s in \ref{tbl:sequence_encodings}, it SHOULD use that \external{URI} for this property. %A Summary of letters for nucleic acids and aminoacids \begin{table}[ht] @@ -232,17 +225,17 @@ \subsubsection*{The \sbolheading{encoding} property} \toprule \textbf{Encoding} & \textbf{URI} & \textbf{ComponentDefinition Type} \\ \midrule - IUPAC DNA, RNA & \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html} & DnaRegion,RnaRegion \\ + IUPAC DNA, RNA & \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html} & DNA, RNA \\ IUPAC Protein & \url{http://www.chem.qmul.ac.uk/iupac/AminoAcid/} & Protein\\ SMILES & \url{http://www.opensmiles.org/opensmiles.html} & SmallMolecule \\ \bottomrule \end{edtable} - \caption{The RECOMMENDED \external{URI}s for encoding the \sbol{Sequence} objects for common types of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}).} + \caption{RECOMMENDED \external{URI}s for specifying the \sbol{encoding} property of a \sbol{Sequence}, organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that MUST refer to a \sbol{Sequence} with such an \sbol{encoding}.} \label{tbl:sequence_encodings} \end{table} \subsubsection*{Serialization} -The serialization of a \sbol{Sequence} object has the following form: +The serialization of a \sbol{Sequence} has the following form: \lstsetsbol \begin{lstlisting} @@ -252,7 +245,7 @@ \subsubsection*{Serialization} \end{lstlisting} -The example below shows the serialization of the \sbol{Sequence} object for the \sbol{ComponentDefinition} of a promoter. The nucleotide bases of the \sbol{Sequence} are serialized as the \external{String} value for its \sbol{elements} property, while its \external{IUPAC DNA} encoding is serialized as the \external{URI} value for its \sbol{encoding} property. +The example below shows the serialization of the \sbol{Sequence} for a promoter. The nucleotide bases of the \sbol{Sequence} are serialized as the \external{String} value for its \sbol{elements} property, while its \external{IUPAC DNA} encoding is serialized as the \external{URI} value for its \sbol{encoding} property. \lstsetsbol \begin{lstlisting} @@ -270,8 +263,6 @@ \subsection{ComponentDefinition} As shown in \ref{uml:component_definition}, the \sbol{ComponentDefinition} class describes a structural design entity using the following properties: \sbol{types}, \sbol{roles}, and \sbol{sequences}. In addition, this class has properties for describing and organizing the substructure of said design entity, including \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations}. -\Rtodo{Make sure that text is consistent with sequences property have cardinality of 0..*; JSB: done} - \begin{figure}[ht] \begin{center} \includegraphics[width=0.95\textwidth]{uml/component_definition} @@ -299,7 +290,7 @@ \subsubsection*{The \sbolheading{types} property} \bottomrule \end{edtable} \caption{RECOMMENDED BioPAX terms to specify the \sbol{types} property of a \sbol{ComponentDefinition}.} - \label{tbl:componentdefinition_types} + \label{tbl:componentdefinition_types} \end{table} \subsubsection*{The \sbolheading{roles} property} @@ -307,7 +298,7 @@ \subsubsection*{The \sbolheading{roles} property} The \sbol{roles} property is a OPTIONAL set of \external{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} in a biological context. -The \sbol{roles} property of a \sbol{ComponentDefinition} MAY contain a collection of \external{URI}s that SHOULD identify terms from ontologies that are consistent with the \sbol{types} property of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} component SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbol{roles} property and their \external{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply. As with the \sbol{types} property, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} SHOULD use that term as one of its \sbol{roles}. +The \sbol{roles} property of a \sbol{ComponentDefinition} MAY contain a collection of \external{URI}s that SHOULD identify terms from ontologies that are consistent with the \sbol{types} property of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbol{roles} property and their \external{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). As with the \sbol{types} property, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} SHOULD use that term as one of its \sbol{roles}. \begin{table}[ht] \begin{edtable}{tabular}{lll} @@ -315,7 +306,7 @@ \subsubsection*{The \sbolheading{roles} property} \textbf{ComponentDefinition Role} & \textbf{URI for Ontology Term} & \textbf{ComponentDefinition Type} \\ \midrule Promoter & \url{http://identifiers.org/so/SO:0000167} & DNA \\ - Ribosome Entry Site & \url{http://identifiers.org/so/SO:0000139} & DNA \\ + RBS & \url{http://identifiers.org/so/SO:0000139} & DNA \\ CDS & \url{http://identifiers.org/so/SO:0000316} & DNA \\ Terminator & \url{http://identifiers.org/so/SO:0000141} & DNA \\ Gene & \url{http://identifiers.org/so/SO:0000704} & DNA \\ @@ -324,7 +315,7 @@ \subsubsection*{The \sbolheading{roles} property} Effector & \url{http://identifiers.org/chebi/CHEBI:35224} & Small Molecule \\ \bottomrule \end{edtable} - \caption{RECOMMENDED ontology terms to specify the \sbol{roles} property of a \sbol{ComponentDefinition}.} + \caption{RECOMMENDED ontology terms to specify the \sbol{roles} property of a \sbol{ComponentDefinition}, organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{ tbl:componentdefinition_types}).} \label{tbl:componentdefinition_roles} \end{table} @@ -333,24 +324,27 @@ \subsubsection*{The \sbolheading{components} property} The \sbol{components} property is OPTIONAL and MAY specify a collection of \sbol{Component} objects contained by its \sbol{ComponentDefinition}. -While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of parts within a design. Hence, this class allows a biological design to include multiple copies of a particular part. For example, the \sbol{ComponentDefinition} of a gene MAY contain two \sbol{Component} objects that refer to the same \external{URI} for the \sbol{ComponentDefinition} of a CDS. +While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple copies of a particular part. For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \external{URI} for the \sbol{ComponentDefinition} of a CDS. \subsubsection*{The \sbolheading{sequences} property} \label{sec:sequences} -The \sbol{sequences} property is OPTIONAL and MAY include a collection of \external{URI}s for \sbol{Sequence} objects. These objects define the primary structure of the \sbol{ComponentDefinition} with this property and SHOULD be consistent with each other. +The \sbol{sequences} property is OPTIONAL and MAY include a collection of \external{URI}s that refer to \sbol{Sequence} objects. These objects define the primary structure of the \sbol{ComponentDefinition}. + +Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the primary structure of a DNA \sbol{ComponentDefinition}, one that captures its methylation and one that does not. If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects SHOULD be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. + +\Rtodo{I think the requirement that multiple sequences be consistent with each other is a SHOULD, not a MUST, since I don't think we can realistically validate this consistency (this is how I've been approaching other requirements in this section, but I haven't reconciled them with the validation rules yet). Also, this was previously worded such that the lengths of the sequences had to be precisely the same in order to avoid ambiguous locations for sequence annotations, but what if one sequence is a SMILES encoding of DNA and not IUPAC? I think we need pointers from sequence annotations to the sequences to which they apply. I'll send a mail out about this - Nic} -\Rtodo{Please check that this constraint is appropriate -JSB} -Many \sbol{Component} objects will have precisely one \sbol{Sequence} object in this collection. In certain use cases, however, it may be appropriate to have multiple \sbol{Sequence} objects (e.g., two different representations of the same object), and accordingly multiple objects are permitted. If there is more than one \sbol{Sequence}, however, it must be the case that their length and topology are precisely the same, such that it is unambiguous what is referred to be \sbol{SequenceConstraint} and \sbol{SequenceAnnotation} objects. +In addition, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbol{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of the \sbol{Sequence} objects MUST have the \sbol{encoding} that corresponds to this term (see \ref{tbl:sequence_encodings}). For example, if the \sbol{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) should have an \external{IUPAC DNA} \sbol{encoding}. \subsubsection*{The \sbolheading{sequenceConstraints} property} \label{sec:sequenceConstraints} -The \sbol{sequenceConstraints} property is OPTIONAL and MAY contain a collection of \sbol{SequenceConstraint} objects. These objects describe any restrictions on the relative, sequence-based positions of \sbol{Component} objects that belong to the \sbol{ComponentDefinition}. +The \sbol{sequenceConstraints} property is OPTIONAL and MAY contain a collection of \sbol{SequenceConstraint} objects. These objects describe any restrictions on the relative, sequence-based positions of \sbol{Component} objects contained by the \sbol{ComponentDefinition}. For example, the \sbol{ComponentDefinition} of a gene may specify that its promoter \sbol{Component} precedes its CDS \sbol{Component}. This is particulary useful when a \sbol{ComponentDefinition} lacks a \sbol{Sequence} and therefore cannot specify the precise, sequence-based positions of its \sbol{Component} objects using \sbol{SequenceAnnotation} objects. \subsubsection*{The \sbolheading{sequenceAnnotations} property} \label{sec:sequenceAnnotations} -The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a collection of \sbol{SequenceAnnotation} objects. These objects describe \sbol{Location}s on the \sbol{Sequence} objects of the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at its specified \sbol{Location}. +The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a collection of \sbol{SequenceAnnotation} objects. Each \sbol{SequenceAnnotation} contains and describes a \sbol{Location} on a \sbol{Sequence} of the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at the \sbol{Location} of the \sbol{SequenceAnnotation}. \subsubsection*{Serialization} % The parent classes of the \sbol{ComponentDefinition} class are \sbol{TopLevel} and, transitively, \sbol{Identified}. As a result, inherited properties are serialized as explained for these parent classes. From a80862795cd4eec19428f8474547dfc1e2f8b4fb Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 18 May 2015 19:31:30 +0000 Subject: [PATCH 137/317] Update on Overleaf. --- model.tex | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/model.tex b/model.tex index a420a5ca..2bcf3ef7 100644 --- a/model.tex +++ b/model.tex @@ -217,7 +217,7 @@ \subsubsection*{The \sbolheading{encoding} property} The \sbol{encoding} property is REQUIRED and has a data type of \external{URI}. This property is used to indicate how the \sbol{elements} property of a \sbol{Sequence} MUST be formed and interpreted. For example, the \sbol{elements} property of a \sbol{Sequence} with an \external{IUPAC DNA} encoding property MUST contain characters that represent nucleotide bases, such as {\tt a}, {\tt t}, {\tt c}, and {\tt g}. The \sbol{elements} property of a \sbol{Sequence} with a \external{simplified molecular-input line-entry system (SMILES)} encoding, however, MUST contain characters that represent atoms and chemical bonds, such as {\tt C}, {\tt N}, {\tt O}, and {\tt =}. -\ref{tbl:sequence_encodings} provides a list of RECOMMENDED \external{URI}s for the \sbol{encoding} property. These terms are organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that MUST refer to a \sbol{Sequence} with such an \sbol{encoding}. When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \external{URI}s in \ref{tbl:sequence_encodings}, it SHOULD use that \external{URI} for this property. +\ref{tbl:sequence_encodings} provides a list of RECOMMENDED \external{URI}s for the \sbol{encoding} property. These terms are organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that MUST refer to a \sbol{Sequence} with such an \sbol{encoding} (if it refers to any \sbol{Sequence}). When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \external{URI}s in \ref{tbl:sequence_encodings}, it SHOULD use that \external{URI} for this property. %A Summary of letters for nucleic acids and aminoacids \begin{table}[ht] @@ -230,7 +230,7 @@ \subsubsection*{The \sbolheading{encoding} property} SMILES & \url{http://www.opensmiles.org/opensmiles.html} & SmallMolecule \\ \bottomrule \end{edtable} - \caption{RECOMMENDED \external{URI}s for specifying the \sbol{encoding} property of a \sbol{Sequence}, organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that MUST refer to a \sbol{Sequence} with such an \sbol{encoding}.} + \caption{RECOMMENDED \external{URI}s for specifying the \sbol{encoding} property of a \sbol{Sequence}, organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that MUST refer to a \sbol{Sequence} with such an \sbol{encoding} (if it refers to any \sbol{Sequence}).} \label{tbl:sequence_encodings} \end{table} @@ -245,7 +245,7 @@ \subsubsection*{Serialization} \end{lstlisting} -The example below shows the serialization of the \sbol{Sequence} for a promoter. The nucleotide bases of the \sbol{Sequence} are serialized as the \external{String} value for its \sbol{elements} property, while its \external{IUPAC DNA} encoding is serialized as the \external{URI} value for its \sbol{encoding} property. +The example below shows the serialization of the \sbol{Sequence} for a promoter. The nucleotide bases of the \sbol{Sequence} are serialized as the \external{String} value of its \sbol{elements} property, while its \external{IUPAC DNA} encoding is serialized as the \external{URI} value of its \sbol{encoding} property. \lstsetsbol \begin{lstlisting} @@ -298,7 +298,7 @@ \subsubsection*{The \sbolheading{roles} property} The \sbol{roles} property is a OPTIONAL set of \external{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} in a biological context. -The \sbol{roles} property of a \sbol{ComponentDefinition} MAY contain a collection of \external{URI}s that SHOULD identify terms from ontologies that are consistent with the \sbol{types} property of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbol{roles} property and their \external{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). As with the \sbol{types} property, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} SHOULD use that term as one of its \sbol{roles}. +The \sbol{roles} property of a \sbol{ComponentDefinition} MAY contain a collection of \external{URI}s that SHOULD identify terms from ontologies that are consistent with the \sbol{types} property of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbol{roles} property and their \external{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). As with the \sbol{types} property, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} SHOULD use that term as one of its \sbol{roles}. In addition, no two \sbol{Sequence} objects \begin{table}[ht] \begin{edtable}{tabular}{lll} @@ -330,11 +330,11 @@ \subsubsection*{The \sbolheading{sequences} property} \label{sec:sequences} The \sbol{sequences} property is OPTIONAL and MAY include a collection of \external{URI}s that refer to \sbol{Sequence} objects. These objects define the primary structure of the \sbol{ComponentDefinition}. -Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the primary structure of a DNA \sbol{ComponentDefinition}, one that captures its methylation and one that does not. If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects SHOULD be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. +Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the primary structure of a DNA \sbol{ComponentDefinition}, one that captures its methylation and one that does not. If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects SHOULD be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, no two \sbol{Sequence} objects referred to by the same \sbol{ComponentDefinition} should have the same \sbol{encoding}. \Rtodo{I think the requirement that multiple sequences be consistent with each other is a SHOULD, not a MUST, since I don't think we can realistically validate this consistency (this is how I've been approaching other requirements in this section, but I haven't reconciled them with the validation rules yet). Also, this was previously worded such that the lengths of the sequences had to be precisely the same in order to avoid ambiguous locations for sequence annotations, but what if one sequence is a SMILES encoding of DNA and not IUPAC? I think we need pointers from sequence annotations to the sequences to which they apply. I'll send a mail out about this - Nic} -In addition, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbol{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of the \sbol{Sequence} objects MUST have the \sbol{encoding} that corresponds to this term (see \ref{tbl:sequence_encodings}). For example, if the \sbol{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) should have an \external{IUPAC DNA} \sbol{encoding}. +Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbol{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of these objects MUST have the \sbol{encoding} that corresponds to this term (see \ref{tbl:sequence_encodings}). For example, if the \sbol{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) should have an \external{IUPAC DNA} \sbol{encoding}. \subsubsection*{The \sbolheading{sequenceConstraints} property} \label{sec:sequenceConstraints} @@ -348,9 +348,7 @@ \subsubsection*{The \sbolheading{sequenceAnnotations} property} \subsubsection*{Serialization} % The parent classes of the \sbol{ComponentDefinition} class are \sbol{TopLevel} and, transitively, \sbol{Identified}. As a result, inherited properties are serialized as explained for these parent classes. -The \sbol{sequences}, \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations} properties of a \sbol{ComponentDefinition} include \external{URI}s that identify objects belonging to the appropriate SBOL classes, while the \sbol{types} and \sbol{roles} properties include URIs that identify ontology terms. As shown in the example below, each of these URIs is serialized as an \external{rdf:resource} as part of an implicit collection of SBOL properties with singular rather then plural names. - -\Rtodo{The name (title) and description properties should be moved from this example to one for Identified. Identified is an abstract class that shouldn't be serialized, but perhaps we could use a non-abstract class (probably ComponentDefinition) to provide an example of displayId, version, name, description, etc. - Nic; JSB: moved forward} +The \sbol{sequences}, \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations} properties of a \sbol{ComponentDefinition} contain objects belonging to the appropriate SBOL classes as their values, while the \sbol{types} and \sbol{roles} properties contain \external{URI}s that identify ontology terms as their values. As shown in the example below, each one of these objects and \external{URI}s is serialized as part of an implicit collection of SBOL properties with singular rather then plural names. Each object is serialized as a RDF/XML node nested within a property, while each \external{URI} is serialized as a \external{rdf:resource} on a property. \lstsetsbol \begin{lstlisting} @@ -370,7 +368,6 @@ \subsubsection*{Serialization} [\emph{elements}] \end{lstlisting} -\Rtodo{We need to have an explanation of how to interpret these, and also have a pointer to it from each example. JSB: I think the serialization section is enough, actually, and that these are relatively intuitive} The example below shows the serialization of a simple \sbol{ComponentDefinition} for a promoter. The BioPAX term \external{DnaRegion} and the ChEBI term \external{CHEBI:4705} (\external{double-stranded DNA}) are used to indicate that the type of biological entity represented by this \sbol{ComponentDefinition} is DNA. Its role is specified using the SO terms \external{SO:0000167} (\external{promoter}) and the more specific \external{SO:0000613} (\external{bacterial\_RNApol\_promoter}). From 8bcc34752ab23db319b9aeca4a7315690c15ae37 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Mon, 18 May 2015 23:36:11 -0500 Subject: [PATCH 138/317] mapsto --- model.tex | 88 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 50 insertions(+), 38 deletions(-) diff --git a/model.tex b/model.tex index 2bcf3ef7..679a23ba 100644 --- a/model.tex +++ b/model.tex @@ -1012,6 +1012,8 @@ \subsubsection{Module} \subsubsection{MapsTo} \label{sec:MapsTo} +\Dtodo{I propose to move this up to the ComponentDefinition section, between Component and SequenceAnnotation, since it can be used for Component/Component relationships too. -JSB} + \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/maps_to} @@ -1019,28 +1021,66 @@ \subsubsection{MapsTo} \label{uml:maps_to} \end{center} \end{figure} -The \sbol{MapsTo} class serves as a means of linking between \sbol{ComponentInstance} objects (both \sbol{Component}s and \sbol{FunctionalComponent}s) at different levels of the design hierarchy. For example, when a child \sbol{ModuleDefinition} object is instantiated inside a parent \sbol{ModuleDefinition} object, a \sbol{MapsTo} object is used to link these two ModuleDefinitions. MapsTo has properties to specify components from the parent and child entities, and also to specify how these components are linked. -\Ctodo{need to explain the whole 3-way mapsto model and importation better} +When \sbol{ComponentInstance} or \sbol{Module} objects are combined together within a new \sbol{ComponentDefinition} or \sbol{ModuleDefinition}, it is often the case that some of the elements comprising these objects are intended to refer to the ``same'' thing, in some sense. +The purpose of the \sbol{MapsTo} class is to make these relationships clear and explicit. + +In particular, a \sbol{MapsTo} object provides two pieces of information: +\begin{itemize} +\item An identity relationship between two \sbol{ComponentInstance} + objects, one inside the definition of a ``lower level'' instance that owns the + \sbol{MapsTo}, the other in the ``higher level'' definition that + contains the ``lower level'' instance. The \sbol{local} property identifies the ``higher + level'' \sbol{ComponentInstance} and the \sbol{remote} property + identifies the ``lower level'' \sbol{ComponentInstance}. +\item Instructions on what to do if the two \sbol{ComponentInstance} + objects link to different \sbol{ComponentDefinition} objects (i.e., + they are not identical). This is specified by the \sbol{refinement} + property, using one of the values from \ref{tbl:mapsto_refinement}. +\end{itemize} + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=1]{images/MapsTo_Diagram2} +\caption{Linking Components using \sbol{MapsTo} entities. Boxes with diagrams represent \sbol{ComponentDefinition} objects, while boxes with the C label represent \sbol{Component} objects and boxes with the M label represent \sbol{MapsTo} objects. In both diagrams, a promoter/5'UTR construct and a 5'UTR/coding sequence construct are being combined to form a complete functional unit. +In the left diagram, both 5'UTRs are abstract, with no sequence (white semicircle), and their definition is taken from a third green 5'UTR component. In the right diagram, the two 5'UTRs are different, and the one associated with the promoter (green semicircle) is selected to override the one associated with the coding sequence (red semicircle) in the new \sbol{ComponentDefinition}.} +\label{image:maps_to_diagram2} +\end{center} +\end{figure} +\Rtodo{Caption: why are some RBSs not filled in? JSB: explained meaning} +\Dtodo{Problem: the high-level component in the right of the MapsTo example doesn't seem to want a componentDefinition, but it is required} + +To illustrate this concept, two examples are provided in \ref{image:maps_to_diagram2}, in which a \sbol{ComponentDefinition} for a promoter / 5'UTR / coding-sequence functional unit is constructed by combining two ``lower level'' \sbol{ComponentDefinition} objects. +In both examples, the two ``lower level'' \sbol{ComponentDefinition} objects each contain a 5'UTR, and these are all taken to refer to the ``same'' element of the new ``higher level'' \sbol{ComponentDefinition}. + +In order to represent this relationship, a new \sbol{Component} is created, owned by the ``higher level'' \sbol{ComponentDefinition}, to represent the shared 5'UTR. +It is then linked to the equivalent \sbol{Component} in each of the ``lower level'' \sbol{ComponentDefinition} objects by means of a \sbol{MapsTo}, using one \sbol{MapsTo} per link. +For example, to link the shared ``higher level'' 5'UTR to the 5'UTR in the promoter/5'UTR construct, a \sbol{MapsTo} is created that is owned by the \sbol{Component} instance for the promoter/5'UTR construct, setting its \sbol{local} to the 5'UTR \sbol{Component} in the ``higher-level'' construct and its \sbol{remote} to the 5'UTR \sbol{Component} in the ``lower-level'' construct. +Many ``lower level'' instances can then be linked together in an unambiguous relationship by using one \sbol{MapsTo} object per \sbol{remote}, all sharing the same \sbol{local}. + +The exact same types of relationships also apply and can likewise be declared for \sbol{FunctionalComponent} objects in a \sbol{ModuleDefinition} and the +\sbol{ComponentInstance} objects within the ``lower level'' \sbol{Module} or \sbol{FunctionalComponent} instances that it contains. + +\Rtodo{need to explain the whole 3-way mapsto model and importation better. JSB: done, I think} \paragraph{The \sbolheading{local} property}\label{sec:local} -This required property is used to specify the \sbol{ComponentInstance} from the parent entity. +This REQUIRED property is used to specify the \sbol{ComponentInstance} from the ``higher level'' entity. The same higher-level entity MUST own both the \sbol{local} and object that owns the \sbol{MapsTo}. \paragraph{The \sbolheading{remote} property}\label{sec:remote} -This required property is used to specify the \sbol{ComponentInstance} from the child entity being imported by the parent. +This REQUIRED property is used to specify the \sbol{ComponentInstance} from the ``lower level'' entity that is being being linked to the \sbol{local} \sbol{ComponentInstance}. This \sbol{ComponentInstance} MUST be owned by the ``lower level'' entity that defines the object that owns the \sbol{MapsTo} \paragraph{The \sbolheading{refinement} property}\label{sec:refinement} -Each \sbol{MapsTo} entity must also specify the relationship between its local and remote components using the refinement property. The Table \ref{tbl:mapsto_refinement} lists the values +Each \sbol{MapsTo} entity MUST specify the relationship between its \sbol{local} and \sbol{remote} components using the refinement property, using one of the values in \ref{tbl:mapsto_refinement}. \begin{table}[ht] \begin{edtable}{tabular}{lp{4in}} \toprule \textbf{Refinement URI} & \textbf{Description} \\ \midrule - \url{http://sbols.org/v2#useremote} & Indicates that \sbol{ComponentInstance} from the child entity is used in the parent, instead of the \sbol{ComponentInstance} specified in the parent entity.\\ - \url{http://sbols.org/v2#uselocal} & Indicates that \sbol{ComponentInstance} from the parent entity is used in the parent instead of the imported the \sbol{ComponentInstance} child entity.\\ - \url{http://sbols.org/v2#verifyIdentical} & Indicates that ComponentInstance entities must link to the same \sbol{ComponentDefinition} object\\ - \url{http://sbols.org/v2#merge} & Indicates that data fields of the local and remote ComponentInstantiation entities are to be interpreted in combination\\ + \url{http://sbols.org/v2#useremote} & Indicates that properties of the \sbol{ComponentInstance} from the \sbol{remote} are to be used, instead of the \sbol{local} \sbol{ComponentInstance}.\\ + \url{http://sbols.org/v2#uselocal} & Indicates that properties of the \sbol{ComponentInstance} from the \sbol{local} are to be used used, instead of the \sbol{remote} \sbol{ComponentInstance}.\\ + \url{http://sbols.org/v2#verifyIdentical} & Indicates that both \sbol{ComponentInstance} entities must link to the same \sbol{ComponentDefinition} object\\ + \url{http://sbols.org/v2#merge} & Indicates that data fields of the \sbol{local} and \sbol{remote} \sbol{ComponentInstance} entities are to be interpreted in combination\\ \bottomrule \end{edtable} \caption{URIs for the \sbol{refinement} property.} @@ -1048,35 +1088,7 @@ \subsubsection{MapsTo} \end{table} \Ctodo{libsbol and refinements types here need to agree on consistent capitalization. GM: We agreed to start with lowercase and use the Capital for the next word.} -\Ctodo{The notion of refinement is very unclear -JB Clean up the text} - -%GM: The paragraph below is now explained in the table above. Commented for now. Please remove the commented lines if you agree with the table description. -%In addition to specifying a link, each MapsTo object must also specify a ``refinement'' relationship between its local and remote Components. Under this data model, there are four types of refinement: ``verifyIdentical'' requires that the Component objects link to the same ComponentDefinition object, ``useLocal'' indicates that the local Component object overrides the remote Component object, ``useRemote'' indicates the opposite, and “merge” indicates that data fields of the local and remote ComponentInstantiation objects are to be interpreted in combination. - - -%\begin{figure}[ht] -%\begin{center} -%\includegraphics[scale=0.6]{images/MapsTo_Diagram1} -%\caption{Linking Components using MapsTo entities.} -%\label{image:maps_to_diagram1} -%\end{center} -%\end{figure} - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=1]{images/MapsTo_Diagram2} -\caption{Linking Components using \sbol{MapsTo} entities. Boxed with the C label represent Component entities and boxes with the M label represent \sbol{MapsTo} entities.} -\label{image:maps_to_diagram2} -\end{center} -\end{figure} -\Ctodo{Caption: why are some RBSs not filled in?} - -An example design of a \sbol{ComponentDefinition} using \sbol{MapsTo} entities is shown at the left hand side of the Figure \ref{image:maps_to_diagram2}. The resulting entity is formed of a promoter, a RBS and a CDS. -Three sub components to create the design includes: a promoter-RBS \sbol{ComponentDefinition} with a RBS placeholder without detailed definition; a RBS \sbol{ComponentDefinition} with full description; and a RBS-CDS \sbol{ComponentDefinition} with a RBS placeholder, which is also not defined in full detail. -In the figure, boxes with the C label represent \sbol{Component} entities and boxes with the M label represent the \sbol{MapsTo} entities. -In the design RBSs that are not fully defined are replaced with another RBS \sbol{ComponentDefinition} (displayed in green colour). \sbol{MapsTo} entities attached to sub components for promoter-RBS and RBS-CDS \sbol{ComponentDefinition}s include the ``use local'' refinement to replace RBSs with the fully defined version. In the second design at the right hand side of the figure, \sbol{MapsTo} entities are used to import the RBS from the promoter-RBS \sbol{ComponentDefinition} overwriting the RBS in RBS-CDS \sbol{ComponentDefinition}. - -\Ctodo{Need to expand this explanation a bit more to drive home the points -JB} +\Rtodo{The notion of refinement is very unclear -JB Clean up the text; JSB: done} \paragraph{Serialization} The serialization of \sbol{MapsTo} has the following form. From d06021aa8ba614770433ef0c88f4f2c8fd004808 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Mon, 18 May 2015 23:38:03 -0500 Subject: [PATCH 139/317] decided not a problem --- model.tex | 1 - 1 file changed, 1 deletion(-) diff --git a/model.tex b/model.tex index 679a23ba..a95c2206 100644 --- a/model.tex +++ b/model.tex @@ -1048,7 +1048,6 @@ \subsubsection{MapsTo} \end{center} \end{figure} \Rtodo{Caption: why are some RBSs not filled in? JSB: explained meaning} -\Dtodo{Problem: the high-level component in the right of the MapsTo example doesn't seem to want a componentDefinition, but it is required} To illustrate this concept, two examples are provided in \ref{image:maps_to_diagram2}, in which a \sbol{ComponentDefinition} for a promoter / 5'UTR / coding-sequence functional unit is constructed by combining two ``lower level'' \sbol{ComponentDefinition} objects. In both examples, the two ``lower level'' \sbol{ComponentDefinition} objects each contain a 5'UTR, and these are all taken to refer to the ``same'' element of the new ``higher level'' \sbol{ComponentDefinition}. From 179bcaca9dca72fff85a766be9bbb945618b1c58 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Tue, 19 May 2015 21:55:06 +0000 Subject: [PATCH 140/317] Update on Overleaf. --- history.tex | 13 +++++++------ model.tex | 33 +++++++++++++++++---------------- overview.tex | 2 +- 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/history.tex b/history.tex index b3675103..4faf181d 100644 --- a/history.tex +++ b/history.tex @@ -3,14 +3,15 @@ \section{History and Acknowledgements} % ----------------------------------------------------------------------------- %Add yourself if you have helped and aren't on the list -In early 2006 Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26 to 27 in 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deep Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. The original SBOL 1.0 was developed through his efforts together withthe small group of dedicated researchers. An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group and the over all pace of developed quickened. Its further development has continued at a series of subsequent open invitation workshops and through email exchanges on the SBOL Developers mailing list. Finally, afte repeated attempts, the SBOL core team finally secured federal funding from the National Science Foundation. This document is partly a result of that support. +In early 2006 Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26 to 27 in 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deep Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. The original SBOL 1.0 was developed through his efforts together with the small group of dedicated researchers. An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group and the over all pace of developed quickened. Its further development has continued at a series of subsequent open invitation workshops and through email exchanges on the SBOL Developers mailing list. Finally, after repeated attempts, the SBOL core team finally secured federal funding from the National Science Foundation. This document is partly a result of that support. -Contributors to this work include: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University). +\Ctodo{History peters out after first meeting. Definitely need to add a bit more details about the evolution. Maybe at least a couple sentences about the accomplishments at each meeting.} -\Ctodo{Get lots more authors to sign on} +\Ctodo{Need to cite NBT paper here.} -\LDtodo{Make Herbert write something nice about history to add here -JSB} +\Ctodo{Nic should write something about the history of SBOL 2.0 including the publication for the proposal.} -\Ctodo{Need to cite NBT paper here.} +\Ctodo{This seems redundant with author list on first page. Is it needed? Do we intend to list more people here than on the author list? We could use this to acknowledge key contributors who are not authors of the 2.0 specification. Many are listed in text above. Perhaps, in same spirit as that, since it not only lists people but says what they did.} + +Contributors to this work include: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University). -\Ctodo{Nic should write something about the history of SBOL 2.0 including the publication for the proposal.} \ No newline at end of file diff --git a/model.tex b/model.tex index a95c2206..c11b9261 100644 --- a/model.tex +++ b/model.tex @@ -473,9 +473,9 @@ \subsubsection{Component} \subsubsection{SequenceAnnotation} \label{sec:SequenceAnnotation} -The \sbol{SequenceAnnotation} class describes a precisely known location of interest on the \sbol{Sequence} objects linked by its parent \sbol{ComponentDefinition} object. It can also optionally associate this location with a \sbol{Component} object. \sbol{SequenceAnnotation} objects specify their location using a \sbol{Location} object, as described below. +The \sbol{SequenceAnnotation} class describes a precisely known location of interest on the \sbol{Sequence} objects linked by its parent \sbol{ComponentDefinition} object. It can also optionally associate this location with a \sbol{Component} object. \sbol{SequenceAnnotation} objects specify their location using a set of \sbol{Location} objects, as described below. It is a set of location objects to allow the annotation of a non-contiguous location on a sequence. -\Rtodo{We will change location to locations (1..*) and eliminate MultiRange class. JSB, Nic: done} +\Rtodo{We will change location to locations (1..*) and eliminate MultiRange class. JSB, Nic: done, CJM: added text above to explain why it is a set of locations.} \begin{figure}[ht] \begin{center} @@ -487,7 +487,9 @@ \subsubsection{SequenceAnnotation} \paragraph{The \sbolheading{locations} property}\label{sec:locations} \label{sec:locations} -Every \sbol{SequenceAnnotation} MUST has at least one \sbol{Location} object in its collection of \sbol{locations}. The value of this property is a nested \sbol{Location} object. +Every \sbol{SequenceAnnotation} MUST have at least one \sbol{Location} object in its collection of \sbol{locations}. The value of this property is a nested \sbol{Location} object. + +\Ctodo{Use term collection above. Is it me or is this confusing with our collection object? We could use set instead.} \paragraph{The \sbolheading{component} property}\label{sec:component} \sbol{SequenceAnnotation} objects MAY use this property to link location information to a \sbol{Component} object, by specifying its URI. @@ -571,8 +573,6 @@ \subsubsection{Location} \subparagraph{The \sbolheading{end} property}\label{sec:end} Specifies the end of a \sbol{Range}. This property is REQUIRED and can have \external{integer} values greater than zero. -\Rtodo{If we remove MultiRange than Orientation can be moved to the Location class. Done: Nic and JSB} - \subparagraph{Serialization} The serialization of Range objects has the following form: @@ -870,18 +870,19 @@ \subsubsection*{Serialization} ... [\emph{zero or more}] [\emph{elements}] [\emph{zero or more}] [\emph{elements}] - [\emph{zero or more}] + [\emph{zero or more}] ... - [\emph{elements}] - [\emph{zero or more}] + [\emph{elements}] + [\emph{zero or more}] ... - [\emph{elements}] + [\emph{elements}] [\emph{zero or more}] ... [\emph{elements}] \end{lstlisting} -\Ctodo{Is this template still correct, given ``subModule''?} +\Rtodo{Is this template still correct, given ``subModule''? +No, it was not correct. I think I fixed it. - CJM} \Rtodo{Add an example, like for all the rest. JSB: done, but needs to be sanity-checked since I created it by hand.} @@ -890,20 +891,20 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - + - - + + - + ... @@ -1012,7 +1013,7 @@ \subsubsection{Module} \subsubsection{MapsTo} \label{sec:MapsTo} -\Dtodo{I propose to move this up to the ComponentDefinition section, between Component and SequenceAnnotation, since it can be used for Component/Component relationships too. -JSB} +\Ctodo{I propose to move this up to the ComponentDefinition section, between Component and SequenceAnnotation, since it can be used for Component/Component relationships too. -JSB I concur - CJM} \begin{figure}[ht] \begin{center} @@ -1131,7 +1132,7 @@ \subsubsection{Interaction} \Ctodo{Like the others, SBO is REQUIRED if the term exists, and you can add other stuff. We also need to explain this up front in the beginning of the section} -Furthermore, an\sbol{Interaction} object can specify the set of \sbol{FunctionalComponent} entities that are interacting by linking to \sbol{Participation} objects that descibe how each one participates in the interaction. +Furthermore, an \sbol{Interaction} object can specify the set of \sbol{FunctionalComponent} entities that are interacting by linking to \sbol{Participation} objects that descibe how each one participates in the interaction. \Rtodo{I don't think this is really a MUST. JSB: it wasn't; it is resolved.} \paragraph{Serialization} diff --git a/overview.tex b/overview.tex index 267c3b8b..31b6f6b1 100644 --- a/overview.tex +++ b/overview.tex @@ -26,7 +26,7 @@ \section{Overview of SBOL} \end{center} \end{figure} \Rtodo{Put a caption on the figure -JSB Done -KC Tweaked further -JSB} -\Ctodo{Remove SBML from the figure -JSB} +\Ctodo{Remove SBML from the figure -JSB, Why? We have done more with SBML than any alternative? We already have SBOL2 to SBML and SBML to SBOL2, for example. - CJM} The \sbol{Sequence} is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. In designed systems such objects can consist of small chemical molecules, DNAs, RNAs or Proteins. The \sbol{Sequence} object has been designed to encapsulate any of these types of molecules. Small molecule \sbol{Sequence} objects are typically referred to via their chemical formulae. Molecules where sequence specific information is important, such as DNA, RNA and Protein \sbol{Sequence} objects, use the object to incorporate this information. The \sbol{Sequence} object encapsulates this positional information as well as the associated experimental work or other information related to a sequenced molecule. From 3ad14f1969ecd20c27f6cc234423fb52916b582d Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 19 May 2015 16:56:32 -0500 Subject: [PATCH 141/317] expand one serialization writeup --- examples_serialization.tex | 10 ++++++++-- sbol.bib | 10 ++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/examples_serialization.tex b/examples_serialization.tex index eb097f7b..3794fcd6 100644 --- a/examples_serialization.tex +++ b/examples_serialization.tex @@ -3,9 +3,15 @@ \section{Examples of Serialization} % ----------------------------------------------------------------------------- \subsection{PoPS Receiver} -This example shows the serialization of the PoPS Receiver device designed by Canton and co-workers. Details of the device can be found at http://parts.igem.org/Part:BBa\_F2620. +This example shows the serialization of the PoPS Receiver device designed by Canton and co-workers~\cite{canton-natbio-2008}. +In particular, this is a \sbol{ComponentDefinition} comprising five other \sbol{Components} to construct a detector for the cell-cell signaling molecule 3OC$_6$HSL. +The five components are arranged in a sequence: +first come four components together implement constitutive expression of the LuxR protein, which responds to 3OC$_6$HSL: a constitutive promoter, 5'UTR, coding sequence for LuxR, and terminator. +Finally, after this comes the pLuxR promoter, which is activated in the presence of LuxR and 3OC$_6$HSL. +% +Complete details of the device can be found in the cited paper and also at \url{http://parts.igem.org/Part:BBa_F2620}. -\LDtodo{Add more description and ref} +\Rtodo{Add more description and ref; JSB: done} \label{ser:F2620} \lstsetsbol diff --git a/sbol.bib b/sbol.bib index 782104e6..15dde443 100644 --- a/sbol.bib +++ b/sbol.bib @@ -1,3 +1,13 @@ +@article{canton-natbio-2008, + author = "Barry Canton and Anna Labno and Drew Endy", + title = "Refinement and standardization of synthetic biological parts and devices", + journal = "Nature Biotechnology", + volume = 26, + number = 7, + year = 2008, + pages = "787--793", +} + @article{rdfxml, title={RDF/XML syntax specification (revised)}, author={Beckett, Dave and McBride, Brian}, From 0253e34e2a3245b62818ad018ae7b49975927a76 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Tue, 19 May 2015 21:57:45 +0000 Subject: [PATCH 142/317] Update on Overleaf. --- apdx-validation.tex | 1 - practices.tex | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 8a6ffec8..6a5bfde5 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -22,7 +22,6 @@ \section{Validation Rules} specification. (Mnemonic intention behind the choice of symbol: ``This must be checked.'') -\Rtodo{Removed triangle symbol because we are not currently using it.} % \item[\hspace*{6.5pt}\cSymbol\csp] A \cSymbolName indicates a % \emph{recommendation} for consistency. If a SBOL document does not % follow this rule, it is not considered strictly invalid as far as the diff --git a/practices.tex b/practices.tex index 77ca6df8..d6d3e7f5 100644 --- a/practices.tex +++ b/practices.tex @@ -15,7 +15,7 @@ \subsection{Indicate Modification of Data with Version} \subsection{Creation and Modification Dates} -\LDtodo{Annotations: Annotating with created and modified dates, and how to add them.} +\LDtodo{Annotations: Annotating with created and modified dates, and how to add them. Is this section needed? -- CJM} \subsection{Compliant SBOL Objects} \label{sec:compliant} From 8d077d4ef07858a3d42361045eea21c7bada2e19 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 19 May 2015 23:45:58 -0500 Subject: [PATCH 143/317] description for other serialization example --- examples_serialization.tex | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/examples_serialization.tex b/examples_serialization.tex index 3794fcd6..d688faaa 100644 --- a/examples_serialization.tex +++ b/examples_serialization.tex @@ -3,6 +3,8 @@ \section{Examples of Serialization} % ----------------------------------------------------------------------------- \subsection{PoPS Receiver} +\Ctodo{Make sure that these serializations are using the current and correct SBOL2.0 terms; at present they most certainly are not (e.g., subModule)} + This example shows the serialization of the PoPS Receiver device designed by Canton and co-workers~\cite{canton-natbio-2008}. In particular, this is a \sbol{ComponentDefinition} comprising five other \sbol{Components} to construct a detector for the cell-cell signaling molecule 3OC$_6$HSL. The five components are arranged in a sequence: @@ -178,9 +180,11 @@ \subsection{PoPS Receiver} \end{lstlisting} \subsection{Toggle Switch} -\Ctodo{Explain the example} -\Ctodo{Make sure that these are using the current and correct terminology} +This example shows the serialization of an SBOL data model for a LacI/TetR toggle switch similar to those constructed in \cite{Gardner2000}. +This design is essentially similar to the one presented in \ref{sec:examples}, except that it uses some alternate groupings in how the total design is built up out of smaller entities. + +\Rtodo{Explain the example. JSB: done} \label{ser:toggleswitch} \lstsetsbol From 9c5a74a5116c51b987fc73d44522d957a946dd4d Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 19 May 2015 23:51:03 -0500 Subject: [PATCH 144/317] moved mapsto; collection -> set --- model.tex | 224 +++++++++++++++++++++++++++--------------------------- 1 file changed, 111 insertions(+), 113 deletions(-) diff --git a/model.tex b/model.tex index c11b9261..740bb1b9 100644 --- a/model.tex +++ b/model.tex @@ -11,7 +11,7 @@ \subsection{Understanding the UML Diagrams} Classes may be connected to other classes by association properties, which are represented in UML diagrams as arrows. These arrows are labeled with data cardinalities in order to indicate how many values a given association property may possess (see below). The remaining (non-association) properties of a class are listed below its name. Each of the latter properties is labeled with its data type and cardinality. -In the case of an association property, the class from which the arrow originates is the owner of the association property. A diamond at the origin of the arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, in which the owner of the association property exists independently of its value. In the SBOL data model, the value of an association property MUST be a URI or collection of URIs that refer to SBOL objects belonging to the class at the tip of the arrow. +In the case of an association property, the class from which the arrow originates is the owner of the association property. A diamond at the origin of the arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, in which the owner of the association property exists independently of its value. In the SBOL data model, the value of an association property MUST be a URI or set of URIs that refer to SBOL objects belonging to the class at the tip of the arrow. By contrast, filled diamonds indicate composite aggregation, also known as a part-whole relationship, in which the value of the association property MUST NOT exist independently of its owner. In addition, in the SBOL data model, it is REQUIRED that the value of each composite aggregation property is a unique SBOL object (that is, not the value for more than one such property). %For example, it will later be shown how objects of the \sbol{SequenceAnnotation} class must associated with an object of the \sbol{ComponentDefinition} class (and only that object). @@ -298,7 +298,7 @@ \subsubsection*{The \sbolheading{roles} property} The \sbol{roles} property is a OPTIONAL set of \external{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} in a biological context. -The \sbol{roles} property of a \sbol{ComponentDefinition} MAY contain a collection of \external{URI}s that SHOULD identify terms from ontologies that are consistent with the \sbol{types} property of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbol{roles} property and their \external{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). As with the \sbol{types} property, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} SHOULD use that term as one of its \sbol{roles}. In addition, no two \sbol{Sequence} objects +The \sbol{roles} property of a \sbol{ComponentDefinition} MAY contain a set of \external{URI}s that SHOULD identify terms from ontologies that are consistent with the \sbol{types} property of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbol{roles} property and their \external{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). As with the \sbol{types} property, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} SHOULD use that term as one of its \sbol{roles}. In addition, no two \sbol{Sequence} objects \begin{table}[ht] \begin{edtable}{tabular}{lll} @@ -322,13 +322,13 @@ \subsubsection*{The \sbolheading{roles} property} \subsubsection*{The \sbolheading{components} property} \label{sec:components} -The \sbol{components} property is OPTIONAL and MAY specify a collection of \sbol{Component} objects contained by its \sbol{ComponentDefinition}. +The \sbol{components} property is OPTIONAL and MAY specify a set of \sbol{Component} objects contained by its \sbol{ComponentDefinition}. While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple copies of a particular part. For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \external{URI} for the \sbol{ComponentDefinition} of a CDS. \subsubsection*{The \sbolheading{sequences} property} \label{sec:sequences} -The \sbol{sequences} property is OPTIONAL and MAY include a collection of \external{URI}s that refer to \sbol{Sequence} objects. These objects define the primary structure of the \sbol{ComponentDefinition}. +The \sbol{sequences} property is OPTIONAL and MAY include a set of \external{URI}s that refer to \sbol{Sequence} objects. These objects define the primary structure of the \sbol{ComponentDefinition}. Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the primary structure of a DNA \sbol{ComponentDefinition}, one that captures its methylation and one that does not. If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects SHOULD be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, no two \sbol{Sequence} objects referred to by the same \sbol{ComponentDefinition} should have the same \sbol{encoding}. @@ -339,16 +339,16 @@ \subsubsection*{The \sbolheading{sequences} property} \subsubsection*{The \sbolheading{sequenceConstraints} property} \label{sec:sequenceConstraints} -The \sbol{sequenceConstraints} property is OPTIONAL and MAY contain a collection of \sbol{SequenceConstraint} objects. These objects describe any restrictions on the relative, sequence-based positions of \sbol{Component} objects contained by the \sbol{ComponentDefinition}. For example, the \sbol{ComponentDefinition} of a gene may specify that its promoter \sbol{Component} precedes its CDS \sbol{Component}. This is particulary useful when a \sbol{ComponentDefinition} lacks a \sbol{Sequence} and therefore cannot specify the precise, sequence-based positions of its \sbol{Component} objects using \sbol{SequenceAnnotation} objects. +The \sbol{sequenceConstraints} property is OPTIONAL and MAY contain a set of \sbol{SequenceConstraint} objects. These objects describe any restrictions on the relative, sequence-based positions of \sbol{Component} objects contained by the \sbol{ComponentDefinition}. For example, the \sbol{ComponentDefinition} of a gene may specify that its promoter \sbol{Component} precedes its CDS \sbol{Component}. This is particulary useful when a \sbol{ComponentDefinition} lacks a \sbol{Sequence} and therefore cannot specify the precise, sequence-based positions of its \sbol{Component} objects using \sbol{SequenceAnnotation} objects. \subsubsection*{The \sbolheading{sequenceAnnotations} property} \label{sec:sequenceAnnotations} -The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a collection of \sbol{SequenceAnnotation} objects. Each \sbol{SequenceAnnotation} contains and describes a \sbol{Location} on a \sbol{Sequence} of the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at the \sbol{Location} of the \sbol{SequenceAnnotation}. +The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. Each \sbol{SequenceAnnotation} contains and describes a \sbol{Location} on a \sbol{Sequence} of the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at the \sbol{Location} of the \sbol{SequenceAnnotation}. \subsubsection*{Serialization} % The parent classes of the \sbol{ComponentDefinition} class are \sbol{TopLevel} and, transitively, \sbol{Identified}. As a result, inherited properties are serialized as explained for these parent classes. -The \sbol{sequences}, \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations} properties of a \sbol{ComponentDefinition} contain objects belonging to the appropriate SBOL classes as their values, while the \sbol{types} and \sbol{roles} properties contain \external{URI}s that identify ontology terms as their values. As shown in the example below, each one of these objects and \external{URI}s is serialized as part of an implicit collection of SBOL properties with singular rather then plural names. Each object is serialized as a RDF/XML node nested within a property, while each \external{URI} is serialized as a \external{rdf:resource} on a property. +The \sbol{sequences}, \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations} properties of a \sbol{ComponentDefinition} contain objects belonging to the appropriate SBOL classes as their values, while the \sbol{types} and \sbol{roles} properties contain \external{URI}s that identify ontology terms as their values. As shown in the example below, each one of these objects and \external{URI}s is serialized as part of an implicit set of SBOL properties with singular rather then plural names. Each object is serialized as a RDF/XML node nested within a property, while each \external{URI} is serialized as a \external{rdf:resource} on a property. \lstsetsbol \begin{lstlisting} @@ -471,6 +471,107 @@ \subsubsection{Component} \end{lstlisting} + +\subsubsection{MapsTo} +\label{sec:MapsTo} + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.6]{uml/maps_to} +\caption[]{Diagram of the \sbol{MapsTo} class and its associated properties.} +\label{uml:maps_to} +\end{center} +\end{figure} + +When \sbol{ComponentInstance} or \sbol{Module} objects are combined together within a new \sbol{ComponentDefinition} or \sbol{ModuleDefinition}, it is often the case that some of the elements comprising these objects are intended to refer to the ``same'' thing, in some sense. +The purpose of the \sbol{MapsTo} class is to make these relationships clear and explicit. + +In particular, a \sbol{MapsTo} object provides two pieces of information: +\begin{itemize} +\item An identity relationship between two \sbol{ComponentInstance} + objects, one inside the definition of a ``lower level'' instance that owns the + \sbol{MapsTo}, the other in the ``higher level'' definition that + contains the ``lower level'' instance. The \sbol{local} property identifies the ``higher + level'' \sbol{ComponentInstance} and the \sbol{remote} property + identifies the ``lower level'' \sbol{ComponentInstance}. +\item Instructions on what to do if the two \sbol{ComponentInstance} + objects link to different \sbol{ComponentDefinition} objects (i.e., + they are not identical). This is specified by the \sbol{refinement} + property, using one of the values from \ref{tbl:mapsto_refinement}. +\end{itemize} + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=1]{images/MapsTo_Diagram2} +\caption{Linking Components using \sbol{MapsTo} entities. Boxes with diagrams represent \sbol{ComponentDefinition} objects, while boxes with the C label represent \sbol{Component} objects and boxes with the M label represent \sbol{MapsTo} objects. In both diagrams, a promoter/5'UTR construct and a 5'UTR/coding sequence construct are being combined to form a complete functional unit. +In the left diagram, both 5'UTRs are abstract, with no sequence (white semicircle), and their definition is taken from a third green 5'UTR component. In the right diagram, the two 5'UTRs are different, and the one associated with the promoter (green semicircle) is selected to override the one associated with the coding sequence (red semicircle) in the new \sbol{ComponentDefinition}.} +\label{image:maps_to_diagram2} +\end{center} +\end{figure} +\Rtodo{Caption: why are some RBSs not filled in? JSB: explained meaning} + +To illustrate this concept, two examples are provided in \ref{image:maps_to_diagram2}, in which a \sbol{ComponentDefinition} for a promoter / 5'UTR / coding-sequence functional unit is constructed by combining two ``lower level'' \sbol{ComponentDefinition} objects. +In both examples, the two ``lower level'' \sbol{ComponentDefinition} objects each contain a 5'UTR, and these are all taken to refer to the ``same'' element of the new ``higher level'' \sbol{ComponentDefinition}. + +In order to represent this relationship, a new \sbol{Component} is created, owned by the ``higher level'' \sbol{ComponentDefinition}, to represent the shared 5'UTR. +It is then linked to the equivalent \sbol{Component} in each of the ``lower level'' \sbol{ComponentDefinition} objects by means of a \sbol{MapsTo}, using one \sbol{MapsTo} per link. +For example, to link the shared ``higher level'' 5'UTR to the 5'UTR in the promoter/5'UTR construct, a \sbol{MapsTo} is created that is owned by the \sbol{Component} instance for the promoter/5'UTR construct, setting its \sbol{local} to the 5'UTR \sbol{Component} in the ``higher-level'' construct and its \sbol{remote} to the 5'UTR \sbol{Component} in the ``lower-level'' construct. +Many ``lower level'' instances can then be linked together in an unambiguous relationship by using one \sbol{MapsTo} object per \sbol{remote}, all sharing the same \sbol{local}. + +The exact same types of relationships also apply and can likewise be declared for \sbol{FunctionalComponent} objects in a \sbol{ModuleDefinition} and the +\sbol{ComponentInstance} objects within the ``lower level'' \sbol{Module} or \sbol{FunctionalComponent} instances that it contains. + +\Rtodo{need to explain the whole 3-way mapsto model and importation better. JSB: done, I think} + +\paragraph{The \sbolheading{local} property}\label{sec:local} +This REQUIRED property is used to specify the \sbol{ComponentInstance} from the ``higher level'' entity. The same higher-level entity MUST own both the \sbol{local} and object that owns the \sbol{MapsTo}. + +\paragraph{The \sbolheading{remote} property}\label{sec:remote} +This REQUIRED property is used to specify the \sbol{ComponentInstance} from the ``lower level'' entity that is being being linked to the \sbol{local} \sbol{ComponentInstance}. This \sbol{ComponentInstance} MUST be owned by the ``lower level'' entity that defines the object that owns the \sbol{MapsTo} + +\paragraph{The \sbolheading{refinement} property}\label{sec:refinement} +Each \sbol{MapsTo} entity MUST specify the relationship between its \sbol{local} and \sbol{remote} components using the refinement property, using one of the values in \ref{tbl:mapsto_refinement}. + +\begin{table}[ht] + \begin{edtable}{tabular}{lp{4in}} + \toprule + \textbf{Refinement URI} & \textbf{Description} \\ + \midrule + \url{http://sbols.org/v2#useremote} & Indicates that properties of the \sbol{ComponentInstance} from the \sbol{remote} are to be used, instead of the \sbol{local} \sbol{ComponentInstance}.\\ + \url{http://sbols.org/v2#uselocal} & Indicates that properties of the \sbol{ComponentInstance} from the \sbol{local} are to be used used, instead of the \sbol{remote} \sbol{ComponentInstance}.\\ + \url{http://sbols.org/v2#verifyIdentical} & Indicates that both \sbol{ComponentInstance} entities must link to the same \sbol{ComponentDefinition} object\\ + \url{http://sbols.org/v2#merge} & Indicates that data fields of the \sbol{local} and \sbol{remote} \sbol{ComponentInstance} entities are to be interpreted in combination\\ + \bottomrule + \end{edtable} + \caption{URIs for the \sbol{refinement} property.} + \label{tbl:mapsto_refinement} +\end{table} + +\Ctodo{libsbol and refinements types here need to agree on consistent capitalization. GM: We agreed to start with lowercase and use the Capital for the next word.} +\Rtodo{The notion of refinement is very unclear -JB Clean up the text; JSB: done} + +\paragraph{Serialization} +The serialization of \sbol{MapsTo} has the following form. +\lstsetsbol +\begin{lstlisting} + + [\emph{one}] ... [\emph{element}] + [\emph{one}] [\emph{element}]] + [\emph{one}] [\emph{element}]] + +\end{lstlisting} + +In the example below, a \sbol{FunctionalComponent} entity from the submodule is linked to a \sbol{FunctionalComponent} entity in a parent module. The former is described in the imported \sbol{ModuleDefinition} entity which is referred to by the definition property of the \sbol{Module} entity. The latter is defined in the parent \sbol{ModuleDefinition}, importing the sub module. The full example can be found in \ref{ser:toggleswitch}. +\lstsetsbol +\begin{lstlisting} + + USEREMOTE + + + +\end{lstlisting} + + \subsubsection{SequenceAnnotation} \label{sec:SequenceAnnotation} The \sbol{SequenceAnnotation} class describes a precisely known location of interest on the \sbol{Sequence} objects linked by its parent \sbol{ComponentDefinition} object. It can also optionally associate this location with a \sbol{Component} object. \sbol{SequenceAnnotation} objects specify their location using a set of \sbol{Location} objects, as described below. It is a set of location objects to allow the annotation of a non-contiguous location on a sequence. @@ -487,9 +588,9 @@ \subsubsection{SequenceAnnotation} \paragraph{The \sbolheading{locations} property}\label{sec:locations} \label{sec:locations} -Every \sbol{SequenceAnnotation} MUST have at least one \sbol{Location} object in its collection of \sbol{locations}. The value of this property is a nested \sbol{Location} object. +Every \sbol{SequenceAnnotation} MUST have at least one \sbol{Location} object in its set of \sbol{locations}. The value of this property is a nested \sbol{Location} object. -\Ctodo{Use term collection above. Is it me or is this confusing with our collection object? We could use set instead.} +\Rtodo{Use term collection above. Is it me or is this confusing with our collection object? We could use set instead. JSB: changed collection to set, here and a number of other places} \paragraph{The \sbolheading{component} property}\label{sec:component} \sbol{SequenceAnnotation} objects MAY use this property to link location information to a \sbol{Component} object, by specifying its URI. @@ -1010,109 +1111,6 @@ \subsubsection{Module} \Rtodo{add an example; JSB: done} -\subsubsection{MapsTo} -\label{sec:MapsTo} - -\Ctodo{I propose to move this up to the ComponentDefinition section, between Component and SequenceAnnotation, since it can be used for Component/Component relationships too. -JSB I concur - CJM} - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.6]{uml/maps_to} -\caption[]{Diagram of the \sbol{MapsTo} class and its associated properties.} -\label{uml:maps_to} -\end{center} -\end{figure} - -When \sbol{ComponentInstance} or \sbol{Module} objects are combined together within a new \sbol{ComponentDefinition} or \sbol{ModuleDefinition}, it is often the case that some of the elements comprising these objects are intended to refer to the ``same'' thing, in some sense. -The purpose of the \sbol{MapsTo} class is to make these relationships clear and explicit. - -In particular, a \sbol{MapsTo} object provides two pieces of information: -\begin{itemize} -\item An identity relationship between two \sbol{ComponentInstance} - objects, one inside the definition of a ``lower level'' instance that owns the - \sbol{MapsTo}, the other in the ``higher level'' definition that - contains the ``lower level'' instance. The \sbol{local} property identifies the ``higher - level'' \sbol{ComponentInstance} and the \sbol{remote} property - identifies the ``lower level'' \sbol{ComponentInstance}. -\item Instructions on what to do if the two \sbol{ComponentInstance} - objects link to different \sbol{ComponentDefinition} objects (i.e., - they are not identical). This is specified by the \sbol{refinement} - property, using one of the values from \ref{tbl:mapsto_refinement}. -\end{itemize} - -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=1]{images/MapsTo_Diagram2} -\caption{Linking Components using \sbol{MapsTo} entities. Boxes with diagrams represent \sbol{ComponentDefinition} objects, while boxes with the C label represent \sbol{Component} objects and boxes with the M label represent \sbol{MapsTo} objects. In both diagrams, a promoter/5'UTR construct and a 5'UTR/coding sequence construct are being combined to form a complete functional unit. -In the left diagram, both 5'UTRs are abstract, with no sequence (white semicircle), and their definition is taken from a third green 5'UTR component. In the right diagram, the two 5'UTRs are different, and the one associated with the promoter (green semicircle) is selected to override the one associated with the coding sequence (red semicircle) in the new \sbol{ComponentDefinition}.} -\label{image:maps_to_diagram2} -\end{center} -\end{figure} -\Rtodo{Caption: why are some RBSs not filled in? JSB: explained meaning} - -To illustrate this concept, two examples are provided in \ref{image:maps_to_diagram2}, in which a \sbol{ComponentDefinition} for a promoter / 5'UTR / coding-sequence functional unit is constructed by combining two ``lower level'' \sbol{ComponentDefinition} objects. -In both examples, the two ``lower level'' \sbol{ComponentDefinition} objects each contain a 5'UTR, and these are all taken to refer to the ``same'' element of the new ``higher level'' \sbol{ComponentDefinition}. - -In order to represent this relationship, a new \sbol{Component} is created, owned by the ``higher level'' \sbol{ComponentDefinition}, to represent the shared 5'UTR. -It is then linked to the equivalent \sbol{Component} in each of the ``lower level'' \sbol{ComponentDefinition} objects by means of a \sbol{MapsTo}, using one \sbol{MapsTo} per link. -For example, to link the shared ``higher level'' 5'UTR to the 5'UTR in the promoter/5'UTR construct, a \sbol{MapsTo} is created that is owned by the \sbol{Component} instance for the promoter/5'UTR construct, setting its \sbol{local} to the 5'UTR \sbol{Component} in the ``higher-level'' construct and its \sbol{remote} to the 5'UTR \sbol{Component} in the ``lower-level'' construct. -Many ``lower level'' instances can then be linked together in an unambiguous relationship by using one \sbol{MapsTo} object per \sbol{remote}, all sharing the same \sbol{local}. - -The exact same types of relationships also apply and can likewise be declared for \sbol{FunctionalComponent} objects in a \sbol{ModuleDefinition} and the -\sbol{ComponentInstance} objects within the ``lower level'' \sbol{Module} or \sbol{FunctionalComponent} instances that it contains. - -\Rtodo{need to explain the whole 3-way mapsto model and importation better. JSB: done, I think} - -\paragraph{The \sbolheading{local} property}\label{sec:local} -This REQUIRED property is used to specify the \sbol{ComponentInstance} from the ``higher level'' entity. The same higher-level entity MUST own both the \sbol{local} and object that owns the \sbol{MapsTo}. - -\paragraph{The \sbolheading{remote} property}\label{sec:remote} -This REQUIRED property is used to specify the \sbol{ComponentInstance} from the ``lower level'' entity that is being being linked to the \sbol{local} \sbol{ComponentInstance}. This \sbol{ComponentInstance} MUST be owned by the ``lower level'' entity that defines the object that owns the \sbol{MapsTo} - -\paragraph{The \sbolheading{refinement} property}\label{sec:refinement} -Each \sbol{MapsTo} entity MUST specify the relationship between its \sbol{local} and \sbol{remote} components using the refinement property, using one of the values in \ref{tbl:mapsto_refinement}. - -\begin{table}[ht] - \begin{edtable}{tabular}{lp{4in}} - \toprule - \textbf{Refinement URI} & \textbf{Description} \\ - \midrule - \url{http://sbols.org/v2#useremote} & Indicates that properties of the \sbol{ComponentInstance} from the \sbol{remote} are to be used, instead of the \sbol{local} \sbol{ComponentInstance}.\\ - \url{http://sbols.org/v2#uselocal} & Indicates that properties of the \sbol{ComponentInstance} from the \sbol{local} are to be used used, instead of the \sbol{remote} \sbol{ComponentInstance}.\\ - \url{http://sbols.org/v2#verifyIdentical} & Indicates that both \sbol{ComponentInstance} entities must link to the same \sbol{ComponentDefinition} object\\ - \url{http://sbols.org/v2#merge} & Indicates that data fields of the \sbol{local} and \sbol{remote} \sbol{ComponentInstance} entities are to be interpreted in combination\\ - \bottomrule - \end{edtable} - \caption{URIs for the \sbol{refinement} property.} - \label{tbl:mapsto_refinement} -\end{table} - -\Ctodo{libsbol and refinements types here need to agree on consistent capitalization. GM: We agreed to start with lowercase and use the Capital for the next word.} -\Rtodo{The notion of refinement is very unclear -JB Clean up the text; JSB: done} - -\paragraph{Serialization} -The serialization of \sbol{MapsTo} has the following form. -\lstsetsbol -\begin{lstlisting} - - [\emph{one}] ... [\emph{element}] - [\emph{one}] [\emph{element}]] - [\emph{one}] [\emph{element}]] - -\end{lstlisting} - -In the example below, a \sbol{FunctionalComponent} entity from the submodule is linked to a \sbol{FunctionalComponent} entity in a parent module. The former is described in the imported \sbol{ModuleDefinition} entity which is referred to by the definition property of the \sbol{Module} entity. The latter is defined in the parent \sbol{ModuleDefinition}, importing the sub module. The full example can be found in \ref{ser:toggleswitch}. -\lstsetsbol -\begin{lstlisting} - - USEREMOTE - - - -\end{lstlisting} - - - \subsubsection{Interaction} \label{sec:Interaction} @@ -1208,7 +1206,7 @@ \subsubsection{Participation} \end{figure} \subsubsection*{The \sbolheading{members} property} -The \sbol{members} property has a data type of URI and has the URI for a \sbol{TopLevel} entity. A collection may have any number of members, including none. +The \sbol{members} property has a data type of URI and has the URI for a \sbol{TopLevel} entity. A \sbol{Collection} may have any number of members, including none. \subsubsection*{Serialization} From c0a5519fcf8b32b5abc621d961dbe20e8fce4100 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Wed, 20 May 2015 00:30:58 -0500 Subject: [PATCH 145/317] interaction, participation --- model.tex | 76 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 57 insertions(+), 19 deletions(-) diff --git a/model.tex b/model.tex index 740bb1b9..378a4a98 100644 --- a/model.tex +++ b/model.tex @@ -2,6 +2,9 @@ \section{SBOL Data Model}\label{sec:model} % ----------------------------------------------------------------------------- +\Ctodo{We should make all of the example URIs compliant} +\Ctodo{Need to confirm that the cardinalities of all serializations match the UML} + In this section, we describe the types of biological design data that can belong to an SBOL document and the relationships between these data types. The SBOL data model is specified using Unified Modeling Language (UML) 2.0 diagrams \href{http://www.omg.org/spec/UML/2.0/}{(OMG 2005)}. Subsections \ref{sec:umldiagrams}, \ref{sec:nameconventions}, \ref{sec:datatypes} review the basics of UML diagrams and explain the naming conventions and generic data types used in this specification. The remaining sections then describe the SBOL data model in detail. Complete SBOL examples and best practices when using the standard can be found in \ref{sec:examples} and \ref{sec:bestpractices}, respectively. \subsection{Understanding the UML Diagrams} @@ -64,7 +67,7 @@ \subsection{Data Types} \subsection{Identified} \label{sec:Identified} -\Ctodo{Put a small concrete example for each toplevel, in the style of the mapsTo diagram} +\NVtodo{Put a small concrete example for each toplevel, in the style of the mapsTo diagram} All SBOL-defined classes are directly or indirectly derived from the \sbol{Identified} abstract class. This inheritance means that all SBOL objects are identified using \external{URI}s that uniquely refer to these objects within an SBOL document or at locations on the World Wide Web. @@ -1122,30 +1125,55 @@ \subsubsection{Interaction} \end{center} \end{figure} -\Ctodo{Some of this description is incorrect or unclear} -The Interaction class provides a qualitative basis for asserting the intended function of a given ModuleDefinition object. The proposed data model supports the representation of regulatory interactions, such as activation or repression, and processes from the central dogma of biology, such as transcription and translation. Other supported interaction types include non-covalent binding between a small molecule and TF, and phosphorylation of a TF by an enzyme. -\Ctodo{What does it mean for an interaction to be supported? --> nothing, pick a better word} +\Rtodo{Heavily rewrote this section. -JSB} +The \sbol{Interaction} class provides a description of the functional interactions of entities within a \sbol{ModuleDefinition}. +For example, it can be used to represent regulatory interactions, such as activation or repression, processes from the central dogma of biology, such as transcription and translation, or molecular interactions like non-covalent binding between a small molecule and transcription factor or phosphorylation of a transcription factor by an enzyme. +Such an \sbol{Interaction} is represented in SBOL by referring to an ontology defining the type of interaction and declaring how various entities participate in the interaction. + +\paragraph{The \sbolheading{types} property}\label{sec:types} + +The \sbol{types} property is a REQUIRED set of one or more URIs that identify an appropriate ontology term describing the behavior represented by this \sbol{Interaction}. +If an \sbol{Interaction} object has multiple +\sbol{types} URIs, then they must identify synonymous terms. + +Values for this URI are RECOMMENDED to be chosen from the from the occurring entity relationship branch of the Systems Biology Ontology (SBO) where possible. -Each Interaction object must specify its type with at least one URI that identifies an appropriate ontology term, such as a term from the Systems Biology Ontology (SBO). If an Interaction object has multiple type URIs, then they must identify synonymous terms. +\Rtodo{Like the others, SBO is REQUIRED if the term exists, and you can add other stuff. We also need to explain this up front in the beginning of the section; JSB: done} -\Ctodo{Like the others, SBO is REQUIRED if the term exists, and you can add other stuff. We also need to explain this up front in the beginning of the section} +\paragraph{The \sbolheading{participations} property}\label{sec:participations} + +The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects, each of which identifies a \sbol{FunctionalComponent} and the \sbol{role} is plays in the interaction. -Furthermore, an \sbol{Interaction} object can specify the set of \sbol{FunctionalComponent} entities that are interacting by linking to \sbol{Participation} objects that descibe how each one participates in the interaction. -\Rtodo{I don't think this is really a MUST. JSB: it wasn't; it is resolved.} \paragraph{Serialization} -The serialization of \sbol{Interaction}s has the following form. +The serialization of \sbol{Interaction} objects has the following form. \lstsetsbol \begin{lstlisting} [\emph{one or more}] [\emph{elements}] - [\emph{one or more}] + [\emph{zero or more}] ... [\emph{elements}] \end{lstlisting} +The example below shows an \sbol{Interaction} representing an inhibition relationship between a repressor and a promoter (omitting the details of the \sbol{Participation} objects): + +\lstsetsbol +\begin{lstlisting} + + + + ... + + + ... + + +\end{lstlisting} + + \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/participation} @@ -1157,24 +1185,36 @@ \subsubsection{Interaction} \subsubsection{Participation} \label{sec:Participation} -\Ctodo{Fix the linking and clean grammar} +\Rtodo{Fix the linking and clean grammar. JSB: done} + +Each \sbol{Participation} object describes the role or roles that a +particular \sbol{FunctionalComponent} plays in its parent +\sbol{Interaction}. + +\paragraph{The \sbolheading{roles} property}\label{sec:roles} -Each object of the Participation class must specify the role of its participant FunctionalComponent object in its parent Interaction object with at least one URI that identifies an appropriate ontology term. If a Participation object has multiple role URIs, then they must identify synonymous terms. +The \sbol{roles} property is an OPTIONAL set of URIs that identify an appropriate ontology term describing this elements relationship to its parent \sbol{Interaction}. +If a \sbol{Participation} object has multiple +\sbol{role} URIs, then they must identify synonymous terms. -\Ctodo{SBO is our REQUIRED term if available, just as in the prior cases} +Values for this URI are RECOMMENDED to be chosen from the from the participant role branch of the Systems Biology Ontology (SBO) where possible. +\Rtodo{SBO is our REQUIRED term if available, just as in the prior cases. JSB: done, but set as RECOMMENDED, not required (as elsewhere)} \Ctodo{Goksel is going to check if there is a superset ontology that should displace SBO} -While the Interaction class provide a qualitative description of genetic function, quantitative descriptions are also needed for genetic design. Instead of introducing a new language for the specification of mathematical models of biology, the proposed data model leverages existing standards and links to them via the Model class. +\paragraph{The \sbolheading{participant} property}\label{sec:participant} + +The \sbol{participant} property MUST specify precisely one \sbol{FunctionalComponent} object that plays the designated \sbol{role} in its parent \sbol{Interaction} object. + \paragraph{Serialization} -The serialization of \sbol{Participation}s has the following form. +The serialization of \sbol{Participation} objects has the following form. \lstsetsbol \begin{lstlisting} - [\emph{one or more}] - [\emph{one or more}] + [\emph{zero or more}] + [\emph{one}] \end{lstlisting} @@ -1220,8 +1260,6 @@ \subsubsection*{Serialization} \end{lstlisting} -\Ctodo{We should make all of the example URIs compliant} - The example below shows the serialization of a \sbol{Collection} object grouping together a library of constitutive promoters. \lstsetsbol \begin{lstlisting} From 575a48f000dcb96699f5a6bc029fc72bf992e590 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 20 May 2015 14:08:51 +0000 Subject: [PATCH 146/317] Update on Overleaf. --- model.tex | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/model.tex b/model.tex index 378a4a98..6c26b96f 100644 --- a/model.tex +++ b/model.tex @@ -220,7 +220,7 @@ \subsubsection*{The \sbolheading{encoding} property} The \sbol{encoding} property is REQUIRED and has a data type of \external{URI}. This property is used to indicate how the \sbol{elements} property of a \sbol{Sequence} MUST be formed and interpreted. For example, the \sbol{elements} property of a \sbol{Sequence} with an \external{IUPAC DNA} encoding property MUST contain characters that represent nucleotide bases, such as {\tt a}, {\tt t}, {\tt c}, and {\tt g}. The \sbol{elements} property of a \sbol{Sequence} with a \external{simplified molecular-input line-entry system (SMILES)} encoding, however, MUST contain characters that represent atoms and chemical bonds, such as {\tt C}, {\tt N}, {\tt O}, and {\tt =}. -\ref{tbl:sequence_encodings} provides a list of RECOMMENDED \external{URI}s for the \sbol{encoding} property. These terms are organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that MUST refer to a \sbol{Sequence} with such an \sbol{encoding} (if it refers to any \sbol{Sequence}). When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \external{URI}s in \ref{tbl:sequence_encodings}, it SHOULD use that \external{URI} for this property. +\ref{tbl:sequence_encodings} provides a list of RECOMMENDED \external{URI}s for the \sbol{encoding} property. These terms are organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that MUST refer to a \sbol{Sequence} with such an \sbol{encoding} (if it refers to any \sbol{Sequence} at all). When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \external{URI}s in \ref{tbl:sequence_encodings}, it SHOULD use that \external{URI} for this property. %A Summary of letters for nucleic acids and aminoacids \begin{table}[ht] @@ -233,7 +233,7 @@ \subsubsection*{The \sbolheading{encoding} property} SMILES & \url{http://www.opensmiles.org/opensmiles.html} & SmallMolecule \\ \bottomrule \end{edtable} - \caption{RECOMMENDED \external{URI}s for specifying the \sbol{encoding} property of a \sbol{Sequence}, organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that MUST refer to a \sbol{Sequence} with such an \sbol{encoding} (if it refers to any \sbol{Sequence}).} + \caption{RECOMMENDED \external{URI}s for specifying the \sbol{encoding} property of a \sbol{Sequence}, organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that MUST refer to a \sbol{Sequence} with such an \sbol{encoding} (if it refers to any \sbol{Sequence} at all).} \label{tbl:sequence_encodings} \end{table} @@ -248,7 +248,7 @@ \subsubsection*{Serialization} \end{lstlisting} -The example below shows the serialization of the \sbol{Sequence} for a promoter. The nucleotide bases of the \sbol{Sequence} are serialized as the \external{String} value of its \sbol{elements} property, while its \external{IUPAC DNA} encoding is serialized as the \external{URI} value of its \sbol{encoding} property. +The example below shows the serialization for the \sbol{Sequence} of a promoter. The nucleotide bases of the \sbol{Sequence} are serialized as the \external{String} value of its \sbol{elements} property, while its \external{IUPAC DNA} encoding is serialized as the \external{URI} value of its \sbol{encoding} property. \lstsetsbol \begin{lstlisting} @@ -299,9 +299,9 @@ \subsubsection*{The \sbolheading{types} property} \subsubsection*{The \sbolheading{roles} property} \label{sec:roles} -The \sbol{roles} property is a OPTIONAL set of \external{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} in a biological context. +The \sbol{roles} property is an OPTIONAL set of \external{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} in a biological context. -The \sbol{roles} property of a \sbol{ComponentDefinition} MAY contain a set of \external{URI}s that SHOULD identify terms from ontologies that are consistent with the \sbol{types} property of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbol{roles} property and their \external{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). As with the \sbol{types} property, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} SHOULD use that term as one of its \sbol{roles}. In addition, no two \sbol{Sequence} objects +The \sbol{roles} property of a \sbol{ComponentDefinition} MAY contain a set of \external{URI}s that SHOULD identify terms from ontologies that are consistent with the \sbol{types} property of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbol{roles} property and their \external{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). As with the \sbol{types} property, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} SHOULD use that term as one of its \sbol{roles}. \begin{table}[ht] \begin{edtable}{tabular}{lll} @@ -318,7 +318,7 @@ \subsubsection*{The \sbolheading{roles} property} Effector & \url{http://identifiers.org/chebi/CHEBI:35224} & Small Molecule \\ \bottomrule \end{edtable} - \caption{RECOMMENDED ontology terms to specify the \sbol{roles} property of a \sbol{ComponentDefinition}, organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{ tbl:componentdefinition_types}).} + \caption{RECOMMENDED ontology terms to specify the \sbol{roles} property of a \sbol{ComponentDefinition}, organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}).} \label{tbl:componentdefinition_roles} \end{table} @@ -333,21 +333,19 @@ \subsubsection*{The \sbolheading{sequences} property} \label{sec:sequences} The \sbol{sequences} property is OPTIONAL and MAY include a set of \external{URI}s that refer to \sbol{Sequence} objects. These objects define the primary structure of the \sbol{ComponentDefinition}. -Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the primary structure of a DNA \sbol{ComponentDefinition}, one that captures its methylation and one that does not. If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects SHOULD be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, no two \sbol{Sequence} objects referred to by the same \sbol{ComponentDefinition} should have the same \sbol{encoding}. +Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the structure of a DNA \sbol{ComponentDefinition}, one that captures its primary structure at the level of nucleotide bases and one that captures its secondary and tertiary structure at the level of atoms and bonds. -\Rtodo{I think the requirement that multiple sequences be consistent with each other is a SHOULD, not a MUST, since I don't think we can realistically validate this consistency (this is how I've been approaching other requirements in this section, but I haven't reconciled them with the validation rules yet). Also, this was previously worded such that the lengths of the sequences had to be precisely the same in order to avoid ambiguous locations for sequence annotations, but what if one sequence is a SMILES encoding of DNA and not IUPAC? I think we need pointers from sequence annotations to the sequences to which they apply. I'll send a mail out about this - Nic} - -Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbol{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of these objects MUST have the \sbol{encoding} that corresponds to this term (see \ref{tbl:sequence_encodings}). For example, if the \sbol{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) should have an \external{IUPAC DNA} \sbol{encoding}. +If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects SHOULD be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, any two \sbol{Sequence} objects referred to by the same \sbol{ComponentDefinition} MUST NOT have the same \sbol{encoding}. Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbol{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that corresponds to this term (see \ref{tbl:sequence_encodings}). For example, if the \sbol{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}. \subsubsection*{The \sbolheading{sequenceConstraints} property} \label{sec:sequenceConstraints} -The \sbol{sequenceConstraints} property is OPTIONAL and MAY contain a set of \sbol{SequenceConstraint} objects. These objects describe any restrictions on the relative, sequence-based positions of \sbol{Component} objects contained by the \sbol{ComponentDefinition}. For example, the \sbol{ComponentDefinition} of a gene may specify that its promoter \sbol{Component} precedes its CDS \sbol{Component}. This is particulary useful when a \sbol{ComponentDefinition} lacks a \sbol{Sequence} and therefore cannot specify the precise, sequence-based positions of its \sbol{Component} objects using \sbol{SequenceAnnotation} objects. +The \sbol{sequenceConstraints} property is OPTIONAL and MAY contain a set of \sbol{SequenceConstraint} objects. These objects describe any restrictions on the relative, sequence-based positions of the \sbol{Component} objects contained by the \sbol{ComponentDefinition}. For example, the \sbol{ComponentDefinition} of a gene may specify that its promoter \sbol{Component} precedes its CDS \sbol{Component}. This is particulary useful when a \sbol{ComponentDefinition} lacks a \sbol{Sequence} and therefore cannot specify the precise, sequence-based positions of its \sbol{Component} objects using \sbol{SequenceAnnotation} objects. \subsubsection*{The \sbolheading{sequenceAnnotations} property} \label{sec:sequenceAnnotations} -The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. Each \sbol{SequenceAnnotation} contains and describes a \sbol{Location} on a \sbol{Sequence} of the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at the \sbol{Location} of the \sbol{SequenceAnnotation}. +The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. Each \sbol{SequenceAnnotation} contains and describes a \sbol{Location} on a \sbol{Sequence} of the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} contained by the \sbol{ComponentDefinition} at the \sbol{Location} of the \sbol{SequenceAnnotation}. \subsubsection*{Serialization} % The parent classes of the \sbol{ComponentDefinition} class are \sbol{TopLevel} and, transitively, \sbol{Identified}. As a result, inherited properties are serialized as explained for these parent classes. @@ -372,7 +370,7 @@ \subsubsection*{Serialization} \end{lstlisting} -The example below shows the serialization of a simple \sbol{ComponentDefinition} for a promoter. The BioPAX term \external{DnaRegion} and the ChEBI term \external{CHEBI:4705} (\external{double-stranded DNA}) are used to indicate that the type of biological entity represented by this \sbol{ComponentDefinition} is DNA. Its role is specified using the SO terms \external{SO:0000167} (\external{promoter}) and the more specific \external{SO:0000613} (\external{bacterial\_RNApol\_promoter}). +The example below shows the serialization for the \sbol{ComponentDefinition} of a promoter. The BioPAX term \external{DnaRegion} and the ChEBI term \external{CHEBI:4705} (\external{double-stranded DNA}) are used to indicate that the type of biological entity represented by this \sbol{ComponentDefinition} is DNA. Its role is specified using the SO terms \external{SO:0000167} (\external{promoter}) and the more specific \external{SO:0000613} (\external{bacterial\_RNApol\_promoter}). \lstsetsbol \begin{lstlisting} From 2f2623b4744daf7907c689daa3e98612dbe39235 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 20 May 2015 15:36:16 +0000 Subject: [PATCH 147/317] Update on Overleaf. --- apdx-validation.tex | 2 ++ model.tex | 13 +++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 6a5bfde5..2e5d361b 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -142,6 +142,8 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{The \sbol{sequences} property is an OPTIONAL set of URI references to \sbol{Sequence} objects. (Reference: \sec{sec:ComponentDefinition})} +\Ctodo{Are the following checkable?} + \printModeling{Each URI in the set of \sbol{sequences} SHOULD reference an equivalent \sbol{Sequence} object. (Reference: \sec{sec:Sequence})} \printValid{A DNA \sbol{ComponentDefinition} MUST include the URI\\ diff --git a/model.tex b/model.tex index 6c26b96f..fa2aa23b 100644 --- a/model.tex +++ b/model.tex @@ -217,10 +217,9 @@ \subsubsection*{The \sbolheading{elements} property} \subsubsection*{The \sbolheading{encoding} property} \label{sec:encoding} -The \sbol{encoding} property is REQUIRED and has a data type of \external{URI}. This property is used to indicate how the \sbol{elements} property of a \sbol{Sequence} MUST be formed and interpreted. -For example, the \sbol{elements} property of a \sbol{Sequence} with an \external{IUPAC DNA} encoding property MUST contain characters that represent nucleotide bases, such as {\tt a}, {\tt t}, {\tt c}, and {\tt g}. The \sbol{elements} property of a \sbol{Sequence} with a \external{simplified molecular-input line-entry system (SMILES)} encoding, however, MUST contain characters that represent atoms and chemical bonds, such as {\tt C}, {\tt N}, {\tt O}, and {\tt =}. +The \sbol{encoding} property is REQUIRED and has a data type of \external{URI}. This property is used to indicate how the \sbol{elements} property of a \sbol{Sequence} SHOULD be formed and interpreted. -\ref{tbl:sequence_encodings} provides a list of RECOMMENDED \external{URI}s for the \sbol{encoding} property. These terms are organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that MUST refer to a \sbol{Sequence} with such an \sbol{encoding} (if it refers to any \sbol{Sequence} at all). When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \external{URI}s in \ref{tbl:sequence_encodings}, it SHOULD use that \external{URI} for this property. +\ref{tbl:sequence_encodings} provides a list of RECOMMENDED \external{URI}s for the \sbol{encoding} property. The terms in \ref{tbl:sequence_encodings} are organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that MUST refer to a \sbol{Sequence} with such an \sbol{encoding} (if it refers to any \sbol{Sequence} at all). When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \external{URI}s in \ref{tbl:sequence_encodings}, it SHOULD use that \external{URI} for this property. %A Summary of letters for nucleic acids and aminoacids \begin{table}[ht] @@ -237,6 +236,9 @@ \subsubsection*{The \sbolheading{encoding} property} \label{tbl:sequence_encodings} \end{table} +If the \sbol{encoding} property of a \sbol{Sequence} contains a \external{URI} from \ref{tbl:sequence_encodings}, then this property indicates how the \sbol{elements} property of the \sbol{Sequence} MUST be formed and interpreted. +For example, the \sbol{elements} property of a \sbol{Sequence} with an \external{IUPAC DNA} encoding property MUST contain characters that represent nucleotide bases, such as {\tt a}, {\tt t}, {\tt c}, and {\tt g}. The \sbol{elements} property of a \sbol{Sequence} with a \external{simplified molecular-input line-entry system (SMILES)} encoding, however, MUST contain characters that represent atoms and chemical bonds, such as {\tt C}, {\tt N}, {\tt O}, and {\tt =}. + \subsubsection*{Serialization} The serialization of a \sbol{Sequence} has the following form: \lstsetsbol @@ -335,7 +337,7 @@ \subsubsection*{The \sbolheading{sequences} property} Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the structure of a DNA \sbol{ComponentDefinition}, one that captures its primary structure at the level of nucleotide bases and one that captures its secondary and tertiary structure at the level of atoms and bonds. -If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects SHOULD be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, any two \sbol{Sequence} objects referred to by the same \sbol{ComponentDefinition} MUST NOT have the same \sbol{encoding}. Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbol{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that corresponds to this term (see \ref{tbl:sequence_encodings}). For example, if the \sbol{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}. +If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects SHOULD be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, any two \sbol{Sequence} objects referred to by the same \sbol{ComponentDefinition} MUST NOT have the same \sbol{encoding}. Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbol{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that corresponds to this term (see \ref{tbl:sequence_encodings}). Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbol{types} property must refer to the corresponding term from \ref{tbl:componentdefinition_types}. For example, if the \sbol{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an an \external{IUPAC DNA} \sbol{encoding}, then its \sbol{types} property must refer to the BioPAX term for DNA. \subsubsection*{The \sbolheading{sequenceConstraints} property} \label{sec:sequenceConstraints} @@ -398,8 +400,7 @@ \subsubsection{ComponentInstance} \end{figure} \Ctodo{Nic, please change definition to componentDefinition in the diagram to match the text.} -When a \sbol{ComponentDefinition} is used as an element of a larger design, each separate usage is represented by a \sbol{ComponentInstance} object. -The \sbol{ComponentInstance} class is abstract, so every usage must belong to one of its two subclasses: +The \sbol{ComponentInstance} abstract class is inherited by SBOL classes that represent the usage or occurrence of a \sbol{ComponentDefinition} within a larger design (that is, another \sbol{ComponentDefinition} or \sbol{ModuleDefinition}). Currently, there are two subclasses of \sbol{ComponentInstance}: \begin{itemize} \item The \sbol{Component} class is used to specify the structural usage of a \sbol{ComponentDefinition} inside another \sbol{ComponentDefinition} via the \sbol{components} property. \item The \sbol{FunctionalComponent} class is used to specify the functional usage of a \sbol{ComponentDefinition} inside a \sbol{ModuleDefinition} via the \sbol{functionalComponents} property. This class is described in \ref{sec:FunctionalComponent}. From 13149296b5656e1a62fc57ff683b7251407891dc Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Wed, 20 May 2015 16:41:11 +0000 Subject: [PATCH 148/317] Update on Overleaf. --- model.tex | 35 +++++++++++++---------------------- overview.tex | 1 + 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/model.tex b/model.tex index fa2aa23b..c9433fac 100644 --- a/model.tex +++ b/model.tex @@ -2,8 +2,7 @@ \section{SBOL Data Model}\label{sec:model} % ----------------------------------------------------------------------------- -\Ctodo{We should make all of the example URIs compliant} -\Ctodo{Need to confirm that the cardinalities of all serializations match the UML} +\Ctodo{Need to generate all serialization examples and specs using the library.} In this section, we describe the types of biological design data that can belong to an SBOL document and the relationships between these data types. The SBOL data model is specified using Unified Modeling Language (UML) 2.0 diagrams \href{http://www.omg.org/spec/UML/2.0/}{(OMG 2005)}. Subsections \ref{sec:umldiagrams}, \ref{sec:nameconventions}, \ref{sec:datatypes} review the basics of UML diagrams and explain the naming conventions and generic data types used in this specification. The remaining sections then describe the SBOL data model in detail. Complete SBOL examples and best practices when using the standard can be found in \ref{sec:examples} and \ref{sec:bestpractices}, respectively. @@ -106,9 +105,7 @@ \subsubsection*{The \sbolheading{displayId} property} \label{sec:displayId} The \sbol{displayId} property is an OPTIONAL identifier with a data type of \external{String}. This property is intended to be an intermediate between \sbol{name} and \sbol{identity} that is machine-readable, but more human-readable than the full \external{URI} of an \sbol{identity}. -If the \sbol{displayId} property is used, then its \external{String} value SHOULD be locally unique (global uniqueness is not required) and MUST be compliant with the type \external{http://www.w3.org/TR/xmlschema-2/\#NCName} - -\Ctodo{This is the wrong syntax. It allows "-" and "." which we do not allow. When resolving, make sure validation rules are in sync with the decision taken.} +If the \sbol{displayId} property is used, then its \external{String} value SHOULD be locally unique (global uniqueness is not required) and MUST be compliant with the type \external{http://www.w3.org/TR/xmlschema-2/\#NCName}, except that it must not include the characters "-" and ".". \subsubsection*{The \sbolheading{version} property} \label{sec:version} @@ -398,7 +395,6 @@ \subsubsection{ComponentInstance} \label{uml:component} \end{center} \end{figure} -\Ctodo{Nic, please change definition to componentDefinition in the diagram to match the text.} The \sbol{ComponentInstance} abstract class is inherited by SBOL classes that represent the usage or occurrence of a \sbol{ComponentDefinition} within a larger design (that is, another \sbol{ComponentDefinition} or \sbol{ModuleDefinition}). Currently, there are two subclasses of \sbol{ComponentInstance}: \begin{itemize} @@ -406,26 +402,23 @@ \subsubsection{ComponentInstance} \item The \sbol{FunctionalComponent} class is used to specify the functional usage of a \sbol{ComponentDefinition} inside a \sbol{ModuleDefinition} via the \sbol{functionalComponents} property. This class is described in \ref{sec:FunctionalComponent}. \end{itemize} -\paragraph{The \sbolheading{componentDefinition} property} -\label{sec:componentDefinition} +\paragraph{The \sbolheading{definition} property} +\label{sec:definition} -Every \sbol{ComponentInstance} MUST be associated with precisely one -\sbol{ComponentDefinition}, which is the design that it is an instance of. +The \sbol{definition} property is a REQUIRED \external{URI} that refers to the \sbol{ComponentDefinition} that is instantiated by the \sbol{ComponentInstance}. \paragraph{The \sbolheading{mapsTo} property} -\label{sec:mapsTo} - -\Rtodo{Need to make sure all MapsTo statements are correct; JSB: done} -The \sbol{mapsTo} property links \sbol{Component} objects (both Components and FunctionalComponents) together within a larger design, indicating that they refer to the same entity. +\label{sec:mapsTos} -The third data field, \sbol{mapsTo}, is a set of \sbol{MapsTo} objects. These are used as described below in the section on \sbol{MapsTo} below, to identify definition relationships between other \sbol{ComponentInstance} objects. +The \sbol{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects that link \sbol{ComponentInstance} objects (both \sbol{Component} objects and \sbol{FunctionalComponent} objects) together within a larger design. \ref{sec:MapsTo} contains a more detailed description the \sbol{MapsTo} class. \paragraph{The \sbolheading{access} property} \label{sec:access} -The \sbol{access} determines whether a \sbol{ComponentInstance} -can be identified with a part in a larger design via \sbol{MapsTo}. -The \sbol{access} property must be set to one of the following URIs: +The \sbol{access} property is a REQUIRED \external{URI} that indicates whether a \sbol{ComponentInstance} +can be referred to by a \sbol{MapsTo}. + +The value of the \sbol{access} property be set to one of the following URIs: \begin{itemize} \item \url{http://sbols.org/v2#public} @@ -539,8 +532,8 @@ \subsubsection{MapsTo} \toprule \textbf{Refinement URI} & \textbf{Description} \\ \midrule - \url{http://sbols.org/v2#useremote} & Indicates that properties of the \sbol{ComponentInstance} from the \sbol{remote} are to be used, instead of the \sbol{local} \sbol{ComponentInstance}.\\ - \url{http://sbols.org/v2#uselocal} & Indicates that properties of the \sbol{ComponentInstance} from the \sbol{local} are to be used used, instead of the \sbol{remote} \sbol{ComponentInstance}.\\ + \url{http://sbols.org/v2#useRemote} & Indicates that properties of the \sbol{ComponentInstance} from the \sbol{remote} are to be used, instead of the \sbol{local} \sbol{ComponentInstance}.\\ + \url{http://sbols.org/v2#useLocal} & Indicates that properties of the \sbol{ComponentInstance} from the \sbol{local} are to be used used, instead of the \sbol{remote} \sbol{ComponentInstance}.\\ \url{http://sbols.org/v2#verifyIdentical} & Indicates that both \sbol{ComponentInstance} entities must link to the same \sbol{ComponentDefinition} object\\ \url{http://sbols.org/v2#merge} & Indicates that data fields of the \sbol{local} and \sbol{remote} \sbol{ComponentInstance} entities are to be interpreted in combination\\ \bottomrule @@ -549,7 +542,6 @@ \subsubsection{MapsTo} \label{tbl:mapsto_refinement} \end{table} -\Ctodo{libsbol and refinements types here need to agree on consistent capitalization. GM: We agreed to start with lowercase and use the Capital for the next word.} \Rtodo{The notion of refinement is very unclear -JB Clean up the text; JSB: done} \paragraph{Serialization} @@ -1199,7 +1191,6 @@ \subsubsection{Participation} Values for this URI are RECOMMENDED to be chosen from the from the participant role branch of the Systems Biology Ontology (SBO) where possible. \Rtodo{SBO is our REQUIRED term if available, just as in the prior cases. JSB: done, but set as RECOMMENDED, not required (as elsewhere)} -\Ctodo{Goksel is going to check if there is a superset ontology that should displace SBO} \paragraph{The \sbolheading{participant} property}\label{sec:participant} diff --git a/overview.tex b/overview.tex index 31b6f6b1..3320831d 100644 --- a/overview.tex +++ b/overview.tex @@ -9,6 +9,7 @@ \section{Overview of SBOL} \end{enumerate} Typically, information about a designed genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. Interactions between these constituents are then used to construct biologically plausible designs. + Figure 1 illustrates the relationships between the main classes of information encoded by SBOL. The physical structure of an element is represented with a \sbol{ComponentDefinition}, often corresponding to a particular \sbol{Sequence} (e.g., DNA, RNA, amino acids), and with its structure further described in terms of the smaller \sbol{Component} instances contained within, and their absolute and relative positions within the component. Functional relationships are represented with a \sbol{ModuleDefinition}, often also described by some \sbol{Model}, and with its structure further described in terms of the smaller \sbol{Module} instances contained within, as well as particular components (designated \sbol{FunctionalComponent} to indicate their use in defining a module), and their interactions. From 2688ecd00fb0973d37fcb777cc648e855c8e7aa7 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 20 May 2015 17:08:18 +0000 Subject: [PATCH 149/317] Update on Overleaf. --- apdx-validation.tex | 2 -- model.tex | 27 +++++++++++++++------------ practices.tex | 7 +++++-- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 2e5d361b..6a5bfde5 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -142,8 +142,6 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{The \sbol{sequences} property is an OPTIONAL set of URI references to \sbol{Sequence} objects. (Reference: \sec{sec:ComponentDefinition})} -\Ctodo{Are the following checkable?} - \printModeling{Each URI in the set of \sbol{sequences} SHOULD reference an equivalent \sbol{Sequence} object. (Reference: \sec{sec:Sequence})} \printValid{A DNA \sbol{ComponentDefinition} MUST include the URI\\ diff --git a/model.tex b/model.tex index c9433fac..8633a8ea 100644 --- a/model.tex +++ b/model.tex @@ -107,7 +107,7 @@ \subsubsection*{The \sbolheading{displayId} property} If the \sbol{displayId} property is used, then its \external{String} value SHOULD be locally unique (global uniqueness is not required) and MUST be compliant with the type \external{http://www.w3.org/TR/xmlschema-2/\#NCName}, except that it must not include the characters "-" and ".". -\subsubsection*{The \sbolheading{version} property} +subsubsection*{The \sbolheading{version} property} \label{sec:version} The \sbol{version} property is OPTIONAL and has a data type of \external{String}. This property can be used to compare two SBOL objects with the same \sbol{persistentIdentity}. @@ -214,9 +214,11 @@ \subsubsection*{The \sbolheading{elements} property} \subsubsection*{The \sbolheading{encoding} property} \label{sec:encoding} -The \sbol{encoding} property is REQUIRED and has a data type of \external{URI}. This property is used to indicate how the \sbol{elements} property of a \sbol{Sequence} SHOULD be formed and interpreted. +The \sbol{encoding} property is REQUIRED and has a data type of \external{URI}. This property is used to indicate how the \sbol{elements} property of a \sbol{Sequence} MUST be formed and interpreted. -\ref{tbl:sequence_encodings} provides a list of RECOMMENDED \external{URI}s for the \sbol{encoding} property. The terms in \ref{tbl:sequence_encodings} are organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that MUST refer to a \sbol{Sequence} with such an \sbol{encoding} (if it refers to any \sbol{Sequence} at all). When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \external{URI}s in \ref{tbl:sequence_encodings}, it SHOULD use that \external{URI} for this property. +For example, the \sbol{elements} property of a \sbol{Sequence} with an \external{IUPAC DNA} encoding property MUST contain characters that represent nucleotide bases, such as {\tt a}, {\tt t}, {\tt c}, and {\tt g}. The \sbol{elements} property of a \sbol{Sequence} with a \external{simplified molecular-input line-entry system (SMILES)} encoding, however, MUST contain characters that represent atoms and chemical bonds, such as {\tt C}, {\tt N}, {\tt O}, and {\tt =}. + +\ref{tbl:sequence_encodings} provides a list of RECOMMENDED \external{URI}s for the \sbol{encoding} property. The terms in \ref{tbl:sequence_encodings} are organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that MUST refer to a \sbol{Sequence} with such an \sbol{encoding} (if it refers to any \sbol{Sequence} at all). When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \external{URI}s in \ref{tbl:sequence_encodings}, it MUST use that \external{URI} for this property. %A Summary of letters for nucleic acids and aminoacids \begin{table}[ht] @@ -233,9 +235,6 @@ \subsubsection*{The \sbolheading{encoding} property} \label{tbl:sequence_encodings} \end{table} -If the \sbol{encoding} property of a \sbol{Sequence} contains a \external{URI} from \ref{tbl:sequence_encodings}, then this property indicates how the \sbol{elements} property of the \sbol{Sequence} MUST be formed and interpreted. -For example, the \sbol{elements} property of a \sbol{Sequence} with an \external{IUPAC DNA} encoding property MUST contain characters that represent nucleotide bases, such as {\tt a}, {\tt t}, {\tt c}, and {\tt g}. The \sbol{elements} property of a \sbol{Sequence} with a \external{simplified molecular-input line-entry system (SMILES)} encoding, however, MUST contain characters that represent atoms and chemical bonds, such as {\tt C}, {\tt N}, {\tt O}, and {\tt =}. - \subsubsection*{Serialization} The serialization of a \sbol{Sequence} has the following form: \lstsetsbol @@ -278,7 +277,7 @@ \subsubsection*{The \sbolheading{types} property} The \sbol{types} property is a REQUIRED set of \external{URI}s that specifies the category of biochemical or physical entity (for example DNA, protein, or small molecule) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. -The \sbol{types} property of every \sbol{ComponentDefinition} MUST contain at least one \external{URI} that SHOULD identify a term from an appropriate ontology, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). \ref{tbl:componentdefinition_types} provides a list of RECOMMENDED ontology terms for the \sbol{types} property and their \external{URI}s. In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} SHOULD use that term as one of its \sbol{types}. Finally, if the \sbol{types} property contains multiple \external{URIs}, then they SHOULD identify synonymous terms. +The \sbol{types} property of every \sbol{ComponentDefinition} MUST contain at least one \external{URI} that MUST identify a term from an appropriate ontology, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). \ref{tbl:componentdefinition_types} provides a list of RECOMMENDED ontology terms for the \sbol{types} property and their \external{URI}s. In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbol{types}. Finally, if the \sbol{types} property contains multiple \external{URIs}, then they MUST identify synonymous terms. \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -300,7 +299,7 @@ \subsubsection*{The \sbolheading{roles} property} The \sbol{roles} property is an OPTIONAL set of \external{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} in a biological context. -The \sbol{roles} property of a \sbol{ComponentDefinition} MAY contain a set of \external{URI}s that SHOULD identify terms from ontologies that are consistent with the \sbol{types} property of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} SHOULD contain \external{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbol{roles} property and their \external{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). As with the \sbol{types} property, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} SHOULD use that term as one of its \sbol{roles}. +The \sbol{roles} property of a \sbol{ComponentDefinition} MAY contain a set of \external{URI}s that MUST identify terms from ontologies that are consistent with the \sbol{types} property of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} could contain \external{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbol{roles} property and their \external{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). As with the \sbol{types} property, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use that term as one of its \sbol{roles}. \begin{table}[ht] \begin{edtable}{tabular}{lll} @@ -317,7 +316,7 @@ \subsubsection*{The \sbolheading{roles} property} Effector & \url{http://identifiers.org/chebi/CHEBI:35224} & Small Molecule \\ \bottomrule \end{edtable} - \caption{RECOMMENDED ontology terms to specify the \sbol{roles} property of a \sbol{ComponentDefinition}, organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}).} + \caption{RECOMMENDED ontology terms to specify the \sbol{roles} property of a \sbol{ComponentDefinition}, organized by the type of \sbol{ComponentDefinition} to which they MUST apply (see \ref{tbl:componentdefinition_types}).} \label{tbl:componentdefinition_roles} \end{table} @@ -334,7 +333,7 @@ \subsubsection*{The \sbolheading{sequences} property} Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the structure of a DNA \sbol{ComponentDefinition}, one that captures its primary structure at the level of nucleotide bases and one that captures its secondary and tertiary structure at the level of atoms and bonds. -If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects SHOULD be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, any two \sbol{Sequence} objects referred to by the same \sbol{ComponentDefinition} MUST NOT have the same \sbol{encoding}. Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbol{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that corresponds to this term (see \ref{tbl:sequence_encodings}). Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbol{types} property must refer to the corresponding term from \ref{tbl:componentdefinition_types}. For example, if the \sbol{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an an \external{IUPAC DNA} \sbol{encoding}, then its \sbol{types} property must refer to the BioPAX term for DNA. +If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, any two \sbol{Sequence} objects referred to by the same \sbol{ComponentDefinition} MUST NOT have the same \sbol{encoding}. Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbol{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that corresponds to this term (see \ref{tbl:sequence_encodings}). Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbol{types} property must refer to the corresponding term from \ref{tbl:componentdefinition_types}. For example, if the \sbol{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an an \external{IUPAC DNA} \sbol{encoding}, then its \sbol{types} property must refer to the BioPAX term for DNA. \subsubsection*{The \sbolheading{sequenceConstraints} property} \label{sec:sequenceConstraints} @@ -418,7 +417,7 @@ \subsubsection{ComponentInstance} The \sbol{access} property is a REQUIRED \external{URI} that indicates whether a \sbol{ComponentInstance} can be referred to by a \sbol{MapsTo}. -The value of the \sbol{access} property be set to one of the following URIs: +The value of the \sbol{access} property MUST be one of the following URIs: \begin{itemize} \item \url{http://sbols.org/v2#public} @@ -1293,7 +1292,7 @@ \subsubsection{Annotating SBOL objects} Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. The \sbol{name} property is specified by a qualified name (\external{QName}), which is composed of a namespace, a prefix, and a local name. The \sbol{value} property can be of type \external{String}, \external{URI}, or \external{ListOfAnnotations}. The \external{ListOfAnnotations} is composed of a \sbol{nestedQName}, \sbol{nestedURI}, and a list of nested \sbol{annotations}. -\Ctodo{NIC: Please update UML as follows: remove link from Identifed to AnnotationValue, change type of name to QName, change label of Literal box to String, add new class ListOfAnnotations that inherits from AnnotationValue with properties nestedQName : QName, nestedURI : URI, and a 0..* annotations link to the Annotation class.} +\Ctodo{NIC: Please update UML as follows: remove link from Identifed to AnnotationValue, change type of name to QName, add new class NestedAnnotations that inherits from AnnotationValue with properties nestedQName : QName, nestedURI : URI, and a 0..* annotations link to the Annotation class.} \begin{figure}[!ht] \begin{center} @@ -1306,6 +1305,10 @@ \subsubsection{Annotating SBOL objects} \paragraph{Serialization} The ComponentDefinition example for a promoter serialized below shows how annotations can be added to SBOL objects. Annotations are added using the relevant information from the Parts Registry. Annotation property names are qualified with the \external{http://www.partsregistry.org/} namespace, which is prefixed using \external{pr}. The first annotation is named as \external{pr:group}, indicating the iGEM group designing the promoter, and has a \external{String} value. The second \external{pr:experience} annotation has a \external{URI} value and is serialised as an RDF resource pointing to the information Web page on the Parts Registry for the promoter. The \external{pr:information} property represents a complex annotation which is a type of \external{pr:Information} and includes information about the regulatory details of the promoter using Parts Registry categories. +\Ctodo{Add template} + +\Ctodo{Get example from cut part of libSBOLj paper} + \begin{figure} [ht] \lstsetsbol \begin{lstlisting} diff --git a/practices.tex b/practices.tex index d6d3e7f5..7217a7ba 100644 --- a/practices.tex +++ b/practices.tex @@ -13,13 +13,15 @@ \subsection{Indicate Modification of Data with Version} \Rtodo{try to target readers unfamiliar with RDF/XML. -bder; JSB: done} \Rtodo{maybe clarify what type of versioning is this object affecting? TN JSB: done} -\subsection{Creation and Modification Dates} +%% \subsection{Creation and Modification Dates} -\LDtodo{Annotations: Annotating with created and modified dates, and how to add them. Is this section needed? -- CJM} +\NVtodo{Annotations: Annotating with created and modified dates, and how to add them. Is this section needed? -- CJM} \subsection{Compliant SBOL Objects} \label{sec:compliant} +\Ctodo{Remove types?} + Maintaining unique identity URIs for all SBOL objects is a very challenging implementation task. To reduce the developer's burden, users of SBOL 2.0 are encouraged to follow a few simple rules when constructing the identity and related fields for SBOL objects. When these rules are followed, we say that the SBOL object is \emph{compliant}. The rules are as follows: \begin{enumerate} \item The \sbol{identity} of an SBOL object should begin with a \emph{URI prefix} that maps to a domain over which the user has control. Namely, the user can guarantee uniqueness of identities within this domain. @@ -74,6 +76,7 @@ \subsection{Recommended Ontologies for External Terms} \Ctodo{It would be useful to add URLs to the resources - NeilW} +\Ctodo{Add recommended branch.} \begin{table}[ht] \begin{edtable}{tabular}{p{3cm}p{3cm}p{4cm}} From 5ca211f1c1f7022b4cca2834e8d8af2fffc519ad Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 20 May 2015 17:27:31 +0000 Subject: [PATCH 150/317] Update on Overleaf. --- model.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/model.tex b/model.tex index 8633a8ea..fda11c6a 100644 --- a/model.tex +++ b/model.tex @@ -277,7 +277,7 @@ \subsubsection*{The \sbolheading{types} property} The \sbol{types} property is a REQUIRED set of \external{URI}s that specifies the category of biochemical or physical entity (for example DNA, protein, or small molecule) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. -The \sbol{types} property of every \sbol{ComponentDefinition} MUST contain at least one \external{URI} that MUST identify a term from an appropriate ontology, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). \ref{tbl:componentdefinition_types} provides a list of RECOMMENDED ontology terms for the \sbol{types} property and their \external{URI}s. In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbol{types}. Finally, if the \sbol{types} property contains multiple \external{URIs}, then they MUST identify synonymous terms. +The \sbol{types} property of every \sbol{ComponentDefinition} MUST contain a set of \external{URI}s that MUST identify terms from appropriate ontologies, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). \ref{tbl:componentdefinition_types} provides a list of RECOMMENDED ontology terms for the \sbol{types} property and their \external{URI}s. In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbol{types}. Finally, if the \sbol{types} property contains multiple \external{URIs}, then they MUST identify synonymous terms. \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -404,12 +404,12 @@ \subsubsection{ComponentInstance} \paragraph{The \sbolheading{definition} property} \label{sec:definition} -The \sbol{definition} property is a REQUIRED \external{URI} that refers to the \sbol{ComponentDefinition} that is instantiated by the \sbol{ComponentInstance}. +The \sbol{definition} property is a REQUIRED \external{URI} that refers to the \sbol{ComponentDefinition} for the \sbol{ComponentInstance}. \paragraph{The \sbolheading{mapsTo} property} \label{sec:mapsTos} -The \sbol{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects that link \sbol{ComponentInstance} objects (both \sbol{Component} objects and \sbol{FunctionalComponent} objects) together within a larger design. \ref{sec:MapsTo} contains a more detailed description the \sbol{MapsTo} class. +The \sbol{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects that link \sbol{ComponentInstance} objects (both \sbol{Component} objects and \sbol{FunctionalComponent} objects) together within a larger design. \ref{sec:MapsTo} contains a more detailed description of the \sbol{MapsTo} class. \paragraph{The \sbolheading{access} property} \label{sec:access} From 3bd55520600541030382d38e0297014ac78588e4 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 20 May 2015 20:26:11 +0000 Subject: [PATCH 151/317] Update on Overleaf. --- apdx-validation.tex | 24 +++++++----------------- history.tex | 2 +- model.tex | 44 +++++++++++++++++++++++++++----------------- practices.tex | 11 ++--------- 4 files changed, 37 insertions(+), 44 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 6a5bfde5..46510a3b 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -77,32 +77,22 @@ \subsubsection*{Rules for the \class{Identified} class} \printValid{The \sbol{annotations} field is an OPTIONAL list of for all \sbol{Identified} objects and, if provided, includes references to \sbol{Annotation} objects. (Reference: \sec{sec:Identified})} -\printModeling{The \sbol{identity} of a compliant object SHOULD either be equal to the \sbol{persistentIdentity} when no \sbol{version} is specified or equal to "\refObj{persistentIdentity}/\refObj{version}" when a \sbol{version} is provided. (Reference: \sec{sec:compliant})} - -\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{Collection} object is REQUIRED and MUST end with "/col/\refObj{displayId}". (Reference: \sec{sec:compliant})} +\printValid{The \sbol{wasDerivedFrom} property is OPTIONAL for all \sbol{Identified} objects and, if provided, data type of URI. (Reference: \sec{sec:Identified})} -\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{ModuleDefinition} object is REQUIRED and MUST end with "/md/\refObj{displayId}". (Reference: \sec{sec:compliant})} +\printValid{The \sbol{name} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String. (Reference: \sec{sec:Identified})} -\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{Model} object is REQUIRED and MUST end with\\ "/mod/\refObj{displayId}". (Reference: \sec{sec:compliant})} +\printValid{The \sbol{description} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String. (Reference: \sec{sec:Identified})} -\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{ComponentDefinition} object is REQUIRED and MUST end with "/cd/\refObj{displayId}". (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{displayId} of a compliant object is REQUIRED. (Reference: \sec{sec:compliant})} -\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{Sequence} object is REQUIRED and MUST end with "/seq/\refObj{displayId}". (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{persistentIdentity} of a compliant top level object is REQUIRED and MUST end with a delimiter ('/', '\#', or ':') followed by the \sbol{displayId} of the object. (Reference: \sec{sec:compliant})} -\printModeling{The \sbol{persistentIdentity} of a compliant \sbol{GenericTopLevel} object is REQUIRED and MUST end with "/gen/\refObj{displayId}". (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{persistentIdentity} of a compliant child object is REQUIRED and MUST begin with the\\ \sbol{persistentIdentity} of its parent object and be immediately followed by a delimiter ('\', '\#', or ':') and the \sbol{displayId} of the object. (Reference: \sec{sec:compliant})} -\printModeling{The \sbol{persistentIdentity} of a compliant child object is REQUIRED MUST begin with the\\ \sbol{persistentIdentity} of its parent object and be immediately followed by "/\refObj{displayId}". (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{identity} of a compliant object MUST either be equal to the \sbol{persistentIdentity} when no \sbol{version} is specified or equal to "\refObj{persistentIdentity}/\refObj{version}" when a \sbol{version} is provided. (Reference: \sec{sec:compliant})} \printModeling{The \sbol{version} of a compliant child object is REQUIRED to be equal to the \sbol{version} of its parent object. (Reference: \sec{sec:compliant})} -\printModeling{The \sbol{displayId} of a compliant object is REQUIRED. (Reference: \sec{sec:compliant})} - -\printValid{The \sbol{wasDerivedFrom} property is OPTIONAL for all \sbol{Identified} objects and, if provided, data type of URI. (Reference: \sec{sec:Identified})} - -\printValid{The \sbol{name} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String. (Reference: \sec{sec:Identified})} - -\printValid{The \sbol{description} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String. (Reference: \sec{sec:Identified})} - \subsubsection*{Rules for the \class{TopLevel} class} \setcounter{sbolCtr}{10301} diff --git a/history.tex b/history.tex index 4faf181d..687ea2e2 100644 --- a/history.tex +++ b/history.tex @@ -5,7 +5,7 @@ \section{History and Acknowledgements} In early 2006 Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26 to 27 in 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deep Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. The original SBOL 1.0 was developed through his efforts together with the small group of dedicated researchers. An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group and the over all pace of developed quickened. Its further development has continued at a series of subsequent open invitation workshops and through email exchanges on the SBOL Developers mailing list. Finally, after repeated attempts, the SBOL core team finally secured federal funding from the National Science Foundation. This document is partly a result of that support. -\Ctodo{History peters out after first meeting. Definitely need to add a bit more details about the evolution. Maybe at least a couple sentences about the accomplishments at each meeting.} +\Ctodo{History peters out after first meeting. Definitely need to add a bit more details about the evolution. Maybe at least a couple sentences about the accomplishments at each meeting - I now have the info from Mike, will add shortly} \Ctodo{Need to cite NBT paper here.} diff --git a/model.tex b/model.tex index fda11c6a..73695bdb 100644 --- a/model.tex +++ b/model.tex @@ -105,9 +105,11 @@ \subsubsection*{The \sbolheading{displayId} property} \label{sec:displayId} The \sbol{displayId} property is an OPTIONAL identifier with a data type of \external{String}. This property is intended to be an intermediate between \sbol{name} and \sbol{identity} that is machine-readable, but more human-readable than the full \external{URI} of an \sbol{identity}. -If the \sbol{displayId} property is used, then its \external{String} value SHOULD be locally unique (global uniqueness is not required) and MUST be compliant with the type \external{http://www.w3.org/TR/xmlschema-2/\#NCName}, except that it must not include the characters "-" and ".". +If the \sbol{displayId} property is used, then its \external{String} value SHOULD be locally unique (global uniqueness is not required) and MUST be composed of only alphanumeric or underscore characters and MUST NOT begin with a digit. -subsubsection*{The \sbolheading{version} property} +% compliant with the type \external{http://www.w3.org/TR/xmlschema-2/\#NCName}, except that it must not include the characters "-" and ".". + +\subsubsection*{The \sbolheading{version} property} \label{sec:version} The \sbol{version} property is OPTIONAL and has a data type of \external{String}. This property can be used to compare two SBOL objects with the same \sbol{persistentIdentity}. @@ -404,12 +406,14 @@ \subsubsection{ComponentInstance} \paragraph{The \sbolheading{definition} property} \label{sec:definition} -The \sbol{definition} property is a REQUIRED \external{URI} that refers to the \sbol{ComponentDefinition} for the \sbol{ComponentInstance}. +The \sbol{definition} property is a REQUIRED \external{URI} that refers to the \sbol{ComponentDefinition} for the \sbol{ComponentInstance}. As described in the previous section, this \sbol{ComponentDefinition} provides information about the \sbol{types} and \sbol{roles} of the \sbol{ComponentInstance}. \paragraph{The \sbolheading{mapsTo} property} \label{sec:mapsTos} -The \sbol{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects that link \sbol{ComponentInstance} objects (both \sbol{Component} objects and \sbol{FunctionalComponent} objects) together within a larger design. \ref{sec:MapsTo} contains a more detailed description of the \sbol{MapsTo} class. +The \sbol{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects that refer to and link \sbol{ComponentInstance} objects (both \sbol{Component} objects and \sbol{FunctionalComponent} objects) together within a larger design. + +\ref{sec:MapsTo} contains a more detailed description of the \sbol{MapsTo} class. \paragraph{The \sbolheading{access} property} \label{sec:access} @@ -417,31 +421,37 @@ \subsubsection{ComponentInstance} The \sbol{access} property is a REQUIRED \external{URI} that indicates whether a \sbol{ComponentInstance} can be referred to by a \sbol{MapsTo}. -The value of the \sbol{access} property MUST be one of the following URIs: +\ref{tbl:componentInstance_access} provides a list of REQUIRED \sbol{access} \external{URI}s. The value of the \sbol{access} property MUST be one of these \external{URI}s. -\begin{itemize} -\item \url{http://sbols.org/v2#public} - If the access is public, the \sbol{ComponentInstance} MAY be linked to by \sbol{MapsTo} objects. +\begin{table}[ht] + \begin{edtable}{tabular}{lp{4in}} + \toprule + \textbf{URI} & \textbf{Access Description} \\ + \midrule + \url{http://sbols.org/v2#public} & The \sbol{ComponentInstance} MAY be referred to by \sbol{MapsTo} objects. \\ + \url{http://sbols.org/v2#private} & The \sbol{ComponentInstance} MUST NOT be referred to by any \sbol{MapsTo} object. \\ + \bottomrule + \end{edtable} + \caption{\external{URI}s for the \sbol{access} property.} + \label{tbl:componentInstance_access} +\end{table} -\item \url{http://sbols.org/v2#private} - If the access is private, the \sbol{ComponentInstance} MUST NOT be linked by any \sbol{MapsTo} object. -\end{itemize} +Unless a designer has a reason to prevent other designers from accessing the \sbol{ComponentInstance} when their design is reused, it is RECOMMENDED that the \sbol{access} property of the \sbol{ComponentInstance} be set to public. For example, in order to avoid the retroactivity that might result from a \sbol{ComponentInstance} interacting with those in other designs, a designer might set the \sbol{access} of the \sbol{ComponentInstance} to private. \paragraph{Serialization} -No serialization is defined for \sbol{ComponentInstance}, since this class is -only used indirectly through its child classes. +No serialization is defined for the \sbol{ComponentInstance} class, since this class is only used indirectly through the \sbol{Component} and \sbol{FunctionalComponent} subclasses. \subsubsection{Component} \label{sec:Component} -Composition of the structural layer of SBOL designs is accomplished using \sbol{Component} objects. Each \sbol{Component} instance is part of a \sbol{ComponentDefinition} object, associated with it by the \sbol{components} property to represent physical composition. +The \sbol{Component} class is used to compose \sbol{ComponentDefinition} objects into a structural hierarchy. For example, the \sbol{ComponentDefinition} of a gene could contain four \sbol{Component} objects, including a promoter, RBS, CDS, and terminator. The \sbol{ComponentDefinition} of the promoter \sbol{Component} could in turn contain \sbol{Component} objects defined as various operator sites. -All \sbol{Component} objects directly referenced within a \sbol{ComponentDefinition}'s \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} parts MUST be associated with that \sbol{ComponentDefinition} by means of its \sbol{components} property. +% All \sbol{Component} objects directly referenced within a \sbol{ComponentDefinition}'s \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} parts MUST be associated with that \sbol{ComponentDefinition} by means of its \sbol{components} property. \paragraph{Serialization} -The serialization of a \sbol{ComponentInstance} object has the following form: +The serialization of a \sbol{Component} has the following form: \lstsetsbol \begin{lstlisting} @@ -454,7 +464,7 @@ \subsubsection{Component} \end{lstlisting} The example below shows the serialization of a \sbol{Component} -representing an instance of promoter: +that represents an instance of promoter: \lstsetsbol \begin{lstlisting} diff --git a/practices.tex b/practices.tex index 7217a7ba..fca9cb86 100644 --- a/practices.tex +++ b/practices.tex @@ -20,21 +20,14 @@ \subsection{Indicate Modification of Data with Version} \subsection{Compliant SBOL Objects} \label{sec:compliant} -\Ctodo{Remove types?} - Maintaining unique identity URIs for all SBOL objects is a very challenging implementation task. To reduce the developer's burden, users of SBOL 2.0 are encouraged to follow a few simple rules when constructing the identity and related fields for SBOL objects. When these rules are followed, we say that the SBOL object is \emph{compliant}. The rules are as follows: \begin{enumerate} \item The \sbol{identity} of an SBOL object should begin with a \emph{URI prefix} that maps to a domain over which the user has control. Namely, the user can guarantee uniqueness of identities within this domain. \item In a compliant SBOL object, the \sbol{persistentIdentity} and \sbol{displayId} properties are required. +\item The \sbol{persistentIdentity} of a compliant top level object must end with a delimiter ('/', '\#', or ':') followed by the \sbol{displayId} of the object. +\item The \sbol{persistentIdentity} of a compliant child object must begin with the \sbol{persistentIdentity} of its parent object and be immediately followed by a delimiter ('/', '\#', or ':') followed by the \sbol{displayId} of the object. \item When a SBOL object is not given a \sbol{version}, the \sbol{identity} and \sbol{persistentIdentity} must be equal. \item When a SBOL object is given a \sbol{version}, the \sbol{identity} must be equal to the "\refObj{persistentIdentity}/\refObj{version}". -\item The \sbol{persistentIdentity} of a compliant \sbol{Collection} object must end with "/col/\refObj{displayId}". -\item The \sbol{persistentIdentity} of a compliant \sbol{ModuleDefinition} object must end with "/md/\refObj{displayId}". -\item The \sbol{persistentIdentity} of a compliant \sbol{Model} object must end with "/mod/\refObj{displayId}". -\item The \sbol{persistentIdentity} of a compliant \sbol{ComponentDefinition} object must end with "/cd/\refObj{displayId}". -\item The \sbol{persistentIdentity} of a compliant \sbol{Sequence} object must end with "/seq/\refObj{displayId}". -\item The \sbol{persistentIdentity} of a compliant \sbol{GenericTopLevel} object must end with "/gen/\refObj{displayId}". -\item The \sbol{persistentIdentity} of a compliant child object must begin with the \sbol{persistentIdentity} of its parent object and be immediately followed by "/\refObj{displayId}". \item The \sbol{version} of a compliant child object must be equal to the \sbol{version} of it parent object. \end{enumerate} From 91b18b4824ca60ccac0c9b8fe84219ad6a003f4c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 21 May 2015 01:57:02 +0000 Subject: [PATCH 152/317] Update on Overleaf. --- model.tex | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/model.tex b/model.tex index 73695bdb..2eea7bc7 100644 --- a/model.tex +++ b/model.tex @@ -115,7 +115,7 @@ \subsubsection*{The \sbolheading{version} property} The \sbol{version} property is OPTIONAL and has a data type of \external{String}. This property can be used to compare two SBOL objects with the same \sbol{persistentIdentity}. If the \sbol{version} property is used, then it is RECOMMENDED that version numbering should follow the conventions of semantic versioning (\url{http://semver.org/}), particularly as implemented by Maven (\url{http://maven.apache.org/}). -This convention represents versions as sequences of numbers and qualifiers that are separated by the characters {\tt .} and {\tt -} and are compared in lexicographical order (for example, 1 < 1.3.1 < 2.0-beta). +This convention represents versions as sequences of numbers and qualifiers that are separated by the characters ``{\tt .}'' and ``{\tt -}'' and are compared in lexicographical order (for example, 1 < 1.3.1 < 2.0-beta). For a full explanation, see the linked resources. \subsubsection*{The \sbolheading{wasDerivedFrom} property} @@ -123,7 +123,7 @@ \subsubsection*{The \sbolheading{wasDerivedFrom} property} The \sbol{wasDerivedFrom} property is OPTIONAL and has a data type of \external{URI}. An SBOL object with this property refers to another SBOL object or non-SBOL resource from which this object was derived. -If the \sbol{wasDerivedFrom} URI of an SBOL object $B$ refers to another SBOL object $A$ and either $B$ or $A$ has a \sbol{persistentIdentity}, then both $B$ and $A$ must have the same \sbol{persistentIdentity} \external{URI}. In addition, if both $B$ and $A$ have a \sbol{version}, then the \sbol{version} \external{String} of $A$ MUST come before that of $B$. Finally, an SBOL object MUST NOT refer to itself via its own \sbol{wasDerivedFrom} property or form a circular chain of references via its \sbol{wasDerivedFrom} property and those of other SBOL objects (for example, the reference chain ``$B$ was derived from $A$ and $A$ was derived from $B$'' is circular). +If the \sbol{wasDerivedFrom} property of an SBOL object $A$ refers to another SBOL object $B$ with the same \sbol{persistentIdentity}, and both $A$ and $B$ have a \sbol{version}, then the \sbol{version} of $B$ MUST come before that of $A$. In addition, an SBOL object MUST NOT refer to itself via its own \sbol{wasDerivedFrom} property or form a circular chain of references via its \sbol{wasDerivedFrom} property and those of other SBOL objects. For example, the reference chain ``$A$ was derived from $B$ and $B$ was derived from $A$'' is circular. \subsubsection*{The \sbolheading{name} property} \label{sec:name} @@ -406,7 +406,9 @@ \subsubsection{ComponentInstance} \paragraph{The \sbolheading{definition} property} \label{sec:definition} -The \sbol{definition} property is a REQUIRED \external{URI} that refers to the \sbol{ComponentDefinition} for the \sbol{ComponentInstance}. As described in the previous section, this \sbol{ComponentDefinition} provides information about the \sbol{types} and \sbol{roles} of the \sbol{ComponentInstance}. +The \sbol{definition} property is a REQUIRED \external{URI} that refers to the \sbol{ComponentDefinition} for the \sbol{ComponentInstance}. As described in the previous section, this \sbol{ComponentDefinition} effectively provides information about the \sbol{types} and \sbol{roles} of the \sbol{ComponentInstance}. + +The \sbol{definition} property MUST NOT refer to the same \sbol{ComponentDefinition} as that which contains the \sbol{ComponentInstance}. Furthermore, \sbol{ComponentInstance} objects MUST NOT form a circular chain of references via their \sbol{definition} properties and the \sbol{ComponentDefinition} objects that contain them. For example, consider the \sbol{ComponentInstance} objects $A$ and $B$ and the \sbol{ComponentDefinition} objects $X$ and $Y$. The reference chain ``$X$ contains $A$, $A$ is defined by $Y$, $Y$ contains $B$, and $B$ is defined by $X$'' is circular. \paragraph{The \sbolheading{mapsTo} property} \label{sec:mapsTos} @@ -464,7 +466,7 @@ \subsubsection{Component} \end{lstlisting} The example below shows the serialization of a \sbol{Component} -that represents an instance of promoter: +that represents an instance of a promoter: \lstsetsbol \begin{lstlisting} From 23f893557b5645a4ef66e9ae06319e804232448a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 21 May 2015 14:43:37 +0000 Subject: [PATCH 153/317] Update on Overleaf. --- model.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model.tex b/model.tex index 2eea7bc7..f1b7c15e 100644 --- a/model.tex +++ b/model.tex @@ -489,7 +489,7 @@ \subsubsection{MapsTo} \end{center} \end{figure} -When \sbol{ComponentInstance} or \sbol{Module} objects are combined together within a new \sbol{ComponentDefinition} or \sbol{ModuleDefinition}, it is often the case that some of the elements comprising these objects are intended to refer to the ``same'' thing, in some sense. +When \sbol{ComponentDefinition} and \sbol{ModuleDefinition} objects are composed using \sbol{Component}, \sbol{FunctionalComponent}, and \sbol{Module} objects, it is often the case that some of the elements comprising these objects are intended to refer to the ``same'' thing, in some sense. The purpose of the \sbol{MapsTo} class is to make these relationships clear and explicit. In particular, a \sbol{MapsTo} object provides two pieces of information: From 59740ad372ff1c0fa63c9b7122128379f9a3df47 Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Thu, 21 May 2015 16:00:03 +0000 Subject: [PATCH 154/317] v13 --- model.tex | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/model.tex b/model.tex index f1b7c15e..76e2ed0f 100644 --- a/model.tex +++ b/model.tex @@ -489,21 +489,13 @@ \subsubsection{MapsTo} \end{center} \end{figure} -When \sbol{ComponentDefinition} and \sbol{ModuleDefinition} objects are composed using \sbol{Component}, \sbol{FunctionalComponent}, and \sbol{Module} objects, it is often the case that some of the elements comprising these objects are intended to refer to the ``same'' thing, in some sense. -The purpose of the \sbol{MapsTo} class is to make these relationships clear and explicit. +When \sbol{ComponentDefinition} and \sbol{ModuleDefinition} objects are composed into a hierarchy using \sbol{Module} and \sbol{ComponentInstance} objects, it is often the case that some \sbol{ComponentInstance} objects are intended to represent the same entity in the overall design. The purpose of the \sbol{MapsTo} class is to make these identity relationships clear and explicit. In particular, a \sbol{MapsTo} object provides two pieces of information: \begin{itemize} -\item An identity relationship between two \sbol{ComponentInstance} - objects, one inside the definition of a ``lower level'' instance that owns the - \sbol{MapsTo}, the other in the ``higher level'' definition that - contains the ``lower level'' instance. The \sbol{local} property identifies the ``higher - level'' \sbol{ComponentInstance} and the \sbol{remote} property - identifies the ``lower level'' \sbol{ComponentInstance}. -\item Instructions on what to do if the two \sbol{ComponentInstance} - objects link to different \sbol{ComponentDefinition} objects (i.e., - they are not identical). This is specified by the \sbol{refinement} - property, using one of the values from \ref{tbl:mapsto_refinement}. +\item An identity relationship between two \sbol{ComponentInstance} objects, the first contained by the ``lower level'' definition of the \sbol{ComponentInstance} or \sbol{Module} that owns the + \sbol{MapsTo}, and the second contained by the ``higher level'' definition that contains the \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}. The \sbol{remote} property of a \sbol{MapsTo} refers to the first ``lower level'' \sbol{ComponentInstance}, while the \sbol{local} property refers to the second ``higher level'' \sbol{ComponentInstance}. +\item Instructions on what to do if the two \sbol{ComponentInstance} objects refer to different \sbol{ComponentDefinition} objects (that is, they are not identical). This is specified using the \sbol{refinement} property of the \sbol{MapsTo} class. \end{itemize} \begin{figure}[ht] @@ -514,14 +506,13 @@ \subsubsection{MapsTo} \label{image:maps_to_diagram2} \end{center} \end{figure} -\Rtodo{Caption: why are some RBSs not filled in? JSB: explained meaning} -To illustrate this concept, two examples are provided in \ref{image:maps_to_diagram2}, in which a \sbol{ComponentDefinition} for a promoter / 5'UTR / coding-sequence functional unit is constructed by combining two ``lower level'' \sbol{ComponentDefinition} objects. -In both examples, the two ``lower level'' \sbol{ComponentDefinition} objects each contain a 5'UTR, and these are all taken to refer to the ``same'' element of the new ``higher level'' \sbol{ComponentDefinition}. +To illustrate this concept, two examples are provided in \ref{image:maps_to_diagram2}, in which the \sbol{ComponentDefinition} of a promoter-RBS-CDS transcriptional unit is specified by composing two ``lower level'' \sbol{ComponentDefinition} objects. +In both examples, the two ``lower level'' \sbol{ComponentDefinition} objects each contain a RBS that is intended to represent the same design entity in the ``higher level'' \sbol{ComponentDefinition}. -In order to represent this relationship, a new \sbol{Component} is created, owned by the ``higher level'' \sbol{ComponentDefinition}, to represent the shared 5'UTR. -It is then linked to the equivalent \sbol{Component} in each of the ``lower level'' \sbol{ComponentDefinition} objects by means of a \sbol{MapsTo}, using one \sbol{MapsTo} per link. -For example, to link the shared ``higher level'' 5'UTR to the 5'UTR in the promoter/5'UTR construct, a \sbol{MapsTo} is created that is owned by the \sbol{Component} instance for the promoter/5'UTR construct, setting its \sbol{local} to the 5'UTR \sbol{Component} in the ``higher-level'' construct and its \sbol{remote} to the 5'UTR \sbol{Component} in the ``lower-level'' construct. +In order to explicitly represent these identity relationships, a new \sbol{Component} must be created inside the ``higher level'' \sbol{ComponentDefinition} to represent the shared RBS. +This \sbol{Component} is then linked to the equivalent \sbol{Component} in each of the ``lower level'' \sbol{ComponentDefinition} objects by means of a \sbol{MapsTo}, using one \sbol{MapsTo} per link. +In particular, in order to link the shared ``higher level'' RBS to the ``lower level'' RBS in the promoter-RBS \sbol{ComponentDefinition}, a \sbol{MapsTo} is created \sbol{Component} that refers to , setting its \sbol{local} to the 5'UTR \sbol{Component} in the ``higher-level'' construct and its \sbol{remote} to the 5'UTR \sbol{Component} in the ``lower-level'' construct. Many ``lower level'' instances can then be linked together in an unambiguous relationship by using one \sbol{MapsTo} object per \sbol{remote}, all sharing the same \sbol{local}. The exact same types of relationships also apply and can likewise be declared for \sbol{FunctionalComponent} objects in a \sbol{ModuleDefinition} and the From 8222b5f94352f37a22671407544e89f9e9c56267 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 21 May 2015 17:13:44 +0000 Subject: [PATCH 155/317] Update on Overleaf. --- examples_serialization.tex | 205 +++++++++++++++++++++++-------------- model.tex | 178 ++++++++++++++++++-------------- sbol2.tex | 2 +- 3 files changed, 230 insertions(+), 155 deletions(-) diff --git a/examples_serialization.tex b/examples_serialization.tex index d688faaa..6b2ce13a 100644 --- a/examples_serialization.tex +++ b/examples_serialization.tex @@ -19,161 +19,208 @@ \subsection{PoPS Receiver} \lstsetsbol \begin{lstlisting} - - - BBa_R0040 - TetR repressible promoter + + + + BBa_B0015 + BBa_B0015 + Double terminator + + + + + + + BBa_R0062 + BBa_R0062 + LuxR inducible promoter - + - + + + BBa_C0062 BBa_C0062 luxR coding sequence - + - - BBa_B0015 - Double terminator + + + BBa_R0040 + BBa_R0040 + TetR repressible promoter - - + + - - BBa_R0062 - LuxR inducible promoter + + + BBa_B0034 + BBa_B0034 + RBS based on Elowitz repressilator - - + + - + + + BBa_F2620 BBa_F2620 3OC6HSL -> PoPS Receiver - - + + + + pLuxR - + - - - + + + + + luxR - + - - - + + + + + pTetR - + - - - + + + + + ter - + - - - + + + + + rbs - + - + - + + + anno3 - - 56 - 68 + + + range + 69 + 770 - + - + + + anno4 - + + + range 771 900 - + - + + + anno1 - + + + range 1 55 - + - + + + anno5 - - 69 - 770 + + + range + 901 + 956 - + - + + + anno2 - - 901 - 956 + + + range + 56 + 68 - + - - - BBa_B0034 - RBS based on Elowitz repressilator - - - - - - ccaggcatcaaataaaacgaaaggctcagtcgaaagactgggcctttcgttttatctgttgtttgtcggtgaacgctctctactagagtcacactggctcaccttcgggtgggcctttctgcgtttata - - - + + + BBa_B0034 aaagaggagaaa - - atgcttatctgatatgactaaaatggtacattgtgaatattatttactcgcgatcatttatcctcattctatggttaaatctgatatttcaatcctagataattaccctaaaaaatggaggcaatattatgatgacgctaatttaataaaatatgatcctatagtagattattctaactccaatcattcaccaattaattggaatatatttgaaaacaatgctgtaaataaaaaatctccaaatgtaattaaagaagcgaaaacatcaggtcttatcactgggtttagtttccctattcatacggctaacaatggcttcggaatgcttagttttgcacattcagaaaaagacaactatatagatagtttatttttacatgcgtgtatgaacataccattaattgttccttctctagttgataattatcgaaaaataaatatagcaaataataaatcaaacaacgatttaaccaaaagagaaaaagaatgtttagcgtgggcatgcgaaggaaaaagctcttgggatatttcaaaaatattaggttgcagtgagcgtactgtcactttccatttaaccaatgcgcaaatgaaactcaatacaacaaaccgctgccaaagtatttctaaagcaattttaacaggagcaattgattgcccatactttaaaaattaataacactgatagtgctagtgtagatcac + + + BBa_R0040 + tccctatcagtgatagagattgacatccctatcagtgatagagatactgagcac - - + + + BBa_C0062 + atgcttatctgatatgactaaaatggtacattgtgaatattatttactcgcgatcatttatcctcattctatggttaaatctgatatttcaatcctagataattaccctaaaaaatggaggcaatattatgatgacgctaatttaataaaatatgatcctatagtagattattctaactccaatcattcaccaattaattggaatatatttgaaaacaatgctgtaaataaaaaatctccaaatgtaattaaagaagcgaaaacatcaggtcttatcactgggtttagtttccctattcatacggctaacaatggcttcggaatgcttagttttgcacattcagaaaaagacaactatatagatagtttatttttacatgcgtgtatgaacataccattaattgttccttctctagttgataattatcgaaaaataaatatagcaaataataaatcaaacaacgatttaaccaaaagagaaaaagaatgtttagcgtgggcatgcgaaggaaaaagctcttgggatatttcaaaaatattaggttgcagtgagcgtactgtcactttccatttaaccaatgcgcaaatgaaactcaatacaacaaaccgctgccaaagtatttctaaagcaattttaacaggagcaattgattgcccatactttaaaaattaataacactgatagtgctagtgtagatcac - + + + BBa_R0062 acctgtaggatcgtacaggtttacgcaagaaaatggtttgttatagtcgaataaa - - tccctatcagtgatagagattgacatccctatcagtgatagagatactgagcac + + + BBa_B0015 + ccaggcatcaaataaaacgaaaggctcagtcgaaagactgggcctttcgttttatctgttgtttgtcggtgaacgctctctactagagtcacactggctcaccttcgggtgggcctttctgcgtttata diff --git a/model.tex b/model.tex index 76e2ed0f..304b1148 100644 --- a/model.tex +++ b/model.tex @@ -252,10 +252,16 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - - ttgacagctagctcagtcctaggtataatgctagc - - + + + + + BBa_J23119 + + ttgacagctagctcagtcctaggtataatgctagc + + + \end{lstlisting} @@ -356,9 +362,9 @@ \subsubsection*{Serialization} ... [\emph{zero or more}] [\emph{element}] - [\emph{one or more}] [\emph{elements}] + [\emph{one or more}] [\emph{elements}] [\emph{zero or more}] [\emph{elements}] - [\emph{zero or more}] + [\emph{zero or more}] ... [\emph{elements}] [\emph{zero or more}] @@ -374,15 +380,21 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - - J23119 promoter - Constitutive promoter - - - - - - + + + + + BBa_J23119 + + J23119 promoter + Constitutive promoter + + + + + + + \end{lstlisting} @@ -459,9 +471,9 @@ \subsubsection{Component} \begin{lstlisting} ... - [\emph{one}] [\emph{element}] - [\emph{one}] [\emph{elements}] - [\emph{zero or more}] [\emph{elements}] + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{zero or more}] [\emph{elements}] \end{lstlisting} @@ -470,9 +482,11 @@ \subsubsection{Component} \lstsetsbol \begin{lstlisting} - + + + pLuxR - + \end{lstlisting} @@ -494,31 +508,28 @@ \subsubsection{MapsTo} In particular, a \sbol{MapsTo} object provides two pieces of information: \begin{itemize} \item An identity relationship between two \sbol{ComponentInstance} objects, the first contained by the ``lower level'' definition of the \sbol{ComponentInstance} or \sbol{Module} that owns the - \sbol{MapsTo}, and the second contained by the ``higher level'' definition that contains the \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}. The \sbol{remote} property of a \sbol{MapsTo} refers to the first ``lower level'' \sbol{ComponentInstance}, while the \sbol{local} property refers to the second ``higher level'' \sbol{ComponentInstance}. + \sbol{MapsTo}, and the second contained by the ``higher level'' definition that contains this \sbol{ComponentInstance} or \sbol{Module}. The \sbol{remote} property of a \sbol{MapsTo} refers to the first ``lower level'' \sbol{ComponentInstance}, while the \sbol{local} property refers to the second ``higher level'' \sbol{ComponentInstance}. \item Instructions on what to do if the two \sbol{ComponentInstance} objects refer to different \sbol{ComponentDefinition} objects (that is, they are not identical). This is specified using the \sbol{refinement} property of the \sbol{MapsTo} class. \end{itemize} \begin{figure}[ht] \begin{center} \includegraphics[scale=1]{images/MapsTo_Diagram2} -\caption{Linking Components using \sbol{MapsTo} entities. Boxes with diagrams represent \sbol{ComponentDefinition} objects, while boxes with the C label represent \sbol{Component} objects and boxes with the M label represent \sbol{MapsTo} objects. In both diagrams, a promoter/5'UTR construct and a 5'UTR/coding sequence construct are being combined to form a complete functional unit. -In the left diagram, both 5'UTRs are abstract, with no sequence (white semicircle), and their definition is taken from a third green 5'UTR component. In the right diagram, the two 5'UTRs are different, and the one associated with the promoter (green semicircle) is selected to override the one associated with the coding sequence (red semicircle) in the new \sbol{ComponentDefinition}.} +\caption{Linking Components using \sbol{MapsTo} entities. Boxes with diagrams represent \sbol{ComponentDefinition} objects, while boxes with the C label represent \sbol{Component} objects and boxes with the M label represent \sbol{MapsTo} objects. In both diagrams, a promoter-RBS \sbol{ComponentDefinition} and a RBS-CDS \sbol{ComponentDefinition} are being composed to form a complete transcriptional unit. +In the left diagram, both RBS are abstract, with no sequence (white semicircle), and their definition is taken from a third green RBS component. In the right diagram, the two RBS are different, and the one associated with the promoter (green semicircle) is selected to override the one associated with the coding sequence (red semicircle) in the new \sbol{ComponentDefinition}.} \label{image:maps_to_diagram2} \end{center} \end{figure} To illustrate this concept, two examples are provided in \ref{image:maps_to_diagram2}, in which the \sbol{ComponentDefinition} of a promoter-RBS-CDS transcriptional unit is specified by composing two ``lower level'' \sbol{ComponentDefinition} objects. -In both examples, the two ``lower level'' \sbol{ComponentDefinition} objects each contain a RBS that is intended to represent the same design entity in the ``higher level'' \sbol{ComponentDefinition}. +In both examples, the two ``lower level'' \sbol{ComponentDefinition} objects each contain a RBS \sbol{Component} that is intended to represent the same design entity in the ``higher level'' \sbol{ComponentDefinition}. In order to explicitly represent these identity relationships, a new \sbol{Component} must be created inside the ``higher level'' \sbol{ComponentDefinition} to represent the shared RBS. -This \sbol{Component} is then linked to the equivalent \sbol{Component} in each of the ``lower level'' \sbol{ComponentDefinition} objects by means of a \sbol{MapsTo}, using one \sbol{MapsTo} per link. -In particular, in order to link the shared ``higher level'' RBS to the ``lower level'' RBS in the promoter-RBS \sbol{ComponentDefinition}, a \sbol{MapsTo} is created \sbol{Component} that refers to , setting its \sbol{local} to the 5'UTR \sbol{Component} in the ``higher-level'' construct and its \sbol{remote} to the 5'UTR \sbol{Component} in the ``lower-level'' construct. -Many ``lower level'' instances can then be linked together in an unambiguous relationship by using one \sbol{MapsTo} object per \sbol{remote}, all sharing the same \sbol{local}. - -The exact same types of relationships also apply and can likewise be declared for \sbol{FunctionalComponent} objects in a \sbol{ModuleDefinition} and the -\sbol{ComponentInstance} objects within the ``lower level'' \sbol{Module} or \sbol{FunctionalComponent} instances that it contains. +This \sbol{Component} must then be linked to the equivalent \sbol{Component} in each of the ``lower level'' \sbol{ComponentDefinition} objects by means of a \sbol{MapsTo}, using one \sbol{MapsTo} per link. +In particular, in order to link the shared ``higher level'' RBS to the ``lower level'' RBS in the promoter-RBS \sbol{ComponentDefinition}, a \sbol{MapsTo} is created and owned by the \sbol{Component} that instantiates the promoter-RBS \sbol{ComponentDefinition} inside the ``higher level'' promoter-RBS-CDS \sbol{ComponentDefinition}. The \sbol{local} property of this \sbol{MapsTo} then refers to the shared RBS \sbol{Component} inside the ``higher-level'' \sbol{ComponentDefinition}, and its \sbol{remote} property refers to the RBS \sbol{Component} in the ``lower-level'' promoter-RBS \sbol{ComponentDefinition}. +In this way, many ``lower level'' \sbol{Component} objects can be linked together at the ``higher level'' using as many \sbol{MapsTo} objects, with each \sbol{MapsTo} referring to a different \sbol{remote} \sbol{Component}, but all referring to the same \sbol{local} \sbol{Component}. -\Rtodo{need to explain the whole 3-way mapsto model and importation better. JSB: done, I think} +The exact same types of identity relationships can also be declared between \sbol{FunctionalComponent} objects contained by \sbol{ModuleDefinition} objects, or between \sbol{Component} objects in \sbol{ComponentDefinition} objects and \sbol{FunctionalComponent} objects in \sbol{ModuleDefinition} objects. See \ref{sec:examples} for additional examples using the \sbol{MapsTo} class. \paragraph{The \sbolheading{local} property}\label{sec:local} This REQUIRED property is used to specify the \sbol{ComponentInstance} from the ``higher level'' entity. The same higher-level entity MUST own both the \sbol{local} and object that owns the \sbol{MapsTo}. @@ -551,19 +562,22 @@ \subsubsection{MapsTo} \lstsetsbol \begin{lstlisting} - [\emph{one}] ... [\emph{element}] - [\emph{one}] [\emph{element}]] - [\emph{one}] [\emph{element}]] + ... + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] \end{lstlisting} In the example below, a \sbol{FunctionalComponent} entity from the submodule is linked to a \sbol{FunctionalComponent} entity in a parent module. The former is described in the imported \sbol{ModuleDefinition} entity which is referred to by the definition property of the \sbol{Module} entity. The latter is defined in the parent \sbol{ModuleDefinition}, importing the sub module. The full example can be found in \ref{ser:toggleswitch}. \lstsetsbol \begin{lstlisting} - - USEREMOTE - - + + + LacI_mapping + + + \end{lstlisting} @@ -610,18 +624,20 @@ \subsubsection{SequenceAnnotation} The example below shows the serialization of a \sbol{SequenceAnnotation} object. It specifies the location of a particular \sbol{Component} named BBa\_F2620. \lstsetsbol \begin{lstlisting} - - - - - 56 - 68 - - - - - - + + + anno2 + + + + range + 56 + 68 + + + + + \end{lstlisting} \Rtodo{Need to give an example with this one. JSB: done.} @@ -686,7 +702,9 @@ \subsubsection{Location} The example below shows the serialization of a \sbol{Range} object. It specifies the region between 56 and 68, and the orientation is given as \external{inline}. \lstsetsbol \begin{lstlisting} - + + + range 56 68 @@ -718,8 +736,10 @@ \subsubsection{Location} The example below shows the serialization of a \sbol{Cut} object. It specifies the location after 27, and the orientation is given as \external{inline}. \lstsetsbol \begin{lstlisting} - - 27 + + + cut + 10 \end{lstlisting} @@ -890,9 +910,9 @@ \subsubsection*{Serialization} \begin{lstlisting} ... - [\emph{one}] [\emph{element}] - [\emph{one}] [\emph{element}] - [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] \end{lstlisting} @@ -900,14 +920,16 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - - + + + + pIKE_Toggle_1 + pIKE_Toggle_1 toggle switch - \end{lstlisting} \label{ser:Model} @@ -1248,7 +1270,7 @@ \subsubsection*{Serialization} \begin{lstlisting} ... - [\emph{one or more}] [\emph{element}] + [\emph{zero or more}] [\emph{element}] \end{lstlisting} @@ -1256,17 +1278,17 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - + + Anderson Anderson promoters - The Anderson promoter collection - + The Anderson promoter collection + ... - + - \end{lstlisting} \label{ser:Collection} @@ -1316,10 +1338,12 @@ \subsubsection{Annotating SBOL objects} \lstsetsbol \begin{lstlisting} - - + + + + BBa_J23119 iGEM2006_Berkeley - + //rnap/prokaryote/ecoli/sigma70 @@ -1329,7 +1353,7 @@ \subsubsection{Annotating SBOL objects} J23119 Constitutive promoter - + \end{lstlisting} @@ -1365,21 +1389,25 @@ \subsubsection{GenericTopLevel} \lstsetsbol \begin{lstlisting} - - - + + + + BBa_J23119 + + J23119 Constitutive promoter - + - + + + datasheet1 1 Datasheet 1 - \end{lstlisting} \label{ser:GenericTopLevel} \end{figure} \ No newline at end of file diff --git a/sbol2.tex b/sbol2.tex index cf490d6b..78186709 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -56,7 +56,7 @@ \definecolor{gray}{rgb}{0.5,0.5,0.5} \definecolor{light-gray}{gray}{0.97} \lstdefinelanguage{sbol} - {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:MapsTo, sbol:sequence,sbol:wasDerivedFrom,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation,sbol:component,sbol:location, sbol:sequenceAnnotation, sbol:Range, sbol:start, sbol:end, sbol:orientation,sbol:SequenceConstraint, sbol:restriction, sbol:subject, sbol:object,sbol:Sequence, sbol:elements, sbol:encoding,sbol:Model, sbol:source, sbol:language, sbol:framework,sbol:FunctionalComponent, sbol:Module, sbol:Interaction, sbol:interaction, sbol:subModule, sbol:model,sbol:Model,sbol:definition, sbol:access, sbol:direction, sbol:mapping, sbol:refinement, sbol:local, sbol:remote, sbol:participation, sbol:Participation, sbol:participant}, + {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:MapsTo, sbol:sequence,sbol:wasDerivedFrom,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation,sbol:component,sbol:location, sbol:sequenceAnnotation, sbol:Range, sbol:start, sbol:end, sbol:orientation,sbol:SequenceConstraint, sbol:restriction, sbol:subject, sbol:object,sbol:Sequence, sbol:elements, sbol:encoding,sbol:Model, sbol:source, sbol:language, sbol:framework,sbol:FunctionalComponent, sbol:Module, sbol:Interaction, sbol:interaction, sbol:subModule, sbol:model,sbol:Model,sbol:definition, sbol:access, sbol:direction, sbol:mapping, sbol:refinement, sbol:local, sbol:remote, sbol:participation, sbol:Participation, sbol:participant,sbol:sequenceConstraint,sbol:at,sbol:Cut}, basicstyle=\fontsize{7}{9}\selectfont\ttfamily, backgroundcolor=\color{light-gray}, keywordstyle=\color{blue}, From 9c6678b32127a45a39a75234d23d74904a82f9f8 Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Thu, 21 May 2015 18:01:10 +0000 Subject: [PATCH 156/317] Update on Overleaf. --- model.tex | 18 +++++++++--------- sbol2.tex | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/model.tex b/model.tex index 304b1148..8dd3e4ea 100644 --- a/model.tex +++ b/model.tex @@ -515,8 +515,7 @@ \subsubsection{MapsTo} \begin{figure}[ht] \begin{center} \includegraphics[scale=1]{images/MapsTo_Diagram2} -\caption{Linking Components using \sbol{MapsTo} entities. Boxes with diagrams represent \sbol{ComponentDefinition} objects, while boxes with the C label represent \sbol{Component} objects and boxes with the M label represent \sbol{MapsTo} objects. In both diagrams, a promoter-RBS \sbol{ComponentDefinition} and a RBS-CDS \sbol{ComponentDefinition} are being composed to form a complete transcriptional unit. -In the left diagram, both RBS are abstract, with no sequence (white semicircle), and their definition is taken from a third green RBS component. In the right diagram, the two RBS are different, and the one associated with the promoter (green semicircle) is selected to override the one associated with the coding sequence (red semicircle) in the new \sbol{ComponentDefinition}.} +\caption{Linking Components using \sbol{MapsTo} entities. Boxes with diagrams represent \sbol{ComponentDefinition} objects, boxes with the C label represent \sbol{Component} objects, and boxes with the M label represent \sbol{MapsTo} objects. In both diagrams, a promoter-RBS \sbol{ComponentDefinition} and a RBS-CDS \sbol{ComponentDefinition} are being composed to form the \sbol{ComponentDefinition} of a complete transcriptional unit. In the lefthand diagram, the \sbol{Component} objects inside the promoter-RBS \sbol{ComponentDefinition} and RBS-CDS \sbol{ComponentDefinition} both refer to an abstract RBS \sbol{ComponentDefinition} (white semicircle, not shown separately) that lacks a sequence. Through the use of \sbol{MapsTo} objects with useLocal \sbol{refinement} properties, these \sbol{ComponentDefinition} objects are effectively overridden by that of the green RBS in the \sbol{ComponentDefinition} for the complete transcriptional unit. In the righthand diagram, however, the two ``lower level'' RBS \sbol{ComponentDefinition} objects are different and do not lack sequences. In this case, one of the \sbol{MapsTo} objcts has a useRemote \sbol{refinement}, and the one associated with the promoter (green semicircle) is selected to override the one associated with the coding sequence (red semicircle) in the new \sbol{ComponentDefinition}.} \label{image:maps_to_diagram2} \end{center} \end{figure} @@ -762,7 +761,6 @@ \subsubsection{Location} \begin{lstlisting} ... - [\emph{one}] ... [\emph{element}] [\emph{zero or one}] [\emph{element}] \end{lstlisting} @@ -838,10 +836,12 @@ \subsubsection{SequenceConstraint} The example below shows the serialization of a \sbol{SequenceConstraint} object. In the example, the constraint is included as part of a \sbol{ComponentDefinition} for a LacI repressible composite promoter and has a precedes restriction. This restriction states that the subject \sbol{Component} for the core promoter precedes the object \sbol{Component} for the LacI operator in the composite promoter definition. Such restriction is especially useful to specify incomplete designs and the final design may include other components between the subject and object components. \lstsetsbol \begin{lstlisting} - + + + r1 - - + + \end{lstlisting} @@ -1110,10 +1110,10 @@ \subsubsection{Module} \lstsetsbol \begin{lstlisting} - [\emph{one}] [\emph{element}] - [\emph{zero or more}] + [\emph{one}] [\emph{element}] + [\emph{zero or more}] ... - [\emph{element}] + [\emph{element}] \end{lstlisting} diff --git a/sbol2.tex b/sbol2.tex index 78186709..cbeb42ad 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -56,7 +56,7 @@ \definecolor{gray}{rgb}{0.5,0.5,0.5} \definecolor{light-gray}{gray}{0.97} \lstdefinelanguage{sbol} - {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:MapsTo, sbol:sequence,sbol:wasDerivedFrom,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation,sbol:component,sbol:location, sbol:sequenceAnnotation, sbol:Range, sbol:start, sbol:end, sbol:orientation,sbol:SequenceConstraint, sbol:restriction, sbol:subject, sbol:object,sbol:Sequence, sbol:elements, sbol:encoding,sbol:Model, sbol:source, sbol:language, sbol:framework,sbol:FunctionalComponent, sbol:Module, sbol:Interaction, sbol:interaction, sbol:subModule, sbol:model,sbol:Model,sbol:definition, sbol:access, sbol:direction, sbol:mapping, sbol:refinement, sbol:local, sbol:remote, sbol:participation, sbol:Participation, sbol:participant,sbol:sequenceConstraint,sbol:at,sbol:Cut}, + {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:MapsTo, sbol:sequence,sbol:wasDerivedFrom,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation,sbol:component,sbol:location, sbol:sequenceAnnotation, sbol:Range, sbol:start, sbol:end, sbol:orientation,sbol:SequenceConstraint, sbol:restriction, sbol:subject, sbol:object,sbol:Sequence, sbol:elements, sbol:encoding,sbol:Model, sbol:source, sbol:language, sbol:framework,sbol:FunctionalComponent, sbol:Module, sbol:Interaction, sbol:interaction, sbol:module, sbol:model,sbol:Model,sbol:definition, sbol:access, sbol:direction, sbol:mapsTo, sbol:refinement, sbol:local, sbol:remote, sbol:participation, sbol:Participation, sbol:participant,sbol:sequenceConstraint,sbol:at,sbol:Cut,sbol:functionalComponent,sbol:ModuleDefinition}, basicstyle=\fontsize{7}{9}\selectfont\ttfamily, backgroundcolor=\color{light-gray}, keywordstyle=\color{blue}, From 4525bb1f91f7df115e85b30a0027b5fff2fb8d41 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 21 May 2015 19:25:18 +0000 Subject: [PATCH 157/317] Update on Overleaf. --- images/MapsTo_Diagram3.png | Bin 0 -> 368832 bytes model.tex | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 images/MapsTo_Diagram3.png diff --git a/images/MapsTo_Diagram3.png b/images/MapsTo_Diagram3.png new file mode 100644 index 0000000000000000000000000000000000000000..52d07cf8615c61f24bad9821a4eb51f2fa526e14 GIT binary patch literal 368832 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�Ck8bRD{NjgH3rOu=LcHE9+MlB7C>BD6t_=F9c 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%0Dv)q|Hj-s3J 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%0DMyWs$wOxpZ{_bL9-?=5lq8001 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∓4szMEpc=)2AK;RwM?pL$GY-T1Mls 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�mE!CN$nxLya&E#1bx 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%0AO;Qfd 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 Y<9gG?`ywCsGYl1qa%!>#PfY^;4?-1_ivR!s literal 0 HcmV?d00001 diff --git a/model.tex b/model.tex index 8dd3e4ea..b86cedff 100644 --- a/model.tex +++ b/model.tex @@ -514,7 +514,7 @@ \subsubsection{MapsTo} \begin{figure}[ht] \begin{center} -\includegraphics[scale=1]{images/MapsTo_Diagram2} +\includegraphics[scale=1]{images/MapsTo_Diagram3} \caption{Linking Components using \sbol{MapsTo} entities. Boxes with diagrams represent \sbol{ComponentDefinition} objects, boxes with the C label represent \sbol{Component} objects, and boxes with the M label represent \sbol{MapsTo} objects. In both diagrams, a promoter-RBS \sbol{ComponentDefinition} and a RBS-CDS \sbol{ComponentDefinition} are being composed to form the \sbol{ComponentDefinition} of a complete transcriptional unit. In the lefthand diagram, the \sbol{Component} objects inside the promoter-RBS \sbol{ComponentDefinition} and RBS-CDS \sbol{ComponentDefinition} both refer to an abstract RBS \sbol{ComponentDefinition} (white semicircle, not shown separately) that lacks a sequence. Through the use of \sbol{MapsTo} objects with useLocal \sbol{refinement} properties, these \sbol{ComponentDefinition} objects are effectively overridden by that of the green RBS in the \sbol{ComponentDefinition} for the complete transcriptional unit. In the righthand diagram, however, the two ``lower level'' RBS \sbol{ComponentDefinition} objects are different and do not lack sequences. In this case, one of the \sbol{MapsTo} objcts has a useRemote \sbol{refinement}, and the one associated with the promoter (green semicircle) is selected to override the one associated with the coding sequence (red semicircle) in the new \sbol{ComponentDefinition}.} \label{image:maps_to_diagram2} \end{center} From efce45f58799b186d54c0f96e006e3ec9da4d126 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 21 May 2015 19:44:20 +0000 Subject: [PATCH 158/317] Update on Overleaf. --- model.tex | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/model.tex b/model.tex index b86cedff..15f8d6ee 100644 --- a/model.tex +++ b/model.tex @@ -515,7 +515,7 @@ \subsubsection{MapsTo} \begin{figure}[ht] \begin{center} \includegraphics[scale=1]{images/MapsTo_Diagram3} -\caption{Linking Components using \sbol{MapsTo} entities. Boxes with diagrams represent \sbol{ComponentDefinition} objects, boxes with the C label represent \sbol{Component} objects, and boxes with the M label represent \sbol{MapsTo} objects. In both diagrams, a promoter-RBS \sbol{ComponentDefinition} and a RBS-CDS \sbol{ComponentDefinition} are being composed to form the \sbol{ComponentDefinition} of a complete transcriptional unit. In the lefthand diagram, the \sbol{Component} objects inside the promoter-RBS \sbol{ComponentDefinition} and RBS-CDS \sbol{ComponentDefinition} both refer to an abstract RBS \sbol{ComponentDefinition} (white semicircle, not shown separately) that lacks a sequence. Through the use of \sbol{MapsTo} objects with useLocal \sbol{refinement} properties, these \sbol{ComponentDefinition} objects are effectively overridden by that of the green RBS in the \sbol{ComponentDefinition} for the complete transcriptional unit. In the righthand diagram, however, the two ``lower level'' RBS \sbol{ComponentDefinition} objects are different and do not lack sequences. In this case, one of the \sbol{MapsTo} objcts has a useRemote \sbol{refinement}, and the one associated with the promoter (green semicircle) is selected to override the one associated with the coding sequence (red semicircle) in the new \sbol{ComponentDefinition}.} +\caption{Linking \sbol{Component} objects using \sbol{MapsTo} entities. Boxes with diagrams represent \sbol{ComponentDefinition} objects, boxes with the C label represent \sbol{Component} objects, and boxes with the M label represent \sbol{MapsTo} objects. In both diagrams, a promoter-RBS \sbol{ComponentDefinition} and a RBS-CDS \sbol{ComponentDefinition} are being composed to form the \sbol{ComponentDefinition} of a complete transcriptional unit. In the lefthand diagram, the \sbol{Component} objects inside the promoter-RBS \sbol{ComponentDefinition} and RBS-CDS \sbol{ComponentDefinition} both refer to an abstract RBS \sbol{ComponentDefinition} that lacks a sequence (white semicircle). Through the use of \sbol{MapsTo} objects with useLocal \sbol{refinement} properties, these \sbol{ComponentDefinition} objects are effectively overridden by that of the green RBS in the \sbol{ComponentDefinition} for the complete transcriptional unit. In the righthand diagram, however, the two ``lower level'' RBS \sbol{ComponentDefinition} objects are different and do not lack sequences. In this case, one of the \sbol{MapsTo} objects has a useRemote \sbol{refinement}, resulting in the green RBS \sbol{ComponentDefinition} overriding that of the red RBS in the \sbol{ComponentDefinition} for the complete transcriptional unit.} \label{image:maps_to_diagram2} \end{center} \end{figure} @@ -524,9 +524,9 @@ \subsubsection{MapsTo} In both examples, the two ``lower level'' \sbol{ComponentDefinition} objects each contain a RBS \sbol{Component} that is intended to represent the same design entity in the ``higher level'' \sbol{ComponentDefinition}. In order to explicitly represent these identity relationships, a new \sbol{Component} must be created inside the ``higher level'' \sbol{ComponentDefinition} to represent the shared RBS. -This \sbol{Component} must then be linked to the equivalent \sbol{Component} in each of the ``lower level'' \sbol{ComponentDefinition} objects by means of a \sbol{MapsTo}, using one \sbol{MapsTo} per link. -In particular, in order to link the shared ``higher level'' RBS to the ``lower level'' RBS in the promoter-RBS \sbol{ComponentDefinition}, a \sbol{MapsTo} is created and owned by the \sbol{Component} that instantiates the promoter-RBS \sbol{ComponentDefinition} inside the ``higher level'' promoter-RBS-CDS \sbol{ComponentDefinition}. The \sbol{local} property of this \sbol{MapsTo} then refers to the shared RBS \sbol{Component} inside the ``higher-level'' \sbol{ComponentDefinition}, and its \sbol{remote} property refers to the RBS \sbol{Component} in the ``lower-level'' promoter-RBS \sbol{ComponentDefinition}. -In this way, many ``lower level'' \sbol{Component} objects can be linked together at the ``higher level'' using as many \sbol{MapsTo} objects, with each \sbol{MapsTo} referring to a different \sbol{remote} \sbol{Component}, but all referring to the same \sbol{local} \sbol{Component}. +This \sbol{Component} must then be linked to the equivalent \sbol{Component} in each of the ``lower level'' \sbol{ComponentDefinition} objects by means of a \sbol{MapsTo}, using one \sbol{MapsTo} per link. In this way, many ``lower level'' \sbol{Component} objects can be linked together at the ``higher level'' using as many \sbol{MapsTo} objects, with each \sbol{MapsTo} referring to a different \sbol{remote} \sbol{Component}, but all referring to the same \sbol{local} \sbol{Component}. + +% In particular, in order to link the shared ``higher level'' RBS to the ``lower level'' RBS in the promoter-RBS \sbol{ComponentDefinition}, a \sbol{MapsTo} is created and owned by the \sbol{Component} that instantiates the promoter-RBS \sbol{ComponentDefinition} inside the ``higher level'' promoter-RBS-CDS \sbol{ComponentDefinition}. The \sbol{local} property of this \sbol{MapsTo} then refers to the shared RBS \sbol{Component} inside the ``higher-level'' \sbol{ComponentDefinition}, and its \sbol{remote} property refers to the RBS \sbol{Component} in the ``lower-level'' promoter-RBS \sbol{ComponentDefinition}. The exact same types of identity relationships can also be declared between \sbol{FunctionalComponent} objects contained by \sbol{ModuleDefinition} objects, or between \sbol{Component} objects in \sbol{ComponentDefinition} objects and \sbol{FunctionalComponent} objects in \sbol{ModuleDefinition} objects. See \ref{sec:examples} for additional examples using the \sbol{MapsTo} class. From 7e9c57737c7beff36e5cd0354fc3afef4e8bc8e0 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 21 May 2015 20:14:28 +0000 Subject: [PATCH 159/317] Update on Overleaf. --- model.tex | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/model.tex b/model.tex index 15f8d6ee..dea5ba81 100644 --- a/model.tex +++ b/model.tex @@ -515,20 +515,20 @@ \subsubsection{MapsTo} \begin{figure}[ht] \begin{center} \includegraphics[scale=1]{images/MapsTo_Diagram3} -\caption{Linking \sbol{Component} objects using \sbol{MapsTo} entities. Boxes with diagrams represent \sbol{ComponentDefinition} objects, boxes with the C label represent \sbol{Component} objects, and boxes with the M label represent \sbol{MapsTo} objects. In both diagrams, a promoter-RBS \sbol{ComponentDefinition} and a RBS-CDS \sbol{ComponentDefinition} are being composed to form the \sbol{ComponentDefinition} of a complete transcriptional unit. In the lefthand diagram, the \sbol{Component} objects inside the promoter-RBS \sbol{ComponentDefinition} and RBS-CDS \sbol{ComponentDefinition} both refer to an abstract RBS \sbol{ComponentDefinition} that lacks a sequence (white semicircle). Through the use of \sbol{MapsTo} objects with useLocal \sbol{refinement} properties, these \sbol{ComponentDefinition} objects are effectively overridden by that of the green RBS in the \sbol{ComponentDefinition} for the complete transcriptional unit. In the righthand diagram, however, the two ``lower level'' RBS \sbol{ComponentDefinition} objects are different and do not lack sequences. In this case, one of the \sbol{MapsTo} objects has a useRemote \sbol{refinement}, resulting in the green RBS \sbol{ComponentDefinition} overriding that of the red RBS in the \sbol{ComponentDefinition} for the complete transcriptional unit.} +\caption{Linking \sbol{Component} objects using \sbol{MapsTo} entities. Boxes with diagrams represent \sbol{ComponentDefinition} objects, boxes with the C label represent \sbol{Component} objects, and boxes with the M label represent \sbol{MapsTo} objects. In both diagrams, a promoter-RBS \sbol{ComponentDefinition} and a RBS-CDS \sbol{ComponentDefinition} are being composed to form the \sbol{ComponentDefinition} of a complete transcriptional unit. In the lefthand diagram, the \sbol{Component} objects inside the promoter-RBS \sbol{ComponentDefinition} and RBS-CDS \sbol{ComponentDefinition} both refer to an abstract RBS \sbol{ComponentDefinition} that lacks a sequence (white semicircle). Through the use of \sbol{MapsTo} objects with useLocal \sbol{refinement} properties, these \sbol{ComponentDefinition} objects are effectively overridden by that of the green RBS in the \sbol{ComponentDefinition} of the complete transcriptional unit. In the righthand diagram, however, the two ``lower level'' RBS \sbol{ComponentDefinition} objects are different and do not lack sequences. In this case, one of the \sbol{MapsTo} objects has a useRemote \sbol{refinement}, resulting in the green RBS \sbol{ComponentDefinition} overriding that of the red RBS in the ``higher level'' \sbol{ComponentDefinition}.} \label{image:maps_to_diagram2} \end{center} \end{figure} -To illustrate this concept, two examples are provided in \ref{image:maps_to_diagram2}, in which the \sbol{ComponentDefinition} of a promoter-RBS-CDS transcriptional unit is specified by composing two ``lower level'' \sbol{ComponentDefinition} objects. -In both examples, the two ``lower level'' \sbol{ComponentDefinition} objects each contain a RBS \sbol{Component} that is intended to represent the same design entity in the ``higher level'' \sbol{ComponentDefinition}. +To illustrate this concept, two examples are provided in \ref{image:maps_to_diagram2}, in which the \sbol{ComponentDefinition} of a transcriptional unit is specified by composing two ``lower level'' \sbol{ComponentDefinition} objects. +In both examples, the two ``lower level'' \sbol{ComponentDefinition} objects each contain a RBS \sbol{Component} that is intended to represent the same design entity in the ``higher level'' \sbol{ComponentDefinition} of the transcriptional unit. In order to explicitly represent these identity relationships, a new \sbol{Component} must be created inside the ``higher level'' \sbol{ComponentDefinition} to represent the shared RBS. -This \sbol{Component} must then be linked to the equivalent \sbol{Component} in each of the ``lower level'' \sbol{ComponentDefinition} objects by means of a \sbol{MapsTo}, using one \sbol{MapsTo} per link. In this way, many ``lower level'' \sbol{Component} objects can be linked together at the ``higher level'' using as many \sbol{MapsTo} objects, with each \sbol{MapsTo} referring to a different \sbol{remote} \sbol{Component}, but all referring to the same \sbol{local} \sbol{Component}. +This \sbol{Component} must then be linked to the equivalent \sbol{Component} objects in each of the ``lower level'' \sbol{ComponentDefinition} objects by means of the \sbol{MapsTo} class, using one \sbol{MapsTo} object per link. +For example, in order to link the ``higher level'' RBS \sbol{Component} in the transcriptional unit \sbol{ComponentDefinition} to the ``lower level'' RBS \sbol{Component} in the promoter-RBS \sbol{ComponentDefinition}, a \sbol{MapsTo} must be created on the ``higher level'' promoter-RBS \sbol{Component}. The \sbol{local} property of this \sbol{MapsTo} must then refer to the ``higher level'' RBS \sbol{Component}, while its \sbol{remote} property must refer to the ``lower level'' RBS \sbol{Component}. +In this way, many ``lower level'' \sbol{Component} objects can be linked together at the ``higher level'' using as an equal number of \sbol{MapsTo} objects, each one referring to a different \sbol{remote} \sbol{Component}, but all referring to the same \sbol{local} \sbol{Component}. -% In particular, in order to link the shared ``higher level'' RBS to the ``lower level'' RBS in the promoter-RBS \sbol{ComponentDefinition}, a \sbol{MapsTo} is created and owned by the \sbol{Component} that instantiates the promoter-RBS \sbol{ComponentDefinition} inside the ``higher level'' promoter-RBS-CDS \sbol{ComponentDefinition}. The \sbol{local} property of this \sbol{MapsTo} then refers to the shared RBS \sbol{Component} inside the ``higher-level'' \sbol{ComponentDefinition}, and its \sbol{remote} property refers to the RBS \sbol{Component} in the ``lower-level'' promoter-RBS \sbol{ComponentDefinition}. - -The exact same types of identity relationships can also be declared between \sbol{FunctionalComponent} objects contained by \sbol{ModuleDefinition} objects, or between \sbol{Component} objects in \sbol{ComponentDefinition} objects and \sbol{FunctionalComponent} objects in \sbol{ModuleDefinition} objects. See \ref{sec:examples} for additional examples using the \sbol{MapsTo} class. +The same types of identity relationships can also be declared between \sbol{FunctionalComponent} objects contained by \sbol{ModuleDefinition} objects, or between \sbol{Component} objects contained by \sbol{ComponentDefinition} objects and \sbol{FunctionalComponent} objects contained by \sbol{ModuleDefinition} objects. See \ref{sec:examples} for additional examples using the \sbol{MapsTo} class. \paragraph{The \sbolheading{local} property}\label{sec:local} This REQUIRED property is used to specify the \sbol{ComponentInstance} from the ``higher level'' entity. The same higher-level entity MUST own both the \sbol{local} and object that owns the \sbol{MapsTo}. From 10c23171be9ea92eb4dbed9094b57eb5bae9a2fa Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 21 May 2015 20:42:22 +0000 Subject: [PATCH 160/317] Update on Overleaf. --- images/MapsTo_Diagram3.png | Bin 368832 -> 375286 bytes model.tex | 10 +++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/images/MapsTo_Diagram3.png b/images/MapsTo_Diagram3.png index 52d07cf8615c61f24bad9821a4eb51f2fa526e14..96eac86b7e33093641787991aec8db09abce3430 100644 GIT binary patch delta 304429 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

    MC2>Et|-RJ83J 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 diff --git a/model.tex b/model.tex index dea5ba81..47f45182 100644 --- a/model.tex +++ b/model.tex @@ -509,13 +509,13 @@ \subsubsection{MapsTo} \begin{itemize} \item An identity relationship between two \sbol{ComponentInstance} objects, the first contained by the ``lower level'' definition of the \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}, and the second contained by the ``higher level'' definition that contains this \sbol{ComponentInstance} or \sbol{Module}. The \sbol{remote} property of a \sbol{MapsTo} refers to the first ``lower level'' \sbol{ComponentInstance}, while the \sbol{local} property refers to the second ``higher level'' \sbol{ComponentInstance}. -\item Instructions on what to do if the two \sbol{ComponentInstance} objects refer to different \sbol{ComponentDefinition} objects (that is, they are not identical). This is specified using the \sbol{refinement} property of the \sbol{MapsTo} class. +\item Instructions on what to do if the \sbol{local} and \sbol{remote} \sbol{ComponentInstance} objects refer to different \sbol{ComponentDefinition} objects (that is, they are not identical). These are specified using the \sbol{refinement} property of the \sbol{MapsTo} class. \end{itemize} \begin{figure}[ht] \begin{center} \includegraphics[scale=1]{images/MapsTo_Diagram3} -\caption{Linking \sbol{Component} objects using \sbol{MapsTo} entities. Boxes with diagrams represent \sbol{ComponentDefinition} objects, boxes with the C label represent \sbol{Component} objects, and boxes with the M label represent \sbol{MapsTo} objects. In both diagrams, a promoter-RBS \sbol{ComponentDefinition} and a RBS-CDS \sbol{ComponentDefinition} are being composed to form the \sbol{ComponentDefinition} of a complete transcriptional unit. In the lefthand diagram, the \sbol{Component} objects inside the promoter-RBS \sbol{ComponentDefinition} and RBS-CDS \sbol{ComponentDefinition} both refer to an abstract RBS \sbol{ComponentDefinition} that lacks a sequence (white semicircle). Through the use of \sbol{MapsTo} objects with useLocal \sbol{refinement} properties, these \sbol{ComponentDefinition} objects are effectively overridden by that of the green RBS in the \sbol{ComponentDefinition} of the complete transcriptional unit. In the righthand diagram, however, the two ``lower level'' RBS \sbol{ComponentDefinition} objects are different and do not lack sequences. In this case, one of the \sbol{MapsTo} objects has a useRemote \sbol{refinement}, resulting in the green RBS \sbol{ComponentDefinition} overriding that of the red RBS in the ``higher level'' \sbol{ComponentDefinition}.} +\caption{Linking \sbol{Component} objects using \sbol{MapsTo} entities. Boxes with diagrams represent \sbol{ComponentDefinition} objects, boxes with the C label represent \sbol{Component} objects, and boxes with the M label represent \sbol{MapsTo} objects. In both diagrams, a promoter-RBS \sbol{ComponentDefinition} and a RBS-CDS \sbol{ComponentDefinition} are being composed to form the \sbol{ComponentDefinition} of a complete transcriptional unit. In the lefthand diagram, the \sbol{Component} objects inside the promoter-RBS \sbol{ComponentDefinition} and RBS-CDS \sbol{ComponentDefinition} both refer to an abstract RBS \sbol{ComponentDefinition} that lacks a sequence (white semicircle). Through the use of \sbol{MapsTo} objects with useLocal \sbol{refinement} properties, these ``lower level'' \sbol{ComponentDefinition} objects are effectively overridden by that of the green RBS in the \sbol{ComponentDefinition} of the complete transcriptional unit. In the righthand diagram, however, the two ``lower level'' RBS \sbol{ComponentDefinition} objects do not lack sequences and it is the ``higher level'' RBS \sbol{ComponentDefinition} that is abstract. In this case, one of the \sbol{MapsTo} objects has a useRemote \sbol{refinement}, resulting in the green RBS \sbol{ComponentDefinition} overriding that of the red RBS in the ``higher level'' \sbol{ComponentDefinition}.} \label{image:maps_to_diagram2} \end{center} \end{figure} @@ -523,9 +523,9 @@ \subsubsection{MapsTo} To illustrate this concept, two examples are provided in \ref{image:maps_to_diagram2}, in which the \sbol{ComponentDefinition} of a transcriptional unit is specified by composing two ``lower level'' \sbol{ComponentDefinition} objects. In both examples, the two ``lower level'' \sbol{ComponentDefinition} objects each contain a RBS \sbol{Component} that is intended to represent the same design entity in the ``higher level'' \sbol{ComponentDefinition} of the transcriptional unit. -In order to explicitly represent these identity relationships, a new \sbol{Component} must be created inside the ``higher level'' \sbol{ComponentDefinition} to represent the shared RBS. -This \sbol{Component} must then be linked to the equivalent \sbol{Component} objects in each of the ``lower level'' \sbol{ComponentDefinition} objects by means of the \sbol{MapsTo} class, using one \sbol{MapsTo} object per link. -For example, in order to link the ``higher level'' RBS \sbol{Component} in the transcriptional unit \sbol{ComponentDefinition} to the ``lower level'' RBS \sbol{Component} in the promoter-RBS \sbol{ComponentDefinition}, a \sbol{MapsTo} must be created on the ``higher level'' promoter-RBS \sbol{Component}. The \sbol{local} property of this \sbol{MapsTo} must then refer to the ``higher level'' RBS \sbol{Component}, while its \sbol{remote} property must refer to the ``lower level'' RBS \sbol{Component}. +In order to explicitly represent these identity relationships, a new RBS \sbol{Component} must be created inside the ``higher level'' \sbol{ComponentDefinition}. +This ``higher level'' \sbol{Component} must then be linked to the equivalent ``lower level'' \sbol{Component} objects by means of the \sbol{MapsTo} class, using one \sbol{MapsTo} object per link. +For example, in order to link the ``higher level'' RBS \sbol{Component} of the transcriptional unit \sbol{ComponentDefinition} to the ``lower level'' RBS \sbol{Component} of the promoter-RBS \sbol{ComponentDefinition}, a \sbol{MapsTo} must be created on the ``higher level'' promoter-RBS \sbol{Component}. The \sbol{local} property of this \sbol{MapsTo} must then refer to the ``higher level'' RBS \sbol{Component}, while its \sbol{remote} property must refer to the ``lower level'' RBS \sbol{Component}. In this way, many ``lower level'' \sbol{Component} objects can be linked together at the ``higher level'' using as an equal number of \sbol{MapsTo} objects, each one referring to a different \sbol{remote} \sbol{Component}, but all referring to the same \sbol{local} \sbol{Component}. The same types of identity relationships can also be declared between \sbol{FunctionalComponent} objects contained by \sbol{ModuleDefinition} objects, or between \sbol{Component} objects contained by \sbol{ComponentDefinition} objects and \sbol{FunctionalComponent} objects contained by \sbol{ModuleDefinition} objects. See \ref{sec:examples} for additional examples using the \sbol{MapsTo} class. From 9884397961c039171e24c4e8e2334f2478ca2f51 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 21 May 2015 20:43:20 +0000 Subject: [PATCH 161/317] Update on Overleaf. --- model.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model.tex b/model.tex index 47f45182..10def3dd 100644 --- a/model.tex +++ b/model.tex @@ -526,7 +526,7 @@ \subsubsection{MapsTo} In order to explicitly represent these identity relationships, a new RBS \sbol{Component} must be created inside the ``higher level'' \sbol{ComponentDefinition}. This ``higher level'' \sbol{Component} must then be linked to the equivalent ``lower level'' \sbol{Component} objects by means of the \sbol{MapsTo} class, using one \sbol{MapsTo} object per link. For example, in order to link the ``higher level'' RBS \sbol{Component} of the transcriptional unit \sbol{ComponentDefinition} to the ``lower level'' RBS \sbol{Component} of the promoter-RBS \sbol{ComponentDefinition}, a \sbol{MapsTo} must be created on the ``higher level'' promoter-RBS \sbol{Component}. The \sbol{local} property of this \sbol{MapsTo} must then refer to the ``higher level'' RBS \sbol{Component}, while its \sbol{remote} property must refer to the ``lower level'' RBS \sbol{Component}. -In this way, many ``lower level'' \sbol{Component} objects can be linked together at the ``higher level'' using as an equal number of \sbol{MapsTo} objects, each one referring to a different \sbol{remote} \sbol{Component}, but all referring to the same \sbol{local} \sbol{Component}. +In this way, many ``lower level'' \sbol{Component} objects can be linked together at the ``higher level'' using as an equal number of \sbol{MapsTo} objects, each one referring to a different ``\sbol{remote} \sbol{Component}, but all referring to the same \sbol{local} \sbol{Component}. The same types of identity relationships can also be declared between \sbol{FunctionalComponent} objects contained by \sbol{ModuleDefinition} objects, or between \sbol{Component} objects contained by \sbol{ComponentDefinition} objects and \sbol{FunctionalComponent} objects contained by \sbol{ModuleDefinition} objects. See \ref{sec:examples} for additional examples using the \sbol{MapsTo} class. From 779f53e16f17cbba2167ed2633d5cc9b2eb40c82 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Thu, 21 May 2015 20:50:54 +0000 Subject: [PATCH 162/317] Update on Overleaf. --- model.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/model.tex b/model.tex index 10def3dd..32563844 100644 --- a/model.tex +++ b/model.tex @@ -515,7 +515,7 @@ \subsubsection{MapsTo} \begin{figure}[ht] \begin{center} \includegraphics[scale=1]{images/MapsTo_Diagram3} -\caption{Linking \sbol{Component} objects using \sbol{MapsTo} entities. Boxes with diagrams represent \sbol{ComponentDefinition} objects, boxes with the C label represent \sbol{Component} objects, and boxes with the M label represent \sbol{MapsTo} objects. In both diagrams, a promoter-RBS \sbol{ComponentDefinition} and a RBS-CDS \sbol{ComponentDefinition} are being composed to form the \sbol{ComponentDefinition} of a complete transcriptional unit. In the lefthand diagram, the \sbol{Component} objects inside the promoter-RBS \sbol{ComponentDefinition} and RBS-CDS \sbol{ComponentDefinition} both refer to an abstract RBS \sbol{ComponentDefinition} that lacks a sequence (white semicircle). Through the use of \sbol{MapsTo} objects with useLocal \sbol{refinement} properties, these ``lower level'' \sbol{ComponentDefinition} objects are effectively overridden by that of the green RBS in the \sbol{ComponentDefinition} of the complete transcriptional unit. In the righthand diagram, however, the two ``lower level'' RBS \sbol{ComponentDefinition} objects do not lack sequences and it is the ``higher level'' RBS \sbol{ComponentDefinition} that is abstract. In this case, one of the \sbol{MapsTo} objects has a useRemote \sbol{refinement}, resulting in the green RBS \sbol{ComponentDefinition} overriding that of the red RBS in the ``higher level'' \sbol{ComponentDefinition}.} +\caption{Linking \sbol{Component} objects using \sbol{MapsTo} entities. Boxes with diagrams represent \sbol{ComponentDefinition} objects, boxes with the C label represent \sbol{Component} objects, and boxes with the M label represent \sbol{MapsTo} objects. In both diagrams, a promoter-RBS \sbol{ComponentDefinition} and a RBS-CDS \sbol{ComponentDefinition} are being composed to form the \sbol{ComponentDefinition} of a complete transcriptional unit. In the lefthand diagram, the two \sbol{Component} objects inside the promoter-RBS \sbol{ComponentDefinition} and RBS-CDS \sbol{ComponentDefinition} objects both refer to an abstract RBS \sbol{ComponentDefinition} that lacks a sequence (white semicircle). Through the use of \sbol{MapsTo} objects with \sbol{refinement} set to useLocal, these ``lower level'' \sbol{ComponentDefinition} objects are effectively overridden by that of the green RBS in the \sbol{ComponentDefinition} of the complete transcriptional unit. In the righthand diagram, however, the two ``lower level'' RBS \sbol{ComponentDefinition} objects do not lack sequences and it is the ``higher level'' RBS \sbol{ComponentDefinition} that is abstract. In this case, one of the \sbol{MapsTo} objects has a useRemote \sbol{refinement}, resulting in the green RBS \sbol{ComponentDefinition} overriding that of the abstract RBS in the ``higher level'' \sbol{ComponentDefinition}.} \label{image:maps_to_diagram2} \end{center} \end{figure} @@ -526,7 +526,7 @@ \subsubsection{MapsTo} In order to explicitly represent these identity relationships, a new RBS \sbol{Component} must be created inside the ``higher level'' \sbol{ComponentDefinition}. This ``higher level'' \sbol{Component} must then be linked to the equivalent ``lower level'' \sbol{Component} objects by means of the \sbol{MapsTo} class, using one \sbol{MapsTo} object per link. For example, in order to link the ``higher level'' RBS \sbol{Component} of the transcriptional unit \sbol{ComponentDefinition} to the ``lower level'' RBS \sbol{Component} of the promoter-RBS \sbol{ComponentDefinition}, a \sbol{MapsTo} must be created on the ``higher level'' promoter-RBS \sbol{Component}. The \sbol{local} property of this \sbol{MapsTo} must then refer to the ``higher level'' RBS \sbol{Component}, while its \sbol{remote} property must refer to the ``lower level'' RBS \sbol{Component}. -In this way, many ``lower level'' \sbol{Component} objects can be linked together at the ``higher level'' using as an equal number of \sbol{MapsTo} objects, each one referring to a different ``\sbol{remote} \sbol{Component}, but all referring to the same \sbol{local} \sbol{Component}. +In this way, many ``lower level'' \sbol{Component} objects can be linked together at the ``higher level'' using as an equal number of \sbol{MapsTo} objects, each one referring to a different \sbol{remote} \sbol{Component}, but all referring to the same \sbol{local} \sbol{Component}. The same types of identity relationships can also be declared between \sbol{FunctionalComponent} objects contained by \sbol{ModuleDefinition} objects, or between \sbol{Component} objects contained by \sbol{ComponentDefinition} objects and \sbol{FunctionalComponent} objects contained by \sbol{ModuleDefinition} objects. See \ref{sec:examples} for additional examples using the \sbol{MapsTo} class. From 7cad45a50c22c933a765f748323398f1767ef6f3 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Fri, 22 May 2015 02:39:26 +0000 Subject: [PATCH 163/317] Update on Overleaf. --- apdx-validation.tex | 28 ++++++++++++++++------------ model.tex | 4 ++-- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 46510a3b..20a9032c 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -1,5 +1,6 @@ \newcounter{sbolCtr} \newcommand{\printValid}{\validRule{sbol-\arabic{sbolCtr}\addtocounter{sbolCtr}{1}}} +\newcommand{\printWarning}{\consistencyRule{sbol-\arabic{sbolCtr}\addtocounter{sbolCtr}{1}}} \newcommand{\printModeling}{\modelingRule{sbol-\arabic{sbolCtr}\addtocounter{sbolCtr}{1}}} \section{Validation Rules} @@ -22,11 +23,12 @@ \section{Validation Rules} specification. (Mnemonic intention behind the choice of symbol: ``This must be checked.'') -% \item[\hspace*{6.5pt}\cSymbol\csp] A \cSymbolName indicates a -% \emph{recommendation} for consistency. If a SBOL document does not -% follow this rule, it is not considered strictly invalid as far as the -% SBOL specification is concerned; however, it indicates that the model contains a physical or conceptual inconsistency. (Mnemonic intention behind the choice of symbol: -% ``This is a cause for warning.'') +\item[\hspace*{6.5pt}\cSymbol\csp] A \cSymbolName indicates a + \emph{recommendation} for consistency. +% If a SBOL document does not +% follow this rule, it is not considered strictly invalid as far as the +% SBOL specification is concerned; however, it indicates that the model contains a physical or conceptual inconsistency. +These rules should be followed, but they are difficult, if not impossible, to check automatically. (Mnemonic intention behind the choice of symbol: ``This is a cause for warning.'') \item[\hspace*{6.5pt}\mSymbol\msp] A \mSymbolName indicates a RECOMMENDED condition for following best practices. This rule is not strictly @@ -61,7 +63,7 @@ \subsubsection*{General rules about an SBOL document} \printValid{An SBOL document MUST declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://purl.org/dc/terms/}}. (Reference: \sec{xml-namespace}.)} -\printModeling{An SBOL document SHOULD declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://www.w3.org/ns/prov\#}}. (Reference: \sec{xml-namespace}.)} +\printValid{An SBOL document SHOULD declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://www.w3.org/ns/prov\#}}. (Reference: \sec{xml-namespace}.)} \subsubsection*{Rules for the \class{Identified} class} \setcounter{sbolCtr}{10201} @@ -103,10 +105,12 @@ \subsubsection*{Rules for the \class{Sequence} class} \printValid{A \sbol{Sequence} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Sequence})} -\printValid{The \sbol{elements} is a REQUIRED property for all \sbol{Sequence} objects and has a data type of String. Its format MUST be consistent with its specified \sbol{encoding}. (Reference: \sec{sec:Sequence})} +\printValid{The \sbol{elements} is a REQUIRED property for all \sbol{Sequence} objects and has a data type of String. (Reference: \sec{sec:Sequence})} \printValid{The \sbol{encoding} is a REQUIRED property for all \sbol{Sequence} objects and has a data type of URI. (Reference: \sec{sec:Sequence})} +\printWarning{The \sbol{elements} format MUST be consistent with its specified \sbol{encoding}. (Reference: \sec{sec:Sequence})} + \printModeling{A DNA \sbol{Sequence} SHOULD use the IUPAC DNA encoding:\\ \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html}. (Reference: \sec{sec:Sequence})} \printModeling{A RNA \sbol{Sequence} SHOULD use the IUPAC RNA encoding:\\ \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html}. (Reference: \sec{sec:Sequence})} @@ -134,17 +138,17 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printModeling{Each URI in the set of \sbol{sequences} SHOULD reference an equivalent \sbol{Sequence} object. (Reference: \sec{sec:Sequence})} -\printValid{A DNA \sbol{ComponentDefinition} MUST include the URI\\ +\printWarning{A DNA \sbol{ComponentDefinition} MUST include the URI\\ \url{http://www.biopax.org/release/biopax-level3.owl\#DnaRegion} in the set of \sbol{types}. (Reference: \sec{sec:ComponentDefinition})} -\printValid{A RNA \sbol{ComponentDefinition} MUST include the URI\\ +\printWarning{A RNA \sbol{ComponentDefinition} MUST include the URI\\ \url{http://www.biopax.org/release/biopax-level3.owl\#RnaRegion} in the set of \sbol{types}. (Reference: \sec{sec:ComponentDefinition})} -\printValid{A protein \sbol{ComponentDefinition} MUST include the URI\\ +\printWarning{A protein \sbol{ComponentDefinition} MUST include the URI\\ \url{http://www.biopax.org/release/biopax-level3.owl\#Protein} in the set of \sbol{types}. (Reference: \sec{sec:ComponentDefinition})} -\printValid{A small molecule \sbol{ComponentDefinition} MUST include the URI\\ +\printWarning{A small molecule \sbol{ComponentDefinition} MUST include the URI\\ \url{http://www.biopax.org/release/biopax-level3.owl\#SmallMolecule} in the set of \sbol{types}. (Reference: \sec{sec:ComponentDefinition})} \printModeling{A least one type in the set of \sbol{types} SHOULD be a URI from the BioPAX or ChEBI ontologies. (Reference: \sec{sec:ComponentDefinition})} @@ -158,7 +162,7 @@ \subsubsection*{Rules for the \class{ComponentInstance} class} \url{http://sbols.org/v2\#public} or \url{http://sbols.org/v2\#private}. (Reference: \sec{sec:ComponentInstance})} -\printValid{The \sbol{componentDefinition} property is a REQUIRED URI reference to a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} +\printValid{The \sbol{definition} property is a REQUIRED URI reference to a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} \printModeling{The \sbol{componentDefinition} property URI SHOULD reference a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} diff --git a/model.tex b/model.tex index 32563844..5b77727b 100644 --- a/model.tex +++ b/model.tex @@ -531,10 +531,10 @@ \subsubsection{MapsTo} The same types of identity relationships can also be declared between \sbol{FunctionalComponent} objects contained by \sbol{ModuleDefinition} objects, or between \sbol{Component} objects contained by \sbol{ComponentDefinition} objects and \sbol{FunctionalComponent} objects contained by \sbol{ModuleDefinition} objects. See \ref{sec:examples} for additional examples using the \sbol{MapsTo} class. \paragraph{The \sbolheading{local} property}\label{sec:local} -This REQUIRED property is used to specify the \sbol{ComponentInstance} from the ``higher level'' entity. The same higher-level entity MUST own both the \sbol{local} and object that owns the \sbol{MapsTo}. +This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``higher level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{local} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the owner of the \sbol{MapsTo} (either a \sbol{ComponentInstance} or \sbol{Module}). \paragraph{The \sbolheading{remote} property}\label{sec:remote} -This REQUIRED property is used to specify the \sbol{ComponentInstance} from the ``lower level'' entity that is being being linked to the \sbol{local} \sbol{ComponentInstance}. This \sbol{ComponentInstance} MUST be owned by the ``lower level'' entity that defines the object that owns the \sbol{MapsTo} +This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``lower level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{remote} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that is the \sbol{definition} of \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}. \paragraph{The \sbolheading{refinement} property}\label{sec:refinement} Each \sbol{MapsTo} entity MUST specify the relationship between its \sbol{local} and \sbol{remote} components using the refinement property, using one of the values in \ref{tbl:mapsto_refinement}. From f5bebdb3d8ee94f22dce981c4546cd3de29fd2bf Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Fri, 22 May 2015 03:45:28 +0000 Subject: [PATCH 164/317] Update on Overleaf. --- apdx-validation.tex | 24 ++++++++------- model.tex | 73 ++++++++++++++++++++++++++++++++++----------- practices.tex | 8 ++--- 3 files changed, 72 insertions(+), 33 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 20a9032c..a73071ed 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -164,9 +164,9 @@ \subsubsection*{Rules for the \class{ComponentInstance} class} \printValid{The \sbol{definition} property is a REQUIRED URI reference to a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} -\printModeling{The \sbol{componentDefinition} property URI SHOULD reference a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} +\printModeling{The \sbol{definition} property URI SHOULD reference a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} -\printValid{The \sbol{mapsTo} property is an OPTIONAL set of \sbol{MapsTo} objects. (Reference: \sec{sec:ComponentInstance})} +\printValid{The \sbol{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects. (Reference: \sec{sec:ComponentInstance})} \printValid{A \sbol{Component} object inherits all properties of a \sbol{ComponentInstance} object. (Reference: \sec{sec:ComponentInstance})} @@ -226,7 +226,7 @@ \subsubsection*{Rules for the \class{Model} class} \printValid{A \sbol{Model} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Model})} -\printValid{The \sbol{source} property is a REQUIRED URI that MUST specify the location of the model source file.} +\printValid{The \sbol{source} property is a REQUIRED URI that specifies the location of the model source file.} \printValid{The \sbol{language} property is a REQUIRED URI that specifies the language in which the model is encoded.} @@ -236,6 +236,8 @@ \subsubsection*{Rules for the \class{Model} class} \printModeling{The \sbol{framework} property SHOULD be a URI from the modeling framework branch of the Systems Biology Ontology (SBO).} +\printWarning{The \sbol{source} property MUST specify the location of the model source file in the specified \sbol{language} using the specified \sbol{framework}.} + \subsubsection*{Rules for the \class{ModuleDefinition} class} \setcounter{sbolCtr}{11101} @@ -249,7 +251,7 @@ \subsubsection*{Rules for the \class{ModuleDefinition} class} \printValid{The \sbol{functionalComponents} property is an OPTIONAL set of \sbol{FunctionalComponent} objects. (Reference: \sec{sec:ModuleDefinition})} -\printValid{The \sbol{models} property is an OPTIONAL set of URIs. that reference \sbol{Model} objects. (Reference: \sec{sec:ModuleDefinition})} +\printValid{The \sbol{models} property is an OPTIONAL set of URIs that reference \sbol{Model} objects. (Reference: \sec{sec:ModuleDefinition})} \printModeling{Each URI in the set of \sbol{models} SHOULD reference a \sbol{Model} object. (Reference: \sec{sec:ModuleDefinition})} @@ -260,7 +262,7 @@ \subsubsection*{Rules for the \class{Module} class} \printValid{The \sbol{definition} property is a REQUIRED URI reference to a \sbol{ModuleDefinition} object. (Reference: \sec{sec:Module})} -\printValid{The \sbol{mapsTo} property is an OPTIONAL set of \sbol{MapsTo} objects. (Reference: \sec{sec:Module})} +\printValid{The \sbol{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects. (Reference: \sec{sec:Module})} \subsubsection*{Rules for the \class{MapsTo} class} \setcounter{sbolCtr}{11301} @@ -276,11 +278,11 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{When a \sbol{MapsTo} object is specified by a \sbol{ComponentInstance} object, the \sbol{local} property is a REQUIRED URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} -\printValid{When a \sbol{MapsTo} object is specified by a \sbol{ComponentInstance} object, the \sbol{remote} property is a REQUIRED URI that MUST reference a \sbol{Component} that is specified within the \sbol{ComponentDefinition} referred to by the \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} +\printWarning{When a \sbol{MapsTo} object is specified by a \sbol{ComponentInstance} object, the \sbol{remote} property is a REQUIRED URI that MUST reference a \sbol{Component} that is specified within the \sbol{ComponentDefinition} referred to by the \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} \printValid{When a \sbol{MapsTo} object is specified by a \sbol{Module} object, the \sbol{local} property is a REQUIRED URI that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:MapsTo})} -\printValid{When a \sbol{MapsTo} object is specified by a \sbol{Module} object, the \sbol{remote} property is a REQUIRED URI that MUST reference a \sbol{FunctionalComponent} that is specified within the \sbol{ModuleDefinition} referred to by the \sbol{Module}. (Reference: \sec{sec:MapsTo})} +\printWarning{When a \sbol{MapsTo} object is specified by a \sbol{Module} object, the \sbol{remote} property is a REQUIRED URI that MUST reference a \sbol{FunctionalComponent} that is specified within the \sbol{ModuleDefinition} referred to by the \sbol{Module}. (Reference: \sec{sec:MapsTo})} \printValid{The \sbol{ComponentInstance} referenced by the \sbol{local} property MUST have \sbol{public} access type.} @@ -291,7 +293,7 @@ \subsubsection*{Rules for the \class{Interaction} class} \printValid{A \sbol{Interaction} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:Interaction})} -\printValid{The \sbol{types} property is a set of URIs, and it is REQUIRED to include at least entry. (Reference: \sec{sec:Interaction})} +\printValid{The \sbol{types} property is a set of URIs, and it is REQUIRED to include at least one entry. (Reference: \sec{sec:Interaction})} \printModeling{A least one type in the set of \sbol{types} SHOULD be a URI from the occurring entity relationship branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Interaction})} @@ -324,11 +326,11 @@ \subsubsection*{Rules for the \class{Annotation} class} \printValid{The \sbol{value} property is REQUIRED, and it has data type \sbol{AnnotationValue}. (Reference: \sec{sec:Annotations})} -\printValid{The \sbol{AnnotationValue} class MUST be of data type \external{String}, \external{URI} or \sbol{ListOfAnnotations}. (Reference: \sec{sec:Annotations})} +\printValid{The \sbol{AnnotationValue} class MUST be of data type \external{String}, \external{URI}, \external{int}, \external{double}, or \sbol{NestedAnnotations}. (Reference: \sec{sec:Annotations})} -\printValid{The \sbol{nestedURI} property is REQUIRED for a \sbol{ListOfAnnotations} object, and it has data type \external{URI}. (Reference: \sec{sec:Annotations})} +\printValid{The \sbol{nestedURI} property is REQUIRED for a \sbol{NestedAnnotations} object, and it has data type \external{URI}. (Reference: \sec{sec:Annotations})} -\printValid{The \sbol{annotations} property is an OPTIONAL set for a \sbol{ListOfAnnotations} object, and each member is of data type \sbol{Annotation}. (Reference: \sec{sec:Annotations})} +\printValid{The \sbol{annotations} property is an OPTIONAL set for a \sbol{NestedAnnotations} object, and each member is of data type \sbol{Annotation}. (Reference: \sec{sec:Annotations})} \subsubsection*{Rules for the \class{GenericTopLevel} class} \setcounter{sbolCtr}{11801} diff --git a/model.tex b/model.tex index 5b77727b..9bb63313 100644 --- a/model.tex +++ b/model.tex @@ -52,15 +52,18 @@ \subsection{Naming and Font Conventions} \subsection{Data Types} \label{sec:datatypes} -\Ctodo{we use String, Integer, URI, Literal (these are from some W3C or XSD or whatever thing), and the classes below} - When SBOL use simple ``primitive'' data types such as strings or integers, these are defined as the following specific formal types: \begin{itemize} -\item String: \url{http://www.w3.org/2001/XMLSchema#string} -\item Integer: \url{http://www.w3.org/2001/XMLSchema#integer} -\item URI: \url{something goes here} - It is further RECOMMENDED that URI structure follows the recommended best-practices for compliant URIs specified in \ref{sec:compliant}. -\item Literal: \url{something goes here} +\item String: \url{http://www.w3.org/TR/xmlschema11-2/#string} +\item Integer: \url{http://www.w3.org/TR/xmlschema11-2/#integer} +\item Double: \url{http://www.w3.org/TR/xmlschema11-2/#double} +\item Boolean: \url{http://www.w3.org/TR/xmlschema11-2/#boolean} +\end{itemize} +The term \external{literal} is used to denote an object that can be any of the four types listed above. +In addition to the simple types listed above, SBOL also uses objects with types \emph{uniform resource identifier} (URI) and \emph{XML qualified name} (QName): +\begin{itemize} +\item URI: \url{http://www.w3.org/TR/xmlschema11-2/#anyURI} +\item QName: \url{http://www.w3.org/TR/xmlschema11-2/#QName} \end{itemize} \subsection{Identified} @@ -87,7 +90,7 @@ \subsection{Identified} \subsubsection*{The \sbolheading{identity} property} \label{sec:identity} -The \sbol{identity} property is REQUIRED by all \sbol{Identified} objects and has a data type of \external{URI}. A given \sbol{Identified} object's \sbol{identity} \external{URI} MUST be globally unique among all other \sbol{identity} \external{URI}s. +The \sbol{identity} property is REQUIRED by all \sbol{Identified} objects and has a data type of \external{URI}. A given \sbol{Identified} object's \sbol{identity} \external{URI} MUST be globally unique among all other \sbol{identity} \external{URI}s. It is also highly RECOMMENDED that the URI structure follows the recommended best-practices for compliant URIs specified in \ref{sec:compliant}. Although most SBOL properties are defined by SBOL and serialized with its namespace, the \sbol{identity} property is defined by the analogous RDF \external{about} property and is serialized with the RDF namespace as follows: @@ -1315,7 +1318,7 @@ \subsubsection{Annotating SBOL objects} \label{sec:AnnotationValue} \label{sec:ListOfAnnotations} -Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. The \sbol{name} property is specified by a qualified name (\external{QName}), which is composed of a namespace, a prefix, and a local name. The \sbol{value} property can be of type \external{String}, \external{URI}, or \external{ListOfAnnotations}. The \external{ListOfAnnotations} is composed of a \sbol{nestedQName}, \sbol{nestedURI}, and a list of nested \sbol{annotations}. +Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. The \sbol{name} property is specified by a qualified name (\external{QName}), which is composed of a namespace, a prefix, and a local name. The \sbol{value} property can be a literal type (i.e., \external{String}, \external{Integer}, \external{Double}, \external{Boolean}), \external{URI}, or a \external{NestedAnnotations} object. The \external{NestedAnnotations} object is composed of a \sbol{nestedQName}, \sbol{nestedURI}, and an optional list of nested \sbol{annotations}. \Ctodo{NIC: Please update UML as follows: remove link from Identifed to AnnotationValue, change type of name to QName, add new class NestedAnnotations that inherits from AnnotationValue with properties nestedQName : QName, nestedURI : URI, and a 0..* annotations link to the Annotation class.} @@ -1327,12 +1330,33 @@ \subsubsection{Annotating SBOL objects} \end{center} \end{figure} -\paragraph{Serialization} -The ComponentDefinition example for a promoter serialized below shows how annotations can be added to SBOL objects. Annotations are added using the relevant information from the Parts Registry. Annotation property names are qualified with the \external{http://www.partsregistry.org/} namespace, which is prefixed using \external{pr}. The first annotation is named as \external{pr:group}, indicating the iGEM group designing the promoter, and has a \external{String} value. The second \external{pr:experience} annotation has a \external{URI} value and is serialised as an RDF resource pointing to the information Web page on the Parts Registry for the promoter. The \external{pr:information} property represents a complex annotation which is a type of \external{pr:Information} and includes information about the regulatory details of the promoter using Parts Registry categories. +\subsubsection*{Serialization} -\Ctodo{Add template} +The serialization of \sbol{Annotation} objects has the following form: -\Ctodo{Get example from cut part of libSBOLj paper} +\lstsetsbol +\begin{lstlisting} + + + literal +OR + +OR + + + ... + + + +\end{lstlisting} +The \sbol{name} property species the namespace, prefix, and localPart values. The first annotation example is for a \external{literal} type an + + +The ComponentDefinition example for a promoter serialized below shows how annotations can be added to SBOL objects. Annotations are added using the relevant information from the Parts Registry. Annotation property names are qualified with the \external{http://www.partsregistry.org/} namespace, which is prefixed using \external{pr}. The first annotation is named as \external{pr:group}, indicating the iGEM group designing the promoter, and has a \external{String} value. The second \external{pr:experience} annotation has a \external{URI} value and is serialised as an RDF resource pointing to the information Web page on the Parts Registry for the promoter. The \external{pr:information} property represents a complex annotation which is a type of \external{pr:Information} and includes information about the regulatory details of the promoter using Parts Registry categories. + +\Ctodo{Check example} \begin{figure} [ht] \lstsetsbol @@ -1360,16 +1384,14 @@ \subsubsection{Annotating SBOL objects} \label{ser:Annotation} \end{figure} - - - \subsubsection{GenericTopLevel} \label{sec:GenericTopLevel} + SBOL documents can also be annotated at the top level. SBOL's \sbol{GenericTopLevel} is a top-level entity whose only purpose is to include a set of annotations as described above. -Entities that have independent existence (i.e., would be another ``top level'' class) and are not recognised by the SBOL standard are loaded into these top level entities. +Entities that have independent existence (i.e., would be another ``top level'' class) and are not recognized by the SBOL standard are loaded into these top level entities. These \sbol{GenericTopLevel} entities can thus be safely used by tools to exchange non-SBOL data embedded separately within SBOL. -As with any other top level entities, \sbol{GenericTopLevel} entities may include SBOL properties such as \sbol{name}, \sbol{description}, \sbol{displayId} and so on. The type of data found in the generic entity is indicated using the standard \external{rdf:type} property. +As with any other top level entities, \sbol{GenericTopLevel} entities may include SBOL properties such as \sbol{displayId}, \sbol{name}, \sbol{description}, etc. The type of data found in the generic entity is indicated using the \sbol{rdfType} property which is of type \external{QName}. \begin{figure}[ht] \begin{center} @@ -1379,6 +1401,21 @@ \subsubsection{GenericTopLevel} \end{center} \end{figure} +\subsubsection*{Serialization} + +The serialization of \sbol{GenericTopLevel} objects has the following form where the prefix, namespace, and localPart are defined by the \sbol{rdfType} property: + +\lstsetsbol +\begin{lstlisting} + + + + ... + +\end{lstlisting} + +\Ctodo{Get example from cut part of libSBOLj paper} + The example below shows how a datasheet object can be added to an SBOL document using the \sbol{GenericTopLevel} class. The J23119 promoter example is annotated with the URI of a top Level Datasheet object, here defining the annotation properties using the custom \external{\path{http://www.myapp.org/}} namespace and the \external{myapp} prefix. The datasheet object, with the data type of \external{myapp:Datasheet}, is accessed using the \external{URI} value specified by the \external{myapp:characterizationData} property of the promoter component definition. diff --git a/practices.tex b/practices.tex index fca9cb86..840b035b 100644 --- a/practices.tex +++ b/practices.tex @@ -72,7 +72,7 @@ \subsection{Recommended Ontologies for External Terms} \Ctodo{Add recommended branch.} \begin{table}[ht] - \begin{edtable}{tabular}{p{3cm}p{3cm}p{4cm}} + \begin{edtable}{tabular}{p{3cm}p{2cm}p{5cm}} \toprule \textbf{SBOL Entity} & \textbf{Property} & \textbf{Preferred External Resource}\\ \midrule @@ -80,10 +80,10 @@ \subsection{Recommended Ontologies for External Terms} & roles & SO (if type is \textit{DNA} or \textit{RNA}) \\ & roles & CHEBI (if type is \textit{small molecule}) \\ & roles & UniProt (if type is \textit{protein}??) \\ - \textbf{Interaction} & types & SBO \\ - \textbf{Participation} & roles & SBO \\ + \textbf{Interaction} & types & SBO (entity relationship branch) \\ + \textbf{Participation} & roles & SBO (participant roles branch) \\ \textbf{Model} & language & EDAM \\ - & framework & SBO \\ + & framework & SBO (modeling framework branch) \\ \bottomrule \end{edtable} \caption{Preferred external resources from which to draw values for various SBOL properties.} From 718c20e8502e2c3231a8418b2decd2cd6708f88f Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Fri, 22 May 2015 04:22:12 +0000 Subject: [PATCH 165/317] Update on Overleaf. --- history.tex | 8 ++------ model.tex | 39 ++++++++++++++------------------------- practices.tex | 2 -- vocabulary.tex | 2 -- 4 files changed, 16 insertions(+), 35 deletions(-) diff --git a/history.tex b/history.tex index 687ea2e2..ab2efecf 100644 --- a/history.tex +++ b/history.tex @@ -5,13 +5,9 @@ \section{History and Acknowledgements} In early 2006 Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26 to 27 in 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deep Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. The original SBOL 1.0 was developed through his efforts together with the small group of dedicated researchers. An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group and the over all pace of developed quickened. Its further development has continued at a series of subsequent open invitation workshops and through email exchanges on the SBOL Developers mailing list. Finally, after repeated attempts, the SBOL core team finally secured federal funding from the National Science Foundation. This document is partly a result of that support. -\Ctodo{History peters out after first meeting. Definitely need to add a bit more details about the evolution. Maybe at least a couple sentences about the accomplishments at each meeting - I now have the info from Mike, will add shortly} +\Ctodo{History peters out after first meeting. Definitely need to add a bit more details about the evolution. Maybe at least a couple sentences about the accomplishments at each meeting - I now have the info from Mike, will add shortly. Need to cite NBT paper here. Nic should write something about the history of SBOL 2.0 including the publication for the proposal.} -\Ctodo{Need to cite NBT paper here.} - -\Ctodo{Nic should write something about the history of SBOL 2.0 including the publication for the proposal.} - -\Ctodo{This seems redundant with author list on first page. Is it needed? Do we intend to list more people here than on the author list? We could use this to acknowledge key contributors who are not authors of the 2.0 specification. Many are listed in text above. Perhaps, in same spirit as that, since it not only lists people but says what they did.} +\Ctodo{Need to get more names to list here other than authors.} Contributors to this work include: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University). diff --git a/model.tex b/model.tex index 9bb63313..1ecda621 100644 --- a/model.tex +++ b/model.tex @@ -52,6 +52,8 @@ \subsection{Naming and Font Conventions} \subsection{Data Types} \label{sec:datatypes} +\Rtodo{CJM - edited, needs review} + When SBOL use simple ``primitive'' data types such as strings or integers, these are defined as the following specific formal types: \begin{itemize} \item String: \url{http://www.w3.org/TR/xmlschema11-2/#string} @@ -151,17 +153,21 @@ \subsubsection*{Serialization} properties inherited from \sbol{Identified}, where CLASS\_NAME is replaced by the name of the class: +\Rtodo{CJM - edited, needs review} + \lstsetsbol \begin{lstlisting} + [\emph{zero or one}] [\emph{element}] + [\emph{zero or one}] ... [\emph{element}] + [\emph{zero or one}] ... [\emph{element}] + [\emph{zero or one}] [\emph{element}] [\emph{zero or one}] ... [\emph{element}] [\emph{zero or one}] ... [\emph{element}] ... \end{lstlisting} -\Ctodo{Need somebody who knows DublinCore to fill in rest of template} - % \subsection{Documented} % \label{sec:Documented} % The \sbol{Documented} abstract class is inherited by the classes of SBOL objects that can contain human-readable properties, such as name and description. This class extends \sbol{Identified} with two additional data properties: \sbol{name}, and \sbol{description} (\ref{uml:documented}). @@ -557,8 +563,6 @@ \subsubsection{MapsTo} \label{tbl:mapsto_refinement} \end{table} -\Rtodo{The notion of refinement is very unclear -JB Clean up the text; JSB: done} - \paragraph{Serialization} The serialization of \sbol{MapsTo} has the following form. \lstsetsbol @@ -602,13 +606,9 @@ \subsubsection{SequenceAnnotation} \label{sec:locations} Every \sbol{SequenceAnnotation} MUST have at least one \sbol{Location} object in its set of \sbol{locations}. The value of this property is a nested \sbol{Location} object. -\Rtodo{Use term collection above. Is it me or is this confusing with our collection object? We could use set instead. JSB: changed collection to set, here and a number of other places} - \paragraph{The \sbolheading{component} property}\label{sec:component} \sbol{SequenceAnnotation} objects MAY use this property to link location information to a \sbol{Component} object, by specifying its URI. -\Rtodo{Separate serialization better - give paragraph/subsubsec headers. JSB: done.} - \paragraph{Serialization} The serialization of SequenceAnnotation objects MUST be carried out according to the template below. In this template, A\_LOCATION\_SUBCLASS represents one of the Location subclasses. @@ -642,12 +642,6 @@ \subsubsection{SequenceAnnotation} \end{lstlisting} -\Rtodo{Need to give an example with this one. JSB: done.} - -\Rtodo{Make sure it's clear these templates specify content, not order. JSB: put a note explaining ordering is flexible in the serialization section.} - - - \subsubsection{Location} \label{sec:Location} The Location class is extended by the \sbol{Range}, \sbol{Cut}, and \sbol{GenericLocation} classes. All of these thus share its \sbol{orientation} property, for example to to specify directionality on a potentially double-stranded \sbol{Component} object. @@ -755,8 +749,6 @@ \subsubsection{Location} \sbol{GenericLocation} is included as a hook for extensions, e.g., for describing locations in non-sequential structures. -\Rtodo{Need serialization examples, Cut, and GenericLocation: JSB - done for Cut and GenericLocation} - \subparagraph{Serialization} The serialization of \sbol{GenericLocation} objects has the following form: @@ -848,8 +840,6 @@ \subsubsection{SequenceConstraint} \end{lstlisting} -\Rtodo{In every serialization example, make sure something differs in order from the template, to more intuitively illustrate the unimportance of order --> actually no, jake shoud put bac the examples he messed with; JSB: done} - \subsection{Model} \label{sec:Model} @@ -1217,8 +1207,6 @@ \subsubsection{Participation} Values for this URI are RECOMMENDED to be chosen from the from the participant role branch of the Systems Biology Ontology (SBO) where possible. -\Rtodo{SBO is our REQUIRED term if available, just as in the prior cases. JSB: done, but set as RECOMMENDED, not required (as elsewhere)} - \paragraph{The \sbolheading{participant} property}\label{sec:participant} The \sbol{participant} property MUST specify precisely one \sbol{FunctionalComponent} object that plays the designated \sbol{role} in its parent \sbol{Interaction} object. @@ -1299,8 +1287,6 @@ \subsection{Extending the SBOL Representation: Annotations} \label{sec:Annotations} \label{sec:annotations} -\Rtodo{Matthew/Goksel/Jake: please review.} - SBOL does not attempt to represent all information about a biological system, since many things do not yet have a clear ``right way'' to be represented, such as design intent, biological context, or performance data. Instead, SBOL allows the embedding of application specific data that are not captured by the SBOL standard. Such data are optional, but can be computationally generated and exchanged via SBOL documents without getting lost. To do this, SBOL provides an ``annotation'' mechanism for attaching arbitrary information to SBOL objects, which allows SBOL models to be connected with any other models in an extensible manner. @@ -1334,6 +1320,8 @@ \subsubsection*{Serialization} The serialization of \sbol{Annotation} objects has the following form: +\Rtodo{CJM - added, needs review} + \lstsetsbol \begin{lstlisting} @@ -1351,13 +1339,12 @@ \subsubsection*{Serialization} \end{lstlisting} -The \sbol{name} property species the namespace, prefix, and localPart values. The first annotation example is for a \external{literal} type an +The \sbol{name} property species the namespace, prefix, and localPart values. The first form is for a \external{literal} annotation. The second form is for a \external{URI} annotation. Finally, the third form is for an \sbol{NestedAnnotations} object annotation. In this last case, the \sbol{nestedQName} property specifies the nestedNamespace, nestedPrefix, and nestedLocalPart while the \sbol{nestedURI} property species the URI for the nested annotation. +\Ctodo{Check example} The ComponentDefinition example for a promoter serialized below shows how annotations can be added to SBOL objects. Annotations are added using the relevant information from the Parts Registry. Annotation property names are qualified with the \external{http://www.partsregistry.org/} namespace, which is prefixed using \external{pr}. The first annotation is named as \external{pr:group}, indicating the iGEM group designing the promoter, and has a \external{String} value. The second \external{pr:experience} annotation has a \external{URI} value and is serialised as an RDF resource pointing to the information Web page on the Parts Registry for the promoter. The \external{pr:information} property represents a complex annotation which is a type of \external{pr:Information} and includes information about the regulatory details of the promoter using Parts Registry categories. -\Ctodo{Check example} - \begin{figure} [ht] \lstsetsbol \begin{lstlisting} @@ -1405,6 +1392,8 @@ \subsubsection*{Serialization} The serialization of \sbol{GenericTopLevel} objects has the following form where the prefix, namespace, and localPart are defined by the \sbol{rdfType} property: +\Rtodo{CJM - added, needs review} + \lstsetsbol \begin{lstlisting} diff --git a/practices.tex b/practices.tex index 840b035b..ec49b679 100644 --- a/practices.tex +++ b/practices.tex @@ -69,8 +69,6 @@ \subsection{Recommended Ontologies for External Terms} \Ctodo{It would be useful to add URLs to the resources - NeilW} -\Ctodo{Add recommended branch.} - \begin{table}[ht] \begin{edtable}{tabular}{p{3cm}p{2cm}p{5cm}} \toprule diff --git a/vocabulary.tex b/vocabulary.tex index bf4b9391..d910b17b 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -17,8 +17,6 @@ \subsection{SBOL Class Names} SBOL defines the following ``top-level'' and dependent classes: -\Rtodo{Organize these functionally, not alphabetically. -bder. Done by creating toplevel/dependent substructure -JSB} - \begin{description} \item \emph{\sbol{Collection}}: From 977f2accb5736fdc060dd1db47eeffa28687cef1 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Fri, 22 May 2015 13:42:13 +0000 Subject: [PATCH 166/317] Update on Overleaf. --- apdx-validation.tex | 16 +- examples_serialization.tex | 749 +++++++++++++++++++++++-------------- model.tex | 180 +++++---- 3 files changed, 583 insertions(+), 362 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index a73071ed..3ac7e964 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -226,17 +226,17 @@ \subsubsection*{Rules for the \class{Model} class} \printValid{A \sbol{Model} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Model})} -\printValid{The \sbol{source} property is a REQUIRED URI that specifies the location of the model source file.} +\printValid{The \sbol{source} property is a REQUIRED URI that specifies the location of the model source file. (Reference: \sec{sec:Model})} -\printValid{The \sbol{language} property is a REQUIRED URI that specifies the language in which the model is encoded.} +\printValid{The \sbol{language} property is a REQUIRED URI that specifies the language in which the model is encoded. (Reference: \sec{sec:Model})} -\printModeling{The \sbol{language} property SHOULD be a URI from the EMBRACE Data and Methods (EDAM) ontology.} +\printModeling{The \sbol{language} property SHOULD be a URI from the EMBRACE Data and Methods (EDAM) ontology. (Reference: \sec{sec:Model})} -\printValid{The \sbol{framework} property is a REQUIRED URI that specifies the modeling framework.} +\printValid{The \sbol{framework} property is a REQUIRED URI that specifies the modeling framework. (Reference: \sec{sec:Model})} -\printModeling{The \sbol{framework} property SHOULD be a URI from the modeling framework branch of the Systems Biology Ontology (SBO).} +\printModeling{The \sbol{framework} property SHOULD be a URI from the modeling framework branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Model})} -\printWarning{The \sbol{source} property MUST specify the location of the model source file in the specified \sbol{language} using the specified \sbol{framework}.} +\printWarning{The \sbol{source} property MUST specify the location of the model source file in the specified \sbol{language} using the specified \sbol{framework}. (Reference: \sec{sec:Model})} \subsubsection*{Rules for the \class{ModuleDefinition} class} \setcounter{sbolCtr}{11101} @@ -284,9 +284,9 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printWarning{When a \sbol{MapsTo} object is specified by a \sbol{Module} object, the \sbol{remote} property is a REQUIRED URI that MUST reference a \sbol{FunctionalComponent} that is specified within the \sbol{ModuleDefinition} referred to by the \sbol{Module}. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{ComponentInstance} referenced by the \sbol{local} property MUST have \sbol{public} access type.} +% \printValid{The \sbol{ComponentInstance} referenced by the \sbol{local} property MUST have \sbol{public} access type. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{ComponentInstance} referenced by the \sbol{remote} property MUST have \sbol{public} access type.} +\printValid{The \sbol{ComponentInstance} referenced by the \sbol{remote} property MUST have \sbol{public} access type. (Reference: \sec{sec:MapsTo})} \subsubsection*{Rules for the \class{Interaction} class} \setcounter{sbolCtr}{11401} diff --git a/examples_serialization.tex b/examples_serialization.tex index 6b2ce13a..641b6753 100644 --- a/examples_serialization.tex +++ b/examples_serialization.tex @@ -237,467 +237,646 @@ \subsection{Toggle Switch} \lstsetsbol \begin{lstlisting} - + + + + toggle_switch + + + + + LacI + + + + + + + + + TetR + + + + + + + + + + laci_inverter + + + + + LacI_mapping + + + + + + + + + + + tetr_inverter + + + + + TetR_mapping + + + + + + + + + + laci_inverter - - + + + + TF + - - - - + + + + + promoter + - + - + + + LacI_pLacI - - - + + + BBa_R0010 + + - - - + + + P03023 + + + + tetr_inverter - - - + + + + promoter + - - - + + + + + TF + - + - + + + LacI_pLacI - - - + + + Q6QR72 + + - - - + + + BBa_R0040 + + - - - - - - - - - - - - - - - - - - - - - USEREMOTE - - - - - - - - - - - - USEREMOTE - - - - - - - - + + + toogleswicth - - - ECK120033736 - Terminator2 - - - - - - pTetR - pTet promoter - - - - - - ECK120029600 - Terminator1 - - - - - + + + BBa_J61130 BBa_J61101 RBS RBS2 - - - - - BBa_J61101 RBS - RBS2 - - - - - - tetR - tetR coding sequence - - - + + - - LacI/TetR Toggle Swicth - LacI/TetR Toggle Swicth + + + pIKELeftCassette_1 + TetR Inverter + TetR Inverter - - - + + + + + ECK120029600 - + - - - + + + + + BBa_R0040 - + - + + + + + BBa_C0012 + + + + + + + + BBa_J61101 + + + + - + + + anno3 - - 1 - 1285 + + + range + 69 + 1197 + - + - + + + anno4 - - 1286 - 2834 + + + range + 1198 + 1288 + - + + + + + + + anno2 + + + + range + 56 + 68 + + + + + + + + + + anno1 + + + + range + 1 + 55 + + + + + + + BBa_C0012 + lacI + lacI coding sequence + + + + + + + ECK120033736 + ECK120033736 + Terminator2 + + + + + + + BBa_R0040 + pTetR + pTet promoter + + + + + + Q6QR72 TetR TetR protein - + + + P03023 LacI LacI protein - + - - pLacI - pLacI promoter + + + BBa_J61120 + BBa_J61101 RBS + RBS2 - - + + + + + + BBa_E0040 + gfp + gfp coding sequence + + + + + + + ECK120029600 + ECK120029600 + Terminator1 + + + + + pIKERightCassette_1 LacI Inverter LacI Inverter - - - + + + + + BBa_R0010 - + - - - + + + + + BBa_C0040 - + - - - + + + + + BBa_J61130 - + - - - + + + + + BBa_E0040 - + - - - + + + + + ECK120033736 - + - - - + + + + + BBa_J61120 - + - + - + + + anno3 - - 730 - 742 + + + range + 69 + 729 + - + - + + + anno2 - + + + range 56 68 + - + - + + + anno4 - - 1 - 55 + + + range + 730 + 742 + - + - + + + anno1 - - 743 - 1463 + + + range + 1 + 55 + - + - + + + anno5 - - 69 - 729 + + + range + 743 + 1463 + - + - + + + anno6 - + + + range 1464 1554 + - + - - GFP - GFP protein - - + + + BBa_J61101 + BBa_J61101 RBS + RBS1 + + + - - TetR Inverter - TetR Inverter + + + BBa_R0010 + pLacI + pLacI promoter - - - - - - - - - - - - - - - + + + + + + pIKE_Toggle_1 + LacI/TetR Toggle Swicth + LacI/TetR Toggle Swicth + + + + + + pIKERightCassette_1 - + - - - + + + + + pIKELeftCassette_1 - + - - - - - - 56 - 68 - - - - - + - + + + anno1 - + + + range 1 - 55 - - - - - - - - - - 69 - 1197 + 1285 + - + - + + + anno2 - - 1198 - 1288 + + + range + 1286 + 2834 + - + - - gfp - gfp coding sequence - - - - - - BBa_J61101 RBS - RBS1 - - - + + + P42212 + GFP + GFP protein + + - - lacI - lacI coding sequence + + + BBa_C0040 + tetR + tetR coding sequence - - + + - - ttcagccaaaaaacttaagaccgccggtcttgtccactaccttgcagtaatgcggtggacaggatcggcggttttcttttctcttctcaa + + + BBa_J61101 + aaagacaggacc - - tccctatcagtgatagagattgacatccctatcagtgatagagatactgagcac + + + BBa_J61120 + aaagacaggacc - - aaagaaacgaca + + + BBa_E0040 + atgcgtaaaggagaagaacttttcactggagttgtcccaattcttgttgaattagatggtgatgttaatgggcacaaattttctgtcagtggagagggtgaaggtgatgcaacatacggaaaacttacccttaaatttatttgcactactggaaaactacctgttccatggccaacacttgtcactactttcggttatggtgttcaatgctttgcgagatacccagatcatatgaaacagcatgactttttcaagagtgccatgcccgaaggttatgtacaggaaagaactatatttttcaaagatgacgggaactacaagacacgtgctgaagtcaagtttgaaggtgatacccttgttaatagaatcgagttaaaaggtattgattttaaagaagatggaaacattcttggacacaaattggaatacaactataactcacacaatgtatacatcatggcagacaaacaaaagaatggaatcaaagttaacttcaaaattagacacaacattgaagatggaagcgttcaactagcagaccattatcaacaaaatactccaattggcgatggccctgtccttttaccagacaaccattacctgtccacacaatctgccctttcgaaagatcccaacgaaaagagagaccacatggtccttcttgagtttgtaacagctgctgggattacacatggcatggatgaactatacaaataataa - - atggtgaatgtgaaaccagtaacgttatacgatgtcgcagagtatgccggtgtctcttatcagaccgtttcccgcgtggtgaaccaggccagccacgtttctgcgaaaacgcgggaaaaagtggaagcggcgatggcggagctgaattacattcccaaccgcgtggcacaacaactggcgggcaaacagtcgttgctgattggcgttgccacctccagtctggccctgcacgcgccgtcgcaaattgtcgcggcgattaaatctcgcgccgatcaactgggtgccagcgtggtggtgtcgatggtagaacgaagcggcgtcgaagcctgtaaagcggcggtgcacaatcttctcgcgcaacgcgtcagtgggctgatcattaactatccgctggatgaccaggatgccattgctgtggaagctgcctgcactaatgttccggcgttatttcttgatgtctctgaccagacacccatcaacagtattattttctcccatgaagacggtacgcgactgggcgtggagcatctggtcgcattgggtcaccagcaaatcgcgctgttagcgggcccattaagttctgtctcggcgcgtctgcgtctggctggctggcataaatatctcactcgcaatcaaattcagccgatagcggaacgggaaggcgactggagtgccatgtccggttttcaacaaaccatgcaaatgctgaatgagggcatcgttcccactgcgatgctggttgccaacgatcagatggcgctgggcgcaatgcgcgccattaccgagtccgggctgcgcgttggtgcggatatctcggtagtgggatacgacgataccgaagacagctcatgttatatcccgccgttaaccaccatcaaacaggattttcgcctgctggggcaaaccagcgtggaccgcttgctgcaactctctcagggccaggcggtgaagggcaatcagctgttgcccgtctcactggtgaaaagaaaaaccaccctggcgcccaatacgcaaaccgcctctccccgcgcgttggccgattcattaatgcagctggcacgacaggtttcccgactggaaagcgggcaggctgcaaacgacgaaaactacgctttagtagcttaataa + + + ECK120033736 + ttcagccaaaaaacttaagaccgccggtcttgtccactaccttgcagtaatgcggtggacaggatcggcggttttcttttctcttctcaa - + + + BBa_R0010 tccctatcagtgatagagattgacatccctatcagtgatagagatactgagcac - - aaagacaggacc + + + BBa_R0040 + tccctatcagtgatagagattgacatccctatcagtgatagagatactgagcac - - atgcgtaaaggagaagaacttttcactggagttgtcccaattcttgttgaattagatggtgatgttaatgggcacaaattttctgtcagtggagagggtgaaggtgatgcaacatacggaaaacttacccttaaatttatttgcactactggaaaactacctgttccatggccaacacttgtcactactttcggttatggtgttcaatgctttgcgagatacccagatcatatgaaacagcatgactttttcaagagtgccatgcccgaaggttatgtacaggaaagaactatatttttcaaagatgacgggaactacaagacacgtgctgaagtcaagtttgaaggtgatacccttgttaatagaatcgagttaaaaggtattgattttaaagaagatggaaacattcttggacacaaattggaatacaactataactcacacaatgtatacatcatggcagacaaacaaaagaatggaatcaaagttaacttcaaaattagacacaacattgaagatggaagcgttcaactagcagaccattatcaacaaaatactccaattggcgatggccctgtccttttaccagacaaccattacctgtccacacaatctgccctttcgaaagatcccaacgaaaagagagaccacatggtccttcttgagtttgtaacagctgctgggattacacatggcatggatgaactatacaaataataa + + + BBa_J61130 + aaagaaacgaca - + + + BBa_C0040 atgtccagattagataaaagtaaagtgattaacagcgcattagagctgcttaatgaggtcggaatcgaaggtttaacaacccgtaaactcgcccagaagctaggtgtagagcagcctacattgtattggcatgtaaaaaataagcgggctttgctcgacgccttagccattgagatgttagataggcaccatactcacttttgccctttagaaggggaaagctggcaagattttttacgtaataacgctaaaagttttagatgtgctttactaagtcatcgcgatggagcaaaagtacatttaggtacacggcctacagaaaaacagtatgaaactctcgaaaatcaattagcctttttatgccaacaaggtttttcactagagaatgcattatatgcactcagcgctgtggggcattttactttaggttgcgtattggaagatcaagagcatcaagtcgctaaagaagaaagggaaacacctactactgatagtatgccgccattattacgacaagctatcgaattatttgatcaccaaggtgcagagccagccttcttattcggccttgaattgatcatatgcggattagaaaaacaacttaaatgtgaaagtgggtccgctgcaaacgacgaaaactacgctttagtagcttaataa - - ttcagccaaaaaacttaagaccgccggtcttgtccactaccttgcagtaatgcggtggacaggatcggcggttttcttttctcttctcaa + + + BBa_C0012 + atggtgaatgtgaaaccagtaacgttatacgatgtcgcagagtatgccggtgtctcttatcagaccgtttcccgcgtggtgaaccaggccagccacgtttctgcgaaaacgcgggaaaaagtggaagcggcgatggcggagctgaattacattcccaaccgcgtggcacaacaactggcgggcaaacagtcgttgctgattggcgttgccacctccagtctggccctgcacgcgccgtcgcaaattgtcgcggcgattaaatctcgcgccgatcaactgggtgccagcgtggtggtgtcgatggtagaacgaagcggcgtcgaagcctgtaaagcggcggtgcacaatcttctcgcgcaacgcgtcagtgggctgatcattaactatccgctggatgaccaggatgccattgctgtggaagctgcctgcactaatgttccggcgttatttcttgatgtctctgaccagacacccatcaacagtattattttctcccatgaagacggtacgcgactgggcgtggagcatctggtcgcattgggtcaccagcaaatcgcgctgttagcgggcccattaagttctgtctcggcgcgtctgcgtctggctggctggcataaatatctcactcgcaatcaaattcagccgatagcggaacgggaaggcgactggagtgccatgtccggttttcaacaaaccatgcaaatgctgaatgagggcatcgttcccactgcgatgctggttgccaacgatcagatggcgctgggcgcaatgcgcgccattaccgagtccgggctgcgcgttggtgcggatatctcggtagtgggatacgacgataccgaagacagctcatgttatatcccgccgttaaccaccatcaaacaggattttcgcctgctggggcaaaccagcgtggaccgcttgctgcaactctctcagggccaggcggtgaagggcaatcagctgttgcccgtctcactggtgaaaagaaaaaccaccctggcgcccaatacgcaaaccgcctctccccgcgcgttggccgattcattaatgcagctggcacgacaggtttcccgactggaaagcgggcaggctgcaaacgacgaaaactacgctttagtagcttaataa - - aaagacaggacc + + + ECK120029600 + ttcagccaaaaaacttaagaccgccggtcttgtccactaccttgcagtaatgcggtggacaggatcggcggttttcttttctcttctcaa diff --git a/model.tex b/model.tex index 1ecda621..f3094424 100644 --- a/model.tex +++ b/model.tex @@ -157,15 +157,19 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - - [\emph{zero or one}] [\emph{element}] - [\emph{zero or one}] ... [\emph{element}] - [\emph{zero or one}] ... [\emph{element}] - [\emph{zero or one}] [\emph{element}] - [\emph{zero or one}] ... [\emph{element}] - [\emph{zero or one}] ... [\emph{element}] + + + + [\emph{zero or one}] [\emph{element}] + [\emph{zero or one}] ... [\emph{element}] + [\emph{zero or one}] ... [\emph{element}] + [\emph{zero or one}] [\emph{element}] + [\emph{zero or one}] ... [\emph{element}] + [\emph{zero or one}] ... [\emph{element}] ... - + + ... + \end{lstlisting} % \subsection{Documented} @@ -543,8 +547,8 @@ \subsubsection{MapsTo} This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``higher level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{local} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the owner of the \sbol{MapsTo} (either a \sbol{ComponentInstance} or \sbol{Module}). \paragraph{The \sbolheading{remote} property}\label{sec:remote} -This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``lower level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{remote} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that is the \sbol{definition} of \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}. - +This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``lower level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{remote} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that is the \sbol{definition} of the \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}. Finally, the \sbol{ComponentInstance} MUST have \sbol{public} \sbol{AccessType}. + \paragraph{The \sbolheading{refinement} property}\label{sec:refinement} Each \sbol{MapsTo} entity MUST specify the relationship between its \sbol{local} and \sbol{remote} components using the refinement property, using one of the values in \ref{tbl:mapsto_refinement}. @@ -902,7 +906,7 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - ... + ... [\emph{one}] [\emph{element}] [\emph{one}] [\emph{element}] [\emph{one}] [\emph{element}] @@ -1002,27 +1006,27 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - - - - - - - - - - - - - - - - - - ... - - - + + + + + + + + + + + + + + + + + + ... + + + \end{lstlisting} \Rtodo{Should this be here or defined in ComponentInstance section? JSB: here} @@ -1064,18 +1068,19 @@ \subsubsection{FunctionalComponent} \lstsetsbol \begin{lstlisting} - [\emph{zero or one}] [\emph{element}] - [\emph{one}] [\emph{element}] - [\emph{one}] [\emph{element}] - [\emph{zero or more}] [\emph{elements}] + ... + [\emph{zero or one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{zero or more}] [\emph{elements}] \end{lstlisting} In the example below, the functional component is defined as public input or output. The component refers to the \texttt{Part:BBa\_R0010} promoter from the Parts Registry. \lstsetsbol \begin{lstlisting} - - + + @@ -1115,8 +1120,9 @@ \subsubsection{Module} \lstsetsbol \begin{lstlisting} - + + ... \end{lstlisting} @@ -1159,10 +1165,11 @@ \subsubsection{Interaction} \lstsetsbol \begin{lstlisting} - [\emph{one or more}] [\emph{elements}] + ... + [\emph{one or more}] [\emph{elements}] [\emph{zero or more}] - ... - [\emph{elements}] + ... + [\emph{elements}] \end{lstlisting} @@ -1170,13 +1177,17 @@ \subsubsection{Interaction} \lstsetsbol \begin{lstlisting} - + - ... + + ... + - ... + + ... + \end{lstlisting} @@ -1218,17 +1229,18 @@ \subsubsection{Participation} \lstsetsbol \begin{lstlisting} - [\emph{zero or more}] - [\emph{one}] + ... + [\emph{zero or more}] [\emph{elements}] + [\emph{one}] [\emph{element}] \end{lstlisting} In the example below, the role of participating \sbol{FunctionalComponent} is defined to be \external{inhibitor}, using the \external{SBO:0000020} term. This component is specified using the participant property of the \sbol{Participation} entity. \lstsetsbol \begin{lstlisting} - + - + \end{lstlisting} @@ -1260,7 +1272,7 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - ... + ... [\emph{zero or more}] [\emph{element}] \end{lstlisting} @@ -1320,24 +1332,44 @@ \subsubsection*{Serialization} The serialization of \sbol{Annotation} objects has the following form: -\Rtodo{CJM - added, needs review} +\Rtodo{CJM - added, needs review, GM: Updated as below. Please remove the commented example if you are happy.} + +% +% +% +% literal +%OR +% +%OR +% +% +% ... +% +% +% \lstsetsbol \begin{lstlisting} - - literal -OR - -OR - - - ... - - - + + + ... + [\emph{zero or more}] A_LITERAL [\emph{elements}] + [\emph{zero or more}] [\emph{elements}] + [\emph{zero or more}] + + ... + + [\emph{elements}] + \end{lstlisting} The \sbol{name} property species the namespace, prefix, and localPart values. The first form is for a \external{literal} annotation. The second form is for a \external{URI} annotation. Finally, the third form is for an \sbol{NestedAnnotations} object annotation. In this last case, the \sbol{nestedQName} property specifies the nestedNamespace, nestedPrefix, and nestedLocalPart while the \sbol{nestedURI} property species the URI for the nested annotation. @@ -1392,15 +1424,25 @@ \subsubsection*{Serialization} The serialization of \sbol{GenericTopLevel} objects has the following form where the prefix, namespace, and localPart are defined by the \sbol{rdfType} property: -\Rtodo{CJM - added, needs review} +\Rtodo{CJM - added, needs review. GM: Updated the template, please remove the commented example if you are happy.} + +% +% +% +% ... +% \lstsetsbol \begin{lstlisting} - - - ... - + + + ... + \end{lstlisting} \Ctodo{Get example from cut part of libSBOLj paper} From d38629972a17e0ceb994d15f08711a908498c850 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Fri, 22 May 2015 15:36:50 +0000 Subject: [PATCH 167/317] Update on Overleaf. --- model.tex | 14 +++++--------- serialization.tex | 2 ++ 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/model.tex b/model.tex index f3094424..4c7c8815 100644 --- a/model.tex +++ b/model.tex @@ -547,7 +547,7 @@ \subsubsection{MapsTo} This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``higher level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{local} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the owner of the \sbol{MapsTo} (either a \sbol{ComponentInstance} or \sbol{Module}). \paragraph{The \sbolheading{remote} property}\label{sec:remote} -This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``lower level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{remote} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that is the \sbol{definition} of the \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}. Finally, the \sbol{ComponentInstance} MUST have \sbol{public} \sbol{AccessType}. +This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``lower level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{remote} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that is the \sbol{definition} of the \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}. Finally, the \sbol{ComponentInstance} MUST have \sbol{public} \sbol{Access}. \paragraph{The \sbolheading{refinement} property}\label{sec:refinement} Each \sbol{MapsTo} entity MUST specify the relationship between its \sbol{local} and \sbol{remote} components using the refinement property, using one of the values in \ref{tbl:mapsto_refinement}. @@ -1069,7 +1069,7 @@ \subsubsection{FunctionalComponent} \begin{lstlisting} ... - [\emph{zero or one}] [\emph{element}] + [\emph{one}] [\emph{element}] [\emph{one}] [\emph{element}] [\emph{one}] [\emph{element}] [\emph{zero or more}] [\emph{elements}] @@ -1118,6 +1118,8 @@ \subsubsection{Module} The example below specifies a TetR inverter that is being used as a part of a toggle switch: +\Ctodo{I think a mapsTo in this example would be good.} + \lstsetsbol \begin{lstlisting} @@ -1369,12 +1371,10 @@ \subsubsection*{Serialization} ... [\emph{elements}] - + \end{lstlisting} The \sbol{name} property species the namespace, prefix, and localPart values. The first form is for a \external{literal} annotation. The second form is for a \external{URI} annotation. Finally, the third form is for an \sbol{NestedAnnotations} object annotation. In this last case, the \sbol{nestedQName} property specifies the nestedNamespace, nestedPrefix, and nestedLocalPart while the \sbol{nestedURI} property species the URI for the nested annotation. -\Ctodo{Check example} - The ComponentDefinition example for a promoter serialized below shows how annotations can be added to SBOL objects. Annotations are added using the relevant information from the Parts Registry. Annotation property names are qualified with the \external{http://www.partsregistry.org/} namespace, which is prefixed using \external{pr}. The first annotation is named as \external{pr:group}, indicating the iGEM group designing the promoter, and has a \external{String} value. The second \external{pr:experience} annotation has a \external{URI} value and is serialised as an RDF resource pointing to the information Web page on the Parts Registry for the promoter. The \external{pr:information} property represents a complex annotation which is a type of \external{pr:Information} and includes information about the regulatory details of the promoter using Parts Registry categories. \begin{figure} [ht] @@ -1424,8 +1424,6 @@ \subsubsection*{Serialization} The serialization of \sbol{GenericTopLevel} objects has the following form where the prefix, namespace, and localPart are defined by the \sbol{rdfType} property: -\Rtodo{CJM - added, needs review. GM: Updated the template, please remove the commented example if you are happy.} - % % % @@ -1445,8 +1443,6 @@ \subsubsection*{Serialization} \end{lstlisting} -\Ctodo{Get example from cut part of libSBOLj paper} - The example below shows how a datasheet object can be added to an SBOL document using the \sbol{GenericTopLevel} class. The J23119 promoter example is annotated with the URI of a top Level Datasheet object, here defining the annotation properties using the custom \external{\path{http://www.myapp.org/}} namespace and the \external{myapp} prefix. The datasheet object, with the data type of \external{myapp:Datasheet}, is accessed using the \external{URI} value specified by the \external{myapp:characterizationData} property of the promoter component definition. diff --git a/serialization.tex b/serialization.tex index 00abd784..5cc845a2 100644 --- a/serialization.tex +++ b/serialization.tex @@ -28,6 +28,8 @@ \section{SBOL RDF Serialization} Every SBOL document must be a valid RDF/XML document. Accordingly, each SBOL document starts with an XML declaration that has its XML version set to ``1.0.'' As shown in the example below, this declaration is then followed by an \external{rdf:RDF} XML element that includes the namespace declarations for RDF and SBOL. SBOL namespace, which is \url{http://sbols.org/v2#}, is used to indicate which entities and properties in the SBOL document are defined by SBOL, and SHOULD NOT be used for any entities or properties not defined in this specification. \label{xml-namespace} +\Ctodo{Should add dcterms and prov namespaces as required here.} + \Rtodo{Need to state ``This is the SBOL2 namespace'' JSB: done} \lstsetsbol From f414bfc1ca001a04c6482a9d808856140488ac93 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Fri, 22 May 2015 22:23:36 +0000 Subject: [PATCH 168/317] Update on Overleaf. --- history.tex | 14 +++++++++----- model.tex | 39 ++------------------------------------- overview.tex | 7 ------- purpose.tex | 18 ++++++++---------- sbol2.tex | 4 ++-- serialization.tex | 3 +-- 6 files changed, 22 insertions(+), 63 deletions(-) diff --git a/history.tex b/history.tex index ab2efecf..f8ddbf78 100644 --- a/history.tex +++ b/history.tex @@ -1,13 +1,17 @@ % ----------------------------------------------------------------------------- -\section{History and Acknowledgements} +\section{A Brief History of SBOL} % ----------------------------------------------------------------------------- %Add yourself if you have helped and aren't on the list -In early 2006 Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26 to 27 in 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deep Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. The original SBOL 1.0 was developed through his efforts together with the small group of dedicated researchers. An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group and the over all pace of developed quickened. Its further development has continued at a series of subsequent open invitation workshops and through email exchanges on the SBOL Developers mailing list. Finally, after repeated attempts, the SBOL core team finally secured federal funding from the National Science Foundation. This document is partly a result of that support. +In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. The original SBOL 1.0 was developed through his efforts together with the small group of dedicated researchers. An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group, including Cesar Rodriguez, Mandy Wilson, Jake Beal, Guy-Bart Stan, Chris Myers, and Nicholas Roehner, and the over all pace of development quickened. -\Ctodo{History peters out after first meeting. Definitely need to add a bit more details about the evolution. Maybe at least a couple sentences about the accomplishments at each meeting - I now have the info from Mike, will add shortly. Need to cite NBT paper here. Nic should write something about the history of SBOL 2.0 including the publication for the proposal.} +At a meeting in San Diego in June 2011, the SBOL Developers Group was officially established, rules of governance were established, and the first SBOL editors were elected: Mike Galdzicki, Cesar Rodriguez, and Mandy Wilson. At this time, Allan Kuchinsky, a research scientist at Agilent, joined the effort, and he was able to obtain some support to begin what was to become libSBOLj. Kevin Clancy from LifeTechnologies also joined at this time, as well as, Anil Wipat, Matthew Pocock, and Goksel Misirli from Newcastle University. In October 2011, SBOL 1.0 was officially released. At our next meeting in Seattle in January 2012, Herbert Sauro was elected the SBOL Chair, and two new editors were added: Matthew Pocock and Ernst Oberortner. At this meeting, the first data exchange between software tools using SBOL was conducting when a design was passed from Newcastle University's VirtualParts Repository to Boston University's Eugene tool, and finally to University of Utah's iBioSim tool. -\Ctodo{Need to get more names to list here other than authors.} +In March 2012, SBOL 1.1 was released, the version that this document replaces. The 8th SBOL workshop was held in November 2012 at Boston University, and the major topic of discussion was the next version of SBOL. SBOL 1.1 is limited to describing hierarchical DNA sequences. Several extensions were discussed at this meeting, such as a means to describe genetic regulation what later turned into interactions, and a means to group components what later turned into modules. In April 2013, at the 9th SBOL workshop at Newcastle University, the framework for SBOL 2.0 was agreed upon. Nicholas Roehner, Matthew Pocock, and Ernst Oberortner then began work to create a draft proposal for SBOL 2.0. In January 2014 at the 10th SBOL workshop, this draft was discussed and many refinements were debated and approved. Another important decision at this meeting was that SBOL should begin investigating joining the COMBINE community of standards. -Contributors to this work include: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University). +In the Spring and Summer of 2014, several important events occurred. In April, several SBOL representatives attended Harmony in Manchester UK to discuss joining the COMBINE community, which was approved by both sides shortly thereafter. In May, Herbert Sauro, John Gennari, and Chris Myers received a grant from the National Science Foundation to support SBOL (this document and the supporting software are due in no small part to this support). In June, SBOL 1.1 was published in Nature Biotechnology \cite{NBT}. In July, Nicholas Roehner presented a proposal for the next version of SBOL at the SEED Conference in Los Angeles \cite{ACS}. Finally, in August 2014, the SBOL community attended their first COMBINE workshop as members of the COMBINE community. At this meeting, many of the final details of SBOL 2.0 were discussed, and the data model presented here is essentially the result of this meeting. + +At this Harmony meeting in April 2014 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). + +\Rtodo{The above text needs thorough review by those involved. Any key people missing from the text?} diff --git a/model.tex b/model.tex index 4c7c8815..12e5365e 100644 --- a/model.tex +++ b/model.tex @@ -2,8 +2,6 @@ \section{SBOL Data Model}\label{sec:model} % ----------------------------------------------------------------------------- -\Ctodo{Need to generate all serialization examples and specs using the library.} - In this section, we describe the types of biological design data that can belong to an SBOL document and the relationships between these data types. The SBOL data model is specified using Unified Modeling Language (UML) 2.0 diagrams \href{http://www.omg.org/spec/UML/2.0/}{(OMG 2005)}. Subsections \ref{sec:umldiagrams}, \ref{sec:nameconventions}, \ref{sec:datatypes} review the basics of UML diagrams and explain the naming conventions and generic data types used in this specification. The remaining sections then describe the SBOL data model in detail. Complete SBOL examples and best practices when using the standard can be found in \ref{sec:examples} and \ref{sec:bestpractices}, respectively. \subsection{Understanding the UML Diagrams} @@ -596,8 +594,6 @@ \subsubsection{SequenceAnnotation} \label{sec:SequenceAnnotation} The \sbol{SequenceAnnotation} class describes a precisely known location of interest on the \sbol{Sequence} objects linked by its parent \sbol{ComponentDefinition} object. It can also optionally associate this location with a \sbol{Component} object. \sbol{SequenceAnnotation} objects specify their location using a set of \sbol{Location} objects, as described below. It is a set of location objects to allow the annotation of a non-contiguous location on a sequence. -\Rtodo{We will change location to locations (1..*) and eliminate MultiRange class. JSB, Nic: done, CJM: added text above to explain why it is a set of locations.} - \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/sequence_annotation} @@ -997,10 +993,6 @@ \subsubsection*{Serialization} [\emph{elements}] \end{lstlisting} -\Rtodo{Is this template still correct, given ``subModule''? -No, it was not correct. I think I fixed it. - CJM} - -\Rtodo{Add an example, like for all the rest. JSB: done, but needs to be sanity-checked since I created it by hand.} The example below shows a simple \sbol{ModuleDefinition} containing two components, a \sbol{FunctionalComponent} for a DNA sequence encoding constitutive expression of GFP and another for the GFP protein expressed from this sequence, plus an interaction describing that relation. @@ -1029,11 +1021,9 @@ \subsubsection*{Serialization} \end{lstlisting} -\Rtodo{Should this be here or defined in ComponentInstance section? JSB: here} - \subsubsection{FunctionalComponent} \label{sec:FunctionalComponent} -Composition of the functional layer of SBOL designs is accomplished using \sbol{FunctionalComponent} objects. Each FunctionalComponent object is owned by a \sbol{ModuleDefinition} and serves as an explicit usage of a \sbol{Component} object for the purpose of fulfilling some function. +Composition of the functional layer of SBOL designs is accomplished using \sbol{FunctionalComponent} objects. Each FunctionalComponent object is owned by a \sbol{ModuleDefinition} and serves as an explicit usage of a \sbol{ComponentDefinition} object for the purpose of fulfilling some function. \sbol{FunctionalComponent} derives from \sbol{ComponentInstance}, and therefore has the definition and access properties. Additionally, it has a \sbol{direction} property that specifies whether it serves as an input, output, both, or neither for the \sbol{ModuleDefinition} that contains it. @@ -1099,7 +1089,6 @@ \subsubsection{Module} The \sbol{Module} class enables the composition of \sbol{ModuleDefinition} objects from other, smaller \sbol{ModuleDefinition} objects. \textcolor{red}{The first data field, ``definition'', links to the ModuleDefinition object that is effectively a part of the Module object that owns the Module object.} The second data field, ``mappings'', is a set of MapsTo objects that link between the Component objects at the same level of the design hierarchy as the Module object and the Component objects that are lower in the design hierarchy, thereby composing these objects with greater specificity. -\Ctodo{mappings or mapsTo? --> mapsTo} \Ctodo{need to clean up this whole description} \Ctodo{Is the notion of ``level of design hierarchy'' real? I think it doesn't need to be stated here, it's actually a best practice. --> it's a best practice. Nick will write this better.} @@ -1128,8 +1117,6 @@ \subsubsection{Module} \end{lstlisting} -\Rtodo{add an example; JSB: done} - \subsubsection{Interaction} \label{sec:Interaction} @@ -1152,9 +1139,7 @@ \subsubsection{Interaction} If an \sbol{Interaction} object has multiple \sbol{types} URIs, then they must identify synonymous terms. -Values for this URI are RECOMMENDED to be chosen from the from the occurring entity relationship branch of the Systems Biology Ontology (SBO) where possible. - -\Rtodo{Like the others, SBO is REQUIRED if the term exists, and you can add other stuff. We also need to explain this up front in the beginning of the section; JSB: done} +Values for this URI are RECOMMENDED to be chosen from the from the occurring entity relationship branch of the Systems Biology Ontology (SBO), where possible. \paragraph{The \sbolheading{participations} property}\label{sec:participations} @@ -1206,8 +1191,6 @@ \subsubsection{Interaction} \subsubsection{Participation} \label{sec:Participation} -\Rtodo{Fix the linking and clean grammar. JSB: done} - Each \sbol{Participation} object describes the role or roles that a particular \sbol{FunctionalComponent} plays in its parent \sbol{Interaction}. @@ -1334,24 +1317,6 @@ \subsubsection*{Serialization} The serialization of \sbol{Annotation} objects has the following form: -\Rtodo{CJM - added, needs review, GM: Updated as below. Please remove the commented example if you are happy.} - -% -% -% -% literal -%OR -% -%OR -% -% -% ... -% -% -% - \lstsetsbol \begin{lstlisting} diff --git a/overview.tex b/overview.tex index 3320831d..095cbdea 100644 --- a/overview.tex +++ b/overview.tex @@ -14,11 +14,6 @@ \section{Overview of SBOL} The physical structure of an element is represented with a \sbol{ComponentDefinition}, often corresponding to a particular \sbol{Sequence} (e.g., DNA, RNA, amino acids), and with its structure further described in terms of the smaller \sbol{Component} instances contained within, and their absolute and relative positions within the component. Functional relationships are represented with a \sbol{ModuleDefinition}, often also described by some \sbol{Model}, and with its structure further described in terms of the smaller \sbol{Module} instances contained within, as well as particular components (designated \sbol{FunctionalComponent} to indicate their use in defining a module), and their interactions. -\Rtodo{reword for better clarity and coverage of the model -JSB -reworded to talk to the figure below - KC Added some further tweaks -JSB} - -% In the figure below, a simple toggle switch system is displayed, in which LacI and TetR repress each other's genes transcriptionally. The toggling of the system is controlled by adding IPTG to deactivate LacI, and ATC to deactivate TetR. The components of the system includes genetic elements, proteins, small molecules. - \begin{figure}[ht] \begin{center} \includegraphics[scale=1.2]{images/SBOL2_2_revised.png} @@ -26,8 +21,6 @@ \section{Overview of SBOL} \label{images:overview} \end{center} \end{figure} -\Rtodo{Put a caption on the figure -JSB Done -KC Tweaked further -JSB} -\Ctodo{Remove SBML from the figure -JSB, Why? We have done more with SBML than any alternative? We already have SBOL2 to SBML and SBML to SBOL2, for example. - CJM} The \sbol{Sequence} is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. In designed systems such objects can consist of small chemical molecules, DNAs, RNAs or Proteins. The \sbol{Sequence} object has been designed to encapsulate any of these types of molecules. Small molecule \sbol{Sequence} objects are typically referred to via their chemical formulae. Molecules where sequence specific information is important, such as DNA, RNA and Protein \sbol{Sequence} objects, use the object to incorporate this information. The \sbol{Sequence} object encapsulates this positional information as well as the associated experimental work or other information related to a sequenced molecule. diff --git a/purpose.tex b/purpose.tex index f74a3724..20915e35 100644 --- a/purpose.tex +++ b/purpose.tex @@ -7,16 +7,13 @@ \section{Purpose} % Below is my revision. Any thoughts? - Nic -Synthetic biology builds upon the techniques and successes of genetics, molecular biology and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. A common factor of these challenges is the exchange of information about designed systems between laboratories. When designing a synthetic system, synthetic biologists need to exchange information about multipe types of molecules and their planned roles in the design. Often the functional role may be associated with another type of molecule entirely, such as a small chemical, a DNA, an RNA or a Protein molecule. An example is an DNA sequence that is transcribed into a messenger RNA that contains an encoded microRNA binding site, and the messenger RNA in turn being translated into a protein molecule which is a transcription factor binding protein. Functionally the representation of the products of the designed DNA sequence need to describe the role of microRNA binding to the messenger RNA leading to possible degradation, the functional consequence of the transcription factor protein being absent leading to repression of expression of another gene and the kinetic information associated with these different elements so they can be mathematically modelled. The DNA sequence itself is thus one or two steps removed from the functional role of the designed device or circuit. +Synthetic biology builds upon the techniques and successes of genetics, molecular biology and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. A common factor of these challenges is the exchange of information about designed systems between laboratories. When designing a synthetic system, synthetic biologists need to exchange information about multiple types of molecules and their planned roles in the design. Often the functional role may be associated with another type of molecule entirely, such as a small chemical, a DNA, an RNA or a Protein molecule. An example is an DNA sequence that is transcribed into a messenger RNA that contains an encoded microRNA binding site, and the messenger RNA in turn being translated into a protein molecule which is a transcription factor binding protein. Functionally the representation of the products of the designed DNA sequence need to describe the role of microRNA binding to the messenger RNA leading to possible degradation, the functional consequence of the transcription factor protein being absent leading to repression of expression of another gene and the kinetic information associated with these different elements so they can be mathematically modeled. The DNA sequence itself is thus one or two steps removed from the functional role of the designed device or circuit. SBOL has been designed as a standard to support synthetic biology, filling a need not satisfied by other pre-existing standards. -Previous file formats such as Genbank and SwissProt represent sequence information based upon annotation of sequence features - they do not represent the functional roles or consequences of these sequences. Systems Biology Markup Language (SBML) represents reactions, pathways and models but does not typically represent the associated sequences. Kinetic information may be present in SBML~\cite{SBML} or may be represented by mathematical equations in other systems such as the COBRA Toolbox~\cite{COBRA}. Synthetic Biology needs a structured standard with defined ways on how to represent relevant molecues and their functional roles within the designed system, standarized rules on how such information is encoded in the file and the means to enable exchange of such data between participating laboratories as part of publications. - -\Rtodo{Maybe discuss more about how SBOL is a standard. Huge transition from what is Synthetic Biology to SBOL. Added some text on the need for a standard and why other standards do not meet the current needs for SynBio data exchange - KC Small further tweaks -JB} - +Previous file formats such as GenBank and SwissProt represent sequence information based upon annotation of sequence features - they do not represent the functional roles or consequences of these sequences. Systems Biology Markup Language (SBML) represents reactions, pathways, and models, but does not typically represent the associated sequences. Kinetic information may be present in SBML~\cite{SBML} or may be represented by mathematical equations in other systems such as the COBRA Toolbox~\cite{COBRA}. Synthetic Biology needs a structured standard with defined ways on how to represent relevant molecules and their functional roles within the designed system, standardized rules on how such information is encoded in the file and the means to enable exchange of such data between participating laboratories as part of publications. To help address these challenges, the Synthetic Biology Open Language (SBOL) Standard introduces a standardized format for the electronic exchange of information describing the structural and functional aspects of biological designs. -The standard is designed to support the development of explicit and unambiguous data models of biological designs through the use of a well defined model on how to represent the component molecues, and their structural and functional roles in a systematic fashion. +The standard is designed to support the development of explicit and unambiguous data models of biological designs through the use of a well defined model on how to represent the component molecules, and their structural and functional roles in a systematic fashion. The standard further describes rules and best practices on how to include, develop and populate this format with relevant information of essential design details. Because the standard itself can represent information from other sources for sequence representations, reaction information and ontologies to represent biological design information, the standard uses modern information exchange techniques such as Universal Resource Identifiers (URIs). This permits the reuse of existing information without the need to repeat it, thus avoiding both redundancy and likely future information decay within shared files. The ultimate utility of URIs in the SBOL Standard is the ability to support flexible annotation with appriate metadata while associating an authority with that annotation. The definition of the data model and associated format, the rules on the addition of data within the format and the representation of this in electronic data files make the SBOL Standard an excellent means of promoting global data exchange between laboraties and between software programs. @@ -41,9 +38,10 @@ \section{Purpose} To address the need for functional descriptions in SBOL, the proposed data model adds classes for modules, interactions, and models. These classes provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the Systems Biology Markup Language (SBML)~\cite{SBML} to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. +\Ctodo{v1.1 to me seems easy to confuse with SBOLv 1.0, so removed the v. - CJM} + The SBOL standard has been developed in collaboration between both ``wet'' bench scientists and ``dry'' scientific modelers and tool designers active within the Synthetic Biology community. -As with the earlier SBOL v1.1 standard this community (open for any practitioner to join) has met to discuss, argue and agree upon needs that the SBOL standard should address. -This information has then been used by developers within our community to design, develop and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects as well as the ability to share designs between different laboratories. +As with the earlier SBOL 1.1 standard this community (open for any practitioner to join) has met to discuss, argue and agree upon needs that the SBOL standard should address. +This information has then been used by developers within our community to design, develop and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects, as well as, the ability to share designs between different laboratories. The standard has also been used to develop software tools that employ the standard for developing and sharing synthetic design projects. -The publication of specification now share the details of the SBOL standard that have been worked out with the entire community of potentual users and developers so it can be more widely employed through the scientific community. -\Rtodo{I wrote a final paragraph to provide a better end - KC Tweaked further -JSB} \ No newline at end of file +The publication of specification now share the details of the SBOL standard that have been worked out with the entire community of potential users and developers so it can be more widely employed through the scientific community. diff --git a/sbol2.tex b/sbol2.tex index cbeb42ad..05707c63 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -133,6 +133,8 @@ Nicholas Roehner & \emph{Boston University, US}\\ Matthew Pocock & \emph{Newcastle University, GB}\\ Curtis Madsen & \emph{Newcastle University, GB}\\ +Tramy Nguyen & \emph{University of Utah, US}\\ +Zhen Zhang & \emph{University of Utah, US}\\ lots of other community members & all over the world\\ Chris Myers & \emph{University of Utah, US}\\ Anil Wipat & \emph{Newcastle University, GB}\\ @@ -141,8 +143,6 @@ \href{mailto:editors@sbolstandard.org}{\sffamily editors@sbolstandard.org} \LDtodo{What should be the authorship? -JSB}} - - \maketitlepage \maketableofcontents diff --git a/serialization.tex b/serialization.tex index 5cc845a2..07331f03 100644 --- a/serialization.tex +++ b/serialization.tex @@ -47,7 +47,7 @@ \section{SBOL RDF Serialization} \ref{sec:model} provides the serialization template and an example at the end of its description of each data type. All of the data types that are \sbol{TopLevel} are so named because they always appear at the top-most level of the RDF/XML serialization. All other datatypes will always appear nested within their parent container and, ultimately, some \sbol{TopLevel} object. For example, a \sbol{ComponentDefinition} is a \sbol{TopLevel} and therefore listed at the top-most level of the RDF/XML serialiation, and contains its \sbol{SequenceConstraint} objects, since they are not \sbol{TopLevel}. Its \sbol{Sequence}, however, is also \sbol{TopLevel} and is therefore not nested within and instead linked via a URI. -\Rtodo{Perhaps add or reference an example of a top level entity vs a nested entity. This may be very similar to the previous example. - cm. JSB: done} + Each instance of a first-class SBOL datatype may also have annotations attached, as described in \ref{sec:Annotations}. These annotations are composed of a name and a value. They are serialized to RDF as a triple with the subject being the identity of the instance they annotate, the predicate being the name of the annotation, and the object being the value of that annotation. Annotation values are always nested within the RDF/XML serialization of the instance that they annotate. For example, a \sbol{ModuleDefinition} might add a DOI annotation that links to the scientific article that first described the system that it represents. @@ -58,6 +58,5 @@ \section{SBOL RDF Serialization} This annotation will be serialized into the RDF/XML in the usual way, as an RDF/XML block at the top level of the file. Other objects may refer to this entity through their annotations by reference, and this generic top-level entity may refer to other entities via references. For example, a \sbol{ModuleDefinition} might use an annotation to refer to the data sheet \sbol{GenericTopLevel} that documents its properties. -\Rtodo{Perhaps add or reference examples of different annotations. - cm; JSB: done} By adopting this paradigm of RDF/XML serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. Since exactly the same scheme is used to serialize annotations as is used to serialize specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of properties and associations. Those properties not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entities in a SBOL file, we enable future specifications or extensions to ratify the structure of other top-level objects. These entities would then become part of the explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely read in, manipulate, and write out the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. Finally, the very regimented control of nesting versus referencing also allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL RDF/XML files safely. \ No newline at end of file From 015cc9a78d38c7578a0972031f29e611f50d7dc1 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Fri, 22 May 2015 21:15:18 -0500 Subject: [PATCH 169/317] tweaks in purpose --- purpose.tex | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/purpose.tex b/purpose.tex index 20915e35..2cdb4135 100644 --- a/purpose.tex +++ b/purpose.tex @@ -20,9 +20,9 @@ \section{Purpose} This document presents the second version of SBOL. The previous version 1.1 of the SBOL standard focused on representing the structural aspects of genetic designs. Users of the standard were able to use it to echange information on DNA designs but could not represent molecules other than DNA or represent the functional aspects of their designs beyond the DNA sequences. -To serve as an effective medium for the computational exchange of genetic designs, SBOL must be extended to capture more aspects of a designed system, including both structural and functional information, and the composition of complex structural and functional designs by combining simpler parts. The SBOL 2.0 data model proposed in this specification thus provides for addressing the most pressing needs for expanding SBOL Version 1.1. +To serve as an effective medium for the computational exchange of genetic designs, SBOL must be extended to capture more aspects of a designed system, including both structural and functional information, and the composition of complex structural and functional designs by combining simpler parts. The SBOL 2.0 data model defined in this specification thus provides for addressing the most pressing needs for expanding SBOL Version 1.1: -\begin{enumerate} +\begin{itemize} \item represent structural components of a biological design, including DNA, RNA, proteins, small molecules and other physical components @@ -32,14 +32,12 @@ \section{Purpose} \item support rich annotations of all components, so that data required to describe a design, but not formalized in this specification can be safely exchanged -\end{enumerate} +\end{itemize} Taken together, these capabilities allow SBOL sufficient expressivity to support the description and exchange of hierarchical, modular representations of both the intended structure and function of designed biological systems. To address the need for functional descriptions in SBOL, the proposed data model adds classes for modules, interactions, and models. These classes provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the Systems Biology Markup Language (SBML)~\cite{SBML} to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. -\Ctodo{v1.1 to me seems easy to confuse with SBOLv 1.0, so removed the v. - CJM} - The SBOL standard has been developed in collaboration between both ``wet'' bench scientists and ``dry'' scientific modelers and tool designers active within the Synthetic Biology community. As with the earlier SBOL 1.1 standard this community (open for any practitioner to join) has met to discuss, argue and agree upon needs that the SBOL standard should address. This information has then been used by developers within our community to design, develop and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects, as well as, the ability to share designs between different laboratories. From 87044b936557c5fa1a063b98c8187a8682dd669f Mon Sep 17 00:00:00 2001 From: jakebeal Date: Fri, 22 May 2015 21:27:14 -0500 Subject: [PATCH 170/317] minor corrections --- history.tex | 4 ++-- model.tex | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/history.tex b/history.tex index f8ddbf78..66994f8c 100644 --- a/history.tex +++ b/history.tex @@ -3,7 +3,7 @@ \section{A Brief History of SBOL} % ----------------------------------------------------------------------------- %Add yourself if you have helped and aren't on the list -In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. The original SBOL 1.0 was developed through his efforts together with the small group of dedicated researchers. An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group, including Cesar Rodriguez, Mandy Wilson, Jake Beal, Guy-Bart Stan, Chris Myers, and Nicholas Roehner, and the over all pace of development quickened. +In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. The original SBOL 1.0 was developed through his efforts together with the small group of dedicated researchers. An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group, including Cesar Rodriguez, Mandy Wilson, Jacob Beal, Guy-Bart Stan, Chris Myers, and Nicholas Roehner, and the over all pace of development quickened. At a meeting in San Diego in June 2011, the SBOL Developers Group was officially established, rules of governance were established, and the first SBOL editors were elected: Mike Galdzicki, Cesar Rodriguez, and Mandy Wilson. At this time, Allan Kuchinsky, a research scientist at Agilent, joined the effort, and he was able to obtain some support to begin what was to become libSBOLj. Kevin Clancy from LifeTechnologies also joined at this time, as well as, Anil Wipat, Matthew Pocock, and Goksel Misirli from Newcastle University. In October 2011, SBOL 1.0 was officially released. At our next meeting in Seattle in January 2012, Herbert Sauro was elected the SBOL Chair, and two new editors were added: Matthew Pocock and Ernst Oberortner. At this meeting, the first data exchange between software tools using SBOL was conducting when a design was passed from Newcastle University's VirtualParts Repository to Boston University's Eugene tool, and finally to University of Utah's iBioSim tool. @@ -11,7 +11,7 @@ \section{A Brief History of SBOL} In the Spring and Summer of 2014, several important events occurred. In April, several SBOL representatives attended Harmony in Manchester UK to discuss joining the COMBINE community, which was approved by both sides shortly thereafter. In May, Herbert Sauro, John Gennari, and Chris Myers received a grant from the National Science Foundation to support SBOL (this document and the supporting software are due in no small part to this support). In June, SBOL 1.1 was published in Nature Biotechnology \cite{NBT}. In July, Nicholas Roehner presented a proposal for the next version of SBOL at the SEED Conference in Los Angeles \cite{ACS}. Finally, in August 2014, the SBOL community attended their first COMBINE workshop as members of the COMBINE community. At this meeting, many of the final details of SBOL 2.0 were discussed, and the data model presented here is essentially the result of this meeting. -At this Harmony meeting in April 2014 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). +At this Harmony meeting in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). \Rtodo{The above text needs thorough review by those involved. Any key people missing from the text?} diff --git a/model.tex b/model.tex index 12e5365e..653b4c43 100644 --- a/model.tex +++ b/model.tex @@ -1284,7 +1284,7 @@ \subsection{Extending the SBOL Representation: Annotations} \label{sec:Annotations} \label{sec:annotations} -SBOL does not attempt to represent all information about a biological system, since many things do not yet have a clear ``right way'' to be represented, such as design intent, biological context, or performance data. Instead, SBOL allows the embedding of application specific data that are not captured by the SBOL standard. Such data are optional, but can be computationally generated and exchanged via SBOL documents without getting lost. +SBOL does not attempt to represent all information about a biological system, since many things do not yet have a clear ``right way'' to be represented, such as design intent, biological context, or performance data. Instead, SBOL allows the embedding of application specific data that are not captured by the SBOL standard. Such data are optional, but can be computationally generated and exchanged via SBOL documents without getting damaged or lost. To do this, SBOL provides an ``annotation'' mechanism for attaching arbitrary information to SBOL objects, which allows SBOL models to be connected with any other models in an extensible manner. In particular, three methods are supported for connecting the SBOL data model with other, possibly application-specific data: From b3dafc6e31ebf518a428704e097846b695672c67 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Fri, 22 May 2015 21:49:12 -0500 Subject: [PATCH 171/317] functional component --- model.tex | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/model.tex b/model.tex index 653b4c43..52a391ac 100644 --- a/model.tex +++ b/model.tex @@ -1023,20 +1023,26 @@ \subsubsection*{Serialization} \subsubsection{FunctionalComponent} \label{sec:FunctionalComponent} -Composition of the functional layer of SBOL designs is accomplished using \sbol{FunctionalComponent} objects. Each FunctionalComponent object is owned by a \sbol{ModuleDefinition} and serves as an explicit usage of a \sbol{ComponentDefinition} object for the purpose of fulfilling some function. +A \sbol{FunctionalComponent} is an instance of a \sbol{ComponentDefinition} being used as part of a \sbol{ModuleDefinition} +Each FunctionalComponent object is owned by a \sbol{ModuleDefinition} and serves as an explicit usage of a \sbol{ComponentDefinition} object for the purpose of fulfilling some function. -\sbol{FunctionalComponent} derives from \sbol{ComponentInstance}, and therefore has the definition and access properties. Additionally, it has a \sbol{direction} property that specifies whether it serves as an input, output, both, or neither for the \sbol{ModuleDefinition} that contains it. +\sbol{FunctionalComponent} derives from \sbol{ComponentInstance}, and therefore has the \sbol{definition}, \sbol{access}, and \sbol{mapsTo} properties. +Additionally, it has a \sbol{direction} property that specifies whether it serves as an input, output, both, or neither with regards to the \sbol{ModuleDefinition} that contains it. -\Ctodo{Previously said a Module could own a FunctionalComponet, which i'm pretty sure is false -JB Yes, it's false, fix it} +The purpose of \sbol{direction} is to encode a common way in which designers think about the ``purpose'' of a \sbol{FunctionalComponent} within a \sbol{ModuleDefinition}. +For example, consider a system that is designed to indicate concentration of the cell-cell signalling molecule 3OC$_6$HSL by the concentration of the product of a particular CDS. +In this system, the concentration of 3OC$_6$HSL is the signal being interpreted by the system, so the \sbol{FunctionalComponent} for 3OC$_6$HSL would have a \sbol{direction} of ``input.'' +Complementarily, the concentration of the designated product is the signal intended for consumption by other biologicals systems, and so the \sbol{FunctionalComponent} for that product would have a \sbol{direction} of ``output.'' +The CDS encoding the product, however, is not intended to interact directly, and so its \sbol{FunctionalComponent} would have a \sbol{direction} of ``neither.'' +Finally, in some cases a \sbol{FunctionalComponent} may serve as both an input and output, and be marked as having a \sbol{direction} of ``both.'' + +\Rtodo{Need to explain direction better. JSB: done} \paragraph{The \sbolheading{direction} property}\label{sec:direction} Each \sbol{FunctionalComponent} MUST specify via the \sbol{direction} property whether it serves as an input, output, both, or neither for its parent \sbol{ModuleDefinition} object. The value for this property MUST be one of the values given in \ref{tbl:functionalcomponent_directions}. -\LDtodo{Need to explain direction better.} - - \begin{table}[ht] \begin{edtable}{tabular}{ll} \toprule From 27bf2945a3e17a9c4d64eb6767e2546261a8f782 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Fri, 22 May 2015 22:01:02 -0500 Subject: [PATCH 172/317] Module --- model.tex | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/model.tex b/model.tex index 52a391ac..cf2e8382 100644 --- a/model.tex +++ b/model.tex @@ -1093,10 +1093,23 @@ \subsubsection{Module} \end{center} \end{figure} -The \sbol{Module} class enables the composition of \sbol{ModuleDefinition} objects from other, smaller \sbol{ModuleDefinition} objects. \textcolor{red}{The first data field, ``definition'', links to the ModuleDefinition object that is effectively a part of the Module object that owns the Module object.} The second data field, ``mappings'', is a set of MapsTo objects that link between the Component objects at the same level of the design hierarchy as the Module object and the Component objects that are lower in the design hierarchy, thereby composing these objects with greater specificity. +The \sbol{Module} class represents the usage or occurrence of a \sbol{ModuleDefinition} within a larger design (that is, another \sbol{ModuleDefinition}). -\Ctodo{need to clean up this whole description} -\Ctodo{Is the notion of ``level of design hierarchy'' real? I think it doesn't need to be stated here, it's actually a best practice. --> it's a best practice. Nick will write this better.} +\paragraph{The \sbolheading{definition} property} +\label{sec:definition} + +The \sbol{definition} property is a REQUIRED \external{URI} that refers to the \sbol{ModuleDefinition} for the \sbol{Module}. + +The \sbol{definition} property MUST NOT refer to the same \sbol{ModuleDefinition} as that which contains the \sbol{Module}. Furthermore, \sbol{Module} objects MUST NOT form a circular chain of references via their \sbol{definition} properties and the \sbol{ModuleDefinition} objects that contain them. For example, consider the \sbol{Module} objects $A$ and $B$ and the \sbol{ModuleDefinition} objects $X$ and $Y$. The reference chain ``$X$ contains $A$, $A$ is defined by $Y$, $Y$ contains $B$, and $B$ is defined by $X$'' is circular. + +\paragraph{The \sbolheading{mapsTo} property} +\label{sec:mapsTos} + +The \sbol{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects that refer to and link \sbol{Module} objects together within a larger design. + +\ref{sec:MapsTo} contains a detailed description of the \sbol{MapsTo} class. + +\Rtodo{need to clean up this whole description; JSB: done} \paragraph{Serialization} The serialization of \sbol{Module}s has the following form. @@ -1113,7 +1126,7 @@ \subsubsection{Module} The example below specifies a TetR inverter that is being used as a part of a toggle switch: -\Ctodo{I think a mapsTo in this example would be good.} +\Rtodo{I think a mapsTo in this example would be good. JSB: I don't think we need it, since we've got a nice description and examples in MapsTo} \lstsetsbol \begin{lstlisting} From 204ba0a10795f070098735877d72830fcc4fd43e Mon Sep 17 00:00:00 2001 From: jakebeal Date: Fri, 22 May 2015 23:07:13 -0500 Subject: [PATCH 173/317] moduledefinition --- model.tex | 53 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/model.tex b/model.tex index cf2e8382..fe21d927 100644 --- a/model.tex +++ b/model.tex @@ -929,7 +929,7 @@ \subsubsection*{Serialization} \subsection{ModuleDefinition} \label{sec:ModuleDefinition} -\Ctodo{This section has not been edited much compared to other sections. We need to explain classes and their properties a bit more in detail.} +\Rtodo{This section has not been edited much compared to other sections. We need to explain classes and their properties a bit more in detail. JSB: done} \begin{figure}[ht] \begin{center} @@ -939,39 +939,52 @@ \subsection{ModuleDefinition} \end{center} \end{figure} -The \sbol{ModuleDefinition} class is the hub where the structural and functional aspects of genetic designs come together to form a complete picture of the design. +The \sbol{ModuleDefinition} class is the hub where the structural and functional aspects of genetic designs are brought together to form a complete picture of the design. A \sbol{ModuleDefinition} object is composed from zero or more \sbol{FunctionalComponent}, \sbol{Module}, and \sbol{Interaction} objects, and links to zero or more \sbol{Model} objects. -A \sbol{ModuleDefinition} object relies on the ``direction'' data fields of its \sbol{FunctionalComponent} objects to specify whether they serve as its inputs or outputs. -\Ctodo{the direction bit needs to be said much more clearly} + +As an engineering object, a \sbol{ModuleDefinition} will often have certain of its \sbol{FunctionalComponent} objects that are intended to carry signals in or out of it. +This functionality of designated ``inputs'' and ``outputs'' is expressed by \sbol{direction} properties on its \sbol{FunctionalComponent} elements. + +\Rtodo{the direction bit needs to be said much more clearly. JSB: done} \subsubsection*{The \sbolheading{roles} property}\label{sec:roles} -This property is OPTIONAL and may include a set of URIs that specifies the intended use of a \sbol{ModuleDefinition} entity. -These URIs may identify terms for abstract module roles, such as``inverter'' or ``AND gate'', or they may identify terms for purely biological roles, such as ``metabolic pathway'' and ``signaling cascade''. -\Ctodo{make this sentence clearer} +The \sbol{roles} property is an OPTIONAL set of \external{URI}s that clarifies the intended function of a \sbol{ModuleDefinition} in a biological context. -\Ctodo{Make these more paralell to componentdefinition in the way that they are written} -\subsubsection*{The \sbolheading{models} property}\label{sec:models} -This property is OPTIONAL and includes identities of associated \sbol{Model} entities. +These terms might identify ``logical'' roles, such as ``inverter'' or ``AND gate'', or they might identify descriptive biological roles, such as ``metabolic pathway'' and ``signaling cascade,'' or might identify roles from some other manner of describing intended function. +\Ctodo{Do we have any ontology to recommend here? -JSB} -SBOL's \sbol{Model} objects are used to link genetic descriptions of biological parts and their interactions to computational models. -A ModuleDefinition object can link to more than one model since each one can encode different levels of functional detail and play different roles in engineering design. -\Ctodo{clarify this bit with a bit more explanation and better content} +\Rtodo{Make these more paralell to componentdefinition in the way that they are written. JSB: done} -\Ctodo{make sure submodules --> modules} +\Rtodo{make sure submodules --> modules; JSB: done} \subsubsection*{The \sbolheading{modules} property}\label{sec:modules} -This property is optional and includes a set of \sbol{Module} entities, which refer to \sbol{ModuleDefinition}s to be imported. -\Ctodo{use better language, like in componentdefinition} -\Ctodo{component --> functionalComponent in examples} +The \sbol{modules} property is OPTIONAL and MAY specify a set of \sbol{Module} objects contained by the \sbol{ModuleDefinition}. + +While the \sbol{ModuleDefinition} class is analogous to a blueprint or specification sheet for a system of interaction biological elements, the \sbol{Module} class represents the specific occurrence of a particular sub-system within that design. Hence, this class allows a biological design to include multiple copies of a subsystem. For example, the \sbol{ModuleDefinition} for a network of two-input repressor systems, where the particular repressors have not yet been chosen, contain multiple \sbol{Module} objects that refer to the same \external{URI} for the \sbol{ModuleDefinition} of an abstract two-input repressor device. + + \subsubsection*{The \sbolheading{functionalComponents} property} \label{sec:functionalComponents} -This property is optional and includes a set of \sbol{FunctionalComponent} entities. These entities are then used to describe biological interactions via \sbol{Participation} entities. -\Ctodo{use better language} +The \sbol{functionalComponents} property is OPTIONAL and MAY specify a set of \sbol{FunctionalComponent} objects contained by the \sbol{ModuleDefinition}. + +Just as a \sbol{Module} represents an instance of a subsystem in the ``blueprint'' of a \sbol{ModuleDefintion}, a \sbol{FunctionalComponent} represents an instance of an individual element whose \sbol{ComponentDefinition} may be used multiple times in a \sbol{ModuleDefinition}. For example, a \sbol{ModuleDefinition} might contain several copies of a particular promoter. + +\Rtodo{use better language; JSB: done} \subsubsection*{The \sbolheading{interactions} property}\label{sec:interactions} -This property is optional and includes a set of \sbol{Interaction} entities, which include \sbol{Participation} entities. + +The \sbol{interactions} property is OPTIONAL and MAY specify a set of \sbol{Interaction} objects contained by the \sbol{ModuleDefinition}. + +The \sbol{Interaction} class provides an abstract, machine-friendly representation of the functional interactions of entities within a \sbol{ModuleDefinition} (whereas a \sbol{Model} is concrete and may not be readily susceptible to machine reasoning, depending on how it is implemented). Each \sbol{Interaction} includes \sbol{Participation} entities that indicate the roles of the \sbol{FunctionalComponent} objects involved in the \sbol{Interaction} + +\subsubsection*{The \sbolheading{models} property}\label{sec:models} +The \sbol{models} property is OPTIONAL and MAY specify a set of \external{URI}s identifying \sbol{Model} objects. + +SBOL's \sbol{Model} objects are placeholders used to link specifications of biological parts and their interactions to computational models of arbitrary format. +A \sbol{ModuleDefinition} object can link to more than one \sbol{Model} since each might encode the same system in a different way or at a different level of detail. +\Rtodo{clarify this bit with a bit more explanation and better content. JSB: done} \subsubsection*{Serialization} From be8e2af3dfc13e08ee3e76d6e3e1a38eef4d21c6 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sat, 23 May 2015 04:49:31 +0000 Subject: [PATCH 174/317] Update on Overleaf. --- history.tex | 7 +++---- purpose.tex | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/history.tex b/history.tex index 66994f8c..2b0644cd 100644 --- a/history.tex +++ b/history.tex @@ -9,9 +9,8 @@ \section{A Brief History of SBOL} In March 2012, SBOL 1.1 was released, the version that this document replaces. The 8th SBOL workshop was held in November 2012 at Boston University, and the major topic of discussion was the next version of SBOL. SBOL 1.1 is limited to describing hierarchical DNA sequences. Several extensions were discussed at this meeting, such as a means to describe genetic regulation what later turned into interactions, and a means to group components what later turned into modules. In April 2013, at the 9th SBOL workshop at Newcastle University, the framework for SBOL 2.0 was agreed upon. Nicholas Roehner, Matthew Pocock, and Ernst Oberortner then began work to create a draft proposal for SBOL 2.0. In January 2014 at the 10th SBOL workshop, this draft was discussed and many refinements were debated and approved. Another important decision at this meeting was that SBOL should begin investigating joining the COMBINE community of standards. -In the Spring and Summer of 2014, several important events occurred. In April, several SBOL representatives attended Harmony in Manchester UK to discuss joining the COMBINE community, which was approved by both sides shortly thereafter. In May, Herbert Sauro, John Gennari, and Chris Myers received a grant from the National Science Foundation to support SBOL (this document and the supporting software are due in no small part to this support). In June, SBOL 1.1 was published in Nature Biotechnology \cite{NBT}. In July, Nicholas Roehner presented a proposal for the next version of SBOL at the SEED Conference in Los Angeles \cite{ACS}. Finally, in August 2014, the SBOL community attended their first COMBINE workshop as members of the COMBINE community. At this meeting, many of the final details of SBOL 2.0 were discussed, and the data model presented here is essentially the result of this meeting. +In the Spring and Summer of 2014, several important events occurred. In April, several SBOL representatives attended Harmony in Manchester UK to discuss joining the COMBINE community, which was approved by both sides shortly thereafter. In May, Herbert Sauro, John Gennari, and Chris Myers received a grant from the National Science Foundation to support SBOL (this document and the supporting software are due in no small part to this support). In June, a description and our initial, multi-institutional demonstration of the use of SBOL 1.1 was published in Nature Biotechnology \cite{NBT}. In July, Nicholas Roehner presented a proposal for the next version of SBOL at the SEED Conference in Los Angeles \cite{ACS}. Finally, in August 2014, the SBOL community attended their first COMBINE workshop as members of the COMBINE community. At this meeting, many of the final details of SBOL 2.0 were discussed, and the data model presented here is essentially the result of this meeting. -At this Harmony meeting in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). - -\Rtodo{The above text needs thorough review by those involved. Any key people missing from the text?} +At the Harmony meeting in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). +\Rtodo{The above text needs thorough review by those involved. Any key people missing from the text?} \ No newline at end of file diff --git a/purpose.tex b/purpose.tex index 2cdb4135..8e2dbe0f 100644 --- a/purpose.tex +++ b/purpose.tex @@ -42,4 +42,4 @@ \section{Purpose} As with the earlier SBOL 1.1 standard this community (open for any practitioner to join) has met to discuss, argue and agree upon needs that the SBOL standard should address. This information has then been used by developers within our community to design, develop and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects, as well as, the ability to share designs between different laboratories. The standard has also been used to develop software tools that employ the standard for developing and sharing synthetic design projects. -The publication of specification now share the details of the SBOL standard that have been worked out with the entire community of potential users and developers so it can be more widely employed through the scientific community. +The publication of specification now share the details of the SBOL standard that have been worked out with the entire community of potential users and developers so it can be more widely employed through the scientific community. \ No newline at end of file From b331924391831b386180b88a5ddcc8524298f828 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sat, 23 May 2015 05:41:33 +0000 Subject: [PATCH 175/317] Update on Overleaf. --- history.tex | 4 ++-- overview.tex | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/history.tex b/history.tex index 2b0644cd..c061d5bf 100644 --- a/history.tex +++ b/history.tex @@ -7,10 +7,10 @@ \section{A Brief History of SBOL} At a meeting in San Diego in June 2011, the SBOL Developers Group was officially established, rules of governance were established, and the first SBOL editors were elected: Mike Galdzicki, Cesar Rodriguez, and Mandy Wilson. At this time, Allan Kuchinsky, a research scientist at Agilent, joined the effort, and he was able to obtain some support to begin what was to become libSBOLj. Kevin Clancy from LifeTechnologies also joined at this time, as well as, Anil Wipat, Matthew Pocock, and Goksel Misirli from Newcastle University. In October 2011, SBOL 1.0 was officially released. At our next meeting in Seattle in January 2012, Herbert Sauro was elected the SBOL Chair, and two new editors were added: Matthew Pocock and Ernst Oberortner. At this meeting, the first data exchange between software tools using SBOL was conducting when a design was passed from Newcastle University's VirtualParts Repository to Boston University's Eugene tool, and finally to University of Utah's iBioSim tool. -In March 2012, SBOL 1.1 was released, the version that this document replaces. The 8th SBOL workshop was held in November 2012 at Boston University, and the major topic of discussion was the next version of SBOL. SBOL 1.1 is limited to describing hierarchical DNA sequences. Several extensions were discussed at this meeting, such as a means to describe genetic regulation what later turned into interactions, and a means to group components what later turned into modules. In April 2013, at the 9th SBOL workshop at Newcastle University, the framework for SBOL 2.0 was agreed upon. Nicholas Roehner, Matthew Pocock, and Ernst Oberortner then began work to create a draft proposal for SBOL 2.0. In January 2014 at the 10th SBOL workshop, this draft was discussed and many refinements were debated and approved. Another important decision at this meeting was that SBOL should begin investigating joining the COMBINE community of standards. +In March 2012, SBOL 1.1 was released, the version that this document replaces. The 8th SBOL workshop was held in November 2012 at Boston University, and the major topic of discussion was the next version of SBOL. SBOL 1.1 is limited to describing hierarchical DNA sequences. Several extensions were discussed at this meeting, such as a means to describe genetic regulation what later turned into interactions, and a means to group components what later turned into modules. In April 2013, at the 9th SBOL workshop at Newcastle University, the framework for SBOL 2.0 was agreed upon. Nicholas Roehner, Matthew Pocock, and Ernst Oberortner then began work to create a draft proposal for SBOL 2.0. In January 2014 at the 10th SBOL workshop, this draft was discussed and many refinements were debated and approved. Another important decision at this meeting was that SBOL should begin investigating joining the COMBINE community of standards. \Rtodo{doesn't COMBINE need a citation or a web page pointer? - jhg} In the Spring and Summer of 2014, several important events occurred. In April, several SBOL representatives attended Harmony in Manchester UK to discuss joining the COMBINE community, which was approved by both sides shortly thereafter. In May, Herbert Sauro, John Gennari, and Chris Myers received a grant from the National Science Foundation to support SBOL (this document and the supporting software are due in no small part to this support). In June, a description and our initial, multi-institutional demonstration of the use of SBOL 1.1 was published in Nature Biotechnology \cite{NBT}. In July, Nicholas Roehner presented a proposal for the next version of SBOL at the SEED Conference in Los Angeles \cite{ACS}. Finally, in August 2014, the SBOL community attended their first COMBINE workshop as members of the COMBINE community. At this meeting, many of the final details of SBOL 2.0 were discussed, and the data model presented here is essentially the result of this meeting. -At the Harmony meeting in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). +At the Harmony meeting \Rtodo{a citation or web page for Harmony too, eh? - jhg} in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). \Rtodo{The above text needs thorough review by those involved. Any key people missing from the text?} \ No newline at end of file diff --git a/overview.tex b/overview.tex index 095cbdea..1c8ce32c 100644 --- a/overview.tex +++ b/overview.tex @@ -2,12 +2,23 @@ \section{Overview of SBOL} % % ----------------------------------------------------------------------------- Synthetic designs need to convey three types of information: -\begin{enumerate} +\begin{itemize} \item The physical molecule, represented by a sequence or a chemical structure \item The functional role of the element in the design \item The functional consequence of this element within the overall design or the biological system where it will perform -\end{enumerate} -Typically, information about a designed genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. Interactions between these constituents are then used to construct biologically plausible designs. +\end{itemize} +In broad strokes, SBOL 1.1 describes the first of these, the physical information, whereas SBOL 2.0 extends the description of the design to include functional information. The physical information about a designed genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. However, functional descriptions of interactions among elements within a design, and functional descriptions of the overall system were missing in SBOL 1.1. + +\Rtodo {next two paragraphs are un-edited text provid by Kevin C. I will try to reduce these, without losing biological relevance.} + +As an example consider the cloning and expression cassette of a plasmid such as pUC18. The device has a number of parts, including a region of E.coli operon lac containing CAP protein binding site, promoter Plac, lac repressor binding site and 5’-terminal part of the lacZ gene encoding the N-terminal fragment of beta-galactosidase. This fragment, whose synthesis can be induced by the chemical IPTG, is capable of intra-allelic complementation with a defective form of beta-galactosidase encoded by host. In the presence of IPTG, bacteria synthesize both the device portion and the host specific fragments of the enzyme and form blue colonies on media containing the chemical X-gal. Insertion of DNA into the MCS located within the lacZ gene (codons 6-7 of lacZ are replaced by MCS) inactivates the N-terminal fragment of beta-galactosidase and abolishes alfa-complementation. Bacteria carrying recombinant plasmids therefore give rise to white colonies. This device and its usage is fundamental to how colony selection of recombinant plasmids is carried out in laboratories around the world. Understanding how such a device works and how it might be adapted to new experimental applications is currently passed on through working with fellow scientists or reading articles in papers and books. But there is no systematic way of communicating the integration of sequence with functional design, so users typically have to look in many different places to develop an understanding of this system. + +To adequately describe the functional design of this device it is necessary to include information on the physical elements of the design, such as the chemicals, proteins encoded both in the device and well as from the cell host, and complexes of these elements with each other. The design then needs to include information on the local interactions of the system such as IPTG complexing with the terameric repressor of the lac operon, or the lac repressor complexing with the lac repressor binding site. Finally the design needs to specify the models of the system such as consequence of the IPTG disrupting the tetrameric repressor ultimately leading to a working color selection system. The proposed standard is designed to permit users to incorporate as much or as little of this information as needed to share the physical structure of the device, the functional roles of each of the participating elements as well as the model of the overall system within the cell. + + +Figure 1 shows, at an abstract level, some of the important classes of information in SBOL. Figure 2 extends this view to provide a more detailed view of these classes. + +\Rtodo {...this section (obviously) under construction. Currently working on my view of Figures 1 and 2. - jhg} Figure 1 illustrates the relationships between the main classes of information encoded by SBOL. From 0d1c0f149473d9f849e51ad01ffceccd234fe054 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sat, 23 May 2015 17:52:10 +0000 Subject: [PATCH 176/317] Update on Overleaf. --- history.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/history.tex b/history.tex index c061d5bf..47a13272 100644 --- a/history.tex +++ b/history.tex @@ -7,10 +7,10 @@ \section{A Brief History of SBOL} At a meeting in San Diego in June 2011, the SBOL Developers Group was officially established, rules of governance were established, and the first SBOL editors were elected: Mike Galdzicki, Cesar Rodriguez, and Mandy Wilson. At this time, Allan Kuchinsky, a research scientist at Agilent, joined the effort, and he was able to obtain some support to begin what was to become libSBOLj. Kevin Clancy from LifeTechnologies also joined at this time, as well as, Anil Wipat, Matthew Pocock, and Goksel Misirli from Newcastle University. In October 2011, SBOL 1.0 was officially released. At our next meeting in Seattle in January 2012, Herbert Sauro was elected the SBOL Chair, and two new editors were added: Matthew Pocock and Ernst Oberortner. At this meeting, the first data exchange between software tools using SBOL was conducting when a design was passed from Newcastle University's VirtualParts Repository to Boston University's Eugene tool, and finally to University of Utah's iBioSim tool. -In March 2012, SBOL 1.1 was released, the version that this document replaces. The 8th SBOL workshop was held in November 2012 at Boston University, and the major topic of discussion was the next version of SBOL. SBOL 1.1 is limited to describing hierarchical DNA sequences. Several extensions were discussed at this meeting, such as a means to describe genetic regulation what later turned into interactions, and a means to group components what later turned into modules. In April 2013, at the 9th SBOL workshop at Newcastle University, the framework for SBOL 2.0 was agreed upon. Nicholas Roehner, Matthew Pocock, and Ernst Oberortner then began work to create a draft proposal for SBOL 2.0. In January 2014 at the 10th SBOL workshop, this draft was discussed and many refinements were debated and approved. Another important decision at this meeting was that SBOL should begin investigating joining the COMBINE community of standards. \Rtodo{doesn't COMBINE need a citation or a web page pointer? - jhg} +In March 2012, SBOL 1.1 was released, the version that this document replaces. The 8th SBOL workshop was held in November 2012 at Boston University, and the major topic of discussion was the next version of SBOL. SBOL 1.1 is limited to describing hierarchical DNA sequences. Several extensions were discussed at this meeting, such as a means to describe genetic regulation what later turned into interactions, and a means to group components what later turned into modules. In April 2013, at the 9th SBOL workshop at Newcastle University, the framework for SBOL 2.0 was agreed upon. Nicholas Roehner, Matthew Pocock, and Ernst Oberortner then began work to create a draft proposal for SBOL 2.0. In January 2014 at the 10th SBOL workshop, this draft was discussed and many refinements were debated and approved. Another important decision at this meeting was that SBOL should begin investigating joining the COMBINE community of standards (\url{www.co.mbine.org}). In the Spring and Summer of 2014, several important events occurred. In April, several SBOL representatives attended Harmony in Manchester UK to discuss joining the COMBINE community, which was approved by both sides shortly thereafter. In May, Herbert Sauro, John Gennari, and Chris Myers received a grant from the National Science Foundation to support SBOL (this document and the supporting software are due in no small part to this support). In June, a description and our initial, multi-institutional demonstration of the use of SBOL 1.1 was published in Nature Biotechnology \cite{NBT}. In July, Nicholas Roehner presented a proposal for the next version of SBOL at the SEED Conference in Los Angeles \cite{ACS}. Finally, in August 2014, the SBOL community attended their first COMBINE workshop as members of the COMBINE community. At this meeting, many of the final details of SBOL 2.0 were discussed, and the data model presented here is essentially the result of this meeting. -At the Harmony meeting \Rtodo{a citation or web page for Harmony too, eh? - jhg} in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). +At the Harmony meeting in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). \Rtodo{The above text needs thorough review by those involved. Any key people missing from the text?} \ No newline at end of file From 64208d9ed9cfa388873e5c00f6d1c187440e3f47 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 24 May 2015 17:58:21 +0000 Subject: [PATCH 177/317] Update on Overleaf. From ca6886d3c0d214df5de0d39a4f938bb62c8dd019 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Sun, 24 May 2015 16:22:49 -0500 Subject: [PATCH 178/317] working on authorship --- sbol2.tex | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/sbol2.tex b/sbol2.tex index 05707c63..9df3afc9 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -107,7 +107,7 @@ \packageTitle{\latex Class for SBML Package Specifications} \packageVersion{Version 2.0.0} -\packageVersionDate{24 April 2015} +\packageVersionDate{June XXX, 2015} \title{BBF RFC ?: Synthetic Biology Open Language \texorpdfstring{\\[3pt]}{}\mbox{(SBOL) Version~2.0.0}} @@ -125,23 +125,28 @@ } -\author{\begin{tabular}{l>{\hspace*{15pt}}r} -Bryan Bartley & \emph{University of Washington, US}\\ -Jacob Beal & \emph{Raytheon BBN Technologies, US}\\ -Kevin Clancy & \emph{ThermoFischer Scientific, US}\\ -Goksel Misirli & \emph{Newcastle University, GB}\\ -Nicholas Roehner & \emph{Boston University, US}\\ -Matthew Pocock & \emph{Newcastle University, GB}\\ -Curtis Madsen & \emph{Newcastle University, GB}\\ -Tramy Nguyen & \emph{University of Utah, US}\\ -Zhen Zhang & \emph{University of Utah, US}\\ -lots of other community members & all over the world\\ -Chris Myers & \emph{University of Utah, US}\\ -Anil Wipat & \emph{Newcastle University, GB}\\ -Herbert Sauro & \emph{University of Washington, US}\\[8pt] +\author{{\bf Editors:}\hfil\\ +\begin{tabular}{l>{\hspace*{15pt}}r} +Bryan Bartley & \emph{University of Washington, USA}\\ +Jacob Beal & \emph{Raytheon BBN Technologies, USA}\\ +Kevin Clancy & \emph{ThermoFischer Scientific, USA}\\ +Goksel Misirli & \emph{Newcastle University, UK}\\ +Nicholas Roehner & \emph{Boston University, USA}\\ \end{tabular}\\ -\href{mailto:editors@sbolstandard.org}{\sffamily editors@sbolstandard.org} -\LDtodo{What should be the authorship? -JSB}} +{\bf Chair:}\hfil\\ +\begin{tabular}{l>{\hspace*{15pt}}r} +Herbert Sauro & \emph{University of Washington, USA}\\[8pt] +\end{tabular}\\ +\href{mailto:editors@sbolstandard.org}{\sffamily editors@sbolstandard.org}\\ +\\ +{\bf Additional authors, by institution:}\\ +\begin{tabular}{l>{\hspace*{15pt}}r} +Curtis Madsen, Matthew Pocock, Anil Wipat & \emph{Newcastle University, UK}\\ +Tramy Nguyen, Zhen Zhang, Chris Myers & \emph{University of Utah, USA}\\ +\end{tabular}\\ +\Rtodo{I propose organizing authorship thus. Is it OK? -JSB}\\ +\Ctodo{Fill in all rest of authors here.} +} \maketitlepage \maketableofcontents From c319112b9913998a830ea5ff0455e4a4e7ebf86e Mon Sep 17 00:00:00 2001 From: jakebeal Date: Sun, 24 May 2015 23:04:01 -0500 Subject: [PATCH 179/317] fix bibliograph, undefined refs --- history.tex | 5 ++++- model.tex | 28 ++++++++++++++-------------- sbol.bib | 22 ++++++++++++++++++++++ 3 files changed, 40 insertions(+), 15 deletions(-) diff --git a/history.tex b/history.tex index 47a13272..2aefdcd4 100644 --- a/history.tex +++ b/history.tex @@ -9,7 +9,10 @@ \section{A Brief History of SBOL} In March 2012, SBOL 1.1 was released, the version that this document replaces. The 8th SBOL workshop was held in November 2012 at Boston University, and the major topic of discussion was the next version of SBOL. SBOL 1.1 is limited to describing hierarchical DNA sequences. Several extensions were discussed at this meeting, such as a means to describe genetic regulation what later turned into interactions, and a means to group components what later turned into modules. In April 2013, at the 9th SBOL workshop at Newcastle University, the framework for SBOL 2.0 was agreed upon. Nicholas Roehner, Matthew Pocock, and Ernst Oberortner then began work to create a draft proposal for SBOL 2.0. In January 2014 at the 10th SBOL workshop, this draft was discussed and many refinements were debated and approved. Another important decision at this meeting was that SBOL should begin investigating joining the COMBINE community of standards (\url{www.co.mbine.org}). -In the Spring and Summer of 2014, several important events occurred. In April, several SBOL representatives attended Harmony in Manchester UK to discuss joining the COMBINE community, which was approved by both sides shortly thereafter. In May, Herbert Sauro, John Gennari, and Chris Myers received a grant from the National Science Foundation to support SBOL (this document and the supporting software are due in no small part to this support). In June, a description and our initial, multi-institutional demonstration of the use of SBOL 1.1 was published in Nature Biotechnology \cite{NBT}. In July, Nicholas Roehner presented a proposal for the next version of SBOL at the SEED Conference in Los Angeles \cite{ACS}. Finally, in August 2014, the SBOL community attended their first COMBINE workshop as members of the COMBINE community. At this meeting, many of the final details of SBOL 2.0 were discussed, and the data model presented here is essentially the result of this meeting. +In the Spring and Summer of 2014, several important events occurred. In April, several SBOL representatives attended Harmony in Manchester UK to discuss joining the COMBINE community, which was approved by both sides shortly thereafter. In May, Herbert Sauro, John Gennari, and Chris Myers received a grant from the National Science Foundation to support SBOL (this document and the supporting software are due in no small part to this support). +In June, a description and our initial, multi-institutional demonstration of the use of SBOL 1.1 was published in Nature Biotechnology \cite{galdzicki2014synthetic}. +In July, Nicholas Roehner presented a proposal for the next version of SBOL at the SEED Conference in Los Angeles \cite{roehner2014proposed}. +Finally, in August 2014, the SBOL community attended their first COMBINE workshop as members of the COMBINE community. At this meeting, many of the final details of SBOL 2.0 were discussed, and the data model presented here is essentially the result of this meeting. At the Harmony meeting in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). diff --git a/model.tex b/model.tex index fe21d927..dc0e3782 100644 --- a/model.tex +++ b/model.tex @@ -50,8 +50,6 @@ \subsection{Naming and Font Conventions} \subsection{Data Types} \label{sec:datatypes} -\Rtodo{CJM - edited, needs review} - When SBOL use simple ``primitive'' data types such as strings or integers, these are defined as the following specific formal types: \begin{itemize} \item String: \url{http://www.w3.org/TR/xmlschema11-2/#string} @@ -433,8 +431,7 @@ \subsubsection{ComponentInstance} The \sbol{definition} property MUST NOT refer to the same \sbol{ComponentDefinition} as that which contains the \sbol{ComponentInstance}. Furthermore, \sbol{ComponentInstance} objects MUST NOT form a circular chain of references via their \sbol{definition} properties and the \sbol{ComponentDefinition} objects that contain them. For example, consider the \sbol{ComponentInstance} objects $A$ and $B$ and the \sbol{ComponentDefinition} objects $X$ and $Y$. The reference chain ``$X$ contains $A$, $A$ is defined by $Y$, $Y$ contains $B$, and $B$ is defined by $X$'' is circular. -\paragraph{The \sbolheading{mapsTo} property} -\label{sec:mapsTos} +\paragraph{The \sbolheading{mapsTos} property}\label{sec:mapsTos} The \sbol{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects that refer to and link \sbol{ComponentInstance} objects (both \sbol{Component} objects and \sbol{FunctionalComponent} objects) together within a larger design. @@ -461,7 +458,8 @@ \subsubsection{ComponentInstance} \label{tbl:componentInstance_access} \end{table} -Unless a designer has a reason to prevent other designers from accessing the \sbol{ComponentInstance} when their design is reused, it is RECOMMENDED that the \sbol{access} property of the \sbol{ComponentInstance} be set to public. For example, in order to avoid the retroactivity that might result from a \sbol{ComponentInstance} interacting with those in other designs, a designer might set the \sbol{access} of the \sbol{ComponentInstance} to private. +Unless a designer has a reason to prevent other designers from accessing the \sbol{ComponentInstance} when their design is reused, it is RECOMMENDED that the \sbol{access} property of the \sbol{ComponentInstance} be set to \external{public}. +For example, in order to avoid the retroactivity that might result from a \sbol{ComponentInstance} interacting with those in other designs, a designer might set the \sbol{access} of the \sbol{ComponentInstance} to private. \paragraph{Serialization} @@ -545,7 +543,7 @@ \subsubsection{MapsTo} This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``higher level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{local} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the owner of the \sbol{MapsTo} (either a \sbol{ComponentInstance} or \sbol{Module}). \paragraph{The \sbolheading{remote} property}\label{sec:remote} -This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``lower level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{remote} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that is the \sbol{definition} of the \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}. Finally, the \sbol{ComponentInstance} MUST have \sbol{public} \sbol{Access}. +This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``lower level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{remote} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that is the \sbol{definition} of the \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}. Finally, the \sbol{ComponentInstance} MUST have \external{public} \sbol{access}. \paragraph{The \sbolheading{refinement} property}\label{sec:refinement} Each \sbol{MapsTo} entity MUST specify the relationship between its \sbol{local} and \sbol{remote} components using the refinement property, using one of the values in \ref{tbl:mapsto_refinement}. @@ -969,7 +967,7 @@ \subsubsection*{The \sbolheading{functionalComponents} property} The \sbol{functionalComponents} property is OPTIONAL and MAY specify a set of \sbol{FunctionalComponent} objects contained by the \sbol{ModuleDefinition}. -Just as a \sbol{Module} represents an instance of a subsystem in the ``blueprint'' of a \sbol{ModuleDefintion}, a \sbol{FunctionalComponent} represents an instance of an individual element whose \sbol{ComponentDefinition} may be used multiple times in a \sbol{ModuleDefinition}. For example, a \sbol{ModuleDefinition} might contain several copies of a particular promoter. +Just as a \sbol{Module} represents an instance of a subsystem in the ``blueprint'' of a \sbol{ModuleDefinition}, a \sbol{FunctionalComponent} represents an instance of an individual element whose \sbol{ComponentDefinition} may be used multiple times in a \sbol{ModuleDefinition}. For example, a \sbol{ModuleDefinition} might contain several copies of a particular promoter. \Rtodo{use better language; JSB: done} @@ -1039,7 +1037,7 @@ \subsubsection{FunctionalComponent} A \sbol{FunctionalComponent} is an instance of a \sbol{ComponentDefinition} being used as part of a \sbol{ModuleDefinition} Each FunctionalComponent object is owned by a \sbol{ModuleDefinition} and serves as an explicit usage of a \sbol{ComponentDefinition} object for the purpose of fulfilling some function. -\sbol{FunctionalComponent} derives from \sbol{ComponentInstance}, and therefore has the \sbol{definition}, \sbol{access}, and \sbol{mapsTo} properties. +\sbol{FunctionalComponent} derives from \sbol{ComponentInstance}, and therefore has the \sbol{definition}, \sbol{access}, and \sbol{mapsTos} properties. Additionally, it has a \sbol{direction} property that specifies whether it serves as an input, output, both, or neither with regards to the \sbol{ModuleDefinition} that contains it. The purpose of \sbol{direction} is to encode a common way in which designers think about the ``purpose'' of a \sbol{FunctionalComponent} within a \sbol{ModuleDefinition}. @@ -1175,7 +1173,7 @@ \subsubsection{Interaction} \paragraph{The \sbolheading{participations} property}\label{sec:participations} -The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects, each of which identifies a \sbol{FunctionalComponent} and the \sbol{role} is plays in the interaction. +The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects, each of which identifies a \sbol{FunctionalComponent} and the \sbol{roles} is plays in the interaction. \paragraph{Serialization} @@ -1231,13 +1229,13 @@ \subsubsection{Participation} The \sbol{roles} property is an OPTIONAL set of URIs that identify an appropriate ontology term describing this elements relationship to its parent \sbol{Interaction}. If a \sbol{Participation} object has multiple -\sbol{role} URIs, then they must identify synonymous terms. +\sbol{roles} URIs, then they must identify synonymous terms. Values for this URI are RECOMMENDED to be chosen from the from the participant role branch of the Systems Biology Ontology (SBO) where possible. \paragraph{The \sbolheading{participant} property}\label{sec:participant} -The \sbol{participant} property MUST specify precisely one \sbol{FunctionalComponent} object that plays the designated \sbol{role} in its parent \sbol{Interaction} object. +The \sbol{participant} property MUST specify precisely one \sbol{FunctionalComponent} object that plays the designated \sbol{roles} in its parent \sbol{Interaction} object. \paragraph{Serialization} @@ -1279,7 +1277,7 @@ \subsubsection{Participation} \end{center} \end{figure} -\subsubsection*{The \sbolheading{members} property} +\subsubsection*{The \sbolheading{members} property}\label{sec:members} The \sbol{members} property has a data type of URI and has the URI for a \sbol{TopLevel} entity. A \sbol{Collection} may have any number of members, including none. \subsubsection*{Serialization} @@ -1331,9 +1329,11 @@ \subsubsection{Annotating SBOL objects} \label{sec:value} \label{sec:Annotation} \label{sec:AnnotationValue} -\label{sec:ListOfAnnotations} +\label{sec:NestedAnnotations} +\label{sec:nestedQName} +\label{sec:nestedURI} -Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. The \sbol{name} property is specified by a qualified name (\external{QName}), which is composed of a namespace, a prefix, and a local name. The \sbol{value} property can be a literal type (i.e., \external{String}, \external{Integer}, \external{Double}, \external{Boolean}), \external{URI}, or a \external{NestedAnnotations} object. The \external{NestedAnnotations} object is composed of a \sbol{nestedQName}, \sbol{nestedURI}, and an optional list of nested \sbol{annotations}. +Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. The \sbol{name} property is specified by a qualified name (\external{QName}), which is composed of a namespace, a prefix, and a local name. The \sbol{value} property can be a literal type (i.e., \external{String}, \external{Integer}, \external{Double}, \external{Boolean}), \external{URI}, or a \sbol{NestedAnnotations} object. The \sbol{NestedAnnotations} object is composed of a \sbol{nestedQName}, \sbol{nestedURI}, and an optional list of nested \sbol{annotations}. \Ctodo{NIC: Please update UML as follows: remove link from Identifed to AnnotationValue, change type of name to QName, add new class NestedAnnotations that inherits from AnnotationValue with properties nestedQName : QName, nestedURI : URI, and a 0..* annotations link to the Annotation class.} diff --git a/sbol.bib b/sbol.bib index 15dde443..b2347eb3 100644 --- a/sbol.bib +++ b/sbol.bib @@ -1,3 +1,25 @@ +@article{roehner2014proposed, + title={Proposed data model for the next version of the Synthetic Biology Open Language}, + author={Roehner, Nicholas and Oberortner, Ernst and Pocock, Matthew and Beal, Jacob and Clancy, Kevin and Madsen, Curtis and Misirli, Goksel and Wipat, Anil and Sauro, Herbert and Myers, Chris J}, + journal={ACS synthetic biology}, + year={2015}, + publisher={ACS Publications}, + volume=4, + number={1}, + pages={57--71} +} + +@article{galdzicki2014synthetic, + title={The Synthetic Biology Open Language (SBOL) provides a community standard for communicating designs in synthetic biology}, + author={Galdzicki, Michal and Clancy, Kevin P and Oberortner, Ernst and Pocock, Matthew and Quinn, Jacqueline Y and Rodriguez, Cesar A and Roehner, Nicholas and Wilson, Mandy L and Adam, Laura and Anderson, J Christopher and others}, + journal={Nature biotechnology}, + volume={32}, + number={6}, + pages={545--550}, + year={2014}, + publisher={Nature Publishing Group} +} + @article{canton-natbio-2008, author = "Barry Canton and Anna Labno and Drew Endy", title = "Refinement and standardization of synthetic biological parts and devices", From d636ed6c444c48e8ff279418ea52cc35c214bf0c Mon Sep 17 00:00:00 2001 From: John Gennari Date: Mon, 25 May 2015 16:43:42 +0000 Subject: [PATCH 180/317] Update on Overleaf. --- images/OverviewFigforSpec-v2.png | Bin 0 -> 8070 bytes overview.tex | 10 +++++++++- sbol2.tex | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 images/OverviewFigforSpec-v2.png diff --git a/images/OverviewFigforSpec-v2.png b/images/OverviewFigforSpec-v2.png new file mode 100644 index 0000000000000000000000000000000000000000..44be85a79896f94e3873fb45c78169ea9ee03642 GIT binary patch literal 8070 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 Date: Tue, 26 May 2015 03:18:14 +0000 Subject: [PATCH 181/317] Update on Overleaf. --- examples_serialization.tex | 6 ------ model.tex | 40 ++++++++++++-------------------------- practices.tex | 2 ++ 3 files changed, 14 insertions(+), 34 deletions(-) diff --git a/examples_serialization.tex b/examples_serialization.tex index 641b6753..4281eb6d 100644 --- a/examples_serialization.tex +++ b/examples_serialization.tex @@ -3,8 +3,6 @@ \section{Examples of Serialization} % ----------------------------------------------------------------------------- \subsection{PoPS Receiver} -\Ctodo{Make sure that these serializations are using the current and correct SBOL2.0 terms; at present they most certainly are not (e.g., subModule)} - This example shows the serialization of the PoPS Receiver device designed by Canton and co-workers~\cite{canton-natbio-2008}. In particular, this is a \sbol{ComponentDefinition} comprising five other \sbol{Components} to construct a detector for the cell-cell signaling molecule 3OC$_6$HSL. The five components are arranged in a sequence: @@ -13,8 +11,6 @@ \subsection{PoPS Receiver} % Complete details of the device can be found in the cited paper and also at \url{http://parts.igem.org/Part:BBa_F2620}. -\Rtodo{Add more description and ref; JSB: done} - \label{ser:F2620} \lstsetsbol \begin{lstlisting} @@ -231,8 +227,6 @@ \subsection{Toggle Switch} This example shows the serialization of an SBOL data model for a LacI/TetR toggle switch similar to those constructed in \cite{Gardner2000}. This design is essentially similar to the one presented in \ref{sec:examples}, except that it uses some alternate groupings in how the total design is built up out of smaller entities. -\Rtodo{Explain the example. JSB: done} - \label{ser:toggleswitch} \lstsetsbol \begin{lstlisting} diff --git a/model.tex b/model.tex index dc0e3782..8b519cb1 100644 --- a/model.tex +++ b/model.tex @@ -943,17 +943,12 @@ \subsection{ModuleDefinition} As an engineering object, a \sbol{ModuleDefinition} will often have certain of its \sbol{FunctionalComponent} objects that are intended to carry signals in or out of it. This functionality of designated ``inputs'' and ``outputs'' is expressed by \sbol{direction} properties on its \sbol{FunctionalComponent} elements. -\Rtodo{the direction bit needs to be said much more clearly. JSB: done} - \subsubsection*{The \sbolheading{roles} property}\label{sec:roles} -The \sbol{roles} property is an OPTIONAL set of \external{URI}s that clarifies the intended function of a \sbol{ModuleDefinition} in a biological context. +The \sbol{roles} property is an OPTIONAL set of \external{URI}s that clarifies the intended function of a \sbol{ModuleDefinition} in a biological context. These terms might identify ``logical'' roles, such as ``inverter'' or ``AND gate'', or they might identify descriptive biological roles, such as ``metabolic pathway'' and ``signaling cascade,'' or might identify roles from some other manner of describing intended function. -\Ctodo{Do we have any ontology to recommend here? -JSB} - -\Rtodo{Make these more paralell to componentdefinition in the way that they are written. JSB: done} -\Rtodo{make sure submodules --> modules; JSB: done} +\Ctodo{Do we have any ontology to recommend here? -JSB I don't believe so. -CJM} \subsubsection*{The \sbolheading{modules} property}\label{sec:modules} @@ -961,7 +956,6 @@ \subsubsection*{The \sbolheading{modules} property}\label{sec:modules} While the \sbol{ModuleDefinition} class is analogous to a blueprint or specification sheet for a system of interaction biological elements, the \sbol{Module} class represents the specific occurrence of a particular sub-system within that design. Hence, this class allows a biological design to include multiple copies of a subsystem. For example, the \sbol{ModuleDefinition} for a network of two-input repressor systems, where the particular repressors have not yet been chosen, contain multiple \sbol{Module} objects that refer to the same \external{URI} for the \sbol{ModuleDefinition} of an abstract two-input repressor device. - \subsubsection*{The \sbolheading{functionalComponents} property} \label{sec:functionalComponents} @@ -969,8 +963,6 @@ \subsubsection*{The \sbolheading{functionalComponents} property} Just as a \sbol{Module} represents an instance of a subsystem in the ``blueprint'' of a \sbol{ModuleDefinition}, a \sbol{FunctionalComponent} represents an instance of an individual element whose \sbol{ComponentDefinition} may be used multiple times in a \sbol{ModuleDefinition}. For example, a \sbol{ModuleDefinition} might contain several copies of a particular promoter. -\Rtodo{use better language; JSB: done} - \subsubsection*{The \sbolheading{interactions} property}\label{sec:interactions} The \sbol{interactions} property is OPTIONAL and MAY specify a set of \sbol{Interaction} objects contained by the \sbol{ModuleDefinition}. @@ -982,7 +974,6 @@ \subsubsection*{The \sbolheading{models} property}\label{sec:models} SBOL's \sbol{Model} objects are placeholders used to link specifications of biological parts and their interactions to computational models of arbitrary format. A \sbol{ModuleDefinition} object can link to more than one \sbol{Model} since each might encode the same system in a different way or at a different level of detail. -\Rtodo{clarify this bit with a bit more explanation and better content. JSB: done} \subsubsection*{Serialization} @@ -1040,15 +1031,6 @@ \subsubsection{FunctionalComponent} \sbol{FunctionalComponent} derives from \sbol{ComponentInstance}, and therefore has the \sbol{definition}, \sbol{access}, and \sbol{mapsTos} properties. Additionally, it has a \sbol{direction} property that specifies whether it serves as an input, output, both, or neither with regards to the \sbol{ModuleDefinition} that contains it. -The purpose of \sbol{direction} is to encode a common way in which designers think about the ``purpose'' of a \sbol{FunctionalComponent} within a \sbol{ModuleDefinition}. -For example, consider a system that is designed to indicate concentration of the cell-cell signalling molecule 3OC$_6$HSL by the concentration of the product of a particular CDS. -In this system, the concentration of 3OC$_6$HSL is the signal being interpreted by the system, so the \sbol{FunctionalComponent} for 3OC$_6$HSL would have a \sbol{direction} of ``input.'' -Complementarily, the concentration of the designated product is the signal intended for consumption by other biologicals systems, and so the \sbol{FunctionalComponent} for that product would have a \sbol{direction} of ``output.'' -The CDS encoding the product, however, is not intended to interact directly, and so its \sbol{FunctionalComponent} would have a \sbol{direction} of ``neither.'' -Finally, in some cases a \sbol{FunctionalComponent} may serve as both an input and output, and be marked as having a \sbol{direction} of ``both.'' - -\Rtodo{Need to explain direction better. JSB: done} - \paragraph{The \sbolheading{direction} property}\label{sec:direction} Each \sbol{FunctionalComponent} MUST specify via the \sbol{direction} property whether it serves as an input, output, both, or neither for its parent \sbol{ModuleDefinition} object. The value for this property MUST be one of the values given in \ref{tbl:functionalcomponent_directions}. @@ -1069,6 +1051,13 @@ \subsubsection{FunctionalComponent} \label{tbl:functionalcomponent_directions} \end{table} +The purpose of \sbol{direction} is to encode a common way in which designers think about the ``purpose'' of a \sbol{FunctionalComponent} within a \sbol{ModuleDefinition}. +For example, consider a system that is designed to indicate concentration of the cell-cell signalling molecule 3OC$_6$HSL by the concentration of the product of a particular CDS. +In this system, the concentration of 3OC$_6$HSL is the signal being interpreted by the system, so the \sbol{FunctionalComponent} for 3OC$_6$HSL would have a \sbol{direction} of ``input.'' +Complementarily, the concentration of the designated product is the signal intended for consumption by other biologicals systems, and so the \sbol{FunctionalComponent} for that product would have a \sbol{direction} of ``output.'' +The CDS encoding the product, however, is not intended to interact directly, and so its \sbol{FunctionalComponent} would have a \sbol{direction} of ``neither.'' +Finally, in some cases a \sbol{FunctionalComponent} may serve as both an input and output, and be marked as having a \sbol{direction} of ``both.'' + \paragraph{Serialization} The serialization of \sbol{FunctionalComponent}s has the following form. @@ -1120,8 +1109,6 @@ \subsubsection{Module} \ref{sec:MapsTo} contains a detailed description of the \sbol{MapsTo} class. -\Rtodo{need to clean up this whole description; JSB: done} - \paragraph{Serialization} The serialization of \sbol{Module}s has the following form. \lstsetsbol @@ -1137,8 +1124,6 @@ \subsubsection{Module} The example below specifies a TetR inverter that is being used as a part of a toggle switch: -\Rtodo{I think a mapsTo in this example would be good. JSB: I don't think we need it, since we've got a nice description and examples in MapsTo} - \lstsetsbol \begin{lstlisting} @@ -1158,7 +1143,6 @@ \subsubsection{Interaction} \end{center} \end{figure} -\Rtodo{Heavily rewrote this section. -JSB} The \sbol{Interaction} class provides a description of the functional interactions of entities within a \sbol{ModuleDefinition}. For example, it can be used to represent regulatory interactions, such as activation or repression, processes from the central dogma of biology, such as transcription and translation, or molecular interactions like non-covalent binding between a small molecule and transcription factor or phosphorylation of a transcription factor by an enzyme. Such an \sbol{Interaction} is represented in SBOL by referring to an ontology defining the type of interaction and declaring how various entities participate in the interaction. @@ -1169,11 +1153,11 @@ \subsubsection{Interaction} If an \sbol{Interaction} object has multiple \sbol{types} URIs, then they must identify synonymous terms. -Values for this URI are RECOMMENDED to be chosen from the from the occurring entity relationship branch of the Systems Biology Ontology (SBO), where possible. +Values for this URI are RECOMMENDED to be chosen from the occurring entity relationship branch of the Systems Biology Ontology (SBO), where possible. \paragraph{The \sbolheading{participations} property}\label{sec:participations} -The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects, each of which identifies a \sbol{FunctionalComponent} and the \sbol{roles} is plays in the interaction. +The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects, each of which identifies a \sbol{FunctionalComponent} and the \sbol{roles} it plays in the interaction. \paragraph{Serialization} @@ -1231,7 +1215,7 @@ \subsubsection{Participation} If a \sbol{Participation} object has multiple \sbol{roles} URIs, then they must identify synonymous terms. -Values for this URI are RECOMMENDED to be chosen from the from the participant role branch of the Systems Biology Ontology (SBO) where possible. +Values for this URI are RECOMMENDED to be chosen from the participant role branch of the Systems Biology Ontology (SBO) where possible. \paragraph{The \sbolheading{participant} property}\label{sec:participant} diff --git a/practices.tex b/practices.tex index ec49b679..d87eab7b 100644 --- a/practices.tex +++ b/practices.tex @@ -20,6 +20,8 @@ \subsection{Indicate Modification of Data with Version} \subsection{Compliant SBOL Objects} \label{sec:compliant} +\Rtodo{This section was revised recently to remove types which are no longer required. Would be good to have another set of eyes read it to be sure it is clear. -CJM} + Maintaining unique identity URIs for all SBOL objects is a very challenging implementation task. To reduce the developer's burden, users of SBOL 2.0 are encouraged to follow a few simple rules when constructing the identity and related fields for SBOL objects. When these rules are followed, we say that the SBOL object is \emph{compliant}. The rules are as follows: \begin{enumerate} \item The \sbol{identity} of an SBOL object should begin with a \emph{URI prefix} that maps to a domain over which the user has control. Namely, the user can guarantee uniqueness of identities within this domain. From b48190944cc3652b7ce543229e9e3a21c7f20f18 Mon Sep 17 00:00:00 2001 From: John Gennari Date: Tue, 26 May 2015 06:16:47 +0000 Subject: [PATCH 182/317] Update on Overleaf. --- images/OverviewFigforSpec-v3.png | Bin 0 -> 27202 bytes overview.tex | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 images/OverviewFigforSpec-v3.png diff --git a/images/OverviewFigforSpec-v3.png b/images/OverviewFigforSpec-v3.png new file mode 100644 index 0000000000000000000000000000000000000000..7eab8b520d3d3a84bae5e3ef0dea300673630202 GIT binary patch literal 27202 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 literal 0 HcmV?d00001 diff --git a/overview.tex b/overview.tex index c53f7731..b0f764c8 100644 --- a/overview.tex +++ b/overview.tex @@ -7,7 +7,7 @@ \section{Overview of SBOL} \item The functional role of the element in the design \item The functional consequence of this element within the overall design or the biological system where it will perform \end{itemize} -In broad strokes, SBOL 1.1 describes the first of these, the physical information, whereas SBOL 2.0 extends the description of the design to include functional information. The physical information about a designed genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. However, functional descriptions of interactions among elements within a design, and functional descriptions of the overall system were missing in SBOL 1.1. +In broad strokes, SBOL 1.1 describes the first of these, the physical information, whereas SBOL 2.0 extends the description of the design to include functional information. The physical information about a designed genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. However, SBOL 1.1 lacked the ability to describe functional interactions among elements within a design, nor functional descriptions of the overall system. \Rtodo {next two paragraphs are un-edited text provid by Kevin C. I will try to reduce these, without losing biological relevance.} @@ -27,8 +27,8 @@ \section{Overview of SBOL} \begin{figure}[ht] \begin{center} -\includegraphics[scale=0.5]{images/OverviewFigforSpec-v2.png} -\caption{Main classes of information represented by the SBOL standard, and their relationships. Red boxes are classes from the 1.1 version, while blue classes are the some of the new classes for this version of SBOL.} +\includegraphics[scale=0.5]{images/OverviewFigforSpec-v3.png} +\caption{Main classes of information represented by the SBOL standard, and their relationships. Red boxes are classes from the 1.1 version of SBOL that focused on structure, whereas blue classes are some of the new classes that support the functional aspects of designs.} \label{images:overview1} \end{center} \end{figure} From 89f75ac20bc33e2a69d00db7f5b9545079502b37 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Tue, 26 May 2015 14:19:26 +0000 Subject: [PATCH 183/317] Update on Overleaf. --- model.tex | 4 +--- practices.tex | 5 +---- sbol2.tex | 3 +-- serialization.tex | 24 +++++------------------- 4 files changed, 8 insertions(+), 28 deletions(-) diff --git a/model.tex b/model.tex index 8b519cb1..fdb7487c 100644 --- a/model.tex +++ b/model.tex @@ -927,8 +927,6 @@ \subsubsection*{Serialization} \subsection{ModuleDefinition} \label{sec:ModuleDefinition} -\Rtodo{This section has not been edited much compared to other sections. We need to explain classes and their properties a bit more in detail. JSB: done} - \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/module_definition} @@ -948,7 +946,7 @@ \subsubsection*{The \sbolheading{roles} property}\label{sec:roles} These terms might identify ``logical'' roles, such as ``inverter'' or ``AND gate'', or they might identify descriptive biological roles, such as ``metabolic pathway'' and ``signaling cascade,'' or might identify roles from some other manner of describing intended function. -\Ctodo{Do we have any ontology to recommend here? -JSB I don't believe so. -CJM} +\Rtodo{Do we have any ontology to recommend here? -JSB I don't believe so. -CJM} \subsubsection*{The \sbolheading{modules} property}\label{sec:modules} diff --git a/practices.tex b/practices.tex index d87eab7b..19ac5aa0 100644 --- a/practices.tex +++ b/practices.tex @@ -2,7 +2,7 @@ \section{Best Practices} \label{sec:bestpractices} % ----------------------------------------------------------------------------- -\subsection{Indicate Modification of Data with Version} +\subsection{Use of the Version Property} Once an SBOL object has been published where others might have accessed it (e.g., to an online repository), it may be the case that others make copies of the object or else come to depend on the particular contents of the object. Thus, in order to avoid confusion, if a person wants to change the properties of a published object, the best practice is to do so by making a new copy that incorporates the change, with a new URI. @@ -10,9 +10,6 @@ \subsection{Indicate Modification of Data with Version} As stated in \ref{sec:version}, it is RECOMMENDED that version numbering should follow the conventions of semantic versions (\url{http://semver.org/}), particularly as implemented by Maven (\url{http://maven.apache.org/}). This convention represents versions as sequences of numbers and qualifiers separated by the characters {\tt .} and {\tt -} and compared in lexicographical order (for example, 1 < 1.3.1 < 2.0-beta). For a full explanation, see the linked resources. -\Rtodo{try to target readers unfamiliar with RDF/XML. -bder; JSB: done} -\Rtodo{maybe clarify what type of versioning is this object affecting? TN JSB: done} - %% \subsection{Creation and Modification Dates} \NVtodo{Annotations: Annotating with created and modified dates, and how to add them. Is this section needed? -- CJM} diff --git a/sbol2.tex b/sbol2.tex index d9e31694..47a13ca9 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -144,11 +144,10 @@ Curtis Madsen, Matthew Pocock, Anil Wipat & \emph{Newcastle University, UK}\\ Tramy Nguyen, Zhen Zhang, Chris Myers & \emph{University of Utah, USA}\\ \end{tabular}\\ -\Rtodo{I propose organizing authorship thus. Is it OK? -JSB Yea, I really like the idea of listing editors and Chair first, and then others later. -- jhg}\\ \Ctodo{Fill in all rest of authors here.} } -\maketitlepage + \maketableofcontents \Rtodo{When editing, change the todos that you handle to ``Rtodo'' (``R'' for ``resolved''), rather than just deleting them, so that a second person can review} diff --git a/serialization.tex b/serialization.tex index 07331f03..7e547e51 100644 --- a/serialization.tex +++ b/serialization.tex @@ -3,44 +3,31 @@ \section{SBOL RDF Serialization} \label{sec:serialization} % ----------------------------------------------------------------------------- -\Rtodo{try to target readers unfamiliar with RDF/XML. -bder JSB: done, I think} - -In order for SBOL objects to be readily stored and exchanged, it is important that they be able to be {\em serialized}, i.e., converted to a sequence of bytes that can be stored in a file or exchanged over a network. - -The serialization format for SBOL is designed to meet several competing requirements. +In order for SBOL objects to be readily stored and exchanged, it is important that they be able to be {\em serialized}, i.e., converted to a sequence of bytes that can be stored in a file or exchanged over a network. The serialization format for SBOL is designed to meet several competing requirements. First, SBOL needs to support ad-hoc annotations and extensions. Second, SBOL needs to support processing by general database and semantic web software tools that have little or no knowledge of the SBOL data model. Finally, it should be relatively simple to write a new software implementation, so that SBOL can be readily used even in software environments where community-maintained implementations are not available. To meet these goals, the canonical serialization of SBOL has been selected to be a strict dialect of RDF/XML~\cite{rdfxml}, a syntactic standard defined for Semantic Web data exchange. This serialization provides a standard base from which to meet further requirements. -Moreover, it allows any RDF/XML-aware software tool to consume and operate on an SBOL file without needig any customization to support SBOL. -Where possible, we have re-used predicates from widely-used terminologies (such as Dublin Core~\cite{dcmi2012}) to expose as much of the data as practical to such standard RDF tooling. +Moreover, it allows any RDF/XML-aware software tool to consume and operate on an SBOL file without needing any customization to support SBOL. Where possible, we have re-used predicates from widely-used terminologies (such as Dublin Core~\cite{dcmi2012}) to expose as much of the data as practical to such standard RDF tooling. Arbitrary RDF/XML, however, provides a sometimes problematically large amount of flexibility in how equivalent data can be serialized. This flexibility can result in different serializations when processing RDF/XML files using standard off-the-shelf XML tools, such as DOM-OO mappings. -To simplify the issue, we define a canonical association between the nesting of data structures within the SBOL UML data model and the RDF/XML file. For all ownership associations (filled diamonds), the RDF/XML for the owned entity is embedded within the owner's RDF/XML (note, however, that the property values may be listed in any order). +To address this issue, we define a canonical association between the nesting of data structures within the SBOL UML data model and the RDF/XML file. For all ownership associations (filled diamonds), the RDF/XML for the owned entity is embedded within the owner's RDF/XML (note, however, that the property values may be listed in any order). For all associations that are by reference (open diamonds), the RDF/XML for the referenced property is linked via a resource URI. For example, the serialization of a \sbol{ComponentDefinition} embeds the serializations of the \sbol{SequenceConstraint} and \sbol{Component} objects associated with it. Those \sbol{SequenceConstraint} objects, however, link to the \sbol{Component} objects with a URI rather than embedding another copy. -\Rtodo{Perhaps add or reference an example of ownership vs referencing. - cm; JSB: done} -\Rtodo{GM: Add a statement to indicate that the order of properties is not important. JSB: done} -\Rtodo{This needs to be integrated with the rest JSB: done } -Every SBOL document must be a valid RDF/XML document. Accordingly, each SBOL document starts with an XML declaration that has its XML version set to ``1.0.'' As shown in the example below, this declaration is then followed by an \external{rdf:RDF} XML element that includes the namespace declarations for RDF and SBOL. SBOL namespace, which is \url{http://sbols.org/v2#}, is used to indicate which entities and properties in the SBOL document are defined by SBOL, and SHOULD NOT be used for any entities or properties not defined in this specification. +Every SBOL document must be a valid RDF/XML document. Accordingly, each SBOL document starts with an XML declaration that has its XML version set to ``1.0.'' As shown in the example below, this declaration is then followed by an \external{rdf:RDF} XML element that includes the namespace declarations for RDF, Dublin Core, PROV, and SBOL. The SBOL namespace, which is \url{http://sbols.org/v2#}, is used to indicate which entities and properties in the SBOL document are defined by SBOL, and SHOULD NOT be used for any entities or properties not defined in this specification. \label{xml-namespace} -\Ctodo{Should add dcterms and prov namespaces as required here.} - -\Rtodo{Need to state ``This is the SBOL2 namespace'' JSB: done} - \lstsetsbol \begin{lstlisting} - + ... \end{lstlisting} - All first-class SBOL data types (i.e., those enumerated in \ref{sec:model}) have an associated identifying URI. In the RDF, this is the resource URI used by instances of that type. For example, \sbol{ComponentDefinition} has the type URI \external{sbol:ComponentDefinition}. Properties and associations are then asserted as nested RDF/XML assertions. @@ -48,7 +35,6 @@ \section{SBOL RDF Serialization} All of the data types that are \sbol{TopLevel} are so named because they always appear at the top-most level of the RDF/XML serialization. All other datatypes will always appear nested within their parent container and, ultimately, some \sbol{TopLevel} object. For example, a \sbol{ComponentDefinition} is a \sbol{TopLevel} and therefore listed at the top-most level of the RDF/XML serialiation, and contains its \sbol{SequenceConstraint} objects, since they are not \sbol{TopLevel}. Its \sbol{Sequence}, however, is also \sbol{TopLevel} and is therefore not nested within and instead linked via a URI. - Each instance of a first-class SBOL datatype may also have annotations attached, as described in \ref{sec:Annotations}. These annotations are composed of a name and a value. They are serialized to RDF as a triple with the subject being the identity of the instance they annotate, the predicate being the name of the annotation, and the object being the value of that annotation. Annotation values are always nested within the RDF/XML serialization of the instance that they annotate. For example, a \sbol{ModuleDefinition} might add a DOI annotation that links to the scientific article that first described the system that it represents. From c25189a0da52600b3cf7d3bacef1d52fe4ca7f33 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 26 May 2015 09:45:24 -0500 Subject: [PATCH 184/317] resolve a TODO in model --- model.tex | 2 -- sbol2.tex | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/model.tex b/model.tex index fdb7487c..9d07bbb6 100644 --- a/model.tex +++ b/model.tex @@ -946,8 +946,6 @@ \subsubsection*{The \sbolheading{roles} property}\label{sec:roles} These terms might identify ``logical'' roles, such as ``inverter'' or ``AND gate'', or they might identify descriptive biological roles, such as ``metabolic pathway'' and ``signaling cascade,'' or might identify roles from some other manner of describing intended function. -\Rtodo{Do we have any ontology to recommend here? -JSB I don't believe so. -CJM} - \subsubsection*{The \sbolheading{modules} property}\label{sec:modules} The \sbol{modules} property is OPTIONAL and MAY specify a set of \sbol{Module} objects contained by the \sbol{ModuleDefinition}. diff --git a/sbol2.tex b/sbol2.tex index 47a13ca9..46f169cc 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -147,7 +147,7 @@ \Ctodo{Fill in all rest of authors here.} } - +\maketitlepage \maketableofcontents \Rtodo{When editing, change the todos that you handle to ``Rtodo'' (``R'' for ``resolved''), rather than just deleting them, so that a second person can review} From 5114e39b819ff21456c71408dd9ff289f857d8a6 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 26 May 2015 09:49:51 -0500 Subject: [PATCH 185/317] resolve practices Rtodo --- practices.tex | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/practices.tex b/practices.tex index 19ac5aa0..0e47d83d 100644 --- a/practices.tex +++ b/practices.tex @@ -17,8 +17,6 @@ \subsection{Use of the Version Property} \subsection{Compliant SBOL Objects} \label{sec:compliant} -\Rtodo{This section was revised recently to remove types which are no longer required. Would be good to have another set of eyes read it to be sure it is clear. -CJM} - Maintaining unique identity URIs for all SBOL objects is a very challenging implementation task. To reduce the developer's burden, users of SBOL 2.0 are encouraged to follow a few simple rules when constructing the identity and related fields for SBOL objects. When these rules are followed, we say that the SBOL object is \emph{compliant}. The rules are as follows: \begin{enumerate} \item The \sbol{identity} of an SBOL object should begin with a \emph{URI prefix} that maps to a domain over which the user has control. Namely, the user can guarantee uniqueness of identities within this domain. @@ -30,6 +28,9 @@ \subsection{Compliant SBOL Objects} \item The \sbol{version} of a compliant child object must be equal to the \sbol{version} of it parent object. \end{enumerate} +For examples, see any example in this specification, as all have been +formulated using compliant URIs. + \subsection{Annotations: Embedded Objects vs. External References} When annotating an SBOL model with additional information, there are From ef52b8bc881383a47b618166032c6c9521933c1d Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Tue, 26 May 2015 15:07:26 +0000 Subject: [PATCH 186/317] Update on Overleaf. --- examples_model.tex | 4 +--- model.tex | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/examples_model.tex b/examples_model.tex index 8f97f22e..8c5cd4ba 100644 --- a/examples_model.tex +++ b/examples_model.tex @@ -8,11 +8,9 @@ \section{Data Model Examples} This section illustrates how to use the SBOL data model by specifying the design of a LacI/TetR toggle switch similar to those constructed in \cite{Gardner2000}. This design is visualized conceptually in \ref{images:toggle} and in detail in \ref{images:toggleswitch_modular}. Conceptually, the toggle switch is constructed from two mutually repressing genes. -With strongly repressors LacI and TetR, this results in a bi-stable system that will tend to settle into a state where precisely one of the two repressors is strongly expressed, repressing the other. +With repressors LacI and TetR, this results in a bi-stable system that will tend to settle into a state where precisely one of the two repressors is strongly expressed, repressing the other. Each of these repressors can have its activity disrupted by a small molecule (IPTG for LacI, aTc for TetR), which allows the system to be ``toggled'' from one state to the other by dosing it with the appropriate small molecule. -\Rtodo{Add a standard toggle switch diagram of two things repressing each other and a simple explanation for people who do not already know the toggle switch. JSB: done} - \begin{figure}[ht] \begin{center} \includegraphics[scale=1.0]{images/toggle-highlevel.pdf} diff --git a/model.tex b/model.tex index 9d07bbb6..87c7a7c7 100644 --- a/model.tex +++ b/model.tex @@ -227,7 +227,7 @@ \subsubsection*{The \sbolheading{encoding} property} \label{sec:encoding} The \sbol{encoding} property is REQUIRED and has a data type of \external{URI}. This property is used to indicate how the \sbol{elements} property of a \sbol{Sequence} MUST be formed and interpreted. -For example, the \sbol{elements} property of a \sbol{Sequence} with an \external{IUPAC DNA} encoding property MUST contain characters that represent nucleotide bases, such as {\tt a}, {\tt t}, {\tt c}, and {\tt g}. The \sbol{elements} property of a \sbol{Sequence} with a \external{simplified molecular-input line-entry system (SMILES)} encoding, however, MUST contain characters that represent atoms and chemical bonds, such as {\tt C}, {\tt N}, {\tt O}, and {\tt =}. +For example, the \sbol{elements} property of a \sbol{Sequence} with an \external{IUPAC DNA} encoding property MUST contain characters that represent nucleotide bases, such as `{\tt a},' {\tt t}, {\tt c}, and {\tt g}. The \sbol{elements} property of a \sbol{Sequence} with a \external{simplified molecular-input line-entry system (SMILES)} encoding, however, MUST contain characters that represent atoms and chemical bonds, such as {\tt C}, {\tt N}, {\tt O}, and {\tt =}. \ref{tbl:sequence_encodings} provides a list of RECOMMENDED \external{URI}s for the \sbol{encoding} property. The terms in \ref{tbl:sequence_encodings} are organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that MUST refer to a \sbol{Sequence} with such an \sbol{encoding} (if it refers to any \sbol{Sequence} at all). When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \external{URI}s in \ref{tbl:sequence_encodings}, it MUST use that \external{URI} for this property. From 0b2dcd35fe35d9fe4aaab3c795c6001dcc856e0f Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Tue, 26 May 2015 15:08:45 +0000 Subject: [PATCH 187/317] Update on Overleaf. --- model.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model.tex b/model.tex index 87c7a7c7..8bab0673 100644 --- a/model.tex +++ b/model.tex @@ -227,7 +227,7 @@ \subsubsection*{The \sbolheading{encoding} property} \label{sec:encoding} The \sbol{encoding} property is REQUIRED and has a data type of \external{URI}. This property is used to indicate how the \sbol{elements} property of a \sbol{Sequence} MUST be formed and interpreted. -For example, the \sbol{elements} property of a \sbol{Sequence} with an \external{IUPAC DNA} encoding property MUST contain characters that represent nucleotide bases, such as `{\tt a},' {\tt t}, {\tt c}, and {\tt g}. The \sbol{elements} property of a \sbol{Sequence} with a \external{simplified molecular-input line-entry system (SMILES)} encoding, however, MUST contain characters that represent atoms and chemical bonds, such as {\tt C}, {\tt N}, {\tt O}, and {\tt =}. +For example, the \sbol{elements} property of a \sbol{Sequence} with an \external{IUPAC DNA} encoding property MUST contain characters that represent nucleotide bases, such as `{\tt a},' {\tt t}, {\tt c}, and {\tt g}. The \sbol{elements} property of a \sbol{Sequence} with a \external{simplified molecular-input line-entry system (SMILES)} encoding, on the other hand, MUST contain characters that represent atoms and chemical bonds, such as {\tt C}, {\tt N}, {\tt O}, and {\tt =}. \ref{tbl:sequence_encodings} provides a list of RECOMMENDED \external{URI}s for the \sbol{encoding} property. The terms in \ref{tbl:sequence_encodings} are organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that MUST refer to a \sbol{Sequence} with such an \sbol{encoding} (if it refers to any \sbol{Sequence} at all). When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \external{URI}s in \ref{tbl:sequence_encodings}, it MUST use that \external{URI} for this property. From ec90440dd5cdf03b9f5530b52746e173aca5e3f6 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Wed, 27 May 2015 00:44:34 +0000 Subject: [PATCH 188/317] Update on Overleaf. --- examples_serialization.tex | 1 + model.tex | 75 +++++++++++++++++++++----------------- 2 files changed, 43 insertions(+), 33 deletions(-) diff --git a/examples_serialization.tex b/examples_serialization.tex index 4281eb6d..ce9ddc40 100644 --- a/examples_serialization.tex +++ b/examples_serialization.tex @@ -1,5 +1,6 @@ % ----------------------------------------------------------------------------- \section{Examples of Serialization} +\label{ser:examples} % ----------------------------------------------------------------------------- \subsection{PoPS Receiver} diff --git a/model.tex b/model.tex index 8bab0673..bb7582d2 100644 --- a/model.tex +++ b/model.tex @@ -227,9 +227,9 @@ \subsubsection*{The \sbolheading{encoding} property} \label{sec:encoding} The \sbol{encoding} property is REQUIRED and has a data type of \external{URI}. This property is used to indicate how the \sbol{elements} property of a \sbol{Sequence} MUST be formed and interpreted. -For example, the \sbol{elements} property of a \sbol{Sequence} with an \external{IUPAC DNA} encoding property MUST contain characters that represent nucleotide bases, such as `{\tt a},' {\tt t}, {\tt c}, and {\tt g}. The \sbol{elements} property of a \sbol{Sequence} with a \external{simplified molecular-input line-entry system (SMILES)} encoding, on the other hand, MUST contain characters that represent atoms and chemical bonds, such as {\tt C}, {\tt N}, {\tt O}, and {\tt =}. +For example, the \sbol{elements} property of a \sbol{Sequence} with an \external{IUPAC DNA} encoding property MUST contain characters that represent nucleotide bases, such as `{\tt a},' `{\tt t},' `{\tt c},' and `{\tt g}.' The \sbol{elements} property of a \sbol{Sequence} with a \external{simplified molecular-input line-entry system (SMILES)} encoding, on the other hand, MUST contain characters that represent atoms and chemical bonds, such as `{\tt C},' `{\tt N},' `{\tt O},' and `{\tt =}.' -\ref{tbl:sequence_encodings} provides a list of RECOMMENDED \external{URI}s for the \sbol{encoding} property. The terms in \ref{tbl:sequence_encodings} are organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that MUST refer to a \sbol{Sequence} with such an \sbol{encoding} (if it refers to any \sbol{Sequence} at all). When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \external{URI}s in \ref{tbl:sequence_encodings}, it MUST use that \external{URI} for this property. +\ref{tbl:sequence_encodings} provides a list of RECOMMENDED \external{URI}s for the \sbol{encoding} property. The terms in \ref{tbl:sequence_encodings} are organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that typically refer to a \sbol{Sequence} with such an \sbol{encoding}. When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \external{URI}s in \ref{tbl:sequence_encodings}, it MUST use that \external{URI} for this property. %A Summary of letters for nucleic acids and aminoacids \begin{table}[ht] @@ -242,7 +242,7 @@ \subsubsection*{The \sbolheading{encoding} property} SMILES & \url{http://www.opensmiles.org/opensmiles.html} & SmallMolecule \\ \bottomrule \end{edtable} - \caption{RECOMMENDED \external{URI}s for specifying the \sbol{encoding} property of a \sbol{Sequence}, organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that MUST refer to a \sbol{Sequence} with such an \sbol{encoding} (if it refers to any \sbol{Sequence} at all).} + \caption{RECOMMENDED \external{URI}s for specifying the \sbol{encoding} property of a \sbol{Sequence}, organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that typically refer to a \sbol{Sequence} with such an \sbol{encoding}.} \label{tbl:sequence_encodings} \end{table} @@ -333,16 +333,18 @@ \subsubsection*{The \sbolheading{roles} property} Effector & \url{http://identifiers.org/chebi/CHEBI:35224} & Small Molecule \\ \bottomrule \end{edtable} - \caption{RECOMMENDED ontology terms to specify the \sbol{roles} property of a \sbol{ComponentDefinition}, organized by the type of \sbol{ComponentDefinition} to which they MUST apply (see \ref{tbl:componentdefinition_types}).} + \caption{RECOMMENDED ontology terms to specify the \sbol{roles} property of a \sbol{ComponentDefinition}, organized by the type of \sbol{ComponentDefinition} to which they should apply (see \ref{tbl:componentdefinition_types}).} \label{tbl:componentdefinition_roles} \end{table} +\Ctodo{Goksel to replace URI for Transcription Factor role with something more appropriate (currently is URI for the term ``transcription activity.''} + \subsubsection*{The \sbolheading{components} property} \label{sec:components} The \sbol{components} property is OPTIONAL and MAY specify a set of \sbol{Component} objects contained by its \sbol{ComponentDefinition}. -While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple copies of a particular part. For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \external{URI} for the \sbol{ComponentDefinition} of a CDS. +While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple copies of a particular part. For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \sbol{ComponentDefinition} of a CDS. \subsubsection*{The \sbolheading{sequences} property} \label{sec:sequences} @@ -350,7 +352,9 @@ \subsubsection*{The \sbolheading{sequences} property} Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the structure of a DNA \sbol{ComponentDefinition}, one that captures its primary structure at the level of nucleotide bases and one that captures its secondary and tertiary structure at the level of atoms and bonds. -If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, any two \sbol{Sequence} objects referred to by the same \sbol{ComponentDefinition} MUST NOT have the same \sbol{encoding}. Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbol{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that corresponds to this term (see \ref{tbl:sequence_encodings}). Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbol{types} property must refer to the corresponding term from \ref{tbl:componentdefinition_types}. For example, if the \sbol{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an an \external{IUPAC DNA} \sbol{encoding}, then its \sbol{types} property must refer to the BioPAX term for DNA. +If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In general, any two \sbol{Sequence} objects referred to by the same \sbol{ComponentDefinition} SHOULD NOT have the same \sbol{encoding}. + +Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbol{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that corresponds to this term (see \ref{tbl:sequence_encodings}). Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbol{types} property MUST refer to the corresponding term from \ref{tbl:componentdefinition_types}. For example, if the \sbol{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an an \external{IUPAC DNA} \sbol{encoding}, then its \sbol{types} property must refer to the BioPAX term for DNA. \subsubsection*{The \sbolheading{sequenceConstraints} property} \label{sec:sequenceConstraints} @@ -360,11 +364,13 @@ \subsubsection*{The \sbolheading{sequenceConstraints} property} \subsubsection*{The \sbolheading{sequenceAnnotations} property} \label{sec:sequenceAnnotations} -The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. Each \sbol{SequenceAnnotation} contains and describes a \sbol{Location} on a \sbol{Sequence} of the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} contained by the \sbol{ComponentDefinition} at the \sbol{Location} of the \sbol{SequenceAnnotation}. +The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. Each \sbol{SequenceAnnotation} specifies and describes a potentially discontiguous region on the \sbol{Sequence} objects referred to by the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} contained by the \sbol{ComponentDefinition} by means of its specified region. + +If the \sbol{ComponentDefinition} does not refer to any \sbol{Sequence} objects, then it MUST NOT contain any \sbol{SequenceAnnotation} that contains a non-\sbol{GenericLocation} (see \ref{sec:SequenceAnnotation} and \ref{sec:Location}). By contrast, if the \sbol{ComponentDefinition} does refer to one or more \sbol{Sequence} objects, then each of its \sbol{SequenceAnnotation} objects and their non-\sbol{GenericLocation} objects must cover a region on the \sbol{elements} of at least one such \sbol{Sequence}. \subsubsection*{Serialization} % The parent classes of the \sbol{ComponentDefinition} class are \sbol{TopLevel} and, transitively, \sbol{Identified}. As a result, inherited properties are serialized as explained for these parent classes. -The \sbol{sequences}, \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations} properties of a \sbol{ComponentDefinition} contain objects belonging to the appropriate SBOL classes as their values, while the \sbol{types} and \sbol{roles} properties contain \external{URI}s that identify ontology terms as their values. As shown in the example below, each one of these objects and \external{URI}s is serialized as part of an implicit set of SBOL properties with singular rather then plural names. Each object is serialized as a RDF/XML node nested within a property, while each \external{URI} is serialized as a \external{rdf:resource} on a property. +The \sbol{sequences}, \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations} properties of a \sbol{ComponentDefinition} contain objects belonging to the appropriate SBOL classes as their values, while the \sbol{types} and \sbol{roles} properties contain \external{URI}s that identify ontology terms as their values. As shown in the example below, each one of these objects and \external{URI}s is serialized as part of an implicit set of SBOL properties with singular rather then plural names. In particular, each object is serialized as a RDF/XML node nested within a singular property, while each \external{URI} is serialized as a \external{rdf:resource} on a singular property. \lstsetsbol \begin{lstlisting} @@ -427,20 +433,20 @@ \subsubsection{ComponentInstance} \paragraph{The \sbolheading{definition} property} \label{sec:definition} -The \sbol{definition} property is a REQUIRED \external{URI} that refers to the \sbol{ComponentDefinition} for the \sbol{ComponentInstance}. As described in the previous section, this \sbol{ComponentDefinition} effectively provides information about the \sbol{types} and \sbol{roles} of the \sbol{ComponentInstance}. +The \sbol{definition} property is a REQUIRED \external{URI} that refers to the \sbol{ComponentDefinition} of the \sbol{ComponentInstance}. As described in the previous section, this \sbol{ComponentDefinition} effectively provides information about the \sbol{types} and \sbol{roles} of the \sbol{ComponentInstance}. The \sbol{definition} property MUST NOT refer to the same \sbol{ComponentDefinition} as that which contains the \sbol{ComponentInstance}. Furthermore, \sbol{ComponentInstance} objects MUST NOT form a circular chain of references via their \sbol{definition} properties and the \sbol{ComponentDefinition} objects that contain them. For example, consider the \sbol{ComponentInstance} objects $A$ and $B$ and the \sbol{ComponentDefinition} objects $X$ and $Y$. The reference chain ``$X$ contains $A$, $A$ is defined by $Y$, $Y$ contains $B$, and $B$ is defined by $X$'' is circular. \paragraph{The \sbolheading{mapsTos} property}\label{sec:mapsTos} -The \sbol{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects that refer to and link \sbol{ComponentInstance} objects (both \sbol{Component} objects and \sbol{FunctionalComponent} objects) together within a larger design. +The \sbol{mapsTos} property is OPTIONAL and MAY contain a set of \sbol{MapsTo} objects that refer to and link together \sbol{ComponentInstance} objects (both \sbol{Component} objects and \sbol{FunctionalComponent} objects) within a larger design. \ref{sec:MapsTo} contains a more detailed description of the \sbol{MapsTo} class. \paragraph{The \sbolheading{access} property} \label{sec:access} -The \sbol{access} property is a REQUIRED \external{URI} that indicates whether a \sbol{ComponentInstance} +The \sbol{access} property is a REQUIRED \external{URI} that indicates whether the \sbol{ComponentInstance} can be referred to by a \sbol{MapsTo}. \ref{tbl:componentInstance_access} provides a list of REQUIRED \sbol{access} \external{URI}s. The value of the \sbol{access} property MUST be one of these \external{URI}s. @@ -454,21 +460,20 @@ \subsubsection{ComponentInstance} \url{http://sbols.org/v2#private} & The \sbol{ComponentInstance} MUST NOT be referred to by any \sbol{MapsTo} object. \\ \bottomrule \end{edtable} - \caption{\external{URI}s for the \sbol{access} property.} + \caption{REQUIRED \external{URI}s for the \sbol{access} property.} \label{tbl:componentInstance_access} \end{table} -Unless a designer has a reason to prevent other designers from accessing the \sbol{ComponentInstance} when their design is reused, it is RECOMMENDED that the \sbol{access} property of the \sbol{ComponentInstance} be set to \external{public}. -For example, in order to avoid the retroactivity that might result from a \sbol{ComponentInstance} interacting with those in other designs, a designer might set the \sbol{access} of the \sbol{ComponentInstance} to private. +Unless a designer has a reason to prevent others from accessing the \sbol{ComponentInstance} when their design is reused, it is RECOMMENDED that the \sbol{access} property of the \sbol{ComponentInstance} be set to ``public.'' +For example, a designer who is concerned about retroactivity may set the \sbol{access} of the \sbol{ComponentInstance} to ``private'' in order to prevent others from specifying its \sbol{Participation} in a new \sbol{Interaction} as part of a composite design. \paragraph{Serialization} No serialization is defined for the \sbol{ComponentInstance} class, since this class is only used indirectly through the \sbol{Component} and \sbol{FunctionalComponent} subclasses. - \subsubsection{Component} \label{sec:Component} -The \sbol{Component} class is used to compose \sbol{ComponentDefinition} objects into a structural hierarchy. For example, the \sbol{ComponentDefinition} of a gene could contain four \sbol{Component} objects, including a promoter, RBS, CDS, and terminator. The \sbol{ComponentDefinition} of the promoter \sbol{Component} could in turn contain \sbol{Component} objects defined as various operator sites. +The \sbol{Component} class is used to compose \sbol{ComponentDefinition} objects into a structural hierarchy. For example, the \sbol{ComponentDefinition} of a gene could contain four \sbol{Component} objects, including a promoter, RBS, CDS, and terminator. In turn, the \sbol{ComponentDefinition} of the promoter \sbol{Component} could contain \sbol{Component} objects defined as various operator sites. % All \sbol{Component} objects directly referenced within a \sbol{ComponentDefinition}'s \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} parts MUST be associated with that \sbol{ComponentDefinition} by means of its \sbol{components} property. @@ -512,7 +517,7 @@ \subsubsection{MapsTo} \end{center} \end{figure} -When \sbol{ComponentDefinition} and \sbol{ModuleDefinition} objects are composed into a hierarchy using \sbol{Module} and \sbol{ComponentInstance} objects, it is often the case that some \sbol{ComponentInstance} objects are intended to represent the same entity in the overall design. The purpose of the \sbol{MapsTo} class is to make these identity relationships clear and explicit. +When \sbol{ComponentDefinition} and \sbol{ModuleDefinition} objects are composed into a structural and functional hierarchies using \sbol{ComponentInstance} and \sbol{Module} objects, it is often the case that some \sbol{ComponentInstance} objects are intended to represent the same entity in the overall design. The purpose of the \sbol{MapsTo} class is to make these identity relationships clear and explicit. In particular, a \sbol{MapsTo} object provides two pieces of information: \begin{itemize} @@ -532,34 +537,34 @@ \subsubsection{MapsTo} To illustrate this concept, two examples are provided in \ref{image:maps_to_diagram2}, in which the \sbol{ComponentDefinition} of a transcriptional unit is specified by composing two ``lower level'' \sbol{ComponentDefinition} objects. In both examples, the two ``lower level'' \sbol{ComponentDefinition} objects each contain a RBS \sbol{Component} that is intended to represent the same design entity in the ``higher level'' \sbol{ComponentDefinition} of the transcriptional unit. -In order to explicitly represent these identity relationships, a new RBS \sbol{Component} must be created inside the ``higher level'' \sbol{ComponentDefinition}. -This ``higher level'' \sbol{Component} must then be linked to the equivalent ``lower level'' \sbol{Component} objects by means of the \sbol{MapsTo} class, using one \sbol{MapsTo} object per link. -For example, in order to link the ``higher level'' RBS \sbol{Component} of the transcriptional unit \sbol{ComponentDefinition} to the ``lower level'' RBS \sbol{Component} of the promoter-RBS \sbol{ComponentDefinition}, a \sbol{MapsTo} must be created on the ``higher level'' promoter-RBS \sbol{Component}. The \sbol{local} property of this \sbol{MapsTo} must then refer to the ``higher level'' RBS \sbol{Component}, while its \sbol{remote} property must refer to the ``lower level'' RBS \sbol{Component}. +In order to explicitly represent the identity relationships in this example, a new RBS \sbol{Component} needs to be created inside the ``higher level'' \sbol{ComponentDefinition}. +This ``higher level'' \sbol{Component} then needs to be linked to the equivalent ``lower level'' \sbol{Component} objects by means of the \sbol{MapsTo} class, using one \sbol{MapsTo} object per link. +For example, in order to link the ``higher level'' RBS \sbol{Component} to the ``lower level'' RBS \sbol{Component} of the promoter-RBS \sbol{ComponentDefinition}, a \sbol{MapsTo} must be created on the ``higher level'' promoter-RBS \sbol{Component}. The \sbol{local} property of this \sbol{MapsTo} must then refer to the ``higher level'' RBS \sbol{Component}, while its \sbol{remote} property must refer to the ``lower level'' RBS \sbol{Component}. In this way, many ``lower level'' \sbol{Component} objects can be linked together at the ``higher level'' using as an equal number of \sbol{MapsTo} objects, each one referring to a different \sbol{remote} \sbol{Component}, but all referring to the same \sbol{local} \sbol{Component}. -The same types of identity relationships can also be declared between \sbol{FunctionalComponent} objects contained by \sbol{ModuleDefinition} objects, or between \sbol{Component} objects contained by \sbol{ComponentDefinition} objects and \sbol{FunctionalComponent} objects contained by \sbol{ModuleDefinition} objects. See \ref{sec:examples} for additional examples using the \sbol{MapsTo} class. +The same types of identity relationships can also be declared between \sbol{FunctionalComponent} objects contained by \sbol{ModuleDefinition} objects, or between \sbol{Component} objects and \sbol{FunctionalComponent} objects contained by \sbol{ComponentDefinition} objects and \sbol{ModuleDefinition} objects, respectively. See \ref{sec:examples} and \ref{ser:examples} for additional examples using the \sbol{MapsTo} class. \paragraph{The \sbolheading{local} property}\label{sec:local} -This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``higher level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{local} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the owner of the \sbol{MapsTo} (either a \sbol{ComponentInstance} or \sbol{Module}). +This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``higher level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{local} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}. Finally, the \sbol{access} property of the \sbol{local} \sbol{ComponentInstance} MUST be set to ``public.'' \paragraph{The \sbolheading{remote} property}\label{sec:remote} -This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``lower level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{remote} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that is the \sbol{definition} of the \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}. Finally, the \sbol{ComponentInstance} MUST have \external{public} \sbol{access}. +This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``lower level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{remote} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that is the \sbol{definition} of the \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}. Lastly, the \sbol{access} property of the \sbol{remote} \sbol{ComponentInstance} MUST be set to ``public.'' \paragraph{The \sbolheading{refinement} property}\label{sec:refinement} -Each \sbol{MapsTo} entity MUST specify the relationship between its \sbol{local} and \sbol{remote} components using the refinement property, using one of the values in \ref{tbl:mapsto_refinement}. +The \sbol{refinement} property is REQUIRED and has a data type of \external{URI}. Each \sbol{MapsTo} object MUST specify the relationship between its \sbol{local} and \sbol{remote} \sbol{ComponentInstance} objects using one of the REQUIRED \sbol{refinement} \external{URI}s provided in \ref{tbl:mapsto_refinement}. \begin{table}[ht] \begin{edtable}{tabular}{lp{4in}} \toprule \textbf{Refinement URI} & \textbf{Description} \\ \midrule - \url{http://sbols.org/v2#useRemote} & Indicates that properties of the \sbol{ComponentInstance} from the \sbol{remote} are to be used, instead of the \sbol{local} \sbol{ComponentInstance}.\\ - \url{http://sbols.org/v2#useLocal} & Indicates that properties of the \sbol{ComponentInstance} from the \sbol{local} are to be used used, instead of the \sbol{remote} \sbol{ComponentInstance}.\\ - \url{http://sbols.org/v2#verifyIdentical} & Indicates that both \sbol{ComponentInstance} entities must link to the same \sbol{ComponentDefinition} object\\ - \url{http://sbols.org/v2#merge} & Indicates that data fields of the \sbol{local} and \sbol{remote} \sbol{ComponentInstance} entities are to be interpreted in combination\\ + \url{http://sbols.org/v2#useRemote} & All references to the \sbol{definition} property of the \sbol{local} \sbol{ComponentInstance} MUST dereference to that of the \sbol{remote} \sbol{ComponentInstance} instead.\\ + \url{http://sbols.org/v2#useLocal} & In the context of the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the owner of the \sbol{MapsTo}, all references to the \sbol{definition} property of the \sbol{remote} \sbol{ComponentInstance} MUST dereference to that of the \sbol{local} \sbol{ComponentInstance} instead.\\ + \url{http://sbols.org/v2#verifyIdentical} & The \sbol{definition} properties of the \sbol{local} and \sbol{remote} \sbol{ComponentInstance} objects MUST refer to the same \sbol{ComponentDefinition}.\\ + \url{http://sbols.org/v2#merge} & In the context of the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the owner of the \sbol{MapsTo}, all references to the \sbol{definition} property of the \sbol{local} \sbol{ComponentInstance} or that of the \sbol{remote} \sbol{ComponentInstance} MUST dereference to both such properties.\\ \bottomrule \end{edtable} - \caption{URIs for the \sbol{refinement} property.} + \caption{REQUIRED \external{URI}s for the \sbol{refinement} property.} \label{tbl:mapsto_refinement} \end{table} @@ -575,7 +580,7 @@ \subsubsection{MapsTo} \end{lstlisting} -In the example below, a \sbol{FunctionalComponent} entity from the submodule is linked to a \sbol{FunctionalComponent} entity in a parent module. The former is described in the imported \sbol{ModuleDefinition} entity which is referred to by the definition property of the \sbol{Module} entity. The latter is defined in the parent \sbol{ModuleDefinition}, importing the sub module. The full example can be found in \ref{ser:toggleswitch}. +In the example below, a \sbol{FunctionalComponent} in a ``lower level'' LacI inverter \sbol{ModuleDefinition} is linked to a \sbol{FunctionalComponent} in a ``higher level'' \sbol{ModuleDefinition} of a genetic toggle switch. The full example can be found in \ref{ser:toggleswitch}. \lstsetsbol \begin{lstlisting} @@ -590,7 +595,7 @@ \subsubsection{MapsTo} \subsubsection{SequenceAnnotation} \label{sec:SequenceAnnotation} -The \sbol{SequenceAnnotation} class describes a precisely known location of interest on the \sbol{Sequence} objects linked by its parent \sbol{ComponentDefinition} object. It can also optionally associate this location with a \sbol{Component} object. \sbol{SequenceAnnotation} objects specify their location using a set of \sbol{Location} objects, as described below. It is a set of location objects to allow the annotation of a non-contiguous location on a sequence. +The \sbol{SequenceAnnotation} class describes one or more regions of interest on the \sbol{Sequence} objects referred to by a parent \sbol{ComponentDefinition}. In addition, \sbol{SequenceAnnotation} objects can describe the substructure of their parent {ComponentDefinition} through their association with sub-\sbol{Component} objects. \begin{figure}[ht] \begin{center} @@ -602,10 +607,14 @@ \subsubsection{SequenceAnnotation} \paragraph{The \sbolheading{locations} property}\label{sec:locations} \label{sec:locations} -Every \sbol{SequenceAnnotation} MUST have at least one \sbol{Location} object in its set of \sbol{locations}. The value of this property is a nested \sbol{Location} object. +The \sbol{locations} property is a REQUIRED set of one or more \sbol{Location} objects that indicate which \sbol{elements} of a \sbol{Sequence} are described by the \sbol{SequenceAnnotation}. + +In general, these \sbol{Location} objects SHOULD NOT cover the same \sbol{Sequence} \sbol{elements}. \paragraph{The \sbolheading{component} property}\label{sec:component} -\sbol{SequenceAnnotation} objects MAY use this property to link location information to a \sbol{Component} object, by specifying its URI. +The \sbol{component} property is OPTIONAL and has a data type of \external{URI}. This \external{URI} MUST refer to a \sbol{Component} that is contained by the same parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. In this way, the properties of the \sbol{SequenceAnnotation}, such as its \sbol{description} and \sbol{locations}, are associated with part of its parent \sbol{ComponentDefinition}'s substructure. + +If the \sbol{SequenceAnnotation} contains a non-\sbol{GenericLocation}, then any \sbol{Component} it refers to MUST have a \sbol{ComponentDefinition} that refers to one or more \sbol{Sequence} objects. Furthermore, at least one these \sbol{Sequence} objects MUST have the same \sbol{encoding} as a \sbol{Sequence} of the parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. Finally, the non-\sbol{GenericLocation} objects of the \sbol{SequenceAnnotation} MUST precisely cover the \sbol{elements} of one of these \sbol{encoding}-matched \sbol{Sequence} objects. \paragraph{Serialization} From 089451095d375b074892aa303219ecf615f39627 Mon Sep 17 00:00:00 2001 From: John Gennari Date: Wed, 27 May 2015 04:20:05 +0000 Subject: [PATCH 189/317] Update on Overleaf. --- overview.tex | 2 ++ 1 file changed, 2 insertions(+) diff --git a/overview.tex b/overview.tex index b0f764c8..0e2f201e 100644 --- a/overview.tex +++ b/overview.tex @@ -11,6 +11,8 @@ \section{Overview of SBOL} \Rtodo {next two paragraphs are un-edited text provid by Kevin C. I will try to reduce these, without losing biological relevance.} + + As an example consider the cloning and expression cassette of a plasmid such as pUC18. The device has a number of parts, including a region of E.coli operon lac containing CAP protein binding site, promoter Plac, lac repressor binding site and 5’-terminal part of the lacZ gene encoding the N-terminal fragment of beta-galactosidase. This fragment, whose synthesis can be induced by the chemical IPTG, is capable of intra-allelic complementation with a defective form of beta-galactosidase encoded by host. In the presence of IPTG, bacteria synthesize both the device portion and the host specific fragments of the enzyme and form blue colonies on media containing the chemical X-gal. Insertion of DNA into the MCS located within the lacZ gene (codons 6-7 of lacZ are replaced by MCS) inactivates the N-terminal fragment of beta-galactosidase and abolishes alfa-complementation. Bacteria carrying recombinant plasmids therefore give rise to white colonies. This device and its usage is fundamental to how colony selection of recombinant plasmids is carried out in laboratories around the world. Understanding how such a device works and how it might be adapted to new experimental applications is currently passed on through working with fellow scientists or reading articles in papers and books. But there is no systematic way of communicating the integration of sequence with functional design, so users typically have to look in many different places to develop an understanding of this system. To adequately describe the functional design of this device it is necessary to include information on the physical elements of the design, such as the chemicals, proteins encoded both in the device and well as from the cell host, and complexes of these elements with each other. The design then needs to include information on the local interactions of the system such as IPTG complexing with the terameric repressor of the lac operon, or the lac repressor complexing with the lac repressor binding site. Finally the design needs to specify the models of the system such as consequence of the IPTG disrupting the tetrameric repressor ultimately leading to a working color selection system. The proposed standard is designed to permit users to incorporate as much or as little of this information as needed to share the physical structure of the device, the functional roles of each of the participating elements as well as the model of the overall system within the cell. From 514350f8262acafaaa231633c2054f5a62a3313f Mon Sep 17 00:00:00 2001 From: John Gennari Date: Wed, 27 May 2015 04:20:21 +0000 Subject: [PATCH 190/317] Update on Overleaf. --- overview.tex | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/overview.tex b/overview.tex index 0e2f201e..d9884908 100644 --- a/overview.tex +++ b/overview.tex @@ -11,6 +11,10 @@ \section{Overview of SBOL} \Rtodo {next two paragraphs are un-edited text provid by Kevin C. I will try to reduce these, without losing biological relevance.} +As an example, consider the design of an expression cassette, such as pUC18, a device that is designed to detect successful versus unsuccessful molecular cloning. As an overall system, the device is designed to grow either blue-colored (unsuccessful) vs white-colored (successful) colonies in the presence of IPGT and the chemical X-gal. Internally, the device has a number of parts, including a promoter, the lac repressor binding site, and the lacZ coding sequence. These parts have specific component-level interactions with IPGT and X-gal that collectively lead to the desired system-level behavior. + +Understanding how such a device works and how it might be adapted to new experimental applications is currently passed on through working with fellow scientists or reading articles in papers and books. But there is no systematic way of communicating the integration of sequence with functional design, so users typically have to look in many different places to develop an understanding of this system. +The SBOL standard allows designers to describe these functional characteristics, and to connect them to the physical parts and sequences that make up the design. As an example consider the cloning and expression cassette of a plasmid such as pUC18. The device has a number of parts, including a region of E.coli operon lac containing CAP protein binding site, promoter Plac, lac repressor binding site and 5’-terminal part of the lacZ gene encoding the N-terminal fragment of beta-galactosidase. This fragment, whose synthesis can be induced by the chemical IPTG, is capable of intra-allelic complementation with a defective form of beta-galactosidase encoded by host. In the presence of IPTG, bacteria synthesize both the device portion and the host specific fragments of the enzyme and form blue colonies on media containing the chemical X-gal. Insertion of DNA into the MCS located within the lacZ gene (codons 6-7 of lacZ are replaced by MCS) inactivates the N-terminal fragment of beta-galactosidase and abolishes alfa-complementation. Bacteria carrying recombinant plasmids therefore give rise to white colonies. This device and its usage is fundamental to how colony selection of recombinant plasmids is carried out in laboratories around the world. Understanding how such a device works and how it might be adapted to new experimental applications is currently passed on through working with fellow scientists or reading articles in papers and books. But there is no systematic way of communicating the integration of sequence with functional design, so users typically have to look in many different places to develop an understanding of this system. From f4660735ab713beb1ab67d18a2f28d1cd092c183 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 27 May 2015 14:17:22 +0000 Subject: [PATCH 191/317] Update on Overleaf. --- model.tex | 20 +++++++++++-------- overview.tex | 55 ++++++++++++++++++++++++++++++++++------------------ 2 files changed, 48 insertions(+), 27 deletions(-) diff --git a/model.tex b/model.tex index bb7582d2..f9d5bea8 100644 --- a/model.tex +++ b/model.tex @@ -227,7 +227,7 @@ \subsubsection*{The \sbolheading{encoding} property} \label{sec:encoding} The \sbol{encoding} property is REQUIRED and has a data type of \external{URI}. This property is used to indicate how the \sbol{elements} property of a \sbol{Sequence} MUST be formed and interpreted. -For example, the \sbol{elements} property of a \sbol{Sequence} with an \external{IUPAC DNA} encoding property MUST contain characters that represent nucleotide bases, such as `{\tt a},' `{\tt t},' `{\tt c},' and `{\tt g}.' The \sbol{elements} property of a \sbol{Sequence} with a \external{simplified molecular-input line-entry system (SMILES)} encoding, on the other hand, MUST contain characters that represent atoms and chemical bonds, such as `{\tt C},' `{\tt N},' `{\tt O},' and `{\tt =}.' +For example, the \sbol{elements} property of a \sbol{Sequence} with an \external{IUPAC DNA} encoding property MUST contain characters that represent nucleotide bases, such as `{\tt a},' `{\tt t},' `{\tt c},' and `{\tt g}.' The \sbol{elements} property of a \sbol{Sequence} with a \external{Simplified Molecular-Input Line-Entry System (SMILES)} encoding, on the other hand, MUST contain characters that represent atoms and chemical bonds, such as `{\tt C},' `{\tt N},' `{\tt O},' and `{\tt =}.' \ref{tbl:sequence_encodings} provides a list of RECOMMENDED \external{URI}s for the \sbol{encoding} property. The terms in \ref{tbl:sequence_encodings} are organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that typically refer to a \sbol{Sequence} with such an \sbol{encoding}. When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \external{URI}s in \ref{tbl:sequence_encodings}, it MUST use that \external{URI} for this property. @@ -294,7 +294,7 @@ \subsubsection*{The \sbolheading{types} property} The \sbol{types} property is a REQUIRED set of \external{URI}s that specifies the category of biochemical or physical entity (for example DNA, protein, or small molecule) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. -The \sbol{types} property of every \sbol{ComponentDefinition} MUST contain a set of \external{URI}s that MUST identify terms from appropriate ontologies, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). \ref{tbl:componentdefinition_types} provides a list of RECOMMENDED ontology terms for the \sbol{types} property and their \external{URI}s. In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbol{types}. Finally, if the \sbol{types} property contains multiple \external{URIs}, then they MUST identify synonymous terms. +The \sbol{types} property of every \sbol{ComponentDefinition} MUST contain one or more \external{URI}s that MUST identify terms from appropriate ontologies, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). \ref{tbl:componentdefinition_types} provides a list of RECOMMENDED ontology terms for the \sbol{types} property and their \external{URI}s. In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbol{types}. Finally, if the \sbol{types} property contains multiple \external{URIs}, then they MUST identify synonymous terms. \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -316,7 +316,7 @@ \subsubsection*{The \sbolheading{roles} property} The \sbol{roles} property is an OPTIONAL set of \external{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} in a biological context. -The \sbol{roles} property of a \sbol{ComponentDefinition} MAY contain a set of \external{URI}s that MUST identify terms from ontologies that are consistent with the \sbol{types} property of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} could contain \external{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbol{roles} property and their \external{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). As with the \sbol{types} property, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use that term as one of its \sbol{roles}. +The \sbol{roles} property of a \sbol{ComponentDefinition} MAY contain one or more \external{URI}s that MUST identify terms from ontologies that are consistent with the \sbol{types} property of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} could contain \external{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbol{roles} property and their \external{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). Any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use that term as one of its \sbol{roles}. \begin{table}[ht] \begin{edtable}{tabular}{lll} @@ -346,15 +346,19 @@ \subsubsection*{The \sbolheading{components} property} While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple copies of a particular part. For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \sbol{ComponentDefinition} of a CDS. +If the \sbol{ComponentDefinition} refers to one or \sbol{Sequence} objects, then at least one of these \sbol{Sequence} objects MUST have the same \sbol{encoding} as a \sbol{Sequence} from each \sbol{ComponentDefinition} of its \sbol{Component} objects. In addition, it MUST be possible to align the \sbol{elements} of the latter \sbol{encoding}-matched \sbol{Sequence} objects to the former. For example, a DNA \sbol{ComponentDefinition} could have a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and \sbol{elements} ``{\tt gattaca}.'' Any \sbol{Component} contained by this \sbol{ComponentDefinition} would then need to have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and \sbol{elements} that can be aligned with ``{\tt gattaca},'' such as ``{\tt gatta}'' or ``{\tt ttaca}.'' + +% Furthermore, this \sbol{Sequence} MUST have the same \external{IUPAC} \sbol{encoding} as a \sbol{Sequence} of the parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. + \subsubsection*{The \sbolheading{sequences} property} \label{sec:sequences} The \sbol{sequences} property is OPTIONAL and MAY include a set of \external{URI}s that refer to \sbol{Sequence} objects. These objects define the primary structure of the \sbol{ComponentDefinition}. Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the structure of a DNA \sbol{ComponentDefinition}, one that captures its primary structure at the level of nucleotide bases and one that captures its secondary and tertiary structure at the level of atoms and bonds. -If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In general, any two \sbol{Sequence} objects referred to by the same \sbol{ComponentDefinition} SHOULD NOT have the same \sbol{encoding}. +If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} (see \ref{tbl:sequence_encodings}). -Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbol{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that corresponds to this term (see \ref{tbl:sequence_encodings}). Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbol{types} property MUST refer to the corresponding term from \ref{tbl:componentdefinition_types}. For example, if the \sbol{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an an \external{IUPAC DNA} \sbol{encoding}, then its \sbol{types} property must refer to the BioPAX term for DNA. +Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbol{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of these \sbol{Sequence} objects MUST have the \sbol{encoding} from \ref{tbl:sequence_encodings} that corresponds to this term. Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbol{types} property MUST refer to the corresponding term from \ref{tbl:componentdefinition_types}. For example, if the \sbol{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an an \external{IUPAC DNA} \sbol{encoding}, then its \sbol{types} property must refer to the BioPAX term for DNA. \subsubsection*{The \sbolheading{sequenceConstraints} property} \label{sec:sequenceConstraints} @@ -364,9 +368,9 @@ \subsubsection*{The \sbolheading{sequenceConstraints} property} \subsubsection*{The \sbolheading{sequenceAnnotations} property} \label{sec:sequenceAnnotations} -The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. Each \sbol{SequenceAnnotation} specifies and describes a potentially discontiguous region on the \sbol{Sequence} objects referred to by the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} contained by the \sbol{ComponentDefinition} by means of its specified region. +The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. Each \sbol{SequenceAnnotation} specifies and describes a potentially discontiguous region on the \sbol{Sequence} objects referred to by the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at the region specified by its \sbol{Location} objects (see \ref{sec:Location}). -If the \sbol{ComponentDefinition} does not refer to any \sbol{Sequence} objects, then it MUST NOT contain any \sbol{SequenceAnnotation} that contains a non-\sbol{GenericLocation} (see \ref{sec:SequenceAnnotation} and \ref{sec:Location}). By contrast, if the \sbol{ComponentDefinition} does refer to one or more \sbol{Sequence} objects, then each of its \sbol{SequenceAnnotation} objects and their non-\sbol{GenericLocation} objects must cover a region on the \sbol{elements} of at least one such \sbol{Sequence}. +If the \sbol{ComponentDefinition} does not refer to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then it MUST NOT contain any \sbol{SequenceAnnotation} with a \sbol{Range} or \sbol{Cut} \sbol{Location}. By contrast, if the \sbol{ComponentDefinition} does refer to a \sbol{Sequence} with an \sbol{IUPAC} \sbol{encoding}, then each \sbol{SequenceAnnotation} it contains with a \sbol{Range} and/or \sbol{Cut} MUST cover a region on the \sbol{elements} of this \sbol{Sequence}. For example, the \sbol{ComponentDefinition} of a eukaryotic gene could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. In order to specify the discontiguous region occupied by its CDS, this gene \sbol{ComponentDefinition} would need a \sbol{SequenceAnnotation} that contains one or more \sbol{Range} objects, each one specifying \sbol{start} and \sbol{end} positions that are consistent with the \sbol{elements} of its DNA \sbol{Sequence}. \subsubsection*{Serialization} % The parent classes of the \sbol{ComponentDefinition} class are \sbol{TopLevel} and, transitively, \sbol{Identified}. As a result, inherited properties are serialized as explained for these parent classes. @@ -614,7 +618,7 @@ \subsubsection{SequenceAnnotation} \paragraph{The \sbolheading{component} property}\label{sec:component} The \sbol{component} property is OPTIONAL and has a data type of \external{URI}. This \external{URI} MUST refer to a \sbol{Component} that is contained by the same parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. In this way, the properties of the \sbol{SequenceAnnotation}, such as its \sbol{description} and \sbol{locations}, are associated with part of its parent \sbol{ComponentDefinition}'s substructure. -If the \sbol{SequenceAnnotation} contains a non-\sbol{GenericLocation}, then any \sbol{Component} it refers to MUST have a \sbol{ComponentDefinition} that refers to one or more \sbol{Sequence} objects. Furthermore, at least one these \sbol{Sequence} objects MUST have the same \sbol{encoding} as a \sbol{Sequence} of the parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. Finally, the non-\sbol{GenericLocation} objects of the \sbol{SequenceAnnotation} MUST precisely cover the \sbol{elements} of one of these \sbol{encoding}-matched \sbol{Sequence} objects. +If the \sbol{SequenceAnnotation} contains a \sbol{Range} or \sbol{Cut} \sbol{Location} (see \ref{sec:Location}), then any \sbol{Component} it refers to MUST have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}. \paragraph{Serialization} diff --git a/overview.tex b/overview.tex index d9884908..2a25bb37 100644 --- a/overview.tex +++ b/overview.tex @@ -1,43 +1,60 @@ % % ----------------------------------------------------------------------------- \section{Overview of SBOL} % % ----------------------------------------------------------------------------- -Synthetic designs need to convey three types of information: +Synthetic biology designs need to convey three types of information for each component in the design: \begin{itemize} -\item The physical molecule, represented by a sequence or a chemical structure -\item The functional role of the element in the design -\item The functional consequence of this element within the overall design or the biological system where it will perform +\item Its physical structure, represented by a sequence or its chemical makeup. +\item Its functional role within the design. +\item The functional consequence of this component within the overall design or the biological system where it will perform . \end{itemize} -In broad strokes, SBOL 1.1 describes the first of these, the physical information, whereas SBOL 2.0 extends the description of the design to include functional information. The physical information about a designed genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. However, SBOL 1.1 lacked the ability to describe functional interactions among elements within a design, nor functional descriptions of the overall system. +In broad strokes, SBOL 1.1 describes the first of these, the physical information, and only for components constructed from DNA. The physical information about a designed genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. However, SBOL 1.1 lacked the ability to describe functional interactions among elements within a design, nor functional descriptions of the overall system. SBOL 2.0 not only extends the description of physical structure to more general types of components, it also extends the description of the design to include functional information. -\Rtodo {next two paragraphs are un-edited text provid by Kevin C. I will try to reduce these, without losing biological relevance.} - -As an example, consider the design of an expression cassette, such as pUC18, a device that is designed to detect successful versus unsuccessful molecular cloning. As an overall system, the device is designed to grow either blue-colored (unsuccessful) vs white-colored (successful) colonies in the presence of IPGT and the chemical X-gal. Internally, the device has a number of parts, including a promoter, the lac repressor binding site, and the lacZ coding sequence. These parts have specific component-level interactions with IPGT and X-gal that collectively lead to the desired system-level behavior. +As an example, consider the design of an expression cassette, such as pUC18, a device that is designed to detect successful versus unsuccessful molecular cloning. As an overall system, the device is designed to grow either blue-colored (unsuccessful) or white-colored (successful) colonies in the presence of IPTG and the chemical X-gal. Internally, the device has a number of parts, including a promoter, the lac repressor binding site, and the lacZ coding sequence. These parts have specific component-level interactions with IPTG and X-gal that collectively lead to the desired system-level behavior. Understanding how such a device works and how it might be adapted to new experimental applications is currently passed on through working with fellow scientists or reading articles in papers and books. But there is no systematic way of communicating the integration of sequence with functional design, so users typically have to look in many different places to develop an understanding of this system. The SBOL standard allows designers to describe these functional characteristics, and to connect them to the physical parts and sequences that make up the design. +SBOL includes three main classes that match the three sorts of information above: +\begin{itemize} +\item The \sbol{ComponentDefinition} object describes the physical aspects of the designed system, such as the DNA or RNA sequences and the physical relationships among sub-components. +\item The \sbol{ModuleDefinition} object describes the local interactions of the designed system, such as specific binding relationships, and repression and activation relationships. +\item The \sbol{Model} object describes the overall, systems level view of the design. This object may refer to a mathematical quantitative or qualitative model of system performance. +\end{itemize} + +Figure 1 shows a simplified view of these three classes, as well as a few other helper classes in SBOL. To continue with the pUC18 example, the description would begin by creating a top-level \sbol{ModuleDefinition}. This object could then point to a \sbol{Model} object if it exists, for example, an SBML model of the behavior of this design. The \sbol{ModuleDefinition} would also include a number of \sbol{ComponentDefinition} objects. These would specify the structural elements that make up the cassette. Finally, the \sbol{ModuleDefinition} could specify \sbol{Interaction} objects that describe any internal functional relationships among components. + +\begin{figure}[ht] +\begin{center} +\includegraphics[scale=0.7]{images/OverviewFigforSpec-v3.png} +\caption{Main classes of information represented by the SBOL standard, and their relationships. Red boxes are classes from the 1.1 version of SBOL that focused on structure, whereas blue classes are some of the new classes that support the functional aspects of designs.} +\label{images:overview1} +\end{center} +\end{figure} + +On the structural side, the \sbol{ComponentDefinition} objects could be a simple flat list, or they could be organized into sub-components---note that both \sbol{ModuleDefinition} and \sbol{ComponentDefinition} can point to themselves, allowing for arbitrary nesting. +\sbol{ComponentDefinition} objects also include the actual \sbol{Sequence} information (if available) as well as \sbol{SequenceAnnotations} that name the promoters, coding sequences, etc., as well as provide location information. -As an example consider the cloning and expression cassette of a plasmid such as pUC18. The device has a number of parts, including a region of E.coli operon lac containing CAP protein binding site, promoter Plac, lac repressor binding site and 5’-terminal part of the lacZ gene encoding the N-terminal fragment of beta-galactosidase. This fragment, whose synthesis can be induced by the chemical IPTG, is capable of intra-allelic complementation with a defective form of beta-galactosidase encoded by host. In the presence of IPTG, bacteria synthesize both the device portion and the host specific fragments of the enzyme and form blue colonies on media containing the chemical X-gal. Insertion of DNA into the MCS located within the lacZ gene (codons 6-7 of lacZ are replaced by MCS) inactivates the N-terminal fragment of beta-galactosidase and abolishes alfa-complementation. Bacteria carrying recombinant plasmids therefore give rise to white colonies. This device and its usage is fundamental to how colony selection of recombinant plasmids is carried out in laboratories around the world. Understanding how such a device works and how it might be adapted to new experimental applications is currently passed on through working with fellow scientists or reading articles in papers and books. But there is no systematic way of communicating the integration of sequence with functional design, so users typically have to look in many different places to develop an understanding of this system. +The high-level view of Figure 1 is meant as a simple prelude to the full specification of SBOL that we provide in the next section. Importantly, our specification uses the UML (Unified Modeling Language) and Figure 1 is NOT a UML diagram. The next section begins with an more complete overview figure of the SBOL standard. -To adequately describe the functional design of this device it is necessary to include information on the physical elements of the design, such as the chemicals, proteins encoded both in the device and well as from the cell host, and complexes of these elements with each other. The design then needs to include information on the local interactions of the system such as IPTG complexing with the terameric repressor of the lac operon, or the lac repressor complexing with the lac repressor binding site. Finally the design needs to specify the models of the system such as consequence of the IPTG disrupting the tetrameric repressor ultimately leading to a working color selection system. The proposed standard is designed to permit users to incorporate as much or as little of this information as needed to share the physical structure of the device, the functional roles of each of the participating elements as well as the model of the overall system within the cell. +SBOL aims to facilitate the communication and reuse of synthetic biology designs. Given that these designs leverage biochemical knowledge and that they ultimately affect biological systems, it is important that SBOL interacts well with other relevant standards and resources, such as GenBank, SBML, ChEBI, or the Sequence Ontology. Thus, SBOL leverages semantic web technologies, using RDF as a serialization format, and URIs (\emph{Universal Resource Identifiers}) for its objects. URIs allow for direct and un-ambiguous reuse of designs---if a designer in Newcastle wishes to refer to a particular design built in California, he or she can simply name the URI of the ModuleDefinition that describes that design. +In sum, we hope that the SBOL standard will enable sharing of synthetic biology designs across the web, and allow developers to more easily build up rich, complex designs by re-using the work of others. -Figure 1 shows, at an abstract level, some of the important classes of information in SBOL. Figure 2 extends this view to provide a more detailed view of these classes. -\Rtodo {...this section (obviously) under construction. Currently working on my view of Figures 1 and 2. - jhg} +\Rtodo{old text below... + + +In my view, this should all be deleted. The only content to keep is some version of Figure 2, but this should be moved to section 6, right before 6.1 -- jhg } + + +Figure 2 extends this view to provide a more detailed view of these classes. Figure 1 illustrates the relationships between the main classes of information encoded by SBOL. The physical structure of an element is represented with a \sbol{ComponentDefinition}, often corresponding to a particular \sbol{Sequence} (e.g., DNA, RNA, amino acids), and with its structure further described in terms of the smaller \sbol{Component} instances contained within, and their absolute and relative positions within the component. Functional relationships are represented with a \sbol{ModuleDefinition}, often also described by some \sbol{Model}, and with its structure further described in terms of the smaller \sbol{Module} instances contained within, as well as particular components (designated \sbol{FunctionalComponent} to indicate their use in defining a module), and their interactions. -\begin{figure}[ht] -\begin{center} -\includegraphics[scale=0.5]{images/OverviewFigforSpec-v3.png} -\caption{Main classes of information represented by the SBOL standard, and their relationships. Red boxes are classes from the 1.1 version of SBOL that focused on structure, whereas blue classes are some of the new classes that support the functional aspects of designs.} -\label{images:overview1} -\end{center} -\end{figure} + \begin{figure}[ht] \begin{center} From 154964837280f1b6d13693f5deaf1401dd94a74e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 27 May 2015 14:47:13 +0000 Subject: [PATCH 192/317] Update on Overleaf. --- model.tex | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/model.tex b/model.tex index f9d5bea8..75ab0365 100644 --- a/model.tex +++ b/model.tex @@ -227,7 +227,7 @@ \subsubsection*{The \sbolheading{encoding} property} \label{sec:encoding} The \sbol{encoding} property is REQUIRED and has a data type of \external{URI}. This property is used to indicate how the \sbol{elements} property of a \sbol{Sequence} MUST be formed and interpreted. -For example, the \sbol{elements} property of a \sbol{Sequence} with an \external{IUPAC DNA} encoding property MUST contain characters that represent nucleotide bases, such as `{\tt a},' `{\tt t},' `{\tt c},' and `{\tt g}.' The \sbol{elements} property of a \sbol{Sequence} with a \external{Simplified Molecular-Input Line-Entry System (SMILES)} encoding, on the other hand, MUST contain characters that represent atoms and chemical bonds, such as `{\tt C},' `{\tt N},' `{\tt O},' and `{\tt =}.' +For example, the \sbol{elements} property of a \sbol{Sequence} with an \external{IUPAC DNA} encoding property MUST contain characters that represent nucleotide bases, such as {\tt a}, {\tt t}, {\tt c}, and {\tt g}. The \sbol{elements} property of a \sbol{Sequence} with a \external{Simplified Molecular-Input Line-Entry System (SMILES)} encoding, on the other hand, MUST contain characters that represent atoms and chemical bonds, such as {\tt C}, {\tt N}, {\tt O}, and {\tt =}. \ref{tbl:sequence_encodings} provides a list of RECOMMENDED \external{URI}s for the \sbol{encoding} property. The terms in \ref{tbl:sequence_encodings} are organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that typically refer to a \sbol{Sequence} with such an \sbol{encoding}. When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \external{URI}s in \ref{tbl:sequence_encodings}, it MUST use that \external{URI} for this property. @@ -247,7 +247,7 @@ \subsubsection*{The \sbolheading{encoding} property} \end{table} \subsubsection*{Serialization} -The serialization of a \sbol{Sequence} has the following form: +The serialization of a \sbol{Sequence} MUST have the following form: \lstsetsbol \begin{lstlisting} @@ -257,7 +257,7 @@ \subsubsection*{Serialization} \end{lstlisting} -The example below shows the serialization for the \sbol{Sequence} of a promoter. The nucleotide bases of the \sbol{Sequence} are serialized as the \external{String} value of its \sbol{elements} property, while its \external{IUPAC DNA} encoding is serialized as the \external{URI} value of its \sbol{encoding} property. +The example below shows the serialization of the \sbol{Sequence} for a promoter. The nucleotide bases of the \sbol{Sequence} are serialized as the \external{String} value of its \sbol{elements} property, while its \external{IUPAC DNA} encoding is serialized as the \external{URI} value of its \sbol{encoding} property. \lstsetsbol \begin{lstlisting} @@ -346,7 +346,7 @@ \subsubsection*{The \sbolheading{components} property} While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple copies of a particular part. For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \sbol{ComponentDefinition} of a CDS. -If the \sbol{ComponentDefinition} refers to one or \sbol{Sequence} objects, then at least one of these \sbol{Sequence} objects MUST have the same \sbol{encoding} as a \sbol{Sequence} from each \sbol{ComponentDefinition} of its \sbol{Component} objects. In addition, it MUST be possible to align the \sbol{elements} of the latter \sbol{encoding}-matched \sbol{Sequence} objects to the former. For example, a DNA \sbol{ComponentDefinition} could have a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and \sbol{elements} ``{\tt gattaca}.'' Any \sbol{Component} contained by this \sbol{ComponentDefinition} would then need to have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and \sbol{elements} that can be aligned with ``{\tt gattaca},'' such as ``{\tt gatta}'' or ``{\tt ttaca}.'' +If the \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects, then at least one of them MUST have the same \sbol{encoding} as a \sbol{Sequence} from the \sbol{ComponentDefinition} of each \sbol{Component} in the \sbol{components} property. In addition, it MUST be possible to align the \sbol{elements} of the latter \sbol{encoding}-matched \sbol{Sequence} objects to the former. For example, a DNA \sbol{ComponentDefinition} could have a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and \sbol{elements} ``{\tt gattaca}.'' In this case, any \sbol{Component} contained by this \sbol{ComponentDefinition} would itself need to have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and \sbol{elements} that can be aligned with ``{\tt gattaca},'' such as ``{\tt gatta}'' or ``{\tt ttaca}.'' % Furthermore, this \sbol{Sequence} MUST have the same \external{IUPAC} \sbol{encoding} as a \sbol{Sequence} of the parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. From b358cbb6e4566ae84c691b251985dccac4c219f3 Mon Sep 17 00:00:00 2001 From: Herbert Sauro Date: Wed, 27 May 2015 16:12:21 +0000 Subject: [PATCH 193/317] Update on Overleaf. --- history.tex | 9 +++++---- model.tex | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/history.tex b/history.tex index 2aefdcd4..b40f5e48 100644 --- a/history.tex +++ b/history.tex @@ -3,16 +3,17 @@ \section{A Brief History of SBOL} % ----------------------------------------------------------------------------- %Add yourself if you have helped and aren't on the list -In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. The original SBOL 1.0 was developed through his efforts together with the small group of dedicated researchers. An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group, including Cesar Rodriguez, Mandy Wilson, Jacob Beal, Guy-Bart Stan, Chris Myers, and Nicholas Roehner, and the over all pace of development quickened. +In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. These were held at the Synthetic Biology Data Exchange Working Group meeting at Stanford in July 26, 2009 and Anaheim, CA on June 13, 2010. Included at the Anaheim meeting were Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. The Anaheim meeting alThe original SBOL 1.0 was developed through Mike's efforts together with the small group of dedicated researchers. + +An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group, including Cesar Rodriguez, Mandy Wilson, Jacob Beal, Guy-Bart Stan, Chris Myers, and Nicholas Roehner, and the over all pace of development quickened. At a meeting in San Diego in June 2011, the SBOL Developers Group was officially established, rules of governance were established, and the first SBOL editors were elected: Mike Galdzicki, Cesar Rodriguez, and Mandy Wilson. At this time, Allan Kuchinsky, a research scientist at Agilent, joined the effort, and he was able to obtain some support to begin what was to become libSBOLj. Kevin Clancy from LifeTechnologies also joined at this time, as well as, Anil Wipat, Matthew Pocock, and Goksel Misirli from Newcastle University. In October 2011, SBOL 1.0 was officially released. At our next meeting in Seattle in January 2012, Herbert Sauro was elected the SBOL Chair, and two new editors were added: Matthew Pocock and Ernst Oberortner. At this meeting, the first data exchange between software tools using SBOL was conducting when a design was passed from Newcastle University's VirtualParts Repository to Boston University's Eugene tool, and finally to University of Utah's iBioSim tool. In March 2012, SBOL 1.1 was released, the version that this document replaces. The 8th SBOL workshop was held in November 2012 at Boston University, and the major topic of discussion was the next version of SBOL. SBOL 1.1 is limited to describing hierarchical DNA sequences. Several extensions were discussed at this meeting, such as a means to describe genetic regulation what later turned into interactions, and a means to group components what later turned into modules. In April 2013, at the 9th SBOL workshop at Newcastle University, the framework for SBOL 2.0 was agreed upon. Nicholas Roehner, Matthew Pocock, and Ernst Oberortner then began work to create a draft proposal for SBOL 2.0. In January 2014 at the 10th SBOL workshop, this draft was discussed and many refinements were debated and approved. Another important decision at this meeting was that SBOL should begin investigating joining the COMBINE community of standards (\url{www.co.mbine.org}). In the Spring and Summer of 2014, several important events occurred. In April, several SBOL representatives attended Harmony in Manchester UK to discuss joining the COMBINE community, which was approved by both sides shortly thereafter. In May, Herbert Sauro, John Gennari, and Chris Myers received a grant from the National Science Foundation to support SBOL (this document and the supporting software are due in no small part to this support). -In June, a description and our initial, multi-institutional demonstration of the use of SBOL 1.1 was published in Nature Biotechnology \cite{galdzicki2014synthetic}. -In July, Nicholas Roehner presented a proposal for the next version of SBOL at the SEED Conference in Los Angeles \cite{roehner2014proposed}. -Finally, in August 2014, the SBOL community attended their first COMBINE workshop as members of the COMBINE community. At this meeting, many of the final details of SBOL 2.0 were discussed, and the data model presented here is essentially the result of this meeting. + +In June, a description and our initial, multi-institutional demonstration of the use of SBOL 1.1 was published in Nature Biotechnology \cite{galdzicki2014synthetic}. In July, Nicholas Roehner presented a proposal for the next version of SBOL at the SEED Conference in Los Angeles \cite{roehner2014proposed}. Finally, in August 2014, the SBOL community attended their first COMBINE workshop as members of the COMBINE community. At this meeting, many of the final details of SBOL 2.0 were discussed, and the data model presented here is essentially the result of this meeting. At the Harmony meeting in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). diff --git a/model.tex b/model.tex index 75ab0365..596bd5b4 100644 --- a/model.tex +++ b/model.tex @@ -129,8 +129,6 @@ \subsubsection*{The \sbolheading{wasDerivedFrom} property} \subsubsection*{The \sbolheading{name} property} \label{sec:name} -\Ctodo{Need to require use of DublinCore names and show examples of them: non-stanard mappings per Matt: Title vs. Name, descripton is dcterms:description} - The \sbol{name} property is OPTIONAL and has a data type of \external{String}. This property is intended to be displayed to a human when visualizing an \sbol{Identified} object. If an \sbol{Identified} object lacks a name, then software tools SHOULD instead display the object's \sbol{displayId} or \sbol{identity}. @@ -151,6 +149,8 @@ \subsubsection*{Serialization} \Rtodo{CJM - edited, needs review} +\Ctodo{Need to require use of DublinCore names and show examples of them: non-stanard mappings per Matt: Title vs. Name, descripton is dcterms:description} + \lstsetsbol \begin{lstlisting} From 56c32ff92334ee013d100e85ce75c83753ae8152 Mon Sep 17 00:00:00 2001 From: Herbert Sauro Date: Wed, 27 May 2015 16:12:52 +0000 Subject: [PATCH 194/317] Update on Overleaf. --- history.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/history.tex b/history.tex index b40f5e48..6af0a6bc 100644 --- a/history.tex +++ b/history.tex @@ -3,7 +3,7 @@ \section{A Brief History of SBOL} % ----------------------------------------------------------------------------- %Add yourself if you have helped and aren't on the list -In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. These were held at the Synthetic Biology Data Exchange Working Group meeting at Stanford in July 26, 2009 and Anaheim, CA on June 13, 2010. Included at the Anaheim meeting were Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. The Anaheim meeting alThe original SBOL 1.0 was developed through Mike's efforts together with the small group of dedicated researchers. +In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. These were held at the Synthetic Biology Data Exchange Working Group meeting at Stanford in July 26, 2009 and Anaheim, CA on June 13, 2010. Included at the Anaheim meeting were Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. One of the results of the Anaheim meeting was the The original SBOL 1.0 was developed through Mike's efforts together with the small group of dedicated researchers. An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group, including Cesar Rodriguez, Mandy Wilson, Jacob Beal, Guy-Bart Stan, Chris Myers, and Nicholas Roehner, and the over all pace of development quickened. From bbec158023f7b85c24e5839f16f8c12d0ca4b9c8 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Wed, 27 May 2015 16:16:55 +0000 Subject: [PATCH 195/317] Update on Overleaf. --- history.tex | 4 ++-- model.tex | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/history.tex b/history.tex index 6af0a6bc..ad33e633 100644 --- a/history.tex +++ b/history.tex @@ -3,9 +3,9 @@ \section{A Brief History of SBOL} % ----------------------------------------------------------------------------- %Add yourself if you have helped and aren't on the list -In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. These were held at the Synthetic Biology Data Exchange Working Group meeting at Stanford in July 26, 2009 and Anaheim, CA on June 13, 2010. Included at the Anaheim meeting were Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. One of the results of the Anaheim meeting was the The original SBOL 1.0 was developed through Mike's efforts together with the small group of dedicated researchers. +In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. These were held at the Synthetic Biology Data Exchange Working Group meeting at Stanford in July 26, 2009 and Anaheim, CA on June 13, 2010. Included at the Anaheim meeting were Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. The original SBOL 1.0 was developed at these early meetings through Mike's efforts together with the small group of dedicated researchers. -An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group, including Cesar Rodriguez, Mandy Wilson, Jacob Beal, Guy-Bart Stan, Chris Myers, and Nicholas Roehner, and the over all pace of development quickened. +An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group resulting in 17 individuals at the meeting. New members included Cesar Rodriguez, Mandy Wilson, Jacob Beal, Guy-Bart Stan, Chris Myers, and Nicholas Roehner, and the over all pace of development quickened. At a meeting in San Diego in June 2011, the SBOL Developers Group was officially established, rules of governance were established, and the first SBOL editors were elected: Mike Galdzicki, Cesar Rodriguez, and Mandy Wilson. At this time, Allan Kuchinsky, a research scientist at Agilent, joined the effort, and he was able to obtain some support to begin what was to become libSBOLj. Kevin Clancy from LifeTechnologies also joined at this time, as well as, Anil Wipat, Matthew Pocock, and Goksel Misirli from Newcastle University. In October 2011, SBOL 1.0 was officially released. At our next meeting in Seattle in January 2012, Herbert Sauro was elected the SBOL Chair, and two new editors were added: Matthew Pocock and Ernst Oberortner. At this meeting, the first data exchange between software tools using SBOL was conducting when a design was passed from Newcastle University's VirtualParts Repository to Boston University's Eugene tool, and finally to University of Utah's iBioSim tool. diff --git a/model.tex b/model.tex index 596bd5b4..1edb2be0 100644 --- a/model.tex +++ b/model.tex @@ -329,7 +329,7 @@ \subsubsection*{The \sbolheading{roles} property} Terminator & \url{http://identifiers.org/so/SO:0000141} & DNA \\ Gene & \url{http://identifiers.org/so/SO:0000704} & DNA \\ mRNA & \url{http://identifiers.org/so/SO:0000234} & RNA \\ - Transcription Factor & \url{http://identifiers.org/go/GO:0003700} & Protein \\ + //Transcription Factor & \url{http://identifiers.org/go/GO:0003700} & Protein \\ Effector & \url{http://identifiers.org/chebi/CHEBI:35224} & Small Molecule \\ \bottomrule \end{edtable} @@ -337,7 +337,7 @@ \subsubsection*{The \sbolheading{roles} property} \label{tbl:componentdefinition_roles} \end{table} -\Ctodo{Goksel to replace URI for Transcription Factor role with something more appropriate (currently is URI for the term ``transcription activity.''} +\NVtodo{Goksel to replace URI for Transcription Factor role with something more appropriate (currently is URI for the term ``transcription activity.''} \subsubsection*{The \sbolheading{components} property} \label{sec:components} From b342b8646fe9b0204a08e40644b6468de32b9741 Mon Sep 17 00:00:00 2001 From: Herbert Sauro Date: Wed, 27 May 2015 16:18:01 +0000 Subject: [PATCH 196/317] Update on Overleaf. --- history.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/history.tex b/history.tex index ad33e633..7b842012 100644 --- a/history.tex +++ b/history.tex @@ -3,7 +3,7 @@ \section{A Brief History of SBOL} % ----------------------------------------------------------------------------- %Add yourself if you have helped and aren't on the list -In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. These were held at the Synthetic Biology Data Exchange Working Group meeting at Stanford in July 26, 2009 and Anaheim, CA on June 13, 2010. Included at the Anaheim meeting were Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. The original SBOL 1.0 was developed at these early meetings through Mike's efforts together with the small group of dedicated researchers. +In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. These were held at the Synthetic Biology Data Exchange Working Group meeting at Stanford in July 26, 2009 and Anaheim, CA on June 13, 2010. Included at the Anaheim meeting were Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. The original SBOL 1.0 was developed at these early meetings through Mike's efforts together with the small group of dedicated researchers. It was also that the Anaheim meeting that a decision was made to write a letter to Nature Biotechnology highlighting the importance of An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group resulting in 17 individuals at the meeting. New members included Cesar Rodriguez, Mandy Wilson, Jacob Beal, Guy-Bart Stan, Chris Myers, and Nicholas Roehner, and the over all pace of development quickened. From 74aa78ba7c58f8835dc6a3a5b03cd9a40b4dd8c2 Mon Sep 17 00:00:00 2001 From: Herbert Sauro Date: Wed, 27 May 2015 16:18:11 +0000 Subject: [PATCH 197/317] Update on Overleaf. --- history.tex | 2 +- model.tex | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/history.tex b/history.tex index 7b842012..d2fdaf1e 100644 --- a/history.tex +++ b/history.tex @@ -3,7 +3,7 @@ \section{A Brief History of SBOL} % ----------------------------------------------------------------------------- %Add yourself if you have helped and aren't on the list -In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. These were held at the Synthetic Biology Data Exchange Working Group meeting at Stanford in July 26, 2009 and Anaheim, CA on June 13, 2010. Included at the Anaheim meeting were Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. The original SBOL 1.0 was developed at these early meetings through Mike's efforts together with the small group of dedicated researchers. It was also that the Anaheim meeting that a decision was made to write a letter to Nature Biotechnology highlighting the importance of +In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. These were held at the Synthetic Biology Data Exchange Working Group meeting at Stanford in July 26, 2009 and Anaheim, CA on June 13, 2010. Included at the Anaheim meeting were Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. The original SBOL 1.0 was developed at these early meetings through Mike's efforts together with the small group of dedicated researchers. It was also that the Anaheim meeting that a decision was made to write a letter to Nature Biotechnology highlighting the iss An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group resulting in 17 individuals at the meeting. New members included Cesar Rodriguez, Mandy Wilson, Jacob Beal, Guy-Bart Stan, Chris Myers, and Nicholas Roehner, and the over all pace of development quickened. diff --git a/model.tex b/model.tex index 1edb2be0..f4282def 100644 --- a/model.tex +++ b/model.tex @@ -305,7 +305,7 @@ \subsubsection*{The \sbolheading{types} property} RNA & \url{http://www.biopax.org/release/biopax-level3.owl#RnaRegion}\\ Protein & \url{http://www.biopax.org/release/biopax-level3.owl#Protein}\\ Small Molecule & \url{http://www.biopax.org/release/biopax-level3.owl#SmallMolecule}\\ - \bottomrule + \bottomrulfe \end{edtable} \caption{RECOMMENDED BioPAX terms to specify the \sbol{types} property of a \sbol{ComponentDefinition}.} \label{tbl:componentdefinition_types} From 232e840bfe9b1b4305e713fa2a1c65967f007000 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 27 May 2015 16:32:33 +0000 Subject: [PATCH 198/317] Update on Overleaf. --- history.tex | 2 +- model.tex | 13 +++++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/history.tex b/history.tex index d2fdaf1e..cb26d970 100644 --- a/history.tex +++ b/history.tex @@ -3,7 +3,7 @@ \section{A Brief History of SBOL} % ----------------------------------------------------------------------------- %Add yourself if you have helped and aren't on the list -In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. These were held at the Synthetic Biology Data Exchange Working Group meeting at Stanford in July 26, 2009 and Anaheim, CA on June 13, 2010. Included at the Anaheim meeting were Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. The original SBOL 1.0 was developed at these early meetings through Mike's efforts together with the small group of dedicated researchers. It was also that the Anaheim meeting that a decision was made to write a letter to Nature Biotechnology highlighting the iss +In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. These were held at the Synthetic Biology Data Exchange Working Group meeting at Stanford in July 26, 2009 and Anaheim, CA on June 13, 2010. Included at the Anaheim meeting were Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. The original SBOL 1.0 was developed at these early meetings through Mike's efforts together with the small group of dedicated researchers. It was also that the Anaheim meeting that a decision was made to write a letter to Nature Biotechnology highlighting the issue of reproducibility in synthetic biology. This letter was initiated by Jean Peccoud and submitted by participants of the Anaheim meeting. An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group resulting in 17 individuals at the meeting. New members included Cesar Rodriguez, Mandy Wilson, Jacob Beal, Guy-Bart Stan, Chris Myers, and Nicholas Roehner, and the over all pace of development quickened. diff --git a/model.tex b/model.tex index f4282def..ae1c0ebb 100644 --- a/model.tex +++ b/model.tex @@ -147,8 +147,6 @@ \subsubsection*{Serialization} properties inherited from \sbol{Identified}, where CLASS\_NAME is replaced by the name of the class: -\Rtodo{CJM - edited, needs review} - \Ctodo{Need to require use of DublinCore names and show examples of them: non-stanard mappings per Matt: Title vs. Name, descripton is dcterms:description} \lstsetsbol @@ -305,7 +303,7 @@ \subsubsection*{The \sbolheading{types} property} RNA & \url{http://www.biopax.org/release/biopax-level3.owl#RnaRegion}\\ Protein & \url{http://www.biopax.org/release/biopax-level3.owl#Protein}\\ Small Molecule & \url{http://www.biopax.org/release/biopax-level3.owl#SmallMolecule}\\ - \bottomrulfe + \bottomrule \end{edtable} \caption{RECOMMENDED BioPAX terms to specify the \sbol{types} property of a \sbol{ComponentDefinition}.} \label{tbl:componentdefinition_types} @@ -329,7 +327,6 @@ \subsubsection*{The \sbolheading{roles} property} Terminator & \url{http://identifiers.org/so/SO:0000141} & DNA \\ Gene & \url{http://identifiers.org/so/SO:0000704} & DNA \\ mRNA & \url{http://identifiers.org/so/SO:0000234} & RNA \\ - //Transcription Factor & \url{http://identifiers.org/go/GO:0003700} & Protein \\ Effector & \url{http://identifiers.org/chebi/CHEBI:35224} & Small Molecule \\ \bottomrule \end{edtable} @@ -373,8 +370,7 @@ \subsubsection*{The \sbolheading{sequenceAnnotations} property} If the \sbol{ComponentDefinition} does not refer to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then it MUST NOT contain any \sbol{SequenceAnnotation} with a \sbol{Range} or \sbol{Cut} \sbol{Location}. By contrast, if the \sbol{ComponentDefinition} does refer to a \sbol{Sequence} with an \sbol{IUPAC} \sbol{encoding}, then each \sbol{SequenceAnnotation} it contains with a \sbol{Range} and/or \sbol{Cut} MUST cover a region on the \sbol{elements} of this \sbol{Sequence}. For example, the \sbol{ComponentDefinition} of a eukaryotic gene could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. In order to specify the discontiguous region occupied by its CDS, this gene \sbol{ComponentDefinition} would need a \sbol{SequenceAnnotation} that contains one or more \sbol{Range} objects, each one specifying \sbol{start} and \sbol{end} positions that are consistent with the \sbol{elements} of its DNA \sbol{Sequence}. \subsubsection*{Serialization} -% The parent classes of the \sbol{ComponentDefinition} class are \sbol{TopLevel} and, transitively, \sbol{Identified}. As a result, inherited properties are serialized as explained for these parent classes. -The \sbol{sequences}, \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations} properties of a \sbol{ComponentDefinition} contain objects belonging to the appropriate SBOL classes as their values, while the \sbol{types} and \sbol{roles} properties contain \external{URI}s that identify ontology terms as their values. As shown in the example below, each one of these objects and \external{URI}s is serialized as part of an implicit set of SBOL properties with singular rather then plural names. In particular, each object is serialized as a RDF/XML node nested within a singular property, while each \external{URI} is serialized as a \external{rdf:resource} on a singular property. +The serialization of a \sbol{ComponentDefinition} MUST have the form below. The \sbol{sequences}, \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations} properties of a \sbol{ComponentDefinition} contain objects belonging to the appropriate SBOL classes as their values, while the \sbol{types} and \sbol{roles} properties contain \external{URI}s that identify ontology terms as their values. As shown below, each one of these objects and \external{URI}s is serialized as part of an implicit set of SBOL properties with singular rather then plural names. In particular, each object is serialized as a RDF/XML node nested within a singular property, while each \external{URI} is serialized as a \external{rdf:resource} on a singular property. \lstsetsbol \begin{lstlisting} @@ -395,6 +391,7 @@ \subsubsection*{Serialization} \end{lstlisting} + The example below shows the serialization for the \sbol{ComponentDefinition} of a promoter. The BioPAX term \external{DnaRegion} and the ChEBI term \external{CHEBI:4705} (\external{double-stranded DNA}) are used to indicate that the type of biological entity represented by this \sbol{ComponentDefinition} is DNA. Its role is specified using the SO terms \external{SO:0000167} (\external{promoter}) and the more specific \external{SO:0000613} (\external{bacterial\_RNApol\_promoter}). \lstsetsbol @@ -483,7 +480,7 @@ \subsubsection{Component} \paragraph{Serialization} -The serialization of a \sbol{Component} has the following form: +The serialization of a \sbol{Component} MUST have the following form: \lstsetsbol \begin{lstlisting} @@ -573,7 +570,7 @@ \subsubsection{MapsTo} \end{table} \paragraph{Serialization} -The serialization of \sbol{MapsTo} has the following form. +The serialization of \sbol{MapsTo} MUST have the following form. \lstsetsbol \begin{lstlisting} From 6cf5909b3a185f741ba4b94eb5f7ca96d7f74ee7 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 27 May 2015 16:36:41 +0000 Subject: [PATCH 199/317] Update on Overleaf. --- model.tex | 2 +- purpose.tex | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/model.tex b/model.tex index ae1c0ebb..b47c77c0 100644 --- a/model.tex +++ b/model.tex @@ -619,7 +619,7 @@ \subsubsection{SequenceAnnotation} \paragraph{Serialization} -The serialization of SequenceAnnotation objects MUST be carried out according to the template below. In this template, A\_LOCATION\_SUBCLASS represents one of the Location subclasses. +The serialization of a \sbol{SequenceAnnotation} MUST have the form below. In this template, {\tt A\_LOCATION\_SUBCLASS} represents one of the \sbol{Location} subclasses. \lstsetsbol \begin{lstlisting} diff --git a/purpose.tex b/purpose.tex index 8e2dbe0f..2444e02f 100644 --- a/purpose.tex +++ b/purpose.tex @@ -9,8 +9,7 @@ \section{Purpose} Synthetic biology builds upon the techniques and successes of genetics, molecular biology and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. A common factor of these challenges is the exchange of information about designed systems between laboratories. When designing a synthetic system, synthetic biologists need to exchange information about multiple types of molecules and their planned roles in the design. Often the functional role may be associated with another type of molecule entirely, such as a small chemical, a DNA, an RNA or a Protein molecule. An example is an DNA sequence that is transcribed into a messenger RNA that contains an encoded microRNA binding site, and the messenger RNA in turn being translated into a protein molecule which is a transcription factor binding protein. Functionally the representation of the products of the designed DNA sequence need to describe the role of microRNA binding to the messenger RNA leading to possible degradation, the functional consequence of the transcription factor protein being absent leading to repression of expression of another gene and the kinetic information associated with these different elements so they can be mathematically modeled. The DNA sequence itself is thus one or two steps removed from the functional role of the designed device or circuit. -SBOL has been designed as a standard to support synthetic biology, filling a need not satisfied by other pre-existing standards. -Previous file formats such as GenBank and SwissProt represent sequence information based upon annotation of sequence features - they do not represent the functional roles or consequences of these sequences. Systems Biology Markup Language (SBML) represents reactions, pathways, and models, but does not typically represent the associated sequences. Kinetic information may be present in SBML~\cite{SBML} or may be represented by mathematical equations in other systems such as the COBRA Toolbox~\cite{COBRA}. Synthetic Biology needs a structured standard with defined ways on how to represent relevant molecules and their functional roles within the designed system, standardized rules on how such information is encoded in the file and the means to enable exchange of such data between participating laboratories as part of publications. +SBOL has been designed as a standard to support synthetic biology, filling a need not satisfied by other pre-existing standards. Previous file formats such as GenBank and SwissProt represent sequence information based upon annotation of sequence features - they do not represent the functional roles or consequences of these sequences. Systems Biology Markup Language (SBML) represents reactions, pathways, and models, but does not typically represent the associated sequences. Kinetic information may be present in SBML~\cite{SBML} or mass conservation laws in other systems such as the COBRA Toolbox~\cite{COBRA}. Synthetic Biology needs a structured standard with defined ways on how to represent relevant molecules and their functional roles within the designed system, standardized rules on how such information is encoded in the file and the means to enable exchange of such data between participating laboratories as part of publications. To help address these challenges, the Synthetic Biology Open Language (SBOL) Standard introduces a standardized format for the electronic exchange of information describing the structural and functional aspects of biological designs. The standard is designed to support the development of explicit and unambiguous data models of biological designs through the use of a well defined model on how to represent the component molecules, and their structural and functional roles in a systematic fashion. From 7b398e02afeb4df6844c8351ec1a6d0eb3a4c3c0 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Wed, 27 May 2015 11:39:31 -0500 Subject: [PATCH 200/317] dcterms --- model.tex | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/model.tex b/model.tex index ae1c0ebb..b527d21c 100644 --- a/model.tex +++ b/model.tex @@ -147,7 +147,7 @@ \subsubsection*{Serialization} properties inherited from \sbol{Identified}, where CLASS\_NAME is replaced by the name of the class: -\Ctodo{Need to require use of DublinCore names and show examples of them: non-stanard mappings per Matt: Title vs. Name, descripton is dcterms:description} +\Rtodo{Need to require use of DublinCore names and show examples of them: non-stanard mappings per Matt: Title vs. Name, descripton is dcterms:description} \lstsetsbol \begin{lstlisting} @@ -166,6 +166,15 @@ \subsubsection*{Serialization} \end{lstlisting} +Note that several of the properties are not in the \external{sbol} +namespace, but are mapped to standardized terms defined elsewhere: +\begin{itemize} +\item \sbol{identity} is serialized as \external{rdf:about} +\item \sbol{wasDerivedFrom} is serialized as \external{prov:wasDerivedFrom} +\item \sbol{name} is serialized as \external{dcterms:title} +\item \sbol{description} is serialized as \external{dcterms:description} +\end{itemize} + % \subsection{Documented} % \label{sec:Documented} % The \sbol{Documented} abstract class is inherited by the classes of SBOL objects that can contain human-readable properties, such as name and description. This class extends \sbol{Identified} with two additional data properties: \sbol{name}, and \sbol{description} (\ref{uml:documented}). From 8f16ba24804d2a738aed3941883deb192e29f5a4 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Wed, 27 May 2015 16:54:21 +0000 Subject: [PATCH 201/317] Update on Overleaf. --- history.tex | 9 +++++++++ images/OverviewFigforSpec-v6.png | Bin 0 -> 35940 bytes model.tex | 1 + overview.tex | 2 +- practices.tex | 26 +++++++++++++++----------- 5 files changed, 26 insertions(+), 12 deletions(-) create mode 100644 images/OverviewFigforSpec-v6.png diff --git a/history.tex b/history.tex index cb26d970..375e3c89 100644 --- a/history.tex +++ b/history.tex @@ -1,3 +1,12 @@ + + + + + + + + + % ----------------------------------------------------------------------------- \section{A Brief History of SBOL} % ----------------------------------------------------------------------------- diff --git a/images/OverviewFigforSpec-v6.png b/images/OverviewFigforSpec-v6.png new file mode 100644 index 0000000000000000000000000000000000000000..ae33dc2557da40766756bdf431f0476ba583761e GIT binary patch literal 35940 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 literal 0 HcmV?d00001 diff --git a/model.tex b/model.tex index efa6da05..debc5f00 100644 --- a/model.tex +++ b/model.tex @@ -673,6 +673,7 @@ \subsubsection{Location} \subparagraph{The \sbolheading{orientation} property} \label{sec:orientation} + This OPTIONAL property has a URI value. For \sbol{ComponentDefinition} objects representing DNA molecules, it is RECOMMENDED to use one of the values in \ref{tbl:orientation_types}. \begin{table}[ht] diff --git a/overview.tex b/overview.tex index 2a25bb37..a5064713 100644 --- a/overview.tex +++ b/overview.tex @@ -25,7 +25,7 @@ \section{Overview of SBOL} \begin{figure}[ht] \begin{center} -\includegraphics[scale=0.7]{images/OverviewFigforSpec-v3.png} +\includegraphics[scale=0.7]{images/OverviewFigforSpec-v6.png} \caption{Main classes of information represented by the SBOL standard, and their relationships. Red boxes are classes from the 1.1 version of SBOL that focused on structure, whereas blue classes are some of the new classes that support the functional aspects of designs.} \label{images:overview1} \end{center} diff --git a/practices.tex b/practices.tex index 0e47d83d..77acbe2b 100644 --- a/practices.tex +++ b/practices.tex @@ -70,22 +70,26 @@ \subsection{Recommended Ontologies for External Terms} \Ctodo{It would be useful to add URLs to the resources - NeilW} \begin{table}[ht] - \begin{edtable}{tabular}{p{3cm}p{2cm}p{5cm}} + \begin{edtable}{tabular}{p{3cm}p{2cm}p{5cm}p{5cm}} \toprule - \textbf{SBOL Entity} & \textbf{Property} & \textbf{Preferred External Resource}\\ + \textbf{SBOL Entity} & \textbf{Property} & \textbf{Preferred External Resource} + & More Information \\ \midrule - \textbf{ComponentDefinition} & types & BioPAX \\ - & roles & SO (if type is \textit{DNA} or \textit{RNA}) \\ - & roles & CHEBI (if type is \textit{small molecule}) \\ - & roles & UniProt (if type is \textit{protein}??) \\ - \textbf{Interaction} & types & SBO (entity relationship branch) \\ - \textbf{Participation} & roles & SBO (participant roles branch) \\ - \textbf{Model} & language & EDAM \\ - & framework & SBO (modeling framework branch) \\ + \textbf{ComponentDefinition} & types & BioPAX & \url{http://www.biopax.org}\\ + & roles & SO (if type is \textit{DNA} or \textit{RNA}) & \url{http://www.sequenceontology.org} \\ + & roles & CHEBI (if type is \textit{small molecule}) & \url{https://www.ebi.ac.uk/chebi/} \\ +% & roles & UniProt (if type is \textit{protein}??) \\ + \textbf{Interaction} & types & SBO (entity relationship branch) & + \url{http://www.ebi.ac.uk/sbo/main/} \\ + \textbf{Participation} & roles & SBO (participant roles branch) & + \url{http://www.ebi.ac.uk/sbo/main/} \\ + \textbf{Model} & language & EDAM & \\ + & framework & SBO (modeling framework branch) & + \url{http://www.ebi.ac.uk/sbo/main/} \\ \bottomrule \end{edtable} \caption{Preferred external resources from which to draw values for various SBOL properties.} \label{tbl:preferred_external_resources} \end{table} -\Ctodo{Goksel and Neil need to sort out GO vs. UniProt, and possibly just recommend both here.} \ No newline at end of file +\NVtodo{Goksel and Neil need to sort out GO vs. UniProt, and possibly just recommend both here.} \ No newline at end of file From b2fe5d50a948248a4f30d3ee9f32edcfc48ba824 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Wed, 27 May 2015 16:54:27 +0000 Subject: [PATCH 202/317] Update on Overleaf. --- practices.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/practices.tex b/practices.tex index 77acbe2b..cc9935d3 100644 --- a/practices.tex +++ b/practices.tex @@ -83,7 +83,7 @@ \subsection{Recommended Ontologies for External Terms} \url{http://www.ebi.ac.uk/sbo/main/} \\ \textbf{Participation} & roles & SBO (participant roles branch) & \url{http://www.ebi.ac.uk/sbo/main/} \\ - \textbf{Model} & language & EDAM & \\ + \textbf{Model} & language & EDAM & \url{http://bioportal.bioontology.org/ontologies/EDAM} \\ & framework & SBO (modeling framework branch) & \url{http://www.ebi.ac.uk/sbo/main/} \\ \bottomrule From 8cf65d63bc9b49d2bc639e46bcaac3f26077149e Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Wed, 27 May 2015 16:57:52 +0000 Subject: [PATCH 203/317] Update on Overleaf. --- practices.tex | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/practices.tex b/practices.tex index cc9935d3..951548df 100644 --- a/practices.tex +++ b/practices.tex @@ -67,24 +67,24 @@ \subsection{Recommended Ontologies for External Terms} External ontologies and controlled vocabularies are an integral part of SBOL. SBOL utilizes these resources to access existing biological information where possible. New SBOL specific terms are defined only when necessary. Instead, SBOL provides placeholders that can point to external terms. For example, types of components, such as DNA or protein, are indicated using BioPAX. Similarly, the role of a DNA component is indicated via the SO terms. Although preferred ontologies have been indicated in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found at \ref{tbl:preferred_external_resources}. -\Ctodo{It would be useful to add URLs to the resources - NeilW} +\Rtodo{It would be useful to add URLs to the resources - NeilW} \begin{table}[ht] - \begin{edtable}{tabular}{p{3cm}p{2cm}p{5cm}p{5cm}} + \begin{edtable}{tabular}{p{3cm}p{2cm}p{4cm}p{6cm}} \toprule \textbf{SBOL Entity} & \textbf{Property} & \textbf{Preferred External Resource} - & More Information \\ + & \textbf{More Information} \\ \midrule \textbf{ComponentDefinition} & types & BioPAX & \url{http://www.biopax.org}\\ - & roles & SO (if type is \textit{DNA} or \textit{RNA}) & \url{http://www.sequenceontology.org} \\ - & roles & CHEBI (if type is \textit{small molecule}) & \url{https://www.ebi.ac.uk/chebi/} \\ + & roles & SO (\textit{DNA} or \textit{RNA}) & \url{http://www.sequenceontology.org} \\ + & roles & CHEBI (\textit{small molecule}) & \url{https://www.ebi.ac.uk/chebi/} \\ % & roles & UniProt (if type is \textit{protein}??) \\ \textbf{Interaction} & types & SBO (entity relationship branch) & \url{http://www.ebi.ac.uk/sbo/main/} \\ \textbf{Participation} & roles & SBO (participant roles branch) & \url{http://www.ebi.ac.uk/sbo/main/} \\ \textbf{Model} & language & EDAM & \url{http://bioportal.bioontology.org/ontologies/EDAM} \\ - & framework & SBO (modeling framework branch) & + & framework & SBO (modeling framework) & \url{http://www.ebi.ac.uk/sbo/main/} \\ \bottomrule \end{edtable} From ef5dd8be694bf3b72b8bd77360bd7625318aec4f Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Wed, 27 May 2015 17:00:21 +0000 Subject: [PATCH 204/317] Update on Overleaf. --- model.tex | 2 +- practices.tex | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/model.tex b/model.tex index debc5f00..77935205 100644 --- a/model.tex +++ b/model.tex @@ -789,7 +789,7 @@ \subsubsection{Location} \subsubsection{SequenceConstraint} \label{sec:SequenceConstraint} A \sbol{ComponentDefinition} object can link to \sbol{SequenceConstraint} objects to assert various kinds of structural restrictions between two \sbol{Component} objects that are its subcomponents. -The purpose of \sbol{SequenceConstraint} is to allow partial designs to be specified when the precise identity, location, or ordering of \sbol{Component} objects is not yet fully determined. +The purpose of the \sbol{SequenceConstraint} class is to allow partial designs to be specified when the precise identity, location, or ordering of \sbol{Component} objects is not yet fully determined. A \sbol{SequenceConstraint} object requires \sbol{restriction}, \sbol{subject} and \sbol{object} properties to specify such constraints. diff --git a/practices.tex b/practices.tex index 951548df..4584d5c3 100644 --- a/practices.tex +++ b/practices.tex @@ -67,10 +67,8 @@ \subsection{Recommended Ontologies for External Terms} External ontologies and controlled vocabularies are an integral part of SBOL. SBOL utilizes these resources to access existing biological information where possible. New SBOL specific terms are defined only when necessary. Instead, SBOL provides placeholders that can point to external terms. For example, types of components, such as DNA or protein, are indicated using BioPAX. Similarly, the role of a DNA component is indicated via the SO terms. Although preferred ontologies have been indicated in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found at \ref{tbl:preferred_external_resources}. -\Rtodo{It would be useful to add URLs to the resources - NeilW} - \begin{table}[ht] - \begin{edtable}{tabular}{p{3cm}p{2cm}p{4cm}p{6cm}} + \begin{edtable}{tabular}{p{3cm}p{1.5cm}p{4.5cm}p{6cm}} \toprule \textbf{SBOL Entity} & \textbf{Property} & \textbf{Preferred External Resource} & \textbf{More Information} \\ @@ -84,7 +82,7 @@ \subsection{Recommended Ontologies for External Terms} \textbf{Participation} & roles & SBO (participant roles branch) & \url{http://www.ebi.ac.uk/sbo/main/} \\ \textbf{Model} & language & EDAM & \url{http://bioportal.bioontology.org/ontologies/EDAM} \\ - & framework & SBO (modeling framework) & + & framework & SBO (modeling framework branch) & \url{http://www.ebi.ac.uk/sbo/main/} \\ \bottomrule \end{edtable} From 646771a9686fafd785e1e21a2407009a425f3173 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Wed, 27 May 2015 12:01:01 -0500 Subject: [PATCH 205/317] DC done --- model.tex | 2 -- 1 file changed, 2 deletions(-) diff --git a/model.tex b/model.tex index debc5f00..e05db993 100644 --- a/model.tex +++ b/model.tex @@ -147,8 +147,6 @@ \subsubsection*{Serialization} properties inherited from \sbol{Identified}, where CLASS\_NAME is replaced by the name of the class: -\Rtodo{Need to require use of DublinCore names and show examples of them: non-stanard mappings per Matt: Title vs. Name, descripton is dcterms:description} - \lstsetsbol \begin{lstlisting} From 6eaf0af55ca66d3aa84d0da164425685744ed6bc Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Wed, 27 May 2015 17:14:40 +0000 Subject: [PATCH 206/317] Update on Overleaf. --- history.tex | 4 ++-- overview.tex | 44 ++++++++++++++++++++++---------------------- sbol2.tex | 1 + 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/history.tex b/history.tex index 375e3c89..a42481d8 100644 --- a/history.tex +++ b/history.tex @@ -12,6 +12,8 @@ \section{A Brief History of SBOL} % ----------------------------------------------------------------------------- %Add yourself if you have helped and aren't on the list +\Rtodo{The above text needs thorough review by those involved. Any key people missing from the text?} + In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. These were held at the Synthetic Biology Data Exchange Working Group meeting at Stanford in July 26, 2009 and Anaheim, CA on June 13, 2010. Included at the Anaheim meeting were Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. The original SBOL 1.0 was developed at these early meetings through Mike's efforts together with the small group of dedicated researchers. It was also that the Anaheim meeting that a decision was made to write a letter to Nature Biotechnology highlighting the issue of reproducibility in synthetic biology. This letter was initiated by Jean Peccoud and submitted by participants of the Anaheim meeting. An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group resulting in 17 individuals at the meeting. New members included Cesar Rodriguez, Mandy Wilson, Jacob Beal, Guy-Bart Stan, Chris Myers, and Nicholas Roehner, and the over all pace of development quickened. @@ -25,5 +27,3 @@ \section{A Brief History of SBOL} In June, a description and our initial, multi-institutional demonstration of the use of SBOL 1.1 was published in Nature Biotechnology \cite{galdzicki2014synthetic}. In July, Nicholas Roehner presented a proposal for the next version of SBOL at the SEED Conference in Los Angeles \cite{roehner2014proposed}. Finally, in August 2014, the SBOL community attended their first COMBINE workshop as members of the COMBINE community. At this meeting, many of the final details of SBOL 2.0 were discussed, and the data model presented here is essentially the result of this meeting. At the Harmony meeting in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). - -\Rtodo{The above text needs thorough review by those involved. Any key people missing from the text?} \ No newline at end of file diff --git a/overview.tex b/overview.tex index a5064713..008b4b4a 100644 --- a/overview.tex +++ b/overview.tex @@ -41,18 +41,18 @@ \section{Overview of SBOL} In sum, we hope that the SBOL standard will enable sharing of synthetic biology designs across the web, and allow developers to more easily build up rich, complex designs by re-using the work of others. -\Rtodo{old text below... +\Rtodo{under construction.... -In my view, this should all be deleted. The only content to keep is some version of Figure 2, but this should be moved to section 6, right before 6.1 -- jhg } +The only content to keep is some version of Figure 2, -- jhg } -Figure 2 extends this view to provide a more detailed view of these classes. +% Figure 2 extends this view to provide a more detailed view of these classes. -Figure 1 illustrates the relationships between the main classes of information encoded by SBOL. -The physical structure of an element is represented with a \sbol{ComponentDefinition}, often corresponding to a particular \sbol{Sequence} (e.g., DNA, RNA, amino acids), and with its structure further described in terms of the smaller \sbol{Component} instances contained within, and their absolute and relative positions within the component. -Functional relationships are represented with a \sbol{ModuleDefinition}, often also described by some \sbol{Model}, and with its structure further described in terms of the smaller \sbol{Module} instances contained within, as well as particular components (designated \sbol{FunctionalComponent} to indicate their use in defining a module), and their interactions. +% Figure 1 illustrates the relationships between the main classes of information encoded by SBOL. +% The physical structure of an element is represented with a \sbol{ComponentDefinition}, often corresponding to a particular \sbol{Sequence} (e.g., DNA, RNA, amino acids), and with its structure further described in terms of the smaller \sbol{Component} instances contained within, and their absolute and relative positions within the component. +% Functional relationships are represented with a \sbol{ModuleDefinition}, often also described by some \sbol{Model}, and with its structure further described in terms of the smaller \sbol{Module} instances contained within, as well as particular components (designated \sbol{FunctionalComponent} to indicate their use in defining a module), and their interactions. @@ -64,37 +64,37 @@ \section{Overview of SBOL} \end{center} \end{figure} -The \sbol{Sequence} is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. In designed systems such objects can consist of small chemical molecules, DNAs, RNAs or Proteins. The \sbol{Sequence} object has been designed to encapsulate any of these types of molecules. Small molecule \sbol{Sequence} objects are typically referred to via their chemical formulae. Molecules where sequence specific information is important, such as DNA, RNA and Protein \sbol{Sequence} objects, use the object to incorporate this information. The \sbol{Sequence} object encapsulates this positional information as well as the associated experimental work or other information related to a sequenced molecule. +% The \sbol{Sequence} is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. In designed systems such objects can consist of small chemical molecules, DNAs, RNAs or Proteins. The \sbol{Sequence} object has been designed to encapsulate any of these types of molecules. Small molecule \sbol{Sequence} objects are typically referred to via their chemical formulae. Molecules where sequence specific information is important, such as DNA, RNA and Protein \sbol{Sequence} objects, use the object to incorporate this information. The \sbol{Sequence} object encapsulates this positional information as well as the associated experimental work or other information related to a sequenced molecule. -\Rtodo{need to make it clear that it includes DNA, RNA, and protein, also smooth the text --JSB made addiitons based upon the suggested changes - KC} +% \Rtodo{need to make it clear that it includes DNA, RNA, and protein, also smooth the text --JSB made addiitons based upon the suggested changes - KC} -In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a structural hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. A functional layer can be defined to describe the behaviors that arise from the structural layer. \sbol{ModuleDefinition}s contain information about molecular interactions and their participating components. They can contain \sbol{FunctionalComponent}s that are instances of \sbol{ComponentDefinition}s that can be assigned functional properties, and they can also contain other modules in a functional hierarchy. The functions and interactions of these components and other modules within the \sbol{ModuleDefinition} can be quantitatively or qualitatively described using a \sbol{Model}. The \sbol{SequenceAnnotation} object defines data associated the \sbol{Sequence} and \sbol{ComponentDefinition} objects that is needed beyond basic definitions. This can refer to local annotations of the object as well as a container for URIs to external information sources. +% In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a structural hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. A functional layer can be defined to describe the behaviors that arise from the structural layer. \sbol{ModuleDefinition}s contain information about molecular interactions and their participating components. They can contain \sbol{FunctionalComponent}s that are instances of \sbol{ComponentDefinition}s that can be assigned functional properties, and they can also contain other modules in a functional hierarchy. The functions and interactions of these components and other modules within the \sbol{ModuleDefinition} can be quantitatively or qualitatively described using a \sbol{Model}. The \sbol{SequenceAnnotation} object defines data associated the \sbol{Sequence} and \sbol{ComponentDefinition} objects that is needed beyond basic definitions. This can refer to local annotations of the object as well as a container for URIs to external information sources. -SBOL includes different entities to describe such genetic circuits. Genetic elements such as a promoter, ribosome binding site (RBS), coding sequence (CDS), or terminator are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. -\sbol{SequenceAnnotation}s can be used to carry data associated with the successful running of that model on another computer, can be used to point towards sources of some or all of the circuit and the location of experimental data associated with the development of the model. +% SBOL includes different entities to describe such genetic circuits. Genetic elements such as a promoter, ribosome binding site (RBS), coding sequence (CDS), or terminator are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. +% \sbol{SequenceAnnotation}s can be used to carry data associated with the successful running of that model on another computer, can be used to point towards sources of some or all of the circuit and the location of experimental data associated with the development of the model. -\Rtodo{Need to also explain annotation --JSB -Provided some text for review describing annotation - KC} +% \Rtodo{Need to also explain annotation --JSB +% Provided some text for review describing annotation - KC} -SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. +% SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. -\Ctodo{This needs to be clarified. Do we really want to explain MapsTo here? -JSB} -\Ctodo{it's not in the diagram. So it should be removed or dealt with in the figure and earlier in the text- KC} +% \Ctodo{This needs to be clarified. Do we really want to explain MapsTo here? -JSB} +% \Ctodo{it's not in the diagram. So it should be removed or dealt with in the figure and earlier in the text- KC} -\Ctodo{Explain why it is important to separate definitions from instantiations?} +% \Ctodo{Explain why it is important to separate definitions from instantiations?} -\LDtodo{The motivation for separating structural and functional considerations is not explained. Which class names are structural, which class names are functional, and how are the two connected? Do all structural components require a functional counterpart? If not, explain why only a subset of structural components would have functional definitions.} +% \LDtodo{The motivation for separating structural and functional considerations is not explained. Which class names are structural, which class names are functional, and how are the two connected? Do all structural components require a functional counterpart? If not, explain why only a subset of structural components would have functional definitions.} -\Ctodo{As a person reading about SBOL2 for the first time, I rank this as the most important section. While the document should be technically focused overall, this section is your chance to concisely tell someone who won't read the whole document about the take-home messages for the new data model.} +% \Ctodo{As a person reading about SBOL2 for the first time, I rank this as the most important section. While the document should be technically focused overall, this section is your chance to concisely tell someone who won't read the whole document about the take-home messages for the new data model.} -\LDtodo{Why are URI's needed for Components? Why not just for ComponentDefinitions? Is there anything in SBOL that does not require a URI?} -\Ctodo{Also briefly mention URI} +% \LDtodo{Why are URI's needed for Components? Why not just for ComponentDefinitions? Is there anything in SBOL that does not require a URI?} +% \Ctodo{Also briefly mention URI} -\Ctodo{Make sure we explain about annotations up in the motivation and overview, since it's really, really important.} +% \Ctodo{Make sure we explain about annotations up in the motivation and overview, since it's really, really important.} % The same toggle switch is now displayed using two LacI and TetR inverter submodules in figure \ref{images:toggleswitch_modular}. The LacI inverter uses LacI as input and produces the TetR output, and the TetR inverter uses TetR as input and produces the LacI output. These inputs and outputs are mapped in a parent module. diff --git a/sbol2.tex b/sbol2.tex index 46f169cc..fb2bccba 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -143,6 +143,7 @@ \begin{tabular}{l>{\hspace*{15pt}}r} Curtis Madsen, Matthew Pocock, Anil Wipat & \emph{Newcastle University, UK}\\ Tramy Nguyen, Zhen Zhang, Chris Myers & \emph{University of Utah, USA}\\ +John Gennari & \emph{University of Washington, USA}\\ \end{tabular}\\ \Ctodo{Fill in all rest of authors here.} } From 33824665be6120dd58d9ac44606146bca286a185 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Wed, 27 May 2015 17:14:50 +0000 Subject: [PATCH 207/317] Update on Overleaf. --- history.tex | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/history.tex b/history.tex index a42481d8..65358b72 100644 --- a/history.tex +++ b/history.tex @@ -1,12 +1,4 @@ - - - - - - - - - + % ----------------------------------------------------------------------------- \section{A Brief History of SBOL} % ----------------------------------------------------------------------------- From c011490505d6dfed00a5f143827d9d68519c241d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 27 May 2015 17:17:44 +0000 Subject: [PATCH 208/317] Update on Overleaf. --- history.tex | 3 +-- model.tex | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/history.tex b/history.tex index 65358b72..cbe840ed 100644 --- a/history.tex +++ b/history.tex @@ -1,10 +1,9 @@ - % ----------------------------------------------------------------------------- \section{A Brief History of SBOL} % ----------------------------------------------------------------------------- %Add yourself if you have helped and aren't on the list -\Rtodo{The above text needs thorough review by those involved. Any key people missing from the text?} +\Rtodo{The text below needs thorough review by those involved.} In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. These were held at the Synthetic Biology Data Exchange Working Group meeting at Stanford in July 26, 2009 and Anaheim, CA on June 13, 2010. Included at the Anaheim meeting were Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. The original SBOL 1.0 was developed at these early meetings through Mike's efforts together with the small group of dedicated researchers. It was also that the Anaheim meeting that a decision was made to write a letter to Nature Biotechnology highlighting the issue of reproducibility in synthetic biology. This letter was initiated by Jean Peccoud and submitted by participants of the Anaheim meeting. diff --git a/model.tex b/model.tex index 13f050ce..05f50a17 100644 --- a/model.tex +++ b/model.tex @@ -786,8 +786,8 @@ \subsubsection{Location} \subsubsection{SequenceConstraint} \label{sec:SequenceConstraint} -A \sbol{ComponentDefinition} object can link to \sbol{SequenceConstraint} objects to assert various kinds of structural restrictions between two \sbol{Component} objects that are its subcomponents. -The purpose of the \sbol{SequenceConstraint} class is to allow partial designs to be specified when the precise identity, location, or ordering of \sbol{Component} objects is not yet fully determined. +A \sbol{ComponentDefinition} can use objects of the \sbol{SequenceConstraint} class to assert various structural restrictions between pairs of its \sbol{Component} objects. +The primary purpose of the \sbol{SequenceConstraint} class is to enable the specification partial designs to be specified when the precise identity, location, or ordering of \sbol{Component} objects is not yet fully determined. A \sbol{SequenceConstraint} object requires \sbol{restriction}, \sbol{subject} and \sbol{object} properties to specify such constraints. From 7ec222b05914c6b8610d76cac53f26ae6c389e6e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 27 May 2015 17:17:49 +0000 Subject: [PATCH 209/317] Update on Overleaf. --- model.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model.tex b/model.tex index 05f50a17..03cecab3 100644 --- a/model.tex +++ b/model.tex @@ -787,7 +787,7 @@ \subsubsection{Location} \subsubsection{SequenceConstraint} \label{sec:SequenceConstraint} A \sbol{ComponentDefinition} can use objects of the \sbol{SequenceConstraint} class to assert various structural restrictions between pairs of its \sbol{Component} objects. -The primary purpose of the \sbol{SequenceConstraint} class is to enable the specification partial designs to be specified when the precise identity, location, or ordering of \sbol{Component} objects is not yet fully determined. +The primary purpose of the \sbol{SequenceConstraint} class is to enable the specification of partial designs to be specified when the precise identity, location, or ordering of \sbol{Component} objects is not yet fully determined. A \sbol{SequenceConstraint} object requires \sbol{restriction}, \sbol{subject} and \sbol{object} properties to specify such constraints. From 0cc611ed6cb3e737aaf2f9da3c6439f52192a78e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 27 May 2015 17:19:17 +0000 Subject: [PATCH 210/317] Update on Overleaf. --- model.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model.tex b/model.tex index 03cecab3..81d66c44 100644 --- a/model.tex +++ b/model.tex @@ -787,7 +787,7 @@ \subsubsection{Location} \subsubsection{SequenceConstraint} \label{sec:SequenceConstraint} A \sbol{ComponentDefinition} can use objects of the \sbol{SequenceConstraint} class to assert various structural restrictions between pairs of its \sbol{Component} objects. -The primary purpose of the \sbol{SequenceConstraint} class is to enable the specification of partial designs to be specified when the precise identity, location, or ordering of \sbol{Component} objects is not yet fully determined. +The primary purpose of the \sbol{SequenceConstraint} class is to enable the specification of partial designs to be specified when the precise position, or ordering of \sbol{Component} objects is not yet fully determined. A \sbol{SequenceConstraint} object requires \sbol{restriction}, \sbol{subject} and \sbol{object} properties to specify such constraints. From 1fae51bbe93ad75d33a9b1c12ac8ae3dd1a01564 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 27 May 2015 17:19:23 +0000 Subject: [PATCH 211/317] Update on Overleaf. --- model.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model.tex b/model.tex index 81d66c44..fde6104c 100644 --- a/model.tex +++ b/model.tex @@ -787,7 +787,7 @@ \subsubsection{Location} \subsubsection{SequenceConstraint} \label{sec:SequenceConstraint} A \sbol{ComponentDefinition} can use objects of the \sbol{SequenceConstraint} class to assert various structural restrictions between pairs of its \sbol{Component} objects. -The primary purpose of the \sbol{SequenceConstraint} class is to enable the specification of partial designs to be specified when the precise position, or ordering of \sbol{Component} objects is not yet fully determined. +The primary purpose of the \sbol{SequenceConstraint} class is to enable the specification of partial designs to be specified when the precise position or ordering of \sbol{Component} objects is not yet fully determined. A \sbol{SequenceConstraint} object requires \sbol{restriction}, \sbol{subject} and \sbol{object} properties to specify such constraints. From 28cf5371e3e850ea3df34f2d1b2a67b29f0a5788 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Wed, 27 May 2015 12:18:29 -0500 Subject: [PATCH 212/317] more politic --- history.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/history.tex b/history.tex index a42481d8..6ad309e3 100644 --- a/history.tex +++ b/history.tex @@ -12,7 +12,7 @@ \section{A Brief History of SBOL} % ----------------------------------------------------------------------------- %Add yourself if you have helped and aren't on the list -\Rtodo{The above text needs thorough review by those involved. Any key people missing from the text?} +\Rtodo{The above text needs thorough review by the community. We are certain that there are many errors, including missing people. Please send input to fix these errors} In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. These were held at the Synthetic Biology Data Exchange Working Group meeting at Stanford in July 26, 2009 and Anaheim, CA on June 13, 2010. Included at the Anaheim meeting were Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. The original SBOL 1.0 was developed at these early meetings through Mike's efforts together with the small group of dedicated researchers. It was also that the Anaheim meeting that a decision was made to write a letter to Nature Biotechnology highlighting the issue of reproducibility in synthetic biology. This letter was initiated by Jean Peccoud and submitted by participants of the Anaheim meeting. From c7b9263aab8e4f791e7780a184ba1935bb1b92db Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 27 May 2015 18:32:20 +0000 Subject: [PATCH 213/317] Update on Overleaf. --- history.tex | 4 ++-- model.tex | 41 +++++++++++++++++++---------------------- overview.tex | 16 +++++++--------- 3 files changed, 28 insertions(+), 33 deletions(-) diff --git a/history.tex b/history.tex index 0a1bf33b..6ad55e7b 100644 --- a/history.tex +++ b/history.tex @@ -3,7 +3,7 @@ \section{A Brief History of SBOL} % ----------------------------------------------------------------------------- %Add yourself if you have helped and aren't on the list -\Rtodo{The above text needs thorough review by the community. We are certain that there are many errors, including missing people. Please send input to fix these errors} +\Rtodo{The text below needs thorough review by the community. We are certain that there are many errors, including missing people. Please send input to fix these errors} In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. These were held at the Synthetic Biology Data Exchange Working Group meeting at Stanford in July 26, 2009 and Anaheim, CA on June 13, 2010. Included at the Anaheim meeting were Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. The original SBOL 1.0 was developed at these early meetings through Mike's efforts together with the small group of dedicated researchers. It was also that the Anaheim meeting that a decision was made to write a letter to Nature Biotechnology highlighting the issue of reproducibility in synthetic biology. This letter was initiated by Jean Peccoud and submitted by participants of the Anaheim meeting. @@ -17,4 +17,4 @@ \section{A Brief History of SBOL} In June, a description and our initial, multi-institutional demonstration of the use of SBOL 1.1 was published in Nature Biotechnology \cite{galdzicki2014synthetic}. In July, Nicholas Roehner presented a proposal for the next version of SBOL at the SEED Conference in Los Angeles \cite{roehner2014proposed}. Finally, in August 2014, the SBOL community attended their first COMBINE workshop as members of the COMBINE community. At this meeting, many of the final details of SBOL 2.0 were discussed, and the data model presented here is essentially the result of this meeting. -At the Harmony meeting in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). +At the Harmony meeting in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). \ No newline at end of file diff --git a/model.tex b/model.tex index fde6104c..e08cd4ba 100644 --- a/model.tex +++ b/model.tex @@ -462,7 +462,7 @@ \subsubsection{ComponentInstance} \begin{table}[ht] \begin{edtable}{tabular}{lp{4in}} \toprule - \textbf{URI} & \textbf{Access Description} \\ + \textbf{Access URI} & \textbf{Description} \\ \midrule \url{http://sbols.org/v2#public} & The \sbol{ComponentInstance} MAY be referred to by \sbol{MapsTo} objects. \\ \url{http://sbols.org/v2#private} & The \sbol{ComponentInstance} MUST NOT be referred to by any \sbol{MapsTo} object. \\ @@ -659,7 +659,7 @@ \subsubsection{SequenceAnnotation} \subsubsection{Location} \label{sec:Location} -The Location class is extended by the \sbol{Range}, \sbol{Cut}, and \sbol{GenericLocation} classes. All of these thus share its \sbol{orientation} property, for example to to specify directionality on a potentially double-stranded \sbol{Component} object. +The \sbol{Location} class is extended by the \sbol{Range}, \sbol{Cut}, and \sbol{GenericLocation} classes. \begin{figure}[ht] \begin{center} @@ -669,21 +669,20 @@ \subsubsection{Location} \end{center} \end{figure} -\subparagraph{The \sbolheading{orientation} property} +\paragraph{The \sbolheading{orientation} property} \label{sec:orientation} - -This OPTIONAL property has a URI value. For \sbol{ComponentDefinition} objects representing DNA molecules, it is RECOMMENDED to use one of the values in \ref{tbl:orientation_types}. +The \sbol{orientation} property is OPTIONAL and has a data type of \external{URI}. All subclasses of \sbol{Location} share this property, which can be used to specify how a \sbol{SequenceAnnotation} and any associated double-stranded \sbol{Component} should be oriented on the \sbol{Sequence} of their parent \sbol{ComponentDefinition}. \ref{tbl:orientation_types} provides a list of REQUIRED \sbol{orientation} \external{URI}s. If a \sbol{Location} object has an \sbol{orientation}, then it MUST come from \ref{tbl:orientation_types}. \begin{table}[ht] - \begin{edtable}{tabular}{l} + \begin{edtable}{tabular}{l l} \toprule - \textbf{Orientation Types} \\ + \textbf{Orientation URI} & \textbf{Description} \\ \midrule - http://sbols.org/v2\#inline\\ - http://sbols.org/v2\#reverseComplement\\ + \url{http://sbols.org/v2\#inline} & A \sbol{Location} specifies \\ + \url{http://sbols.org/v2\#reverseComplement} & \\ \bottomrule \end{edtable} - \caption{URI constants for \sbol{orientation} values} + \caption{REQUIRED \external{URI}s for the \sbol{orientation} property} \label{tbl:orientation_types} \end{table} @@ -692,15 +691,15 @@ \subsubsection{Location} \label{sec:Range} A \sbol{Range} object specifies inclusive start and end positions. These properties are required in \sbol{Range} objects and they can have \external{integer} values greater than zero. -\subparagraph{The \sbolheading{start} property}\label{sec:start} +\paragraph{The \sbolheading{start} property}\label{sec:start} Specifies the start of a \sbol{Range}. This property is REQUIRED and can have \external{integer} values greater than zero. -\subparagraph{The \sbolheading{end} property}\label{sec:end} +\paragraph{The \sbolheading{end} property}\label{sec:end} Specifies the end of a \sbol{Range}. This property is REQUIRED and can have \external{integer} values greater than zero. -\subparagraph{Serialization} +\paragraph{Serialization} -The serialization of Range objects has the following form: +The serialization of a \sbol{Range} MUST have the following form: \lstsetsbol \begin{lstlisting} @@ -728,14 +727,14 @@ \subsubsection{Location} The \sbol{Cut} class has been introduced to enable the specification of a location between two indices. Each \sbol{Cut} object has the property \sbol{at}. -\subparagraph{The \sbolheading{at} property} +\paragraph{The \sbolheading{at} property} \label{sec:at} The REQUIRED \sbol{at} property is an index greater than or equal to zero that specifies the index just before the location represented by the Cut object. A Cut object with \sbol{at} equal to zero represents the location just before index one (even though there is no zero index on Structure objects in SBOL). -\subparagraph{Serialization} +\paragraph{Serialization} -The serialization of \sbol{Cut} objects has the following form: +The serialization of a \sbol{Cut} MUST have the following form: \lstsetsbol \begin{lstlisting} @@ -765,9 +764,9 @@ \subsubsection{Location} \sbol{GenericLocation} is included as a hook for extensions, e.g., for describing locations in non-sequential structures. -\subparagraph{Serialization} +\paragraph{Serialization} -The serialization of \sbol{GenericLocation} objects has the following form: +The serialization of a \sbol{GenericLocation} MUST have the following form: \lstsetsbol \begin{lstlisting} @@ -787,9 +786,7 @@ \subsubsection{Location} \subsubsection{SequenceConstraint} \label{sec:SequenceConstraint} A \sbol{ComponentDefinition} can use objects of the \sbol{SequenceConstraint} class to assert various structural restrictions between pairs of its \sbol{Component} objects. -The primary purpose of the \sbol{SequenceConstraint} class is to enable the specification of partial designs to be specified when the precise position or ordering of \sbol{Component} objects is not yet fully determined. - -A \sbol{SequenceConstraint} object requires \sbol{restriction}, \sbol{subject} and \sbol{object} properties to specify such constraints. +The primary purpose of the \sbol{SequenceConstraint} class is to enable the specification of partially designed \sbol{ComponentDefinition} objects, for which the precise position or ordering of their sub-\sbol{Component} objects is not yet fully determined. Each \sbol{SequenceConstraint} includes the \sbol{restriction}, \sbol{subject}, and \sbol{object} properties. \begin{figure}[ht] \begin{center} diff --git a/overview.tex b/overview.tex index 008b4b4a..ed549e8f 100644 --- a/overview.tex +++ b/overview.tex @@ -1,27 +1,25 @@ % % ----------------------------------------------------------------------------- \section{Overview of SBOL} % % ----------------------------------------------------------------------------- -Synthetic biology designs need to convey three types of information for each component in the design: +Synthetic biology designs can be described using both structural and functional terms: \begin{itemize} -\item Its physical structure, represented by a sequence or its chemical makeup. -\item Its functional role within the design. -\item The functional consequence of this component within the overall design or the biological system where it will perform . +\item We can describe the physical structure of the design, e.g., a set of sequences or information about chemical makeup. +\item We can describe the functional roles of the design. Such a description includes both the overall function, as well as the ways that components might interact with each other. \end{itemize} -In broad strokes, SBOL 1.1 describes the first of these, the physical information, and only for components constructed from DNA. The physical information about a designed genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. However, SBOL 1.1 lacked the ability to describe functional interactions among elements within a design, nor functional descriptions of the overall system. SBOL 2.0 not only extends the description of physical structure to more general types of components, it also extends the description of the design to include functional information. +In broad strokes, SBOL 1.1 focuses on physical, structural information, whereas SBOL 2.0 includes functional aspects. The physical information about a designed genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. SBOL 2.0 extends v1.1 in several ways: it allows for functional descriptions of the design and its interaction, and it extends physical descriptions to include entities beyond DNA sequences. As an example, consider the design of an expression cassette, such as pUC18, a device that is designed to detect successful versus unsuccessful molecular cloning. As an overall system, the device is designed to grow either blue-colored (unsuccessful) or white-colored (successful) colonies in the presence of IPTG and the chemical X-gal. Internally, the device has a number of parts, including a promoter, the lac repressor binding site, and the lacZ coding sequence. These parts have specific component-level interactions with IPTG and X-gal that collectively lead to the desired system-level behavior. Understanding how such a device works and how it might be adapted to new experimental applications is currently passed on through working with fellow scientists or reading articles in papers and books. But there is no systematic way of communicating the integration of sequence with functional design, so users typically have to look in many different places to develop an understanding of this system. The SBOL standard allows designers to describe these functional characteristics, and to connect them to the physical parts and sequences that make up the design. -SBOL includes three main classes that match the three sorts of information above: +SBOL includes main classes that match the structural/physical distinction above: \begin{itemize} \item The \sbol{ComponentDefinition} object describes the physical aspects of the designed system, such as the DNA or RNA sequences and the physical relationships among sub-components. \item The \sbol{ModuleDefinition} object describes the local interactions of the designed system, such as specific binding relationships, and repression and activation relationships. -\item The \sbol{Model} object describes the overall, systems level view of the design. This object may refer to a mathematical quantitative or qualitative model of system performance. \end{itemize} -Figure 1 shows a simplified view of these three classes, as well as a few other helper classes in SBOL. To continue with the pUC18 example, the description would begin by creating a top-level \sbol{ModuleDefinition}. This object could then point to a \sbol{Model} object if it exists, for example, an SBML model of the behavior of this design. The \sbol{ModuleDefinition} would also include a number of \sbol{ComponentDefinition} objects. These would specify the structural elements that make up the cassette. Finally, the \sbol{ModuleDefinition} could specify \sbol{Interaction} objects that describe any internal functional relationships among components. +Figure 1 shows a simplified view of these classes, as well as other helper classes in SBOL. To continue with the pUC18 example, the description would begin by creating a top-level \sbol{ModuleDefinition}. This object could then point to a \sbol{Model} object if it exists, for example, an SBML model of the behavior of this design. The \sbol{ModuleDefinition} would also include a number of \sbol{ComponentDefinition} objects. These would specify the structural elements that make up the cassette. Finally, the \sbol{ModuleDefinition} could specify \sbol{Interaction} objects that describe any internal functional relationships among components. \begin{figure}[ht] \begin{center} @@ -34,7 +32,7 @@ \section{Overview of SBOL} On the structural side, the \sbol{ComponentDefinition} objects could be a simple flat list, or they could be organized into sub-components---note that both \sbol{ModuleDefinition} and \sbol{ComponentDefinition} can point to themselves, allowing for arbitrary nesting. \sbol{ComponentDefinition} objects also include the actual \sbol{Sequence} information (if available) as well as \sbol{SequenceAnnotations} that name the promoters, coding sequences, etc., as well as provide location information. -The high-level view of Figure 1 is meant as a simple prelude to the full specification of SBOL that we provide in the next section. Importantly, our specification uses the UML (Unified Modeling Language) and Figure 1 is NOT a UML diagram. The next section begins with an more complete overview figure of the SBOL standard. +The high-level view of Figure 1 is meant as a simple prelude to the full specification of SBOL that we provide in the next section. Importantly, our specification uses the UML (Unified Modeling Language) and Figure 1 is NOT a UML diagram. Figure 2 shows... SBOL aims to facilitate the communication and reuse of synthetic biology designs. Given that these designs leverage biochemical knowledge and that they ultimately affect biological systems, it is important that SBOL interacts well with other relevant standards and resources, such as GenBank, SBML, ChEBI, or the Sequence Ontology. Thus, SBOL leverages semantic web technologies, using RDF as a serialization format, and URIs (\emph{Universal Resource Identifiers}) for its objects. URIs allow for direct and un-ambiguous reuse of designs---if a designer in Newcastle wishes to refer to a particular design built in California, he or she can simply name the URI of the ModuleDefinition that describes that design. From 27f57038d4390291bfc34b15221bec19ecaeec5f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 27 May 2015 19:41:03 +0000 Subject: [PATCH 214/317] Update on Overleaf. --- model.tex | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/model.tex b/model.tex index e08cd4ba..80e60c58 100644 --- a/model.tex +++ b/model.tex @@ -350,7 +350,7 @@ \subsubsection*{The \sbolheading{components} property} While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple copies of a particular part. For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \sbol{ComponentDefinition} of a CDS. -If the \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects, then at least one of them MUST have the same \sbol{encoding} as a \sbol{Sequence} from the \sbol{ComponentDefinition} of each \sbol{Component} in the \sbol{components} property. In addition, it MUST be possible to align the \sbol{elements} of the latter \sbol{encoding}-matched \sbol{Sequence} objects to the former. For example, a DNA \sbol{ComponentDefinition} could have a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and \sbol{elements} ``{\tt gattaca}.'' In this case, any \sbol{Component} contained by this \sbol{ComponentDefinition} would itself need to have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and \sbol{elements} that can be aligned with ``{\tt gattaca},'' such as ``{\tt gatta}'' or ``{\tt ttaca}.'' +If the \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects, then at least one of them MUST have the same \sbol{encoding} as a \sbol{Sequence} from the \sbol{ComponentDefinition} of each \sbol{Component} in the \sbol{components} property. In addition, it MUST be possible to align the \sbol{elements} of these \sbol{encoding}-matched \sbol{Sequence} objects. For example, a DNA \sbol{ComponentDefinition} could have a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and \sbol{elements} ``{\tt gattaca}.'' In this case, any \sbol{Component} contained by this \sbol{ComponentDefinition} would itself need to have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and \sbol{elements} that can be aligned with ``{\tt gattaca},'' such as ``{\tt gatta}," or ``{\tt tgta}'' in the case of a \sbol{Component} that is positioned by a \sbol{SequenceAnnotation} that has a \sbol{Location} with its \sbol{orientation} set to ``reverse complement.'' % Furthermore, this \sbol{Sequence} MUST have the same \external{IUPAC} \sbol{encoding} as a \sbol{Sequence} of the parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. @@ -674,12 +674,12 @@ \subsubsection{Location} The \sbol{orientation} property is OPTIONAL and has a data type of \external{URI}. All subclasses of \sbol{Location} share this property, which can be used to specify how a \sbol{SequenceAnnotation} and any associated double-stranded \sbol{Component} should be oriented on the \sbol{Sequence} of their parent \sbol{ComponentDefinition}. \ref{tbl:orientation_types} provides a list of REQUIRED \sbol{orientation} \external{URI}s. If a \sbol{Location} object has an \sbol{orientation}, then it MUST come from \ref{tbl:orientation_types}. \begin{table}[ht] - \begin{edtable}{tabular}{l l} + \begin{edtable}{tabular}{lp{3.75in}} \toprule \textbf{Orientation URI} & \textbf{Description} \\ \midrule - \url{http://sbols.org/v2\#inline} & A \sbol{Location} specifies \\ - \url{http://sbols.org/v2\#reverseComplement} & \\ + \url{http://sbols.org/v2\#inline} & The region specified by this \sbol{Location} MUST be on the \sbol{elements} of a \sbol{Sequence} owned by the same \sbol{ComponentDefinition} that owns this \sbol{Location} \\ + \url{http://sbols.org/v2\#reverseComplement} & The region specified by this \sbol{Location} MUST be on the reverse-complement translation of the \sbol{elements} of a \sbol{Sequence} owned by the same \sbol{ComponentDefinition} that owns this \sbol{Location}. The defintion of this translation depends on the \sbol{encoding} \\ \bottomrule \end{edtable} \caption{REQUIRED \external{URI}s for the \sbol{orientation} property} From b141bea9ec32e57b210ab15ba23dfe2afd66c332 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 27 May 2015 20:09:17 +0000 Subject: [PATCH 215/317] Update on Overleaf. --- model.tex | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/model.tex b/model.tex index 80e60c58..45a24280 100644 --- a/model.tex +++ b/model.tex @@ -350,7 +350,7 @@ \subsubsection*{The \sbolheading{components} property} While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple copies of a particular part. For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \sbol{ComponentDefinition} of a CDS. -If the \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects, then at least one of them MUST have the same \sbol{encoding} as a \sbol{Sequence} from the \sbol{ComponentDefinition} of each \sbol{Component} in the \sbol{components} property. In addition, it MUST be possible to align the \sbol{elements} of these \sbol{encoding}-matched \sbol{Sequence} objects. For example, a DNA \sbol{ComponentDefinition} could have a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and \sbol{elements} ``{\tt gattaca}.'' In this case, any \sbol{Component} contained by this \sbol{ComponentDefinition} would itself need to have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and \sbol{elements} that can be aligned with ``{\tt gattaca},'' such as ``{\tt gatta}," or ``{\tt tgta}'' in the case of a \sbol{Component} that is positioned by a \sbol{SequenceAnnotation} that has a \sbol{Location} with its \sbol{orientation} set to ``reverse complement.'' +If the \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects, then at least one of them MUST have the same \sbol{encoding} as a \sbol{Sequence} from the \sbol{ComponentDefinition} of each \sbol{Component} in the \sbol{components} property. In addition, it MUST be possible to align the \sbol{elements} of these \sbol{encoding}-matched \sbol{Sequence} objects, subject to any restrictions imposed by each \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} that refers to the \sbol{Component} objects for these \sbol{Sequence} objects. For example, a DNA \sbol{ComponentDefinition} could refer to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and its \sbol{elements} set to ``{\tt gattaca}.'' In this case, any \sbol{Component} contained by this \sbol{ComponentDefinition} would itself need to have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and \sbol{elements} that can be aligned with ``{\tt gattaca},'' such as ``{\tt gatta}," or ``{\tt tgta}'' in the case of a \sbol{Component} that is positioned by a \sbol{SequenceAnnotation} that has a \sbol{Location} with its \sbol{orientation} set to ``reverse complement'' (see \ref{sec:Location}). % Furthermore, this \sbol{Sequence} MUST have the same \external{IUPAC} \sbol{encoding} as a \sbol{Sequence} of the parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. @@ -374,7 +374,7 @@ \subsubsection*{The \sbolheading{sequenceAnnotations} property} The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. Each \sbol{SequenceAnnotation} specifies and describes a potentially discontiguous region on the \sbol{Sequence} objects referred to by the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at the region specified by its \sbol{Location} objects (see \ref{sec:Location}). -If the \sbol{ComponentDefinition} does not refer to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then it MUST NOT contain any \sbol{SequenceAnnotation} with a \sbol{Range} or \sbol{Cut} \sbol{Location}. By contrast, if the \sbol{ComponentDefinition} does refer to a \sbol{Sequence} with an \sbol{IUPAC} \sbol{encoding}, then each \sbol{SequenceAnnotation} it contains with a \sbol{Range} and/or \sbol{Cut} MUST cover a region on the \sbol{elements} of this \sbol{Sequence}. For example, the \sbol{ComponentDefinition} of a eukaryotic gene could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. In order to specify the discontiguous region occupied by its CDS, this gene \sbol{ComponentDefinition} would need a \sbol{SequenceAnnotation} that contains one or more \sbol{Range} objects, each one specifying \sbol{start} and \sbol{end} positions that are consistent with the \sbol{elements} of its DNA \sbol{Sequence}. +If the \sbol{ComponentDefinition} does not refer to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then it MUST NOT contain any \sbol{SequenceAnnotation} with a \sbol{Range} or \sbol{Cut} \sbol{Location}. By contrast, if the \sbol{ComponentDefinition} does refer to a \sbol{Sequence} with an \sbol{IUPAC} \sbol{encoding}, then each \sbol{SequenceAnnotation} it contains with a \sbol{Range} and/or \sbol{Cut} MUST cover a region on the \sbol{elements} of this \sbol{Sequence}. For example, the \sbol{ComponentDefinition} of a eukaryotic gene could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. In order to specify the discontiguous region occupied by its CDS, this gene \sbol{ComponentDefinition} would need a \sbol{SequenceAnnotation} that contains one or more \sbol{Range} objects, each one specifying \sbol{start} and \sbol{end} positions that correspond to indices for the \sbol{elements} of its DNA \sbol{Sequence}. \subsubsection*{Serialization} The serialization of a \sbol{ComponentDefinition} MUST have the form below. The \sbol{sequences}, \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations} properties of a \sbol{ComponentDefinition} contain objects belonging to the appropriate SBOL classes as their values, while the \sbol{types} and \sbol{roles} properties contain \external{URI}s that identify ontology terms as their values. As shown below, each one of these objects and \external{URI}s is serialized as part of an implicit set of SBOL properties with singular rather then plural names. In particular, each object is serialized as a RDF/XML node nested within a singular property, while each \external{URI} is serialized as a \external{rdf:resource} on a singular property. @@ -620,9 +620,9 @@ \subsubsection{SequenceAnnotation} In general, these \sbol{Location} objects SHOULD NOT cover the same \sbol{Sequence} \sbol{elements}. \paragraph{The \sbolheading{component} property}\label{sec:component} -The \sbol{component} property is OPTIONAL and has a data type of \external{URI}. This \external{URI} MUST refer to a \sbol{Component} that is contained by the same parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. In this way, the properties of the \sbol{SequenceAnnotation}, such as its \sbol{description} and \sbol{locations}, are associated with part of its parent \sbol{ComponentDefinition}'s substructure. +The \sbol{component} property is OPTIONAL and has a data type of \external{URI}. This \external{URI} MUST refer to a \sbol{Component} that is contained by the same parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. In this way, the properties of the \sbol{SequenceAnnotation}, such as its \sbol{description} and \sbol{locations}, are associated with part of its parent \sbol{ComponentDefinition}'s substructure. A \sbol{SequenceAnnotation} MUST NOT refer to the same \sbol{Component} as another \sbol{SequenceAnnotation}. -If the \sbol{SequenceAnnotation} contains a \sbol{Range} or \sbol{Cut} \sbol{Location} (see \ref{sec:Location}), then any \sbol{Component} it refers to MUST have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}. +Lastly, if a \sbol{SequenceAnnotation} contains a \sbol{Range} or \sbol{Cut} \sbol{Location} (see \ref{sec:Location}), then any \sbol{Component} it refers to MUST have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}. \paragraph{Serialization} @@ -679,7 +679,7 @@ \subsubsection{Location} \textbf{Orientation URI} & \textbf{Description} \\ \midrule \url{http://sbols.org/v2\#inline} & The region specified by this \sbol{Location} MUST be on the \sbol{elements} of a \sbol{Sequence} owned by the same \sbol{ComponentDefinition} that owns this \sbol{Location} \\ - \url{http://sbols.org/v2\#reverseComplement} & The region specified by this \sbol{Location} MUST be on the reverse-complement translation of the \sbol{elements} of a \sbol{Sequence} owned by the same \sbol{ComponentDefinition} that owns this \sbol{Location}. The defintion of this translation depends on the \sbol{encoding} \\ + \url{http://sbols.org/v2\#reverseComplement} & The region specified by this \sbol{Location} MUST be on the reverse-complement translation of the \sbol{elements} of a \sbol{Sequence} owned by the same \sbol{ComponentDefinition} that owns this \sbol{Location}. The defintion of this translation depends on the \sbol{encoding} of \sbol{Sequence} \\ \bottomrule \end{edtable} \caption{REQUIRED \external{URI}s for the \sbol{orientation} property} From a72a55eee0fa218e69c8ce2e44a79866e424cf28 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Wed, 27 May 2015 15:26:33 -0500 Subject: [PATCH 216/317] moved overview todo --- overview.tex | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/overview.tex b/overview.tex index ed549e8f..c7e7db8e 100644 --- a/overview.tex +++ b/overview.tex @@ -1,6 +1,12 @@ % % ----------------------------------------------------------------------------- \section{Overview of SBOL} % % ----------------------------------------------------------------------------- + +\LDtodo{under construction.... + + +The only content to keep is some version of Figure 2, -- jhg } + Synthetic biology designs can be described using both structural and functional terms: \begin{itemize} \item We can describe the physical structure of the design, e.g., a set of sequences or information about chemical makeup. @@ -39,12 +45,6 @@ \section{Overview of SBOL} In sum, we hope that the SBOL standard will enable sharing of synthetic biology designs across the web, and allow developers to more easily build up rich, complex designs by re-using the work of others. -\Rtodo{under construction.... - - -The only content to keep is some version of Figure 2, -- jhg } - - % Figure 2 extends this view to provide a more detailed view of these classes. From 139675492a0d63fcb194e65026799e27de14edae Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Wed, 27 May 2015 21:56:13 +0000 Subject: [PATCH 217/317] Update on Overleaf. --- model.tex | 32 +++++++++++++++++--------------- uml/identified_annotations.png | Bin 7719 -> 13374 bytes 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/model.tex b/model.tex index 45a24280..0ca0fa9b 100644 --- a/model.tex +++ b/model.tex @@ -343,6 +343,16 @@ \subsubsection*{The \sbolheading{roles} property} \NVtodo{Goksel to replace URI for Transcription Factor role with something more appropriate (currently is URI for the term ``transcription activity.''} +\subsubsection*{The \sbolheading{sequences} property} +\label{sec:sequences} +The \sbol{sequences} property is OPTIONAL and MAY include a set of \external{URI}s that refer to \sbol{Sequence} objects. These objects define the primary structure of the \sbol{ComponentDefinition}. + +Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the structure of a DNA \sbol{ComponentDefinition}, one that captures its primary structure at the level of nucleotide bases and one that captures its secondary and tertiary structure at the level of atoms and bonds. + +If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} (see \ref{tbl:sequence_encodings}). + +Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbol{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of these \sbol{Sequence} objects MUST have the \sbol{encoding} from \ref{tbl:sequence_encodings} that corresponds to this term. Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbol{types} property MUST refer to the corresponding term from \ref{tbl:componentdefinition_types}. For example, if the \sbol{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}, then its \sbol{types} property must refer to the BioPAX term for DNA. + \subsubsection*{The \sbolheading{components} property} \label{sec:components} @@ -354,28 +364,18 @@ \subsubsection*{The \sbolheading{components} property} % Furthermore, this \sbol{Sequence} MUST have the same \external{IUPAC} \sbol{encoding} as a \sbol{Sequence} of the parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. -\subsubsection*{The \sbolheading{sequences} property} -\label{sec:sequences} -The \sbol{sequences} property is OPTIONAL and MAY include a set of \external{URI}s that refer to \sbol{Sequence} objects. These objects define the primary structure of the \sbol{ComponentDefinition}. - -Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the structure of a DNA \sbol{ComponentDefinition}, one that captures its primary structure at the level of nucleotide bases and one that captures its secondary and tertiary structure at the level of atoms and bonds. +\subsubsection*{The \sbolheading{sequenceAnnotations} property} +\label{sec:sequenceAnnotations} -If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} (see \ref{tbl:sequence_encodings}). +The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. Each \sbol{SequenceAnnotation} specifies and describes a potentially discontiguous region on the \sbol{Sequence} objects referred to by the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at the region specified by its \sbol{Location} objects (see \ref{sec:Location}). -Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbol{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of these \sbol{Sequence} objects MUST have the \sbol{encoding} from \ref{tbl:sequence_encodings} that corresponds to this term. Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbol{types} property MUST refer to the corresponding term from \ref{tbl:componentdefinition_types}. For example, if the \sbol{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an an \external{IUPAC DNA} \sbol{encoding}, then its \sbol{types} property must refer to the BioPAX term for DNA. +If the \sbol{ComponentDefinition} does not refer to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then it MUST NOT contain any \sbol{SequenceAnnotation} with a \sbol{Range} or \sbol{Cut} \sbol{Location}. By contrast, if the \sbol{ComponentDefinition} does refer to a \sbol{Sequence} with an \sbol{IUPAC} \sbol{encoding}, then each \sbol{SequenceAnnotation} it contains with a \sbol{Range} and/or \sbol{Cut} MUST cover a region on the \sbol{elements} of this \sbol{Sequence}. For example, the \sbol{ComponentDefinition} of a eukaryotic gene could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. In order to specify the discontiguous region occupied by its CDS, this gene \sbol{ComponentDefinition} would need a \sbol{SequenceAnnotation} that contains one or more \sbol{Range} objects, each one specifying \sbol{start} and \sbol{end} positions that correspond to indices for the \sbol{elements} of its DNA \sbol{Sequence}. \subsubsection*{The \sbolheading{sequenceConstraints} property} \label{sec:sequenceConstraints} The \sbol{sequenceConstraints} property is OPTIONAL and MAY contain a set of \sbol{SequenceConstraint} objects. These objects describe any restrictions on the relative, sequence-based positions of the \sbol{Component} objects contained by the \sbol{ComponentDefinition}. For example, the \sbol{ComponentDefinition} of a gene may specify that its promoter \sbol{Component} precedes its CDS \sbol{Component}. This is particulary useful when a \sbol{ComponentDefinition} lacks a \sbol{Sequence} and therefore cannot specify the precise, sequence-based positions of its \sbol{Component} objects using \sbol{SequenceAnnotation} objects. -\subsubsection*{The \sbolheading{sequenceAnnotations} property} -\label{sec:sequenceAnnotations} - -The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. Each \sbol{SequenceAnnotation} specifies and describes a potentially discontiguous region on the \sbol{Sequence} objects referred to by the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at the region specified by its \sbol{Location} objects (see \ref{sec:Location}). - -If the \sbol{ComponentDefinition} does not refer to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then it MUST NOT contain any \sbol{SequenceAnnotation} with a \sbol{Range} or \sbol{Cut} \sbol{Location}. By contrast, if the \sbol{ComponentDefinition} does refer to a \sbol{Sequence} with an \sbol{IUPAC} \sbol{encoding}, then each \sbol{SequenceAnnotation} it contains with a \sbol{Range} and/or \sbol{Cut} MUST cover a region on the \sbol{elements} of this \sbol{Sequence}. For example, the \sbol{ComponentDefinition} of a eukaryotic gene could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. In order to specify the discontiguous region occupied by its CDS, this gene \sbol{ComponentDefinition} would need a \sbol{SequenceAnnotation} that contains one or more \sbol{Range} objects, each one specifying \sbol{start} and \sbol{end} positions that correspond to indices for the \sbol{elements} of its DNA \sbol{Sequence}. - \subsubsection*{Serialization} The serialization of a \sbol{ComponentDefinition} MUST have the form below. The \sbol{sequences}, \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations} properties of a \sbol{ComponentDefinition} contain objects belonging to the appropriate SBOL classes as their values, while the \sbol{types} and \sbol{roles} properties contain \external{URI}s that identify ontology terms as their values. As shown below, each one of these objects and \external{URI}s is serialized as part of an implicit set of SBOL properties with singular rather then plural names. In particular, each object is serialized as a RDF/XML node nested within a singular property, while each \external{URI} is serialized as a \external{rdf:resource} on a singular property. @@ -1330,7 +1330,9 @@ \subsubsection{Annotating SBOL objects} Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. The \sbol{name} property is specified by a qualified name (\external{QName}), which is composed of a namespace, a prefix, and a local name. The \sbol{value} property can be a literal type (i.e., \external{String}, \external{Integer}, \external{Double}, \external{Boolean}), \external{URI}, or a \sbol{NestedAnnotations} object. The \sbol{NestedAnnotations} object is composed of a \sbol{nestedQName}, \sbol{nestedURI}, and an optional list of nested \sbol{annotations}. -\Ctodo{NIC: Please update UML as follows: remove link from Identifed to AnnotationValue, change type of name to QName, add new class NestedAnnotations that inherits from AnnotationValue with properties nestedQName : QName, nestedURI : URI, and a 0..* annotations link to the Annotation class.} +\Rtodo{NIC: Please update UML as follows: remove link from Identifed to AnnotationValue, change type of name to QName, add new class NestedAnnotations that inherits from AnnotationValue with properties nestedQName : QName, nestedURI : URI, and a 0..* annotations link to the Annotation class. + +Done. Also changed ``name'' property of Annotation class to ``qName'' to be consistent with ``nestedQName'' property of NestedAnnotations class. } \begin{figure}[!ht] \begin{center} diff --git a/uml/identified_annotations.png b/uml/identified_annotations.png index f7128f27c1553948997aafd6dc91d8d95a10c1ec..3b1af1d5ed215d6decd3c40342af073a5d34e60f 100644 GIT binary patch literal 13374 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 hUh@C?6^GA Date: Wed, 27 May 2015 22:18:03 -0500 Subject: [PATCH 218/317] no more undefined refs --- apdx-validation.tex | 2 +- examples_serialization.tex | 2 +- model.tex | 5 ++++- overview.tex | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 3ac7e964..c1369533 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -286,7 +286,7 @@ \subsubsection*{Rules for the \class{MapsTo} class} % \printValid{The \sbol{ComponentInstance} referenced by the \sbol{local} property MUST have \sbol{public} access type. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{ComponentInstance} referenced by the \sbol{remote} property MUST have \sbol{public} access type. (Reference: \sec{sec:MapsTo})} +\printValid{The \sbol{ComponentInstance} referenced by the \sbol{remote} property MUST have \external{public} access type. (Reference: \sec{sec:MapsTo})} \subsubsection*{Rules for the \class{Interaction} class} \setcounter{sbolCtr}{11401} diff --git a/examples_serialization.tex b/examples_serialization.tex index ce9ddc40..0ee0bff4 100644 --- a/examples_serialization.tex +++ b/examples_serialization.tex @@ -5,7 +5,7 @@ \section{Examples of Serialization} \subsection{PoPS Receiver} This example shows the serialization of the PoPS Receiver device designed by Canton and co-workers~\cite{canton-natbio-2008}. -In particular, this is a \sbol{ComponentDefinition} comprising five other \sbol{Components} to construct a detector for the cell-cell signaling molecule 3OC$_6$HSL. +In particular, this is a \sbol{ComponentDefinition} comprising five other \sbol{Component} objects to construct a detector for the cell-cell signaling molecule 3OC$_6$HSL. The five components are arranged in a sequence: first come four components together implement constitutive expression of the LuxR protein, which responds to 3OC$_6$HSL: a constitutive promoter, 5'UTR, coding sequence for LuxR, and terminator. Finally, after this comes the pLuxR promoter, which is activated in the presence of LuxR and 3OC$_6$HSL. diff --git a/model.tex b/model.tex index 0ca0fa9b..c51a014f 100644 --- a/model.tex +++ b/model.tex @@ -369,7 +369,9 @@ \subsubsection*{The \sbolheading{sequenceAnnotations} property} The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. Each \sbol{SequenceAnnotation} specifies and describes a potentially discontiguous region on the \sbol{Sequence} objects referred to by the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at the region specified by its \sbol{Location} objects (see \ref{sec:Location}). -If the \sbol{ComponentDefinition} does not refer to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then it MUST NOT contain any \sbol{SequenceAnnotation} with a \sbol{Range} or \sbol{Cut} \sbol{Location}. By contrast, if the \sbol{ComponentDefinition} does refer to a \sbol{Sequence} with an \sbol{IUPAC} \sbol{encoding}, then each \sbol{SequenceAnnotation} it contains with a \sbol{Range} and/or \sbol{Cut} MUST cover a region on the \sbol{elements} of this \sbol{Sequence}. For example, the \sbol{ComponentDefinition} of a eukaryotic gene could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. In order to specify the discontiguous region occupied by its CDS, this gene \sbol{ComponentDefinition} would need a \sbol{SequenceAnnotation} that contains one or more \sbol{Range} objects, each one specifying \sbol{start} and \sbol{end} positions that correspond to indices for the \sbol{elements} of its DNA \sbol{Sequence}. +If the \sbol{ComponentDefinition} does not refer to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then it MUST NOT contain any \sbol{SequenceAnnotation} with a \sbol{Range} or \sbol{Cut} \sbol{Location}. +By contrast, if the \sbol{ComponentDefinition} does refer to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding}, then each \sbol{SequenceAnnotation} it contains with a \sbol{Range} and/or \sbol{Cut} MUST cover a region on the \sbol{elements} of this \sbol{Sequence}. +For example, the \sbol{ComponentDefinition} of a eukaryotic gene could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. In order to specify the discontiguous region occupied by its CDS, this gene \sbol{ComponentDefinition} would need a \sbol{SequenceAnnotation} that contains one or more \sbol{Range} objects, each one specifying \sbol{start} and \sbol{end} positions that correspond to indices for the \sbol{elements} of its DNA \sbol{Sequence}. \subsubsection*{The \sbolheading{sequenceConstraints} property} \label{sec:sequenceConstraints} @@ -1399,6 +1401,7 @@ \subsubsection*{Serialization} \subsubsection{GenericTopLevel} \label{sec:GenericTopLevel} +\label{sec:rdfType} SBOL documents can also be annotated at the top level. SBOL's \sbol{GenericTopLevel} is a top-level entity whose only purpose is to include a set of annotations as described above. diff --git a/overview.tex b/overview.tex index c7e7db8e..bff886a1 100644 --- a/overview.tex +++ b/overview.tex @@ -36,7 +36,7 @@ \section{Overview of SBOL} \end{figure} On the structural side, the \sbol{ComponentDefinition} objects could be a simple flat list, or they could be organized into sub-components---note that both \sbol{ModuleDefinition} and \sbol{ComponentDefinition} can point to themselves, allowing for arbitrary nesting. -\sbol{ComponentDefinition} objects also include the actual \sbol{Sequence} information (if available) as well as \sbol{SequenceAnnotations} that name the promoters, coding sequences, etc., as well as provide location information. +\sbol{ComponentDefinition} objects also include the actual \sbol{Sequence} information (if available) as well as \sbol{SequenceAnnotation} objects that name the promoters, coding sequences, etc., as well as provide location information. The high-level view of Figure 1 is meant as a simple prelude to the full specification of SBOL that we provide in the next section. Importantly, our specification uses the UML (Unified Modeling Language) and Figure 1 is NOT a UML diagram. Figure 2 shows... From 32ae252dec0da272243fb91cd450f2406e81637f Mon Sep 17 00:00:00 2001 From: jakebeal Date: Wed, 27 May 2015 22:40:00 -0500 Subject: [PATCH 219/317] no more undefined types --- apdx-validation.tex | 34 ++++++++-------- model.tex | 96 ++++++++++++++++++++++++++------------------- sbol2.tex | 1 + 3 files changed, 73 insertions(+), 58 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index c1369533..faf6e7d4 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -124,9 +124,9 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{A \sbol{ComponentDefinition} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{types} property is a set of URIs, and it is REQUIRED to include at least one entry. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbolmult{types:CD}{types} property is a set of URIs, and it is REQUIRED to include at least one entry. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{roles} property is an OPTIONAL set of URIs. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbolmult{roles:CD}{roles} property is an OPTIONAL set of URIs. (Reference: \sec{sec:ComponentDefinition})} \printValid{The \sbol{components} property is an OPTIONAL set of \sbol{Component} objects. (Reference: \sec{sec:ComponentDefinition})} @@ -140,18 +140,18 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printWarning{A DNA \sbol{ComponentDefinition} MUST include the URI\\ \url{http://www.biopax.org/release/biopax-level3.owl\#DnaRegion} -in the set of \sbol{types}. (Reference: \sec{sec:ComponentDefinition})} +in the set of \sbolmult{types:CD}{types}. (Reference: \sec{sec:ComponentDefinition})} \printWarning{A RNA \sbol{ComponentDefinition} MUST include the URI\\ -\url{http://www.biopax.org/release/biopax-level3.owl\#RnaRegion} in the set of \sbol{types}. (Reference: \sec{sec:ComponentDefinition})} +\url{http://www.biopax.org/release/biopax-level3.owl\#RnaRegion} in the set of \sbolmult{types:CD}{types}. (Reference: \sec{sec:ComponentDefinition})} \printWarning{A protein \sbol{ComponentDefinition} MUST include the URI\\ -\url{http://www.biopax.org/release/biopax-level3.owl\#Protein} in the set of \sbol{types}. (Reference: \sec{sec:ComponentDefinition})} +\url{http://www.biopax.org/release/biopax-level3.owl\#Protein} in the set of \sbolmult{types:CD}{types}. (Reference: \sec{sec:ComponentDefinition})} \printWarning{A small molecule \sbol{ComponentDefinition} MUST include the URI\\ -\url{http://www.biopax.org/release/biopax-level3.owl\#SmallMolecule} in the set of \sbol{types}. (Reference: \sec{sec:ComponentDefinition})} +\url{http://www.biopax.org/release/biopax-level3.owl\#SmallMolecule} in the set of \sbolmult{types:CD}{types}. (Reference: \sec{sec:ComponentDefinition})} -\printModeling{A least one type in the set of \sbol{types} SHOULD be a URI from the BioPAX or ChEBI ontologies. (Reference: \sec{sec:ComponentDefinition})} +\printModeling{A least one type in the set of \sbolmult{types:CD}{types} SHOULD be a URI from the BioPAX or ChEBI ontologies. (Reference: \sec{sec:ComponentDefinition})} \subsubsection*{Rules for the \class{ComponentInstance} class} \setcounter{sbolCtr}{10601} @@ -162,11 +162,11 @@ \subsubsection*{Rules for the \class{ComponentInstance} class} \url{http://sbols.org/v2\#public} or \url{http://sbols.org/v2\#private}. (Reference: \sec{sec:ComponentInstance})} -\printValid{The \sbol{definition} property is a REQUIRED URI reference to a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} +\printValid{The \sbolmult{definition:CI}{definition} property is a REQUIRED URI reference to a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} -\printModeling{The \sbol{definition} property URI SHOULD reference a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} +\printModeling{The \sbolmult{definition:CI}{definition} property URI SHOULD reference a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} -\printValid{The \sbol{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects. (Reference: \sec{sec:ComponentInstance})} +\printValid{The \sbolmult{mapsTos:CI}{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects. (Reference: \sec{sec:ComponentInstance})} \printValid{A \sbol{Component} object inherits all properties of a \sbol{ComponentInstance} object. (Reference: \sec{sec:ComponentInstance})} @@ -243,7 +243,7 @@ \subsubsection*{Rules for the \class{ModuleDefinition} class} \printValid{A \sbol{ModuleDefinition} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:ModuleDefinition})} -\printValid{The \sbol{roles} property is an OPTIONAL set of URIs. (Reference: \sec{sec:ModuleDefinition})} +\printValid{The \sbolmult{roles:MD}{roles} property is an OPTIONAL set of URIs. (Reference: \sec{sec:ModuleDefinition})} \printValid{The \sbol{modules} property is an OPTIONAL set of \sbol{Module} objects. (Reference: \sec{sec:ModuleDefinition})} @@ -260,9 +260,9 @@ \subsubsection*{Rules for the \class{Module} class} \printValid{A \sbol{Module} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:Module})} -\printValid{The \sbol{definition} property is a REQUIRED URI reference to a \sbol{ModuleDefinition} object. (Reference: \sec{sec:Module})} +\printValid{The \sbolmult{definition:M}{definition} property is a REQUIRED URI reference to a \sbol{ModuleDefinition} object. (Reference: \sec{sec:Module})} -\printValid{The \sbol{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects. (Reference: \sec{sec:Module})} +\printValid{The \sbolmult{mapsTos:M}{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects. (Reference: \sec{sec:Module})} \subsubsection*{Rules for the \class{MapsTo} class} \setcounter{sbolCtr}{11301} @@ -293,9 +293,9 @@ \subsubsection*{Rules for the \class{Interaction} class} \printValid{A \sbol{Interaction} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:Interaction})} -\printValid{The \sbol{types} property is a set of URIs, and it is REQUIRED to include at least one entry. (Reference: \sec{sec:Interaction})} +\printValid{The \sbolmult{types:I}{types} property is a set of URIs, and it is REQUIRED to include at least one entry. (Reference: \sec{sec:Interaction})} -\printModeling{A least one type in the set of \sbol{types} SHOULD be a URI from the occurring entity relationship branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Interaction})} +\printModeling{A least one type in the set of \sbolmult{types:I}{types} SHOULD be a URI from the occurring entity relationship branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Interaction})} \printValid{The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects. (Reference: \sec{sec:Interaction})} @@ -306,9 +306,9 @@ \subsubsection*{Rules for the \class{Participation} class} \printValid{The \sbol{participant} property is a REQUIRED URI that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:Participation})} -\printValid{The \sbol{roles} property is an OPTIONAL set of URIs. (Reference: \sec{sec:Participation})} +\printValid{The \sbolmult{roles:P}{roles} property is an OPTIONAL set of URIs. (Reference: \sec{sec:Participation})} -\printModeling{A least one role in the set of \sbol{roles} SHOULD be a URI from the participant role branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Participation})} +\printModeling{A least one role in the set of \sbolmult{roles:P}{roles} SHOULD be a URI from the participant role branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Participation})} \subsubsection*{Rules for the \class{Collection} class} \setcounter{sbolCtr}{11601} diff --git a/model.tex b/model.tex index c51a014f..cf06c0f0 100644 --- a/model.tex +++ b/model.tex @@ -284,7 +284,7 @@ \subsection{ComponentDefinition} The \sbol{ComponentDefinition} class represents the structural entities of a biological design. The primary usage of this class is to represent structural entities with designed sequences, such as DNA, RNA, and proteins, but it can also be used to represent any other entity that is part of a design, such as small molecules, molecular complexes, and light. -As shown in \ref{uml:component_definition}, the \sbol{ComponentDefinition} class describes a structural design entity using the following properties: \sbol{types}, \sbol{roles}, and \sbol{sequences}. In addition, this class has properties for describing and organizing the substructure of said design entity, including \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations}. +As shown in \ref{uml:component_definition}, the \sbol{ComponentDefinition} class describes a structural design entity using the following properties: \sbolmult{types:CD}{types}, \sbolmult{roles:CD}{roles}, and \sbol{sequences}. In addition, this class has properties for describing and organizing the substructure of said design entity, including \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations}. \begin{figure}[ht] \begin{center} @@ -295,11 +295,14 @@ \subsection{ComponentDefinition} \end{figure} \subsubsection*{The \sbolheading{types} property} -\label{sec:types} +\label{sec:types:CD} -The \sbol{types} property is a REQUIRED set of \external{URI}s that specifies the category of biochemical or physical entity (for example DNA, protein, or small molecule) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. +The \sbolmult{types:CD}{types} property is a REQUIRED set of \external{URI}s that specifies the category of biochemical or physical entity (for example DNA, protein, or small molecule) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. -The \sbol{types} property of every \sbol{ComponentDefinition} MUST contain one or more \external{URI}s that MUST identify terms from appropriate ontologies, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). \ref{tbl:componentdefinition_types} provides a list of RECOMMENDED ontology terms for the \sbol{types} property and their \external{URI}s. In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbol{types}. Finally, if the \sbol{types} property contains multiple \external{URIs}, then they MUST identify synonymous terms. +The \sbolmult{types:CD}{types} property of every \sbol{ComponentDefinition} MUST contain one or more \external{URI}s that MUST identify terms from appropriate ontologies, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). +\ref{tbl:componentdefinition_types} provides a list of RECOMMENDED ontology terms for the \sbolmult{types:CD}{types} property and their \external{URI}s. +In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbolmult{types:CD}{types}. +Finally, if the \sbolmult{types:CD}{types} property contains multiple \external{URIs}, then they MUST identify synonymous terms. \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -312,16 +315,19 @@ \subsubsection*{The \sbolheading{types} property} Small Molecule & \url{http://www.biopax.org/release/biopax-level3.owl#SmallMolecule}\\ \bottomrule \end{edtable} - \caption{RECOMMENDED BioPAX terms to specify the \sbol{types} property of a \sbol{ComponentDefinition}.} + \caption{RECOMMENDED BioPAX terms to specify the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition}.} \label{tbl:componentdefinition_types} \end{table} \subsubsection*{The \sbolheading{roles} property} -\label{sec:roles} +\label{sec:roles:CD} -The \sbol{roles} property is an OPTIONAL set of \external{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} in a biological context. +The \sbolmult{roles:CD}{roles} property is an OPTIONAL set of \external{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} in a biological context. -The \sbol{roles} property of a \sbol{ComponentDefinition} MAY contain one or more \external{URI}s that MUST identify terms from ontologies that are consistent with the \sbol{types} property of the \sbol{ComponentDefinition}. For example, the \sbol{roles} property of a DNA or RNA \sbol{ComponentDefinition} could contain \external{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbol{roles} property and their \external{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). Any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use that term as one of its \sbol{roles}. +The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MAY contain one or more \external{URI}s that MUST identify terms from ontologies that are consistent with the \sbolmult{types:CD}{types} property of the \sbol{ComponentDefinition}. +For example, the \sbolmult{roles:CD}{roles} property of a DNA or RNA \sbol{ComponentDefinition} could contain \external{URI}s identifying terms from the Sequence Ontology (SO). +\ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbolmult{roles:CD}{roles} property and their \external{URI}s. +These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). Any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use that term as one of its \sbolmult{roles:CD}{roles}. \begin{table}[ht] \begin{edtable}{tabular}{lll} @@ -337,7 +343,7 @@ \subsubsection*{The \sbolheading{roles} property} Effector & \url{http://identifiers.org/chebi/CHEBI:35224} & Small Molecule \\ \bottomrule \end{edtable} - \caption{RECOMMENDED ontology terms to specify the \sbol{roles} property of a \sbol{ComponentDefinition}, organized by the type of \sbol{ComponentDefinition} to which they should apply (see \ref{tbl:componentdefinition_types}).} + \caption{RECOMMENDED ontology terms to specify the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition}, organized by the type of \sbol{ComponentDefinition} to which they should apply (see \ref{tbl:componentdefinition_types}).} \label{tbl:componentdefinition_roles} \end{table} @@ -351,7 +357,9 @@ \subsubsection*{The \sbolheading{sequences} property} If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} (see \ref{tbl:sequence_encodings}). -Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbol{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of these \sbol{Sequence} objects MUST have the \sbol{encoding} from \ref{tbl:sequence_encodings} that corresponds to this term. Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbol{types} property MUST refer to the corresponding term from \ref{tbl:componentdefinition_types}. For example, if the \sbol{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}, then its \sbol{types} property must refer to the BioPAX term for DNA. +Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbolmult{types:CD}{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of these \sbol{Sequence} objects MUST have the \sbol{encoding} from \ref{tbl:sequence_encodings} that corresponds to this term. +Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbolmult{types:CD}{types} property MUST refer to the corresponding term from \ref{tbl:componentdefinition_types}. +For example, if the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}, then its \sbolmult{types:CD}{types} property must refer to the BioPAX term for DNA. \subsubsection*{The \sbolheading{components} property} \label{sec:components} @@ -379,7 +387,10 @@ \subsubsection*{The \sbolheading{sequenceConstraints} property} The \sbol{sequenceConstraints} property is OPTIONAL and MAY contain a set of \sbol{SequenceConstraint} objects. These objects describe any restrictions on the relative, sequence-based positions of the \sbol{Component} objects contained by the \sbol{ComponentDefinition}. For example, the \sbol{ComponentDefinition} of a gene may specify that its promoter \sbol{Component} precedes its CDS \sbol{Component}. This is particulary useful when a \sbol{ComponentDefinition} lacks a \sbol{Sequence} and therefore cannot specify the precise, sequence-based positions of its \sbol{Component} objects using \sbol{SequenceAnnotation} objects. \subsubsection*{Serialization} -The serialization of a \sbol{ComponentDefinition} MUST have the form below. The \sbol{sequences}, \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations} properties of a \sbol{ComponentDefinition} contain objects belonging to the appropriate SBOL classes as their values, while the \sbol{types} and \sbol{roles} properties contain \external{URI}s that identify ontology terms as their values. As shown below, each one of these objects and \external{URI}s is serialized as part of an implicit set of SBOL properties with singular rather then plural names. In particular, each object is serialized as a RDF/XML node nested within a singular property, while each \external{URI} is serialized as a \external{rdf:resource} on a singular property. +The serialization of a \sbol{ComponentDefinition} MUST have the form below. +The \sbol{sequences}, \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations} properties of a \sbol{ComponentDefinition} contain objects belonging to the appropriate SBOL classes as their values, while the \sbolmult{types:CD}{types} and \sbolmult{roles:CD}{roles} properties contain \external{URI}s that identify ontology terms as their values. +As shown below, each one of these objects and \external{URI}s is serialized as part of an implicit set of SBOL properties with singular rather then plural names. +In particular, each object is serialized as a RDF/XML node nested within a singular property, while each \external{URI} is serialized as a \external{rdf:resource} on a singular property. \lstsetsbol \begin{lstlisting} @@ -441,15 +452,18 @@ \subsubsection{ComponentInstance} \end{itemize} \paragraph{The \sbolheading{definition} property} -\label{sec:definition} +\label{sec:definition:CI} -The \sbol{definition} property is a REQUIRED \external{URI} that refers to the \sbol{ComponentDefinition} of the \sbol{ComponentInstance}. As described in the previous section, this \sbol{ComponentDefinition} effectively provides information about the \sbol{types} and \sbol{roles} of the \sbol{ComponentInstance}. +The \sbolmult{definition:CI}{definition} property is a REQUIRED \external{URI} that refers to the \sbol{ComponentDefinition} of the \sbol{ComponentInstance}. +As described in the previous section, this \sbol{ComponentDefinition} effectively provides information about the \sbolmult{types:CD}{types} and \sbolmult{roles:CD}{roles} of the \sbol{ComponentInstance}. -The \sbol{definition} property MUST NOT refer to the same \sbol{ComponentDefinition} as that which contains the \sbol{ComponentInstance}. Furthermore, \sbol{ComponentInstance} objects MUST NOT form a circular chain of references via their \sbol{definition} properties and the \sbol{ComponentDefinition} objects that contain them. For example, consider the \sbol{ComponentInstance} objects $A$ and $B$ and the \sbol{ComponentDefinition} objects $X$ and $Y$. The reference chain ``$X$ contains $A$, $A$ is defined by $Y$, $Y$ contains $B$, and $B$ is defined by $X$'' is circular. +The \sbolmult{definition:CI}{definition} property MUST NOT refer to the same \sbol{ComponentDefinition} as that which contains the \sbol{ComponentInstance}. +Furthermore, \sbol{ComponentInstance} objects MUST NOT form a circular chain of references via their \sbolmult{definition:CI}{definition} properties and the \sbol{ComponentDefinition} objects that contain them. +For example, consider the \sbol{ComponentInstance} objects $A$ and $B$ and the \sbol{ComponentDefinition} objects $X$ and $Y$. The reference chain ``$X$ contains $A$, $A$ is defined by $Y$, $Y$ contains $B$, and $B$ is defined by $X$'' is circular. -\paragraph{The \sbolheading{mapsTos} property}\label{sec:mapsTos} +\paragraph{The \sbolheading{mapsTos} property}\label{sec:mapsTos:CI} -The \sbol{mapsTos} property is OPTIONAL and MAY contain a set of \sbol{MapsTo} objects that refer to and link together \sbol{ComponentInstance} objects (both \sbol{Component} objects and \sbol{FunctionalComponent} objects) within a larger design. +The \sbolmult{mapsTos:CI}{mapsTos} property is OPTIONAL and MAY contain a set of \sbol{MapsTo} objects that refer to and link together \sbol{ComponentInstance} objects (both \sbol{Component} objects and \sbol{FunctionalComponent} objects) within a larger design. \ref{sec:MapsTo} contains a more detailed description of the \sbol{MapsTo} class. @@ -558,7 +572,9 @@ \subsubsection{MapsTo} This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``higher level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{local} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}. Finally, the \sbol{access} property of the \sbol{local} \sbol{ComponentInstance} MUST be set to ``public.'' \paragraph{The \sbolheading{remote} property}\label{sec:remote} -This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``lower level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{remote} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that is the \sbol{definition} of the \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}. Lastly, the \sbol{access} property of the \sbol{remote} \sbol{ComponentInstance} MUST be set to ``public.'' +This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``lower level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. +This \sbol{remote} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that is the \sbolmult{definition:CI}{definition} of the \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}. +Lastly, the \sbol{access} property of the \sbol{remote} \sbol{ComponentInstance} MUST be set to ``public.'' \paragraph{The \sbolheading{refinement} property}\label{sec:refinement} The \sbol{refinement} property is REQUIRED and has a data type of \external{URI}. Each \sbol{MapsTo} object MUST specify the relationship between its \sbol{local} and \sbol{remote} \sbol{ComponentInstance} objects using one of the REQUIRED \sbol{refinement} \external{URI}s provided in \ref{tbl:mapsto_refinement}. @@ -568,10 +584,10 @@ \subsubsection{MapsTo} \toprule \textbf{Refinement URI} & \textbf{Description} \\ \midrule - \url{http://sbols.org/v2#useRemote} & All references to the \sbol{definition} property of the \sbol{local} \sbol{ComponentInstance} MUST dereference to that of the \sbol{remote} \sbol{ComponentInstance} instead.\\ - \url{http://sbols.org/v2#useLocal} & In the context of the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the owner of the \sbol{MapsTo}, all references to the \sbol{definition} property of the \sbol{remote} \sbol{ComponentInstance} MUST dereference to that of the \sbol{local} \sbol{ComponentInstance} instead.\\ - \url{http://sbols.org/v2#verifyIdentical} & The \sbol{definition} properties of the \sbol{local} and \sbol{remote} \sbol{ComponentInstance} objects MUST refer to the same \sbol{ComponentDefinition}.\\ - \url{http://sbols.org/v2#merge} & In the context of the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the owner of the \sbol{MapsTo}, all references to the \sbol{definition} property of the \sbol{local} \sbol{ComponentInstance} or that of the \sbol{remote} \sbol{ComponentInstance} MUST dereference to both such properties.\\ + \url{http://sbols.org/v2#useRemote} & All references to the \sbolmult{definition:CI}{definition} property of the \sbol{local} \sbol{ComponentInstance} MUST dereference to that of the \sbol{remote} \sbol{ComponentInstance} instead.\\ + \url{http://sbols.org/v2#useLocal} & In the context of the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the owner of the \sbol{MapsTo}, all references to the \sbolmult{definition:CI}{definition} property of the \sbol{remote} \sbol{ComponentInstance} MUST dereference to that of the \sbol{local} \sbol{ComponentInstance} instead.\\ + \url{http://sbols.org/v2#verifyIdentical} & The \sbolmult{definition:CI}{definition} properties of the \sbol{local} and \sbol{remote} \sbol{ComponentInstance} objects MUST refer to the same \sbol{ComponentDefinition}.\\ + \url{http://sbols.org/v2#merge} & In the context of the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the owner of the \sbol{MapsTo}, all references to the \sbolmult{definition:CI}{definition} property of the \sbol{local} \sbol{ComponentInstance} or that of the \sbol{remote} \sbol{ComponentInstance} MUST dereference to both such properties.\\ \bottomrule \end{edtable} \caption{REQUIRED \external{URI}s for the \sbol{refinement} property.} @@ -616,7 +632,6 @@ \subsubsection{SequenceAnnotation} \end{figure} \paragraph{The \sbolheading{locations} property}\label{sec:locations} -\label{sec:locations} The \sbol{locations} property is a REQUIRED set of one or more \sbol{Location} objects that indicate which \sbol{elements} of a \sbol{Sequence} are described by the \sbol{SequenceAnnotation}. In general, these \sbol{Location} objects SHOULD NOT cover the same \sbol{Sequence} \sbol{elements}. @@ -799,15 +814,13 @@ \subsubsection{SequenceConstraint} \end{figure} \paragraph{The \sbolheading{subject} property}\label{sec:subject} -\label{sec:subject} + This REQUIRED property specifies the URI of the first \sbol{Component} object in the relation. \paragraph{The \sbolheading{object} property}\label{sec:object} -\label{sec:object} This REQUIRED property specifies the URI of the second \sbol{Component} object in the relation. \paragraph{The \sbolheading{restriction} property}\label{sec:restriction} -\label{sec:restriction} This REQUIRED property specifies a URI that identifies the type of relationship between the \sbol{subject} and \sbol{object} \sbol{Component} objects. The RECOMMENDED values for this property are given in \ref{tbl:restriction_types}. @@ -958,8 +971,8 @@ \subsection{ModuleDefinition} As an engineering object, a \sbol{ModuleDefinition} will often have certain of its \sbol{FunctionalComponent} objects that are intended to carry signals in or out of it. This functionality of designated ``inputs'' and ``outputs'' is expressed by \sbol{direction} properties on its \sbol{FunctionalComponent} elements. -\subsubsection*{The \sbolheading{roles} property}\label{sec:roles} -The \sbol{roles} property is an OPTIONAL set of \external{URI}s that clarifies the intended function of a \sbol{ModuleDefinition} in a biological context. +\subsubsection*{The \sbolheading{roles} property}\label{sec:roles:MD} +The \sbolmult{roles:MD}{roles} property is an OPTIONAL set of \external{URI}s that clarifies the intended function of a \sbol{ModuleDefinition} in a biological context. These terms might identify ``logical'' roles, such as ``inverter'' or ``AND gate'', or they might identify descriptive biological roles, such as ``metabolic pathway'' and ``signaling cascade,'' or might identify roles from some other manner of describing intended function. @@ -1041,7 +1054,7 @@ \subsubsection{FunctionalComponent} A \sbol{FunctionalComponent} is an instance of a \sbol{ComponentDefinition} being used as part of a \sbol{ModuleDefinition} Each FunctionalComponent object is owned by a \sbol{ModuleDefinition} and serves as an explicit usage of a \sbol{ComponentDefinition} object for the purpose of fulfilling some function. -\sbol{FunctionalComponent} derives from \sbol{ComponentInstance}, and therefore has the \sbol{definition}, \sbol{access}, and \sbol{mapsTos} properties. +\sbol{FunctionalComponent} derives from \sbol{ComponentInstance}, and therefore has the \sbolmult{definition:CI}{definition}, \sbol{access}, and \sbolmult{mapsTos:CI}{mapsTos} properties. Additionally, it has a \sbol{direction} property that specifies whether it serves as an input, output, both, or neither with regards to the \sbol{ModuleDefinition} that contains it. \paragraph{The \sbolheading{direction} property}\label{sec:direction} @@ -1109,16 +1122,17 @@ \subsubsection{Module} The \sbol{Module} class represents the usage or occurrence of a \sbol{ModuleDefinition} within a larger design (that is, another \sbol{ModuleDefinition}). \paragraph{The \sbolheading{definition} property} -\label{sec:definition} +\label{sec:definition:M} -The \sbol{definition} property is a REQUIRED \external{URI} that refers to the \sbol{ModuleDefinition} for the \sbol{Module}. +The \sbolmult{definition:M}{definition} property is a REQUIRED \external{URI} that refers to the \sbol{ModuleDefinition} for the \sbol{Module}. -The \sbol{definition} property MUST NOT refer to the same \sbol{ModuleDefinition} as that which contains the \sbol{Module}. Furthermore, \sbol{Module} objects MUST NOT form a circular chain of references via their \sbol{definition} properties and the \sbol{ModuleDefinition} objects that contain them. For example, consider the \sbol{Module} objects $A$ and $B$ and the \sbol{ModuleDefinition} objects $X$ and $Y$. The reference chain ``$X$ contains $A$, $A$ is defined by $Y$, $Y$ contains $B$, and $B$ is defined by $X$'' is circular. +The \sbolmult{definition:M}{definition} property MUST NOT refer to the same \sbol{ModuleDefinition} as that which contains the \sbol{Module}. +Furthermore, \sbol{Module} objects MUST NOT form a circular chain of references via their \sbolmult{definition:M}{definition} properties and the \sbol{ModuleDefinition} objects that contain them. For example, consider the \sbol{Module} objects $A$ and $B$ and the \sbol{ModuleDefinition} objects $X$ and $Y$. The reference chain ``$X$ contains $A$, $A$ is defined by $Y$, $Y$ contains $B$, and $B$ is defined by $X$'' is circular. \paragraph{The \sbolheading{mapsTo} property} -\label{sec:mapsTos} +\label{sec:mapsTos:M} -The \sbol{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects that refer to and link \sbol{Module} objects together within a larger design. +The \sbolmult{mapsTos:M}{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects that refer to and link \sbol{Module} objects together within a larger design. \ref{sec:MapsTo} contains a detailed description of the \sbol{MapsTo} class. @@ -1160,17 +1174,17 @@ \subsubsection{Interaction} For example, it can be used to represent regulatory interactions, such as activation or repression, processes from the central dogma of biology, such as transcription and translation, or molecular interactions like non-covalent binding between a small molecule and transcription factor or phosphorylation of a transcription factor by an enzyme. Such an \sbol{Interaction} is represented in SBOL by referring to an ontology defining the type of interaction and declaring how various entities participate in the interaction. -\paragraph{The \sbolheading{types} property}\label{sec:types} +\paragraph{The \sbolheading{types} property}\label{sec:types:I} -The \sbol{types} property is a REQUIRED set of one or more URIs that identify an appropriate ontology term describing the behavior represented by this \sbol{Interaction}. +The \sbolmult{types:I}{types} property is a REQUIRED set of one or more URIs that identify an appropriate ontology term describing the behavior represented by this \sbol{Interaction}. If an \sbol{Interaction} object has multiple -\sbol{types} URIs, then they must identify synonymous terms. +\sbolmult{types:I}{types} URIs, then they must identify synonymous terms. Values for this URI are RECOMMENDED to be chosen from the occurring entity relationship branch of the Systems Biology Ontology (SBO), where possible. \paragraph{The \sbolheading{participations} property}\label{sec:participations} -The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects, each of which identifies a \sbol{FunctionalComponent} and the \sbol{roles} it plays in the interaction. +The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects, each of which identifies a \sbol{FunctionalComponent} and the \sbolmult{roles:P}{roles} it plays in the interaction. \paragraph{Serialization} @@ -1222,17 +1236,17 @@ \subsubsection{Participation} particular \sbol{FunctionalComponent} plays in its parent \sbol{Interaction}. -\paragraph{The \sbolheading{roles} property}\label{sec:roles} +\paragraph{The \sbolheading{roles} property}\label{sec:roles:P} -The \sbol{roles} property is an OPTIONAL set of URIs that identify an appropriate ontology term describing this elements relationship to its parent \sbol{Interaction}. +The \sbolmult{roles:P}{roles} property is an OPTIONAL set of URIs that identify an appropriate ontology term describing this elements relationship to its parent \sbol{Interaction}. If a \sbol{Participation} object has multiple -\sbol{roles} URIs, then they must identify synonymous terms. +\sbolmult{roles:P}{roles} URIs, then they must identify synonymous terms. Values for this URI are RECOMMENDED to be chosen from the participant role branch of the Systems Biology Ontology (SBO) where possible. \paragraph{The \sbolheading{participant} property}\label{sec:participant} -The \sbol{participant} property MUST specify precisely one \sbol{FunctionalComponent} object that plays the designated \sbol{roles} in its parent \sbol{Interaction} object. +The \sbol{participant} property MUST specify precisely one \sbol{FunctionalComponent} object that plays the designated \sbolmult{roles:P}{roles} in its parent \sbol{Interaction} object. \paragraph{Serialization} diff --git a/sbol2.tex b/sbol2.tex index fb2bccba..8600f704 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -85,6 +85,7 @@ %Commands to format SBOL terms in the document \newcommand{\sbolheading}[1]{\texttt{#1}} \newcommand{\sbol}[1]{\texttt{\hyperref[sec:#1]{#1}}} +\newcommand{\sbolmult}[2]{\texttt{\hyperref[sec:#1]{#2}}} \newcommand{\refObj}[1]{$\langle$#1$\rangle$} % Decision vs. Low-Priority Decision vs. Clarification TODOs: \newcommand{\Dtodo}[1]{\todo[inline,color=red]{#1}} From 494d0c37db84adee855ee1e921e4206dee3186e5 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Thu, 28 May 2015 17:01:20 +0000 Subject: [PATCH 220/317] Update on Overleaf. --- model.tex | 83 ++++++++++++++++++++++++-------------------------- overview.tex | 18 ++++++++--- sbol.bib | 54 +++++++++++++++++++++++++++++++- vocabulary.tex | 6 ++-- 4 files changed, 111 insertions(+), 50 deletions(-) diff --git a/model.tex b/model.tex index cf06c0f0..b59101d6 100644 --- a/model.tex +++ b/model.tex @@ -49,6 +49,12 @@ \subsection{Naming and Font Conventions} \subsection{Data Types} \label{sec:datatypes} +\label{sec:string} +\label{sec:integer} +\label{sec:double} +\label{sec:boolean} +\label{sec:URI} +\label{sec:QName} When SBOL use simple ``primitive'' data types such as strings or integers, these are defined as the following specific formal types: \begin{itemize} @@ -124,7 +130,7 @@ \subsubsection*{The \sbolheading{wasDerivedFrom} property} The \sbol{wasDerivedFrom} property is OPTIONAL and has a data type of \external{URI}. An SBOL object with this property refers to another SBOL object or non-SBOL resource from which this object was derived. -If the \sbol{wasDerivedFrom} property of an SBOL object $A$ refers to another SBOL object $B$ with the same \sbol{persistentIdentity}, and both $A$ and $B$ have a \sbol{version}, then the \sbol{version} of $B$ MUST come before that of $A$. In addition, an SBOL object MUST NOT refer to itself via its own \sbol{wasDerivedFrom} property or form a circular chain of references via its \sbol{wasDerivedFrom} property and those of other SBOL objects. For example, the reference chain ``$A$ was derived from $B$ and $B$ was derived from $A$'' is circular. +If the \sbol{wasDerivedFrom} property of an SBOL object $A$ refers to another SBOL object $B$ that has the same \sbol{persistentIdentity}, and both $A$ and $B$ have a \sbol{version}, then the \sbol{version} of $B$ MUST come before that of $A$. In addition, an SBOL object MUST NOT refer to itself via its own \sbol{wasDerivedFrom} property or form a circular chain of references via its \sbol{wasDerivedFrom} property and those of other SBOL objects. For example, the reference chain ``$A$ was derived from $B$ and $B$ was derived from $A$'' is circular. \subsubsection*{The \sbolheading{name} property} \label{sec:name} @@ -340,6 +346,7 @@ \subsubsection*{The \sbolheading{roles} property} Terminator & \url{http://identifiers.org/so/SO:0000141} & DNA \\ Gene & \url{http://identifiers.org/so/SO:0000704} & DNA \\ mRNA & \url{http://identifiers.org/so/SO:0000234} & RNA \\ + Operator & \url{http://identifiers.org/so/SO:0000057} & RNA \\ Effector & \url{http://identifiers.org/chebi/CHEBI:35224} & Small Molecule \\ \bottomrule \end{edtable} @@ -368,7 +375,7 @@ \subsubsection*{The \sbolheading{components} property} While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple copies of a particular part. For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \sbol{ComponentDefinition} of a CDS. -If the \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects, then at least one of them MUST have the same \sbol{encoding} as a \sbol{Sequence} from the \sbol{ComponentDefinition} of each \sbol{Component} in the \sbol{components} property. In addition, it MUST be possible to align the \sbol{elements} of these \sbol{encoding}-matched \sbol{Sequence} objects, subject to any restrictions imposed by each \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} that refers to the \sbol{Component} objects for these \sbol{Sequence} objects. For example, a DNA \sbol{ComponentDefinition} could refer to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and its \sbol{elements} set to ``{\tt gattaca}.'' In this case, any \sbol{Component} contained by this \sbol{ComponentDefinition} would itself need to have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and \sbol{elements} that can be aligned with ``{\tt gattaca},'' such as ``{\tt gatta}," or ``{\tt tgta}'' in the case of a \sbol{Component} that is positioned by a \sbol{SequenceAnnotation} that has a \sbol{Location} with its \sbol{orientation} set to ``reverse complement'' (see \ref{sec:Location}). +If the \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then this \sbol{Sequence} MUST have the same \sbol{encoding} as a \sbol{Sequence} from the \sbol{ComponentDefinition} of each \sbol{Component} in the \sbol{components} property. In addition, it MUST be possible to align the \sbol{elements} of the latter \sbol{Sequence} objects to the \sbol{elements} of the former \sbol{Sequence}, subject to any restrictions imposed by the \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} objects that refer to the contents of the \sbol{components} property. For example, a DNA \sbol{ComponentDefinition} could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and its \sbol{elements} set to ``{\tt gattaca}.'' In this case, any \sbol{Component} contained by this \sbol{ComponentDefinition} would itself need to have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and \sbol{elements} that can be aligned with ``{\tt gattaca},'' such as ``{\tt gatta}," or perhaps ``{\tt tgta}'' in the case of a \sbol{Component} that is positioned by a \sbol{SequenceAnnotation} with a \sbol{Location} \sbol{orientation} set to ``reverse complement'' (see \ref{sec:Location}). % Furthermore, this \sbol{Sequence} MUST have the same \external{IUPAC} \sbol{encoding} as a \sbol{Sequence} of the parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. @@ -377,14 +384,13 @@ \subsubsection*{The \sbolheading{sequenceAnnotations} property} The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. Each \sbol{SequenceAnnotation} specifies and describes a potentially discontiguous region on the \sbol{Sequence} objects referred to by the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at the region specified by its \sbol{Location} objects (see \ref{sec:Location}). -If the \sbol{ComponentDefinition} does not refer to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then it MUST NOT contain any \sbol{SequenceAnnotation} with a \sbol{Range} or \sbol{Cut} \sbol{Location}. -By contrast, if the \sbol{ComponentDefinition} does refer to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding}, then each \sbol{SequenceAnnotation} it contains with a \sbol{Range} and/or \sbol{Cut} MUST cover a region on the \sbol{elements} of this \sbol{Sequence}. +If a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{SequenceAnnotation} it contains with a \sbol{Range} and/or \sbol{Cut} MUST specify a region on the \sbol{elements} of this \sbol{Sequence}. For example, the \sbol{ComponentDefinition} of a eukaryotic gene could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. In order to specify the discontiguous region occupied by its CDS, this gene \sbol{ComponentDefinition} would need a \sbol{SequenceAnnotation} that contains one or more \sbol{Range} objects, each one specifying \sbol{start} and \sbol{end} positions that correspond to indices for the \sbol{elements} of its DNA \sbol{Sequence}. \subsubsection*{The \sbolheading{sequenceConstraints} property} \label{sec:sequenceConstraints} -The \sbol{sequenceConstraints} property is OPTIONAL and MAY contain a set of \sbol{SequenceConstraint} objects. These objects describe any restrictions on the relative, sequence-based positions of the \sbol{Component} objects contained by the \sbol{ComponentDefinition}. For example, the \sbol{ComponentDefinition} of a gene may specify that its promoter \sbol{Component} precedes its CDS \sbol{Component}. This is particulary useful when a \sbol{ComponentDefinition} lacks a \sbol{Sequence} and therefore cannot specify the precise, sequence-based positions of its \sbol{Component} objects using \sbol{SequenceAnnotation} objects. +The \sbol{sequenceConstraints} property is OPTIONAL and MAY contain a set of \sbol{SequenceConstraint} objects. These objects describe any restrictions on the relative, sequence-based positions and/or orientations of the \sbol{Component} objects contained by the \sbol{ComponentDefinition}. For example, the \sbol{ComponentDefinition} of a gene may specify that its promoter \sbol{Component} precedes its CDS \sbol{Component}. This is particulary useful when a \sbol{ComponentDefinition} lacks a \sbol{Sequence} and therefore cannot specify the precise, sequence-based positions of its \sbol{Component} objects using \sbol{SequenceAnnotation} objects. \subsubsection*{Serialization} The serialization of a \sbol{ComponentDefinition} MUST have the form below. @@ -637,9 +643,7 @@ \subsubsection{SequenceAnnotation} In general, these \sbol{Location} objects SHOULD NOT cover the same \sbol{Sequence} \sbol{elements}. \paragraph{The \sbolheading{component} property}\label{sec:component} -The \sbol{component} property is OPTIONAL and has a data type of \external{URI}. This \external{URI} MUST refer to a \sbol{Component} that is contained by the same parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. In this way, the properties of the \sbol{SequenceAnnotation}, such as its \sbol{description} and \sbol{locations}, are associated with part of its parent \sbol{ComponentDefinition}'s substructure. A \sbol{SequenceAnnotation} MUST NOT refer to the same \sbol{Component} as another \sbol{SequenceAnnotation}. - -Lastly, if a \sbol{SequenceAnnotation} contains a \sbol{Range} or \sbol{Cut} \sbol{Location} (see \ref{sec:Location}), then any \sbol{Component} it refers to MUST have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}. +The \sbol{component} property is OPTIONAL and has a data type of \external{URI}. This \external{URI} MUST refer to a \sbol{Component} that is contained by the same parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. In this way, the properties of the \sbol{SequenceAnnotation}, such as its \sbol{description} and \sbol{locations}, are associated with part of the substructure of its \sbol{ComponentDefinition}. A \sbol{SequenceAnnotation} MUST NOT refer to the same \sbol{Component} as another \sbol{SequenceAnnotation}. \paragraph{Serialization} @@ -688,15 +692,15 @@ \subsubsection{Location} \paragraph{The \sbolheading{orientation} property} \label{sec:orientation} -The \sbol{orientation} property is OPTIONAL and has a data type of \external{URI}. All subclasses of \sbol{Location} share this property, which can be used to specify how a \sbol{SequenceAnnotation} and any associated double-stranded \sbol{Component} should be oriented on the \sbol{Sequence} of their parent \sbol{ComponentDefinition}. \ref{tbl:orientation_types} provides a list of REQUIRED \sbol{orientation} \external{URI}s. If a \sbol{Location} object has an \sbol{orientation}, then it MUST come from \ref{tbl:orientation_types}. +The \sbol{orientation} property is OPTIONAL and has a data type of \external{URI}. All subclasses of \sbol{Location} share this property, which can be used to indicate how the region specified by the \sbol{SequenceAnnotation} and any associated double-stranded \sbol{Component} is oriented on the \sbol{elements} of a \sbol{Sequence} from their parent \sbol{ComponentDefinition}. \ref{tbl:orientation_types} provides a list of REQUIRED \sbol{orientation} \external{URI}s. If a \sbol{Location} object has an \sbol{orientation}, then it MUST come from \ref{tbl:orientation_types}. \begin{table}[ht] \begin{edtable}{tabular}{lp{3.75in}} \toprule \textbf{Orientation URI} & \textbf{Description} \\ \midrule - \url{http://sbols.org/v2\#inline} & The region specified by this \sbol{Location} MUST be on the \sbol{elements} of a \sbol{Sequence} owned by the same \sbol{ComponentDefinition} that owns this \sbol{Location} \\ - \url{http://sbols.org/v2\#reverseComplement} & The region specified by this \sbol{Location} MUST be on the reverse-complement translation of the \sbol{elements} of a \sbol{Sequence} owned by the same \sbol{ComponentDefinition} that owns this \sbol{Location}. The defintion of this translation depends on the \sbol{encoding} of \sbol{Sequence} \\ + \url{http://sbols.org/v2\#inline} & The region specified by this \sbol{Location} MUST be on the \sbol{elements} of a \sbol{Sequence}. \\ + \url{http://sbols.org/v2\#reverseComplement} & The region specified by this \sbol{Location} MUST be on the reverse-complement translation of the \sbol{elements} of a \sbol{Sequence}. The exact nature of this translation depends on the \sbol{encoding} of the \sbol{Sequence}. \\ \bottomrule \end{edtable} \caption{REQUIRED \external{URI}s for the \sbol{orientation} property} @@ -706,13 +710,13 @@ \subsubsection{Location} \paragraph{Range} \label{sec:Range} -A \sbol{Range} object specifies inclusive start and end positions. These properties are required in \sbol{Range} objects and they can have \external{integer} values greater than zero. +A \sbol{Range} object specifies a region via discrete, inclusive \sbol{start} and \sbol{end} positions that correspond to indices for characters in the \sbol{elements} \external{String} of a \sbol{Sequence}. \paragraph{The \sbolheading{start} property}\label{sec:start} -Specifies the start of a \sbol{Range}. This property is REQUIRED and can have \external{integer} values greater than zero. +The \sbol{start} property specifies the inclusive starting position of the \sbol{Range}. This property is REQUIRED and MUST contain \external{Integer} value greater than zero. \paragraph{The \sbolheading{end} property}\label{sec:end} -Specifies the end of a \sbol{Range}. This property is REQUIRED and can have \external{integer} values greater than zero. +The \sbol{end} property specifies the inclusive ending position of the \sbol{Range}. This property is REQUIRED and MUST contain an \external{Integer} value greater than zero. \paragraph{Serialization} @@ -727,7 +731,7 @@ \subsubsection{Location} \end{lstlisting} -The example below shows the serialization of a \sbol{Range} object. It specifies the region between 56 and 68, and the orientation is given as \external{inline}. +The example below shows the serialization of a \sbol{Range} object. It specifies the region between the inclusive positions 56 and 68, with an \sbol{orientation} of ``inline.'' \lstsetsbol \begin{lstlisting} @@ -741,13 +745,12 @@ \subsubsection{Location} \paragraph{Cut} \label{sec:Cut} -The \sbol{Cut} class has been introduced to enable the specification of a location between two indices. -Each \sbol{Cut} object has the property \sbol{at}. +The \sbol{Cut} class has been introduced to enable the specification of a region between two discrete positions. +This specification is accomplished using the \sbol{at} property, which specifies a discrete position that that corresponds to the index of a character in the \sbol{elements} \external{String} of a \sbol{Sequence} (except in the case when \sbol{at} is equal to zero---see below). \paragraph{The \sbolheading{at} property} \label{sec:at} -The REQUIRED \sbol{at} property is an index greater than or equal to zero that specifies the index just before the location represented by the Cut object. -A Cut object with \sbol{at} equal to zero represents the location just before index one (even though there is no zero index on Structure objects in SBOL). +The \sbol{at} property is REQUIRED and MUST contain an \external{Integer} value greater than or equal to zero. The region specified by the \sbol{Cut} is between the position specified by this property and the position that immediately follows it. When the \sbol{at} property is equal to zero, the specified region is immediately before the first discrete position or character in the \sbol{elements} \external{String} of a \sbol{Sequence}. \paragraph{Serialization} @@ -761,7 +764,7 @@ \subsubsection{Location} \end{lstlisting} -The example below shows the serialization of a \sbol{Cut} object. It specifies the location after 27, and the orientation is given as \external{inline}. +The example below shows the serialization of a \sbol{Cut} object. It specifies a region in between positions 10 and 11, with an \sbol{orientation} of ``inline.'' \lstsetsbol \begin{lstlisting} @@ -777,9 +780,8 @@ \subsubsection{Location} \label{sec:GenericLocation} While the \sbol{Range} and \sbol{Cut} classes are best suited to -describing locations on sequential structures, the -\sbol{GenericLocation} is included as a hook for extensions, e.g., for -describing locations in non-sequential structures. +specifying regions on \sbol{Sequence} objects with \external{IUPAC} encodings, the +\sbol{GenericLocation} class is included as a starting point for specifying regions on \sbol{Sequence} objects with different \sbol{encoding} properties and potentially nonlinear structure. This class can also be used to set the \sbol{orientation} of a \sbol{SequenceAnnotation} and any associated \sbol{Component} when their parent \sbol{ComponentDefinition} lacks a \sbol{Sequence} and therefore represents a partial design. \paragraph{Serialization} @@ -792,7 +794,7 @@ \subsubsection{Location} \end{lstlisting} -The example below shows the serialization of a \sbol{GenericLocation} object with a reverse orientation: +The example below shows the serialization of a \sbol{GenericLocation} object with an \sbol{orientation} of ``reverse complement'': \lstsetsbol \begin{lstlisting} @@ -802,8 +804,8 @@ \subsubsection{Location} \subsubsection{SequenceConstraint} \label{sec:SequenceConstraint} -A \sbol{ComponentDefinition} can use objects of the \sbol{SequenceConstraint} class to assert various structural restrictions between pairs of its \sbol{Component} objects. -The primary purpose of the \sbol{SequenceConstraint} class is to enable the specification of partially designed \sbol{ComponentDefinition} objects, for which the precise position or ordering of their sub-\sbol{Component} objects is not yet fully determined. Each \sbol{SequenceConstraint} includes the \sbol{restriction}, \sbol{subject}, and \sbol{object} properties. +The \sbol{SequenceConstraint} class can used to assert restrictions on the relative, sequence-based positions of pairs of \sbol{Component} objects contained by the same parent \sbol{ComponentDefinition}. +The primary purpose of the \sbol{SequenceConstraint} class is to enable the specification of partially designed \sbol{ComponentDefinition} objects, for which the precise positions or ordering of their contained \sbol{Component} objects are not yet fully determined. Each \sbol{SequenceConstraint} includes the \sbol{restriction}, \sbol{subject}, and \sbol{object} properties. \begin{figure}[ht] \begin{center} @@ -814,30 +816,28 @@ \subsubsection{SequenceConstraint} \end{figure} \paragraph{The \sbolheading{subject} property}\label{sec:subject} - -This REQUIRED property specifies the URI of the first \sbol{Component} object in the relation. +The \sbol{subject} property is REQUIRED and MUST contain a \sbol{URI} that refers to a \sbol{Component} contained by the same parent \sbol{ComponentDefinition} that contains the \sbol{SequenceConstraint}. \paragraph{The \sbolheading{object} property}\label{sec:object} -This REQUIRED property specifies the URI of the second \sbol{Component} object in the relation. +The \sbol{object} property is REQUIRED and MUST contain a \sbol{URI} that refers to a \sbol{Component} contained by the same parent \sbol{ComponentDefinition} that contains the \sbol{SequenceConstraint}. This \sbol{Component} MUST NOT be the same \sbol{Component} that the \sbol{SequenceConstraint} refers to via its \sbol{subject} property. \paragraph{The \sbolheading{restriction} property}\label{sec:restriction} -This REQUIRED property specifies a URI that identifies the type of relationship between the \sbol{subject} and \sbol{object} \sbol{Component} objects. -The RECOMMENDED values for this property are given in \ref{tbl:restriction_types}. +The \sbol{restriction} property is REQUIRED and has a data type of \external{URI}. This property is used to indicate the type of structural restriction on the relative, sequence-based positions or orientations of the \sbol{subject} and \sbol{object} \sbol{Component} objects. The \external{URI} value of this property MUST come from the RECOMMENDED \external{URI}s in \ref{tbl:restriction_types} or it MUST refer to an appropriate ontology term. -Note: With regards to SBOL Version 1.1., this is a generalization of former \sbol{SequenceAnnotation} property \external{precedes}. +% Note: With regards to SBOL Version 1.1., this is a generalization of former \sbol{SequenceAnnotation} property \external{precedes}. \begin{table}[ht] \begin{edtable}{tabular}{ll} \toprule - \textbf{Restriction Types} & Subject/Object Relation \\ + \textbf{Restriction URI} & \textbf{Description} \\ \midrule - http://sbols.org/v2\#precedes & Subject location is strictly less than object location \\ - http://sbols.org/v2\#sameOrientationAs & Subject and object have equal orientation URIs\\ - http://sbols.org/v2\#oppositeOrientationAs & Object orientation is ``opposite'' of subject\\ + http://sbols.org/v2\#precedes & The position of the \sbol{subject} \sbol{Component} MUST precede that of the \sbol{object} \sbol{Component} \\ + http://sbols.org/v2\#sameOrientationAs & The \sbol{subject} and \sbol{object} \sbol{Component} objects MUST have the same orientation.\\ + http://sbols.org/v2\#oppositeOrientationAs & The \sbol{subject} and \sbol{object} \sbol{Component} objects MUST have opposite orientations. \\ \bottomrule \end{edtable} - \caption{URI constants for \sbol{restriction} values} + \caption{RECOMMENDED \external{URI}s for the \sbol{restriction} property} \label{tbl:restriction_types} \end{table} @@ -845,7 +845,7 @@ \subsubsection{SequenceConstraint} \paragraph{Serialization} -The serialization of \sbol{SequenceConstraint} objects has the following form: +The serialization of a \sbol{SequenceConstraint} MUST have the following form: \lstsetsbol \begin{lstlisting} @@ -1337,6 +1337,7 @@ \subsection{Extending the SBOL Representation: Annotations} \subsubsection{Annotating SBOL objects} % whole set of labels for the properties defined herein +\label{sec:qName} \label{sec:value} \label{sec:Annotation} \label{sec:AnnotationValue} @@ -1344,11 +1345,7 @@ \subsubsection{Annotating SBOL objects} \label{sec:nestedQName} \label{sec:nestedURI} -Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. The \sbol{name} property is specified by a qualified name (\external{QName}), which is composed of a namespace, a prefix, and a local name. The \sbol{value} property can be a literal type (i.e., \external{String}, \external{Integer}, \external{Double}, \external{Boolean}), \external{URI}, or a \sbol{NestedAnnotations} object. The \sbol{NestedAnnotations} object is composed of a \sbol{nestedQName}, \sbol{nestedURI}, and an optional list of nested \sbol{annotations}. - -\Rtodo{NIC: Please update UML as follows: remove link from Identifed to AnnotationValue, change type of name to QName, add new class NestedAnnotations that inherits from AnnotationValue with properties nestedQName : QName, nestedURI : URI, and a 0..* annotations link to the Annotation class. - -Done. Also changed ``name'' property of Annotation class to ``qName'' to be consistent with ``nestedQName'' property of NestedAnnotations class. } +Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. The \sbol{qName} property is specified by a qualified name (\external{QName}), which is composed of a namespace, a prefix, and a local name. The \sbol{value} property can be a literal type (i.e., \external{String}, \external{Integer}, \external{Double}, \external{Boolean}), \external{URI}, or a \sbol{NestedAnnotations} object. The \sbol{NestedAnnotations} object is composed of a \sbol{nestedQName}, \sbol{nestedURI}, and an optional list of nested \sbol{annotations}. \begin{figure}[!ht] \begin{center} diff --git a/overview.tex b/overview.tex index bff886a1..48881532 100644 --- a/overview.tex +++ b/overview.tex @@ -7,6 +7,8 @@ \section{Overview of SBOL} The only content to keep is some version of Figure 2, -- jhg } +\Rtodo{I went through and did some light editing to the text. Excellent job John! I also added some references that were needed in the text - KC } + Synthetic biology designs can be described using both structural and functional terms: \begin{itemize} \item We can describe the physical structure of the design, e.g., a set of sequences or information about chemical makeup. @@ -14,9 +16,9 @@ \section{Overview of SBOL} \end{itemize} In broad strokes, SBOL 1.1 focuses on physical, structural information, whereas SBOL 2.0 includes functional aspects. The physical information about a designed genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. SBOL 2.0 extends v1.1 in several ways: it allows for functional descriptions of the design and its interaction, and it extends physical descriptions to include entities beyond DNA sequences. -As an example, consider the design of an expression cassette, such as pUC18, a device that is designed to detect successful versus unsuccessful molecular cloning. As an overall system, the device is designed to grow either blue-colored (unsuccessful) or white-colored (successful) colonies in the presence of IPTG and the chemical X-gal. Internally, the device has a number of parts, including a promoter, the lac repressor binding site, and the lacZ coding sequence. These parts have specific component-level interactions with IPTG and X-gal that collectively lead to the desired system-level behavior. +As an example, consider the design of an expression cassette, such as found in the plasmid pUC18 \cite{L08752.1}, a device that is designed to detect successful versus unsuccessful molecular cloning. As an overall system, the device is designed to grow either blue-colored (unsuccessful) or white-colored (successful) colonies in the presence of IPTG and the chemical X-gal. Internally, the device has a number of parts, including a promoter, the lac repressor binding site, and the lacZ coding sequence. These parts have specific component-level interactions with IPTG and X-gal, as well as native host gene products, transcriptional and translational machinery that collectively lead to the desired system-level behavior. -Understanding how such a device works and how it might be adapted to new experimental applications is currently passed on through working with fellow scientists or reading articles in papers and books. But there is no systematic way of communicating the integration of sequence with functional design, so users typically have to look in many different places to develop an understanding of this system. +Understanding how such a device works within the context of a host and how it might be adapted to new experimental applications is currently passed on through working with fellow scientists or reading articles in papers and books. But there is no systematic way of communicating the integration of sequence with functional design, so users typically have to look in many different places to develop an understanding of this system. The SBOL standard allows designers to describe these functional characteristics, and to connect them to the physical parts and sequences that make up the design. SBOL includes main classes that match the structural/physical distinction above: @@ -27,6 +29,8 @@ \section{Overview of SBOL} Figure 1 shows a simplified view of these classes, as well as other helper classes in SBOL. To continue with the pUC18 example, the description would begin by creating a top-level \sbol{ModuleDefinition}. This object could then point to a \sbol{Model} object if it exists, for example, an SBML model of the behavior of this design. The \sbol{ModuleDefinition} would also include a number of \sbol{ComponentDefinition} objects. These would specify the structural elements that make up the cassette. Finally, the \sbol{ModuleDefinition} could specify \sbol{Interaction} objects that describe any internal functional relationships among components. +\Rtodo{I think the paragraph above and below should be weaved together. Also, I think you should start with the structural part then the functional part. You should highlight that the structural part is largely 1.1 classes though they are extended. The functional part is completely new.} + \begin{figure}[ht] \begin{center} \includegraphics[scale=0.7]{images/OverviewFigforSpec-v6.png} @@ -38,9 +42,15 @@ \section{Overview of SBOL} On the structural side, the \sbol{ComponentDefinition} objects could be a simple flat list, or they could be organized into sub-components---note that both \sbol{ModuleDefinition} and \sbol{ComponentDefinition} can point to themselves, allowing for arbitrary nesting. \sbol{ComponentDefinition} objects also include the actual \sbol{Sequence} information (if available) as well as \sbol{SequenceAnnotation} objects that name the promoters, coding sequences, etc., as well as provide location information. -The high-level view of Figure 1 is meant as a simple prelude to the full specification of SBOL that we provide in the next section. Importantly, our specification uses the UML (Unified Modeling Language) and Figure 1 is NOT a UML diagram. Figure 2 shows... +% The high-level view of Figure 1 is meant as a simple prelude to the full specification of SBOL that we provide in the next section. Importantly, our specification uses the UML (Unified Modeling Language) and Figure 1 is NOT a UML diagram. Figure 2 shows... + +\Rtodo{I think the reader does not even know we will be talking about UML yet - I don't see an expectation that this should be XML - KC, Agreed, text above seems unnecessary here.} + +\Rtodo{Do you even need Figure 2 at this point? We've provided a high level overview, but not gone into details. Do we need to? - KC Yes, we do need the more detailed description here. This section is meant to ease the readers into the data model. It is being done in stages with the second diagram expanding the details. The main point of the expanded figure will be to introduce the "tricky" concept of instantiations which is very important going forward.} + +\Ctodo{Need explanation of Figure 2 here. Also, need Figure 2 to be updated to follow style of Figure 1.} -SBOL aims to facilitate the communication and reuse of synthetic biology designs. Given that these designs leverage biochemical knowledge and that they ultimately affect biological systems, it is important that SBOL interacts well with other relevant standards and resources, such as GenBank, SBML, ChEBI, or the Sequence Ontology. Thus, SBOL leverages semantic web technologies, using RDF as a serialization format, and URIs (\emph{Universal Resource Identifiers}) for its objects. URIs allow for direct and un-ambiguous reuse of designs---if a designer in Newcastle wishes to refer to a particular design built in California, he or she can simply name the URI of the ModuleDefinition that describes that design. +SBOL aims to facilitate the communication and reuse of synthetic biology designs. Given that these designs leverage biochemical knowledge and that they ultimately affect biological systems, it is important that SBOL interacts well with other relevant standards and resources, such as GenBank \cite{genbank}, SwissProt \cite{swissprot}, SBML \cite{SBML}, ChEBI\cite{chebi}, or the Sequence Ontology \cite{so}. Thus, SBOL leverages semantic web technologies, using RDF as a serialization format, and URIs (\emph{Universal Resource Identifiers}) for its objects. URIs allow for direct and un-ambiguous reuse of designs---if a designer in Newcastle wishes to refer to a particular design built in California, he or she can simply name the URI of the ModuleDefinition that describes that design. In sum, we hope that the SBOL standard will enable sharing of synthetic biology designs across the web, and allow developers to more easily build up rich, complex designs by re-using the work of others. diff --git a/sbol.bib b/sbol.bib index b2347eb3..6c89ad61 100644 --- a/sbol.bib +++ b/sbol.bib @@ -1,3 +1,5 @@ +\LDtodo{I added further references from the Overview to this section - KC} + @article{roehner2014proposed, title={Proposed data model for the next version of the Synthetic Biology Open Language}, author={Roehner, Nicholas and Oberortner, Ernst and Pocock, Matthew and Beal, Jacob and Clancy, Kevin and Madsen, Curtis and Misirli, Goksel and Wipat, Anil and Sauro, Herbert and Myers, Chris J}, @@ -93,4 +95,54 @@ @techreport{dcmi2012 type = {{DCMI} Recommendation}, url = {http://dublincore.org/documents/2012/06/14/dcmi-terms/}, year = 2012 -} \ No newline at end of file +} + +@article{ L08752.1, +author = {Norrander,J and Kempe,T and Messing,J}, +title = {Construction of improved M13 vectors using oligodeoxynucleotide-directed mutagenesis}, +journal = {Gene}, + volume = 26, + pages = {101-106}, + year = {1983}, + url = {http://www.ncbi.nlm.nih.gov/nuccore/L08752.1} +} + +@article{ genbank, +author = {Dennis A. Benson and Mark Cavanaugh and Karen Clark and Ilene Karsch-Mizrachi and David J. Lipman and James Ostell and Eric W. Sayers}, +title = {GenBank}, +journal = {Nucleic Acids Research}, + volume = 41, + pages = {D36-D42}, + year = {2013}, + url = {http://nar.oxfordjournals.org/content/41/D1/D36.short} +} + +@article{ chebi, +author = {Kirill Degtyarenko and Paula de Matos and Marcus Ennis and Janna Hastings and Martin Zbinden and Alan McNaught and Rafael Alcántara and Michael Darsow and Mickaël Guedj and Michael Ashburner}, +title = {ChEBI: a database and ontology for chemical entities of biological interest}, +journal = {Nucleic Acids Research}, + volume = 36, + pages = {D344-D350}, + year = {2008}, + url = {http://nar.oxfordjournals.org/content/36/suppl_1/D344.short} +} + +@article{ so, +author = {Karen Eilbeck and Suzanna E Lewis and Christopher J Mungall and Mark Yandell and Lincoln Stein and Richard Durbin and Michael Ashburner}, +title = {The Sequence Ontology: a tool for the unification of genome annotations}, +journal = {Genome Biology}, + volume = 6, + pages = {R44}, + year = {2005}, + url = {http://genomebiology.com/content/6/5/R44} +} + +@article{ swissprot, +author = {Brigitte Boeckmann and Marie-Claude Blatter and Livia Famiglietti and Ursula Hinz and Lydie Lane and Bernd Roechert and Amos Bairoch}, +title = {Protein variety and functional diversity: Swiss-Prot annotation in its biological context}, +journal = {Comptes Rendus Biologies}, + volume = 328, + pages = {882-899}, + year = {2005}, + url = {http://www.sciencedirect.com/science/article/pii/S1631069105001101} +} diff --git a/vocabulary.tex b/vocabulary.tex index d910b17b..972951fa 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -2,6 +2,8 @@ \section{SBOL Specification Vocabulary} % ----------------------------------------------------------------------------- +\subsection{Term Conventions} + This document indicates requirement levels using the controlled vocabulary specified in IETF RFC 2119 and reiterated in BBF RFC 0. In particular, the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119. @@ -33,7 +35,7 @@ \subsection{SBOL Class Names} Specifies the base coordinates and orientation of a genetic feature on a DNA or RNA molecule or a residue or site on another sequential macromolecule such as a protein. \item \emph{\sbol{SequenceAnnotation}}: -Describes the \sbol{Location} of a notable sub-sequence found within a \sbol{ComponentDefinition}, optionally linking it to a \sbol{Component}. +Describes the \sbol{Location} of a notable sub-sequence found within the \sbol{Sequence} linked to a \sbol{ComponentDefinition}, with an optional link to a \sbol{Component}. \item \emph{\sbol{SequenceConstraint}}: Describes the relative spatial position and orientation of two \sbol{Component} objects that are contained within the same \sbol{ComponentDefinition}. @@ -50,7 +52,7 @@ \subsection{SBOL Class Names} \begin{itemize} \item \emph{\sbol{FunctionalComponent}}: -Represents a specific occurrence or instance of an entity within a \sbol{ModuleDefinition}. +Represents a specific occurrence or instance of an \sbol{ComponentDefinition} within a \sbol{ModuleDefinition}. Exactly like a \sbol{Component}, except that it can be associated with information about its context of use in the \sbol{Module}, rather than in the context of a containing \sbol{ComponentDefinition}. \item \emph{\sbol{Interaction}}: From a62c57953c594e361e77173c91cce4d76cda3baa Mon Sep 17 00:00:00 2001 From: John Gennari Date: Thu, 28 May 2015 22:01:22 +0000 Subject: [PATCH 221/317] Update on Overleaf. --- apdx-validation.tex | 96 +++++++++--------- images/OverviewFig2-v1.png | Bin 0 -> 59997 bytes model.tex | 195 +++++++++++++++++++------------------ overview.tex | 4 +- 4 files changed, 149 insertions(+), 146 deletions(-) create mode 100644 images/OverviewFig2-v1.png diff --git a/apdx-validation.tex b/apdx-validation.tex index faf6e7d4..e06010b9 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -6,7 +6,7 @@ \section{Validation Rules} \label{validation} -\Rtodo{All please review. JSB: reviewed, some small changes made. Needs a second reviewer} +\Ctodo{I believe there are new validation rules that need to be added described in text above -CJM} This section summarizes all the conditions that MUST be or are RECOMMENDED to be true of an SBOL Version~2 document. @@ -71,7 +71,7 @@ \subsubsection*{Rules for the \class{Identified} class} \printValid{The \sbol{identity} is a REQUIRED property for all \sbol{Identified} objects and has a data type of URI with a syntax defined by:\\ \uri{http://www.w3.org/1999/02/22-rdf-syntax\#about} (Reference: \sec{sec:Identified})} -\printValid{The \sbol{persistentIdentity} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of URI with a syntax defined by:\\ \uri{http://www.w3.org/1999/02/22-rdf-syntax\#about} (Reference: \sec{sec:Identified})} +\printValid{The \sbol{persistentIdentity} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of \sbol{URI} with a syntax defined by:\\ \uri{http://www.w3.org/1999/02/22-rdf-syntax\#about} (Reference: \sec{sec:Identified})} \printValid{The \sbol{displayId} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String that is composed only of alphanumeric or underscore characters and MUST NOT begin with a digit. (Reference: \sec{sec:Identified})} @@ -79,7 +79,7 @@ \subsubsection*{Rules for the \class{Identified} class} \printValid{The \sbol{annotations} field is an OPTIONAL list of for all \sbol{Identified} objects and, if provided, includes references to \sbol{Annotation} objects. (Reference: \sec{sec:Identified})} -\printValid{The \sbol{wasDerivedFrom} property is OPTIONAL for all \sbol{Identified} objects and, if provided, data type of URI. (Reference: \sec{sec:Identified})} +\printValid{The \sbol{wasDerivedFrom} property is OPTIONAL for all \sbol{Identified} objects and, if provided, data type of \sbol{URI}. (Reference: \sec{sec:Identified})} \printValid{The \sbol{name} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String. (Reference: \sec{sec:Identified})} @@ -107,7 +107,7 @@ \subsubsection*{Rules for the \class{Sequence} class} \printValid{The \sbol{elements} is a REQUIRED property for all \sbol{Sequence} objects and has a data type of String. (Reference: \sec{sec:Sequence})} -\printValid{The \sbol{encoding} is a REQUIRED property for all \sbol{Sequence} objects and has a data type of URI. (Reference: \sec{sec:Sequence})} +\printValid{The \sbol{encoding} is a REQUIRED property for all \sbol{Sequence} objects and has a data type of \sbol{URI}. (Reference: \sec{sec:Sequence})} \printWarning{The \sbol{elements} format MUST be consistent with its specified \sbol{encoding}. (Reference: \sec{sec:Sequence})} @@ -124,9 +124,9 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{A \sbol{ComponentDefinition} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbolmult{types:CD}{types} property is a set of URIs, and it is REQUIRED to include at least one entry. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbolmult{types:CD}{types} property is a set of \sbol{URI}s, and it is REQUIRED to include at least one entry. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbolmult{roles:CD}{roles} property is an OPTIONAL set of URIs. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbolmult{roles:CD}{roles} property is an OPTIONAL set of \sbol{URI}s. (Reference: \sec{sec:ComponentDefinition})} \printValid{The \sbol{components} property is an OPTIONAL set of \sbol{Component} objects. (Reference: \sec{sec:ComponentDefinition})} @@ -134,37 +134,37 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{The \sbol{sequenceAnnotations} property is an OPTIONAL set of \sbol{SequenceAnnotation} objects. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{sequences} property is an OPTIONAL set of URI references to \sbol{Sequence} objects. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{sequences} property is an OPTIONAL set of \sbol{URI} references to \sbol{Sequence} objects. (Reference: \sec{sec:ComponentDefinition})} -\printModeling{Each URI in the set of \sbol{sequences} SHOULD reference an equivalent \sbol{Sequence} object. (Reference: \sec{sec:Sequence})} +\printModeling{Each \sbol{URI} in the set of \sbol{sequences} SHOULD reference an equivalent \sbol{Sequence} object. (Reference: \sec{sec:Sequence})} -\printWarning{A DNA \sbol{ComponentDefinition} MUST include the URI\\ +\printWarning{A DNA \sbol{ComponentDefinition} MUST include the \sbol{URI}\\ \url{http://www.biopax.org/release/biopax-level3.owl\#DnaRegion} in the set of \sbolmult{types:CD}{types}. (Reference: \sec{sec:ComponentDefinition})} -\printWarning{A RNA \sbol{ComponentDefinition} MUST include the URI\\ +\printWarning{A RNA \sbol{ComponentDefinition} MUST include the \sbol{URI}\\ \url{http://www.biopax.org/release/biopax-level3.owl\#RnaRegion} in the set of \sbolmult{types:CD}{types}. (Reference: \sec{sec:ComponentDefinition})} -\printWarning{A protein \sbol{ComponentDefinition} MUST include the URI\\ +\printWarning{A protein \sbol{ComponentDefinition} MUST include the \sbol{URI}\\ \url{http://www.biopax.org/release/biopax-level3.owl\#Protein} in the set of \sbolmult{types:CD}{types}. (Reference: \sec{sec:ComponentDefinition})} -\printWarning{A small molecule \sbol{ComponentDefinition} MUST include the URI\\ +\printWarning{A small molecule \sbol{ComponentDefinition} MUST include the \sbol{URI}\\ \url{http://www.biopax.org/release/biopax-level3.owl\#SmallMolecule} in the set of \sbolmult{types:CD}{types}. (Reference: \sec{sec:ComponentDefinition})} -\printModeling{A least one type in the set of \sbolmult{types:CD}{types} SHOULD be a URI from the BioPAX or ChEBI ontologies. (Reference: \sec{sec:ComponentDefinition})} +\printModeling{A least one type in the set of \sbolmult{types:CD}{types} SHOULD be a \sbol{URI} from the BioPAX or ChEBI ontologies. (Reference: \sec{sec:ComponentDefinition})} \subsubsection*{Rules for the \class{ComponentInstance} class} \setcounter{sbolCtr}{10601} \printValid{A \sbol{ComponentInstance} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:ComponentInstance})} -\printValid{The \sbol{access} property is a REQUIRED URI which MUST be one of the following: +\printValid{The \sbol{access} property is a REQUIRED \sbol{URI} which MUST be one of the following: \url{http://sbols.org/v2\#public} or \url{http://sbols.org/v2\#private}. (Reference: \sec{sec:ComponentInstance})} -\printValid{The \sbolmult{definition:CI}{definition} property is a REQUIRED URI reference to a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} +\printValid{The \sbolmult{definition:CI}{definition} property is a REQUIRED \sbol{URI} reference to a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} -\printModeling{The \sbolmult{definition:CI}{definition} property URI SHOULD reference a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} +\printModeling{The \sbolmult{definition:CI}{definition} property \sbol{URI} SHOULD reference a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} \printValid{The \sbolmult{mapsTos:CI}{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects. (Reference: \sec{sec:ComponentInstance})} @@ -172,7 +172,7 @@ \subsubsection*{Rules for the \class{ComponentInstance} class} \printValid{A \sbol{FunctionalComponent} object inherits all properties of a \sbol{ComponentInstance} object. (Reference: \sec{sec:ComponentInstance})} -\printValid{The \sbol{direction} property is a REQUIRED URI for \sbol{FunctionalComponent} objects which MUST be one of the following: +\printValid{The \sbol{direction} property is a REQUIRED \sbol{URI} for \sbol{FunctionalComponent} objects which MUST be one of the following: \url{http://sbols.org/v2\#inout}, \url{http://sbols.org/v2\#in}, \url{http://sbols.org/v2\#out}, or \url{http://sbols.org/v2\#none}. (Reference: \sec{sec:FunctionalComponent})} @@ -183,14 +183,14 @@ \subsubsection*{Rules for the \class{SequenceAnnotation} class} \printValid{The \sbol{locations} property is a set of \sbol{Location} objects, and it MUST include at least one \sbol{Location}. (Reference: \sec{sec:SequenceAnnotation})} -\printValid{The \sbol{component} property is an OPTIONAL URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceAnnotation})} +\printValid{The \sbol{component} property is an OPTIONAL \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceAnnotation})} \subsubsection*{Rules for the \class{Location} class} \setcounter{sbolCtr}{10801} \printValid{A \sbol{Location} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Location})} -\printValid{The \sbol{orientation} property is an OPTIONAL URI which, if specified, MUST be one of the following: \url{http://sbols.org/v2\#inline}, +\printValid{The \sbol{orientation} property is an OPTIONAL \sbol{URI} which, if specified, MUST be one of the following: \url{http://sbols.org/v2\#inline}, \url{http://sbols.org/v2\#reverseComplement}. (Reference: \sec{sec:GenericLocation})} @@ -211,30 +211,30 @@ \subsubsection*{Rules for the \class{SequenceConstraint} class} \printValid{A \sbol{SequenceConstraint} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:SequenceConstraint})} -\printValid{The \sbol{restriction} property is a REQUIRED URI which MUST be one of the following: +\printValid{The \sbol{restriction} property is a REQUIRED \sbol{URI} which MUST be one of the following: \url{http://sbols.org/v2\#precedes}, \url{http://sbols.org/v2\#sameOrientationAs}, or \url{http://sbols.org/v2\#oppositeOrientationAs}. (Reference: \sec{sec:SequenceConstraint})} -\printValid{The \sbol{subject} property is an REQUIRED URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceConstraint})} +\printValid{The \sbol{subject} property is an REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceConstraint})} -\printValid{The \sbol{object} property is a REQUIRED URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceConstraint})} +\printValid{The \sbol{object} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceConstraint})} \subsubsection*{Rules for the \class{Model} class} \setcounter{sbolCtr}{11001} \printValid{A \sbol{Model} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Model})} -\printValid{The \sbol{source} property is a REQUIRED URI that specifies the location of the model source file. (Reference: \sec{sec:Model})} +\printValid{The \sbol{source} property is a REQUIRED \sbol{URI} that specifies the location of the model source file. (Reference: \sec{sec:Model})} -\printValid{The \sbol{language} property is a REQUIRED URI that specifies the language in which the model is encoded. (Reference: \sec{sec:Model})} +\printValid{The \sbol{language} property is a REQUIRED \sbol{URI} that specifies the language in which the model is encoded. (Reference: \sec{sec:Model})} -\printModeling{The \sbol{language} property SHOULD be a URI from the EMBRACE Data and Methods (EDAM) ontology. (Reference: \sec{sec:Model})} +\printModeling{The \sbol{language} property SHOULD be a \sbol{URI} from the EMBRACE Data and Methods (EDAM) ontology. (Reference: \sec{sec:Model})} -\printValid{The \sbol{framework} property is a REQUIRED URI that specifies the modeling framework. (Reference: \sec{sec:Model})} +\printValid{The \sbol{framework} property is a REQUIRED \sbol{URI} that specifies the modeling framework. (Reference: \sec{sec:Model})} -\printModeling{The \sbol{framework} property SHOULD be a URI from the modeling framework branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Model})} +\printModeling{The \sbol{framework} property SHOULD be a \sbol{URI} from the modeling framework branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Model})} \printWarning{The \sbol{source} property MUST specify the location of the model source file in the specified \sbol{language} using the specified \sbol{framework}. (Reference: \sec{sec:Model})} @@ -243,7 +243,7 @@ \subsubsection*{Rules for the \class{ModuleDefinition} class} \printValid{A \sbol{ModuleDefinition} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:ModuleDefinition})} -\printValid{The \sbolmult{roles:MD}{roles} property is an OPTIONAL set of URIs. (Reference: \sec{sec:ModuleDefinition})} +\printValid{The \sbolmult{roles:MD}{roles} property is an OPTIONAL set of \sbol{URI}s. (Reference: \sec{sec:ModuleDefinition})} \printValid{The \sbol{modules} property is an OPTIONAL set of \sbol{Module} objects. (Reference: \sec{sec:ModuleDefinition})} @@ -251,16 +251,16 @@ \subsubsection*{Rules for the \class{ModuleDefinition} class} \printValid{The \sbol{functionalComponents} property is an OPTIONAL set of \sbol{FunctionalComponent} objects. (Reference: \sec{sec:ModuleDefinition})} -\printValid{The \sbol{models} property is an OPTIONAL set of URIs that reference \sbol{Model} objects. (Reference: \sec{sec:ModuleDefinition})} +\printValid{The \sbol{models} property is an OPTIONAL set of \sbol{URI}s that reference \sbol{Model} objects. (Reference: \sec{sec:ModuleDefinition})} -\printModeling{Each URI in the set of \sbol{models} SHOULD reference a \sbol{Model} object. (Reference: \sec{sec:ModuleDefinition})} +\printModeling{Each \sbol{URI} in the set of \sbol{models} SHOULD reference a \sbol{Model} object. (Reference: \sec{sec:ModuleDefinition})} \subsubsection*{Rules for the \class{Module} class} \setcounter{sbolCtr}{11201} \printValid{A \sbol{Module} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:Module})} -\printValid{The \sbolmult{definition:M}{definition} property is a REQUIRED URI reference to a \sbol{ModuleDefinition} object. (Reference: \sec{sec:Module})} +\printValid{The \sbolmult{definition:M}{definition} property is a REQUIRED \sbol{URI} reference to a \sbol{ModuleDefinition} object. (Reference: \sec{sec:Module})} \printValid{The \sbolmult{mapsTos:M}{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects. (Reference: \sec{sec:Module})} @@ -269,33 +269,33 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{A \sbol{MapsTo} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{refinement} property is a REQUIRED URI for \sbol{MapsTo} objects which MUST be one of the following: +\printValid{The \sbol{refinement} property is a REQUIRED \sbol{URI} for \sbol{MapsTo} objects which MUST be one of the following: \url{http://sbols.org/v2\#useremote}, \url{http://sbols.org/v2\#uselocal}, \url{http://sbols.org/v2\#verifyIdentical}, and \url{http://sbols.org/v2\#merge}. (Reference: \sec{sec:MapsTo})} -\printValid{When a \sbol{MapsTo} object is specified by a \sbol{ComponentInstance} object, the \sbol{local} property is a REQUIRED URI that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} +\printValid{When a \sbol{MapsTo} object is specified by a \sbol{ComponentInstance} object, the \sbol{local} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} -\printWarning{When a \sbol{MapsTo} object is specified by a \sbol{ComponentInstance} object, the \sbol{remote} property is a REQUIRED URI that MUST reference a \sbol{Component} that is specified within the \sbol{ComponentDefinition} referred to by the \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} +\printWarning{When a \sbol{MapsTo} object is specified by a \sbol{ComponentInstance} object, the \sbol{remote} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the \sbol{ComponentDefinition} referred to by the \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} -\printValid{When a \sbol{MapsTo} object is specified by a \sbol{Module} object, the \sbol{local} property is a REQUIRED URI that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:MapsTo})} +\printValid{When a \sbol{MapsTo} object is specified by a \sbol{Module} object, the \sbol{local} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:MapsTo})} -\printWarning{When a \sbol{MapsTo} object is specified by a \sbol{Module} object, the \sbol{remote} property is a REQUIRED URI that MUST reference a \sbol{FunctionalComponent} that is specified within the \sbol{ModuleDefinition} referred to by the \sbol{Module}. (Reference: \sec{sec:MapsTo})} +\printWarning{When a \sbol{MapsTo} object is specified by a \sbol{Module} object, the \sbol{remote} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{FunctionalComponent} that is specified within the \sbol{ModuleDefinition} referred to by the \sbol{Module}. (Reference: \sec{sec:MapsTo})} % \printValid{The \sbol{ComponentInstance} referenced by the \sbol{local} property MUST have \sbol{public} access type. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{ComponentInstance} referenced by the \sbol{remote} property MUST have \external{public} access type. (Reference: \sec{sec:MapsTo})} +\printValid{The \sbol{ComponentInstance} referenced by the \sbol{remote} property MUST have \sbol{public} access type. (Reference: \sec{sec:MapsTo})} \subsubsection*{Rules for the \class{Interaction} class} \setcounter{sbolCtr}{11401} \printValid{A \sbol{Interaction} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:Interaction})} -\printValid{The \sbolmult{types:I}{types} property is a set of URIs, and it is REQUIRED to include at least one entry. (Reference: \sec{sec:Interaction})} +\printValid{The \sbolmult{types:I}{types} property is a set of \sbol{URI}s, and it is REQUIRED to include at least one entry. (Reference: \sec{sec:Interaction})} -\printModeling{A least one type in the set of \sbolmult{types:I}{types} SHOULD be a URI from the occurring entity relationship branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Interaction})} +\printModeling{A least one type in the set of \sbolmult{types:I}{types} SHOULD be a \sbol{URI} from the occurring entity relationship branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Interaction})} \printValid{The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects. (Reference: \sec{sec:Interaction})} @@ -304,31 +304,31 @@ \subsubsection*{Rules for the \class{Participation} class} \printValid{A \sbol{Participation} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Participation})} -\printValid{The \sbol{participant} property is a REQUIRED URI that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:Participation})} +\printValid{The \sbol{participant} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:Participation})} -\printValid{The \sbolmult{roles:P}{roles} property is an OPTIONAL set of URIs. (Reference: \sec{sec:Participation})} +\printValid{The \sbolmult{roles:P}{roles} property is an OPTIONAL set of \sbol{URI}s. (Reference: \sec{sec:Participation})} -\printModeling{A least one role in the set of \sbolmult{roles:P}{roles} SHOULD be a URI from the participant role branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Participation})} +\printModeling{A least one role in the set of \sbolmult{roles:P}{roles} SHOULD be a \sbol{URI} from the participant role branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Participation})} \subsubsection*{Rules for the \class{Collection} class} \setcounter{sbolCtr}{11601} \printValid{A \sbol{Collection} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} -\printValid{The \sbol{members} property is an OPTIONAL set of URIs. that reference \sbol{TopLevel} objects. (Reference: \sec{sec:Collection})} +\printValid{The \sbol{members} property is an OPTIONAL set of \sbol{URI}s. that reference \sbol{TopLevel} objects. (Reference: \sec{sec:Collection})} -\printModeling{Each URI in the set of \sbol{members} SHOULD reference a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} +\printModeling{Each \sbol{URI} in the set of \sbol{members} SHOULD reference a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} \subsubsection*{Rules for the \class{Annotation} class} \setcounter{sbolCtr}{11701} -\printValid{The \sbol{name} property is REQUIRED, and it has data type \external{QName}. (Reference: \sec{sec:Annotations})} +\printValid{The \sbol{name} property is REQUIRED, and it has data type \sbol{QName}. (Reference: \sec{sec:Annotations})} \printValid{The \sbol{value} property is REQUIRED, and it has data type \sbol{AnnotationValue}. (Reference: \sec{sec:Annotations})} -\printValid{The \sbol{AnnotationValue} class MUST be of data type \external{String}, \external{URI}, \external{int}, \external{double}, or \sbol{NestedAnnotations}. (Reference: \sec{sec:Annotations})} +\printValid{The \sbol{AnnotationValue} class MUST be of data type \sbol{String}, \sbol{Integer}, \sbol{Double}, \sbol{Boolean}, \sbol{URI}, or \sbol{NestedAnnotations}. (Reference: \sec{sec:Annotations})} -\printValid{The \sbol{nestedURI} property is REQUIRED for a \sbol{NestedAnnotations} object, and it has data type \external{URI}. (Reference: \sec{sec:Annotations})} +\printValid{The \sbol{nestedURI} property is REQUIRED for a \sbol{NestedAnnotations} object, and it has data type \sbol{URI}. (Reference: \sec{sec:Annotations})} \printValid{The \sbol{annotations} property is an OPTIONAL set for a \sbol{NestedAnnotations} object, and each member is of data type \sbol{Annotation}. (Reference: \sec{sec:Annotations})} @@ -337,4 +337,4 @@ \subsubsection*{Rules for the \class{GenericTopLevel} class} \printValid{A \sbol{GenericTopLevel} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:GenericTopLevel})} -\printValid{The \sbol{rdfType} property is REQUIRED, and it has data type \external{QName}. (Reference: \sec{sec:GenericTopLevel})} \ No newline at end of file +\printValid{The \sbol{rdfType} property is REQUIRED, and it has data type \sbol{QName}. (Reference: \sec{sec:GenericTopLevel})} \ No newline at end of file diff --git a/images/OverviewFig2-v1.png b/images/OverviewFig2-v1.png new file mode 100644 index 0000000000000000000000000000000000000000..56ce3bd248ab12e9b037314980607ab00450ae87 GIT binary patch literal 59997 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

    T~dj1obY*-yhYYmOx(_so%cyAa7%>oy(DZWe)%d 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 \end{lstlisting} -The example below shows the serialization of the \sbol{Sequence} for a promoter. The nucleotide bases of the \sbol{Sequence} are serialized as the \external{String} value of its \sbol{elements} property, while its \external{IUPAC DNA} encoding is serialized as the \external{URI} value of its \sbol{encoding} property. +The example below shows the serialization of the \sbol{Sequence} for a promoter. The nucleotide bases of the \sbol{Sequence} are serialized as the \sbol{String} value of its \sbol{elements} property, while its \external{IUPAC DNA} encoding is serialized as the \sbol{URI} value of its \sbol{encoding} property. \lstsetsbol \begin{lstlisting} @@ -290,7 +291,7 @@ \subsection{ComponentDefinition} The \sbol{ComponentDefinition} class represents the structural entities of a biological design. The primary usage of this class is to represent structural entities with designed sequences, such as DNA, RNA, and proteins, but it can also be used to represent any other entity that is part of a design, such as small molecules, molecular complexes, and light. -As shown in \ref{uml:component_definition}, the \sbol{ComponentDefinition} class describes a structural design entity using the following properties: \sbolmult{types:CD}{types}, \sbolmult{roles:CD}{roles}, and \sbol{sequences}. In addition, this class has properties for describing and organizing the substructure of said design entity, including \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations}. +As shown in \ref{uml:component_definition}, the \sbol{ComponentDefinition} class describes a structural design entity using the following properties: \sbolmult{types:CD}{types}, \sbolmult{roles:CD}{roles}, and \sbol{sequences}. In addition, this class has properties for describing and organizing the substructure of said design entity, including \sbol{components}, \sbol{sequenceAnnotations}, and \sbol{sequenceConstraints}. \begin{figure}[ht] \begin{center} @@ -303,12 +304,12 @@ \subsection{ComponentDefinition} \subsubsection*{The \sbolheading{types} property} \label{sec:types:CD} -The \sbolmult{types:CD}{types} property is a REQUIRED set of \external{URI}s that specifies the category of biochemical or physical entity (for example DNA, protein, or small molecule) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. +The \sbolmult{types:CD}{types} property is a REQUIRED set of \sbol{URI}s that specifies the category of biochemical or physical entity (for example DNA, protein, or small molecule) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. -The \sbolmult{types:CD}{types} property of every \sbol{ComponentDefinition} MUST contain one or more \external{URI}s that MUST identify terms from appropriate ontologies, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). -\ref{tbl:componentdefinition_types} provides a list of RECOMMENDED ontology terms for the \sbolmult{types:CD}{types} property and their \external{URI}s. +The \sbolmult{types:CD}{types} property of every \sbol{ComponentDefinition} MUST contain one or more \sbol{URI}s that MUST identify terms from appropriate ontologies, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). +\ref{tbl:componentdefinition_types} provides a list of RECOMMENDED ontology terms for the \sbolmult{types:CD}{types} property and their \sbol{URI}s. In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbolmult{types:CD}{types}. -Finally, if the \sbolmult{types:CD}{types} property contains multiple \external{URIs}, then they MUST identify synonymous terms. +Finally, if the \sbolmult{types:CD}{types} property contains multiple \sbol{URIs}, then they MUST identify synonymous terms. \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -328,11 +329,11 @@ \subsubsection*{The \sbolheading{types} property} \subsubsection*{The \sbolheading{roles} property} \label{sec:roles:CD} -The \sbolmult{roles:CD}{roles} property is an OPTIONAL set of \external{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} in a biological context. +The \sbolmult{roles:CD}{roles} property is an OPTIONAL set of \sbol{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} in a biological context. -The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MAY contain one or more \external{URI}s that MUST identify terms from ontologies that are consistent with the \sbolmult{types:CD}{types} property of the \sbol{ComponentDefinition}. -For example, the \sbolmult{roles:CD}{roles} property of a DNA or RNA \sbol{ComponentDefinition} could contain \external{URI}s identifying terms from the Sequence Ontology (SO). -\ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbolmult{roles:CD}{roles} property and their \external{URI}s. +The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MAY contain one or more \sbol{URI}s that MUST identify terms from ontologies that are consistent with the \sbolmult{types:CD}{types} property of the \sbol{ComponentDefinition}. +For example, the \sbolmult{roles:CD}{roles} property of a DNA or RNA \sbol{ComponentDefinition} could contain \sbol{URI}s identifying terms from the Sequence Ontology (SO). +\ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbolmult{roles:CD}{roles} property and their \sbol{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). Any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use that term as one of its \sbolmult{roles:CD}{roles}. \begin{table}[ht] @@ -345,8 +346,8 @@ \subsubsection*{The \sbolheading{roles} property} CDS & \url{http://identifiers.org/so/SO:0000316} & DNA \\ Terminator & \url{http://identifiers.org/so/SO:0000141} & DNA \\ Gene & \url{http://identifiers.org/so/SO:0000704} & DNA \\ - mRNA & \url{http://identifiers.org/so/SO:0000234} & RNA \\ - Operator & \url{http://identifiers.org/so/SO:0000057} & RNA \\ + Operator & \url{http://identifiers.org/so/SO:0000057} & DNA \\ + mRNA & \url{http://identifiers.org/so/SO:0000234} & RNA \\ Effector & \url{http://identifiers.org/chebi/CHEBI:35224} & Small Molecule \\ \bottomrule \end{edtable} @@ -358,9 +359,9 @@ \subsubsection*{The \sbolheading{roles} property} \subsubsection*{The \sbolheading{sequences} property} \label{sec:sequences} -The \sbol{sequences} property is OPTIONAL and MAY include a set of \external{URI}s that refer to \sbol{Sequence} objects. These objects define the primary structure of the \sbol{ComponentDefinition}. +The \sbol{sequences} property is OPTIONAL and MAY include a set of \sbol{URI}s that refer to \sbol{Sequence} objects. These objects define the primary structure of the \sbol{ComponentDefinition}. -Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the structure of a DNA \sbol{ComponentDefinition}, one that captures its primary structure at the level of nucleotide bases and one that captures its secondary and tertiary structure at the level of atoms and bonds. +Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the structure of a DNA \sbol{ComponentDefinition}, one that represents its structure at the level of nucleotide bases and one that represents its structure at the level of atoms and bonds. If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} (see \ref{tbl:sequence_encodings}). @@ -371,11 +372,11 @@ \subsubsection*{The \sbolheading{sequences} property} \subsubsection*{The \sbolheading{components} property} \label{sec:components} -The \sbol{components} property is OPTIONAL and MAY specify a set of \sbol{Component} objects contained by its \sbol{ComponentDefinition}. +The \sbol{components} property is OPTIONAL and MAY specify a set of \sbol{Component} objects that are contained by the \sbol{ComponentDefinition}. While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple copies of a particular part. For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \sbol{ComponentDefinition} of a CDS. -If the \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then this \sbol{Sequence} MUST have the same \sbol{encoding} as a \sbol{Sequence} from the \sbol{ComponentDefinition} of each \sbol{Component} in the \sbol{components} property. In addition, it MUST be possible to align the \sbol{elements} of the latter \sbol{Sequence} objects to the \sbol{elements} of the former \sbol{Sequence}, subject to any restrictions imposed by the \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} objects that refer to the contents of the \sbol{components} property. For example, a DNA \sbol{ComponentDefinition} could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and its \sbol{elements} set to ``{\tt gattaca}.'' In this case, any \sbol{Component} contained by this \sbol{ComponentDefinition} would itself need to have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and \sbol{elements} that can be aligned with ``{\tt gattaca},'' such as ``{\tt gatta}," or perhaps ``{\tt tgta}'' in the case of a \sbol{Component} that is positioned by a \sbol{SequenceAnnotation} with a \sbol{Location} \sbol{orientation} set to ``reverse complement'' (see \ref{sec:Location}). +If the \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then this \sbol{Sequence} MUST have the same \sbol{encoding} as a \sbol{Sequence} from the \sbol{ComponentDefinition} of each \sbol{Component} in the \sbol{components} property. In addition, it MUST be possible to align the \sbol{elements} of the latter \sbol{Sequence} objects to the \sbol{elements} of the \sbol{ComponentDefinition}'s \sbol{Sequence}, subject to any restrictions imposed by the \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} objects that refer to the contents of the \sbol{components} property. A DNA \sbol{ComponentDefinition}, for example, could refer to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} of ``{\tt gattaca}.'' In this case, any \sbol{Component} contained by this \sbol{ComponentDefinition} would itself need to have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} that can be aligned with ``{\tt gattaca},'' such as ``{\tt gatta}," or perhaps ``{\tt tgta}'' in the case of a \sbol{Component} that is positioned by a \sbol{SequenceAnnotation} with a \sbol{Location} \sbol{orientation} of ``reverse complement'' (see \ref{sec:Location}). % Furthermore, this \sbol{Sequence} MUST have the same \external{IUPAC} \sbol{encoding} as a \sbol{Sequence} of the parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. @@ -384,19 +385,19 @@ \subsubsection*{The \sbolheading{sequenceAnnotations} property} The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. Each \sbol{SequenceAnnotation} specifies and describes a potentially discontiguous region on the \sbol{Sequence} objects referred to by the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at the region specified by its \sbol{Location} objects (see \ref{sec:Location}). -If a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{SequenceAnnotation} it contains with a \sbol{Range} and/or \sbol{Cut} MUST specify a region on the \sbol{elements} of this \sbol{Sequence}. -For example, the \sbol{ComponentDefinition} of a eukaryotic gene could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. In order to specify the discontiguous region occupied by its CDS, this gene \sbol{ComponentDefinition} would need a \sbol{SequenceAnnotation} that contains one or more \sbol{Range} objects, each one specifying \sbol{start} and \sbol{end} positions that correspond to indices for the \sbol{elements} of its DNA \sbol{Sequence}. +If a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, each \sbol{SequenceAnnotation} it contains with a \sbol{Range} and/or \sbol{Cut} MUST specify a region on the \sbol{elements} of this \sbol{Sequence}. +For example, the \sbol{ComponentDefinition} of a eukaryotic gene could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. In order to specify the discontiguous region occupied by its CDS, this gene \sbol{ComponentDefinition} would need a \sbol{SequenceAnnotation} that contains one or more \sbol{Range} objects, each one specifying \sbol{start} and \sbol{end} positions that correspond to indices of the \sbol{elements} of its DNA \sbol{Sequence}. \subsubsection*{The \sbolheading{sequenceConstraints} property} \label{sec:sequenceConstraints} -The \sbol{sequenceConstraints} property is OPTIONAL and MAY contain a set of \sbol{SequenceConstraint} objects. These objects describe any restrictions on the relative, sequence-based positions and/or orientations of the \sbol{Component} objects contained by the \sbol{ComponentDefinition}. For example, the \sbol{ComponentDefinition} of a gene may specify that its promoter \sbol{Component} precedes its CDS \sbol{Component}. This is particulary useful when a \sbol{ComponentDefinition} lacks a \sbol{Sequence} and therefore cannot specify the precise, sequence-based positions of its \sbol{Component} objects using \sbol{SequenceAnnotation} objects. +The \sbol{sequenceConstraints} property is OPTIONAL and MAY contain a set of \sbol{SequenceConstraint} objects. These objects describe any restrictions on the relative, sequence-based positions and/or orientations of the \sbol{Component} objects contained by the \sbol{ComponentDefinition}. For example, the \sbol{ComponentDefinition} of a gene may specify that the position of its promoter \sbol{Component} precedes that of its CDS \sbol{Component}. This is particulary useful when a \sbol{ComponentDefinition} lacks a \sbol{Sequence} and therefore cannot specify the precise, sequence-based positions of its \sbol{Component} objects using \sbol{SequenceAnnotation} objects. \subsubsection*{Serialization} The serialization of a \sbol{ComponentDefinition} MUST have the form below. -The \sbol{sequences}, \sbol{components}, \sbol{sequenceConstraints}, and \sbol{sequenceAnnotations} properties of a \sbol{ComponentDefinition} contain objects belonging to the appropriate SBOL classes as their values, while the \sbolmult{types:CD}{types} and \sbolmult{roles:CD}{roles} properties contain \external{URI}s that identify ontology terms as their values. -As shown below, each one of these objects and \external{URI}s is serialized as part of an implicit set of SBOL properties with singular rather then plural names. -In particular, each object is serialized as a RDF/XML node nested within a singular property, while each \external{URI} is serialized as a \external{rdf:resource} on a singular property. +The \sbol{components}, \sbol{sequenceConstraints}, \sbol{sequenceAnnotations}, and \sbol{sequences} properties of a \sbol{ComponentDefinition} contain objects belonging to the appropriate SBOL classes as their values, while the \sbolmult{types:CD}{types} and \sbolmult{roles:CD}{roles} properties contain \sbol{URI}s that identify ontology terms as their values. +As shown below, each of these objects and \sbol{URI}s is serialized as part of an implicit set of SBOL properties with singular rather then plural names. +In particular, each object is serialized as a RDF/XML node nested within a singular property, while each \sbol{URI} is serialized as a \external{rdf:resource} on a singular property. \lstsetsbol \begin{lstlisting} @@ -460,10 +461,10 @@ \subsubsection{ComponentInstance} \paragraph{The \sbolheading{definition} property} \label{sec:definition:CI} -The \sbolmult{definition:CI}{definition} property is a REQUIRED \external{URI} that refers to the \sbol{ComponentDefinition} of the \sbol{ComponentInstance}. +The \sbolmult{definition:CI}{definition} property is a REQUIRED \sbol{URI} that refers to the \sbol{ComponentDefinition} of the \sbol{ComponentInstance}. As described in the previous section, this \sbol{ComponentDefinition} effectively provides information about the \sbolmult{types:CD}{types} and \sbolmult{roles:CD}{roles} of the \sbol{ComponentInstance}. -The \sbolmult{definition:CI}{definition} property MUST NOT refer to the same \sbol{ComponentDefinition} as that which contains the \sbol{ComponentInstance}. +The \sbolmult{definition:CI}{definition} property MUST NOT refer to the same \sbol{ComponentDefinition} as the one that contains the \sbol{ComponentInstance}. Furthermore, \sbol{ComponentInstance} objects MUST NOT form a circular chain of references via their \sbolmult{definition:CI}{definition} properties and the \sbol{ComponentDefinition} objects that contain them. For example, consider the \sbol{ComponentInstance} objects $A$ and $B$ and the \sbol{ComponentDefinition} objects $X$ and $Y$. The reference chain ``$X$ contains $A$, $A$ is defined by $Y$, $Y$ contains $B$, and $B$ is defined by $X$'' is circular. @@ -475,11 +476,13 @@ \subsubsection{ComponentInstance} \paragraph{The \sbolheading{access} property} \label{sec:access} +\label{sec:public} +\label{sec:private} -The \sbol{access} property is a REQUIRED \external{URI} that indicates whether the \sbol{ComponentInstance} +The \sbol{access} property is a REQUIRED \sbol{URI} that indicates whether the \sbol{ComponentInstance} can be referred to by a \sbol{MapsTo}. -\ref{tbl:componentInstance_access} provides a list of REQUIRED \sbol{access} \external{URI}s. The value of the \sbol{access} property MUST be one of these \external{URI}s. +\ref{tbl:componentInstance_access} provides a list of REQUIRED \sbol{access} \sbol{URI}s. The value of the \sbol{access} property MUST be one of these \sbol{URI}s. \begin{table}[ht] \begin{edtable}{tabular}{lp{4in}} @@ -490,12 +493,12 @@ \subsubsection{ComponentInstance} \url{http://sbols.org/v2#private} & The \sbol{ComponentInstance} MUST NOT be referred to by any \sbol{MapsTo} object. \\ \bottomrule \end{edtable} - \caption{REQUIRED \external{URI}s for the \sbol{access} property.} + \caption{REQUIRED \sbol{URI}s for the \sbol{access} property.} \label{tbl:componentInstance_access} \end{table} Unless a designer has a reason to prevent others from accessing the \sbol{ComponentInstance} when their design is reused, it is RECOMMENDED that the \sbol{access} property of the \sbol{ComponentInstance} be set to ``public.'' -For example, a designer who is concerned about retroactivity may set the \sbol{access} of the \sbol{ComponentInstance} to ``private'' in order to prevent others from specifying its \sbol{Participation} in a new \sbol{Interaction} as part of a composite design. +For example, a designer who is concerned about retroactivity might set the \sbol{access} of the \sbol{ComponentInstance} to ``private'' in order to prevent others from specifying its \sbol{Participation} in a new \sbol{Interaction} as part of a composite design. \paragraph{Serialization} @@ -547,13 +550,13 @@ \subsubsection{MapsTo} \end{center} \end{figure} -When \sbol{ComponentDefinition} and \sbol{ModuleDefinition} objects are composed into a structural and functional hierarchies using \sbol{ComponentInstance} and \sbol{Module} objects, it is often the case that some \sbol{ComponentInstance} objects are intended to represent the same entity in the overall design. The purpose of the \sbol{MapsTo} class is to make these identity relationships clear and explicit. +When \sbol{ComponentDefinition} and \sbol{ModuleDefinition} objects are composed into structural and functional hierarchies using \sbol{ComponentInstance} and \sbol{Module} objects, it is often the case that some \sbol{ComponentInstance} objects are intended to represent the same entity in the overall design. The purpose of the \sbol{MapsTo} class is to make these identity relationships clear and explicit. In particular, a \sbol{MapsTo} object provides two pieces of information: \begin{itemize} \item An identity relationship between two \sbol{ComponentInstance} objects, the first contained by the ``lower level'' definition of the \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}, and the second contained by the ``higher level'' definition that contains this \sbol{ComponentInstance} or \sbol{Module}. The \sbol{remote} property of a \sbol{MapsTo} refers to the first ``lower level'' \sbol{ComponentInstance}, while the \sbol{local} property refers to the second ``higher level'' \sbol{ComponentInstance}. -\item Instructions on what to do if the \sbol{local} and \sbol{remote} \sbol{ComponentInstance} objects refer to different \sbol{ComponentDefinition} objects (that is, they are not identical). These are specified using the \sbol{refinement} property of the \sbol{MapsTo} class. +\item Instructions on how to interpret \sbol{local} and \sbol{remote} \sbol{ComponentInstance} objects that refer to different \sbol{ComponentDefinition} objects (that is, they are not identical). These are specified using the \sbol{refinement} property of the \sbol{MapsTo} class. \end{itemize} \begin{figure}[ht] @@ -575,15 +578,15 @@ \subsubsection{MapsTo} The same types of identity relationships can also be declared between \sbol{FunctionalComponent} objects contained by \sbol{ModuleDefinition} objects, or between \sbol{Component} objects and \sbol{FunctionalComponent} objects contained by \sbol{ComponentDefinition} objects and \sbol{ModuleDefinition} objects, respectively. See \ref{sec:examples} and \ref{ser:examples} for additional examples using the \sbol{MapsTo} class. \paragraph{The \sbolheading{local} property}\label{sec:local} -This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``higher level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{local} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}. Finally, the \sbol{access} property of the \sbol{local} \sbol{ComponentInstance} MUST be set to ``public.'' +This REQUIRED property has a data type of \sbol{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``higher level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{local} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}. Finally, the \sbol{access} property of the \sbol{local} \sbol{ComponentInstance} MUST be set to ``public.'' \paragraph{The \sbolheading{remote} property}\label{sec:remote} -This REQUIRED property has a data type of \external{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``lower level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. +This REQUIRED property has a data type of \sbol{URI} and is used to refer to the \sbol{ComponentInstance} contained by the ``lower level'' \sbol{ComponentDefinition} or \sbol{ModuleDefinition}. This \sbol{remote} \sbol{ComponentInstance} MUST be contained by the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that is the \sbolmult{definition:CI}{definition} of the \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}. Lastly, the \sbol{access} property of the \sbol{remote} \sbol{ComponentInstance} MUST be set to ``public.'' \paragraph{The \sbolheading{refinement} property}\label{sec:refinement} -The \sbol{refinement} property is REQUIRED and has a data type of \external{URI}. Each \sbol{MapsTo} object MUST specify the relationship between its \sbol{local} and \sbol{remote} \sbol{ComponentInstance} objects using one of the REQUIRED \sbol{refinement} \external{URI}s provided in \ref{tbl:mapsto_refinement}. +The \sbol{refinement} property is REQUIRED and has a data type of \sbol{URI}. Each \sbol{MapsTo} object MUST specify the relationship between its \sbol{local} and \sbol{remote} \sbol{ComponentInstance} objects using one of the REQUIRED \sbol{refinement} \sbol{URI}s provided in \ref{tbl:mapsto_refinement}. \begin{table}[ht] \begin{edtable}{tabular}{lp{4in}} @@ -593,10 +596,10 @@ \subsubsection{MapsTo} \url{http://sbols.org/v2#useRemote} & All references to the \sbolmult{definition:CI}{definition} property of the \sbol{local} \sbol{ComponentInstance} MUST dereference to that of the \sbol{remote} \sbol{ComponentInstance} instead.\\ \url{http://sbols.org/v2#useLocal} & In the context of the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the owner of the \sbol{MapsTo}, all references to the \sbolmult{definition:CI}{definition} property of the \sbol{remote} \sbol{ComponentInstance} MUST dereference to that of the \sbol{local} \sbol{ComponentInstance} instead.\\ \url{http://sbols.org/v2#verifyIdentical} & The \sbolmult{definition:CI}{definition} properties of the \sbol{local} and \sbol{remote} \sbol{ComponentInstance} objects MUST refer to the same \sbol{ComponentDefinition}.\\ - \url{http://sbols.org/v2#merge} & In the context of the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the owner of the \sbol{MapsTo}, all references to the \sbolmult{definition:CI}{definition} property of the \sbol{local} \sbol{ComponentInstance} or that of the \sbol{remote} \sbol{ComponentInstance} MUST dereference to both such properties.\\ + \url{http://sbols.org/v2#merge} & In the context of the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the owner of the \sbol{MapsTo}, all references to the \sbolmult{definition:CI}{definition} property of the \sbol{local} \sbol{ComponentInstance} or that of the \sbol{remote} \sbol{ComponentInstance} MUST dereference to both properties.\\ \bottomrule \end{edtable} - \caption{REQUIRED \external{URI}s for the \sbol{refinement} property.} + \caption{REQUIRED \sbol{URI}s for the \sbol{refinement} property.} \label{tbl:mapsto_refinement} \end{table} @@ -627,7 +630,7 @@ \subsubsection{MapsTo} \subsubsection{SequenceAnnotation} \label{sec:SequenceAnnotation} -The \sbol{SequenceAnnotation} class describes one or more regions of interest on the \sbol{Sequence} objects referred to by a parent \sbol{ComponentDefinition}. In addition, \sbol{SequenceAnnotation} objects can describe the substructure of their parent {ComponentDefinition} through their association with sub-\sbol{Component} objects. +The \sbol{SequenceAnnotation} class describes one or more regions of interest on the \sbol{Sequence} objects referred to by its parent \sbol{ComponentDefinition}. In addition, \sbol{SequenceAnnotation} objects can describe the substructure of their parent \sbol{ComponentDefinition} through association with the \sbol{Component} objects contained by this \sbol{ComponentDefinition}. \begin{figure}[ht] \begin{center} @@ -640,10 +643,10 @@ \subsubsection{SequenceAnnotation} \paragraph{The \sbolheading{locations} property}\label{sec:locations} The \sbol{locations} property is a REQUIRED set of one or more \sbol{Location} objects that indicate which \sbol{elements} of a \sbol{Sequence} are described by the \sbol{SequenceAnnotation}. -In general, these \sbol{Location} objects SHOULD NOT cover the same \sbol{Sequence} \sbol{elements}. +In general, these \sbol{Location} objects SHOULD NOT specify overlapping regions. \paragraph{The \sbolheading{component} property}\label{sec:component} -The \sbol{component} property is OPTIONAL and has a data type of \external{URI}. This \external{URI} MUST refer to a \sbol{Component} that is contained by the same parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. In this way, the properties of the \sbol{SequenceAnnotation}, such as its \sbol{description} and \sbol{locations}, are associated with part of the substructure of its \sbol{ComponentDefinition}. A \sbol{SequenceAnnotation} MUST NOT refer to the same \sbol{Component} as another \sbol{SequenceAnnotation}. +The \sbol{component} property is OPTIONAL and has a data type of \sbol{URI}. This \sbol{URI} MUST refer to a \sbol{Component} that is contained by the same parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. In this way, the properties of the \sbol{SequenceAnnotation}, such as its \sbol{description} and \sbol{locations}, are associated with part of the substructure of its \sbol{ComponentDefinition}. A \sbol{SequenceAnnotation} MUST NOT refer to the same \sbol{Component} as another \sbol{SequenceAnnotation}. \paragraph{Serialization} @@ -653,13 +656,13 @@ \subsubsection{SequenceAnnotation} ... [\emph{zero or one}] [\emph{element}] - [\emph{one}] + [\emph{one or more}] ... - [\emph{element}] + [\emph{elements}] \end{lstlisting} -The example below shows the serialization of a \sbol{SequenceAnnotation} object. It specifies the location of a particular \sbol{Component} named BBa\_F2620. +The example below shows the serialization of a \sbol{SequenceAnnotation} object. It specifies the region occupied by a \sbol{Component} named BBa\_F2620. \lstsetsbol \begin{lstlisting} @@ -692,7 +695,7 @@ \subsubsection{Location} \paragraph{The \sbolheading{orientation} property} \label{sec:orientation} -The \sbol{orientation} property is OPTIONAL and has a data type of \external{URI}. All subclasses of \sbol{Location} share this property, which can be used to indicate how the region specified by the \sbol{SequenceAnnotation} and any associated double-stranded \sbol{Component} is oriented on the \sbol{elements} of a \sbol{Sequence} from their parent \sbol{ComponentDefinition}. \ref{tbl:orientation_types} provides a list of REQUIRED \sbol{orientation} \external{URI}s. If a \sbol{Location} object has an \sbol{orientation}, then it MUST come from \ref{tbl:orientation_types}. +The \sbol{orientation} property is OPTIONAL and has a data type of \sbol{URI}. All subclasses of \sbol{Location} share this property, which can be used to indicate how the region specified by the \sbol{SequenceAnnotation} and any associated double-stranded \sbol{Component} is oriented on the \sbol{elements} of a \sbol{Sequence} from their parent \sbol{ComponentDefinition}. \ref{tbl:orientation_types} provides a list of REQUIRED \sbol{orientation} \sbol{URI}s. If a \sbol{Location} object has an \sbol{orientation}, then it MUST come from \ref{tbl:orientation_types}. \begin{table}[ht] \begin{edtable}{tabular}{lp{3.75in}} @@ -703,20 +706,20 @@ \subsubsection{Location} \url{http://sbols.org/v2\#reverseComplement} & The region specified by this \sbol{Location} MUST be on the reverse-complement translation of the \sbol{elements} of a \sbol{Sequence}. The exact nature of this translation depends on the \sbol{encoding} of the \sbol{Sequence}. \\ \bottomrule \end{edtable} - \caption{REQUIRED \external{URI}s for the \sbol{orientation} property} + \caption{REQUIRED \sbol{URI}s for the \sbol{orientation} property} \label{tbl:orientation_types} \end{table} \paragraph{Range} \label{sec:Range} -A \sbol{Range} object specifies a region via discrete, inclusive \sbol{start} and \sbol{end} positions that correspond to indices for characters in the \sbol{elements} \external{String} of a \sbol{Sequence}. +A \sbol{Range} object specifies a region via discrete, inclusive \sbol{start} and \sbol{end} positions that correspond to indices for characters in the \sbol{elements} \sbol{String} of a \sbol{Sequence}. \paragraph{The \sbolheading{start} property}\label{sec:start} -The \sbol{start} property specifies the inclusive starting position of the \sbol{Range}. This property is REQUIRED and MUST contain \external{Integer} value greater than zero. +The \sbol{start} property specifies the inclusive starting position of the \sbol{Range}. This property is REQUIRED and MUST contain an \sbol{Integer} value greater than zero. \paragraph{The \sbolheading{end} property}\label{sec:end} -The \sbol{end} property specifies the inclusive ending position of the \sbol{Range}. This property is REQUIRED and MUST contain an \external{Integer} value greater than zero. +The \sbol{end} property specifies the inclusive ending position of the \sbol{Range}. This property is REQUIRED and MUST contain an \sbol{Integer} value greater than zero. In addition, this \external{Integer} value must be greater than that of the \sbol{start} property. \paragraph{Serialization} @@ -746,11 +749,11 @@ \subsubsection{Location} \paragraph{Cut} \label{sec:Cut} The \sbol{Cut} class has been introduced to enable the specification of a region between two discrete positions. -This specification is accomplished using the \sbol{at} property, which specifies a discrete position that that corresponds to the index of a character in the \sbol{elements} \external{String} of a \sbol{Sequence} (except in the case when \sbol{at} is equal to zero---see below). +This specification is accomplished using the \sbol{at} property, which specifies a discrete position that that corresponds to the index of a character in the \sbol{elements} \sbol{String} of a \sbol{Sequence} (except in the case when \sbol{at} is equal to zero---see below). \paragraph{The \sbolheading{at} property} \label{sec:at} -The \sbol{at} property is REQUIRED and MUST contain an \external{Integer} value greater than or equal to zero. The region specified by the \sbol{Cut} is between the position specified by this property and the position that immediately follows it. When the \sbol{at} property is equal to zero, the specified region is immediately before the first discrete position or character in the \sbol{elements} \external{String} of a \sbol{Sequence}. +The \sbol{at} property is REQUIRED and MUST contain an \sbol{Integer} value greater than or equal to zero. The region specified by the \sbol{Cut} is between the position specified by this property and the position that immediately follows it. When the \sbol{at} property is equal to zero, the specified region is immediately before the first discrete position or character in the \sbol{elements} \sbol{String} of a \sbol{Sequence}. \paragraph{Serialization} @@ -781,7 +784,7 @@ \subsubsection{Location} While the \sbol{Range} and \sbol{Cut} classes are best suited to specifying regions on \sbol{Sequence} objects with \external{IUPAC} encodings, the -\sbol{GenericLocation} class is included as a starting point for specifying regions on \sbol{Sequence} objects with different \sbol{encoding} properties and potentially nonlinear structure. This class can also be used to set the \sbol{orientation} of a \sbol{SequenceAnnotation} and any associated \sbol{Component} when their parent \sbol{ComponentDefinition} lacks a \sbol{Sequence} and therefore represents a partial design. +\sbol{GenericLocation} class is included as a starting point for specifying regions on \sbol{Sequence} objects with different \sbol{encoding} properties and potentially nonlinear structure. This class can also be used to set the \sbol{orientation} of a \sbol{SequenceAnnotation} and any associated \sbol{Component} when their parent \sbol{ComponentDefinition} is partial design that lacks a \sbol{Sequence}. \paragraph{Serialization} @@ -804,8 +807,8 @@ \subsubsection{Location} \subsubsection{SequenceConstraint} \label{sec:SequenceConstraint} -The \sbol{SequenceConstraint} class can used to assert restrictions on the relative, sequence-based positions of pairs of \sbol{Component} objects contained by the same parent \sbol{ComponentDefinition}. -The primary purpose of the \sbol{SequenceConstraint} class is to enable the specification of partially designed \sbol{ComponentDefinition} objects, for which the precise positions or ordering of their contained \sbol{Component} objects are not yet fully determined. Each \sbol{SequenceConstraint} includes the \sbol{restriction}, \sbol{subject}, and \sbol{object} properties. +The \sbol{SequenceConstraint} class can be used to assert restrictions on the relative, sequence-based positions of pairs of \sbol{Component} objects contained by the same parent \sbol{ComponentDefinition}. +The primary purpose of this class is to enable the specification of partially designed \sbol{ComponentDefinition} objects, for which the precise positions or ordering of their contained \sbol{Component} objects are not yet fully determined. Each \sbol{SequenceConstraint} includes the \sbol{restriction}, \sbol{subject}, and \sbol{object} properties. \begin{figure}[ht] \begin{center} @@ -823,21 +826,21 @@ \subsubsection{SequenceConstraint} \paragraph{The \sbolheading{restriction} property}\label{sec:restriction} -The \sbol{restriction} property is REQUIRED and has a data type of \external{URI}. This property is used to indicate the type of structural restriction on the relative, sequence-based positions or orientations of the \sbol{subject} and \sbol{object} \sbol{Component} objects. The \external{URI} value of this property MUST come from the RECOMMENDED \external{URI}s in \ref{tbl:restriction_types} or it MUST refer to an appropriate ontology term. +The \sbol{restriction} property is REQUIRED and has a data type of \sbol{URI}. This property is used to indicate the type of structural restriction on the relative, sequence-based positions or orientations of the \sbol{subject} and \sbol{object} \sbol{Component} objects. The \sbol{URI} value of this property MUST come from the RECOMMENDED \sbol{URI}s in \ref{tbl:restriction_types}, or it MUST refer to an appropriate ontology term. % Note: With regards to SBOL Version 1.1., this is a generalization of former \sbol{SequenceAnnotation} property \external{precedes}. \begin{table}[ht] - \begin{edtable}{tabular}{ll} + \begin{edtable}{tabular}{lp{4in}} \toprule \textbf{Restriction URI} & \textbf{Description} \\ \midrule - http://sbols.org/v2\#precedes & The position of the \sbol{subject} \sbol{Component} MUST precede that of the \sbol{object} \sbol{Component} \\ - http://sbols.org/v2\#sameOrientationAs & The \sbol{subject} and \sbol{object} \sbol{Component} objects MUST have the same orientation.\\ - http://sbols.org/v2\#oppositeOrientationAs & The \sbol{subject} and \sbol{object} \sbol{Component} objects MUST have opposite orientations. \\ + http://sbols.org/v2\#precedes & The position of the \sbol{subject} \sbol{Component} MUST precede that of the \sbol{object} \sbol{Component}. If each one is associated with a \sbol{SequenceAnnotation}, then the \sbol{SequenceAnnotation} associated with the \sbol{subject} \sbol{Component} MUST specify a region that starts before the region specified by the \sbol{SequenceAnnotation} associated with the \sbol{object} \sbol{Component}. \\ + http://sbols.org/v2\#sameOrientationAs & The \sbol{subject} and \sbol{object} \sbol{Component} objects MUST have the same orientation. If each one is associated with a \sbol{SequenceAnnotation}, then the \sbol{orientation} \external{URI}s of the \sbol{Location} objects of the first \sbol{SequenceAnnotation} MUST be represented among those of the second \sbol{SequenceAnnotation}, and vice versa. \\ + http://sbols.org/v2\#oppositeOrientationAs & The \sbol{subject} and \sbol{object} \sbol{Component} objects MUST have opposite orientations. If each one is associated with a \sbol{SequenceAnnotation}, then the \sbol{orientation} \external{URI}s of the \sbol{Location} objects of one \sbol{SequenceAnnotation} MUST NOT be represented among those of the other \sbol{SequenceAnnotation}. \\ \bottomrule \end{edtable} - \caption{RECOMMENDED \external{URI}s for the \sbol{restriction} property} + \caption{RECOMMENDED \sbol{URI}s for the \sbol{restriction} property.} \label{tbl:restriction_types} \end{table} @@ -856,7 +859,7 @@ \subsubsection{SequenceConstraint} \end{lstlisting} -The example below shows the serialization of a \sbol{SequenceConstraint} object. In the example, the constraint is included as part of a \sbol{ComponentDefinition} for a LacI repressible composite promoter and has a precedes restriction. This restriction states that the subject \sbol{Component} for the core promoter precedes the object \sbol{Component} for the LacI operator in the composite promoter definition. Such restriction is especially useful to specify incomplete designs and the final design may include other components between the subject and object components. +The example below shows the serialization of a \sbol{SequenceConstraint} belonging to the \sbol{ComponentDefinition} of a LacI-repressible promoter. This \sbol{SequenceConstraint} has a ``precedes'' \sbol{restriction} that indicates that the \sbol{subject} \sbol{Component}, which represents the core of the promoter, is positioned before the \sbol{object} \sbol{Component}, which represents the LacI operator of the promoter. \lstsetsbol \begin{lstlisting} @@ -972,7 +975,7 @@ \subsection{ModuleDefinition} This functionality of designated ``inputs'' and ``outputs'' is expressed by \sbol{direction} properties on its \sbol{FunctionalComponent} elements. \subsubsection*{The \sbolheading{roles} property}\label{sec:roles:MD} -The \sbolmult{roles:MD}{roles} property is an OPTIONAL set of \external{URI}s that clarifies the intended function of a \sbol{ModuleDefinition} in a biological context. +The \sbolmult{roles:MD}{roles} property is an OPTIONAL set of \sbol{URI}s that clarifies the intended function of a \sbol{ModuleDefinition} in a biological context. These terms might identify ``logical'' roles, such as ``inverter'' or ``AND gate'', or they might identify descriptive biological roles, such as ``metabolic pathway'' and ``signaling cascade,'' or might identify roles from some other manner of describing intended function. @@ -980,23 +983,23 @@ \subsubsection*{The \sbolheading{modules} property}\label{sec:modules} The \sbol{modules} property is OPTIONAL and MAY specify a set of \sbol{Module} objects contained by the \sbol{ModuleDefinition}. -While the \sbol{ModuleDefinition} class is analogous to a blueprint or specification sheet for a system of interaction biological elements, the \sbol{Module} class represents the specific occurrence of a particular sub-system within that design. Hence, this class allows a biological design to include multiple copies of a subsystem. For example, the \sbol{ModuleDefinition} for a network of two-input repressor systems, where the particular repressors have not yet been chosen, contain multiple \sbol{Module} objects that refer to the same \external{URI} for the \sbol{ModuleDefinition} of an abstract two-input repressor device. +While the \sbol{ModuleDefinition} class is analogous to a blueprint or specification sheet for a system of interaction biological elements, the \sbol{Module} class represents the specific occurrence of a particular sub-system within that design. Hence, this class allows a biological design to include multiple copies of a subsystem. For example, the \sbol{ModuleDefinition} for a network of two-input repressor systems, where the particular repressors have not yet been chosen, contain multiple \sbol{Module} objects that refer to the same \sbol{URI} for the \sbol{ModuleDefinition} of an abstract two-input repressor device. \subsubsection*{The \sbolheading{functionalComponents} property} \label{sec:functionalComponents} The \sbol{functionalComponents} property is OPTIONAL and MAY specify a set of \sbol{FunctionalComponent} objects contained by the \sbol{ModuleDefinition}. -Just as a \sbol{Module} represents an instance of a subsystem in the ``blueprint'' of a \sbol{ModuleDefinition}, a \sbol{FunctionalComponent} represents an instance of an individual element whose \sbol{ComponentDefinition} may be used multiple times in a \sbol{ModuleDefinition}. For example, a \sbol{ModuleDefinition} might contain several copies of a particular promoter. +Just as a \sbol{Module} represents an instance of a subsystem in the \sbol{ModuleDefinition} "blueprint", a \sbol{FunctionalComponent} represents an instance of an individual element whose \sbol{ComponentDefinition} may be used multiple times in a \sbol{ModuleDefinition}. For example, a \sbol{ModuleDefinition} might contain several copies of a particular promoter. \subsubsection*{The \sbolheading{interactions} property}\label{sec:interactions} -The \sbol{interactions} property is OPTIONAL and MAY specify a set of \sbol{Interaction} objects contained by the \sbol{ModuleDefinition}. +The \sbol{interactions} property is OPTIONAL and MAY specify a set of \sbol{Interaction} objects within a \sbol{ModuleDefinition}. The \sbol{Interaction} class provides an abstract, machine-friendly representation of the functional interactions of entities within a \sbol{ModuleDefinition} (whereas a \sbol{Model} is concrete and may not be readily susceptible to machine reasoning, depending on how it is implemented). Each \sbol{Interaction} includes \sbol{Participation} entities that indicate the roles of the \sbol{FunctionalComponent} objects involved in the \sbol{Interaction} \subsubsection*{The \sbolheading{models} property}\label{sec:models} -The \sbol{models} property is OPTIONAL and MAY specify a set of \external{URI}s identifying \sbol{Model} objects. +The \sbol{models} property is OPTIONAL and MAY specify a set of \sbol{URI}s identifying \sbol{Model} objects. SBOL's \sbol{Model} objects are placeholders used to link specifications of biological parts and their interactions to computational models of arbitrary format. A \sbol{ModuleDefinition} object can link to more than one \sbol{Model} since each might encode the same system in a different way or at a different level of detail. @@ -1051,8 +1054,8 @@ \subsubsection*{Serialization} \subsubsection{FunctionalComponent} \label{sec:FunctionalComponent} -A \sbol{FunctionalComponent} is an instance of a \sbol{ComponentDefinition} being used as part of a \sbol{ModuleDefinition} -Each FunctionalComponent object is owned by a \sbol{ModuleDefinition} and serves as an explicit usage of a \sbol{ComponentDefinition} object for the purpose of fulfilling some function. +A \sbol{FunctionalComponent} is an instance of a \sbol{ComponentDefinition} being used as part of a \sbol{ModuleDefinition} object. +Each \sbol{FunctionalComponent} object is owned by a \sbol{ModuleDefinition} object and represents an explicit usage of a \sbol{ComponentDefinition} object for the purpose of fulfilling some function. \sbol{FunctionalComponent} derives from \sbol{ComponentInstance}, and therefore has the \sbolmult{definition:CI}{definition}, \sbol{access}, and \sbolmult{mapsTos:CI}{mapsTos} properties. Additionally, it has a \sbol{direction} property that specifies whether it serves as an input, output, both, or neither with regards to the \sbol{ModuleDefinition} that contains it. @@ -1077,7 +1080,7 @@ \subsubsection{FunctionalComponent} \label{tbl:functionalcomponent_directions} \end{table} -The purpose of \sbol{direction} is to encode a common way in which designers think about the ``purpose'' of a \sbol{FunctionalComponent} within a \sbol{ModuleDefinition}. +The \sbol{direction} property is a means to encode a common way in which designers think about the ``purpose'' of a connection in a system. In this case, the connection is the \sbol{FunctionalComponent}, and the system is the \sbol{ModuleDefinition}. For example, consider a system that is designed to indicate concentration of the cell-cell signalling molecule 3OC$_6$HSL by the concentration of the product of a particular CDS. In this system, the concentration of 3OC$_6$HSL is the signal being interpreted by the system, so the \sbol{FunctionalComponent} for 3OC$_6$HSL would have a \sbol{direction} of ``input.'' Complementarily, the concentration of the designated product is the signal intended for consumption by other biologicals systems, and so the \sbol{FunctionalComponent} for that product would have a \sbol{direction} of ``output.'' @@ -1124,7 +1127,7 @@ \subsubsection{Module} \paragraph{The \sbolheading{definition} property} \label{sec:definition:M} -The \sbolmult{definition:M}{definition} property is a REQUIRED \external{URI} that refers to the \sbol{ModuleDefinition} for the \sbol{Module}. +The \sbolmult{definition:M}{definition} property is a REQUIRED \sbol{URI} that refers to the \sbol{ModuleDefinition} for the \sbol{Module}. The \sbolmult{definition:M}{definition} property MUST NOT refer to the same \sbol{ModuleDefinition} as that which contains the \sbol{Module}. Furthermore, \sbol{Module} objects MUST NOT form a circular chain of references via their \sbolmult{definition:M}{definition} properties and the \sbol{ModuleDefinition} objects that contain them. For example, consider the \sbol{Module} objects $A$ and $B$ and the \sbol{ModuleDefinition} objects $X$ and $Y$. The reference chain ``$X$ contains $A$, $A$ is defined by $Y$, $Y$ contains $B$, and $B$ is defined by $X$'' is circular. @@ -1184,7 +1187,7 @@ \subsubsection{Interaction} \paragraph{The \sbolheading{participations} property}\label{sec:participations} -The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects, each of which identifies a \sbol{FunctionalComponent} and the \sbolmult{roles:P}{roles} it plays in the interaction. +The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects, each of which identifies a the \sbolmult{roles:P}{roles} that the referenced \sbol{FunctionalComponent} plays in the interaction. \paragraph{Serialization} @@ -1345,7 +1348,7 @@ \subsubsection{Annotating SBOL objects} \label{sec:nestedQName} \label{sec:nestedURI} -Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. The \sbol{qName} property is specified by a qualified name (\external{QName}), which is composed of a namespace, a prefix, and a local name. The \sbol{value} property can be a literal type (i.e., \external{String}, \external{Integer}, \external{Double}, \external{Boolean}), \external{URI}, or a \sbol{NestedAnnotations} object. The \sbol{NestedAnnotations} object is composed of a \sbol{nestedQName}, \sbol{nestedURI}, and an optional list of nested \sbol{annotations}. +Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. The \sbol{qName} property is specified by a qualified name (\sbol{QName}), which is composed of a namespace, a prefix, and a local name. The \sbol{value} property can be a literal type (i.e., \sbol{String}, \sbol{Integer}, \sbol{Double}, \sbol{Boolean}), \sbol{URI}, or a \sbol{NestedAnnotations} object. The \sbol{NestedAnnotations} object is composed of a \sbol{nestedQName}, \sbol{nestedURI}, and an optional list of nested \sbol{annotations}. \begin{figure}[!ht] \begin{center} @@ -1380,9 +1383,9 @@ \subsubsection*{Serialization} [\emph{elements}] \end{lstlisting} -The \sbol{name} property species the namespace, prefix, and localPart values. The first form is for a \external{literal} annotation. The second form is for a \external{URI} annotation. Finally, the third form is for an \sbol{NestedAnnotations} object annotation. In this last case, the \sbol{nestedQName} property specifies the nestedNamespace, nestedPrefix, and nestedLocalPart while the \sbol{nestedURI} property species the URI for the nested annotation. +The \sbol{name} property species the namespace, prefix, and localPart values. The first form is for a \sbol{literal} annotation. The second form is for a \sbol{URI} annotation. Finally, the third form is for an \sbol{NestedAnnotations} object annotation. In this last case, the \sbol{nestedQName} property specifies the nestedNamespace, nestedPrefix, and nestedLocalPart while the \sbol{nestedURI} property species the URI for the nested annotation. -The ComponentDefinition example for a promoter serialized below shows how annotations can be added to SBOL objects. Annotations are added using the relevant information from the Parts Registry. Annotation property names are qualified with the \external{http://www.partsregistry.org/} namespace, which is prefixed using \external{pr}. The first annotation is named as \external{pr:group}, indicating the iGEM group designing the promoter, and has a \external{String} value. The second \external{pr:experience} annotation has a \external{URI} value and is serialised as an RDF resource pointing to the information Web page on the Parts Registry for the promoter. The \external{pr:information} property represents a complex annotation which is a type of \external{pr:Information} and includes information about the regulatory details of the promoter using Parts Registry categories. +The ComponentDefinition example for a promoter serialized below shows how annotations can be added to SBOL objects. Annotations are added using the relevant information from the Parts Registry. Annotation property names are qualified with the \external{http://www.partsregistry.org/} namespace, which is prefixed using \external{pr}. The first annotation is named as \external{pr:group}, indicating the iGEM group designing the promoter, and has a \sbol{String} value. The second \external{pr:experience} annotation has a \sbol{URI} value and is serialised as an RDF resource pointing to the information Web page on the Parts Registry for the promoter. The \external{pr:information} property represents a complex annotation which is a type of \external{pr:Information} and includes information about the regulatory details of the promoter using Parts Registry categories. \begin{figure} [ht] \lstsetsbol @@ -1418,7 +1421,7 @@ \subsubsection{GenericTopLevel} SBOL's \sbol{GenericTopLevel} is a top-level entity whose only purpose is to include a set of annotations as described above. Entities that have independent existence (i.e., would be another ``top level'' class) and are not recognized by the SBOL standard are loaded into these top level entities. These \sbol{GenericTopLevel} entities can thus be safely used by tools to exchange non-SBOL data embedded separately within SBOL. -As with any other top level entities, \sbol{GenericTopLevel} entities may include SBOL properties such as \sbol{displayId}, \sbol{name}, \sbol{description}, etc. The type of data found in the generic entity is indicated using the \sbol{rdfType} property which is of type \external{QName}. +As with any other top level entities, \sbol{GenericTopLevel} entities may include SBOL properties such as \sbol{displayId}, \sbol{name}, \sbol{description}, etc. The type of data found in the generic entity is indicated using the \sbol{rdfType} property which is of type \sbol{QName}. \begin{figure}[ht] \begin{center} @@ -1453,9 +1456,9 @@ \subsubsection*{Serialization} The example below shows how a datasheet object can be added to an SBOL document using the \sbol{GenericTopLevel} class. The J23119 promoter example is annotated with the URI of a top Level Datasheet object, here defining the annotation properties using the custom \external{\path{http://www.myapp.org/}} namespace and the \external{myapp} prefix. -The datasheet object, with the data type of \external{myapp:Datasheet}, is accessed using the \external{URI} value specified by the \external{myapp:characterizationData} property of the promoter component definition. -The datasheet object is further annotated with the transcription rate and the URI for the actual characterization data using the \external{myapp:transcriptionRate} and \external{myapp:characterizationData} properties respectively. -Finally, this data sheet is linked from the component is describes using an annotation with a \external{myapp:datasheet} property whose value is the data sheet's URI. +The datasheet object, with the data type of \external{myapp:Datasheet}, is accessed using the \sbol{URI} specified by the \external{myapp:characterizationData} property of the promoter \sbol{ComponentDefinition}. +The datasheet object is further annotated with the transcription rate and URI for the actual characterization data using the \external{myapp:transcriptionRate} and \external{myapp:characterizationData} properties, respectively. +Finally, this data sheet is linked from the component it describes using an annotation with a \external{myapp:datasheet} property whose value is the datasheet's URI. \begin{figure}[ht] \lstsetsbol diff --git a/overview.tex b/overview.tex index 48881532..3587577f 100644 --- a/overview.tex +++ b/overview.tex @@ -62,11 +62,11 @@ \section{Overview of SBOL} % The physical structure of an element is represented with a \sbol{ComponentDefinition}, often corresponding to a particular \sbol{Sequence} (e.g., DNA, RNA, amino acids), and with its structure further described in terms of the smaller \sbol{Component} instances contained within, and their absolute and relative positions within the component. % Functional relationships are represented with a \sbol{ModuleDefinition}, often also described by some \sbol{Model}, and with its structure further described in terms of the smaller \sbol{Module} instances contained within, as well as particular components (designated \sbol{FunctionalComponent} to indicate their use in defining a module), and their interactions. - +\Ctodo{SequenceConstraint was in a simpler form in 1.1. Actually though I think maybe we should change color scheme in this one to highlight TopLevel versus Child as before as this is an important concept for the overview. One minor issue is some issues are crooked.} \begin{figure}[ht] \begin{center} -\includegraphics[scale=1.2]{images/SBOL2_2_revised.png} +\includegraphics[scale=0.6]{images/OverviewFig2-v1.png} \caption{Main classes of information represented by the SBOL standard, and their relationships. Red boxes are ``top level'' classes, while blue classes are used in describing a top-level class; an arrow indicates that one class refers to another.} \label{images:overview2} \end{center} From 1dbdf324c66acfabdb2e96f5dca122ee1e8d52a1 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 29 May 2015 06:55:49 +0000 Subject: [PATCH 222/317] Update on Overleaf. From c337b45e150815f5a7bbfd0a12def9815949b3f5 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Fri, 29 May 2015 12:22:44 -0500 Subject: [PATCH 223/317] Mike B notes --- purpose.tex | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/purpose.tex b/purpose.tex index 2444e02f..b0c68958 100644 --- a/purpose.tex +++ b/purpose.tex @@ -14,7 +14,9 @@ \section{Purpose} To help address these challenges, the Synthetic Biology Open Language (SBOL) Standard introduces a standardized format for the electronic exchange of information describing the structural and functional aspects of biological designs. The standard is designed to support the development of explicit and unambiguous data models of biological designs through the use of a well defined model on how to represent the component molecules, and their structural and functional roles in a systematic fashion. The standard further describes rules and best practices on how to include, develop and populate this format with relevant information of essential design details. -Because the standard itself can represent information from other sources for sequence representations, reaction information and ontologies to represent biological design information, the standard uses modern information exchange techniques such as Universal Resource Identifiers (URIs). This permits the reuse of existing information without the need to repeat it, thus avoiding both redundancy and likely future information decay within shared files. The ultimate utility of URIs in the SBOL Standard is the ability to support flexible annotation with appriate metadata while associating an authority with that annotation. The definition of the data model and associated format, the rules on the addition of data within the format and the representation of this in electronic data files make the SBOL Standard an excellent means of promoting global data exchange between laboraties and between software programs. +Because the standard itself can represent information from other sources for sequence representations, reaction information and ontologies to represent biological design information, the standard uses modern information exchange techniques such as Universal Resource Identifiers (URIs). This permits the reuse of existing information without the need to repeat it, thus avoiding both redundancy and likely future information decay within shared files. +The ultimate utility of URIs in the SBOL Standard is the ability to support flexible annotation with appropriate metadata while associating an authority with that annotation. +The definition of the data model and associated format, the rules on the addition of data within the format and the representation of this in electronic data files are intended to make the SBOL Standard a useful means of promoting global data exchange between laboraties and between software programs. This document presents the second version of SBOL. The previous version 1.1 of the SBOL standard focused on representing the structural aspects of genetic designs. @@ -41,4 +43,4 @@ \section{Purpose} As with the earlier SBOL 1.1 standard this community (open for any practitioner to join) has met to discuss, argue and agree upon needs that the SBOL standard should address. This information has then been used by developers within our community to design, develop and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects, as well as, the ability to share designs between different laboratories. The standard has also been used to develop software tools that employ the standard for developing and sharing synthetic design projects. -The publication of specification now share the details of the SBOL standard that have been worked out with the entire community of potential users and developers so it can be more widely employed through the scientific community. \ No newline at end of file +The publication of this specification is intended to make these capabilities more widely accessible to the community of potential developers and users. From 86112bdef09bfb6b168191d824263b499863ac7b Mon Sep 17 00:00:00 2001 From: John Gennari Date: Sat, 30 May 2015 05:37:54 +0000 Subject: [PATCH 224/317] Update on Overleaf. --- images/OverviewFig2-v3.png | Bin 0 -> 42343 bytes model.tex | 1 + overview.tex | 4 ++-- purpose.tex | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 images/OverviewFig2-v3.png diff --git a/images/OverviewFig2-v3.png b/images/OverviewFig2-v3.png new file mode 100644 index 0000000000000000000000000000000000000000..bf12b528e890d6a8088a45834139c959418f90e2 GIT binary patch literal 42343 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 literal 0 HcmV?d00001 diff --git a/model.tex b/model.tex index ec9384b2..dd7722ab 100644 --- a/model.tex +++ b/model.tex @@ -243,6 +243,7 @@ \subsubsection*{The \sbolheading{encoding} property} \ref{tbl:sequence_encodings} provides a list of RECOMMENDED \sbol{URI}s for the \sbol{encoding} property. The terms in \ref{tbl:sequence_encodings} are organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that typically refer to a \sbol{Sequence} with such an \sbol{encoding}. When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \sbol{URI}s in \ref{tbl:sequence_encodings}, it MUST use that \sbol{URI} for this property. +\NVtodo{revisit for next version of the spec. We looked at EDAM on NCBO as a nice example that integrates many ontologies in biology. This could be a possible way to simplify to one ontology source rathern than many as a best practice - KC} %A Summary of letters for nucleic acids and aminoacids \begin{table}[ht] \begin{edtable}{tabular}{lll} diff --git a/overview.tex b/overview.tex index 3587577f..4919d583 100644 --- a/overview.tex +++ b/overview.tex @@ -66,8 +66,8 @@ \section{Overview of SBOL} \begin{figure}[ht] \begin{center} -\includegraphics[scale=0.6]{images/OverviewFig2-v1.png} -\caption{Main classes of information represented by the SBOL standard, and their relationships. Red boxes are ``top level'' classes, while blue classes are used in describing a top-level class; an arrow indicates that one class refers to another.} +\includegraphics[scale=0.7]{images/OverviewFig2-v3.png} +\caption{Main classes of information represented by the SBOL standard, and their relationships. Green boxes are ``top level'' classes, while the other classes are in support of these classes. Solid arrows indicates "contains", whereas a dashed arrow indicates that one class refers to another.} \label{images:overview2} \end{center} \end{figure} diff --git a/purpose.tex b/purpose.tex index b0c68958..c93efba7 100644 --- a/purpose.tex +++ b/purpose.tex @@ -43,4 +43,4 @@ \section{Purpose} As with the earlier SBOL 1.1 standard this community (open for any practitioner to join) has met to discuss, argue and agree upon needs that the SBOL standard should address. This information has then been used by developers within our community to design, develop and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects, as well as, the ability to share designs between different laboratories. The standard has also been used to develop software tools that employ the standard for developing and sharing synthetic design projects. -The publication of this specification is intended to make these capabilities more widely accessible to the community of potential developers and users. +The publication of this specification is intended to make these capabilities more widely accessible to the community of potential developers and users. \ No newline at end of file From e09835348cff57e1fc6e36ba157dd3ceef66729c Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Sun, 31 May 2015 22:45:42 +0000 Subject: [PATCH 225/317] Update on Overleaf. --- apdx-validation.tex | 70 ++++++++++++++----------------- images/OverviewFig2-v3.png | Bin 42343 -> 96420 bytes images/OverviewFigforSpec-v3.png | Bin 27202 -> 0 bytes model.tex | 4 +- overview.tex | 46 +++++++------------- 5 files changed, 50 insertions(+), 70 deletions(-) delete mode 100644 images/OverviewFigforSpec-v3.png diff --git a/apdx-validation.tex b/apdx-validation.tex index e06010b9..d7e0231b 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -18,22 +18,17 @@ \section{Validation Rules} \begin{description} -\item[\hspace*{6.5pt}\vSymbol\vsp] A \vSymbolName indicates a +\item[\hspace*{6.5pt}\vSymbol\vsp] A \vSymbolName indicates a strong REQUIRED condition for SBOL conformance. If a SBOL document does not follow this rule, it does not conform to the SBOL specification. (Mnemonic intention behind the choice of symbol: ``This must be checked.'') -\item[\hspace*{6.5pt}\cSymbol\csp] A \cSymbolName indicates a - \emph{recommendation} for consistency. -% If a SBOL document does not -% follow this rule, it is not considered strictly invalid as far as the -% SBOL specification is concerned; however, it indicates that the model contains a physical or conceptual inconsistency. -These rules should be followed, but they are difficult, if not impossible, to check automatically. (Mnemonic intention behind the choice of symbol: ``This is a cause for warning.'') +\item[\hspace*{6.5pt}\cSymbol\csp] A \cSymbolName indicates a weak + REQUIRED condition for SBOL conformance. While this rule MUST be followed, it is difficult, if not impossible, for a machine to automatically check whether the rule has been followed. (Mnemonic intention behind the choice of symbol: ``This is a cause for warning.'') \item[\hspace*{6.5pt}\mSymbol\msp] A \mSymbolName indicates a - RECOMMENDED condition for following best practices. This rule is not strictly - a matter of SBOL encoding, but the recommendation comes from logical - reasoning. If an SBOL document does not follow this rule, it is still a valid SBOL encoding, but may have degraded functionality in some tools. (Mnemonic intention behind the choice of symbol: ``You're a star if you heed this.'') + RECOMMENDED condition for following best practices. This rule is not strictly a matter of SBOL conformance, but its recommendation comes from logical + reasoning. If an SBOL document does not follow this rule, it is still valid SBOL, but it may have degraded functionality in some tools. (Mnemonic intention behind the choice of symbol: ``You're a star if you heed this.'') \end{description} @@ -103,55 +98,54 @@ \subsubsection*{Rules for the \class{TopLevel} class} \subsubsection*{Rules for the \class{Sequence} class} \setcounter{sbolCtr}{10401} -\printValid{A \sbol{Sequence} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Sequence})} +\printValid{A \sbol{Sequence} MUST inherit all properties of the \sbol{TopLevel} class. (Reference: \sec{sec:Sequence})} -\printValid{The \sbol{elements} is a REQUIRED property for all \sbol{Sequence} objects and has a data type of String. (Reference: \sec{sec:Sequence})} +\printValid{The \sbol{elements} property of a \sbol{Sequence} is REQUIRED and MUST contain a \external{String}. (Reference: \sec{sec:Sequence})} -\printValid{The \sbol{encoding} is a REQUIRED property for all \sbol{Sequence} objects and has a data type of \sbol{URI}. (Reference: \sec{sec:Sequence})} +\printValid{The \sbol{encoding} property of \sbol{Sequence} is REQUIRED and MUST contain a \external{URI}. (Reference: \sec{sec:Sequence})} -\printWarning{The \sbol{elements} format MUST be consistent with its specified \sbol{encoding}. (Reference: \sec{sec:Sequence})} +\printWarning{The \sbol{encoding} property of a \sbol{Sequence} MUST contain a \external{URI} from \ref{tbl:sequence_encodings} if it is well-described by this \external{URI}. (Reference: \sec{sec:Sequence})} -\printModeling{A DNA \sbol{Sequence} SHOULD use the IUPAC DNA encoding:\\ \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html}. (Reference: \sec{sec:Sequence})} +\printWarning{The \sbol{elements} property of a \sbol{Sequence} MUST be consistent with its \sbol{encoding} property. (Reference: \sec{sec:Sequence})} -\printModeling{A RNA \sbol{Sequence} SHOULD use the IUPAC RNA encoding:\\ \url{http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html}. (Reference: \sec{sec:Sequence})} +\subsubsection*{Rules for the \class{ComponentDefinition} class} +\setcounter{sbolCtr}{10501} -\printModeling{A protein \sbol{Sequence} SHOULD use the IUPAC Protein encoding:\\ \url{http://www.chem.qmul.ac.uk/iupac/AminoAcid/}. (Reference: \sec{sec:Sequence})} +\printValid{A \sbol{ComponentDefinition} MUST inherit all properties of the \sbol{TopLevel} class. (Reference: \sec{sec:ComponentDefinition})} -\printModeling{A small molecule \sbol{Sequence} SHOULD use the SMILES encoding:\\ \url{http://www.opensmiles.org/opensmiles.html}. (Reference: \sec{sec:Sequence})} +\printValid{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} is REQUIRED and MUST contain a non-empty set of \external{URI}s. (Reference: \sec{sec:ComponentDefinition})} -\subsubsection*{Rules for the \class{ComponentDefinition} class} -\setcounter{sbolCtr}{10501} +\printWarning{Each \external{URI} contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that describes the category of biochemical or physical entity that is represented by the \sbol{ComponentDefinition}. (Reference: \sec{sec:ComponentDefinition})} + +\printWarning{All \external{URI}s contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to synonymous ontology terms. (Reference: \sec{sec:ComponentDefinition})} + +\printWarning{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_types} if it is well-described by this \external{URI}. (Reference: \sec{sec:ComponentDefinition})} -\printValid{A \sbol{ComponentDefinition} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{URI}s. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbolmult{types:CD}{types} property is a set of \sbol{URI}s, and it is REQUIRED to include at least one entry. (Reference: \sec{sec:ComponentDefinition})} +\printWarning{Each \external{URI} contained by the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that clarifies the potential function of the \sbol{ComponentDefinition} in a biochemical or physical context. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbolmult{roles:CD}{roles} property is an OPTIONAL set of \sbol{URI}s. (Reference: \sec{sec:ComponentDefinition})} +\printWarning{Each \external{URI} contained by the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that is consistent with its \sbolmult{types:CD}{types} property. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{components} property is an OPTIONAL set of \sbol{Component} objects. (Reference: \sec{sec:ComponentDefinition})} +\printModeling{The \sbolmult{roles:CD}{roles} provided in \ref{tbl:componentdefinition_roles} SHOULD apply to \sbol{ComponentDefinition} objects of the corresponding \sbolmult{types:CD}{types} listed in this table. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{sequenceConstraints} property is an OPTIONAL set of \sbol{SequenceConstraint} objects. (Reference: \sec{sec:ComponentDefinition})} +\printWarning{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_roles} if it is well-described by this \external{URI}. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{sequenceAnnotations} property is an OPTIONAL set of \sbol{SequenceAnnotation} objects. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{URI} references to \sbol{Sequence} objects. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{sequences} property is an OPTIONAL set of \sbol{URI} references to \sbol{Sequence} objects. (Reference: \sec{sec:ComponentDefinition})} +\printWarning{The \sbol{Sequence} objects referred to by the \sbol{sequences} property of a \sbol{ComponentDefinition} MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. (Reference: \sec{sec:ComponentDefinition})} -\printModeling{Each \sbol{URI} in the set of \sbol{sequences} SHOULD reference an equivalent \sbol{Sequence} object. (Reference: \sec{sec:Sequence})} +\printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} -\printWarning{A DNA \sbol{ComponentDefinition} MUST include the \sbol{URI}\\ -\url{http://www.biopax.org/release/biopax-level3.owl\#DnaRegion} -in the set of \sbolmult{types:CD}{types}. (Reference: \sec{sec:ComponentDefinition})} +\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects, and the \sbolmult{types:CD}{types} property of the \sbol{ComponentDefinition} contains a \external{URI} that refers to a type from \ref{tbl:componentdefinition_types}, then one of these \sbol{Sequence} objects MUST have an \sbol{encoding} property that contains the \external{URI} from \ref{tbl:sequence_encodings} that is cross-listed with this type. (Reference: \sec{sec:ComponentDefinition})} -\printWarning{A RNA \sbol{ComponentDefinition} MUST include the \sbol{URI}\\ -\url{http://www.biopax.org/release/biopax-level3.owl\#RnaRegion} in the set of \sbolmult{types:CD}{types}. (Reference: \sec{sec:ComponentDefinition})} +\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} and the \sbol{encoding} property of this \sbol{Sequence} contains a \external{URI} from \ref{tbl:sequence_encodings}, then the \sbolmult{types:CD}{types} property of the \sbol{ComponentDefinition} MUST contain a \external{URI} that refers to the type that is cross-listed in \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} -\printWarning{A protein \sbol{ComponentDefinition} MUST include the \sbol{URI}\\ -\url{http://www.biopax.org/release/biopax-level3.owl\#Protein} in the set of \sbolmult{types:CD}{types}. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{components} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{Component} objects. (Reference: \sec{sec:ComponentDefinition})} -\printWarning{A small molecule \sbol{ComponentDefinition} MUST include the \sbol{URI}\\ -\url{http://www.biopax.org/release/biopax-level3.owl\#SmallMolecule} in the set of \sbolmult{types:CD}{types}. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. (Reference: \sec{sec:ComponentDefinition})} -\printModeling{A least one type in the set of \sbolmult{types:CD}{types} SHOULD be a \sbol{URI} from the BioPAX or ChEBI ontologies. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{sequenceConstraints} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceConstraint} objects. (Reference: \sec{sec:ComponentDefinition})} \subsubsection*{Rules for the \class{ComponentInstance} class} \setcounter{sbolCtr}{10601} diff --git a/images/OverviewFig2-v3.png b/images/OverviewFig2-v3.png index bf12b528e890d6a8088a45834139c959418f90e2..8f34cff26ef979317f84b02f8a5810ae916d905a 100644 GIT binary patch literal 96420 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 z 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 literal 42343 zcmeFZc{tSV`!_yPO198#O?<3||wU2A8pcC-}(oujIg^>sH837Rm)- zB!!QM28U^sK(|>1LNn-?BsKrvFaJM*{mV#9h6JfI@COs^tqYW8U)&PWoILojHhqKS z4E?d>-oUu~qTUJ~F2^t+;@rc>#Anj-c7=7NoHe^PCdd4&7ZB zO+Xlgp=Xl;9^%yZX4*9->QcBgL={)6E^LxPj`MI^jXcSW%n@E^)c$A)a>lg{XIokKJ*Z3s&aH%K=|5_ zJ0l=J5(soKfM8{4e(QyT{`yz1jRGuH#oAk&cswDh`0t|y)$GIAHud7c`cD0lNnDc^ z=9C|4HR4Dsz1Ys-99&}O>Y6WppxdW{oa$AMX+S=C0MM`5LBGNK+YHqM3-_JNi+E0c zW0f7|l(yEMWK2cB?6l+WAqnkIZ0Ma%>a-)RXA7ycGXv2lcW6s0%LO#|M*grVPkwmb-pQbfBd^Y-)z5PewlrHT*tSgp)MaZ{6Qus!dUbymW*5 zlnd@;kV zR-dLIVIPEm>k6ci;cqBo(RIIE)gUaIZ$>TWd;lR0H>T0c0u2bXw7BRmhwVLx}%9kfrId;D^W;vI|c-gU-Rg39h# z{CHTQla`HM;P&^MH^yEj_qyacc!~8dR#b|8i^MszQZ5}w``SgPSp!!^gDkgo z^ZlVtN=JJ`Gz62PdBL1fmF<16XmUqwSVi+Hw9o0-gck1nteDuEh2E1ou+-(MqY09{ zBN6IQ)048o(uu8I_=TCrgMjE21Ld4@d@)l@VUpTDn^Ax>lO}J0OB6y@s@q)Irw2OE zWx&r}b!@Vnn zgrx(!=?J{s+BSeLJA-Kf!u>>lyOvV=v?6cFA;l=kHlc&91LzCZQdV}R@mH*>@P&7`OfVr;^L^4mn6eBxdanHA9G!z|luj`dO#pj!0t!gY~ zr4@}HP{0fH+q*mR$9xw}0Iq|xk_tTP^g|{d;Qb_Kyc2BMuGE|#Y&UCc+8=Vg|Cmy~ z7vAIn>X@$`I!DW9Km!sl18ug(d8JHU2aJG8^;27q_~BcBnV5&LbcV|{K}kteG_MWj zxtg0}nbQSnIH^O$9lCCJXr8>b>8duHuBsqQ7Lxw?(|+#3F1{nG+!NW{7x(^AeUWuw zLU^%F`RfH8n*n>**Ofgmc~nEBR*zM;gpd}^SVPrl4zD1qZSyj{6({nVZkL)6e8T zee}#$<~jV-n&JBkno|XB{R#-wkxujZqm#LbN&eEW zMA}c_e-`_1rv9_cUpx9tFH6)dx5hxs`#_p!K9M7!lK~Jft>VK<)PH>hfmr@frs-T< z)J8FebPJ}8%KMH{y}=mk)~>Q;eh=pU4LFroVKbfCI>T$nd<&n~AHr^@Ld=&V&6GTG zJ2Wu>o4YQd;911MYux@~uUUDzfz-rM8Mj>3XM-O2N@-a<=0{8Kvz?l_m-#g8cK+eM z0?i)9Ka~SRq{z{t81^djwJdIki1b`{cuYSG>CTVpk$cLuQ%@)OSsXuJU7_(Y_J@zN zerMTTJQo9nPrj`?o#3*JU%xLVr{d$W_}+P!*k*3GrL`-ve8bcqY(9*?3YuFHsgU1B z0b*{%H3dhrSLsWnmM&FVw-%OZF4VbuZa9feNv3Z6n+zg@{g*cXMdbUe(y{2s5}^R$ z(?-#}1h`S<;@mexotoE~oi_b4jKQPaPHj{FGlQ8^0xY+;4a;9?>9r^O_1jBF^>l_i zF7ik7ijhZ`n=i5bOAd2(h~Qu54akze^g2+VdF?!Ne<+XXy+$d^m7Nq z>gxA#B>E&|MR?={3NkPpSaA;)o;}J!Q_3G{_IRm~E83hdEH?3bZk$g~Ba?n~6|ajk zhLw)EdlQIF0oSKzS_*DS$a;6gC{9V-f)!0&bsqCs%`-?=@(hw=ynWQr`!V~zxR=32 zx8m!9tW}yCSW8s_;e6JhS2U72wiN;F^7r7EmA}Cke4i=tE_b;U7Li=PL|HT_HM{T=ZFyu=pgPn$;cVHc0Hec2{~feWD0>i=YWv!$G#@hC z?e&x9Vhdyw>XmtM7AnteUIe^~`=Y8l^zih`JD)Rk4$ZzzgOGry4d{%J2w#6G~!LA{yclI`BpTWLo7 zMJfXPfa(!@EVu3HzF&Ry%3MpATc5d?t7o?y&+%73aH00!Y^r+6nvI`>X(!|>5mI+U zS6--p+&q%Guq#r4M#R7OFCy=a9=1vJl?9xaNIujSSu3rNGpVy)pgTK%FRfDRnzr@Z zq!Z$G`}n3~WG+-wK8r#h`JKrde_4B+?zKwIkx;I%ZG+}k;zC{MJNqmhVmn;?>Zb{H zk)!1~_eG|-x4}gz_nkh=(SPE=h41$JF#YW89|c)BB1Wrw$LeGjzSTmxhyBwRx^p+c zV}L_0hAyybsvTql0;>t-ZK;V0N#fHX8iD%1`2TP{=8c!alNaBUx?Gs+6(>geVYi;V z{r*09yb<=AUe{T0hNtmHj|Ah47KH<;00QF z^O%lDulXa~FjZbqv;TR;41cx5e9}E!-+8_ao}b62FS^&8y)EX)*k8sygb0D=!o>Gw zs!t^QEO$>;Msr8`E_%VImQ+%JVpT8#sOL`I1Tk=qMWaRF3}^S(dU&w-JCGYw<8g_- zMtu{nim7bSjR45l<0YK#2(_?l8lybIY9;73n<{K3hn)BKC8q_T4)xMv{2s1155fQB z&{RiG_tz`8OYZO`j`x`QOrbVD>MvaqPIwx{S9{|vh&f~a-jhPtpvDt?#pEx|5R}}f z!RIS$C3StD*UxHd4Y_IxUlKK3T!E`P>R6cm;>~;IQ!v)DZLV4yoSDo-4P_Z&C-!sf-*neQ2cn z>jI}~RxmWYVL8#j2&4W~G_PNmcBXb?CkE{A3SEskNvnK)dLX{YA8@#@XMMyNcxjqn zrPf_f8tSG&G!QT%;>)l#v+gqFI$I%6&GwhS$|Yq`eQE9KrjV;y!V(@-9}L?buUBO4tn zL~~c8o!i3@uCPbBu%DFyZZV0WSCYcNl%Fl8%=@l#mWfIe@@hq-eI`26#=aDLU>-#f zP(+2E!qx{jxc$tAo2u@=<6ZA!PMfN59$k+t**mz)f`|*9bvE-3qeO>@@vW;=<;GkU zB}f+mWz`Q~GqI5ciUbwqe1t0h)|;d$h#`$CPZh18tBQ1icE}+8 zYwkhoX&)K+ck0XCnA1rjridnfQvVb#RCY7W$(+202`^f+HL1YBwtYP1pSXuw0hKI6&wIlH1 z&)nFH7GCsPt05;Oj4C21@c~o06`oR~EJA#*C+3S3~0JJC%rqiPZ_64w$$ArG|Y_aS^Fwu7kK zO-I})Y=P&!M~s?M{o`||V2+-cp3)|C6zJ?ph4*T(R^dTSZhLGCu@_?Y3fvx=-9j{> z38RYACM1n#Pb{)-9j*~i2h4S^-_4AGVxO{W6yjjg3}?OF<+{hpzTaC)_Ih-7%_DG-}=Z_=jiMK-irk>hJH;)Ae}%;6@Pbc-Q~;jbe7Wn`yT3~RNhbWON?#V^S) z!oO&XKLCB z4-2%#5W#nU`0bResLo9k=0S>C9s7zzND@S~(HQuaYffDsOqLc09JhigN&jiK`a5Nt zXc3maJ+)tGRlb8%x)VlOr7Is*F3g-kX&Zp*Ni`2Ry8)lTZ?T-#rq`mN3+ZzFc zsgdh{XPsZ(J%O~QEXNlpPc%^P!@i4`tctVXKJUvb0%Orp#>n24jLplnXj7Bj>EfNJ zfdJQ+GIm#qVH{je8ZbOQJU~3>EqT~l1M{dDLoc=EcJvl9gwV2C^(!X^vxvN8k>VM3 z7ePg@HPgYY)u)tV>Ph4B9ic~9QQ{x{v6#Wi7uyE#09PHPL zyTkPLsoC6gpt%g%{dr+WcfdkOFDpE#OL{S9%2|UtnO%Qfyvnw8X9(Yuq=|T@{CbGQ zSj*Hbhv~(07S;$bAFs(a+YKs#ZQARf>Ys-ZVC(~~!Hz02#3jjHET@#}x^IV8pjTuU zI=(=)f5s)n`!Pr?zx{l8&hfO0^!{dqgS{s^s8M_~{QPMWZ1TrcyWE6p4BkMuaA(E` ziHGela<)LFyF(tfarKv{CTG_A8`ii8`k{7$xX(NWZl?A7Ko;BrCK>7zrP@-N%;!Ah z=vdBjh+J*cCN3`#3bAWdb3?9}A4hiR&eP@0$vYKO6emW=zlvUJ z%R~<1kAeJ5Hv>bPO=72=*GZAXH^b0iRr=89AppeaVaCJ>XK^ZqT38fb*c}|`xZxj zmmNy--wcXw`Yzx7lw9a5hy3k~$0qIgs;E;E8>H^9a_MY!)s5^2*2&UQ&u-@Pd|A8a zPwP978}uITyAQY3*v>0bnW^oADV26cuFbfipWvfb8NMnzIpnKV@_|}NBt1ACf;Dgocl&ivs2N{t=9^D@21`jq35YTIG7+4E|qvoLoOv z$+rbG$hF{)`3cP7V5c<9V5EqVu44`v#D$%fe2{Sd)?h2{ev)qC$kZ8#_J<2<)WE-K zilr7@Tu>L-om9R@tNu1iJy5OXtZV!O8iG+mv4#E1&YDp0{N&UT&4!0pc4*yeBIF}7 zv+`zbk3mtBWyprW-$r9}0SjBLQS$vLCkr~ehoCEB8d2*+%3-gnb@&q`JtbO?E7jfG1y)Ek5h2RbFAGYGKGuPybIe91hRY;HDn}*N|5`F^nymp)P zTsk22$~N6elD0bN{9##0$d`;$vks%s2Kk{K`Z=sVD!^T=tPX_0O?c~A%Mj8zAL zYJcUC1n2di=JjTd$lsL*--8H>Qmb{Kr34Db@Uh5tq^nCUq$*WV47s4E4XEzJ?WPRN zMR$xG@AIA9TRG{Vt_>Q%Z6HpoB3I6moE`o|#p;0okMC`QXa4Md#-xPL z0?}k6XSp~4)pd{bs{IgS#^uyB;Iax5%cpxtBuEx}3wI62p$re|h^C7eJ4PyQqy< z8Vo9r{V^Ru#hYXD7b28aq8`?s%P%!f@jbo~Qy?+IBOojz`y+?DcqyQn)VqlM6Q!^5 zqodLpVfgS}(Y$MkkEEJQoEMKJE>2B|-l!IUr9C!QLBQeMbfMWZ{MNcf zI-_V9iJumGC$9Q@ZCGc=^-HZb>BGp!Jr7YqQ&)6duhR^ z@b~?i-1ny}E&Nb7&n@d%dI)IWPq+z4fFlQ(7O1PAnc^4L8sH@rzQ{~5Ox<#I;XD}n z{J80N&1_UoTLI>Nl!$j9(L_cmvHzu(9r;|0B+}~BTGyM_2P@TzCc>vZ78*)IuGZw1 z7&jEa;kl?h53lzWqZbPdr-eum;xWHFcAk0PCY^iCM)6&;n?YgfCinNK1!}K(?Yh6p zM#V#FdR#P+H7jDsQ`FHP3vfb#A}T8)p)+c={SGi%=9}wXjVY*Wo3$HWt18|h(fklU zsF~K6ib&bamU{6q-(MxHtWl^Y6J@|H4VWRtonKug`&c*_lTp-l3>96Nr52O;34uk& zb@I3>>1f;Ve2`1!&&>K*SQZ3~ZKu`^%b~NA#>ekiH!1{g)YtE`;Od*A9+&&E5zexy zgk%kfmCRb_EfvATR=Ey3Hiyc9$+UaT%3<4LRwS7ZRr|ai*}x7GtfEmC~kbzUFv4+nyuGSt>JPX63}m1k2|!LS#aY zrEB>UW713uzalv}Db4JH*Xjcd%S~1M!kjv&%mUujTNx=W2dhT0rS;LGL-##5%|MYe zeTr;aHb50JI9yoN&j7=Mz4yAn5v}$Xum`R$mh)5qs^B2avt@4g?4ja1o(;3BQ47!G>&MjE~q_TP|K0?WTp@xtQ_!YUjRGBu}&ZO?S1VtUj&eiU}uJUZ)?&DN5@1z|kvL z4bmQ>QD1J2p1B0{-0ypS5PW%YGu)PyJ@E}hFaGoKTSX3=gbE(Av6j7gwp?w0sF}%^ zDfZau@W9gc(4*~v1C`I8-C2`lo=PeuJu-){_hKlM5A;MmC>JDw7OO}dExR>6paE;mJGA_&JyP*_-yXtCVEAl) z<-S6EUNkQ-p@{CZYvtaDWMm=VxhXLlMk#_;U>s&t`8_=sPjS9m3f>R{+|6*VsH8C7 z-;<+x{qc`3Ti=DHSQV1(w`N=cuedg1ZYePqwF2-6hS!CCp}Pj5&tDd~6k) zRH#>?uX$Y%ME$6i=1eOf z3^sd^=(F)Hnpa|>b$OSBK-l6u4SY z%9I87PCxSrw+073%@X_4ubW@etb{BfBQjQ zrEb83nA!kh_(=7iksnnPnR#eBowuSSB-Y8RNm->~uV0dC=6Gm%rnU~xneqPTW*&c$ zM~p8=))a))V4CqPHI1KXs>8DGG4+nPQ-_3jt3jTZi%qYXWPa@GwbnqPMQW(gz?@%U zGgv88zYZ%(&6)BdERyY+{%HvK95apSfPrk@KsYj&GR-|p*3^UT5a%ll?;Zi4D8F-6 zDzk_m7#)|pkf3SQfE1!l?hXFOXdnIh{Nsm?8tOf!m57@|glj0mv93=f!;$YVbKsnBG969VeN;Ay@GPD)@T`UW1v+@#}W|u>L__3X+pKWu#mL9%Fh7byO2}3 zjhfqqN;OYB7xiu!oR`XYyeXx=4=q5A@#wrzdX)G(BKXv+YoiH<@#-28cVq@3c2dV{ z=rjLfXMgPtg1zLZl%;g>Sd~kJ+%f^naQXE-nQ2!27E&>BXq@&f_y5=8zP(c@kN zGfh_ptSYxNml?Poy~@b|B?`oJo^3PBiH_!-oSf>b^}($J%>a&#zXP#8Dw@-YX*^qT zSE3oSeYj~|m9R|4ZZ)TJbE6)Bn6!d^imLX)sGaU@y_C+gwcE1dNGiGEzX($}Ul50X z|HN~ne1QR^d5LVwdrO-c<7V3#4xBVWywV|a&!hU>q7FB@VkW5RbL=rM;BrMy4UIgR zv7Jph;hFPXz?g`@#tgmj(1X?%UAx~Nn$ODbIO^aPLYQQF8U&p%xvk86ikF-N~7=xRZIzG-b{z|WmvxJvbR;*$<2v)()yUWTssX52{J zt6(ll9%AAgIO44uC64^UW}>!tBNSX5r7H`(!u+Fg zz|=}&*ZbD!;1s7v6EfPNd^?&pY)!a^X&2%+w6)olaYKpMpYAm;tsk}3TPY6j%4o+m z?qgWJPOkinoBoNmFvxHK%1YzwrHG}avHSmGQ4eeIz6R)Pq}IQmsa3uBSKYj|a{#M9 z-ki!5&Oo|O9} z4C3F%o-H+(o=I%1W_x^eOr$CDq;9&<6Tk1M4L;tU>AUTF#Nf+YyQ2FEcD zj#1^`Q?Be#Q|fMmCAo+opk$x4?dmu}A};^Sx1iTo$uedGPt7Z|$GZBLbD(l|M{9h{ zcAw6{BDE87-M2Y*=*J*1EJzgSkcN*G2}{3M%w+yA{hPymn(eeYr4luosjZrie$b(d z7zrs#;{KpBqjNXwFbOKNler=Q1LabG4a-2Bra_+` zab3UF2ayL%B_y83N(zOP4*big&kURLc!4z3?nS5JkboZh2ks8(>A^ zAA**45AlATUDYJ%!4-Cs<98kIy?pgCcgL^?@95~$w1OY6whLW;hb(Z3PJ7rDnkz{7 zCAW)bZm`{dILDu3&+*VebkD5F46rZ5tYQvPcMGfAce8O)N!pdk)6wj2n-P4TALbku zMqYnju);RjKoqlVT9p@=f$MG-!LAeSwZ$_a|NhnVw6!jQ%=w4A(%zHB*zO;g^FY~4 zeN_?s@)mlz1vLhrP;|VT@5%o5`KdAEXzwQ?lJ?~bzlVqQ=Tn~#-zVQNr+Q-AB;*$I zbfPl|QJQlfx_M1u_fJ;i|Cg?<*f zUph$OEHuw09l_K^*`rb<_N}&*-2c_N1)X6Okoq26KL}k;es~~l96FXmr|arEH7*?T z!OKi07@xw!g*CkTF&w(WdrwHx-i?+<{W1ej7e^C^bw(s@^8nQfw@*r`tv#bX-g0(V zeG#oq-x%F{^m5TKS!QlAq#LsL`VYbxNoVh%>Qc?*3?BTrnN0n#G^urf>y)tYUvx

    jypNzOX{wE=UbCooyD*+Lpl{b*j{45p^v(%7r+(^Sz;HoOEUk-IZRpyV@l8pV0E zgt?bDV0gz(TVr;3Z6*&}L&ADzpBEFf=l&2~#0w%km^ZT(j`5dwFSK&N~*$?OpaW^l0)X36#p+s?xbdbn>o zGF@%XIN!dHpm#3MOZtW7;@HSo4tw(Pc@L4IF*Jvg*;R_zOmv`qI9RaU zLc|M>RWQUBPYJm-EL=nDTY_{i1u+XxEc8D%w7Ol9)t2ZJEv}#`@hpUqnJe05 zOg0jeF*k2c8qIvPeC${z~WBdA4OHA6>zo3LE&sU2JHvIKo_w`OJlo!{;DsYGKg zDjH8fahac4Ov?Lu!LEw)nrZ*fMPV`nUZEZFvun~AVteQo;AOO(n(d4sYt|n(NV%DL zL$IgfoBtS>+H;EthiF?Qv)GLL$yss7YQnd*<1l4qD*-Qff!)hDm0y3PaOO>THTxh2W+7x;WkZab z>W1uC5Sp1Qv91?BbG6>CdGL6=n98?AJ5=n;&Yq{!3P8-+^!h_gvR_cp_={fwX;=Fe z93Dggq=0)QEuzRd$-At2bI)hnAOk4t_K=M6b;IJt?l)}w8g8_!5ES?EK{2r4YY}@r zrcr{h-a6ZW9{g5&PyNa*k*k~*+Ha>vWWACXK2C2gAZ-b&EMsOWqwRJV#ca9xGFyfN zEnfnGmd7JFE+CfziKh!($=S+P+*#`GE60Xo(j(%NP3kQO7gKgOEUm*<#4y5Cqwd=~ z!jQu0w-{}5MxIG?Pn?9h8wF@603m``R;BdG)Odrw&h^@uX0H4O)Q6DSY4sA(r0+K$ znzq@sv)2lbs*Kz16xrJnqNN(8>vqA$i&|+<4pZ6?1mxGZmfi#Z*-cvl)D{h_CN)#h z#U{Wq5xh)V{>u_jky;s`nTX~ixjqPw;T|IOyPPbw0pXs~NFF;A9yrZ+JT4d5Wf?X- zcq<|)S!Lul)dYV#Vm18TQ8i>Y5X?ZY-SV}+(x)7Z`?_~ysMvID{qq7&?`kI-rPDc( ze5h%YY;zBkvSih>j{TXaKe2Y)nM?EX;}mwLfy*@~=1dKc5w&Qa)$0@5Vuo}P?{MQ2m{wDdr&;~4X@=U9}3ppLW+%v!S4Xgbb=#n@u6CaZ4?Lz)J zH^N#Ar5da+t(;r`*+Uunp$W%-9m)PUbi_a+b-`TW4)K}6<%-}AJ9bZ^4 zrbhf+cn|EnZvp!xlZWs{pGJVIwKzxyq{`gR{E8kxTx~~OdeA|Cg4Jd=0y=P6ihfcR z*kIn?Km~zXUemBH+so3wfBU~f|M~Gm^Pb&HTb}3I-twlA-?6a`U>Gb|X{+ShTiu`& z478>E-#gTIwQL#>?Oe$QU18q2VhaNH`2FPnCxBw`(FD3juXpT)gH$DVuKE5s=k}&H z$nWmX-DuE}Kx>B1r#qL^|346fC{VoRne8r-`=7-1_k#Ps4+1JV^ndWn^Vq%0>xcPA zE7x%5Dxb z@9c$2t5e=6_FnGz=HUR~TolZK@NjPv+!dIpe=yOT8niL;LvVeuIDkA+qZeazP5%%; zeFCtpO>|mNe`2>`_Qtax)y2NwNW&sDR8|nTU(+u&Uk=5!+ASp%`zT*vDAJ`tNhE3d zHWfEpM*sl_W4@+~q&#uLNQh>veK^`M4B&RcfC<9dE|5&KLD?1&Xc+EO?{jreCXx2g ziAVr?q#8;yyLcFNlFfHh>>FpTWZLiZe{_1v z5B3=m(FM2ZifRK;K7^c>3SmIAlFimloda*DqwyT>^( zIDBnx+W7rIX^a*yf_Vi3si)JN=f_>t>fpHznJ@su@%hH4^!#jo8##1<&V+L>bk1l! z5%E!zdz6N$QzQ=>t-;qRwPBp^?Cxf^QGY@6^1w0idELeH%P0{WvJiKxw=5t?KM&ge zc#X+`bt_xL6nu6tt!kb-?8zftDJwoe2g`dvcE62zP}B51t3V_94Blad|Fzo(r2wl4 zL2!561^9`m0pfB6&Pq9nCOXAm^0&V_&SXHX0uX+9VU3!`DoGJaQ#t_8@etKYlMf8P zxMEu&EbZ0_Qx;VcM8kne%*?2c=lV?m0;2*_mEQLAx8f_M{^_vmDHorswZ_>^e`AUUpeo##E#BR&_9yVW0&NImv1ohCrQUCz$@DaBSX^Vf7m9`fIxSD zDK!)T$9cSIe<-b!T}2Z$LQ)-T0gP|Lf6OdqLgV#prb}0hW*QKWlVX6qxfD83;_uMs zo)?o~cM)ZcR69{|@+iXggAzpQa!+Qes+hYEIOa5ET{*fF0N-xLUUBYB>p)8VN%`~% z10=y{NG9G+cYhW+DKWHHVa9g4G)K=S%N;g()JDOqvWwf5hIEtuOT$1TQHCzq#J&{n zCY8An`lj3Yv$cj%n`D})E^rYa(V$`0I$E-=HLmSCLh(|N#e;o-*$g?n3OoTeZpxZ5 zxk?1vWLa4XCUvWD1Hx1IOL&<+{C!0JfYKQ5)7Y}Fsfr2dF?HGPgCEP|4wtAT1j^H0iusof!=R*bM@8{k}vS;EEVvdAqk}dq9I`SvcK(qIIgp|G-Dn>z=}vGMze!aUBFJG z;usAUIeRl22#HVVcG_HlzFW;(xH}IiEI?nJq^F#%Z&RMvWak)7YLtWF8|MuZ11LzqzChEV51Q*>O&X zU|M%|cNWlHb&7{_ja~yrIL^rf*^Hk@r;xE%rparjoV6!a6h}OQ0Zt`>HwQLx-5u)l z9qt#jVh-kc%9$AhfY!TWNXfj@36VI#Fm(W>7!#+-m{inb&{K~cwRdWe^6)kRaKbde zb)r0gfuT(R>NhVULaEc@sH_&&!W`wHJK5LHtmq??7sA0lYcdsoxN4p>TY5EfLVx88 zV#Qu@injaNwtMUD6X&jt=0&V>hz$eSJj888_E5SLj-5B`&Wv}uE*kD6F8O_Qq;=7R zrdbxCVm?E=a)(M$wihEh3QB7k?LdCdHnRuU($fhDxpquk=UK9dP-26so$g4|Cd^vd z=cUXvX+0;6f?s*Us%?Xp_Ym8JCLi8RblSw*LoaLsczD~6n=omg3L zgwZSVX!~uHhn$7yVX(G;C8b{qZ9c_>SkpwkiIZyU1sG%f!z}^s5G+vpHMDDvw5#7alsUg?yANdqUBIcR&)RNWV*h=*P6}iyvb=B*SP2lyX(&* z75T4f+k6KQ7w#J%#j^y}?oGF8dmVmnR3HIPOAnjX{=-qbEP)Z%ya~)LMRi6^C?(gM zm_{k;z$p9r6nKZ4w&^eMu^xZbj=s$tkc+abR8cn58P%J0` zPVI7fna%xy?$;(;mNRklK33UpFg>gff9(8`&B$_SR_#BcA$Ua~?2u$Mj5%$&+fa9H$NaNA*5ai^7nd4*J7@IY%SW|X#%585HBW@W3h5KUkO z;@W@nl|#{;y-q9oe#$U+>6B1l0y>?UI>FH%+JI~wz$y^dCuylD{U1w3A0i0&yC1UC zHNi?cR4cw)8!4Zc-uf{nz1{81w}rVr=5zn^R92@S_SJ7QGy@aigmiyM;>+F;wOdW9 zqBl%2`&qy?<%8e|6(M%^!LCDBfjmJYrr_i+Nh$m#sYuCJwa2T#5rgN#iSntuVQE|P z^lVfc<}+w3>>GlD6z#4g0io>;(zkHyi`K{P$%@VOYv1gz;+$z9$pcquMvp;6aZFf| z_LYA5oJyc4U*@oKs1Li%{a=S<<@I+r7GNTs8R~L7gdMT916HIw!@+I1d{iW`lJ8(O z>n`Bs^9XR`K{}CV)(mesSnT_MMX`T2pJHLn(XnApIPps1&MT<|cC=0s4sI=VdBFy_ zO-)f@O7Lo6O==cYLT|K*Yl7BH<%(Z}fs|Eu$ia4Ik*kq{+rbKbNI$kyi#n!h z8Y$Spb4d7DO{EpHvKjFGQ;65HTk(0zn?I?YN|}4L;x`6)*DJz#QsipM10Jsd z}{( za_}u(>)}tlv>wC*R^ZhGe0ZpxqJV!Q7p1a9!iiZwhTX9GiwA(p%3MK`BpC!H{*yHg zL!ty&#=x_Un5pxooF|ngUvlPES|K%n;W|2yPoQ}~`-T(B>BE-u{pF&T7|HXowa1I~ zBKkd;apBLQ|AGH)IKS8q^(S_I#eJ#*;vBFx@EIKyc}a@?W(Y&YjJo<2PYUwI&eoCf z@9PP8x*|$I>~+#W3nXm$!uobpO{seEUEF5L-r0fF+*M z|8Ek5-vO!M@}E$?-J~0Swr#3gPa?bm0TmZ-#-D3zyWi*dUvd;sJF_1%LgT(C`=J9n z9}cVhZKzv`rHG$3gKD5%CNM-{-F$9k`(=nf65J9Erz%a{drD{3)nEUgu;5p?=r(%F z3B9+(|9_{WzrOJQ_aEMD>y~WU(eJ5^<*t9nyM3F_3~VYSgd|0KFfNc0cqv2O75fF2 zbfZK$*L%_5Hew9t+aSU+Z6q-=P6O-EChrZjjqr5?n9K6qdg~^vek08oUr43Bv9M0t zR^LcFD=n8=M>di<5j#s87*KuoVW=^f_v?+^KJFbv=mvL_lS`JtC?yVfzk>_fcG&Oo z0fKGt9$-37)AEZ6+Uy7W9lzcsWMSU_T!XK-!psf4BBvW@5-*W(@IA1AjF@}`JWFAk z(!ovXL1wMw0|2$R4TBAsk(X&^b(>|#&ttDbcJ$Ss=ABm|u5=`sub~||_yj3^{wc4j zo@X6#%uehKs+N1w8u-%JCH9Om7|py)mG)`gOm7spU0O1 znzDd2b3FGMUY%v+vzJ-j(G!@&$S)~8wWws3rSUt}G+et6p`A9zZQ(B;#b>a@^_Hq> z8Trsg%@PdL-@kXSEgx1SQVjO~Q1}r4*byRtR`6QIbyWk*Th6Zy%?BCWF(%&i`+|_Q z^JH)QaA%NvKQCVe)vgv{L%8=j17P7hjfLQ6LtKQJ7spPk!b#s1B#`$fVpsq zYn(l`8k(@{9?-*j(LBbP4iSFO<{dM{DnFxEWn%x$8e*xI=De`*6KsTCSYY~c(txf0D8SOo9ZoA2jNzEdr~I08u-tyw4UM7W{@8WUo0Gg;^|kl3wQNi* z8TZ$-rbLhWg#?cS3yBs#&LB1ltZaz)_P=BSiY*S~_o&^<`^LH^_(+g`Lcs=vxELxF zQgSfKcEUgFg_xG?k0nU|#si4C+C5S?i(hcI^{_}Fu)Xa5DgIM*=liA&7Q6y;+;@gK z?Slru9P+d+j*y0pKY2w~Nc#2dk;BN6BR7*23~M`@*{V+r+G0?7usiVG52qF)#_qVU zBH`mpadoHZNr;!sx}%;^xai2v$FO|(eop=4-Uv39UY!GqK+YWgTps1yZJw?A#c}Ad zqNKVM{r+^UOITv7J{~{La(cOot3}}fwy{EAj45IImWgaTn~IR?@lPDG`(>J@T3l~&Wgn>{^e+f6Y5T{#a$QLngC zrS^OVddUY3{wWWOaB%$0f4JxTKn6IEZ`7>nC91K}=}B)8xKAQDU4$*_`*DD^Taf4# zt?Sog;9V0QgS#qbds5+mJJ^?_Z8%Os3O+1aE*NM}d~Q7qw##z4hE+#i_eFUU2TCii z`Bg+!VvQvD)ZLTc!u6iM11{y3e!}~}*jrRzK#`$RjfAr6iYr)4_wKs0jGpYm`;C+u zCvFKzSLSv567RJ{4aF;Yx%5M7J>^|fMstg1CQ*-kNUW#wABP;iF~O^S*_W|t!S#Bnf;Q=V65jazd-n{6 z*RU=*;zefnnx8NiZ5zk_ft&!HOY}#MCH}lKxBltNY0N@Wxwy@Gc>46sMREfp=%8LN zjeds2wS1qcS^ZKN64Jp+6jwaK31ne>j!%m}9J(J1^o_Px!`E6Ia6&Y~3n8cy4%2u2geM7P^O#Wtbk8 zazguNSXi<1=kE*I^S3Aq58xjj|F8DGJRHjQ{hJo@*ovMkS=!K|WXYPPY}u2N$QId$ zWSP*Q&5|`L%h(Cog|SoFQnEA5#1vTuL&9Lj@?Q7Q_I;M$^ZbtY{o_53Z~tcQ`?{~| zyw3G=e$H(LN8K^Ep0P2erwQpLIRG1#Wpm{vtYvjJxOH*wjY;nLw1-jT%2}6%+ba-* zL9Ox?ernKw5LFFr|{>-v>y38WF*Q>1LILn1()B)h_^#t#nf zdPxevRIn|i*Kh8?(GIMQ+t);yOYx8$RHCvwVkNpf8?aHdV$q%V;t;cJ%mHffFf?PJ^A`jiD+NRfz$DBxwK1a`4iRl>!#WzutOpwx#bZ1o0ZryF< zkXG1psMKp~4l;AVOIJvJRb=~DE3&NMSePrF9;#fwMQ#l!DI2onhf9 zn%vJw>u0GViab;1eI{$bykqWxP3)UYzGUhn$AzY_FPuJ5E5s-f27^5H2wk(+)fcS= z!NvX@)aGO9UADUYYNDmeLMcJ$L00)LmzIO7Z1;bn!TR(vyv3%8#udqqIn=h^ttR#o z9ntRl_$WV*O>mliVZF|wEje+S1g{QD!C8(1&^kG>O*nEbMgOvh#hi`Wmxk8D^_BIG zpMg&|%mA&S;^njVoT^?1I1;o+tRtvNRSB_P3qqUGD$^29FPsB|4)B_VAs>jX3TMYcZ zWXyeFVd0dYUuGNh06J5x!Q$a&8IY< z^I@q0Xl29aqlep6g*|^)mGSW@JhJ@B|DJ^^?bvrThN^OVd1Q;^0d;Mgi!kCHlzCh) z1$9&Sm!c6#_8=4q2w*r`kT*1T0d<+yzh~@4LJlOxd|GvychZkASo^DAnb1FwGu7z z*G4#P*;(2Vn~y3R~`iIDIuZ9gN$S@sRu8zAjPafH9t<<+iM#>JUbJ=Hj?h;{02 z-1rO5eS2LQ#5ZM2z7+VVb5K-rIKln2*PDFRS0|(ot8SIp_yFGDb**QVX%F63bUS6> zAuOmF|0Z+&xM1?5x>|n}E;Hod23whexI;*79-CGpOCojCD+unKdW*$${yjCSMJ={pH#?a)Vzkb+ho;SUw1F7WIBxK$$sO%v zs_g~L&7p30iT4|O<}%;a@Lm07XHvX39`feV4~q3--j}v3U%J+Zq!Z-6F0NlMV+ir-(z0pqRCNTui7h8nOQH4+^#lHYIL1oKF+MtoS##zG!S2$G zWDHN|NUFe||5!jrbbCRR6XY#RAQ@q`x_ebO$txZD@aSXTm%+QRYvb^Zr)~(z5(dvre-A|9PWb2pp%vSu|KsG2f@hKr8p?d z?D8UYYuSgPhx>JDgj?P4kynTR=7vaDj1ZMNSeMm2G_V+ zXEQ!UDPVoNRrgU;f$Q>kpt3;N=JjY`VSSqX*+783)$Ks)8vL~EI`KW0S$?D;wS%~~ zWcGP?)6Q5yP+^tuUdlH~d}q2cI8(l&GiHkI=da#luQnLoLeZYv?q< z)|gKn61m_cfBUV(-UpB((BW$ib_1XdGi2rr@c?_^-)w*&*Z{wd*p`z5=O`Cq>7t#8 z1!I`LQbY^L9hoVuqS#)YD_&JaY}-(ZQDF%Nu3x{Ykk69l&4t=0_X`xGTmHJ66?#S_~E= zi1tXSj@gUz*#HJy2iAptlWhk(h<_@z^SY0)_Z#-SEbpNsW*kd)zUjH9jB`D?u?o;G z2+_LL4C=!?tDa3ZJX`QqjNm}*Su<`DO|5_3=hACGnARI(N%K-%*M~qcEV%g~1AE24 zJInpIr=~{Wgl;?t>xKNb;I(b8o*qLoorP3Y##g|yAZHh!BE#7&1>OYUM4tW);5`+m zo(Jv*Nmi^9qU8HsPLvP0fH4p$X)`hme(mVc`dH%26>47YHZHOB4DG1)Rl6tVT zc^d!@CLKuzuZ*?ylWTPj0Nt?G>4~D(MN-?m&e{Ra?!SF1M4VwM*70gVO~gWuavqXA zV#&Il7W{~atpF~d14?T0;9}bF6Oi_QrB)YDRUA|l5XD>iTQ)j_(021dCnoMU3Rh9N zj=!#&2d(}CkuI`UDPuVcXp2bjKr3smJm5qc42j-U`cEmuHRYAYWsBn<@=JF(SA<4s z-<$}%u?0Tc(#46hw-PP=rc+lxK5k}^bx$m8-~!F9 zU8_ja7;28wrBzxSU*kDdJP1-=sD2Lrzcea~x&o|-S~Yb7goWI8JpQx6GH!j|A5P3J z`MSPZ+RDlLTgNu-u=TyBYxAw%&$U>eQ_zq|{-ja4<_E%w)oo*p6f_eTKp~&EfZO-g z)(%vE^1*CevGJ#Oz=)0B64^Lnt`vXVa-hRc(a;0(g-Su;!@ew5Jl zcq|7kBWo&~2guZuV&a|4Iw_vWn_aMVUEVtzN*Xey@wa)&nkks6qW1hAHDj?3j^Vyx zRk}dFHlf(e#nqL(X8S0-H5`$yecvCT5xH5J04nUHHpntYH!3{-Ce_|KPA?GWYGp@W z4?0u^36;QfO_4m6uur^vwwS33uWRE{%;nJ5#j25Uh7>RFpz0sAsJd)tQc~U4i&+7vDcTXXVPbdwO*WSH(lFXbefF_Y$4((IW@* zRT!gR*G|USr`k&r<0@MvPUT8~S`REmuJ5n*D@uBqqryxplCk4{s{=CFE@rTQCjy%m z8IO{7<;Hb4U;G(`smaQu=Z#Vm8NLPV359%q)6Pt=|9-q48Qd6F!K?WWtOyaoQPRN; z@>aG+h}^4_J;h(p!nr702H_0JvCOrF@^tk6TsY1pRvkboM5$jKnDF_l3kZj_32Rh( z;03HZg8w}J&|wm&T)LCEO!LpIa%jYxVz&v$?kL@WX^svLTeF2_o4D>gXXV==kep1A zup6e>H*@B2MqS)S2>C~STBBhcP>QGn{P-|j^eMhWH_us(dvpg8pS9*6Nlr?{sYY;& zgkvp1X}%kjCqNQqFwkFJ!{)=%2XrZh5|4<57?zme%152>ivg%IM zy(V%n_h55yRWqbgw_b1r?q1Q6%y$Ub;;dLQ|N zlp!>6NHf%Nj2<$AN)h#Lf6Svvpx)$b)gm}Nit6uQ-*HG(!B)fOHs}#?S*~eYf1O!K z>uk&6wGW=M)(d)UFl)csuVuN36!erAT&1EfWKW$HHl?ENt`|U#Ca!i_wz7<&pPpxr z)MO|315Eew8`x`5V?6-!alBrmrcNxJ6i*e@j^i`)7yiUismaHult8#k`p*@btke}B zd$yOHh~B_gPKHnfPTgo0asI?l#afcVSK0;&;lm{BEu_9 zO`xyEZ0^S+^$PfAq)cE?u(bAj*H75;ecVA8p0&jfpCb&^yjiR zGxS+SwwJBGT_B63b9wC?L-Bao$>vbMFo$y`csmySng6lYM<_~a8p*XFD$36xWwzRx z>HuCDtl0f+WTRpjuZv`YlRLPA3Z{clVNu)iB+*Q*SJ()o*1{Pphfg*KKX3m}Pms6r zkm%Rq&?^xfSdtYj;5eS=Z%ZxL&as zVIsoI4r@=-n-0XGW>Nt-a?2J`mMRIo!Wtr}fWknFT(Sc<1x)SVJSpI+1L;&<%}kC4 zPD0WZcZ6@Vn;~y26kCNEBVvvKOlghh9YF3&Lpg7_Um|CKO=HAm`%mHrnO@Jb5g>(ND_uNo`4)K><0+0&+ z7~$U`#c_b`RLpD*@5(#$dhPKe?I_;=)gz9~`jBV5EhlRe*E*W&Ry()X@CmK0Wyn`8 z-~drBO6Cmd5Z%0EIH?E&d~xrPLqBykEcgOiwsp58VE0dNL^O5Oz+xgOF&QGnF)W^h zpI2)5+&GPHs}?_qH;Bd}G0A`r`WbmtuGE0g_v}x%uto)L zIi7YP9?$_x0*v&_!WS}3I*DM^f$X||Vp}`RZ`{A{046WrJK%TvifmDC>)63F5kcA9l|K>#wvzim8CM93_y(Ku zoDdh0x0ITL$0dzHzmM*Ml0e0E6agtzWSh**ja$ouC(mEW43n)TiKfii$9{e$j_}sI zX4_&txuA>W|9}8u97-4dd*$#KhUQ?<5WTp}Fklt1vB-&y6WL_lKc^Qa*~+YXbs6+NJqh@px&iZ=u|*)pTJUt*U#?X(K45C@{kcRs4YB6V?Ql{f zyyxxuB2L;~^RN=VgY25q?d2{R@-uNhzI4z~(&nVGb1L#G`&|Da(T{!o-2NFlR_v51 z7{WEZ>s88zau?<6_jI@;78D(J!O){n-{TASmcEkvz}M0`&^>I`6~6;43pVV85t0B+ z1`*U7Z4~E3h86zw+E#^C+<+OjOY~bOn`X2A9&;1GU54ux zw+-Y(86^i=+1=dOuAHTP*L8ioBfvFf_wll>W&>$zjoh&0rkU8Z7`&25mZ>y#{P0R= z8~SVB{rlSUt}OlfaF;jMNc?B1qc{j(yF_&*c^Kr0PqIKB{-YpRGXp^p>%CSCnwpMq zbQBM80Y+yodob)rtS9#nxZ!h#f3EgsE(q8uvgN>7(=e#*X%FZGp@GL6<%XQI5j5xSF>m0X}RJ4+#Ib$+#wJUt^RVnd6s_9Eo|l=C|njv)o&`o$gS3f za^Su39%6iq7^2QQS08Ts*qWUkgbS&Yv0yUNr2+JvpKZW>;H*&8Kbc+YWGw$dyNW(o z?7otp`j)gt1)aTNbPqQAmOwv&h4POL{*(NX-&WvRlTx7Q1);^3ThcL9YO)V~J$6U? z_WTo>l{FoKaxQN{J5aCiQJqDoe~9Hb<3v+?w9Q1D_^A^l{_+ZtunA=h|6Q61Ohx*u zw3`^$cjsWn9%pT6KUv9^g1vz4-tLyTeX+YaSR72mi!(JkYyM`e?NLj+Jr+fPdQ>g8 zSUw1?11S5y$|W+=e%}&*3V&BHd77;{$O3QKNcR3B?ZY)P?;WURdhBX zjtpikaI@|^=E^1h*V)&f?2q>p@k;yf*Nur<2mkr6zPIpL-v6hY6J`v;v@ED$$v3$D zhr;=j^!877zwmoEQTVQZdc5-P3)jfBp}srJG=Fw7!cb}P zyQFg7`cahovz^|l(WA)8^rji#;39oT8qf?^v2DGYN|5;b-#MQ4SUe>wRX+s4f2F6> zKKb5nhNgBf+z3H^viYd|tuXQ@o98iOT}xaF5iq%>sI#+>9q{Fh0#t=}2Ux_0CLI2| z--AiLnG{d*%&EUyASV@-9poXqo)4ih`4(OLakFTsd^sUEocm(x9ky>pxt~<*rUsy< zN&;Z6d1cz3f3~#WDHzcgKOXdhK|ldO?#6?dvM6xVaK`U)@~z&?X~z9Q+H1ZwEYbM1 zqxYAo4(w_h)jg2ZL3qrtt}mV9HgNWY%4AFMxHoNU!_ZhMPyyb!^UML?s>X~3OoB1a zlk+QB{7X1U+UG)(&SD_mj#6bjR6GT#Z2?f0t%K9{0puv@>tLHVVRmmK;u9nHRp+yt zh)-h{PSNE-@D>RtaN0pop*v~A^b=@*kRs&x+ZA}}($>l)K(VucY}UHBb5Rl)w$aGK z^YqYcUEMD5hJCz(bOgeensqv=P+wPuJSaEt6PL}_9DgHgW*j%8uf>N$(ja1;4fA~h zf~8iOt{gN3Y@;A+__;&P)?~5oRc+x$0>WqiID$u5iU)f6Q=ZjDS=??a zef9R~D`lGZf7zt4Y$xKB^%Xd6-J3`mHlbMPGG5N20UbM!+gtp5<6u#T3^v?m9 z38-iN@~wxK)oM-j>3h-39Qv8p%*VzM*$uz9;kODZ^bAhhl7n(ci%|$RDlj{&a`8V8 zhgCx}O@0#nY#{zqxq@An=NQ!k;h}m}I@0 zsbTU1p7db*_G~cDH!OY0@kTw!?MpJOg{BZtXse#6E~l+Ik(uwkb_FZ3-QR#=o5a@O zi@*+Tahu!H4#?RlrN~N$S1$ccwBTq*`pE(%5aoy>)yszg0H^ipT#EAkYk^==Vh+;J ziOgdVv#Q<<)d5TT&-bmoZSFxWE)i#-+-QNIqG?~%$msQ?s>vN@FeSnOSThB6U3^k$ zleUD@Y(NY#j3&BdQ)X`9$>Q4DLMFpwSHiY}BGbET@XJ%h<^02o`vw*jsb8w^z(_R* z2j2Rw)(&3Xci`#AZ`@q1%uV-Xjkpos!?N zX60Aw-Z`JSkLs~ncPqr2^RWzKqnvMjX`q!P50!drnoki$<7BXoUh){`UTSC;3f5dR zsxKjm2IxxX7T>0;UYMGel0QV1Lj?n4Fu`a}E;c!8Z#`NSjhjpSMh+3Yv!xF%1GcDF z5_cwn8}L%ZfVZNnH}AuTQ*0}UqUb^*`;#jNFmI`oZl{P(Lxej`s;72N4<_6OV+Gk} z%xW#K$@flbm7`R>cTi5y@DHlc zuypI9YDr5MRn_9Mfv+pOoVrYz!EZ;Kyp`=T;u&r1wd5-iH^){yaNDSU#4K zDN(3@g!}5TGt+$x1%RU@Uo_AJFjr80P4dQD13I0TZz(k#h-|3wT3BYE#2t5}OV=~W%%4Gjn!E~)`Bdm~8C($kWZ{_XHv;TjIIRq!pc4XZx37T{Wx8K2 zIIrZrdY`T92_yoi`)vIomb_#BL}svYR8s>SA+??tRtH$PYmQjH8SU7=3LmzHQ}40P z;D*Q|bGR__V3(*17OlsPIiBmgLo*tdN5eUwnpLNdC=crv10I+^ke*gR$sJ<#-lL5~EyyPXX8fzE{AeoFhxDLY>q2>zD zjO=Ro6s6$<5~CaE1Os)MKN7#5pZ*X{Lmr8K?#N3%L zG4P6dwG5hWI3MfySjMy>g5zmfflpBJhX^eb1}au_dR9Pymt^+Z6fRSJt0zce>hWbt zD}w~w-N9?^O%RZyk30LWmDj*T0C=7Qx0~iB;<8E#q9}6kO2?BH3JdPj%T0(n=r5BV z%(r%3thA_;u+_5aGv?AQuMTRF0RQ2uSg<@QPwG9;6TwY6ECrodeuXECpz*=d&)B8f zqH!e325gDv&6}RHv7yiKQS^pZj_x@Djd(kpL=2>#EMG&osdA3E>o4<4M6it#{s|Y+ z(|1fXG|u-0)#tr6ir`pF2<9HS0yuQ2Y#JMTY)4{<@QC)u^KmJv)yk5W5A5AmFNC$#*>571Lvf#fQ_Pmg>%Sb zZF`Vah-Ib&&y>2>{BV44pnWzSb?FsiDghgRI7YYsWFcnN_A*tpU*>xcApQ3nh1d=l zO=khE=G(Gd-=7MNcdC$x&2!=1z_f`0##LDK(W~fVbQ1x@+~+)sjl7XdHOQ?v_zv3%C># z)hk_l2A+N?sP|u|yKi@4cMWrDv)z^kr+(ldbgw}kl-~e>y=0kx+13-h@AskwqbcIK z-)6dY*m@v64+~w{Zs3=>3Vm~UR!D6oOpdtnXa?*sm3^H_KuP&MGdRl)c~7p9K44AV zOh|MET)KO~tObMp#F4XgAFdk>UfB+`ut`?K^1DylUV@>VsrbUj7SCp|-IO7=;8CKi zC1)V5a}6%90+XLjaDw*8zCPl2Nb%A}`j&zp0TFu0Bj58jzky2dTssW_BILwn3$YEE za$;}eU&>^IU-X8_YF`tg3gO@8cj; zcjdVc=d_E1$Q|ioj}m;AcJLG0^JD>04Aa=nYKzI;7tsOU=8oSwzureN0Lbh<0@rW+ zOm_8O=fh37JIb|_wHV~SGOzXY9sryJwJY*&~%Mn^9RUn3%iM(Ip2gDQ9roi+x$V zL&D=)R9jLe9~h*7*kdI5)r#rb$Eck_=Pl5Ro^InFD(GuDJ}db?gseYMD&-W?hUvib*jG2>8i$$mUZerwmlE*lV>FZBr7EWvJqc3*UUEM|bIrWZq``?Xq zHp9%r%#5RlKW_YfW0hMr*79acuF*xGjh|C(nKx8Mvu=i*Zx!!J{dQ~P_a@w)2^}R0 z8*BORr~LO+fPDTx5HQKK44r{u``Y23rYzlKe_m+Ppet@OkU~0`cP7NmY0J(e^wElh z4Im=8xtuM!FE{Y4^AqiJphC8PWi-AG7O@Am)-bc0@NV4|%-iu%x@1xPFxlas->INy zt8k&U4l6G}bjg#Zq%6Az)^Ru~a z1ea+;9AeV*+^ODd()D}2$Ft;zIJ*rN`KhQqa{=S#X5Ro%%v{?yQh9Z0K_wz3m>4QGTJUXGAYt)0p{rqvxg4 zenQqxpOHU8;os-CK6Dt4gZ$~Gb?le28OGwqg*(G`={aO1tJQ}bnr=`?md zv|?7FNzd`U|6Femg`;F!ljvtqu!EBi%J`4Q?wNo>~YV{Ve1MWHYZi7H$ltUify75d!#bMPIUJM z%_PrMokT`(Xa&ubM{rn7IFiHEti}(D88-(Px>3Yt;KjcXo0}q9hocvacasHQAX)Z< zSstBfiqoK$ZE@n+zun;vn!GNVY@-NPmPeox(0F=6cwXC2kze#?`D98Mkhj%;BX2iF z0c+h%sSU}CH+7quVP4P@DDLoYuORa3EgoS#f{^pt6oU1CBLsZ8GrMgJ4*_VEZRbAY z0;E<`K|>ioD~3pz>&mGBe0lpYKAHnylCNfUx@YMF0&-e3Js1G&{UYqHqMp-_9JXywo8HSO2u3gB@!a&r z+E*5VkkpKsEbg+H`04hn3rmeGUHocL+URU(Q7xU{@mUh3eFu_~YaV%p#@U>eNMD-6 zyCC;r_9O~X7t-Zk4>g~BkgmS9&>J804ui}X)A5=;v+;7Gv4O<#h^DE0R)&GKCb<<; zr`6JF+(JL--ghz)peFX$>M!8|~#eMl9d+=`9b6Cx;1F~6Ot9>ely{I?5hKoSOlynU6 zX@xzCCYy{YW`ZjzOu3T&ePh!xai)XPziiQ~$0s+pC{&jm7-2Gg^#x^hxvi{8nviQI z|JYvJDvdrO{lU449nE-b7sNf6r{^Shi#Sf8RPfa(Qzi?U}rB#OR-L311mNcW; zjihvH%ez3Qt?$G}04S(h#o)Bal01_Dq_v*???JgASL+m3E(i*w?K4Ji9q+)CjeAO zM!s#F@sn~7l7wUv(H$UOwB{kgjq{)+8tT%hk=~*`j z4j^aKB^aQzqSgq|H+WJ#4ulM-KPY}5^vtV4wMkqhRmJreOFl%MO4Ys~kZDKaknV?N zEy|6>@>J$o&ojVV+pHnlDaMU3mi4)pbm0X8s_(5338+2DF|LZRROz?NapF|qhdc;o zK=GHnTG2Qc?%bq_Yrf#4@5w;Mat-Sx78Vl>Y_CZ3*cw;v;S26s?J>xgJD4{AeVst{ z2@8uHYSlwtE5|#R$su&A3GLp;OS1FL*Qx=J*+LA}^%P)pR+785&kA^Hxw{!y={5EB z3dg|WjU#RS#nVK!XsJXe*cW9l6ErvH_MvPQWQswF*ce_wcX6aNh3@ICHh!xbBYh~2 z*pja)Ad29ZkB<6zLuU_i;yTx=r~MZ>;4QAF3)Q|h;TE?VVO4$f{DXBA8#_@Jj2zjT zxwOOcH-O9x&lLE5{|3cK4#jJh=iYSEW8U)V8gMSt++` zL=N;c#B1a-{ibVm5jHs$t0_}-M5ar43i( zh*CjF2W;Ok$Kl&I1VGM!Y``5hQD~m%+%$y|GPKM@G-VW8*m~w9TlBQgc{*0wXQ}Qc~gVV&`BPL!j~pGG;vR#}XOeU6dt;*NpaIO8|5au}2{WvRyuh z{rN?U@3n_Yz8y^Ge(Y|7q3$oO!3$5e1x-A0cQs@_j&3bS<%)89<>^|-_A0(ZPTV>N zKGd^Uo)+!{zjmo+0orJ1#&kk|v3NZF=92ZBb`k0(-t%1E}rhZnYL zPVNqI!xN^-CPK$?W70MQ8XVBYw8-~#h<^=y7}(#te-ZzYl$99iZaLc5>N-_! z7sEtlmDnbkW>g49?PA|GBviV2t`Tff3Ta#%QUmlVdeV<&*9dH?s$O|joVa_4j}^A8 z>l9vxTSktNTf<+FE5&ni4UzYx-@Up8=#kQEt2-KdkF@Z`6zT*64KmNJg;4d36ASg9 zmwf~yxZ0Rn@Yq-Cmts7wFI@R1(txRLeBw(bs;hP}o*@P!tgJ1i#_5%(pY9fF^5L=f z+SPbG`(!j?s>uicb+o9KP5Wf8WhiX7v-%`^el972qTG3}B|4{yPx$zU%D^IB+}_SU zZ!^H?m&#c@Y5hG#_>pr(ty?hfyFTd$2^!YYjbe^aA9^PL?y;~GwMN61 z!jJ>nwwUzySu@Qvz~^4y4={H~%;L1nG{cqi!5oQ14h`%?uXRqReME1JvuBxY9B&<1 z4bbEawu&XTvRKR_m|d5iFC124oNX&3k=?ds^R`?EzRbL&v4~o%2>?AM;GCfZ_QLHt zPv_o^*gP6#-Gy;IK~X@uSxQa{{K?hv@0+Z*k!D5E@JBBMme8I3!{D0}(XyJw=@06loAjgj}X z*E~_KZAqWCNWv*0L7q@~J?KAE3cM-AR|x(gi^h04`iB_d;VwD)U{u8dNA|oZveB&( z?+v1yrojT#ceP>cET$an+TejRaD0)AK$1~i2oh)H^5PQ!8?vVUrnGHTpSYjb3aNe0 z+7X)Z{9blXg{^gW_i}G2Uh_Rr9GCPfm8_*zpbavjv{PMT&8C&^xRBl4KS^|PsWEb= z=)9k@66^czc&h*j+?%qllB9F-H(%gRJ&lFAb-6s;!(8EmIL?u=s0R!dagRNRQ3fSH z(gYlYgaaz1dXGd{tb_f*(Heql;>Mi=Rw8lxd44EXb)& z^eVxc-V5wCN=Wd*I;NIjZ4ssSQvWkCcJ`LAF+BzlURtTFBkr=-6xbm}uJ$ja+#<(Pbkv3U*(9uTTP8%Ic@96kCu zN{_G=psIg3K?^vPlZXY*Im7<6TKu)!6Is?c3%v8-;yoV^du;bOb_kIl<&iU746R&S zo$J??m%=h8yp3V?TwU6gM1mI&-re2-odqoQceOT!y<#)wXs6nZf>}Q13*}eW^+OGw zkX7mSP$j1?bTJ7@`<1tqk9Nj{g0`eAYbVEe+1qe*+xz$rQa=3>@`oWwcA_vPD14WlbQFQJ(HaQO`dfivqGyFk9gS%3KFJ#lVwdh{zx)pO& zrDEvxC3(@3$+`FG;v(tsu?SKu#^RS1Z^pCCDU)NPw~OwjfCCPa>Y+Ou8kk$6E^?3; ziXxpo$(k$9hNpTZ7|r(a1#iCN&ypo(hTe|TcbsmXhcXqyQCe`-T!bzxT`ex%3EtQ@ zwuC=B%^q=%bF#<7ni6Jf3pEFi^cdj8d}ZGtHf{BvB{3Hp2T>GutV(4fM2=Nnm8l8& zxGw#!^dnqB!Q^g5P?&!8YR248Xwq6>|5e?*DyeM%bSePzM24Q9M$%UfqWVN=-6n$af17L>-vd zqZ^OI)gl=lbqw>69D^{2)r3DURfOBC?_-ozb$M%l`U%*SvCU1%ZxjdJEzq`5?dbU1 zjO#U~uI--HNdzy6J0~7P4q(loPDsR7i^Y6`I#;wOk3|HdRyy5-{Y^7-dzKKb9dQ$! zIv@kF(Eo1&c)e^~I~wOlTn#L#30g6%erGYYW|gSy4f9-l6>X^)X)9v>*0Ql?%tqTe zBtze#n)Kn{gtpJM*edWthEB_lp4;{t9?qcmJdT#3O&>I!5e(pYXQQ!ueAa%l4X>WA z1Q(x|@-`B&n34*uZgc?=6~gg<2yTB#;dQHoMR#8}4sz9Fd#&4faFs!}wQm*s)^0&m zY=4J9e>-T-Nwie^-#`Dcxa_qH+4NK64{leS4@Iekbv@D^DLU? zvl9tqOi8$@NQ`-U;N5iPTWD(rEvxZ0@NF%HW0FM9HW1G*l>aN4?YF*TjC8b5rzaHB zj}(&aS(1+RvmEcnwzfHV!2@{YF}0IRR{#6M-aP>lf3gheC(^qJO(z~VP3MPQcI|gt z>7FkF(v;4B473N9s)Y#?xzwx}6#scPG`#@!iL0O38UR{;HFHfPwbYR5t6goKo~Y;O zqPE$}HLb=t(6wj&FH+aLnLO&#Pe>K2`F5d?N7LdJo2wR!OubebS%s>0(MVjQlXG5tZ+CW9nR(+E xqIHyCxQtMKVK&>@3X1pt@}JrE+fDG5b!x7X=Umze6J5~H)s(fB^3Iyw{XdzQ*=7I$ diff --git a/images/OverviewFigforSpec-v3.png b/images/OverviewFigforSpec-v3.png deleted file mode 100644 index 7eab8b520d3d3a84bae5e3ef0dea300673630202..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27202 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 diff --git a/model.tex b/model.tex index dd7722ab..8606a346 100644 --- a/model.tex +++ b/model.tex @@ -330,7 +330,7 @@ \subsubsection*{The \sbolheading{types} property} \subsubsection*{The \sbolheading{roles} property} \label{sec:roles:CD} -The \sbolmult{roles:CD}{roles} property is an OPTIONAL set of \sbol{URI}s that clarifies the potential function of a \sbol{ComponentDefinition} in a biological context. +The \sbolmult{roles:CD}{roles} property is an OPTIONAL set of \sbol{URI}s that clarifies the potential function of an entity in a biochemical or physical context. The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MAY contain one or more \sbol{URI}s that MUST identify terms from ontologies that are consistent with the \sbolmult{types:CD}{types} property of the \sbol{ComponentDefinition}. For example, the \sbolmult{roles:CD}{roles} property of a DNA or RNA \sbol{ComponentDefinition} could contain \sbol{URI}s identifying terms from the Sequence Ontology (SO). @@ -366,7 +366,7 @@ \subsubsection*{The \sbolheading{sequences} property} If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} (see \ref{tbl:sequence_encodings}). -Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbolmult{types:CD}{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of these \sbol{Sequence} objects MUST have the \sbol{encoding} from \ref{tbl:sequence_encodings} that corresponds to this term. +Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbolmult{types:CD}{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of these \sbol{Sequence} objects MUST have the \sbol{encoding} from \ref{tbl:sequence_encodings} that is cross-listed with this term. Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbolmult{types:CD}{types} property MUST refer to the corresponding term from \ref{tbl:componentdefinition_types}. For example, if the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}, then its \sbolmult{types:CD}{types} property must refer to the BioPAX term for DNA. diff --git a/overview.tex b/overview.tex index 4919d583..a37f4d76 100644 --- a/overview.tex +++ b/overview.tex @@ -2,57 +2,42 @@ \section{Overview of SBOL} % % ----------------------------------------------------------------------------- -\LDtodo{under construction.... +\Rtodo{I took a stab at revising this especially in explaining Figure 2. Needs review. -CJM} - -The only content to keep is some version of Figure 2, -- jhg } - -\Rtodo{I went through and did some light editing to the text. Excellent job John! I also added some references that were needed in the text - KC } - -Synthetic biology designs can be described using both structural and functional terms: +Synthetic biology designs can be described using: \begin{itemize} -\item We can describe the physical structure of the design, e.g., a set of sequences or information about chemical makeup. -\item We can describe the functional roles of the design. Such a description includes both the overall function, as well as the ways that components might interact with each other. +\item Structural terms, e.g., a set of annotated sequences or information about chemical makeup. +\item Functional terms, e.g., the way that components might interact with each other and the overall behavior. \end{itemize} -In broad strokes, SBOL 1.1 focuses on physical, structural information, whereas SBOL 2.0 includes functional aspects. The physical information about a designed genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. SBOL 2.0 extends v1.1 in several ways: it allows for functional descriptions of the design and its interaction, and it extends physical descriptions to include entities beyond DNA sequences. +In broad strokes, SBOL 1.1 focuses on physical, structural information, whereas SBOL 2.0 includes functional aspects. The physical information about a designed genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. SBOL 2.0 extends SBOL 1.1 in several ways: it extends physical descriptions to include entities beyond DNA sequences, and it allows for functional descriptions of the design. As an example, consider the design of an expression cassette, such as found in the plasmid pUC18 \cite{L08752.1}, a device that is designed to detect successful versus unsuccessful molecular cloning. As an overall system, the device is designed to grow either blue-colored (unsuccessful) or white-colored (successful) colonies in the presence of IPTG and the chemical X-gal. Internally, the device has a number of parts, including a promoter, the lac repressor binding site, and the lacZ coding sequence. These parts have specific component-level interactions with IPTG and X-gal, as well as native host gene products, transcriptional and translational machinery that collectively lead to the desired system-level behavior. Understanding how such a device works within the context of a host and how it might be adapted to new experimental applications is currently passed on through working with fellow scientists or reading articles in papers and books. But there is no systematic way of communicating the integration of sequence with functional design, so users typically have to look in many different places to develop an understanding of this system. The SBOL standard allows designers to describe these functional characteristics, and to connect them to the physical parts and sequences that make up the design. -SBOL includes main classes that match the structural/physical distinction above: +SBOL includes two main classes that match the structural/functional distinction above: \begin{itemize} \item The \sbol{ComponentDefinition} object describes the physical aspects of the designed system, such as the DNA or RNA sequences and the physical relationships among sub-components. \item The \sbol{ModuleDefinition} object describes the local interactions of the designed system, such as specific binding relationships, and repression and activation relationships. \end{itemize} -Figure 1 shows a simplified view of these classes, as well as other helper classes in SBOL. To continue with the pUC18 example, the description would begin by creating a top-level \sbol{ModuleDefinition}. This object could then point to a \sbol{Model} object if it exists, for example, an SBML model of the behavior of this design. The \sbol{ModuleDefinition} would also include a number of \sbol{ComponentDefinition} objects. These would specify the structural elements that make up the cassette. Finally, the \sbol{ModuleDefinition} could specify \sbol{Interaction} objects that describe any internal functional relationships among components. - -\Rtodo{I think the paragraph above and below should be weaved together. Also, I think you should start with the structural part then the functional part. You should highlight that the structural part is largely 1.1 classes though they are extended. The functional part is completely new.} +Figure 1 shows a simplified view of these classes, as well as other helper classes in SBOL. To continue with the pUC18 example, the description would begin by creating a top-level \sbol{ModuleDefinition}. The \sbol{ModuleDefinition} specifies the structural elements that make up the cassette by referencing a number of \sbol{ComponentDefinition} objects. These would include the DNA component for the promoter and the small molecule component for IPTG, for example. +The \sbol{ComponentDefinition} objects can be organized hierarchically. For example, the plasmid \sbol{ComponentDefinition} may reference \sbol{ComponentDefinition}s for the promoter, coding sequence, etc. +Each \sbol{ComponentDefinition} object can also include the actual \sbol{Sequence} information (if available), as well as \sbol{SequenceAnnotation} objects that identify the locations of the promoters, coding sequences, etc., on the \sbol{Sequence}. +In order to specify functional information, the \sbol{ModuleDefinition} can specify \sbol{Interaction} objects that describe any qualitative relationships among components, such as how IPTG and X-gal interact with the gene projects. Finally, \sbol{ModuleDefinition} object can point to a \sbol{Model} object that provides a reference to a complete quantitative model using a language such as SBML, CellML, Matlab, etc. Finally, all the of elements of the genetic design can be grouped together within a \sbol{Collection}. \begin{figure}[ht] \begin{center} \includegraphics[scale=0.7]{images/OverviewFigforSpec-v6.png} -\caption{Main classes of information represented by the SBOL standard, and their relationships. Red boxes are classes from the 1.1 version of SBOL that focused on structure, whereas blue classes are some of the new classes that support the functional aspects of designs.} +\caption{Main classes of information represented by the SBOL standard, and their relationships. Red boxes are classes from the SBOL 1.1 that focused on structure, whereas blue classes are some of the new classes that support the functional aspects of designs.} \label{images:overview1} \end{center} \end{figure} -On the structural side, the \sbol{ComponentDefinition} objects could be a simple flat list, or they could be organized into sub-components---note that both \sbol{ModuleDefinition} and \sbol{ComponentDefinition} can point to themselves, allowing for arbitrary nesting. -\sbol{ComponentDefinition} objects also include the actual \sbol{Sequence} information (if available) as well as \sbol{SequenceAnnotation} objects that name the promoters, coding sequences, etc., as well as provide location information. - -% The high-level view of Figure 1 is meant as a simple prelude to the full specification of SBOL that we provide in the next section. Importantly, our specification uses the UML (Unified Modeling Language) and Figure 1 is NOT a UML diagram. Figure 2 shows... +% SBOL aims to facilitate the communication and reuse of synthetic biology designs. Given that these designs leverage biochemical knowledge and that they ultimately affect biological systems, it is important that SBOL interacts well with other relevant standards and resources, such as GenBank \cite{genbank}, SwissProt \cite{swissprot}, SBML \cite{SBML}, ChEBI\cite{chebi}, or the Sequence Ontology \cite{so}. Thus, SBOL leverages semantic web technologies, using RDF as a serialization format, and URIs (\emph{Universal Resource Identifiers}) for its objects. URIs allow for direct and un-ambiguous reuse of designs---if a designer in Newcastle wishes to refer to a particular design built in California, he or she can simply name the URI of the ModuleDefinition that describes that design. -\Rtodo{I think the reader does not even know we will be talking about UML yet - I don't see an expectation that this should be XML - KC, Agreed, text above seems unnecessary here.} - -\Rtodo{Do you even need Figure 2 at this point? We've provided a high level overview, but not gone into details. Do we need to? - KC Yes, we do need the more detailed description here. This section is meant to ease the readers into the data model. It is being done in stages with the second diagram expanding the details. The main point of the expanded figure will be to introduce the "tricky" concept of instantiations which is very important going forward.} - -\Ctodo{Need explanation of Figure 2 here. Also, need Figure 2 to be updated to follow style of Figure 1.} - -SBOL aims to facilitate the communication and reuse of synthetic biology designs. Given that these designs leverage biochemical knowledge and that they ultimately affect biological systems, it is important that SBOL interacts well with other relevant standards and resources, such as GenBank \cite{genbank}, SwissProt \cite{swissprot}, SBML \cite{SBML}, ChEBI\cite{chebi}, or the Sequence Ontology \cite{so}. Thus, SBOL leverages semantic web technologies, using RDF as a serialization format, and URIs (\emph{Universal Resource Identifiers}) for its objects. URIs allow for direct and un-ambiguous reuse of designs---if a designer in Newcastle wishes to refer to a particular design built in California, he or she can simply name the URI of the ModuleDefinition that describes that design. - -In sum, we hope that the SBOL standard will enable sharing of synthetic biology designs across the web, and allow developers to more easily build up rich, complex designs by re-using the work of others. +% In sum, we hope that the SBOL standard will enable sharing of synthetic biology designs across the web, and allow developers to more easily build up rich, complex designs by re-using the work of others. % Figure 2 extends this view to provide a more detailed view of these classes. @@ -62,12 +47,13 @@ \section{Overview of SBOL} % The physical structure of an element is represented with a \sbol{ComponentDefinition}, often corresponding to a particular \sbol{Sequence} (e.g., DNA, RNA, amino acids), and with its structure further described in terms of the smaller \sbol{Component} instances contained within, and their absolute and relative positions within the component. % Functional relationships are represented with a \sbol{ModuleDefinition}, often also described by some \sbol{Model}, and with its structure further described in terms of the smaller \sbol{Module} instances contained within, as well as particular components (designated \sbol{FunctionalComponent} to indicate their use in defining a module), and their interactions. -\Ctodo{SequenceConstraint was in a simpler form in 1.1. Actually though I think maybe we should change color scheme in this one to highlight TopLevel versus Child as before as this is an important concept for the overview. One minor issue is some issues are crooked.} +Figure~\ref{images:overview2} provides a more detailed view the the class structure for the SBOL 2.0 data model. The main, or \emph{top level} classes, are \sbol{Collection}, \sbol{ComponentDefinition}, sbol{Sequence}, \sbol{ModuleDefinition}, and \sbol{Model}. The key distinction of these classes is that they can stand alone and be referenced by other top level objects (see the dashed arrows between the green boxes). The purpose of these classes is described above. Each of these classes is assisted in their purpose by several \emph{child} classes. The key distinction of a child object is that it is owned by its parent object, and if that parent object is removed, so is the child object. This ownership is indicated using the solid arrows in the figure. For example, a \sbol{ComponentDefinition} owns its \sbol{SequenceAnnotation}s. Another important distinction in this diagram are the additional additional \emph{instantiation} classes, \sbol{Component}, \sbol{FunctionalComponent}, and \sbol{Module}. As described above, a \sbol{ModuleDefinition} may include instantiations of \sbol{ComponentDefinitions}. These instantiations are called \sbol{FunctionalComponent}s. Furthermore, \sbol{ModuleDefinition}s and \sbol{ComponentDefinition}s can be constructed hierarchically of instantiations of the same time, and these instantiations are called \sbol{Module}s and \sbol{Component}s, respectively. Using a software analogy, a \sbol{ComponentDefinition} or \sbol{ModuleDefinition} are a class definition while a \sbol{Component}, \sbol{FunctionalComponent}, or \sbol{Module} are an object of that class type. Finally, one last thing to notice is that child objects can be referenced. For example, an \sbol{Interaction} is between \sbol{FunctionalComponent} object(s) referenced through the \sbol{Participation} class. Since this is only a reference, if an \sbol{Interaction} is removed, its \sbol{Participation} objects would be removed but not the \sbol{FunctionalComponent}s that they refer to. Similarly, \sbol{SequenceAnnotation}s and \sbol{SequenceConstraint}s (provide relative positioning information) only refer to the \sbol{Component}s that they provide positioning information for. + \begin{figure}[ht] \begin{center} \includegraphics[scale=0.7]{images/OverviewFig2-v3.png} -\caption{Main classes of information represented by the SBOL standard, and their relationships. Green boxes are ``top level'' classes, while the other classes are in support of these classes. Solid arrows indicates "contains", whereas a dashed arrow indicates that one class refers to another.} +\caption{Main classes of information represented by the SBOL standard, and their relationships. Green boxes are ``top level'' classes, while the other classes are in support of these classes. Solid arrows indicates "contains", whereas a dashed arrow indicates that one class refers to an object of another class.} \label{images:overview2} \end{center} \end{figure} From 87298fb17daabaab5a978a8fb8b5e62bad8c8146 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Mon, 1 Jun 2015 13:31:19 +0000 Subject: [PATCH 226/317] Update on Overleaf. --- apdx-validation.tex | 6 ++++-- model.tex | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index d7e0231b..f6485feb 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -137,12 +137,14 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} -\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects, and the \sbolmult{types:CD}{types} property of the \sbol{ComponentDefinition} contains a \external{URI} that refers to a type from \ref{tbl:componentdefinition_types}, then one of these \sbol{Sequence} objects MUST have an \sbol{encoding} property that contains the \external{URI} from \ref{tbl:sequence_encodings} that is cross-listed with this type. (Reference: \sec{sec:ComponentDefinition})} +\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects, and one of the \sbolmult{types:CD}{types} of this \sbol{ComponentDefinition} comes from \ref{tbl:componentdefinition_types}, then one of the \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this type in \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} -\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} and the \sbol{encoding} property of this \sbol{Sequence} contains a \external{URI} from \ref{tbl:sequence_encodings}, then the \sbolmult{types:CD}{types} property of the \sbol{ComponentDefinition} MUST contain a \external{URI} that refers to the type that is cross-listed in \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} +\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then the \sbolmult{types:CD}{types} property of the \sbol{ComponentDefinition} MUST contain the type from \ref{tbl:componentdefinition_types} that is cross-listed with this \sbol{encoding} in \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} \printValid{The \sbol{components} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{Component} objects. (Reference: \sec{sec:ComponentDefinition})} +\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{Component} in the \sbol{components} property of the \sbol{ComponentDefinition} MUST itself refer to a \sbol{ComponentDefinition} that has a \sbol{Sequence} with the same \sbol{encoding}. (Reference: \sec{sec:ComponentDefinition})} + \printValid{The \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. (Reference: \sec{sec:ComponentDefinition})} \printValid{The \sbol{sequenceConstraints} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceConstraint} objects. (Reference: \sec{sec:ComponentDefinition})} diff --git a/model.tex b/model.tex index 8606a346..6f516d48 100644 --- a/model.tex +++ b/model.tex @@ -366,8 +366,8 @@ \subsubsection*{The \sbolheading{sequences} property} If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} (see \ref{tbl:sequence_encodings}). -Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbolmult{types:CD}{types} property refers to a term from \ref{tbl:componentdefinition_types}, then at least one of these \sbol{Sequence} objects MUST have the \sbol{encoding} from \ref{tbl:sequence_encodings} that is cross-listed with this term. -Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbolmult{types:CD}{types} property MUST refer to the corresponding term from \ref{tbl:componentdefinition_types}. +Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbolmult{types:CD}{types} property refers to a term from \ref{tbl:componentdefinition_types}, then one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this term in \ref{tbl:sequence_encodings}. +Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbolmult{types:CD}{types} property MUST refer to the term from \ref{tbl:componentdefinition_types} that is cross-listed with this \sbol{encoding} in \ref{tbl:sequence_encodings}. For example, if the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}, then its \sbolmult{types:CD}{types} property must refer to the BioPAX term for DNA. \subsubsection*{The \sbolheading{components} property} @@ -377,7 +377,7 @@ \subsubsection*{The \sbolheading{components} property} While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple copies of a particular part. For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \sbol{ComponentDefinition} of a CDS. -If the \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then this \sbol{Sequence} MUST have the same \sbol{encoding} as a \sbol{Sequence} from the \sbol{ComponentDefinition} of each \sbol{Component} in the \sbol{components} property. In addition, it MUST be possible to align the \sbol{elements} of the latter \sbol{Sequence} objects to the \sbol{elements} of the \sbol{ComponentDefinition}'s \sbol{Sequence}, subject to any restrictions imposed by the \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} objects that refer to the contents of the \sbol{components} property. A DNA \sbol{ComponentDefinition}, for example, could refer to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} of ``{\tt gattaca}.'' In this case, any \sbol{Component} contained by this \sbol{ComponentDefinition} would itself need to have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} that can be aligned with ``{\tt gattaca},'' such as ``{\tt gatta}," or perhaps ``{\tt tgta}'' in the case of a \sbol{Component} that is positioned by a \sbol{SequenceAnnotation} with a \sbol{Location} \sbol{orientation} of ``reverse complement'' (see \ref{sec:Location}). +If the \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{Component} in its \sbol{components} property MUST refer to a \sbol{ComponentDefinition} that has a \sbol{Sequence} with the same \sbol{encoding}. In addition, it MUST be possible to align the \sbol{elements} of the latter \sbol{Sequence} objects to the \sbol{elements} of the \sbol{ComponentDefinition}'s \sbol{Sequence}, subject to any restrictions imposed by the \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} objects that refer to the contents of the \sbol{components} property. A DNA \sbol{ComponentDefinition}, for example, could refer to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} of ``{\tt gattaca}.'' In this case, any \sbol{Component} contained by this \sbol{ComponentDefinition} would itself need to have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} that can be aligned with ``{\tt gattaca},'' such as ``{\tt gatta}," or perhaps ``{\tt tgta}'' in the case of a \sbol{Component} that is positioned by a \sbol{SequenceAnnotation} with a \sbol{Location} \sbol{orientation} of ``reverse complement'' (see \ref{sec:Location}). % Furthermore, this \sbol{Sequence} MUST have the same \external{IUPAC} \sbol{encoding} as a \sbol{Sequence} of the parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. From 3720e9bb821b88975df1f1a132f245fec9f55ce1 Mon Sep 17 00:00:00 2001 From: John Gennari Date: Mon, 1 Jun 2015 17:26:18 +0000 Subject: [PATCH 227/317] Update on Overleaf. --- apdx-validation.tex | 8 ++++++-- images/OverviewFig2-v3.png | Bin 96420 -> 42343 bytes model.tex | 4 ++-- overview.tex | 28 +++++++++++++++------------- 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index f6485feb..9ee1e9cb 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -143,9 +143,13 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{The \sbol{components} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{Component} objects. (Reference: \sec{sec:ComponentDefinition})} -\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{Component} in the \sbol{components} property of the \sbol{ComponentDefinition} MUST itself refer to a \sbol{ComponentDefinition} that has a \sbol{Sequence} with the same \sbol{encoding}. (Reference: \sec{sec:ComponentDefinition})} +\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{Component} in the \sbol{components} property of the \sbol{ComponentDefinition} MUST itself refer to a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with the same \sbol{encoding}. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. (Reference: \sec{sec:ComponentDefinition})} +\printWarning{Given that the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, and that each \sbol{Component} in the \sbol{components} property of the \sbol{ComponentDefinition} refers to a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with the same \sbol{encoding}, then it MUST be possible to align the \sbol{elements} of the latter \sbol{Sequence} objects to the \sbol{elements} of the \sbol{ComponentDefinition}'s \sbol{Sequence}, subject to any restrictions imposed by the \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} objects that refer to the contents of the \sbol{components} property. (Reference: \sec{sec:ComponentDefinition})} + +\printValid{The \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. (Reference: \sec{sec:ComponentDefinition})} + +\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{SequenceAnnotation} that includes a \sbol{Range} or \sbol{Cut} in the \sbol{sequenceAnnotations} property of the \sbol{ComponentDefinition} MUST specify a region on the \sbol{elements} of this \sbol{Sequence}. (Reference: \sec{sec:ComponentDefinition})} \printValid{The \sbol{sequenceConstraints} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceConstraint} objects. (Reference: \sec{sec:ComponentDefinition})} diff --git a/images/OverviewFig2-v3.png b/images/OverviewFig2-v3.png index 8f34cff26ef979317f84b02f8a5810ae916d905a..bf12b528e890d6a8088a45834139c959418f90e2 100644 GIT binary patch literal 42343 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 literal 96420 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 z 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 diff --git a/model.tex b/model.tex index 6f516d48..a8d1e1d9 100644 --- a/model.tex +++ b/model.tex @@ -377,7 +377,7 @@ \subsubsection*{The \sbolheading{components} property} While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple copies of a particular part. For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \sbol{ComponentDefinition} of a CDS. -If the \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{Component} in its \sbol{components} property MUST refer to a \sbol{ComponentDefinition} that has a \sbol{Sequence} with the same \sbol{encoding}. In addition, it MUST be possible to align the \sbol{elements} of the latter \sbol{Sequence} objects to the \sbol{elements} of the \sbol{ComponentDefinition}'s \sbol{Sequence}, subject to any restrictions imposed by the \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} objects that refer to the contents of the \sbol{components} property. A DNA \sbol{ComponentDefinition}, for example, could refer to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} of ``{\tt gattaca}.'' In this case, any \sbol{Component} contained by this \sbol{ComponentDefinition} would itself need to have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} that can be aligned with ``{\tt gattaca},'' such as ``{\tt gatta}," or perhaps ``{\tt tgta}'' in the case of a \sbol{Component} that is positioned by a \sbol{SequenceAnnotation} with a \sbol{Location} \sbol{orientation} of ``reverse complement'' (see \ref{sec:Location}). +If the \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{Component} in its \sbol{components} property MUST refer to a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with the same \sbol{encoding}. In addition, it MUST be possible to align the \sbol{elements} of the latter \sbol{Sequence} objects to the \sbol{elements} of the \sbol{ComponentDefinition}'s \sbol{Sequence}, subject to any restrictions imposed by the \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} objects that refer to the contents of the \sbol{components} property. A DNA \sbol{ComponentDefinition}, for example, could refer to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} of ``{\tt gattaca}.'' In this case, any \sbol{Component} contained by this \sbol{ComponentDefinition} would itself need to have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} that can be aligned with ``{\tt gattaca},'' such as ``{\tt gatta}," or perhaps ``{\tt tgta}'' in the case of a \sbol{Component} that is positioned by a \sbol{SequenceAnnotation} with a \sbol{Location} \sbol{orientation} of ``reverse complement'' (see \ref{sec:Location}). % Furthermore, this \sbol{Sequence} MUST have the same \external{IUPAC} \sbol{encoding} as a \sbol{Sequence} of the parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. @@ -720,7 +720,7 @@ \subsubsection{Location} The \sbol{start} property specifies the inclusive starting position of the \sbol{Range}. This property is REQUIRED and MUST contain an \sbol{Integer} value greater than zero. \paragraph{The \sbolheading{end} property}\label{sec:end} -The \sbol{end} property specifies the inclusive ending position of the \sbol{Range}. This property is REQUIRED and MUST contain an \sbol{Integer} value greater than zero. In addition, this \external{Integer} value must be greater than that of the \sbol{start} property. +The \sbol{end} property specifies the inclusive ending position of the \sbol{Range}. This property is REQUIRED and MUST contain an \sbol{Integer} value greater than zero. In addition, this \external{Integer} value MUST be greater than or equal to that of the \sbol{start} property. \paragraph{Serialization} diff --git a/overview.tex b/overview.tex index a37f4d76..2fec23f5 100644 --- a/overview.tex +++ b/overview.tex @@ -2,7 +2,9 @@ \section{Overview of SBOL} % % ----------------------------------------------------------------------------- -\Rtodo{I took a stab at revising this especially in explaining Figure 2. Needs review. -CJM} +\Rtodo{I took a stab at revising this especially in explaining Figure 2. Needs review. -CJM + +Review and re-writing completed. -jhg} Synthetic biology designs can be described using: \begin{itemize} @@ -35,29 +37,29 @@ \section{Overview of SBOL} \end{center} \end{figure} -% SBOL aims to facilitate the communication and reuse of synthetic biology designs. Given that these designs leverage biochemical knowledge and that they ultimately affect biological systems, it is important that SBOL interacts well with other relevant standards and resources, such as GenBank \cite{genbank}, SwissProt \cite{swissprot}, SBML \cite{SBML}, ChEBI\cite{chebi}, or the Sequence Ontology \cite{so}. Thus, SBOL leverages semantic web technologies, using RDF as a serialization format, and URIs (\emph{Universal Resource Identifiers}) for its objects. URIs allow for direct and un-ambiguous reuse of designs---if a designer in Newcastle wishes to refer to a particular design built in California, he or she can simply name the URI of the ModuleDefinition that describes that design. - -% In sum, we hope that the SBOL standard will enable sharing of synthetic biology designs across the web, and allow developers to more easily build up rich, complex designs by re-using the work of others. - - -% Figure 2 extends this view to provide a more detailed view of these classes. - -% Figure 1 illustrates the relationships between the main classes of information encoded by SBOL. -% The physical structure of an element is represented with a \sbol{ComponentDefinition}, often corresponding to a particular \sbol{Sequence} (e.g., DNA, RNA, amino acids), and with its structure further described in terms of the smaller \sbol{Component} instances contained within, and their absolute and relative positions within the component. -% Functional relationships are represented with a \sbol{ModuleDefinition}, often also described by some \sbol{Model}, and with its structure further described in terms of the smaller \sbol{Module} instances contained within, as well as particular components (designated \sbol{FunctionalComponent} to indicate their use in defining a module), and their interactions. +Whereas Figure 1 provides a broad overview of SBOL, Figure 2 provides a detailed, implementation-level overview of the class structure for the SBOL 2.0 data model. This figure relies on the semantics of the Unified Modeling Language (UML), which will be presented in more detail in the next section. Figure 2 distinguishes between \emph{top level} classes, in green, and other supporting classes (note that Figure 1 also includes all of the top level classes). In both figures, dashed arcs represent "refersTo", whereas a solid arrow represents ownership. In UML, the meaning of ownership is that if a parent class is deleted, so are all of its owned children. Thus, a \sbol{Collection} does not own its +\sbol{ComponentDefinition} objects, because these can stand on their own. All of the supporting classes (in orange) must be owned by some top-level class, directly or indirectly. -Figure~\ref{images:overview2} provides a more detailed view the the class structure for the SBOL 2.0 data model. The main, or \emph{top level} classes, are \sbol{Collection}, \sbol{ComponentDefinition}, sbol{Sequence}, \sbol{ModuleDefinition}, and \sbol{Model}. The key distinction of these classes is that they can stand alone and be referenced by other top level objects (see the dashed arrows between the green boxes). The purpose of these classes is described above. Each of these classes is assisted in their purpose by several \emph{child} classes. The key distinction of a child object is that it is owned by its parent object, and if that parent object is removed, so is the child object. This ownership is indicated using the solid arrows in the figure. For example, a \sbol{ComponentDefinition} owns its \sbol{SequenceAnnotation}s. Another important distinction in this diagram are the additional additional \emph{instantiation} classes, \sbol{Component}, \sbol{FunctionalComponent}, and \sbol{Module}. As described above, a \sbol{ModuleDefinition} may include instantiations of \sbol{ComponentDefinitions}. These instantiations are called \sbol{FunctionalComponent}s. Furthermore, \sbol{ModuleDefinition}s and \sbol{ComponentDefinition}s can be constructed hierarchically of instantiations of the same time, and these instantiations are called \sbol{Module}s and \sbol{Component}s, respectively. Using a software analogy, a \sbol{ComponentDefinition} or \sbol{ModuleDefinition} are a class definition while a \sbol{Component}, \sbol{FunctionalComponent}, or \sbol{Module} are an object of that class type. Finally, one last thing to notice is that child objects can be referenced. For example, an \sbol{Interaction} is between \sbol{FunctionalComponent} object(s) referenced through the \sbol{Participation} class. Since this is only a reference, if an \sbol{Interaction} is removed, its \sbol{Participation} objects would be removed but not the \sbol{FunctionalComponent}s that they refer to. Similarly, \sbol{SequenceAnnotation}s and \sbol{SequenceConstraint}s (provide relative positioning information) only refer to the \sbol{Component}s that they provide positioning information for. +% Figure~\ref{images:overview2} provides a more detailed view the the class structure for the SBOL 2.0 data model. The main, or \emph{top level} classes, are \sbol{Collection}, \sbol{ComponentDefinition}, sbol{Sequence}, \sbol{ModuleDefinition}, and \sbol{Model}. The key distinction of these classes is that they can stand alone and be referenced by other top level objects (see the dashed arrows between the green boxes). The purpose of these classes is described above. Each of these classes is assisted in their purpose by several \emph{child} classes. The key distinction of a child object is that it is owned by its parent object, and if that parent object is removed, so is the child object. This ownership is indicated using the solid arrows in the figure. For example, a \sbol{ComponentDefinition} owns its \sbol{SequenceAnnotation}s. \begin{figure}[ht] \begin{center} \includegraphics[scale=0.7]{images/OverviewFig2-v3.png} -\caption{Main classes of information represented by the SBOL standard, and their relationships. Green boxes are ``top level'' classes, while the other classes are in support of these classes. Solid arrows indicates "contains", whereas a dashed arrow indicates that one class refers to an object of another class.} +\caption{Main classes of information represented by the SBOL standard, and their relationships. Green boxes are ``top level'' classes, while the other classes are in support of these classes. Solid arrows indicates ownership, whereas a dashed arrow indicates that one class refers to an object of another class.} \label{images:overview2} \end{center} \end{figure} +Another important difference between the figures is to more appropriately connect the functional side (modules) to the physical side (components). This is accomplished via the class \sbol{FunctionalComponent}. This class allows modules to own their components, and yet also allows the physical descriptions (in \sbol{ComponentDefinition}s) to stand on their own. In a similar manner, the ability to have hierarchies of either functional or physical components shown in Figure 1 must be broken apart, so that subcomponents can be used in multiple functional modules or multiple physical components. Thus, instead of the arc from \sbol{ModuleDefinition} to itself as in Figure 1, our implementation actually divides this notion into two classes, \sbol{ModuleDefinition} and \sbol{Module}. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, Figure 2 provides a few other additional helper classes such as \sbol{SequenceConstraint} which provides relative positioning information among \sbol{Component}s, and +\sbol{Participation}, which allows \sbol {Interaction} objects to own their participants, yet only references \sbol{FunctionalComponent}, so that these can stand on their own. The next section provides complete definitions and details for all of these classes. + +% Another important distinction in this diagram are the additional additional \emph{instantiation} classes, \sbol{Component}, \sbol{FunctionalComponent}, and \sbol{Module}. As described above, a \sbol{ModuleDefinition} may include instantiations of \sbol{ComponentDefinitions}. These instantiations are called \sbol{FunctionalComponent}s. Furthermore, \sbol{ModuleDefinition}s and \sbol{ComponentDefinition}s can be constructed hierarchically of instantiations of the same time, and these instantiations are called \sbol{Module}s and \sbol{Component}s, respectively. Using a software analogy, a \sbol{ComponentDefinition} or \sbol{ModuleDefinition} are a class definition while a \sbol{Component}, \sbol{FunctionalComponent}, or \sbol{Module} are an object of that class type. + +% Finally, one last thing to notice is that child objects can be referenced. For example, an \sbol{Interaction} is between \sbol{FunctionalComponent} object(s) referenced through the \sbol{Participation} class. Since this is only a reference, if an \sbol{Interaction} is removed, its \sbol{Participation} objects would be removed but not the \sbol{FunctionalComponent}s that they refer to. Similarly, \sbol{SequenceAnnotation}s and \sbol{SequenceConstraint}s (provide relative positioning information) only refer to the \sbol{Component}s that they provide positioning information for. + + % The \sbol{Sequence} is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. In designed systems such objects can consist of small chemical molecules, DNAs, RNAs or Proteins. The \sbol{Sequence} object has been designed to encapsulate any of these types of molecules. Small molecule \sbol{Sequence} objects are typically referred to via their chemical formulae. Molecules where sequence specific information is important, such as DNA, RNA and Protein \sbol{Sequence} objects, use the object to incorporate this information. The \sbol{Sequence} object encapsulates this positional information as well as the associated experimental work or other information related to a sequenced molecule. % \Rtodo{need to make it clear that it includes DNA, RNA, and protein, also smooth the text --JSB made addiitons based upon the suggested changes - KC} From f6cf25333f9bd83680d6aeb164747e40384ea71f Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Tue, 2 Jun 2015 03:55:39 +0000 Subject: [PATCH 228/317] Update on Overleaf. --- apdx-validation.tex | 2 +- images/OverviewFig2-v4.png | Bin 0 -> 42271 bytes images/OverviewFigforSpec-v7.png | Bin 0 -> 35662 bytes model.tex | 20 ++++++++++---------- overview.tex | 20 ++++++++------------ 5 files changed, 19 insertions(+), 23 deletions(-) create mode 100644 images/OverviewFig2-v4.png create mode 100644 images/OverviewFigforSpec-v7.png diff --git a/apdx-validation.tex b/apdx-validation.tex index 9ee1e9cb..7edb163b 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -6,7 +6,7 @@ \section{Validation Rules} \label{validation} -\Ctodo{I believe there are new validation rules that need to be added described in text above -CJM} +\Rtodo{New validation rules have been added. Needs review.} This section summarizes all the conditions that MUST be or are RECOMMENDED to be true of an SBOL Version~2 document. diff --git a/images/OverviewFig2-v4.png b/images/OverviewFig2-v4.png new file mode 100644 index 0000000000000000000000000000000000000000..8f07c8f149b7b46c89ad341f6d631e04881acfd8 GIT binary patch literal 42271 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%0A3E9(**rN`NSkMv_3@eTKC#xsQV@ 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 literal 0 HcmV?d00001 diff --git a/images/OverviewFigforSpec-v7.png b/images/OverviewFigforSpec-v7.png new file mode 100644 index 0000000000000000000000000000000000000000..24b968da3f386ae7c286b7ad31b70459019be59b GIT binary patch literal 35662 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 z U2D-^wznO%@Cm95 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 HmAn53z-`~^ literal 0 HcmV?d00001 diff --git a/model.tex b/model.tex index a8d1e1d9..9140a3fc 100644 --- a/model.tex +++ b/model.tex @@ -11,7 +11,7 @@ \subsection{Understanding the UML Diagrams} Classes may be connected to other classes by association properties, which are represented in UML diagrams as arrows. These arrows are labeled with data cardinalities in order to indicate how many values a given association property may possess (see below). The remaining (non-association) properties of a class are listed below its name. Each of the latter properties is labeled with its data type and cardinality. -In the case of an association property, the class from which the arrow originates is the owner of the association property. A diamond at the origin of the arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, in which the owner of the association property exists independently of its value. In the SBOL data model, the value of an association property MUST be a URI or set of URIs that refer to SBOL objects belonging to the class at the tip of the arrow. +In the case of an association property, the class from which the arrow originates is the owner of the association property. A diamond at the origin of the arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, in which the owner of the association property exists independently of its value. In the SBOL data model, the value of an association property MUST be a URI or set of \sbol{URI}s that refer to SBOL objects belonging to the class at the tip of the arrow. By contrast, filled diamonds indicate composite aggregation, also known as a part-whole relationship, in which the value of the association property MUST NOT exist independently of its owner. In addition, in the SBOL data model, it is REQUIRED that the value of each composite aggregation property is a unique SBOL object (that is, not the value for more than one such property). %For example, it will later be shown how objects of the \sbol{SequenceAnnotation} class must associated with an object of the \sbol{ComponentDefinition} class (and only that object). @@ -310,7 +310,7 @@ \subsubsection*{The \sbolheading{types} property} The \sbolmult{types:CD}{types} property of every \sbol{ComponentDefinition} MUST contain one or more \sbol{URI}s that MUST identify terms from appropriate ontologies, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). \ref{tbl:componentdefinition_types} provides a list of RECOMMENDED ontology terms for the \sbolmult{types:CD}{types} property and their \sbol{URI}s. In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbolmult{types:CD}{types}. -Finally, if the \sbolmult{types:CD}{types} property contains multiple \sbol{URIs}, then they MUST identify synonymous terms. +Finally, if the \sbolmult{types:CD}{types} property contains multiple \sbol{URI}s, then they MUST identify synonymous terms. \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -905,7 +905,7 @@ \subsubsection*{ The \sbolheading{language} property}\label{sec:language} BioPAX & \url{http://identifiers.org/edam/format_3156}\\ \bottomrule \end{edtable} - \caption{Some commonly used model languages and their corresponding URIs.} + \caption{Some commonly used model languages and their corresponding \sbol{URI}s.} \label{tbl:model_types} \end{table} @@ -1077,7 +1077,7 @@ \subsubsection{FunctionalComponent} \url{http://sbols.org/v2#none} & To indicate a \sbol{FunctionalComponent} is neither input nor output\\ \bottomrule \end{edtable} - \caption{URIs for the \sbol{direction} property.} + \caption{\sbol{URI}s for the \sbol{direction} property.} \label{tbl:functionalcomponent_directions} \end{table} @@ -1180,9 +1180,9 @@ \subsubsection{Interaction} \paragraph{The \sbolheading{types} property}\label{sec:types:I} -The \sbolmult{types:I}{types} property is a REQUIRED set of one or more URIs that identify an appropriate ontology term describing the behavior represented by this \sbol{Interaction}. +The \sbolmult{types:I}{types} property is a REQUIRED set of one or more \sbol{URI}s that identify an appropriate ontology term describing the behavior represented by this \sbol{Interaction}. If an \sbol{Interaction} object has multiple -\sbolmult{types:I}{types} URIs, then they must identify synonymous terms. +\sbolmult{types:I}{types} \sbol{URI}s, then they must identify synonymous terms. Values for this URI are RECOMMENDED to be chosen from the occurring entity relationship branch of the Systems Biology Ontology (SBO), where possible. @@ -1242,9 +1242,9 @@ \subsubsection{Participation} \paragraph{The \sbolheading{roles} property}\label{sec:roles:P} -The \sbolmult{roles:P}{roles} property is an OPTIONAL set of URIs that identify an appropriate ontology term describing this elements relationship to its parent \sbol{Interaction}. +The \sbolmult{roles:P}{roles} property is an OPTIONAL set of \sbol{URI}s that identify an appropriate ontology term describing this elements relationship to its parent \sbol{Interaction}. If a \sbol{Participation} object has multiple -\sbolmult{roles:P}{roles} URIs, then they must identify synonymous terms. +\sbolmult{roles:P}{roles} \sbol{URI}s, then they must identify synonymous terms. Values for this URI are RECOMMENDED to be chosen from the participant role branch of the Systems Biology Ontology (SBO) where possible. @@ -1325,11 +1325,11 @@ \subsubsection*{Serialization} \end{lstlisting} \label{ser:Collection} -\subsection{Extending the SBOL Representation: Annotations} +\subsection{SBOL Extension Mechanism} \label{sec:Annotations} \label{sec:annotations} -SBOL does not attempt to represent all information about a biological system, since many things do not yet have a clear ``right way'' to be represented, such as design intent, biological context, or performance data. Instead, SBOL allows the embedding of application specific data that are not captured by the SBOL standard. Such data are optional, but can be computationally generated and exchanged via SBOL documents without getting damaged or lost. +SBOL does not attempt to represent all information about a biological system, since many things do not yet have a clear ``right way'' to be represented, such as design intent, biological context, or performance data. Instead, SBOL allows the embedding of application specific data that are not captured by the SBOL standard. Such data are optional, but can be computationally generated and exchanged via SBOL documents without getting damaged or lost. This SBOL extension mechanism is designed to allow easy incorporation within the SBOL standard once there is community agreement on data content to be exchanged. To do this, SBOL provides an ``annotation'' mechanism for attaching arbitrary information to SBOL objects, which allows SBOL models to be connected with any other models in an extensible manner. In particular, three methods are supported for connecting the SBOL data model with other, possibly application-specific data: diff --git a/overview.tex b/overview.tex index 2fec23f5..76e95eca 100644 --- a/overview.tex +++ b/overview.tex @@ -2,10 +2,6 @@ \section{Overview of SBOL} % % ----------------------------------------------------------------------------- -\Rtodo{I took a stab at revising this especially in explaining Figure 2. Needs review. -CJM - -Review and re-writing completed. -jhg} - Synthetic biology designs can be described using: \begin{itemize} \item Structural terms, e.g., a set of annotated sequences or information about chemical makeup. @@ -27,34 +23,34 @@ \section{Overview of SBOL} Figure 1 shows a simplified view of these classes, as well as other helper classes in SBOL. To continue with the pUC18 example, the description would begin by creating a top-level \sbol{ModuleDefinition}. The \sbol{ModuleDefinition} specifies the structural elements that make up the cassette by referencing a number of \sbol{ComponentDefinition} objects. These would include the DNA component for the promoter and the small molecule component for IPTG, for example. The \sbol{ComponentDefinition} objects can be organized hierarchically. For example, the plasmid \sbol{ComponentDefinition} may reference \sbol{ComponentDefinition}s for the promoter, coding sequence, etc. Each \sbol{ComponentDefinition} object can also include the actual \sbol{Sequence} information (if available), as well as \sbol{SequenceAnnotation} objects that identify the locations of the promoters, coding sequences, etc., on the \sbol{Sequence}. -In order to specify functional information, the \sbol{ModuleDefinition} can specify \sbol{Interaction} objects that describe any qualitative relationships among components, such as how IPTG and X-gal interact with the gene projects. Finally, \sbol{ModuleDefinition} object can point to a \sbol{Model} object that provides a reference to a complete quantitative model using a language such as SBML, CellML, Matlab, etc. Finally, all the of elements of the genetic design can be grouped together within a \sbol{Collection}. +In order to specify functional information, the \sbol{ModuleDefinition} can specify \sbol{Interaction} objects that describe any qualitative relationships among components, such as how IPTG and X-gal interact with the gene products. Finally, a \sbol{ModuleDefinition} object can point to a \sbol{Model} object that provides a reference to a complete quantitative model using a language such as SBML, CellML, Matlab, etc. Finally, all the of elements of the genetic design can be grouped together within a \sbol{Collection}. \begin{figure}[ht] \begin{center} -\includegraphics[scale=0.7]{images/OverviewFigforSpec-v6.png} +\includegraphics[scale=0.7]{images/OverviewFigforSpec-v7.png} \caption{Main classes of information represented by the SBOL standard, and their relationships. Red boxes are classes from the SBOL 1.1 that focused on structure, whereas blue classes are some of the new classes that support the functional aspects of designs.} \label{images:overview1} \end{center} \end{figure} - -Whereas Figure 1 provides a broad overview of SBOL, Figure 2 provides a detailed, implementation-level overview of the class structure for the SBOL 2.0 data model. This figure relies on the semantics of the Unified Modeling Language (UML), which will be presented in more detail in the next section. Figure 2 distinguishes between \emph{top level} classes, in green, and other supporting classes (note that Figure 1 also includes all of the top level classes). In both figures, dashed arcs represent "refersTo", whereas a solid arrow represents ownership. In UML, the meaning of ownership is that if a parent class is deleted, so are all of its owned children. Thus, a \sbol{Collection} does not own its +Whereas Figure~\ref{images:overview1} provides a broad overview of SBOL, Figure~\ref{images:overview2} provides a detailed, implementation-level overview of the class structure for the SBOL 2.0 data model. This figure relies on the semantics of the \emph{Unified Modeling Language} (UML), which will be presented in more detail in the next section. Figure 2 distinguishes between \emph{top level} classes, in green, and other supporting classes (note that Figure 1 also includes all of the top level classes). In Figure 2, dashed arcs represent "refersTo", whereas a solid arrow represents ownership. In UML, the meaning of ownership is that if a parent class is deleted, so are all of its owned children. Thus, a \sbol{Collection} does not own its \sbol{ComponentDefinition} objects, because these can stand on their own. All of the supporting classes (in orange) must be owned by some top-level class, directly or indirectly. % Figure~\ref{images:overview2} provides a more detailed view the the class structure for the SBOL 2.0 data model. The main, or \emph{top level} classes, are \sbol{Collection}, \sbol{ComponentDefinition}, sbol{Sequence}, \sbol{ModuleDefinition}, and \sbol{Model}. The key distinction of these classes is that they can stand alone and be referenced by other top level objects (see the dashed arrows between the green boxes). The purpose of these classes is described above. Each of these classes is assisted in their purpose by several \emph{child} classes. The key distinction of a child object is that it is owned by its parent object, and if that parent object is removed, so is the child object. This ownership is indicated using the solid arrows in the figure. For example, a \sbol{ComponentDefinition} owns its \sbol{SequenceAnnotation}s. - \begin{figure}[ht] \begin{center} -\includegraphics[scale=0.7]{images/OverviewFig2-v3.png} -\caption{Main classes of information represented by the SBOL standard, and their relationships. Green boxes are ``top level'' classes, while the other classes are in support of these classes. Solid arrows indicates ownership, whereas a dashed arrow indicates that one class refers to an object of another class.} +\includegraphics[scale=0.85]{images/OverviewFig2-v4.png} +\caption{Main classes of information represented by the SBOL 2.0 standard, and their relationships. Green boxes are ``top level'' classes, while the other classes are in support of these classes. Solid arrows indicates ownership, whereas a dashed arrow indicates that one class refers to an object of another class.} \label{images:overview2} \end{center} \end{figure} -Another important difference between the figures is to more appropriately connect the functional side (modules) to the physical side (components). This is accomplished via the class \sbol{FunctionalComponent}. This class allows modules to own their components, and yet also allows the physical descriptions (in \sbol{ComponentDefinition}s) to stand on their own. In a similar manner, the ability to have hierarchies of either functional or physical components shown in Figure 1 must be broken apart, so that subcomponents can be used in multiple functional modules or multiple physical components. Thus, instead of the arc from \sbol{ModuleDefinition} to itself as in Figure 1, our implementation actually divides this notion into two classes, \sbol{ModuleDefinition} and \sbol{Module}. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, Figure 2 provides a few other additional helper classes such as \sbol{SequenceConstraint} which provides relative positioning information among \sbol{Component}s, and +Another important difference between the figures is to more appropriately connect the functional side (modules) to the physical side (components). This is accomplished via the class \sbol{FunctionalComponent}. This class allows modules to own their components instances, and yet also allows the physical descriptions (in \sbol{ComponentDefinition}s) to stand on their own. In a similar manner, the ability to have hierarchies of either functional or physical components shown in Figure~\ref{images:overview1} must be broken apart, so that sub-components can be used in multiple functional modules or multiple physical components. Thus, instead of the arc from \sbol{ModuleDefinition} to itself as in Figure~\ref{images:overview1}, our implementation actually divides this notion into two classes, \sbol{ModuleDefinition} and \sbol{Module}. Therefore, a \sbol{ModuleDefinition} does not own the \sbol{ModuleDefinition}s that it uses, but instead it refers to them using the \sbol{Module} objects that it does own. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, SBOL 2.0 provides a few other additional helper classes such as \sbol{Location} that generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint}s that provides relative positioning information among \sbol{Component}s, and \sbol{Participation}, which allows \sbol {Interaction} objects to own their participants, yet only references \sbol{FunctionalComponent}, so that these can stand on their own. The next section provides complete definitions and details for all of these classes. + + % Another important distinction in this diagram are the additional additional \emph{instantiation} classes, \sbol{Component}, \sbol{FunctionalComponent}, and \sbol{Module}. As described above, a \sbol{ModuleDefinition} may include instantiations of \sbol{ComponentDefinitions}. These instantiations are called \sbol{FunctionalComponent}s. Furthermore, \sbol{ModuleDefinition}s and \sbol{ComponentDefinition}s can be constructed hierarchically of instantiations of the same time, and these instantiations are called \sbol{Module}s and \sbol{Component}s, respectively. Using a software analogy, a \sbol{ComponentDefinition} or \sbol{ModuleDefinition} are a class definition while a \sbol{Component}, \sbol{FunctionalComponent}, or \sbol{Module} are an object of that class type. % Finally, one last thing to notice is that child objects can be referenced. For example, an \sbol{Interaction} is between \sbol{FunctionalComponent} object(s) referenced through the \sbol{Participation} class. Since this is only a reference, if an \sbol{Interaction} is removed, its \sbol{Participation} objects would be removed but not the \sbol{FunctionalComponent}s that they refer to. Similarly, \sbol{SequenceAnnotation}s and \sbol{SequenceConstraint}s (provide relative positioning information) only refer to the \sbol{Component}s that they provide positioning information for. From be545f7995b10e93200e03273ea758e5146e8c1f Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Tue, 2 Jun 2015 04:00:19 +0000 Subject: [PATCH 229/317] Update on Overleaf. --- overview.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/overview.tex b/overview.tex index 76e95eca..b40464a1 100644 --- a/overview.tex +++ b/overview.tex @@ -46,10 +46,10 @@ \section{Overview of SBOL} \end{center} \end{figure} -Another important difference between the figures is to more appropriately connect the functional side (modules) to the physical side (components). This is accomplished via the class \sbol{FunctionalComponent}. This class allows modules to own their components instances, and yet also allows the physical descriptions (in \sbol{ComponentDefinition}s) to stand on their own. In a similar manner, the ability to have hierarchies of either functional or physical components shown in Figure~\ref{images:overview1} must be broken apart, so that sub-components can be used in multiple functional modules or multiple physical components. Thus, instead of the arc from \sbol{ModuleDefinition} to itself as in Figure~\ref{images:overview1}, our implementation actually divides this notion into two classes, \sbol{ModuleDefinition} and \sbol{Module}. Therefore, a \sbol{ModuleDefinition} does not own the \sbol{ModuleDefinition}s that it uses, but instead it refers to them using the \sbol{Module} objects that it does own. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, SBOL 2.0 provides a few other additional helper classes such as \sbol{Location} that generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint}s that provides relative positioning information among \sbol{Component}s, and -\sbol{Participation}, which allows \sbol {Interaction} objects to own their participants, yet only references \sbol{FunctionalComponent}, so that these can stand on their own. The next section provides complete definitions and details for all of these classes. - +Another important difference between the figures is to more appropriately connect the functional side (modules) to the physical side (components). This is accomplished via the class \sbol{FunctionalComponent}. This class allows modules to own their components instances, and yet also allows the physical descriptions (in \sbol{ComponentDefinition}s) to stand on their own. In a similar manner, the ability to have hierarchies of either functional or physical components shown in Figure~\ref{images:overview1} must be broken apart, so that sub-components can be used in multiple functional modules or multiple physical components. Thus, instead of the arc from \sbol{ModuleDefinition} to itself as in Figure~\ref{images:overview1}, our implementation actually divides this notion into two classes, \sbol{ModuleDefinition} and \sbol{Module}. Therefore, a \sbol{ModuleDefinition} does not own the \sbol{ModuleDefinition}s that it uses, but instead it refers to them using the \sbol{Module} objects that it does own. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, SBOL 2.0 provides a few other additional helper classes such as \sbol{Location} that generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint} that generalizes the relative positioning information among \sbol{Component}s. There is also +\sbol{Participation}s, which allow \sbol {Interaction} objects to specify the roles of their participants while referencing the \sbol{FunctionalComponent}s, so that these can stand on their own. Finaly, there is the \sbol{MapsTo} class (not shown) that enables connections to be made between \sbol{Component}s and \sbol{FunctionalComponent}s at various levels of the design hierarchy. The next section provides complete definitions and details for all of these classes. +There is one final critical part of SBOL 2.0, its extension mechanism. Even with all the new classes that SBOL 2.0 provides, there is still a lot of important data that i % Another important distinction in this diagram are the additional additional \emph{instantiation} classes, \sbol{Component}, \sbol{FunctionalComponent}, and \sbol{Module}. As described above, a \sbol{ModuleDefinition} may include instantiations of \sbol{ComponentDefinitions}. These instantiations are called \sbol{FunctionalComponent}s. Furthermore, \sbol{ModuleDefinition}s and \sbol{ComponentDefinition}s can be constructed hierarchically of instantiations of the same time, and these instantiations are called \sbol{Module}s and \sbol{Component}s, respectively. Using a software analogy, a \sbol{ComponentDefinition} or \sbol{ModuleDefinition} are a class definition while a \sbol{Component}, \sbol{FunctionalComponent}, or \sbol{Module} are an object of that class type. From f26fef58405a2a416f13d984bbb4ee9cb5b89470 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Tue, 2 Jun 2015 04:01:26 +0000 Subject: [PATCH 230/317] Update on Overleaf. --- overview.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overview.tex b/overview.tex index b40464a1..31b1afa6 100644 --- a/overview.tex +++ b/overview.tex @@ -49,7 +49,7 @@ \section{Overview of SBOL} Another important difference between the figures is to more appropriately connect the functional side (modules) to the physical side (components). This is accomplished via the class \sbol{FunctionalComponent}. This class allows modules to own their components instances, and yet also allows the physical descriptions (in \sbol{ComponentDefinition}s) to stand on their own. In a similar manner, the ability to have hierarchies of either functional or physical components shown in Figure~\ref{images:overview1} must be broken apart, so that sub-components can be used in multiple functional modules or multiple physical components. Thus, instead of the arc from \sbol{ModuleDefinition} to itself as in Figure~\ref{images:overview1}, our implementation actually divides this notion into two classes, \sbol{ModuleDefinition} and \sbol{Module}. Therefore, a \sbol{ModuleDefinition} does not own the \sbol{ModuleDefinition}s that it uses, but instead it refers to them using the \sbol{Module} objects that it does own. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, SBOL 2.0 provides a few other additional helper classes such as \sbol{Location} that generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint} that generalizes the relative positioning information among \sbol{Component}s. There is also \sbol{Participation}s, which allow \sbol {Interaction} objects to specify the roles of their participants while referencing the \sbol{FunctionalComponent}s, so that these can stand on their own. Finaly, there is the \sbol{MapsTo} class (not shown) that enables connections to be made between \sbol{Component}s and \sbol{FunctionalComponent}s at various levels of the design hierarchy. The next section provides complete definitions and details for all of these classes. -There is one final critical part of SBOL 2.0, its extension mechanism. Even with all the new classes that SBOL 2.0 provides, there is still a lot of important data that i +There is one final critical part of SBOL 2.0, its extension mechanism. This extension me framework for application specific information. Each SBOL entity can be annotated using \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \texttt{GenericTopLevel} entities. SBOL libraries makes these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. % Another important distinction in this diagram are the additional additional \emph{instantiation} classes, \sbol{Component}, \sbol{FunctionalComponent}, and \sbol{Module}. As described above, a \sbol{ModuleDefinition} may include instantiations of \sbol{ComponentDefinitions}. These instantiations are called \sbol{FunctionalComponent}s. Furthermore, \sbol{ModuleDefinition}s and \sbol{ComponentDefinition}s can be constructed hierarchically of instantiations of the same time, and these instantiations are called \sbol{Module}s and \sbol{Component}s, respectively. Using a software analogy, a \sbol{ComponentDefinition} or \sbol{ModuleDefinition} are a class definition while a \sbol{Component}, \sbol{FunctionalComponent}, or \sbol{Module} are an object of that class type. From 6c2b0b61a76d492305594765e8fe4c485e20053a Mon Sep 17 00:00:00 2001 From: jakebeal Date: Mon, 1 Jun 2015 23:00:32 -0500 Subject: [PATCH 231/317] removed old text in overview that was lousing up counts --- overview.tex | 71 ---------------------------------------------------- 1 file changed, 71 deletions(-) diff --git a/overview.tex b/overview.tex index 76e95eca..1d981b76 100644 --- a/overview.tex +++ b/overview.tex @@ -48,74 +48,3 @@ \section{Overview of SBOL} Another important difference between the figures is to more appropriately connect the functional side (modules) to the physical side (components). This is accomplished via the class \sbol{FunctionalComponent}. This class allows modules to own their components instances, and yet also allows the physical descriptions (in \sbol{ComponentDefinition}s) to stand on their own. In a similar manner, the ability to have hierarchies of either functional or physical components shown in Figure~\ref{images:overview1} must be broken apart, so that sub-components can be used in multiple functional modules or multiple physical components. Thus, instead of the arc from \sbol{ModuleDefinition} to itself as in Figure~\ref{images:overview1}, our implementation actually divides this notion into two classes, \sbol{ModuleDefinition} and \sbol{Module}. Therefore, a \sbol{ModuleDefinition} does not own the \sbol{ModuleDefinition}s that it uses, but instead it refers to them using the \sbol{Module} objects that it does own. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, SBOL 2.0 provides a few other additional helper classes such as \sbol{Location} that generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint}s that provides relative positioning information among \sbol{Component}s, and \sbol{Participation}, which allows \sbol {Interaction} objects to own their participants, yet only references \sbol{FunctionalComponent}, so that these can stand on their own. The next section provides complete definitions and details for all of these classes. - - - -% Another important distinction in this diagram are the additional additional \emph{instantiation} classes, \sbol{Component}, \sbol{FunctionalComponent}, and \sbol{Module}. As described above, a \sbol{ModuleDefinition} may include instantiations of \sbol{ComponentDefinitions}. These instantiations are called \sbol{FunctionalComponent}s. Furthermore, \sbol{ModuleDefinition}s and \sbol{ComponentDefinition}s can be constructed hierarchically of instantiations of the same time, and these instantiations are called \sbol{Module}s and \sbol{Component}s, respectively. Using a software analogy, a \sbol{ComponentDefinition} or \sbol{ModuleDefinition} are a class definition while a \sbol{Component}, \sbol{FunctionalComponent}, or \sbol{Module} are an object of that class type. - -% Finally, one last thing to notice is that child objects can be referenced. For example, an \sbol{Interaction} is between \sbol{FunctionalComponent} object(s) referenced through the \sbol{Participation} class. Since this is only a reference, if an \sbol{Interaction} is removed, its \sbol{Participation} objects would be removed but not the \sbol{FunctionalComponent}s that they refer to. Similarly, \sbol{SequenceAnnotation}s and \sbol{SequenceConstraint}s (provide relative positioning information) only refer to the \sbol{Component}s that they provide positioning information for. - - -% The \sbol{Sequence} is a fundamental information object for synthetic biology and is needed to reuse components, to replicate synthetic biology work, and to assemble new synthetic biological systems. In designed systems such objects can consist of small chemical molecules, DNAs, RNAs or Proteins. The \sbol{Sequence} object has been designed to encapsulate any of these types of molecules. Small molecule \sbol{Sequence} objects are typically referred to via their chemical formulae. Molecules where sequence specific information is important, such as DNA, RNA and Protein \sbol{Sequence} objects, use the object to incorporate this information. The \sbol{Sequence} object encapsulates this positional information as well as the associated experimental work or other information related to a sequenced molecule. - -% \Rtodo{need to make it clear that it includes DNA, RNA, and protein, also smooth the text --JSB made addiitons based upon the suggested changes - KC} - -% In the SBOL data model, a structural layer defines the physical arrangement of components in a biological system. \sbol{ComponentDefinition}s define genetic elements such as promoters, RBSs, CDSs, and terminators, as well as RNA, proteins, and small molecules. In a structural hierarchy, \sbol{ComponentDefinition}s can contain subcomponents (\sbol{Component}s), which are instances of the \sbol{ComponentDefinition} for that subcomponent. A functional layer can be defined to describe the behaviors that arise from the structural layer. \sbol{ModuleDefinition}s contain information about molecular interactions and their participating components. They can contain \sbol{FunctionalComponent}s that are instances of \sbol{ComponentDefinition}s that can be assigned functional properties, and they can also contain other modules in a functional hierarchy. The functions and interactions of these components and other modules within the \sbol{ModuleDefinition} can be quantitatively or qualitatively described using a \sbol{Model}. The \sbol{SequenceAnnotation} object defines data associated the \sbol{Sequence} and \sbol{ComponentDefinition} objects that is needed beyond basic definitions. This can refer to local annotations of the object as well as a container for URIs to external information sources. - - -% SBOL includes different entities to describe such genetic circuits. Genetic elements such as a promoter, ribosome binding site (RBS), coding sequence (CDS), or terminator are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. -% \sbol{SequenceAnnotation}s can be used to carry data associated with the successful running of that model on another computer, can be used to point towards sources of some or all of the circuit and the location of experimental data associated with the development of the model. - -% \Rtodo{Need to also explain annotation --JSB -% Provided some text for review describing annotation - KC} - - - -% SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. - - -% \Ctodo{This needs to be clarified. Do we really want to explain MapsTo here? -JSB} -% \Ctodo{it's not in the diagram. So it should be removed or dealt with in the figure and earlier in the text- KC} - -% \Ctodo{Explain why it is important to separate definitions from instantiations?} - -% \LDtodo{The motivation for separating structural and functional considerations is not explained. Which class names are structural, which class names are functional, and how are the two connected? Do all structural components require a functional counterpart? If not, explain why only a subset of structural components would have functional definitions.} - -% \Ctodo{As a person reading about SBOL2 for the first time, I rank this as the most important section. While the document should be technically focused overall, this section is your chance to concisely tell someone who won't read the whole document about the take-home messages for the new data model.} - -% \LDtodo{Why are URI's needed for Components? Why not just for ComponentDefinitions? Is there anything in SBOL that does not require a URI?} -% \Ctodo{Also briefly mention URI} - -% \Ctodo{Make sure we explain about annotations up in the motivation and overview, since it's really, really important.} - -% The same toggle switch is now displayed using two LacI and TetR inverter submodules in figure \ref{images:toggleswitch_modular}. The LacI inverter uses LacI as input and produces the TetR output, and the TetR inverter uses TetR as input and produces the LacI output. These inputs and outputs are mapped in a parent module. - -% Removed as redundant: -%----------------------------------------------------------------------------- -%\section{Introduction} -% ----------------------------------------------------------------------------- -%While the first version of the Synthetic Biology Open Language (SBOL) has been adopted by several academic and commercial genetic design automation (GDA) software tools, it only covers a limited range of the requirements for a standardized exchange format for synthetic biology. The SBOL 2.0 specification revises version 1.1, enabling the representation of a wider range of components with and without sequences, including RNA components, protein components, small molecules, and molecular complexes. Additionally, the latest SBOL can be used to convey the intended function of a design, as well as its structural composition. -%This dichotomous representation of the structural and functional features of a design is a paradigm applied to great success in electrical and computer engineering, and is essential for the development of design automation software in synthetic biology. -% -%The goal of this specification is to define the terminology and relationships used to describe biological designs. In order to provide a shared understanding between engineers seeking to exchange biological designs, SBOL provides a common definition of the concepts needed. As much as possible, we attempt to make explicit the meaning of all terminology and data structures. - - -% % ----------------------------------------------------------------------------- -% \section{Overview of SBOL} -% % ----------------------------------------------------------------------------- -% Typically, information about a genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. Interactions between these constituents are then used to construct biologically plausible designs. - -% In the figure below, a simple toggle switch system is displayed, in which LacI and TetR repress each other's genes transcriptionally. The toggling of the system is controlled by adding IPTG to deactivate LacI, and ATC to deactivate TetR. The components of the system includes genetic elements, proteins, small molecules. - -% \begin{figure}[ht] -% \begin{center} -% \includegraphics[scale=0.4]{images/toggleswitch_flat} -% \caption[]{An example toggle swicth genetic circuit. } -% \label{images:toggleswitch_flat} -% \end{center} -% \end{figure} - -% SBOL includes different entities to describe such genetic circuits. Genetic elements such as promoters, RBS, CDSs and terminators are defined with the \sbol{ComponentDefinition} entity. Their instances are reused in different designs via the \sbol{Component}s that refer to corresponding \sbol{ComponentDefinition}s. \sbol{ComponentDefinition}s can also represent proteins, RNAs or small molecules. They are associated with sequence information such as nucleotides aminoacids or chemical structure. A full description of a genetic circuit is then represented using \sbol{ModuleDefinition}s which contains information about molecular interactions and their participating components. Modules can be associated with quantitative or qualitative models using the \sbol{Model} entity, which is used to point to the actual location of a model. - - -% SBOL facilitates the design of complex systems using hierarchical composition. In addition to using simple genetic elements in a modular fashion, modules that are composed of multiple, different components can also be reused. Such modules can expose some of the design components as inputs and outputs, which can be connected to components from other modules using \sbol{MapsTo} entities. \ No newline at end of file From 86ce8972636b368b2a0a615ae38739363fbdf9ce Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Tue, 2 Jun 2015 04:01:32 +0000 Subject: [PATCH 232/317] Update on Overleaf. --- overview.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overview.tex b/overview.tex index 31b1afa6..8ebfa1ec 100644 --- a/overview.tex +++ b/overview.tex @@ -49,7 +49,7 @@ \section{Overview of SBOL} Another important difference between the figures is to more appropriately connect the functional side (modules) to the physical side (components). This is accomplished via the class \sbol{FunctionalComponent}. This class allows modules to own their components instances, and yet also allows the physical descriptions (in \sbol{ComponentDefinition}s) to stand on their own. In a similar manner, the ability to have hierarchies of either functional or physical components shown in Figure~\ref{images:overview1} must be broken apart, so that sub-components can be used in multiple functional modules or multiple physical components. Thus, instead of the arc from \sbol{ModuleDefinition} to itself as in Figure~\ref{images:overview1}, our implementation actually divides this notion into two classes, \sbol{ModuleDefinition} and \sbol{Module}. Therefore, a \sbol{ModuleDefinition} does not own the \sbol{ModuleDefinition}s that it uses, but instead it refers to them using the \sbol{Module} objects that it does own. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, SBOL 2.0 provides a few other additional helper classes such as \sbol{Location} that generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint} that generalizes the relative positioning information among \sbol{Component}s. There is also \sbol{Participation}s, which allow \sbol {Interaction} objects to specify the roles of their participants while referencing the \sbol{FunctionalComponent}s, so that these can stand on their own. Finaly, there is the \sbol{MapsTo} class (not shown) that enables connections to be made between \sbol{Component}s and \sbol{FunctionalComponent}s at various levels of the design hierarchy. The next section provides complete definitions and details for all of these classes. -There is one final critical part of SBOL 2.0, its extension mechanism. This extension me framework for application specific information. Each SBOL entity can be annotated using \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \texttt{GenericTopLevel} entities. SBOL libraries makes these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. +There is one final critical part of SBOL 2.0, its extension mechanism. This extension mechanism enables b framework for application specific information. Each SBOL entity can be annotated using \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \texttt{GenericTopLevel} entities. SBOL libraries makes these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. % Another important distinction in this diagram are the additional additional \emph{instantiation} classes, \sbol{Component}, \sbol{FunctionalComponent}, and \sbol{Module}. As described above, a \sbol{ModuleDefinition} may include instantiations of \sbol{ComponentDefinitions}. These instantiations are called \sbol{FunctionalComponent}s. Furthermore, \sbol{ModuleDefinition}s and \sbol{ComponentDefinition}s can be constructed hierarchically of instantiations of the same time, and these instantiations are called \sbol{Module}s and \sbol{Component}s, respectively. Using a software analogy, a \sbol{ComponentDefinition} or \sbol{ModuleDefinition} are a class definition while a \sbol{Component}, \sbol{FunctionalComponent}, or \sbol{Module} are an object of that class type. From 40f4f07cf80b5b6f0dc13e898d2a19a6a75a0f79 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Tue, 2 Jun 2015 04:03:23 +0000 Subject: [PATCH 233/317] Update on Overleaf. --- overview.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overview.tex b/overview.tex index 8ebfa1ec..125be085 100644 --- a/overview.tex +++ b/overview.tex @@ -49,7 +49,7 @@ \section{Overview of SBOL} Another important difference between the figures is to more appropriately connect the functional side (modules) to the physical side (components). This is accomplished via the class \sbol{FunctionalComponent}. This class allows modules to own their components instances, and yet also allows the physical descriptions (in \sbol{ComponentDefinition}s) to stand on their own. In a similar manner, the ability to have hierarchies of either functional or physical components shown in Figure~\ref{images:overview1} must be broken apart, so that sub-components can be used in multiple functional modules or multiple physical components. Thus, instead of the arc from \sbol{ModuleDefinition} to itself as in Figure~\ref{images:overview1}, our implementation actually divides this notion into two classes, \sbol{ModuleDefinition} and \sbol{Module}. Therefore, a \sbol{ModuleDefinition} does not own the \sbol{ModuleDefinition}s that it uses, but instead it refers to them using the \sbol{Module} objects that it does own. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, SBOL 2.0 provides a few other additional helper classes such as \sbol{Location} that generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint} that generalizes the relative positioning information among \sbol{Component}s. There is also \sbol{Participation}s, which allow \sbol {Interaction} objects to specify the roles of their participants while referencing the \sbol{FunctionalComponent}s, so that these can stand on their own. Finaly, there is the \sbol{MapsTo} class (not shown) that enables connections to be made between \sbol{Component}s and \sbol{FunctionalComponent}s at various levels of the design hierarchy. The next section provides complete definitions and details for all of these classes. -There is one final critical part of SBOL 2.0, its extension mechanism. This extension mechanism enables b framework for application specific information. Each SBOL entity can be annotated using \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \texttt{GenericTopLevel} entities. SBOL libraries makes these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. +There is one final critical part of SBOL 2.0, its extension mechanism. This extension mechanism enables both a framework for application specific information, and a means to prototype representation of data whose format has not yet reached community consensus. In particular, each SBOL entity can be annotated using \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \texttt{GenericTopLevel} entities. SBOL libraries makes these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. % Another important distinction in this diagram are the additional additional \emph{instantiation} classes, \sbol{Component}, \sbol{FunctionalComponent}, and \sbol{Module}. As described above, a \sbol{ModuleDefinition} may include instantiations of \sbol{ComponentDefinitions}. These instantiations are called \sbol{FunctionalComponent}s. Furthermore, \sbol{ModuleDefinition}s and \sbol{ComponentDefinition}s can be constructed hierarchically of instantiations of the same time, and these instantiations are called \sbol{Module}s and \sbol{Component}s, respectively. Using a software analogy, a \sbol{ComponentDefinition} or \sbol{ModuleDefinition} are a class definition while a \sbol{Component}, \sbol{FunctionalComponent}, or \sbol{Module} are an object of that class type. From 58609296e0b275f4d510a2aaeacfc6a4b7afda1f Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Tue, 2 Jun 2015 04:04:19 +0000 Subject: [PATCH 234/317] Update on Overleaf. --- overview.tex | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/overview.tex b/overview.tex index 125be085..64c86797 100644 --- a/overview.tex +++ b/overview.tex @@ -2,6 +2,8 @@ \section{Overview of SBOL} % % ----------------------------------------------------------------------------- +\Rtodo{This section needs review by someone } + Synthetic biology designs can be described using: \begin{itemize} \item Structural terms, e.g., a set of annotated sequences or information about chemical makeup. @@ -49,7 +51,7 @@ \section{Overview of SBOL} Another important difference between the figures is to more appropriately connect the functional side (modules) to the physical side (components). This is accomplished via the class \sbol{FunctionalComponent}. This class allows modules to own their components instances, and yet also allows the physical descriptions (in \sbol{ComponentDefinition}s) to stand on their own. In a similar manner, the ability to have hierarchies of either functional or physical components shown in Figure~\ref{images:overview1} must be broken apart, so that sub-components can be used in multiple functional modules or multiple physical components. Thus, instead of the arc from \sbol{ModuleDefinition} to itself as in Figure~\ref{images:overview1}, our implementation actually divides this notion into two classes, \sbol{ModuleDefinition} and \sbol{Module}. Therefore, a \sbol{ModuleDefinition} does not own the \sbol{ModuleDefinition}s that it uses, but instead it refers to them using the \sbol{Module} objects that it does own. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, SBOL 2.0 provides a few other additional helper classes such as \sbol{Location} that generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint} that generalizes the relative positioning information among \sbol{Component}s. There is also \sbol{Participation}s, which allow \sbol {Interaction} objects to specify the roles of their participants while referencing the \sbol{FunctionalComponent}s, so that these can stand on their own. Finaly, there is the \sbol{MapsTo} class (not shown) that enables connections to be made between \sbol{Component}s and \sbol{FunctionalComponent}s at various levels of the design hierarchy. The next section provides complete definitions and details for all of these classes. -There is one final critical part of SBOL 2.0, its extension mechanism. This extension mechanism enables both a framework for application specific information, and a means to prototype representation of data whose format has not yet reached community consensus. In particular, each SBOL entity can be annotated using \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \texttt{GenericTopLevel} entities. SBOL libraries makes these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. +There is one final critical part of SBOL 2.0, its extension mechanism. This extension mechanism enables both a framework for application specific information, and a means to prototype representation of data whose format has not yet reached community consensus. In particular, each SBOL entity can be annotated using the \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \texttt{GenericTopLevel} entities. SBOL libraries makes these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. % Another important distinction in this diagram are the additional additional \emph{instantiation} classes, \sbol{Component}, \sbol{FunctionalComponent}, and \sbol{Module}. As described above, a \sbol{ModuleDefinition} may include instantiations of \sbol{ComponentDefinitions}. These instantiations are called \sbol{FunctionalComponent}s. Furthermore, \sbol{ModuleDefinition}s and \sbol{ComponentDefinition}s can be constructed hierarchically of instantiations of the same time, and these instantiations are called \sbol{Module}s and \sbol{Component}s, respectively. Using a software analogy, a \sbol{ComponentDefinition} or \sbol{ModuleDefinition} are a class definition while a \sbol{Component}, \sbol{FunctionalComponent}, or \sbol{Module} are an object of that class type. From 9eb9c08ba30e75d02d03e39092b20e9dee3f62e8 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Tue, 2 Jun 2015 04:04:24 +0000 Subject: [PATCH 235/317] Update on Overleaf. --- overview.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overview.tex b/overview.tex index 64c86797..bf538d7a 100644 --- a/overview.tex +++ b/overview.tex @@ -2,7 +2,7 @@ \section{Overview of SBOL} % % ----------------------------------------------------------------------------- -\Rtodo{This section needs review by someone } +\Rtodo{This section needs review by someone other th} Synthetic biology designs can be described using: \begin{itemize} From 2c5ab2a60d015960f7041f97dc396db58be71819 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Tue, 2 Jun 2015 04:04:36 +0000 Subject: [PATCH 236/317] Update on Overleaf. --- overview.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overview.tex b/overview.tex index bf538d7a..7f4185f0 100644 --- a/overview.tex +++ b/overview.tex @@ -2,7 +2,7 @@ \section{Overview of SBOL} % % ----------------------------------------------------------------------------- -\Rtodo{This section needs review by someone other th} +\Rtodo{This section needs review by someone not named John or Chris} Synthetic biology designs can be described using: \begin{itemize} From 10128051f11de38a0d2b5897d21c7db5414bd37d Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Tue, 2 Jun 2015 08:58:45 +0000 Subject: [PATCH 237/317] v14 --- overview.tex | 3 +-- sbol2.tex | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/overview.tex b/overview.tex index e5982075..9072737f 100644 --- a/overview.tex +++ b/overview.tex @@ -51,5 +51,4 @@ \section{Overview of SBOL} Another important difference between the figures is to more appropriately connect the functional side (modules) to the physical side (components). This is accomplished via the class \sbol{FunctionalComponent}. This class allows modules to own their components instances, and yet also allows the physical descriptions (in \sbol{ComponentDefinition}s) to stand on their own. In a similar manner, the ability to have hierarchies of either functional or physical components shown in Figure~\ref{images:overview1} must be broken apart, so that sub-components can be used in multiple functional modules or multiple physical components. Thus, instead of the arc from \sbol{ModuleDefinition} to itself as in Figure~\ref{images:overview1}, our implementation actually divides this notion into two classes, \sbol{ModuleDefinition} and \sbol{Module}. Therefore, a \sbol{ModuleDefinition} does not own the \sbol{ModuleDefinition}s that it uses, but instead it refers to them using the \sbol{Module} objects that it does own. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, SBOL 2.0 provides a few other additional helper classes such as \sbol{Location} that generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint} that generalizes the relative positioning information among \sbol{Component}s. There is also \sbol{Participation}s, which allow \sbol {Interaction} objects to specify the roles of their participants while referencing the \sbol{FunctionalComponent}s, so that these can stand on their own. Finaly, there is the \sbol{MapsTo} class (not shown) that enables connections to be made between \sbol{Component}s and \sbol{FunctionalComponent}s at various levels of the design hierarchy. The next section provides complete definitions and details for all of these classes. -There is one final critical part of SBOL 2.0, its extension mechanism. This extension mechanism enables both a framework for application specific information, and a means to prototype representation of data whose format has not yet reached community consensus. In particular, each SBOL entity can be annotated using the \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \texttt{GenericTopLevel} entities. SBOL libraries makes these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. - +There is one final critical part of SBOL 2.0, its extension mechanism. This extension mechanism enables both a framework for application specific information, and a means to prototype representation of data whose format has not yet reached community consensus. In particular, each SBOL entity can be annotated using the \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \texttt{GenericTopLevel} entities. SBOL libraries makes these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. \ No newline at end of file diff --git a/sbol2.tex b/sbol2.tex index 8600f704..362a7560 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -144,7 +144,7 @@ \begin{tabular}{l>{\hspace*{15pt}}r} Curtis Madsen, Matthew Pocock, Anil Wipat & \emph{Newcastle University, UK}\\ Tramy Nguyen, Zhen Zhang, Chris Myers & \emph{University of Utah, USA}\\ -John Gennari & \emph{University of Washington, USA}\\ +John H. Gennari & \emph{University of Washington, USA}\\ \end{tabular}\\ \Ctodo{Fill in all rest of authors here.} } From ed35142e15b6301237ce53b47d2ded3512fa2691 Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Tue, 2 Jun 2015 09:49:45 +0000 Subject: [PATCH 238/317] Update on Overleaf. --- apdx-validation.tex | 8 ++++---- model.tex | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 7edb163b..47087b81 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -74,7 +74,7 @@ \subsubsection*{Rules for the \class{Identified} class} \printValid{The \sbol{annotations} field is an OPTIONAL list of for all \sbol{Identified} objects and, if provided, includes references to \sbol{Annotation} objects. (Reference: \sec{sec:Identified})} -\printValid{The \sbol{wasDerivedFrom} property is OPTIONAL for all \sbol{Identified} objects and, if provided, data type of \sbol{URI}. (Reference: \sec{sec:Identified})} +\printValid{The \sbol{wasDerivedFrom} property is OPTIONAL for all \sbol{Identified} objects and, if provided, has a data type of \sbol{URI}. (Reference: \sec{sec:Identified})} \printValid{The \sbol{name} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String. (Reference: \sec{sec:Identified})} @@ -84,7 +84,7 @@ \subsubsection*{Rules for the \class{Identified} class} \printModeling{The \sbol{persistentIdentity} of a compliant top level object is REQUIRED and MUST end with a delimiter ('/', '\#', or ':') followed by the \sbol{displayId} of the object. (Reference: \sec{sec:compliant})} -\printModeling{The \sbol{persistentIdentity} of a compliant child object is REQUIRED and MUST begin with the\\ \sbol{persistentIdentity} of its parent object and be immediately followed by a delimiter ('\', '\#', or ':') and the \sbol{displayId} of the object. (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{persistentIdentity} of a compliant child object is REQUIRED and MUST begin with the\\ \sbol{persistentIdentity} of its parent object and be immediately followed by a delimiter ('/', '\#', or ':') and the \sbol{displayId} of the object. (Reference: \sec{sec:compliant})} \printModeling{The \sbol{identity} of a compliant object MUST either be equal to the \sbol{persistentIdentity} when no \sbol{version} is specified or equal to "\refObj{persistentIdentity}/\refObj{version}" when a \sbol{version} is provided. (Reference: \sec{sec:compliant})} @@ -270,8 +270,8 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{A \sbol{MapsTo} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:MapsTo})} \printValid{The \sbol{refinement} property is a REQUIRED \sbol{URI} for \sbol{MapsTo} objects which MUST be one of the following: -\url{http://sbols.org/v2\#useremote}, -\url{http://sbols.org/v2\#uselocal}, +\url{http://sbols.org/v2\#useRemote}, +\url{http://sbols.org/v2\#useLocal}, \url{http://sbols.org/v2\#verifyIdentical}, and \url{http://sbols.org/v2\#merge}. (Reference: \sec{sec:MapsTo})} diff --git a/model.tex b/model.tex index 9140a3fc..9ca11aa5 100644 --- a/model.tex +++ b/model.tex @@ -1341,7 +1341,7 @@ \subsection{SBOL Extension Mechanism} \subsubsection{Annotating SBOL objects} % whole set of labels for the properties defined herein -\label{sec:qName} +\label{sec:QName} \label{sec:value} \label{sec:Annotation} \label{sec:AnnotationValue} @@ -1349,7 +1349,7 @@ \subsubsection{Annotating SBOL objects} \label{sec:nestedQName} \label{sec:nestedURI} -Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. The \sbol{qName} property is specified by a qualified name (\sbol{QName}), which is composed of a namespace, a prefix, and a local name. The \sbol{value} property can be a literal type (i.e., \sbol{String}, \sbol{Integer}, \sbol{Double}, \sbol{Boolean}), \sbol{URI}, or a \sbol{NestedAnnotations} object. The \sbol{NestedAnnotations} object is composed of a \sbol{nestedQName}, \sbol{nestedURI}, and an optional list of nested \sbol{annotations}. +Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. The \sbol{QName} property is specified by a qualified name (\sbol{QName}), which is composed of a namespace, a prefix, and a local name. The \sbol{value} property can be a literal type (i.e., \sbol{String}, \sbol{Integer}, \sbol{Double}, \sbol{Boolean}), \sbol{URI}, or a \sbol{NestedAnnotations} object. The \sbol{NestedAnnotations} object is composed of a \sbol{nestedQName}, \sbol{nestedURI}, and an optional list of nested \sbol{annotations}. \begin{figure}[!ht] \begin{center} From 9f4cd008ad2968517a824849b08cf1e48cf8d25c Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 2 Jun 2015 09:51:24 -0500 Subject: [PATCH 239/317] added relation to other BBF RFCs section --- history.tex | 22 +++++++++++++++++----- relation.tex | 9 +++++++++ sbol2.tex | 8 ++++---- 3 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 relation.tex diff --git a/history.tex b/history.tex index 6ad55e7b..89677f9b 100644 --- a/history.tex +++ b/history.tex @@ -5,11 +5,23 @@ \section{A Brief History of SBOL} \Rtodo{The text below needs thorough review by the community. We are certain that there are many errors, including missing people. Please send input to fix these errors} -In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were use to fund the initial standards meeting held in Seattle in April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Mike Galdzicki. Mike was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. These were held at the Synthetic Biology Data Exchange Working Group meeting at Stanford in July 26, 2009 and Anaheim, CA on June 13, 2010. Included at the Anaheim meeting were Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. The original SBOL 1.0 was developed at these early meetings through Mike's efforts together with the small group of dedicated researchers. It was also that the Anaheim meeting that a decision was made to write a letter to Nature Biotechnology highlighting the issue of reproducibility in synthetic biology. This letter was initiated by Jean Peccoud and submitted by participants of the Anaheim meeting. - -An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group resulting in 17 individuals at the meeting. New members included Cesar Rodriguez, Mandy Wilson, Jacob Beal, Guy-Bart Stan, Chris Myers, and Nicholas Roehner, and the over all pace of development quickened. - -At a meeting in San Diego in June 2011, the SBOL Developers Group was officially established, rules of governance were established, and the first SBOL editors were elected: Mike Galdzicki, Cesar Rodriguez, and Mandy Wilson. At this time, Allan Kuchinsky, a research scientist at Agilent, joined the effort, and he was able to obtain some support to begin what was to become libSBOLj. Kevin Clancy from LifeTechnologies also joined at this time, as well as, Anil Wipat, Matthew Pocock, and Goksel Misirli from Newcastle University. In October 2011, SBOL 1.0 was officially released. At our next meeting in Seattle in January 2012, Herbert Sauro was elected the SBOL Chair, and two new editors were added: Matthew Pocock and Ernst Oberortner. At this meeting, the first data exchange between software tools using SBOL was conducting when a design was passed from Newcastle University's VirtualParts Repository to Boston University's Eugene tool, and finally to University of Utah's iBioSim tool. +In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. +Part of the funds were used to fund the initial standards meeting held in Seattle on April 26-27, 2008. +The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. +The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Michal Galdzicki. +Michal was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. +These were held at the Synthetic Biology Data Exchange Working Group meeting at Stanford on July 26, 2009 and Anaheim, CA on June 13, 2010. +Included at the Anaheim meeting were Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. +The original SBOL 1.0 was developed at these early meetings through Michal's efforts, together with the small group of other dedicated researchers. +It was also that the Anaheim meeting that a decision was made to write a letter to Nature Biotechnology highlighting the issue of reproducibility in synthetic biology. This letter was initiated by Jean Peccoud and submitted by participants of the Anaheim meeting. + +An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group resulting in 17 individuals at the meeting. New members included Cesar Rodriguez, Mandy Wilson, Guy-Bart Stan, Chris Myers, and Nicholas Roehner, and the over all pace of development quickened. + +At a meeting in San Diego in June 2011, the SBOL Developers Group was officially established, rules of governance were established, and the first SBOL editors were elected: Mike Galdzicki, Cesar Rodriguez, and Mandy Wilson. +At this time, Allan Kuchinsky, a research scientist at Agilent, joined the effort, and he was able to obtain some resources to begin development on what was to become libSBOLj. +Kevin Clancy from LifeTechnologies also joined at this time, as well as Anil Wipat, Matthew Pocock, and Goksel Misirli from Newcastle University, and Jacob Beal and Aaron Adler from Raytheon BBN Technologies. +In October 2011, SBOL 1.0 was officially released. At our next meeting in Seattle in January 2012, Herbert Sauro was elected the SBOL Chair, and two new editors were added: Matthew Pocock and Ernst Oberortner. +At this meeting, the first data exchange between software tools using SBOL was conducted when a design was passed from Newcastle University's VirtualParts Repository to Boston University's Eugene tool, and finally to University of Utah's iBioSim tool. In March 2012, SBOL 1.1 was released, the version that this document replaces. The 8th SBOL workshop was held in November 2012 at Boston University, and the major topic of discussion was the next version of SBOL. SBOL 1.1 is limited to describing hierarchical DNA sequences. Several extensions were discussed at this meeting, such as a means to describe genetic regulation what later turned into interactions, and a means to group components what later turned into modules. In April 2013, at the 9th SBOL workshop at Newcastle University, the framework for SBOL 2.0 was agreed upon. Nicholas Roehner, Matthew Pocock, and Ernst Oberortner then began work to create a draft proposal for SBOL 2.0. In January 2014 at the 10th SBOL workshop, this draft was discussed and many refinements were debated and approved. Another important decision at this meeting was that SBOL should begin investigating joining the COMBINE community of standards (\url{www.co.mbine.org}). diff --git a/relation.tex b/relation.tex new file mode 100644 index 00000000..437a50d1 --- /dev/null +++ b/relation.tex @@ -0,0 +1,9 @@ +\section{Relation to other BBF RFCs} + +\Rtodo{Just added this section; needs review -JSB} + +BBF RFC \rfcnum{} replaces BBF RFC 87 (the SBOL 1.1 standard). + +BBF RFC \rfcnum{} updates BBF RFC 30 (RDF-based framework for synthetic biology data), as it proposes a standard conforming to BBF RFC 30. + +BBF RFC \rfcnum{} also implicitly supersedes the previously replaced BBF RFC 84 (SBOL 1.0, replaced by BBF RFC 87) and BBF RFC 31 (PoBoL, replaced by BBF RFC 84). \ No newline at end of file diff --git a/sbol2.tex b/sbol2.tex index 362a7560..10223f09 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -20,6 +20,8 @@ % Macros just for this document: +\newcommand{\rfcnum}{???} + \newcommand{\sbmlpkg}{\texorpdfstring{% \textls[-25]{\textsc{SBMLPkgSpec}}}{% \textsc{SBMLPkgSpec}}\xspace} @@ -110,7 +112,7 @@ \packageVersion{Version 2.0.0} \packageVersionDate{June XXX, 2015} -\title{BBF RFC ?: Synthetic Biology Open Language \texorpdfstring{\\[3pt]}{}\mbox{(SBOL) Version~2.0.0}} +\title{BBF RFC \rfcnum{}: Synthetic Biology Open Language \texorpdfstring{\\[3pt]}{}\mbox{(SBOL) Version~2.0.0}} \author{Nicholas Roehner\\[0.25em] @@ -167,9 +169,7 @@ \input{purpose} -% ----------------------------------------------------------------------------- -%\section{Relation to other BBF RFCs} -% ----------------------------------------------------------------------------- +\input{relation} \input{copyright} From a0bb7968ede574b36fe701a71dacab9a982b2931 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 2 Jun 2015 10:20:36 -0500 Subject: [PATCH 240/317] mike b comments through history --- history.tex | 13 +++++++++---- purpose.tex | 14 +++++++++++++- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/history.tex b/history.tex index 89677f9b..66bf00bb 100644 --- a/history.tex +++ b/history.tex @@ -3,7 +3,7 @@ \section{A Brief History of SBOL} % ----------------------------------------------------------------------------- %Add yourself if you have helped and aren't on the list -\Rtodo{The text below needs thorough review by the community. We are certain that there are many errors, including missing people. Please send input to fix these errors} +\Rtodo{The text below needs thorough review by the community. We are certain that there are many errors, including missing people. Please send input to fix these errors. Reviewed: JSB} In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were used to fund the initial standards meeting held in Seattle on April 26-27, 2008. @@ -19,14 +19,19 @@ \section{A Brief History of SBOL} At a meeting in San Diego in June 2011, the SBOL Developers Group was officially established, rules of governance were established, and the first SBOL editors were elected: Mike Galdzicki, Cesar Rodriguez, and Mandy Wilson. At this time, Allan Kuchinsky, a research scientist at Agilent, joined the effort, and he was able to obtain some resources to begin development on what was to become libSBOLj. -Kevin Clancy from LifeTechnologies also joined at this time, as well as Anil Wipat, Matthew Pocock, and Goksel Misirli from Newcastle University, and Jacob Beal and Aaron Adler from Raytheon BBN Technologies. +Kevin Clancy from LifeTechnologies also joined at this time, as well as Anil Wipat, Matthew Pocock, and Goksel Misirli from Newcastle University, and Jacob Beal, Aaron Adler, and Fusun Yaman Sirin from Raytheon BBN Technologies. In October 2011, SBOL 1.0 was officially released. At our next meeting in Seattle in January 2012, Herbert Sauro was elected the SBOL Chair, and two new editors were added: Matthew Pocock and Ernst Oberortner. At this meeting, the first data exchange between software tools using SBOL was conducted when a design was passed from Newcastle University's VirtualParts Repository to Boston University's Eugene tool, and finally to University of Utah's iBioSim tool. -In March 2012, SBOL 1.1 was released, the version that this document replaces. The 8th SBOL workshop was held in November 2012 at Boston University, and the major topic of discussion was the next version of SBOL. SBOL 1.1 is limited to describing hierarchical DNA sequences. Several extensions were discussed at this meeting, such as a means to describe genetic regulation what later turned into interactions, and a means to group components what later turned into modules. In April 2013, at the 9th SBOL workshop at Newcastle University, the framework for SBOL 2.0 was agreed upon. Nicholas Roehner, Matthew Pocock, and Ernst Oberortner then began work to create a draft proposal for SBOL 2.0. In January 2014 at the 10th SBOL workshop, this draft was discussed and many refinements were debated and approved. Another important decision at this meeting was that SBOL should begin investigating joining the COMBINE community of standards (\url{www.co.mbine.org}). +In March 2012, SBOL 1.1 was released, the version that this document replaces. +SBOL 1.1 did not change the data model, but provided a number of small adjustments and clarifications to details of its intended use and implementation, particularly around annotation of sequences and their locational relations. +The 8th SBOL workshop was held in November 2012 at Boston University, and the major topic of discussion was the next version of SBOL. SBOL 1.1 is limited to describing hierarchical DNA sequences. +Several extensions were discussed at this meeting, such as a means to describe genetic regulation, which later become the \sbol{Interaction} class, and a means to group components, which later became the \sbol{Module} class. +In April 2013, at the 9th SBOL workshop at Newcastle University, the framework for SBOL 2.0 was agreed upon. +Nicholas Roehner, Matthew Pocock, and Ernst Oberortner then began work on a draft proposal for SBOL 2.0. In January 2014 at the 10th SBOL workshop, this draft was discussed and many refinements were debated and approved. Another important decision at this meeting was that SBOL should begin investigating joining the COMBINE community of standards (\url{www.co.mbine.org}). In the Spring and Summer of 2014, several important events occurred. In April, several SBOL representatives attended Harmony in Manchester UK to discuss joining the COMBINE community, which was approved by both sides shortly thereafter. In May, Herbert Sauro, John Gennari, and Chris Myers received a grant from the National Science Foundation to support SBOL (this document and the supporting software are due in no small part to this support). In June, a description and our initial, multi-institutional demonstration of the use of SBOL 1.1 was published in Nature Biotechnology \cite{galdzicki2014synthetic}. In July, Nicholas Roehner presented a proposal for the next version of SBOL at the SEED Conference in Los Angeles \cite{roehner2014proposed}. Finally, in August 2014, the SBOL community attended their first COMBINE workshop as members of the COMBINE community. At this meeting, many of the final details of SBOL 2.0 were discussed, and the data model presented here is essentially the result of this meeting. -At the Harmony meeting in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). \ No newline at end of file +At the Harmony meeting in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (Raytheon BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). diff --git a/purpose.tex b/purpose.tex index c93efba7..bf896ab1 100644 --- a/purpose.tex +++ b/purpose.tex @@ -21,7 +21,8 @@ \section{Purpose} This document presents the second version of SBOL. The previous version 1.1 of the SBOL standard focused on representing the structural aspects of genetic designs. Users of the standard were able to use it to echange information on DNA designs but could not represent molecules other than DNA or represent the functional aspects of their designs beyond the DNA sequences. -To serve as an effective medium for the computational exchange of genetic designs, SBOL must be extended to capture more aspects of a designed system, including both structural and functional information, and the composition of complex structural and functional designs by combining simpler parts. The SBOL 2.0 data model defined in this specification thus provides for addressing the most pressing needs for expanding SBOL Version 1.1: +To serve as an effective medium for the computational exchange of genetic designs, SBOL must be extended to capture more aspects of a designed system, including both structural and functional information, and the composition of complex structural and functional designs by combining simpler parts. +The SBOL 2.0 data model defined in this specification thus extends the prior model to provide for addressing the most pressing needs for expanding SBOL Version 1.1: \begin{itemize} @@ -39,6 +40,17 @@ \section{Purpose} To address the need for functional descriptions in SBOL, the proposed data model adds classes for modules, interactions, and models. These classes provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the Systems Biology Markup Language (SBML)~\cite{SBML} to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. +\Rtodo{Added next two paragraphs to address queries from Mike B. -JSB} + +The SBOL 2.0 specification also adds a number of measures to simplify adoption and validation of compatibility with the standard. +First, the specification explicitly incorporates its serialization format into the specification, whereas SBOL 1.1 used an implicit standard tied to a reference implementation. +Second, the specification includes a set of validation rules for determining compatibility of a document with SBOL 2.0, most of which are machine-verifiable. +Finally, the specification includes a set of recommended best-practices likely to allow a tool to take best advantage of the standard and other compatible tools. + +Care has been taken to ensure that SBOL 2.0 is backward-compatible with SBOL 1.x. +The generalization of the data model does mean that many names have changed and thus an SBOL 1.x file is not a valid SBOL 2.0 file. +There is, however, a direct mapping from the SBOL 1.x data model into the SBOL 2.0 data model, making it simple to automatically ``upgrade'' any SBOL 1.x file into and SBOL 2.0 file. + The SBOL standard has been developed in collaboration between both ``wet'' bench scientists and ``dry'' scientific modelers and tool designers active within the Synthetic Biology community. As with the earlier SBOL 1.1 standard this community (open for any practitioner to join) has met to discuss, argue and agree upon needs that the SBOL standard should address. This information has then been used by developers within our community to design, develop and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects, as well as, the ability to share designs between different laboratories. From 08fe547afffe710b21091160dbd22565f4ae5589 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 2 Jun 2015 10:31:15 -0500 Subject: [PATCH 241/317] finished Mike B comments through overview --- history.tex | 2 +- overview.tex | 16 ++++++++++------ vocabulary.tex | 4 ++-- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/history.tex b/history.tex index 66bf00bb..f3ed7d59 100644 --- a/history.tex +++ b/history.tex @@ -24,7 +24,7 @@ \section{A Brief History of SBOL} At this meeting, the first data exchange between software tools using SBOL was conducted when a design was passed from Newcastle University's VirtualParts Repository to Boston University's Eugene tool, and finally to University of Utah's iBioSim tool. In March 2012, SBOL 1.1 was released, the version that this document replaces. -SBOL 1.1 did not change the data model, but provided a number of small adjustments and clarifications to details of its intended use and implementation, particularly around annotation of sequences and their locational relations. +SBOL 1.1 did not make any major change, but provided a number of small adjustments and clarifications on the particulars of SBOL's intended use and implementation, particularly around annotation of sequences and their locational relations. The 8th SBOL workshop was held in November 2012 at Boston University, and the major topic of discussion was the next version of SBOL. SBOL 1.1 is limited to describing hierarchical DNA sequences. Several extensions were discussed at this meeting, such as a means to describe genetic regulation, which later become the \sbol{Interaction} class, and a means to group components, which later became the \sbol{Module} class. In April 2013, at the 9th SBOL workshop at Newcastle University, the framework for SBOL 2.0 was agreed upon. diff --git a/overview.tex b/overview.tex index 9072737f..4a55baa6 100644 --- a/overview.tex +++ b/overview.tex @@ -6,23 +6,27 @@ \section{Overview of SBOL} Synthetic biology designs can be described using: \begin{itemize} -\item Structural terms, e.g., a set of annotated sequences or information about chemical makeup. +\item Structural terms, e.g., a set of annotated sequences or information about its chemical makeup. \item Functional terms, e.g., the way that components might interact with each other and the overall behavior. \end{itemize} In broad strokes, SBOL 1.1 focuses on physical, structural information, whereas SBOL 2.0 includes functional aspects. The physical information about a designed genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. SBOL 2.0 extends SBOL 1.1 in several ways: it extends physical descriptions to include entities beyond DNA sequences, and it allows for functional descriptions of the design. -As an example, consider the design of an expression cassette, such as found in the plasmid pUC18 \cite{L08752.1}, a device that is designed to detect successful versus unsuccessful molecular cloning. As an overall system, the device is designed to grow either blue-colored (unsuccessful) or white-colored (successful) colonies in the presence of IPTG and the chemical X-gal. Internally, the device has a number of parts, including a promoter, the lac repressor binding site, and the lacZ coding sequence. These parts have specific component-level interactions with IPTG and X-gal, as well as native host gene products, transcriptional and translational machinery that collectively lead to the desired system-level behavior. +As an example, consider the design of an expression cassette, such as the one found in the plasmid pUC18~\cite{L08752.1}. This device that is designed to detect successful versus unsuccessful molecular cloning. +As an overall system, the device is designed to grow either blue-colored (unsuccessful) or white-colored (successful) colonies in the presence of IPTG and the chemical X-gal. Internally, the device has a number of parts, including a promoter, the lac repressor binding site, and the lacZ coding sequence. +These parts have specific component-level interactions with IPTG and X-gal, as well as native host gene products, transcriptional machinery and translational machinery that collectively cause the desired system-level behavior. -Understanding how such a device works within the context of a host and how it might be adapted to new experimental applications is currently passed on through working with fellow scientists or reading articles in papers and books. But there is no systematic way of communicating the integration of sequence with functional design, so users typically have to look in many different places to develop an understanding of this system. -The SBOL standard allows designers to describe these functional characteristics, and to connect them to the physical parts and sequences that make up the design. +Knowledge of how such a device functions within the context of a host and how it might be adapted to new experimental applications is currently passed on through working with fellow scientists or reading articles in papers and books. +But there is no systematic way to communicate the integration of sequences with functional designs, so users typically have to look in many different places to develop an understanding of this system. +The SBOL standard allows designers to describe these functional characteristics and connect them to the physical parts and sequences that make up the design. SBOL includes two main classes that match the structural/functional distinction above: \begin{itemize} \item The \sbol{ComponentDefinition} object describes the physical aspects of the designed system, such as the DNA or RNA sequences and the physical relationships among sub-components. -\item The \sbol{ModuleDefinition} object describes the local interactions of the designed system, such as specific binding relationships, and repression and activation relationships. +\item The \sbol{ModuleDefinition} object describes the local interactions of the designed system, such as specific binding relationships and repression and activation relationships. \end{itemize} -Figure 1 shows a simplified view of these classes, as well as other helper classes in SBOL. To continue with the pUC18 example, the description would begin by creating a top-level \sbol{ModuleDefinition}. The \sbol{ModuleDefinition} specifies the structural elements that make up the cassette by referencing a number of \sbol{ComponentDefinition} objects. These would include the DNA component for the promoter and the small molecule component for IPTG, for example. +Figure 1 shows a simplified view of these classes, as well as other helper classes in SBOL. To continue with the pUC18 example, the description would begin with a top-level \sbol{ModuleDefinition}. +The \sbol{ModuleDefinition} specifies the structural elements that make up the cassette by referencing a number of \sbol{ComponentDefinition} objects. These would include the DNA component for the promoter and the small molecule component for IPTG, for example. The \sbol{ComponentDefinition} objects can be organized hierarchically. For example, the plasmid \sbol{ComponentDefinition} may reference \sbol{ComponentDefinition}s for the promoter, coding sequence, etc. Each \sbol{ComponentDefinition} object can also include the actual \sbol{Sequence} information (if available), as well as \sbol{SequenceAnnotation} objects that identify the locations of the promoters, coding sequences, etc., on the \sbol{Sequence}. In order to specify functional information, the \sbol{ModuleDefinition} can specify \sbol{Interaction} objects that describe any qualitative relationships among components, such as how IPTG and X-gal interact with the gene products. Finally, a \sbol{ModuleDefinition} object can point to a \sbol{Model} object that provides a reference to a complete quantitative model using a language such as SBML, CellML, Matlab, etc. Finally, all the of elements of the genetic design can be grouped together within a \sbol{Collection}. diff --git a/vocabulary.tex b/vocabulary.tex index 972951fa..1c38fbb9 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -56,11 +56,11 @@ \subsection{SBOL Class Names} Exactly like a \sbol{Component}, except that it can be associated with information about its context of use in the \sbol{Module}, rather than in the context of a containing \sbol{ComponentDefinition}. \item \emph{\sbol{Interaction}}: -Describes a functional relationship between biological entities, such as regulatory activation or repression, or a biological processes such as transcription or translation. +Describes a functional relationship between biological entities, such as regulatory activation or repression, or a biological process such as transcription or translation. \item \emph{\sbol{MapsTo}}: When a design (\sbol{ComponentDefinition} or \sbol{ModuleDefinition}) includes another design as a substructure, the larger design may need to refer to a \sbol{ComponentInstance} from the sub-design. -In this case, a copy of the referenced \sbol{ComponentInstance} needs to be created in the design and a \sbol{MapsTo} is added to the instance for the sub-design, which associates the original and the copy. +In this case, a referencing \sbol{ComponentInstance} needs to be created in the design and a \sbol{MapsTo} is added to the instance for the sub-design, which associates the original and the referencing instance. \item \emph{\sbol{Module}}: Represents a specific occurrence or instance of a sub-system within a larger design. From 2a54d622d54e2b56d97304fe1d0c285cfe518e06 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Tue, 2 Jun 2015 16:28:11 +0000 Subject: [PATCH 242/317] Update on Overleaf. --- apdx-validation.tex | 67 +++++++++++++++++++++++---------------------- history.tex | 2 +- 2 files changed, 36 insertions(+), 33 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 47087b81..9c1b2bbc 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -156,19 +156,19 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \subsubsection*{Rules for the \class{ComponentInstance} class} \setcounter{sbolCtr}{10601} -\printValid{A \sbol{ComponentInstance} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:ComponentInstance})} +\printValid{A \sbol{ComponentInstance} MUST inherit all properties of the \sbol{Identified} class. (Reference: \sec{sec:ComponentInstance})} -\printValid{The \sbol{access} property is a REQUIRED \sbol{URI} which MUST be one of the following: -\url{http://sbols.org/v2\#public} or \url{http://sbols.org/v2\#private}. -(Reference: \sec{sec:ComponentInstance})} +\printValid{The \sbol{access} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \external{URI} from \ref{tbl:componentInstance_access} (Reference: \sec{sec:ComponentInstance})} -\printValid{The \sbolmult{definition:CI}{definition} property is a REQUIRED \sbol{URI} reference to a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} +\printModeling{It is RECOMMENDED that the \sbol{access} property of a \sbol{ComponentInstance} contain the \external{URI} \url{http://sbols.org/v2\#public}. (Reference: \sec{sec:ComponentInstance})} -\printModeling{The \sbolmult{definition:CI}{definition} property \sbol{URI} SHOULD reference a \sbol{ComponentDefinition} object. (Reference: \sec{sec:ComponentInstance})} +\printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{ComponentDefinition}. (Reference: \sec{sec:ComponentInstance})} -\printValid{The \sbolmult{mapsTos:CI}{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects. (Reference: \sec{sec:ComponentInstance})} +\printWarning{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} MUST NOT contain a \external{URI} reference to \sbol{ComponentDefinition} that contains the \sbol{ComponentInstance}. In general, \sbol{ComponentInstance} objects MUST NOT form circular reference chains via their \sbol{definition} properties and the \sbol{ComponentDefinition} objects that contain them. (Reference: \sec{sec:ComponentInstance})} -\printValid{A \sbol{Component} object inherits all properties of a \sbol{ComponentInstance} object. (Reference: \sec{sec:ComponentInstance})} +\printValid{The \sbolmult{mapsTos:CI}{mapsTos} property of a \sbol{ComponentInstance} is OPTIONAL and MAY contain a set of \sbol{MapsTo} objects. (Reference: \sec{sec:ComponentInstance})} + +\printValid{A \sbol{Component} MUST inherit all properties of the \sbol{ComponentInstance} class. (Reference: \sec{sec:ComponentInstance})} \printValid{A \sbol{FunctionalComponent} object inherits all properties of a \sbol{ComponentInstance} object. (Reference: \sec{sec:ComponentInstance})} @@ -176,6 +176,33 @@ \subsubsection*{Rules for the \class{ComponentInstance} class} \url{http://sbols.org/v2\#inout}, \url{http://sbols.org/v2\#in}, \url{http://sbols.org/v2\#out}, or \url{http://sbols.org/v2\#none}. (Reference: \sec{sec:FunctionalComponent})} +\subsubsection*{Rules for the \class{Component} class} +\setcounter{sbolCtr}{10601} + +\subsubsection*{Rules for the \class{MapsTo} class} +\setcounter{sbolCtr}{11301} + +\printValid{A \sbol{MapsTo} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:MapsTo})} + +\printValid{The \sbol{refinement} property is a REQUIRED \sbol{URI} for \sbol{MapsTo} objects which MUST be one of the following: +\url{http://sbols.org/v2\#useRemote}, +\url{http://sbols.org/v2\#useLocal}, +\url{http://sbols.org/v2\#verifyIdentical}, and +\url{http://sbols.org/v2\#merge}. +(Reference: \sec{sec:MapsTo})} + +\printValid{When a \sbol{MapsTo} object is specified by a \sbol{ComponentInstance} object, the \sbol{local} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} + +\printWarning{When a \sbol{MapsTo} object is specified by a \sbol{ComponentInstance} object, the \sbol{remote} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the \sbol{ComponentDefinition} referred to by the \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} + +\printValid{When a \sbol{MapsTo} object is specified by a \sbol{Module} object, the \sbol{local} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:MapsTo})} + +\printWarning{When a \sbol{MapsTo} object is specified by a \sbol{Module} object, the \sbol{remote} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{FunctionalComponent} that is specified within the \sbol{ModuleDefinition} referred to by the \sbol{Module}. (Reference: \sec{sec:MapsTo})} + +% \printValid{The \sbol{ComponentInstance} referenced by the \sbol{local} property MUST have \sbol{public} access type. (Reference: \sec{sec:MapsTo})} + +\printValid{The \sbol{ComponentInstance} referenced by the \sbol{remote} property MUST have \sbol{public} access type. (Reference: \sec{sec:MapsTo})} + \subsubsection*{Rules for the \class{SequenceAnnotation} class} \setcounter{sbolCtr}{10701} @@ -264,30 +291,6 @@ \subsubsection*{Rules for the \class{Module} class} \printValid{The \sbolmult{mapsTos:M}{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects. (Reference: \sec{sec:Module})} -\subsubsection*{Rules for the \class{MapsTo} class} -\setcounter{sbolCtr}{11301} - -\printValid{A \sbol{MapsTo} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:MapsTo})} - -\printValid{The \sbol{refinement} property is a REQUIRED \sbol{URI} for \sbol{MapsTo} objects which MUST be one of the following: -\url{http://sbols.org/v2\#useRemote}, -\url{http://sbols.org/v2\#useLocal}, -\url{http://sbols.org/v2\#verifyIdentical}, and -\url{http://sbols.org/v2\#merge}. -(Reference: \sec{sec:MapsTo})} - -\printValid{When a \sbol{MapsTo} object is specified by a \sbol{ComponentInstance} object, the \sbol{local} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} - -\printWarning{When a \sbol{MapsTo} object is specified by a \sbol{ComponentInstance} object, the \sbol{remote} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the \sbol{ComponentDefinition} referred to by the \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} - -\printValid{When a \sbol{MapsTo} object is specified by a \sbol{Module} object, the \sbol{local} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:MapsTo})} - -\printWarning{When a \sbol{MapsTo} object is specified by a \sbol{Module} object, the \sbol{remote} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{FunctionalComponent} that is specified within the \sbol{ModuleDefinition} referred to by the \sbol{Module}. (Reference: \sec{sec:MapsTo})} - -% \printValid{The \sbol{ComponentInstance} referenced by the \sbol{local} property MUST have \sbol{public} access type. (Reference: \sec{sec:MapsTo})} - -\printValid{The \sbol{ComponentInstance} referenced by the \sbol{remote} property MUST have \sbol{public} access type. (Reference: \sec{sec:MapsTo})} - \subsubsection*{Rules for the \class{Interaction} class} \setcounter{sbolCtr}{11401} diff --git a/history.tex b/history.tex index f3ed7d59..8b12989d 100644 --- a/history.tex +++ b/history.tex @@ -34,4 +34,4 @@ \section{A Brief History of SBOL} In June, a description and our initial, multi-institutional demonstration of the use of SBOL 1.1 was published in Nature Biotechnology \cite{galdzicki2014synthetic}. In July, Nicholas Roehner presented a proposal for the next version of SBOL at the SEED Conference in Los Angeles \cite{roehner2014proposed}. Finally, in August 2014, the SBOL community attended their first COMBINE workshop as members of the COMBINE community. At this meeting, many of the final details of SBOL 2.0 were discussed, and the data model presented here is essentially the result of this meeting. -At the Harmony meeting in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (Raytheon BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). +At the Harmony meeting in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (Raytheon BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). \ No newline at end of file From 8f02e1f7cdccdd54eba3bc6498198cd667f976e6 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 2 Jun 2015 11:28:06 -0500 Subject: [PATCH 243/317] mike b comments through p 30 --- model.tex | 89 ++++++++++++++++++++++++++++++++++++++++--------------- sbol2.tex | 2 +- 2 files changed, 66 insertions(+), 25 deletions(-) diff --git a/model.tex b/model.tex index 9ca11aa5..ab39af03 100644 --- a/model.tex +++ b/model.tex @@ -2,6 +2,9 @@ \section{SBOL Data Model}\label{sec:model} % ----------------------------------------------------------------------------- +\Ctodo{Change all figures from raster to vector format} +\Ctodo{Ensure that no UML figures have labels conflicting with their arrows} + In this section, we describe the types of biological design data that can belong to an SBOL document and the relationships between these data types. The SBOL data model is specified using Unified Modeling Language (UML) 2.0 diagrams \href{http://www.omg.org/spec/UML/2.0/}{(OMG 2005)}. Subsections \ref{sec:umldiagrams}, \ref{sec:nameconventions}, \ref{sec:datatypes} review the basics of UML diagrams and explain the naming conventions and generic data types used in this specification. The remaining sections then describe the SBOL data model in detail. Complete SBOL examples and best practices when using the standard can be found in \ref{sec:examples} and \ref{sec:bestpractices}, respectively. \subsection{Understanding the UML Diagrams} @@ -13,7 +16,9 @@ \subsection{Understanding the UML Diagrams} In the case of an association property, the class from which the arrow originates is the owner of the association property. A diamond at the origin of the arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, in which the owner of the association property exists independently of its value. In the SBOL data model, the value of an association property MUST be a URI or set of \sbol{URI}s that refer to SBOL objects belonging to the class at the tip of the arrow. -By contrast, filled diamonds indicate composite aggregation, also known as a part-whole relationship, in which the value of the association property MUST NOT exist independently of its owner. In addition, in the SBOL data model, it is REQUIRED that the value of each composite aggregation property is a unique SBOL object (that is, not the value for more than one such property). +By contrast, filled diamonds indicate composite aggregation, also known as a part-whole relationship, in which the value of the association property MUST NOT exist independently of its owner. +In addition, in the SBOL data model, it is REQUIRED that the value of each composite aggregation property is a unique SBOL object (that is, not the value for more than one such property). +Note that in all cases, composite aggregation is used in such a way that there should be no duplication of such objects. %For example, it will later be shown how objects of the \sbol{SequenceAnnotation} class must associated with an object of the \sbol{ComponentDefinition} class (and only that object). All SBOL properties are labeled with one of several restrictions on data cardinality. These are: @@ -22,7 +27,7 @@ \subsection{Understanding the UML Diagrams} \item $1$ - required, one: there must be exactly one value for this property. -\item $0 \ldots 1$ - optional: there may be a single value for this property or it may be absent. +\item $0 \ldots 1$ - optional: there may be a single value for this property, or it may be absent. \item $0 \ldots *$ - unbounded: there may be any number of values for this property, including none. @@ -37,12 +42,14 @@ \subsection{Understanding the UML Diagrams} \subsection{Naming and Font Conventions} \label{sec:nameconventions} -SBOL classes are named using upper "camel case," meaning that each word is capitalized and all words are run together without spaces e.g. \sbol{Identified}, \sbol{SequenceAnnotation}. -Properties, on the other hand, are named using lower camel case, meaning that they begin lower case (e.g., \sbol{identity}) but if they consist of multiple words, all words after the first begin with an upper case letter (e.g., \sbol{persistentIdentity}). +SBOL classes are named using upper "camel case," meaning that each word is capitalized and all words are run together without spaces, e.g. \sbol{Identified}, \sbol{SequenceAnnotation}. +Properties, on the other hand, are named using lower camel case, meaning that they begin lowercase (e.g., \sbol{identity}) but if they consist of multiple words, all words after the first begin with an uppercase letter (e.g., \sbol{persistentIdentity}). -Within the SBOL data model, each property is given a singular or plural name in accordance with its data cardinalities. The forms of these names follow the usual rules of grammar. For example, \sbol{SequenceAnnotation} is the singular form of \sbol{SequenceAnnotation}s. +Within the SBOL data model, each property is given a singular or plural name in accordance with its data cardinalities. +The forms of these names follow the usual rules of English grammar. For example, \sbol{SequenceAnnotation} is the singular form of \sbol{SequenceAnnotation}s. -When SBOL objects are serialized to be exchanged (using \emph{Resource Description Framework} (RDF) as described in \ref{sec:serialization}), however, SBOL properties are always given singular names. This is because the SBOL data model does not contain classes that correspond directly to the RDF elements that group other elements into ordered or unordered sets. Consequently, if an SBOL property has multiple values, then it is serialized as multiple property entries, each with a singular name and a single value. +SBOL properties are always given singular names, however, when SBOL objects are serialized (using \emph{Resource Description Framework} (RDF) as described in \ref{sec:serialization}). +This is because the SBOL data model does not contain classes that correspond directly to the RDF elements that group other elements into ordered or unordered sets. Consequently, if an SBOL property has multiple values, then it is serialized as multiple property entries, each with a singular name and a single value. For example, if an SBOL property has five values, then its serialization contains five RDF triples, each with a singular predicate name and one of the five values as its object. Lastly, font color is used in the body text of this specification to indicate whether a class or property is defined externally or within the SBOL data model. In particular, if a class or property name is written in a blue font, then it is defined by SBOL. If it is written in a bold font, then it is defined externally. @@ -59,24 +66,37 @@ \subsection{Data Types} When SBOL use simple ``primitive'' data types such as strings or integers, these are defined as the following specific formal types: \begin{itemize} -\item String: \url{http://www.w3.org/TR/xmlschema11-2/#string} -\item Integer: \url{http://www.w3.org/TR/xmlschema11-2/#integer} -\item Double: \url{http://www.w3.org/TR/xmlschema11-2/#double} -\item Boolean: \url{http://www.w3.org/TR/xmlschema11-2/#boolean} +\item String: \url{http://www.w3.org/TR/xmlschema11-2/#string}\\ + {\em Example: ``LacI coding sequence''} +\item Integer: \url{http://www.w3.org/TR/xmlschema11-2/#integer}\\ + {\em Example: 3} +\item Double: \url{http://www.w3.org/TR/xmlschema11-2/#double}\\ + {\em Example: 3.14159} +\item Boolean: \url{http://www.w3.org/TR/xmlschema11-2/#boolean}\\ + {\em Example: \external{true}} \end{itemize} The term \sbol{literal} is used to denote an object that can be any of the four types listed above. In addition to the simple types listed above, SBOL also uses objects with types \emph{uniform resource identifier} (URI) and \emph{XML qualified name} (QName): +\Rtodo{Somebody please make sure I haven't screwed up QName and URI descriptions. -JSB} \begin{itemize} -\item URI: \url{http://www.w3.org/TR/xmlschema11-2/#anyURI} -\item QName: \url{http://www.w3.org/TR/xmlschema11-2/#QName} +\item URI: \url{http://www.w3.org/TR/xmlschema11-2/#anyURI}\\ + {\em Example: \external{http://www.partsregistry.org/Part:BBa\_J23119}} +\item QName: \url{http://www.w3.org/TR/xmlschema11-2/#QName}\\ + {\em Example: \external{myapp:Datasheet}} \end{itemize} +Note that, in compliance with RDF standards, URI objects are generally serialized using an \external{rdf:resource} property, e.g.: +\external{rdf:resource="http://www.partsregistry.org/Part:BBa\_J23119"} + + + \subsection{Identified} \label{sec:Identified} \NVtodo{Put a small concrete example for each toplevel, in the style of the mapsTo diagram} -All SBOL-defined classes are directly or indirectly derived from the \sbol{Identified} abstract class. This inheritance means that all SBOL objects are identified using \sbol{URI}s that uniquely refer to these objects within an SBOL document or at locations on the World Wide Web. +All SBOL-defined classes are directly or indirectly derived from the \sbol{Identified} abstract class. +This inheritance means that all SBOL objects are uniquely identified using \sbol{URI}s that uniquely refer to these objects within an SBOL document or at locations on the World Wide Web. As shown in \ref{uml:identified}, the \sbol{Identified} class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, \sbol{version}, \sbol{wasDerivedFrom}, \sbol{name}, \sbol{description}, and \sbol{annotations}. The latter property is described separately in \ref{sec:Annotations}. @@ -95,13 +115,13 @@ \subsection{Identified} \subsubsection*{The \sbolheading{identity} property} \label{sec:identity} -The \sbol{identity} property is REQUIRED by all \sbol{Identified} objects and has a data type of \sbol{URI}. A given \sbol{Identified} object's \sbol{identity} \sbol{URI} MUST be globally unique among all other \sbol{identity} \sbol{URI}s. It is also highly RECOMMENDED that the URI structure follows the recommended best-practices for compliant \sbol{URI}s specified in \ref{sec:compliant}. +The \sbol{identity} property is REQUIRED by all \sbol{Identified} objects and has a data type of \sbol{URI}. A given \sbol{Identified} object's \sbol{identity} \sbol{URI} MUST be globally unique among all other \sbol{identity} \sbol{URI}s. It is also highly RECOMMENDED that the URI structure follows the recommended best practices for compliant \sbol{URI}s specified in \ref{sec:compliant}. Although most SBOL properties are defined by SBOL and serialized with its namespace, the \sbol{identity} property is defined by the analogous RDF \external{about} property and is serialized with the RDF namespace as follows: -\external{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. +\url{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. -This substitution is in keeping with the commitment of the SBOL community to the practical reuse of existing standards. +The use of \external{about} is expressly for the purpose of making SBOL compliant with pre-existing standards: when you see \external{about} in an SBOL document, you should interpret it as meaning \sbol{identity}. \subsubsection*{The \sbolheading{persistentIdentity} property} \label{sec:persistentIdentity} @@ -131,7 +151,8 @@ \subsubsection*{The \sbolheading{wasDerivedFrom} property} The \sbol{wasDerivedFrom} property is OPTIONAL and has a data type of \sbol{URI}. An SBOL object with this property refers to another SBOL object or non-SBOL resource from which this object was derived. -If the \sbol{wasDerivedFrom} property of an SBOL object $A$ that refers to an SBOL object $B$ has an identical \sbol{persistentIdentity}, and both $A$ and $B$ have a \sbol{version}, then the \sbol{version} of $B$ MUST come before that of $A$. In addition, an SBOL object MUST NOT refer to itself via its own \sbol{wasDerivedFrom} property or form a circular chain of references via its \sbol{wasDerivedFrom} property and those of other SBOL objects. For example, the reference chain ``$A$ was derived from $B$ and $B$ was derived from $A$'' is circular. +If the \sbol{wasDerivedFrom} property of an SBOL object $A$ that refers to an SBOL object $B$ has an identical \sbol{persistentIdentity}, and both $A$ and $B$ have a \sbol{version}, then the \sbol{version} of $B$ MUST precede that of $A$. +In addition, an SBOL object MUST NOT refer to itself via its own \sbol{wasDerivedFrom} property or form a cyclical chain of references via its \sbol{wasDerivedFrom} property and those of other SBOL objects. For example, the reference chain ``$A$ was derived from $B$ and $B$ was derived from $A$'' is cyclical. \subsubsection*{The \sbolheading{name} property} \label{sec:name} @@ -310,7 +331,8 @@ \subsubsection*{The \sbolheading{types} property} The \sbolmult{types:CD}{types} property of every \sbol{ComponentDefinition} MUST contain one or more \sbol{URI}s that MUST identify terms from appropriate ontologies, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). \ref{tbl:componentdefinition_types} provides a list of RECOMMENDED ontology terms for the \sbolmult{types:CD}{types} property and their \sbol{URI}s. In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbolmult{types:CD}{types}. -Finally, if the \sbolmult{types:CD}{types} property contains multiple \sbol{URI}s, then they MUST identify synonymous terms. +Finally, if the \sbolmult{types:CD}{types} property contains multiple \sbol{URI}s, then they MUST identify synonymous terms (otherwise, it may be unclear how to interpret the terms). +\LDtodo{Do we mean synonymous, or can it be weakened to non-conflicting? Query from Mike B} \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -337,6 +359,8 @@ \subsubsection*{The \sbolheading{roles} property} \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbolmult{roles:CD}{roles} property and their \sbol{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). Any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use that term as one of its \sbolmult{roles:CD}{roles}. +\LDtodo{Query from Mike B: ``In my organization, it is very common to define single components containing multiple adjacent items from table 3, the table of roles. For example, it's more common to design a part as a gene + stop + terminator than just a lonely gene. We're not alone in this. Do you want to make any recommendations for this situation?''} + \begin{table}[ht] \begin{edtable}{tabular}{lll} \toprule @@ -366,6 +390,8 @@ \subsubsection*{The \sbolheading{sequences} property} If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} (see \ref{tbl:sequence_encodings}). +\LDtodo{Query from Mike B: ``"a ComponentDefinition MUST NOT refer to more than one Sequence with an IUPAC encoding...." If this is true, then how can I provide nonconflicting descriptions of a sequence at two different levels of abstraction? The example from the paragraph starting at p21 line 16 makes me think that this should be permitted. Did you really mean that "a ComponentDefinition MUST NOT refer to more than one Sequence with any single IUPAC encoding," i.e. you can't give two conflicting DNA sequences? If you really mean what it says, please provide a clarifying rationale for why e.g. I shouldn't be allowed to specify DNA, RNA, and protein sequences for a part.''} + Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbolmult{types:CD}{types} property refers to a term from \ref{tbl:componentdefinition_types}, then one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this term in \ref{tbl:sequence_encodings}. Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbolmult{types:CD}{types} property MUST refer to the term from \ref{tbl:componentdefinition_types} that is cross-listed with this \sbol{encoding} in \ref{tbl:sequence_encodings}. For example, if the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}, then its \sbolmult{types:CD}{types} property must refer to the BioPAX term for DNA. @@ -374,10 +400,15 @@ \subsubsection*{The \sbolheading{components} property} \label{sec:components} The \sbol{components} property is OPTIONAL and MAY specify a set of \sbol{Component} objects that are contained by the \sbol{ComponentDefinition}. +Note that the set of relations between \sbol{Component} and \sbol{ComponentDefinition} objects is strictly acyclic. While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple copies of a particular part. For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \sbol{ComponentDefinition} of a CDS. -If the \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{Component} in its \sbol{components} property MUST refer to a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with the same \sbol{encoding}. In addition, it MUST be possible to align the \sbol{elements} of the latter \sbol{Sequence} objects to the \sbol{elements} of the \sbol{ComponentDefinition}'s \sbol{Sequence}, subject to any restrictions imposed by the \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} objects that refer to the contents of the \sbol{components} property. A DNA \sbol{ComponentDefinition}, for example, could refer to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} of ``{\tt gattaca}.'' In this case, any \sbol{Component} contained by this \sbol{ComponentDefinition} would itself need to have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} that can be aligned with ``{\tt gattaca},'' such as ``{\tt gatta}," or perhaps ``{\tt tgta}'' in the case of a \sbol{Component} that is positioned by a \sbol{SequenceAnnotation} with a \sbol{Location} \sbol{orientation} of ``reverse complement'' (see \ref{sec:Location}). +\LDtodo{Comment from Mike B: ``"it MUST be possible to align the elements of the latter Sequence objects to the elements of the ComponentDefinition's Sequence." Alignment comes in lossy and lossless forms. One of SBOL 1.1's practical limitations when it came to modeling real-world processes was that annotations couldn't bear an approximate resemblance to the sequences they annotated; they had to be exact substrings. If you really intend to keep this restriction in SBOL 2.0, then please use stronger language than "align," because we all use alignment tools to detect lossy near-matches (indels), so this passage might be read the wrong way. If, on the other hand, you've deliberately changed that rule, then highlight the change here, because SBOL 1.1 was pretty emphatic about its "logical consistency" rules.''} + +If the \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{Component} in its \sbol{components} property MUST refer to a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with the same \sbol{encoding}. +In addition, it MUST be possible to align the \sbol{elements} of the latter \sbol{Sequence} objects to the \sbol{elements} of the \sbol{ComponentDefinition}'s \sbol{Sequence}, subject to any restrictions imposed by the \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} objects that refer to the contents of the \sbol{components} property. +A DNA \sbol{ComponentDefinition}, for example, could refer to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} of ``{\tt gattaca}.'' In this case, any \sbol{Component} contained by this \sbol{ComponentDefinition} would itself need to have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} that can be aligned with ``{\tt gattaca},'' such as ``{\tt gatta}," or perhaps ``{\tt tgta}'' in the case of a \sbol{Component} that is positioned by a \sbol{SequenceAnnotation} with a \sbol{Location} \sbol{orientation} of ``reverse complement'' (see \ref{sec:Location}). % Furthermore, this \sbol{Sequence} MUST have the same \external{IUPAC} \sbol{encoding} as a \sbol{Sequence} of the parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. @@ -398,7 +429,7 @@ \subsubsection*{Serialization} The serialization of a \sbol{ComponentDefinition} MUST have the form below. The \sbol{components}, \sbol{sequenceConstraints}, \sbol{sequenceAnnotations}, and \sbol{sequences} properties of a \sbol{ComponentDefinition} contain objects belonging to the appropriate SBOL classes as their values, while the \sbolmult{types:CD}{types} and \sbolmult{roles:CD}{roles} properties contain \sbol{URI}s that identify ontology terms as their values. As shown below, each of these objects and \sbol{URI}s is serialized as part of an implicit set of SBOL properties with singular rather then plural names. -In particular, each object is serialized as a RDF/XML node nested within a singular property, while each \sbol{URI} is serialized as a \external{rdf:resource} on a singular property. +In particular, each object is serialized as a RDF/XML node nested within a singular property, while each \sbol{URI} (except the \sbol{identity}) is serialized as a \external{rdf:resource} on a singular property. \lstsetsbol \begin{lstlisting} @@ -466,8 +497,8 @@ \subsubsection{ComponentInstance} As described in the previous section, this \sbol{ComponentDefinition} effectively provides information about the \sbolmult{types:CD}{types} and \sbolmult{roles:CD}{roles} of the \sbol{ComponentInstance}. The \sbolmult{definition:CI}{definition} property MUST NOT refer to the same \sbol{ComponentDefinition} as the one that contains the \sbol{ComponentInstance}. -Furthermore, \sbol{ComponentInstance} objects MUST NOT form a circular chain of references via their \sbolmult{definition:CI}{definition} properties and the \sbol{ComponentDefinition} objects that contain them. -For example, consider the \sbol{ComponentInstance} objects $A$ and $B$ and the \sbol{ComponentDefinition} objects $X$ and $Y$. The reference chain ``$X$ contains $A$, $A$ is defined by $Y$, $Y$ contains $B$, and $B$ is defined by $X$'' is circular. +Furthermore, \sbol{ComponentInstance} objects MUST NOT form a cyclical chain of references via their \sbolmult{definition:CI}{definition} properties and the \sbol{ComponentDefinition} objects that contain them. +For example, consider the \sbol{ComponentInstance} objects $A$ and $B$ and the \sbol{ComponentDefinition} objects $X$ and $Y$. The reference chain ``$X$ contains $A$, $A$ is defined by $Y$, $Y$ contains $B$, and $B$ is defined by $X$'' is cyclical. \paragraph{The \sbolheading{mapsTos} property}\label{sec:mapsTos:CI} @@ -551,6 +582,8 @@ \subsubsection{MapsTo} \end{center} \end{figure} +\Ctodo{Mike B comment: ``This discussion feels a little messy. As a first- and second-time reader, I was not sold on the need for this class, and eventually I had to sort of reverse-engineer its practical rationale. I think the first paragraph should make it crystal clear what this is for. If two things are identical, then under what real-world circumstances would I expect to have two copies in my model? If two copies are in conflict, or if they are nonidentical but overlapping, then why is this the right way to unify them? I think you have answers for these questions, informed by real-world experience, but they're not conveyed here. Readers need insight.''} + When \sbol{ComponentDefinition} and \sbol{ModuleDefinition} objects are composed into structural and functional hierarchies using \sbol{ComponentInstance} and \sbol{Module} objects, it is often the case that some \sbol{ComponentInstance} objects are intended to represent the same entity in the overall design. The purpose of the \sbol{MapsTo} class is to make these identity relationships clear and explicit. In particular, a \sbol{MapsTo} object provides two pieces of information: @@ -644,11 +677,16 @@ \subsubsection{SequenceAnnotation} \paragraph{The \sbolheading{locations} property}\label{sec:locations} The \sbol{locations} property is a REQUIRED set of one or more \sbol{Location} objects that indicate which \sbol{elements} of a \sbol{Sequence} are described by the \sbol{SequenceAnnotation}. -In general, these \sbol{Location} objects SHOULD NOT specify overlapping regions. +\Rtodo{Need somebody to make sure I didn't screw this up. -JSB} +Allowing multiple \sbol{Location} objects on a single \sbol{SequenceAnnotation} is intended to allow representation of a component with gaps in its encoding (e.g., encoded across a set of exons with interspersed introns). +As such, the \sbol{Location} objects of a single SHOULD NOT specify overlapping regions, since it is not clear what this means. +There is no such concern with different \sbol{SequenceAnnotation} objects, however, which can easily overlap in \sbol{Location}. \paragraph{The \sbolheading{component} property}\label{sec:component} The \sbol{component} property is OPTIONAL and has a data type of \sbol{URI}. This \sbol{URI} MUST refer to a \sbol{Component} that is contained by the same parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. In this way, the properties of the \sbol{SequenceAnnotation}, such as its \sbol{description} and \sbol{locations}, are associated with part of the substructure of its \sbol{ComponentDefinition}. A \sbol{SequenceAnnotation} MUST NOT refer to the same \sbol{Component} as another \sbol{SequenceAnnotation}. +\LDtodo{Mike B query: ``"A SequenceAnnotation MUST NOT refer to the same Component as another SequenceAnnotation." As long as the two annotations are nonconflicting, what could possibly be the harm in this? Please explain.''} + \paragraph{Serialization} The serialization of a \sbol{SequenceAnnotation} MUST have the form below. In this template, {\tt A\_LOCATION\_SUBCLASS} represents one of the \sbol{Location} subclasses. @@ -716,6 +754,8 @@ \subsubsection{Location} \label{sec:Range} A \sbol{Range} object specifies a region via discrete, inclusive \sbol{start} and \sbol{end} positions that correspond to indices for characters in the \sbol{elements} \sbol{String} of a \sbol{Sequence}. +Note that the index of the first location is 1, as is typical practice in biology, rather than 0, as is typical practice in computer science. + \paragraph{The \sbolheading{start} property}\label{sec:start} The \sbol{start} property specifies the inclusive starting position of the \sbol{Range}. This property is REQUIRED and MUST contain an \sbol{Integer} value greater than zero. @@ -983,6 +1023,7 @@ \subsubsection*{The \sbolheading{roles} property}\label{sec:roles:MD} \subsubsection*{The \sbolheading{modules} property}\label{sec:modules} The \sbol{modules} property is OPTIONAL and MAY specify a set of \sbol{Module} objects contained by the \sbol{ModuleDefinition}. +Note that the set of relations between \sbol{Module} and \sbol{ModuleDefinition} objects is strictly acyclic. While the \sbol{ModuleDefinition} class is analogous to a blueprint or specification sheet for a system of interaction biological elements, the \sbol{Module} class represents the specific occurrence of a particular sub-system within that design. Hence, this class allows a biological design to include multiple copies of a subsystem. For example, the \sbol{ModuleDefinition} for a network of two-input repressor systems, where the particular repressors have not yet been chosen, contain multiple \sbol{Module} objects that refer to the same \sbol{URI} for the \sbol{ModuleDefinition} of an abstract two-input repressor device. @@ -1131,7 +1172,7 @@ \subsubsection{Module} The \sbolmult{definition:M}{definition} property is a REQUIRED \sbol{URI} that refers to the \sbol{ModuleDefinition} for the \sbol{Module}. The \sbolmult{definition:M}{definition} property MUST NOT refer to the same \sbol{ModuleDefinition} as that which contains the \sbol{Module}. -Furthermore, \sbol{Module} objects MUST NOT form a circular chain of references via their \sbolmult{definition:M}{definition} properties and the \sbol{ModuleDefinition} objects that contain them. For example, consider the \sbol{Module} objects $A$ and $B$ and the \sbol{ModuleDefinition} objects $X$ and $Y$. The reference chain ``$X$ contains $A$, $A$ is defined by $Y$, $Y$ contains $B$, and $B$ is defined by $X$'' is circular. +Furthermore, \sbol{Module} objects MUST NOT form a cyclical chain of references via their \sbolmult{definition:M}{definition} properties and the \sbol{ModuleDefinition} objects that contain them. For example, consider the \sbol{Module} objects $A$ and $B$ and the \sbol{ModuleDefinition} objects $X$ and $Y$. The reference chain ``$X$ contains $A$, $A$ is defined by $Y$, $Y$ contains $B$, and $B$ is defined by $X$'' is cyclical. \paragraph{The \sbolheading{mapsTo} property} \label{sec:mapsTos:M} diff --git a/sbol2.tex b/sbol2.tex index 10223f09..a45bf0de 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -58,7 +58,7 @@ \definecolor{gray}{rgb}{0.5,0.5,0.5} \definecolor{light-gray}{gray}{0.97} \lstdefinelanguage{sbol} - {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:MapsTo, sbol:sequence,sbol:wasDerivedFrom,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation,sbol:component,sbol:location, sbol:sequenceAnnotation, sbol:Range, sbol:start, sbol:end, sbol:orientation,sbol:SequenceConstraint, sbol:restriction, sbol:subject, sbol:object,sbol:Sequence, sbol:elements, sbol:encoding,sbol:Model, sbol:source, sbol:language, sbol:framework,sbol:FunctionalComponent, sbol:Module, sbol:Interaction, sbol:interaction, sbol:module, sbol:model,sbol:Model,sbol:definition, sbol:access, sbol:direction, sbol:mapsTo, sbol:refinement, sbol:local, sbol:remote, sbol:participation, sbol:Participation, sbol:participant,sbol:sequenceConstraint,sbol:at,sbol:Cut,sbol:functionalComponent,sbol:ModuleDefinition}, + {morekeywords={xmlns:sbol,rdf:about,sbol:displayId,sbol:persistentIdentity,sbol:version,sbol:timeStamp,sbol:name,sbol:description,sbol:member,sbol:Collection,sbol:type, sbol:role, sbol:ComponentDefinition, sbol:MapsTo, sbol:sequence,sbol:wasDerivedFrom,sbol:Component,sbol:subComponent,sbol:SequenceAnnotation,sbol:component,sbol:location, sbol:sequenceAnnotation, sbol:Range, sbol:start, sbol:end, sbol:orientation,sbol:SequenceConstraint, sbol:restriction, sbol:subject, sbol:object,sbol:Sequence, sbol:elements, sbol:encoding,sbol:Model, sbol:source, sbol:language, sbol:framework,sbol:FunctionalComponent, sbol:Module, sbol:Interaction, sbol:interaction, sbol:module, sbol:model,sbol:Model,sbol:definition, sbol:access, sbol:direction, sbol:mapsTo, sbol:refinement, sbol:local, sbol:remote, sbol:participation, sbol:Participation, sbol:participant,sbol:sequenceConstraint,sbol:at,sbol:Cut,sbol:functionalComponent,sbol:ModuleDefinition,prov:wasDerivedFrom,dcterms:title,dcterms:description}, basicstyle=\fontsize{7}{9}\selectfont\ttfamily, backgroundcolor=\color{light-gray}, keywordstyle=\color{blue}, From ee3deea211c8970a44c6be5de07d60bddf06a24b Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Tue, 2 Jun 2015 16:47:44 +0000 Subject: [PATCH 244/317] Update on Overleaf. --- apdx-validation.tex | 54 ++++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 9c1b2bbc..f09ea9ce 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -164,25 +164,23 @@ \subsubsection*{Rules for the \class{ComponentInstance} class} \printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{ComponentDefinition}. (Reference: \sec{sec:ComponentInstance})} -\printWarning{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} MUST NOT contain a \external{URI} reference to \sbol{ComponentDefinition} that contains the \sbol{ComponentInstance}. In general, \sbol{ComponentInstance} objects MUST NOT form circular reference chains via their \sbol{definition} properties and the \sbol{ComponentDefinition} objects that contain them. (Reference: \sec{sec:ComponentInstance})} +\printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} MUST NOT contain a \external{URI} reference to the \sbol{ComponentDefinition} that contains the \sbol{ComponentInstance}. (Reference: \sec{sec:ComponentInstance})} -\printValid{The \sbolmult{mapsTos:CI}{mapsTos} property of a \sbol{ComponentInstance} is OPTIONAL and MAY contain a set of \sbol{MapsTo} objects. (Reference: \sec{sec:ComponentInstance})} - -\printValid{A \sbol{Component} MUST inherit all properties of the \sbol{ComponentInstance} class. (Reference: \sec{sec:ComponentInstance})} +\printWarning{\sbol{ComponentInstance} objects MUST NOT form circular reference chains via their \sbolmult{definition:CI}{definition} properties and parent \sbol{ComponentDefinition} objects. (Reference: \sec{sec:ComponentInstance})} -\printValid{A \sbol{FunctionalComponent} object inherits all properties of a \sbol{ComponentInstance} object. (Reference: \sec{sec:ComponentInstance})} - -\printValid{The \sbol{direction} property is a REQUIRED \sbol{URI} for \sbol{FunctionalComponent} objects which MUST be one of the following: -\url{http://sbols.org/v2\#inout}, \url{http://sbols.org/v2\#in}, \url{http://sbols.org/v2\#out}, or \url{http://sbols.org/v2\#none}. -(Reference: \sec{sec:FunctionalComponent})} +\printValid{The \sbolmult{mapsTos:CI}{mapsTos} property of a \sbol{ComponentInstance} is OPTIONAL and MAY contain a set of \sbol{MapsTo} objects. (Reference: \sec{sec:ComponentInstance})} \subsubsection*{Rules for the \class{Component} class} -\setcounter{sbolCtr}{10601} +\setcounter{sbolCtr}{10701} + +\printValid{A \sbol{Component} MUST inherit all properties of the \sbol{ComponentInstance} class. (Reference: \sec{sec:ComponentInstance})} \subsubsection*{Rules for the \class{MapsTo} class} -\setcounter{sbolCtr}{11301} +\setcounter{sbolCtr}{10801} + +\printValid{A \sbol{MapsTo} MUST inherit all properties of the \sbol{Identified} class. (Reference: \sec{sec:MapsTo})} -\printValid{A \sbol{MapsTo} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:MapsTo})} +\printValid{The \sbol{local} property of a \sbol{Mapsthe is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} \printValid{The \sbol{refinement} property is a REQUIRED \sbol{URI} for \sbol{MapsTo} objects which MUST be one of the following: \url{http://sbols.org/v2\#useRemote}, @@ -191,8 +189,6 @@ \subsubsection*{Rules for the \class{MapsTo} class} \url{http://sbols.org/v2\#merge}. (Reference: \sec{sec:MapsTo})} -\printValid{When a \sbol{MapsTo} object is specified by a \sbol{ComponentInstance} object, the \sbol{local} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} - \printWarning{When a \sbol{MapsTo} object is specified by a \sbol{ComponentInstance} object, the \sbol{remote} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the \sbol{ComponentDefinition} referred to by the \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} \printValid{When a \sbol{MapsTo} object is specified by a \sbol{Module} object, the \sbol{local} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:MapsTo})} @@ -204,7 +200,7 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{The \sbol{ComponentInstance} referenced by the \sbol{remote} property MUST have \sbol{public} access type. (Reference: \sec{sec:MapsTo})} \subsubsection*{Rules for the \class{SequenceAnnotation} class} -\setcounter{sbolCtr}{10701} +\setcounter{sbolCtr}{10901} \printValid{A \sbol{SequenceAnnotation} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:SequenceAnnotation})} @@ -213,7 +209,7 @@ \subsubsection*{Rules for the \class{SequenceAnnotation} class} \printValid{The \sbol{component} property is an OPTIONAL \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceAnnotation})} \subsubsection*{Rules for the \class{Location} class} -\setcounter{sbolCtr}{10801} +\setcounter{sbolCtr}{11001} \printValid{A \sbol{Location} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Location})} @@ -234,7 +230,7 @@ \subsubsection*{Rules for the \class{Location} class} \printValid{The \sbol{at} property is REQUIRED for all \sbol{Cut} objects, and it MUST be a non-negative integer. (Reference: \sec{sec:Cut})} \subsubsection*{Rules for the \class{SequenceConstraint} class} -\setcounter{sbolCtr}{10901} +\setcounter{sbolCtr}{11101} \printValid{A \sbol{SequenceConstraint} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:SequenceConstraint})} @@ -249,7 +245,7 @@ \subsubsection*{Rules for the \class{SequenceConstraint} class} \printValid{The \sbol{object} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceConstraint})} \subsubsection*{Rules for the \class{Model} class} -\setcounter{sbolCtr}{11001} +\setcounter{sbolCtr}{11201} \printValid{A \sbol{Model} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Model})} @@ -266,7 +262,7 @@ \subsubsection*{Rules for the \class{Model} class} \printWarning{The \sbol{source} property MUST specify the location of the model source file in the specified \sbol{language} using the specified \sbol{framework}. (Reference: \sec{sec:Model})} \subsubsection*{Rules for the \class{ModuleDefinition} class} -\setcounter{sbolCtr}{11101} +\setcounter{sbolCtr}{11301} \printValid{A \sbol{ModuleDefinition} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:ModuleDefinition})} @@ -282,8 +278,16 @@ \subsubsection*{Rules for the \class{ModuleDefinition} class} \printModeling{Each \sbol{URI} in the set of \sbol{models} SHOULD reference a \sbol{Model} object. (Reference: \sec{sec:ModuleDefinition})} +\subsubsection*{Rules for the \class{FunctionalComponent} class} +\setcounter{sbolCtr}{11401} + +\printValid{A \sbol{FunctionalComponent} MUST inherit all properties of the \sbol{ComponentInstance} class. (Reference: \sec{sec:ComponentInstance})} + +\printValid{The \sbol{direction} property of a \sbol{FUnctionalComponent} is REQUIRED and MUST contain a \sbol{URI} from \ref{tbl:functionalcomponent_directions}. +(Reference: \sec{sec:FunctionalComponent})} + \subsubsection*{Rules for the \class{Module} class} -\setcounter{sbolCtr}{11201} +\setcounter{sbolCtr}{11501} \printValid{A \sbol{Module} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:Module})} @@ -292,7 +296,7 @@ \subsubsection*{Rules for the \class{Module} class} \printValid{The \sbolmult{mapsTos:M}{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects. (Reference: \sec{sec:Module})} \subsubsection*{Rules for the \class{Interaction} class} -\setcounter{sbolCtr}{11401} +\setcounter{sbolCtr}{11601} \printValid{A \sbol{Interaction} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:Interaction})} @@ -303,7 +307,7 @@ \subsubsection*{Rules for the \class{Interaction} class} \printValid{The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects. (Reference: \sec{sec:Interaction})} \subsubsection*{Rules for the \class{Participation} class} -\setcounter{sbolCtr}{11501} +\setcounter{sbolCtr}{11701} \printValid{A \sbol{Participation} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Participation})} @@ -314,7 +318,7 @@ \subsubsection*{Rules for the \class{Participation} class} \printModeling{A least one role in the set of \sbolmult{roles:P}{roles} SHOULD be a \sbol{URI} from the participant role branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Participation})} \subsubsection*{Rules for the \class{Collection} class} -\setcounter{sbolCtr}{11601} +\setcounter{sbolCtr}{11801} \printValid{A \sbol{Collection} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} @@ -323,7 +327,7 @@ \subsubsection*{Rules for the \class{Collection} class} \printModeling{Each \sbol{URI} in the set of \sbol{members} SHOULD reference a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} \subsubsection*{Rules for the \class{Annotation} class} -\setcounter{sbolCtr}{11701} +\setcounter{sbolCtr}{11901} \printValid{The \sbol{name} property is REQUIRED, and it has data type \sbol{QName}. (Reference: \sec{sec:Annotations})} @@ -336,7 +340,7 @@ \subsubsection*{Rules for the \class{Annotation} class} \printValid{The \sbol{annotations} property is an OPTIONAL set for a \sbol{NestedAnnotations} object, and each member is of data type \sbol{Annotation}. (Reference: \sec{sec:Annotations})} \subsubsection*{Rules for the \class{GenericTopLevel} class} -\setcounter{sbolCtr}{11801} +\setcounter{sbolCtr}{12001} \printValid{A \sbol{GenericTopLevel} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:GenericTopLevel})} From ec50952c6f0bf890f85105a5950208d78b7f2bcd Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Tue, 2 Jun 2015 16:47:49 +0000 Subject: [PATCH 245/317] Update on Overleaf. --- apdx-validation.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index f09ea9ce..4a9c0848 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -180,7 +180,7 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{A \sbol{MapsTo} MUST inherit all properties of the \sbol{Identified} class. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{local} property of a \sbol{Mapsthe is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} +\printValid{The \sbol{local} property of a \sbol{MapsTo} that is contained by the is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} \printValid{The \sbol{refinement} property is a REQUIRED \sbol{URI} for \sbol{MapsTo} objects which MUST be one of the following: \url{http://sbols.org/v2\#useRemote}, From 0e701d83729f8d68478a4c96248e44228e5d4010 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Tue, 2 Jun 2015 16:47:54 +0000 Subject: [PATCH 246/317] Update on Overleaf. --- apdx-validation.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 4a9c0848..adf16f56 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -180,7 +180,7 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{A \sbol{MapsTo} MUST inherit all properties of the \sbol{Identified} class. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{local} property of a \sbol{MapsTo} that is contained by the is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} +\printValid{The \sbol{local} property of a \sbol{MapsTo} that is contained by a the is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} \printValid{The \sbol{refinement} property is a REQUIRED \sbol{URI} for \sbol{MapsTo} objects which MUST be one of the following: \url{http://sbols.org/v2\#useRemote}, From 10b6be70c46b28a1bb36730aeddcd1460be88bea Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Tue, 2 Jun 2015 16:48:03 +0000 Subject: [PATCH 247/317] Update on Overleaf. --- apdx-validation.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index adf16f56..df0b4358 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -180,7 +180,7 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{A \sbol{MapsTo} MUST inherit all properties of the \sbol{Identified} class. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{local} property of a \sbol{MapsTo} that is contained by a the is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} +\printValid{The \sbol{local} property of a \sbol{MapsTo} that is contained by a \sbol{ComponentDefinitionthe is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} \printValid{The \sbol{refinement} property is a REQUIRED \sbol{URI} for \sbol{MapsTo} objects which MUST be one of the following: \url{http://sbols.org/v2\#useRemote}, From ea650f5411aba216003db63e4cac672ee0698ad5 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Tue, 2 Jun 2015 16:48:08 +0000 Subject: [PATCH 248/317] Update on Overleaf. --- apdx-validation.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index df0b4358..228e73e1 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -180,7 +180,7 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{A \sbol{MapsTo} MUST inherit all properties of the \sbol{Identified} class. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{local} property of a \sbol{MapsTo} that is contained by a \sbol{ComponentDefinitionthe is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} +\printValid{The \sbol{local} property of a \sbol{MapsTo} that is contained by a \sbol{ComponentDefinition}the is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} \printValid{The \sbol{refinement} property is a REQUIRED \sbol{URI} for \sbol{MapsTo} objects which MUST be one of the following: \url{http://sbols.org/v2\#useRemote}, From 6b7c1b13d92e03021ed68facec53e96c577b2934 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 2 Jun 2015 11:47:16 -0500 Subject: [PATCH 249/317] reviewed overview --- model.tex | 6 +++--- overview.tex | 35 +++++++++++++++++++---------------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/model.tex b/model.tex index ab39af03..4e5f6660 100644 --- a/model.tex +++ b/model.tex @@ -678,9 +678,9 @@ \subsubsection{SequenceAnnotation} The \sbol{locations} property is a REQUIRED set of one or more \sbol{Location} objects that indicate which \sbol{elements} of a \sbol{Sequence} are described by the \sbol{SequenceAnnotation}. \Rtodo{Need somebody to make sure I didn't screw this up. -JSB} -Allowing multiple \sbol{Location} objects on a single \sbol{SequenceAnnotation} is intended to allow representation of a component with gaps in its encoding (e.g., encoded across a set of exons with interspersed introns). -As such, the \sbol{Location} objects of a single SHOULD NOT specify overlapping regions, since it is not clear what this means. -There is no such concern with different \sbol{SequenceAnnotation} objects, however, which can easily overlap in \sbol{Location}. +Allowing multiple \sbol{Location} objects on a single \sbol{SequenceAnnotation} is intended to allow representation of discontinuous ranges (e.g., a component encoded across a set of exons with interspersed introns). +As such, the \sbol{Location} objects of a single SHOULD NOT specify overlapping regions, since it is not clear what this would mean. +There is no such concern with different \sbol{SequenceAnnotation} objects, however, which can freely overlap in \sbol{Location} (e.g., specifying overlapping linkers for sequence assembly). \paragraph{The \sbolheading{component} property}\label{sec:component} The \sbol{component} property is OPTIONAL and has a data type of \sbol{URI}. This \sbol{URI} MUST refer to a \sbol{Component} that is contained by the same parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. In this way, the properties of the \sbol{SequenceAnnotation}, such as its \sbol{description} and \sbol{locations}, are associated with part of the substructure of its \sbol{ComponentDefinition}. A \sbol{SequenceAnnotation} MUST NOT refer to the same \sbol{Component} as another \sbol{SequenceAnnotation}. diff --git a/overview.tex b/overview.tex index 4a55baa6..eeca25ad 100644 --- a/overview.tex +++ b/overview.tex @@ -2,30 +2,29 @@ \section{Overview of SBOL} % % ----------------------------------------------------------------------------- -\Rtodo{This section needs review by someone not named John or Chris} - Synthetic biology designs can be described using: \begin{itemize} -\item Structural terms, e.g., a set of annotated sequences or information about its chemical makeup. -\item Functional terms, e.g., the way that components might interact with each other and the overall behavior. +\item Structural terms, e.g., a set of annotated sequences or information about the chemical makeup of components. +\item Functional terms, e.g., the way that components might interact with each other and the overall behavior of a design. \end{itemize} -In broad strokes, SBOL 1.1 focuses on physical, structural information, whereas SBOL 2.0 includes functional aspects. The physical information about a designed genetic circuit includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic circuits to be defined unambiguously, and reused in other designs. SBOL 2.0 extends SBOL 1.1 in several ways: it extends physical descriptions to include entities beyond DNA sequences, and it allows for functional descriptions of the design. +In broad strokes, the prior SBOL 1.1 standard focused on physical, structural information, whereas SBOL 2.0 extends to also include functional aspects. +The physical information about a designed genetic construct includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic constructs to be defined unambiguously, and reused in other designs. SBOL 2.0 extends SBOL 1.1 in several ways: it extends physical descriptions to include entities beyond DNA sequences, and it allows for functional descriptions of the design. -As an example, consider the design of an expression cassette, such as the one found in the plasmid pUC18~\cite{L08752.1}. This device that is designed to detect successful versus unsuccessful molecular cloning. +As an example, consider the design of an expression cassette, such as the one found in the plasmid pUC18~\cite{L08752.1}. This device is designed to detect successful versus unsuccessful molecular cloning. As an overall system, the device is designed to grow either blue-colored (unsuccessful) or white-colored (successful) colonies in the presence of IPTG and the chemical X-gal. Internally, the device has a number of parts, including a promoter, the lac repressor binding site, and the lacZ coding sequence. These parts have specific component-level interactions with IPTG and X-gal, as well as native host gene products, transcriptional machinery and translational machinery that collectively cause the desired system-level behavior. -Knowledge of how such a device functions within the context of a host and how it might be adapted to new experimental applications is currently passed on through working with fellow scientists or reading articles in papers and books. -But there is no systematic way to communicate the integration of sequences with functional designs, so users typically have to look in many different places to develop an understanding of this system. -The SBOL standard allows designers to describe these functional characteristics and connect them to the physical parts and sequences that make up the design. +Knowledge of how such a device functions within the context of a host and how it might be adapted to new experimental applications has generally been passed on through working with fellow scientists or reading articles in papers and books. +But there was no systematic way to communicate the integration of sequences with functional designs, so users typically had to look in many different places to develop an understanding of this system. +The SBOL 2.0 standard allows designers to describe these functional characteristics and connect them to the physical parts and sequences that make up the design. -SBOL includes two main classes that match the structural/functional distinction above: +SBOL 2.0 includes two main classes that match the structural/functional distinction above: \begin{itemize} -\item The \sbol{ComponentDefinition} object describes the physical aspects of the designed system, such as the DNA or RNA sequences and the physical relationships among sub-components. -\item The \sbol{ModuleDefinition} object describes the local interactions of the designed system, such as specific binding relationships and repression and activation relationships. +\item The \sbol{ComponentDefinition} object describes the physical aspects of the designed system, such as the DNA or RNA sequences and the physical relationships among sub-components, such as one sequence containing another as a sub-sequence. +\item The \sbol{ModuleDefinition} object describes interactions of the designed system, such as specific binding relationships and repression and activation relationships. \end{itemize} -Figure 1 shows a simplified view of these classes, as well as other helper classes in SBOL. To continue with the pUC18 example, the description would begin with a top-level \sbol{ModuleDefinition}. +\ref{images:overview1} shows a simplified view of these classes, as well as other helper classes in SBOL. To continue with the pUC18 example, the description would begin with a top-level \sbol{ModuleDefinition}. The \sbol{ModuleDefinition} specifies the structural elements that make up the cassette by referencing a number of \sbol{ComponentDefinition} objects. These would include the DNA component for the promoter and the small molecule component for IPTG, for example. The \sbol{ComponentDefinition} objects can be organized hierarchically. For example, the plasmid \sbol{ComponentDefinition} may reference \sbol{ComponentDefinition}s for the promoter, coding sequence, etc. Each \sbol{ComponentDefinition} object can also include the actual \sbol{Sequence} information (if available), as well as \sbol{SequenceAnnotation} objects that identify the locations of the promoters, coding sequences, etc., on the \sbol{Sequence}. @@ -39,7 +38,7 @@ \section{Overview of SBOL} \end{center} \end{figure} -Whereas Figure~\ref{images:overview1} provides a broad overview of SBOL, Figure~\ref{images:overview2} provides a detailed, implementation-level overview of the class structure for the SBOL 2.0 data model. This figure relies on the semantics of the \emph{Unified Modeling Language} (UML), which will be presented in more detail in the next section. Figure 2 distinguishes between \emph{top level} classes, in green, and other supporting classes (note that Figure 1 also includes all of the top level classes). In Figure 2, dashed arcs represent "refersTo", whereas a solid arrow represents ownership. In UML, the meaning of ownership is that if a parent class is deleted, so are all of its owned children. Thus, a \sbol{Collection} does not own its +Whereas \ref{images:overview1} provides a broad overview of SBOL, \ref{images:overview2} provides a detailed, implementation-level overview of the class structure for the SBOL 2.0 data model. This figure relies on the semantics of the \emph{Unified Modeling Language} (UML), which will be presented in more detail in the next section. \ref{images:overview2} distinguishes between \emph{top level} classes, in green, and other supporting classes (note that \ref{images:overview1} also includes all of the top level classes). In \ref{images:overview2}, dashed arcs represent "refersTo", whereas a solid arrow represents ownership. In UML, the meaning of ownership is that if a parent class is deleted, so are all of its owned children. Thus, a \sbol{Collection} does not own its \sbol{ComponentDefinition} objects, because these can stand on their own. All of the supporting classes (in orange) must be owned by some top-level class, directly or indirectly. % Figure~\ref{images:overview2} provides a more detailed view the the class structure for the SBOL 2.0 data model. The main, or \emph{top level} classes, are \sbol{Collection}, \sbol{ComponentDefinition}, sbol{Sequence}, \sbol{ModuleDefinition}, and \sbol{Model}. The key distinction of these classes is that they can stand alone and be referenced by other top level objects (see the dashed arrows between the green boxes). The purpose of these classes is described above. Each of these classes is assisted in their purpose by several \emph{child} classes. The key distinction of a child object is that it is owned by its parent object, and if that parent object is removed, so is the child object. This ownership is indicated using the solid arrows in the figure. For example, a \sbol{ComponentDefinition} owns its \sbol{SequenceAnnotation}s. @@ -52,7 +51,11 @@ \section{Overview of SBOL} \end{center} \end{figure} -Another important difference between the figures is to more appropriately connect the functional side (modules) to the physical side (components). This is accomplished via the class \sbol{FunctionalComponent}. This class allows modules to own their components instances, and yet also allows the physical descriptions (in \sbol{ComponentDefinition}s) to stand on their own. In a similar manner, the ability to have hierarchies of either functional or physical components shown in Figure~\ref{images:overview1} must be broken apart, so that sub-components can be used in multiple functional modules or multiple physical components. Thus, instead of the arc from \sbol{ModuleDefinition} to itself as in Figure~\ref{images:overview1}, our implementation actually divides this notion into two classes, \sbol{ModuleDefinition} and \sbol{Module}. Therefore, a \sbol{ModuleDefinition} does not own the \sbol{ModuleDefinition}s that it uses, but instead it refers to them using the \sbol{Module} objects that it does own. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, SBOL 2.0 provides a few other additional helper classes such as \sbol{Location} that generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint} that generalizes the relative positioning information among \sbol{Component}s. There is also +Another important difference between the figures is to more appropriately describe the connection of the functional side (modules) to the physical side (components). +This is accomplished via the class \sbol{FunctionalComponent}. This class allows modules to own their components instances, and yet also allows the physical descriptions (in \sbol{ComponentDefinition}s) to stand on their own. +In a similar manner, the ability to have hierarchies of either functional or physical components shown in \ref{images:overview1} must be broken apart, so that sub-components can be used in multiple functional modules or multiple physical components. +Thus, instead of the arc from \sbol{ModuleDefinition} to itself as in \ref{images:overview1}, our implementation actually divides this notion into two classes, \sbol{ModuleDefinition} and \sbol{Module}. +Therefore, a \sbol{ModuleDefinition} does not own the \sbol{ModuleDefinition}s that it uses, but instead it refers to them using the \sbol{Module} objects that it does own. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, SBOL 2.0 provides a few other additional helper classes such as \sbol{Location} that generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint} that generalizes the relative positioning information among \sbol{Component}s. There is also \sbol{Participation}s, which allow \sbol {Interaction} objects to specify the roles of their participants while referencing the \sbol{FunctionalComponent}s, so that these can stand on their own. Finaly, there is the \sbol{MapsTo} class (not shown) that enables connections to be made between \sbol{Component}s and \sbol{FunctionalComponent}s at various levels of the design hierarchy. The next section provides complete definitions and details for all of these classes. -There is one final critical part of SBOL 2.0, its extension mechanism. This extension mechanism enables both a framework for application specific information, and a means to prototype representation of data whose format has not yet reached community consensus. In particular, each SBOL entity can be annotated using the \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \texttt{GenericTopLevel} entities. SBOL libraries makes these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. \ No newline at end of file +There is one final critical part of SBOL 2.0, its extension mechanism. This extension mechanism enables both a framework for application specific information, and a means to prototype representation of data whose format has not yet reached community consensus. In particular, each SBOL entity can be annotated using the \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \sbol{GenericTopLevel} entities. SBOL libraries makes these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. \ No newline at end of file From 379a59ec04c2cbf122a44589716452e24c861ca8 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Tue, 2 Jun 2015 16:48:24 +0000 Subject: [PATCH 250/317] Update on Overleaf. --- apdx-validation.tex | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apdx-validation.tex b/apdx-validation.tex index 228e73e1..f9aa4fa6 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -180,6 +180,8 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{A \sbol{MapsTo} MUST inherit all properties of the \sbol{Identified} class. (Reference: \sec{sec:MapsTo})} + + \printValid{The \sbol{local} property of a \sbol{MapsTo} that is contained by a \sbol{ComponentDefinition}the is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} \printValid{The \sbol{refinement} property is a REQUIRED \sbol{URI} for \sbol{MapsTo} objects which MUST be one of the following: From d6801ded647aecdeffcb66790ce88e456ed2c43a Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Tue, 2 Jun 2015 16:48:29 +0000 Subject: [PATCH 251/317] Update on Overleaf. --- apdx-validation.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index f9aa4fa6..89da0a3a 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -180,7 +180,7 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{A \sbol{MapsTo} MUST inherit all properties of the \sbol{Identified} class. (Reference: \sec{sec:MapsTo})} - +\printValid{The \sbol{local} property of a \sbol{MapsTo} that is contained by a \sbol{ComponentDefinition}the is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} \printValid{The \sbol{local} property of a \sbol{MapsTo} that is contained by a \sbol{ComponentDefinition}the is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} From c47033f80454170f60304c76b0b747e191df6074 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Tue, 2 Jun 2015 16:55:55 +0000 Subject: [PATCH 252/317] Update on Overleaf. --- apdx-validation.tex | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 89da0a3a..49ff07ae 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -180,9 +180,11 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{A \sbol{MapsTo} MUST inherit all properties of the \sbol{Identified} class. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{local} property of a \sbol{MapsTo} that is contained by a \sbol{ComponentDefinition}the is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} +\printValid{The \sbol{local} property of a \sbol{MapsTo} is REQUIRED and MUST contain a \external{URI} reference to a \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{local} property of a \sbol{MapsTo} that is contained by a \sbol{ComponentDefinition}the is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} +\printValid{The \sbol{local} property of a \sbol{MapsTo} that is contained by a \sbol{Component} MUST refer to another \sbol{Component} contained by the \sbol{components} property of the same parent \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} + +\printValid{The \sbol{local} property of a \sbol{MapsTo} that is contained by a \sbol{FunctionalComponent} or \sbol{Module} MUST refer to another \sbol{FunctionalComponent} contained by the \sbol{functionalComponents} property of the same parent \sbol{ModuleDefinition}. (Reference: \sec{sec:MapsTo})} \printValid{The \sbol{refinement} property is a REQUIRED \sbol{URI} for \sbol{MapsTo} objects which MUST be one of the following: \url{http://sbols.org/v2\#useRemote}, @@ -193,8 +195,6 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printWarning{When a \sbol{MapsTo} object is specified by a \sbol{ComponentInstance} object, the \sbol{remote} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the \sbol{ComponentDefinition} referred to by the \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} -\printValid{When a \sbol{MapsTo} object is specified by a \sbol{Module} object, the \sbol{local} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:MapsTo})} - \printWarning{When a \sbol{MapsTo} object is specified by a \sbol{Module} object, the \sbol{remote} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{FunctionalComponent} that is specified within the \sbol{ModuleDefinition} referred to by the \sbol{Module}. (Reference: \sec{sec:MapsTo})} % \printValid{The \sbol{ComponentInstance} referenced by the \sbol{local} property MUST have \sbol{public} access type. (Reference: \sec{sec:MapsTo})} From d252514e852ab9aada197cb4386c082ea014aa1e Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Tue, 2 Jun 2015 18:41:42 +0000 Subject: [PATCH 253/317] Update on Overleaf. --- apdx-validation.tex | 22 ++++++++++------------ model.tex | 15 ++++++++------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 49ff07ae..75d2060b 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -182,24 +182,22 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{The \sbol{local} property of a \sbol{MapsTo} is REQUIRED and MUST contain a \external{URI} reference to a \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{local} property of a \sbol{MapsTo} that is contained by a \sbol{Component} MUST refer to another \sbol{Component} contained by the \sbol{components} property of the same parent \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} +\printValid{The \sbol{local} property of a \sbol{MapsTo} MUST refer to a \sbol{ComponentInstance} with an \sbol{access} property that contains the \external{URI} \url{http://sbols.org/v2\#public}. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{local} property of a \sbol{MapsTo} that is contained by a \sbol{FunctionalComponent} or \sbol{Module} MUST refer to another \sbol{FunctionalComponent} contained by the \sbol{functionalComponents} property of the same parent \sbol{ModuleDefinition}. (Reference: \sec{sec:MapsTo})} +\printValid{If a \sbol{MapsTo} is contained by a \sbol{Component} in a \sbol{ComponentDefinition}, then the \sbol{local} property of the \sbol{MapsTo} MUST refer to another \sbol{Component} in the \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{refinement} property is a REQUIRED \sbol{URI} for \sbol{MapsTo} objects which MUST be one of the following: -\url{http://sbols.org/v2\#useRemote}, -\url{http://sbols.org/v2\#useLocal}, -\url{http://sbols.org/v2\#verifyIdentical}, and -\url{http://sbols.org/v2\#merge}. -(Reference: \sec{sec:MapsTo})} +\printValid{If a \sbol{MapsTo} is contained by a \sbol{FunctionalComponent} or \sbol{Module} in a \sbol{ModuleDefinition}, then the \sbol{local} property of the \sbol{MapsTo} MUST refer to another \sbol{FunctionalComponent} in the \sbol{ModuleDefinition}. (Reference: \sec{sec:MapsTo})} + +\printValid{The \sbol{remote} property of a \sbol{MapsTo} is REQUIRED and MUST contain a \external{URI} reference to a \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} -\printWarning{When a \sbol{MapsTo} object is specified by a \sbol{ComponentInstance} object, the \sbol{remote} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the \sbol{ComponentDefinition} referred to by the \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} +\printValid{The \sbol{remote} property of a \sbol{MapsTo} MUST refer to a \sbol{ComponentInstance} with an \sbol{access} property that contains the \external{URI} \url{http://sbols.org/v2\#public}. (Reference: \sec{sec:MapsTo})} -\printWarning{When a \sbol{MapsTo} object is specified by a \sbol{Module} object, the \sbol{remote} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{FunctionalComponent} that is specified within the \sbol{ModuleDefinition} referred to by the \sbol{Module}. (Reference: \sec{sec:MapsTo})} +\printValid{If a \sbol{MapsTo} is contained by a \sbol{ComponentInstance}, then the \sbol{remote} property of the \sbol{MapsTo} MUST refer to a \sbol{Component} in the \sbol{ComponentDefinition} that is referenced by the \sbol{definition} of the \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} -% \printValid{The \sbol{ComponentInstance} referenced by the \sbol{local} property MUST have \sbol{public} access type. (Reference: \sec{sec:MapsTo})} +\printValid{If a \sbol{MapsTo} is contained by a \sbol{Module}, then the \sbol{remote} property of the \sbol{MapsTo} MUST refer to a \sbol{FunctionalComponent} in the \sbol{ModuleDefinition} that is referenced by the \sbol{definition} of the \sbol{Module}. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{ComponentInstance} referenced by the \sbol{remote} property MUST have \sbol{public} access type. (Reference: \sec{sec:MapsTo})} +\printValid{The \sbol{refinement} property is REQUIRED and must contain a \external{URI} from \ref{tbl:mapsto_refinement}. +(Reference: \sec{sec:MapsTo})} \subsubsection*{Rules for the \class{SequenceAnnotation} class} \setcounter{sbolCtr}{10901} diff --git a/model.tex b/model.tex index 4e5f6660..ed80937b 100644 --- a/model.tex +++ b/model.tex @@ -415,7 +415,9 @@ \subsubsection*{The \sbolheading{components} property} \subsubsection*{The \sbolheading{sequenceAnnotations} property} \label{sec:sequenceAnnotations} -The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. Each \sbol{SequenceAnnotation} specifies and describes a potentially discontiguous region on the \sbol{Sequence} objects referred to by the \sbol{ComponentDefinition}. In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at the region specified by its \sbol{Location} objects (see \ref{sec:Location}). +The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. Each \sbol{SequenceAnnotation} specifies and describes a potentially discontiguous region on the \sbol{Sequence} objects referred to by the \sbol{ComponentDefinition}. + +In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at the region specified by its \sbol{Location} objects (see \ref{sec:Location}). If more than one \sbol{SequenceAnnotation} refers to a \sbol{Component} in this manner, then they MUST NOT specify conflicting regions. That is, their \sbol{Location} objects MUST NOT specify regions that have conflicting \sbol{orientation} properties or do not overlap completely. If a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, each \sbol{SequenceAnnotation} it contains with a \sbol{Range} and/or \sbol{Cut} MUST specify a region on the \sbol{elements} of this \sbol{Sequence}. For example, the \sbol{ComponentDefinition} of a eukaryotic gene could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. In order to specify the discontiguous region occupied by its CDS, this gene \sbol{ComponentDefinition} would need a \sbol{SequenceAnnotation} that contains one or more \sbol{Range} objects, each one specifying \sbol{start} and \sbol{end} positions that correspond to indices of the \sbol{elements} of its DNA \sbol{Sequence}. @@ -677,15 +679,14 @@ \subsubsection{SequenceAnnotation} \paragraph{The \sbolheading{locations} property}\label{sec:locations} The \sbol{locations} property is a REQUIRED set of one or more \sbol{Location} objects that indicate which \sbol{elements} of a \sbol{Sequence} are described by the \sbol{SequenceAnnotation}. -\Rtodo{Need somebody to make sure I didn't screw this up. -JSB} -Allowing multiple \sbol{Location} objects on a single \sbol{SequenceAnnotation} is intended to allow representation of discontinuous ranges (e.g., a component encoded across a set of exons with interspersed introns). -As such, the \sbol{Location} objects of a single SHOULD NOT specify overlapping regions, since it is not clear what this would mean. -There is no such concern with different \sbol{SequenceAnnotation} objects, however, which can freely overlap in \sbol{Location} (e.g., specifying overlapping linkers for sequence assembly). +Allowing multiple \sbol{Location} objects on a single \sbol{SequenceAnnotation} is intended to allow representation of discontinuous ranges (for example, a \sbol{Component} encoded across a set of exons with interspersed introns). +As such, the \sbol{Location} objects of a single \sbol{SequenceAnnotation} SHOULD NOT specify overlapping regions, since it is not clear what this would mean. +There is no such concern with different \sbol{SequenceAnnotation} objects, however, which can freely overlap in \sbol{Location} (for example, specifying overlapping linkers for sequence assembly). \paragraph{The \sbolheading{component} property}\label{sec:component} -The \sbol{component} property is OPTIONAL and has a data type of \sbol{URI}. This \sbol{URI} MUST refer to a \sbol{Component} that is contained by the same parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. In this way, the properties of the \sbol{SequenceAnnotation}, such as its \sbol{description} and \sbol{locations}, are associated with part of the substructure of its \sbol{ComponentDefinition}. A \sbol{SequenceAnnotation} MUST NOT refer to the same \sbol{Component} as another \sbol{SequenceAnnotation}. +The \sbol{component} property is OPTIONAL and has a data type of \sbol{URI}. This \sbol{URI} MUST refer to a \sbol{Component} that is contained by the same parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. In this way, the properties of the \sbol{SequenceAnnotation}, such as its \sbol{description} and \sbol{locations}, are associated with part of the substructure of its \sbol{ComponentDefinition}. -\LDtodo{Mike B query: ``"A SequenceAnnotation MUST NOT refer to the same Component as another SequenceAnnotation." As long as the two annotations are nonconflicting, what could possibly be the harm in this? Please explain.''} +\Rtodo{Mike B query: ``"A SequenceAnnotation MUST NOT refer to the same Component as another SequenceAnnotation." As long as the two annotations are nonconflicting, what could possibly be the harm in this? Please explain.'' Eliminated this requirement and added new requirement for non-conflicting regions when two SequenceAnnotation objects position the same Component (see the sequenceAnnotations property of ComponentDefinition) - Nic} \paragraph{Serialization} From d68eb18dcfe15b303ae5f1cc00303e43b93cedc3 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 2 Jun 2015 14:04:16 -0500 Subject: [PATCH 254/317] added format comparison image --- images/format-comparison.pdf | Bin 0 -> 63429 bytes images/format-comparison.pptx | Bin 0 -> 34042 bytes purpose.tex | 8 ++++++++ 3 files changed, 8 insertions(+) create mode 100644 images/format-comparison.pdf create mode 100644 images/format-comparison.pptx diff --git a/images/format-comparison.pdf b/images/format-comparison.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c98bd02e261a7d927aede1ba64870a92bf25e3b1 GIT binary patch literal 63429 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 k(T5obqWhaZRsm7ZQgNfPz{09zBAP5=M^ literal 0 HcmV?d00001 diff --git a/images/format-comparison.pptx b/images/format-comparison.pptx new file mode 100644 index 0000000000000000000000000000000000000000..0c47db71408fa7f7fed02bcb552043d98c27e239 GIT binary patch literal 34042 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 literal 0 HcmV?d00001 diff --git a/purpose.tex b/purpose.tex index bf896ab1..311aaa84 100644 --- a/purpose.tex +++ b/purpose.tex @@ -36,6 +36,14 @@ \section{Purpose} \end{itemize} +\begin{figure} +\centering +\includegraphics[width=5in]{images/format-comparison.pdf} +\caption{SBOL 2.0 extends prior formats to represent both structure and function of a genetic design in a single model.} +\end{figure} + +\Rtodo{Please review this new figure} + Taken together, these capabilities allow SBOL sufficient expressivity to support the description and exchange of hierarchical, modular representations of both the intended structure and function of designed biological systems. To address the need for functional descriptions in SBOL, the proposed data model adds classes for modules, interactions, and models. These classes provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the Systems Biology Markup Language (SBML)~\cite{SBML} to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. From bce4110260ebdd7f51a6303932b709161f786246 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 2 Jun 2015 14:11:19 -0500 Subject: [PATCH 255/317] remove images since apparently I ened to upload direct to overleaf --- images/format-comparison.pdf | Bin 63429 -> 0 bytes images/format-comparison.pptx | Bin 34042 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 images/format-comparison.pdf delete mode 100644 images/format-comparison.pptx diff --git a/images/format-comparison.pdf b/images/format-comparison.pdf deleted file mode 100644 index c98bd02e261a7d927aede1ba64870a92bf25e3b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63429 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 k(T5obqWhaZRsm7ZQgNfPz{09zBAP5=M^ diff --git a/images/format-comparison.pptx b/images/format-comparison.pptx deleted file mode 100644 index 0c47db71408fa7f7fed02bcb552043d98c27e239..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34042 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 From 264cf0309640d2c45620a8918991203fffa1ac7c Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Tue, 2 Jun 2015 19:14:45 +0000 Subject: [PATCH 256/317] Update on Overleaf. --- apdx-validation.tex | 6 +++--- images/format-comparison.pdf | Bin 0 -> 63429 bytes images/format-comparison.pptx | Bin 0 -> 34042 bytes 3 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 images/format-comparison.pdf create mode 100644 images/format-comparison.pptx diff --git a/apdx-validation.tex b/apdx-validation.tex index 75d2060b..0201d9a2 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -202,11 +202,11 @@ \subsubsection*{Rules for the \class{MapsTo} class} \subsubsection*{Rules for the \class{SequenceAnnotation} class} \setcounter{sbolCtr}{10901} -\printValid{A \sbol{SequenceAnnotation} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:SequenceAnnotation})} +\printValid{A \sbol{SequenceAnnotation} MUST inherit all properties of the \sbol{Identified} class. (Reference: \sec{sec:SequenceAnnotation})} -\printValid{The \sbol{locations} property is a set of \sbol{Location} objects, and it MUST include at least one \sbol{Location}. (Reference: \sec{sec:SequenceAnnotation})} +\printValid{The \sbol{locations} property of a \sbol{SequenceAnnotation} is REQUIRED and MUST contain a non-empty set of \sbol{Location} objects. (Reference: \sec{sec:SequenceAnnotation})} -\printValid{The \sbol{component} property is an OPTIONAL \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceAnnotation})} +\printValid{The \sbol{component} property is OPTIONAL and MAY contain a \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceAnnotation})} \subsubsection*{Rules for the \class{Location} class} \setcounter{sbolCtr}{11001} diff --git a/images/format-comparison.pdf b/images/format-comparison.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c98bd02e261a7d927aede1ba64870a92bf25e3b1 GIT binary patch literal 63429 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 k(T5obqWhaZRsm7ZQgNfPz{09zBAP5=M^ literal 0 HcmV?d00001 diff --git a/images/format-comparison.pptx b/images/format-comparison.pptx new file mode 100644 index 0000000000000000000000000000000000000000..0c47db71408fa7f7fed02bcb552043d98c27e239 GIT binary patch literal 34042 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 literal 0 HcmV?d00001 From 5635e7fa4f0407badb925e210306a71b93feb1a8 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Tue, 2 Jun 2015 19:15:20 +0000 Subject: [PATCH 257/317] Update on Overleaf. --- apdx-validation.tex | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 0201d9a2..8a97c4c1 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -206,7 +206,9 @@ \subsubsection*{Rules for the \class{SequenceAnnotation} class} \printValid{The \sbol{locations} property of a \sbol{SequenceAnnotation} is REQUIRED and MUST contain a non-empty set of \sbol{Location} objects. (Reference: \sec{sec:SequenceAnnotation})} -\printValid{The \sbol{component} property is OPTIONAL and MAY contain a \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceAnnotation})} +\printValid{The \sbol{component} property is OPTIONAL and MAY contain a \sbol{URI} reference to a \sbol{Component}. (Reference: \sec{sec:SequenceAnnotation})} + +\printValid{The \sbol{component} property is OPTIONAL and MAY contain a \sbol{URI} reference to a \sbol{Component}. (Reference: \sec{sec:SequenceAnnotation})} \subsubsection*{Rules for the \class{Location} class} \setcounter{sbolCtr}{11001} From 81cab148814264c7af379ec6aa7aa5cc1ba9deac Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Tue, 2 Jun 2015 20:23:00 +0000 Subject: [PATCH 258/317] Update on Overleaf. --- apdx-validation.tex | 42 +++++++++++++++++++++++++++--------------- model.tex | 2 +- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 8a97c4c1..b5262c54 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -127,7 +127,7 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printWarning{Each \external{URI} contained by the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that is consistent with its \sbolmult{types:CD}{types} property. (Reference: \sec{sec:ComponentDefinition})} -\printModeling{The \sbolmult{roles:CD}{roles} provided in \ref{tbl:componentdefinition_roles} SHOULD apply to \sbol{ComponentDefinition} objects of the corresponding \sbolmult{types:CD}{types} listed in this table. (Reference: \sec{sec:ComponentDefinition})} +\printModeling{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} SHOULD only contain a \external{URI} provided in \ref{tbl:componentdefinition_roles} if one of its \sbolmult{types:CD}{types} is cross-listed with the \external{URI}. (Reference: \sec{sec:ComponentDefinition})} \printWarning{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_roles} if it is well-described by this \external{URI}. (Reference: \sec{sec:ComponentDefinition})} @@ -149,7 +149,9 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{The \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. (Reference: \sec{sec:ComponentDefinition})} -\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{SequenceAnnotation} that includes a \sbol{Range} or \sbol{Cut} in the \sbol{sequenceAnnotations} property of the \sbol{ComponentDefinition} MUST specify a region on the \sbol{elements} of this \sbol{Sequence}. (Reference: \sec{sec:ComponentDefinition})} +\printValid{If the \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} contains two or more \sbol{SequenceAnnotation} objects that refer to the same \sbol{Component}, then their \sbol{Location} objects MUST NOT specify regions that have conflicting \sbol{orientation} properties or occupy non-overlapping positions. (Reference: \sec{sec:ComponentDefinition})} + +\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{SequenceAnnotation} that includes a \sbol{Range} and/or \sbol{Cut} in the \sbol{sequenceAnnotations} property of the \sbol{ComponentDefinition} MUST specify a region on the \sbol{elements} of this \sbol{Sequence}. (Reference: \sec{sec:ComponentDefinition})} \printValid{The \sbol{sequenceConstraints} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceConstraint} objects. (Reference: \sec{sec:ComponentDefinition})} @@ -192,11 +194,11 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{The \sbol{remote} property of a \sbol{MapsTo} MUST refer to a \sbol{ComponentInstance} with an \sbol{access} property that contains the \external{URI} \url{http://sbols.org/v2\#public}. (Reference: \sec{sec:MapsTo})} -\printValid{If a \sbol{MapsTo} is contained by a \sbol{ComponentInstance}, then the \sbol{remote} property of the \sbol{MapsTo} MUST refer to a \sbol{Component} in the \sbol{ComponentDefinition} that is referenced by the \sbol{definition} of the \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} +\printValid{If a \sbol{MapsTo} is contained by a \sbol{ComponentInstance}, then the \sbol{remote} property of the \sbol{MapsTo} MUST refer to a \sbol{Component} in the \sbol{ComponentDefinition} that is referenced by the \sbolmult{definition:CI}{definition} of the \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} -\printValid{If a \sbol{MapsTo} is contained by a \sbol{Module}, then the \sbol{remote} property of the \sbol{MapsTo} MUST refer to a \sbol{FunctionalComponent} in the \sbol{ModuleDefinition} that is referenced by the \sbol{definition} of the \sbol{Module}. (Reference: \sec{sec:MapsTo})} +\printValid{If a \sbol{MapsTo} is contained by a \sbol{Module}, then the \sbol{remote} property of the \sbol{MapsTo} MUST refer to a \sbol{FunctionalComponent} in the \sbol{ModuleDefinition} that is referenced by the \sbolmult{definition:CI}{definition} of the \sbol{Module}. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{refinement} property is REQUIRED and must contain a \external{URI} from \ref{tbl:mapsto_refinement}. +\printValid{The \sbol{refinement} property is REQUIRED and MUST contain a \external{URI} from \ref{tbl:mapsto_refinement}. (Reference: \sec{sec:MapsTo})} \subsubsection*{Rules for the \class{SequenceAnnotation} class} @@ -208,28 +210,38 @@ \subsubsection*{Rules for the \class{SequenceAnnotation} class} \printValid{The \sbol{component} property is OPTIONAL and MAY contain a \sbol{URI} reference to a \sbol{Component}. (Reference: \sec{sec:SequenceAnnotation})} -\printValid{The \sbol{component} property is OPTIONAL and MAY contain a \sbol{URI} reference to a \sbol{Component}. (Reference: \sec{sec:SequenceAnnotation})} +\printValid{The \sbol{Component} referenced by the \sbol{component} property of a \sbol{SequenceAnnotation} MUST be contained by the \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. (Reference: \sec{sec:SequenceAnnotation})} \subsubsection*{Rules for the \class{Location} class} \setcounter{sbolCtr}{11001} -\printValid{A \sbol{Location} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Location})} +\printValid{A \sbol{Location} MUST inherit all properties of the \sbol{Identified} class. (Reference: \sec{sec:Location})} -\printValid{The \sbol{orientation} property is an OPTIONAL \sbol{URI} which, if specified, MUST be one of the following: \url{http://sbols.org/v2\#inline}, -\url{http://sbols.org/v2\#reverseComplement}. +\printValid{The \sbol{orientation} property of a \sbol{Location} is OPTIONAL and MAY contain a \sbol{URI} from \ref{tbl:orientation_types}. (Reference: \sec{sec:GenericLocation})} -\printValid{A \sbol{GenericLocation} object inherits all properties of a \sbol{Location} object. (Reference: \sec{sec:GenericLocation})} +\subsubsection*{Rules for the \class{Range} class} +\setcounter{sbolCtr}{11001} -\printValid{A \sbol{Range} object inherits all properties of a \sbol{Location} object. (Reference: \sec{sec:Range})} +\printValid{A \sbol{Range} MUST inherit all properties of the \sbol{Location} class. (Reference: \sec{sec:Range})} -\printValid{The \sbol{start} property is REQUIRED for all \sbol{Range} objects, and it MUST be a positive integer. (Reference: \sec{sec:Range})} +\printValid{The \sbol{start} property of a \sbol{Range} is REQUIRED and MUST contain an \external{Integer} greater than zero. (Reference: \sec{sec:Range})} -\printValid{The \sbol{end} property is REQUIRED for all \sbol{Range} objects, and it MUST be a positive integer. (Reference: \sec{sec:Range})} +\printValid{The \sbol{end} property of a \sbol{Range} is REQUIRED and MUST contain an \external{Integer} greater than zero. (Reference: \sec{sec:Range})} -\printValid{A \sbol{Cut} object inherits all properties of a \sbol{Location} object. (Reference: \sec{sec:Cut})} +\printValid{The value of the \sbol{end} property of a \sbol{Range} MUST be greater than or equal to the value of its \sbol{start} property. (Reference: \sec{sec:Range})} + +\subsubsection*{Rules for the \class{Cut} class} +\setcounter{sbolCtr}{11001} + +\printValid{A \sbol{Cut} MUST inherit all properties of the \sbol{Location} class. (Reference: \sec{sec:Cut})} + +\printValid{The \sbol{at} property is REQUIRED and MUST contain \external{Integer} greater than or equal to zero. (Reference: \sec{sec:Cut})} + +\subsubsection*{Rules for the \class{GenericLocation} class} +\setcounter{sbolCtr}{11001} -\printValid{The \sbol{at} property is REQUIRED for all \sbol{Cut} objects, and it MUST be a non-negative integer. (Reference: \sec{sec:Cut})} +\printValid{A \sbol{GenericLocation} MUST inherit all properties of the \sbol{Location} c. (Reference: \sec{sec:GenericLocation})} \subsubsection*{Rules for the \class{SequenceConstraint} class} \setcounter{sbolCtr}{11101} diff --git a/model.tex b/model.tex index ed80937b..5ddddd2e 100644 --- a/model.tex +++ b/model.tex @@ -417,7 +417,7 @@ \subsubsection*{The \sbolheading{sequenceAnnotations} property} The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. Each \sbol{SequenceAnnotation} specifies and describes a potentially discontiguous region on the \sbol{Sequence} objects referred to by the \sbol{ComponentDefinition}. -In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at the region specified by its \sbol{Location} objects (see \ref{sec:Location}). If more than one \sbol{SequenceAnnotation} refers to a \sbol{Component} in this manner, then they MUST NOT specify conflicting regions. That is, their \sbol{Location} objects MUST NOT specify regions that have conflicting \sbol{orientation} properties or do not overlap completely. +In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at the region specified by its \sbol{Location} objects (see \ref{sec:Location}). If more than one \sbol{SequenceAnnotation} refers to a \sbol{Component} in this manner, then they MUST NOT specify conflicting regions. That is, their \sbol{Location} objects MUST NOT specify regions that have conflicting \sbol{orientation} properties or occupy non-overlapping positions. If a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, each \sbol{SequenceAnnotation} it contains with a \sbol{Range} and/or \sbol{Cut} MUST specify a region on the \sbol{elements} of this \sbol{Sequence}. For example, the \sbol{ComponentDefinition} of a eukaryotic gene could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. In order to specify the discontiguous region occupied by its CDS, this gene \sbol{ComponentDefinition} would need a \sbol{SequenceAnnotation} that contains one or more \sbol{Range} objects, each one specifying \sbol{start} and \sbol{end} positions that correspond to indices of the \sbol{elements} of its DNA \sbol{Sequence}. From 88ee1f81b54f03600509c0609c5e4bf588cc0def Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Tue, 2 Jun 2015 21:14:47 +0000 Subject: [PATCH 259/317] Update on Overleaf. --- apdx-validation.tex | 20 ++++++++++++-------- model.tex | 2 ++ purpose.tex | 2 ++ 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index b5262c54..144c3ba3 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -121,7 +121,7 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printWarning{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_types} if it is well-described by this \external{URI}. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{URI}s. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \external{URI}s. (Reference: \sec{sec:ComponentDefinition})} \printWarning{Each \external{URI} contained by the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that clarifies the potential function of the \sbol{ComponentDefinition} in a biochemical or physical context. (Reference: \sec{sec:ComponentDefinition})} @@ -131,7 +131,7 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printWarning{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_roles} if it is well-described by this \external{URI}. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{URI} references to \sbol{Sequence} objects. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \external{URI} references to \sbol{Sequence} objects. (Reference: \sec{sec:ComponentDefinition})} \printWarning{The \sbol{Sequence} objects referred to by the \sbol{sequences} property of a \sbol{ComponentDefinition} MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. (Reference: \sec{sec:ComponentDefinition})} @@ -241,12 +241,20 @@ \subsubsection*{Rules for the \class{Cut} class} \subsubsection*{Rules for the \class{GenericLocation} class} \setcounter{sbolCtr}{11001} -\printValid{A \sbol{GenericLocation} MUST inherit all properties of the \sbol{Location} c. (Reference: \sec{sec:GenericLocation})} +\printValid{A \sbol{GenericLocation} MUST inherit all properties of the \sbol{Location} class. (Reference: \sec{sec:GenericLocation})} \subsubsection*{Rules for the \class{SequenceConstraint} class} \setcounter{sbolCtr}{11101} -\printValid{A \sbol{SequenceConstraint} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:SequenceConstraint})} +\printValid{A \sbol{SequenceConstraint} MUST inherit all properties of the \sbol{Identified} class. (Reference: \sec{sec:SequenceConstraint})} + +\printValid{The \sbol{subject} property REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{Component}. (Reference: \sec{sec:SequenceConstraint})} + +\printValid{The \sbol{Component} referenced by the \sbol{subject} property of a \sbol{SequenceConstraint} MUST be contained by the \sbol{ComponentDefinition} that contains the \sbol{SequenceConstraint}. (Reference: \sec{sec:SequenceConstraint})} + +\printValid{The \sbol{object} property REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{Component}. (Reference: \sec{sec:SequenceConstraint})} + +\printValid{The \sbol{Component} referenced by the \sbol{object} property of a \sbol{SequenceConstraint} MUST be contained by the \sbol{ComponentDefinition} that contains the \sbol{SequenceConstraint}. (Reference: \sec{sec:SequenceConstraint})} \printValid{The \sbol{restriction} property is a REQUIRED \sbol{URI} which MUST be one of the following: \url{http://sbols.org/v2\#precedes}, @@ -254,10 +262,6 @@ \subsubsection*{Rules for the \class{SequenceConstraint} class} \url{http://sbols.org/v2\#oppositeOrientationAs}. (Reference: \sec{sec:SequenceConstraint})} -\printValid{The \sbol{subject} property is an REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceConstraint})} - -\printValid{The \sbol{object} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{Component} that is specified within the same \sbol{ComponentDefinition}. (Reference: \sec{sec:SequenceConstraint})} - \subsubsection*{Rules for the \class{Model} class} \setcounter{sbolCtr}{11201} diff --git a/model.tex b/model.tex index 5ddddd2e..cc298ec7 100644 --- a/model.tex +++ b/model.tex @@ -167,6 +167,8 @@ \subsubsection*{The \sbolheading{description} property} The \sbol{description} property is OPTIONAL and has a data type of \sbol{String}. This property is intended to contain a more thorough text description of an \sbol{Identified} object. +\Ctodo{Need to describe annotations property.} + \subsubsection*{Serialization} No complete serialization is defined for \sbol{Identified}, since this diff --git a/purpose.tex b/purpose.tex index 311aaa84..b2c4644b 100644 --- a/purpose.tex +++ b/purpose.tex @@ -18,6 +18,8 @@ \section{Purpose} The ultimate utility of URIs in the SBOL Standard is the ability to support flexible annotation with appropriate metadata while associating an authority with that annotation. The definition of the data model and associated format, the rules on the addition of data within the format and the representation of this in electronic data files are intended to make the SBOL Standard a useful means of promoting global data exchange between laboraties and between software programs. +\Ctodo{Need to make clear that this replaces SBOL 1.1 and all future work should use SBOL 2.0.} + This document presents the second version of SBOL. The previous version 1.1 of the SBOL standard focused on representing the structural aspects of genetic designs. Users of the standard were able to use it to echange information on DNA designs but could not represent molecules other than DNA or represent the functional aspects of their designs beyond the DNA sequences. From e71c0ec5a7bb5d63d6efdcd78119836805c4bed1 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 2 Jun 2015 16:15:04 -0500 Subject: [PATCH 260/317] working on Mike B batch 2 --- model.tex | 74 +++++++++++++++++++++++++++++++-------------------- practices.tex | 2 +- 2 files changed, 46 insertions(+), 30 deletions(-) diff --git a/model.tex b/model.tex index 5ddddd2e..a94bf84f 100644 --- a/model.tex +++ b/model.tex @@ -85,9 +85,11 @@ \subsection{Data Types} {\em Example: \external{myapp:Datasheet}} \end{itemize} -Note that, in compliance with RDF standards, URI objects are generally serialized using an \external{rdf:resource} property, e.g.: +Note that, in compliance with RDF standards, URIs are generally serialized using an \external{rdf:resource} property, e.g.: \external{rdf:resource="http://www.partsregistry.org/Part:BBa\_J23119"} +\Rtodo{Added text describing relation of URI and URL, per suggestion from Mike B. -JSB} +It is also important to realize that, as used in RDF, a URI may or may not be a resolvable URL (web address). A URI is always a unique identifier within a structured name-space. In some cases, that name is also a reference to (or within) a document, and in some cases that document can also be retrieved (e.g., through a web browser). \subsection{Identified} @@ -285,7 +287,7 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - ... + ... [\emph{properties inherited from identified}] ... [\emph{one}] ... [\emph{element}] [\emph{one}] [\emph{element}] @@ -402,7 +404,8 @@ \subsubsection*{The \sbolheading{components} property} The \sbol{components} property is OPTIONAL and MAY specify a set of \sbol{Component} objects that are contained by the \sbol{ComponentDefinition}. Note that the set of relations between \sbol{Component} and \sbol{ComponentDefinition} objects is strictly acyclic. -While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple copies of a particular part. For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \sbol{ComponentDefinition} of a CDS. +While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. +Hence, this class allows a biological design to include multiple instances of a particular part (defined by reference to the same \sbol{ComponentDefinition}). For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \sbol{ComponentDefinition} of a CDS. \LDtodo{Comment from Mike B: ``"it MUST be possible to align the elements of the latter Sequence objects to the elements of the ComponentDefinition's Sequence." Alignment comes in lossy and lossless forms. One of SBOL 1.1's practical limitations when it came to modeling real-world processes was that annotations couldn't bear an approximate resemblance to the sequences they annotated; they had to be exact substrings. If you really intend to keep this restriction in SBOL 2.0, then please use stronger language than "align," because we all use alignment tools to detect lossy near-matches (indels), so this passage might be read the wrong way. If, on the other hand, you've deliberately changed that rule, then highlight the change here, because SBOL 1.1 was pretty emphatic about its "logical consistency" rules.''} @@ -436,7 +439,7 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - ... + ... [\emph{properties inherited from identified}] ... [\emph{zero or more}] [\emph{element}] [\emph{one or more}] [\emph{elements}] [\emph{zero or more}] [\emph{elements}] @@ -551,7 +554,7 @@ \subsubsection{Component} \lstsetsbol \begin{lstlisting} - ... + ... [\emph{properties inherited from identified}] ... [\emph{one}] [\emph{element}] [\emph{one}] [\emph{element}] [\emph{zero or more}] [\emph{elements}] @@ -644,7 +647,7 @@ \subsubsection{MapsTo} \lstsetsbol \begin{lstlisting} - ... + ... [\emph{properties inherited from identified}] ... [\emph{one}] [\emph{element}] [\emph{one}] [\emph{element}] [\emph{one}] [\emph{element}] @@ -694,7 +697,7 @@ \subsubsection{SequenceAnnotation} \lstsetsbol \begin{lstlisting} - ... + ... [\emph{properties inherited from identified}] ... [\emph{zero or one}] [\emph{element}] [\emph{one or more}] ... @@ -769,7 +772,7 @@ \subsubsection{Location} \lstsetsbol \begin{lstlisting} - ... + ... [\emph{properties inherited from identified}] ... [\emph{one}] ... [\emph{element}] [\emph{one}] ... [\emph{element}] [\emph{zero or one}] [\emph{element}] @@ -803,7 +806,7 @@ \subsubsection{Location} \lstsetsbol \begin{lstlisting} - ... + ... [\emph{properties inherited from identified}] ... [\emph{one}] ... [\emph{element}] [\emph{zero or one}] [\emph{element}] @@ -834,7 +837,7 @@ \subsubsection{Location} \lstsetsbol \begin{lstlisting} - ... + ... [\emph{properties inherited from identified}] ... [\emph{zero or one}] [\emph{element}] \end{lstlisting} @@ -868,7 +871,8 @@ \subsubsection{SequenceConstraint} \paragraph{The \sbolheading{restriction} property}\label{sec:restriction} -The \sbol{restriction} property is REQUIRED and has a data type of \sbol{URI}. This property is used to indicate the type of structural restriction on the relative, sequence-based positions or orientations of the \sbol{subject} and \sbol{object} \sbol{Component} objects. The \sbol{URI} value of this property MUST come from the RECOMMENDED \sbol{URI}s in \ref{tbl:restriction_types}, or it MUST refer to an appropriate ontology term. +The \sbol{restriction} property is REQUIRED and has a data type of \sbol{URI}. This property is used to indicate the type of structural restriction on the relative, sequence-based positions or orientations of the \sbol{subject} and \sbol{object} \sbol{Component} objects. The \sbol{URI} value of this property SHOULD come from the RECOMMENDED \sbol{URI}s in \ref{tbl:restriction_types}. +\Rtodo{Per Mike B comment: changed ``MUST ... or an [ill-defined] appropriate ontology'' to SHOULD, since that's the same. -JSB} % Note: With regards to SBOL Version 1.1., this is a generalization of former \sbol{SequenceAnnotation} property \external{precedes}. @@ -894,7 +898,7 @@ \subsubsection{SequenceConstraint} \lstsetsbol \begin{lstlisting} - ... + ... [\emph{properties inherited from identified}] ... [\emph{one}] [\emph{element}] [\emph{one}] [\emph{element}] [\emph{one}] [\emph{element}] @@ -925,12 +929,12 @@ \subsection{Model} \end{figure} SBOL's \sbol{Model} objects are placeholders that point to some external modeling mechanism, with some additional meta-data to enable better reasoning about the contents of that external mechanism. -In this way, there is minimal duplication of standardization efforts and users of SBOL can specify the quantitative function of \sbol{ModuleDefinition} objects in a well-developed language of their choice. +In this way, there is minimal duplication of standardization efforts and users of SBOL can specify the quantitative function of \sbol{ModuleDefinition} objects in a language of their choice. Each \sbol{Model} object specifies the location of the actual content of a qualitative/quantitative model, the language the model is implemented with, the modeling framework and the model's role(s). \subsubsection*{ The \sbolheading{source} property}\label{sec:source} -This REQUIRED property is a URI that specifies the actual location of a qualitative or quantitative model. +This REQUIRED property is a URI that uniquely refers to a qualitative or quantitative model. \subsubsection*{ The \sbolheading{language} property}\label{sec:language} This REQUIRED property is a URI that specifies the language the model is implemented with. @@ -975,14 +979,14 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - ... + ... [\emph{properties inherited from identified}] ... [\emph{one}] [\emph{element}] [\emph{one}] [\emph{element}] [\emph{one}] [\emph{element}] \end{lstlisting} -The example below shows the serialization of a \sbol{Model} object. The model object includes information about the models of a toggle switch. The model is implemented in SBML using a continuous modelling framework. The source property shows the physical location of the SBML model, in a model repository. +The example below shows the serialization of a \sbol{Model} object. The model object includes information about the models of a toggle switch. The model is implemented in SBML using a continuous modelling framework. In this case, the source property identifies the URL that can be used to retrieve the SBML model from a model repository. \lstsetsbol \begin{lstlisting} @@ -1020,13 +1024,16 @@ \subsubsection*{The \sbolheading{roles} property}\label{sec:roles:MD} The \sbolmult{roles:MD}{roles} property is an OPTIONAL set of \sbol{URI}s that clarifies the intended function of a \sbol{ModuleDefinition} in a biological context. These terms might identify ``logical'' roles, such as ``inverter'' or ``AND gate'', or they might identify descriptive biological roles, such as ``metabolic pathway'' and ``signaling cascade,'' or might identify roles from some other manner of describing intended function. +Interpretation of the meaning of such roles is currently implementation-dependent. \subsubsection*{The \sbolheading{modules} property}\label{sec:modules} The \sbol{modules} property is OPTIONAL and MAY specify a set of \sbol{Module} objects contained by the \sbol{ModuleDefinition}. Note that the set of relations between \sbol{Module} and \sbol{ModuleDefinition} objects is strictly acyclic. -While the \sbol{ModuleDefinition} class is analogous to a blueprint or specification sheet for a system of interaction biological elements, the \sbol{Module} class represents the specific occurrence of a particular sub-system within that design. Hence, this class allows a biological design to include multiple copies of a subsystem. For example, the \sbol{ModuleDefinition} for a network of two-input repressor systems, where the particular repressors have not yet been chosen, contain multiple \sbol{Module} objects that refer to the same \sbol{URI} for the \sbol{ModuleDefinition} of an abstract two-input repressor device. +While the \sbol{ModuleDefinition} class is analogous to a blueprint or specification sheet for a system of interaction biological elements, the \sbol{Module} class represents the specific occurrence of a particular sub-system within that design. +Hence, this class allows a biological design to include multiple instances of a subsystem (defined by reference to the same \sbol{ModuleDefinition}). +For example, the \sbol{ModuleDefinition} for a network of two-input repressor systems, where the particular repressors have not yet been chosen, contain multiple \sbol{Module} objects that refer to the same \sbol{URI} for the \sbol{ModuleDefinition} of an abstract two-input repressor device. \subsubsection*{The \sbolheading{functionalComponents} property} \label{sec:functionalComponents} @@ -1039,7 +1046,8 @@ \subsubsection*{The \sbolheading{interactions} property}\label{sec:interactions} The \sbol{interactions} property is OPTIONAL and MAY specify a set of \sbol{Interaction} objects within a \sbol{ModuleDefinition}. -The \sbol{Interaction} class provides an abstract, machine-friendly representation of the functional interactions of entities within a \sbol{ModuleDefinition} (whereas a \sbol{Model} is concrete and may not be readily susceptible to machine reasoning, depending on how it is implemented). Each \sbol{Interaction} includes \sbol{Participation} entities that indicate the roles of the \sbol{FunctionalComponent} objects involved in the \sbol{Interaction} +The \sbol{Interaction} class provides an abstract, machine-friendly representation of the functional interactions of entities within a \sbol{ModuleDefinition} (whereas a \sbol{Model} of a system may not be readily susceptible to machine reasoning, depending on how it is implemented). +Each \sbol{Interaction} includes \sbol{Participation} entities that indicate the roles of the \sbol{FunctionalComponent} objects involved in the \sbol{Interaction} \subsubsection*{The \sbolheading{models} property}\label{sec:models} The \sbol{models} property is OPTIONAL and MAY specify a set of \sbol{URI}s identifying \sbol{Model} objects. @@ -1053,7 +1061,7 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - ... + ... [\emph{properties inherited from identified}] ... [\emph{zero or more}] [\emph{elements}] [\emph{zero or more}] [\emph{elements}] [\emph{zero or more}] @@ -1136,7 +1144,7 @@ \subsubsection{FunctionalComponent} \lstsetsbol \begin{lstlisting} - ... + ... [\emph{properties inherited from identified}] ... [\emph{one}] [\emph{element}] [\emph{one}] [\emph{element}] [\emph{one}] [\emph{element}] @@ -1187,6 +1195,7 @@ \subsubsection{Module} \lstsetsbol \begin{lstlisting} + ... [\emph{properties inherited from identified}] ... [\emph{one}] [\emph{element}] [\emph{zero or more}] ... @@ -1226,12 +1235,14 @@ \subsubsection{Interaction} If an \sbol{Interaction} object has multiple \sbolmult{types:I}{types} \sbol{URI}s, then they must identify synonymous terms. -Values for this URI are RECOMMENDED to be chosen from the occurring entity relationship branch of the Systems Biology Ontology (SBO), where possible. +Values for this URI are RECOMMENDED to be chosen from the occurring entity branch of the Systems Biology Ontology (SBO), where possible. +(See \url{http://www.ebi.ac.uk/sbo/main/}) \paragraph{The \sbolheading{participations} property}\label{sec:participations} -The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects, each of which identifies a the \sbolmult{roles:P}{roles} that the referenced \sbol{FunctionalComponent} plays in the interaction. +The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects, each of which identifies the \sbolmult{roles:P}{roles} that the referenced \sbol{FunctionalComponent} plays in the interaction. +\LDtodo{Should particpations be 1..n rather than 0..n? -JSB, per Mike B.} \paragraph{Serialization} @@ -1239,7 +1250,7 @@ \subsubsection{Interaction} \lstsetsbol \begin{lstlisting} - ... + ... [\emph{properties inherited from identified}] ... [\emph{one or more}] [\emph{elements}] [\emph{zero or more}] ... @@ -1247,15 +1258,16 @@ \subsubsection{Interaction} \end{lstlisting} -The example below shows an \sbol{Interaction} representing an inhibition relationship between a repressor and a promoter (omitting the details of the \sbol{Participation} objects): +The example below shows an \sbol{Interaction} representing an inhibition relationship (SBO:0000169) between a repressor (SBO:0000020, full \sbol{Participation} details shown) and a promoter: \lstsetsbol \begin{lstlisting} - - ... + + + @@ -1289,6 +1301,7 @@ \subsubsection{Participation} \sbolmult{roles:P}{roles} \sbol{URI}s, then they must identify synonymous terms. Values for this URI are RECOMMENDED to be chosen from the participant role branch of the Systems Biology Ontology (SBO) where possible. +(See \url{http://www.ebi.ac.uk/sbo/main/}) \paragraph{The \sbolheading{participant} property}\label{sec:participant} @@ -1301,7 +1314,7 @@ \subsubsection{Participation} \lstsetsbol \begin{lstlisting} - ... + ... [\emph{properties inherited from identified}] ... [\emph{zero or more}] [\emph{elements}] [\emph{one}] [\emph{element}] @@ -1344,7 +1357,7 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - ... + \emph{[properties inherited from identified]} [\emph{zero or more}] [\emph{element}] \end{lstlisting} @@ -1484,6 +1497,8 @@ \subsubsection*{Serialization} % ... % +\LDtodo{I don't see rdfType serialized in here; how is it worked? -JSB} + \lstsetsbol \begin{lstlisting} @@ -1493,7 +1508,8 @@ \subsubsection*{Serialization} ... > - ... + \emph{[properties inherited from identified]} + \emph{[any non-conflicting application-specific properties]} \end{lstlisting} diff --git a/practices.tex b/practices.tex index 4584d5c3..0b173e59 100644 --- a/practices.tex +++ b/practices.tex @@ -77,7 +77,7 @@ \subsection{Recommended Ontologies for External Terms} & roles & SO (\textit{DNA} or \textit{RNA}) & \url{http://www.sequenceontology.org} \\ & roles & CHEBI (\textit{small molecule}) & \url{https://www.ebi.ac.uk/chebi/} \\ % & roles & UniProt (if type is \textit{protein}??) \\ - \textbf{Interaction} & types & SBO (entity relationship branch) & + \textbf{Interaction} & types & SBO (occurring entity branch) & \url{http://www.ebi.ac.uk/sbo/main/} \\ \textbf{Participation} & roles & SBO (participant roles branch) & \url{http://www.ebi.ac.uk/sbo/main/} \\ From 7ce91c5ee99054998cacb0ffffbe362394492a25 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Tue, 2 Jun 2015 21:24:32 +0000 Subject: [PATCH 261/317] Update on Overleaf. --- apdx-validation.tex | 10 +++++----- purpose.tex | 12 ++++++------ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 144c3ba3..815ea0a8 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -164,7 +164,7 @@ \subsubsection*{Rules for the \class{ComponentInstance} class} \printModeling{It is RECOMMENDED that the \sbol{access} property of a \sbol{ComponentInstance} contain the \external{URI} \url{http://sbols.org/v2\#public}. (Reference: \sec{sec:ComponentInstance})} -\printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{ComponentDefinition}. (Reference: \sec{sec:ComponentInstance})} +\printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \external{URI} reference to a \sbol{ComponentDefinition}. (Reference: \sec{sec:ComponentInstance})} \printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} MUST NOT contain a \external{URI} reference to the \sbol{ComponentDefinition} that contains the \sbol{ComponentInstance}. (Reference: \sec{sec:ComponentInstance})} @@ -236,7 +236,7 @@ \subsubsection*{Rules for the \class{Cut} class} \printValid{A \sbol{Cut} MUST inherit all properties of the \sbol{Location} class. (Reference: \sec{sec:Cut})} -\printValid{The \sbol{at} property is REQUIRED and MUST contain \external{Integer} greater than or equal to zero. (Reference: \sec{sec:Cut})} +\printValid{The \sbol{at} property is REQUIRED and MUST contain an \external{Integer} greater than or equal to zero. (Reference: \sec{sec:Cut})} \subsubsection*{Rules for the \class{GenericLocation} class} \setcounter{sbolCtr}{11001} @@ -248,15 +248,15 @@ \subsubsection*{Rules for the \class{SequenceConstraint} class} \printValid{A \sbol{SequenceConstraint} MUST inherit all properties of the \sbol{Identified} class. (Reference: \sec{sec:SequenceConstraint})} -\printValid{The \sbol{subject} property REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{Component}. (Reference: \sec{sec:SequenceConstraint})} +\printValid{The \sbol{subject} property is REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{Component}. (Reference: \sec{sec:SequenceConstraint})} \printValid{The \sbol{Component} referenced by the \sbol{subject} property of a \sbol{SequenceConstraint} MUST be contained by the \sbol{ComponentDefinition} that contains the \sbol{SequenceConstraint}. (Reference: \sec{sec:SequenceConstraint})} -\printValid{The \sbol{object} property REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{Component}. (Reference: \sec{sec:SequenceConstraint})} +\printValid{The \sbol{object} property is REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{Component}. (Reference: \sec{sec:SequenceConstraint})} \printValid{The \sbol{Component} referenced by the \sbol{object} property of a \sbol{SequenceConstraint} MUST be contained by the \sbol{ComponentDefinition} that contains the \sbol{SequenceConstraint}. (Reference: \sec{sec:SequenceConstraint})} -\printValid{The \sbol{restriction} property is a REQUIRED \sbol{URI} which MUST be one of the following: +\printValid{The \sbol{restriction} property is a REQUIRED \sbol{URI} and which MUST be one of the following: \url{http://sbols.org/v2\#precedes}, \url{http://sbols.org/v2\#sameOrientationAs}, or \url{http://sbols.org/v2\#oppositeOrientationAs}. diff --git a/purpose.tex b/purpose.tex index b2c4644b..0f9914d9 100644 --- a/purpose.tex +++ b/purpose.tex @@ -7,22 +7,22 @@ \section{Purpose} % Below is my revision. Any thoughts? - Nic -Synthetic biology builds upon the techniques and successes of genetics, molecular biology and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. A common factor of these challenges is the exchange of information about designed systems between laboratories. When designing a synthetic system, synthetic biologists need to exchange information about multiple types of molecules and their planned roles in the design. Often the functional role may be associated with another type of molecule entirely, such as a small chemical, a DNA, an RNA or a Protein molecule. An example is an DNA sequence that is transcribed into a messenger RNA that contains an encoded microRNA binding site, and the messenger RNA in turn being translated into a protein molecule which is a transcription factor binding protein. Functionally the representation of the products of the designed DNA sequence need to describe the role of microRNA binding to the messenger RNA leading to possible degradation, the functional consequence of the transcription factor protein being absent leading to repression of expression of another gene and the kinetic information associated with these different elements so they can be mathematically modeled. The DNA sequence itself is thus one or two steps removed from the functional role of the designed device or circuit. +Synthetic biology builds upon the techniques and successes of genetics, molecular biology, and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. A common factor of these challenges is the exchange of information about designed systems between laboratories. When designing a synthetic system, synthetic biologists need to exchange information about multiple types of molecules and their planned roles in the design. Often the functional role may be associated with another type of molecule entirely, such as a small chemical, a DNA, an RNA or a Protein molecule. An example is an DNA sequence that is transcribed into a messenger RNA that contains an encoded microRNA binding site, and the messenger RNA in turn being translated into a protein molecule which is a transcription factor binding protein. Functionally the representation of the products of the designed DNA sequence need to describe the role of microRNA binding to the messenger RNA leading to possible degradation, the functional consequence of the transcription factor protein being absent leading to repression of expression of another gene and the kinetic information associated with these different elements so they can be mathematically modeled. The DNA sequence itself is thus one or two steps removed from the functional role of the designed device or circuit. SBOL has been designed as a standard to support synthetic biology, filling a need not satisfied by other pre-existing standards. Previous file formats such as GenBank and SwissProt represent sequence information based upon annotation of sequence features - they do not represent the functional roles or consequences of these sequences. Systems Biology Markup Language (SBML) represents reactions, pathways, and models, but does not typically represent the associated sequences. Kinetic information may be present in SBML~\cite{SBML} or mass conservation laws in other systems such as the COBRA Toolbox~\cite{COBRA}. Synthetic Biology needs a structured standard with defined ways on how to represent relevant molecules and their functional roles within the designed system, standardized rules on how such information is encoded in the file and the means to enable exchange of such data between participating laboratories as part of publications. -To help address these challenges, the Synthetic Biology Open Language (SBOL) Standard introduces a standardized format for the electronic exchange of information describing the structural and functional aspects of biological designs. +To help address these challenges, the \emph{Synthetic Biology Open Language} (SBOL) introduces a standardized format for the electronic exchange of information describing the structural and functional aspects of biological designs. The standard is designed to support the development of explicit and unambiguous data models of biological designs through the use of a well defined model on how to represent the component molecules, and their structural and functional roles in a systematic fashion. -The standard further describes rules and best practices on how to include, develop and populate this format with relevant information of essential design details. -Because the standard itself can represent information from other sources for sequence representations, reaction information and ontologies to represent biological design information, the standard uses modern information exchange techniques such as Universal Resource Identifiers (URIs). This permits the reuse of existing information without the need to repeat it, thus avoiding both redundancy and likely future information decay within shared files. +The standard further describes rules and best practices on how to include, develop, and populate this format with relevant information of essential design details. +Because the standard itself can represent information from other sources for sequence representations, reaction information and ontologies to represent biological design information, the standard uses modern information exchange techniques such as \emph{Universal Resource Identifiers} (URIs). This permits the reuse of existing information without the need to repeat it, thus avoiding both redundancy and likely future information decay within shared files. The ultimate utility of URIs in the SBOL Standard is the ability to support flexible annotation with appropriate metadata while associating an authority with that annotation. -The definition of the data model and associated format, the rules on the addition of data within the format and the representation of this in electronic data files are intended to make the SBOL Standard a useful means of promoting global data exchange between laboraties and between software programs. +The definition of the data model and associated format, the rules on the addition of data within the format and the representation of this in electronic data files are intended to make the SBOL standard a useful means of promoting global data exchange between laboratories and between software programs. \Ctodo{Need to make clear that this replaces SBOL 1.1 and all future work should use SBOL 2.0.} This document presents the second version of SBOL. The previous version 1.1 of the SBOL standard focused on representing the structural aspects of genetic designs. -Users of the standard were able to use it to echange information on DNA designs but could not represent molecules other than DNA or represent the functional aspects of their designs beyond the DNA sequences. +Users of the standard were able to use it to exchange information on DNA designs but could not represent molecules other than DNA or represent the functional aspects of their designs beyond the DNA sequences. To serve as an effective medium for the computational exchange of genetic designs, SBOL must be extended to capture more aspects of a designed system, including both structural and functional information, and the composition of complex structural and functional designs by combining simpler parts. The SBOL 2.0 data model defined in this specification thus extends the prior model to provide for addressing the most pressing needs for expanding SBOL Version 1.1: From 78c1d08a15101d7292c78c09ee25ca032264d946 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 2 Jun 2015 16:24:38 -0500 Subject: [PATCH 262/317] mike b batch 2 --- model.tex | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/model.tex b/model.tex index c36c7840..58f86356 100644 --- a/model.tex +++ b/model.tex @@ -1359,7 +1359,7 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - \emph{[properties inherited from identified]} + ... [\emph{properties inherited from identified}] ... [\emph{zero or more}] [\emph{element}] \end{lstlisting} @@ -1389,11 +1389,12 @@ \subsection{SBOL Extension Mechanism} SBOL does not attempt to represent all information about a biological system, since many things do not yet have a clear ``right way'' to be represented, such as design intent, biological context, or performance data. Instead, SBOL allows the embedding of application specific data that are not captured by the SBOL standard. Such data are optional, but can be computationally generated and exchanged via SBOL documents without getting damaged or lost. This SBOL extension mechanism is designed to allow easy incorporation within the SBOL standard once there is community agreement on data content to be exchanged. To do this, SBOL provides an ``annotation'' mechanism for attaching arbitrary information to SBOL objects, which allows SBOL models to be connected with any other models in an extensible manner. -In particular, three methods are supported for connecting the SBOL data model with other, possibly application-specific data: +In particular, several methods are supported for connecting the SBOL data model with other, possibly application-specific data: \begin{enumerate} \item Information that is ``part'' of an SBOL object (i.e., a ``filled diamond'' relationship) is annotated simply by adding non-conflicting properties and custom entries to an SBOL object. An example might be source information about the registry from which a \sbol{ComponentDefinition} was imported. \item Information that is an independent object is annotated by wrapping it inside of a \sbol{GenericTopLevel} object. An example might be a data sheet describing the performance of a \sbol{ModuleDefinition} in some particular context. \item Conversely, rather than embedding external objects in SBOL, SBOL objects can also be linked to external data. The only requirement is that some URI resolution mechanism must be available that allows the links from SBOL objects to be followed when needed. +\item Finally, just as external objects can be embedded in SBOL, external documents can embed or refer to SBOL objects. This last case needs no explicit support from this specification (it depends only on the external non-SBOL system managing its own relations to SBOL), and is included here for completeness. \end{enumerate} \subsubsection{Annotating SBOL objects} @@ -1408,6 +1409,8 @@ \subsubsection{Annotating SBOL objects} Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. The \sbol{QName} property is specified by a qualified name (\sbol{QName}), which is composed of a namespace, a prefix, and a local name. The \sbol{value} property can be a literal type (i.e., \sbol{String}, \sbol{Integer}, \sbol{Double}, \sbol{Boolean}), \sbol{URI}, or a \sbol{NestedAnnotations} object. The \sbol{NestedAnnotations} object is composed of a \sbol{nestedQName}, \sbol{nestedURI}, and an optional list of nested \sbol{annotations}. +\Ctodo{Mike B: ``I was confused when I first read this because Annotation.qName seemed to be encoding XML within XML. Then I realized that no, the XML serialized form is clean, and you just needed a place to save arbitrary annotation tag names in the deserialized data model. Please explicitly note that you have to store qNames this way because it's an XML thing, and so the qNames become tag names. It's all right there in the examples, but I had to read it a few times to get it. Every XML-related complication is another temptation for a newcomer to quit in frustration. We should make it really easy to understand the weird parts of SBOL, like here, where the tail of SBOL's serialization format seems to be wagging the dog of the abstract data model.''} + \begin{figure}[!ht] \begin{center} \includegraphics[scale=0.6]{uml/identified_annotations} @@ -1418,6 +1421,8 @@ \subsubsection{Annotating SBOL objects} \subsubsection*{Serialization} +\Ctodo{Mike B: ``Please refer to the relevant portions of the w3c XSD/XML specs when discussing prefix aliases and namespaces. Someone who isn't already familiar with how XSDs incorporate other XSDs by reference, or how XMLs exploit the types declared in XSDs, is likely to find this section very confusing. Just a few sentences summarizing what xmns:prefix really does, and why it's helpful, would help pave the way for XML newbies. Also, please note here that prefix strings are arbitrary. Some people assume that the "sbol" prefix has some special significance, when in fact it's just an alias set up by their own xmlns: decls in the document header.''} + The serialization of \sbol{Annotation} objects has the following form: \lstsetsbol @@ -1443,7 +1448,9 @@ \subsubsection*{Serialization} \end{lstlisting} The \sbol{name} property species the namespace, prefix, and localPart values. The first form is for a \sbol{literal} annotation. The second form is for a \sbol{URI} annotation. Finally, the third form is for an \sbol{NestedAnnotations} object annotation. In this last case, the \sbol{nestedQName} property specifies the nestedNamespace, nestedPrefix, and nestedLocalPart while the \sbol{nestedURI} property species the URI for the nested annotation. -The ComponentDefinition example for a promoter serialized below shows how annotations can be added to SBOL objects. Annotations are added using the relevant information from the Parts Registry. Annotation property names are qualified with the \external{http://www.partsregistry.org/} namespace, which is prefixed using \external{pr}. The first annotation is named as \external{pr:group}, indicating the iGEM group designing the promoter, and has a \sbol{String} value. The second \external{pr:experience} annotation has a \sbol{URI} value and is serialised as an RDF resource pointing to the information Web page on the Parts Registry for the promoter. The \external{pr:information} property represents a complex annotation which is a type of \external{pr:Information} and includes information about the regulatory details of the promoter using Parts Registry categories. +The ComponentDefinition example for a promoter serialized below shows how annotations can be added to SBOL objects. Annotations are added using the relevant information from the Parts Registry. Annotation property names are qualified with the \external{http://www.partsregistry.org/} namespace, which is prefixed using \external{pr}. The first annotation is named as \external{pr:group}, indicating the iGEM group designing the promoter, and has a \sbol{String} value. +The second \external{pr:experience} annotation has a \sbol{URI} value and is serialised as an RDF resource; in this case, the identifier also happens to be able to be resolved to the information Web page on the Parts Registry for the promoter. +The \external{pr:information} property represents a complex annotation which is a type of \external{pr:Information} and includes information about the regulatory details of the promoter using Parts Registry categories. \begin{figure} [ht] \lstsetsbol @@ -1510,8 +1517,8 @@ \subsubsection*{Serialization} ... > - \emph{[properties inherited from identified]} - \emph{[any non-conflicting application-specific properties]} + ... [\emph{properties inherited from identified}] ... + ... [\emph{any non-conflicting application-specific properties}] ... \end{lstlisting} From 67afbcfba6b92c7b73291286b6cdaa3853ed885c Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Tue, 2 Jun 2015 22:03:30 +0000 Subject: [PATCH 263/317] Update on Overleaf. --- apdx-validation.tex | 8 ++++---- model.tex | 35 +++++++++++++++++------------------ purpose.tex | 23 +++++++++++------------ 3 files changed, 32 insertions(+), 34 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 815ea0a8..8ccfefb1 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -256,10 +256,10 @@ \subsubsection*{Rules for the \class{SequenceConstraint} class} \printValid{The \sbol{Component} referenced by the \sbol{object} property of a \sbol{SequenceConstraint} MUST be contained by the \sbol{ComponentDefinition} that contains the \sbol{SequenceConstraint}. (Reference: \sec{sec:SequenceConstraint})} -\printValid{The \sbol{restriction} property is a REQUIRED \sbol{URI} and which MUST be one of the following: -\url{http://sbols.org/v2\#precedes}, -\url{http://sbols.org/v2\#sameOrientationAs}, or -\url{http://sbols.org/v2\#oppositeOrientationAs}. +\printValid{The \sbol{restriction} property is REQUIRED and MUST contain a \sbol{URI}. +(Reference: \sec{sec:SequenceConstraint})} + +\printModeling{The \external{URI} contained by the \sbol{restriction} property SHOULD come from \ref{tbl:restriction_types}. (Reference: \sec{sec:SequenceConstraint})} \subsubsection*{Rules for the \class{Model} class} diff --git a/model.tex b/model.tex index 58f86356..903cc8ba 100644 --- a/model.tex +++ b/model.tex @@ -77,21 +77,19 @@ \subsection{Data Types} \end{itemize} The term \sbol{literal} is used to denote an object that can be any of the four types listed above. In addition to the simple types listed above, SBOL also uses objects with types \emph{uniform resource identifier} (URI) and \emph{XML qualified name} (QName): -\Rtodo{Somebody please make sure I haven't screwed up QName and URI descriptions. -JSB} +\Rtodo{Somebody please make sure I haven't screwed up QName and URI descriptions. -JSB A QName also has a namespace to define the prefix. The localPart must be defined in this namespace. -CJM} \begin{itemize} \item URI: \url{http://www.w3.org/TR/xmlschema11-2/#anyURI}\\ {\em Example: \external{http://www.partsregistry.org/Part:BBa\_J23119}} \item QName: \url{http://www.w3.org/TR/xmlschema11-2/#QName}\\ - {\em Example: \external{myapp:Datasheet}} + {\em Example: \external{myapp:Datasheet}} where \external{myapp="http://www.myapp.org/"} namespace. \end{itemize} Note that, in compliance with RDF standards, URIs are generally serialized using an \external{rdf:resource} property, e.g.: \external{rdf:resource="http://www.partsregistry.org/Part:BBa\_J23119"} -\Rtodo{Added text describing relation of URI and URL, per suggestion from Mike B. -JSB} It is also important to realize that, as used in RDF, a URI may or may not be a resolvable URL (web address). A URI is always a unique identifier within a structured name-space. In some cases, that name is also a reference to (or within) a document, and in some cases that document can also be retrieved (e.g., through a web browser). - \subsection{Identified} \label{sec:Identified} @@ -169,7 +167,10 @@ \subsubsection*{The \sbolheading{description} property} The \sbol{description} property is OPTIONAL and has a data type of \sbol{String}. This property is intended to contain a more thorough text description of an \sbol{Identified} object. -\Ctodo{Need to describe annotations property.} +\subsubsection*{The \sbolheading{annotations} property} +\label{sec:annotations} + +The \sbol{annotations} property is OPTIONAL and MAY specify a set of \sbol{Annotation} objects that are contained by the \sbol{Identified} object. \sbol{Annotation} objects are described in more detail in Section~\ref{sec:Annotation}. \subsubsection*{Serialization} @@ -334,7 +335,7 @@ \subsubsection*{The \sbolheading{types} property} The \sbolmult{types:CD}{types} property of every \sbol{ComponentDefinition} MUST contain one or more \sbol{URI}s that MUST identify terms from appropriate ontologies, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). \ref{tbl:componentdefinition_types} provides a list of RECOMMENDED ontology terms for the \sbolmult{types:CD}{types} property and their \sbol{URI}s. -In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use that term as one of its \sbolmult{types:CD}{types}. +In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use the \external{URI} for that term as one of its \sbolmult{types:CD}{types}. Finally, if the \sbolmult{types:CD}{types} property contains multiple \sbol{URI}s, then they MUST identify synonymous terms (otherwise, it may be unclear how to interpret the terms). \LDtodo{Do we mean synonymous, or can it be weakened to non-conflicting? Query from Mike B} @@ -361,9 +362,9 @@ \subsubsection*{The \sbolheading{roles} property} The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MAY contain one or more \sbol{URI}s that MUST identify terms from ontologies that are consistent with the \sbolmult{types:CD}{types} property of the \sbol{ComponentDefinition}. For example, the \sbolmult{roles:CD}{roles} property of a DNA or RNA \sbol{ComponentDefinition} could contain \sbol{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbolmult{roles:CD}{roles} property and their \sbol{URI}s. -These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). Any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use that term as one of its \sbolmult{roles:CD}{roles}. +These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). Any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use the \external{URI} for that term as one of its \sbolmult{roles:CD}{roles}. -\LDtodo{Query from Mike B: ``In my organization, it is very common to define single components containing multiple adjacent items from table 3, the table of roles. For example, it's more common to design a part as a gene + stop + terminator than just a lonely gene. We're not alone in this. Do you want to make any recommendations for this situation?''} +\LDtodo{Query from Mike B: ``In my organization, it is very common to define single components containing multiple adjacent items from table 3, the table of roles. For example, it's more common to design a part as a gene + stop + terminator than just a lonely gene. We're not alone in this. Do you want to make any recommendations for this situation?'' ComponentDefinitions are hierarchical. I think the confusion is that what to do with a composite CD. I think we should have a term for engineered region or the like for that and explain it.} \begin{table}[ht] \begin{edtable}{tabular}{lll} @@ -930,17 +931,16 @@ \subsection{Model} \end{center} \end{figure} -SBOL's \sbol{Model} objects are placeholders that point to some external modeling mechanism, with some additional meta-data to enable better reasoning about the contents of that external mechanism. -In this way, there is minimal duplication of standardization efforts and users of SBOL can specify the quantitative function of \sbol{ModuleDefinition} objects in a language of their choice. +The purpose of the \sbol{Model} class is to serve as a placeholder for an external model and provide additional meta-data to enable better reasoning about the contents of this model. +In this way, there is minimal duplication of standardization efforts and users of SBOL can specify the quantitative function of a \sbol{ModuleDefinition} in the language of their choice. -Each \sbol{Model} object specifies the location of the actual content of a qualitative/quantitative model, the language the model is implemented with, the modeling framework and the model's role(s). +The meta-data provided by the \sbol{Model} class include the following properties: the \sbol{source} or location of the actual content of the model, the \sbol{language} in which the model is implemented, and the model's mathematical \sbol{framework}. \subsubsection*{ The \sbolheading{source} property}\label{sec:source} -This REQUIRED property is a URI that uniquely refers to a qualitative or quantitative model. +The \sbol{source} property is REQUIRED and MUST contain a \external{URI} reference to a qualitative or quantitative model. \subsubsection*{ The \sbolheading{language} property}\label{sec:language} -This REQUIRED property is a URI that specifies the language the model is implemented with. -Values for this URI are RECOMMENDED to be chosen from the EMBRACE Data and Methods (EDAM) ontology where possible. A few suggested model types and corresponding URI values are shown in \ref{tbl:model_types}. +The \sbol{language} property is REQUIRED and MUST contain a \external{URI} that specifies the language in which the model is implemented. It is RECOMMENDED that this \external{URI} refer to a term from the EMBRACE Data and Methods (EDAM) ontology. \ref{tbl:model_types} provides a list of RECOMMENDED terms from this ontology and their \external{URI}s. If the \sbol{language} property of a \sbol{Model} is well-described by one these terms, then it MUST use the \external{URI} for this term as its value. \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -952,7 +952,7 @@ \subsubsection*{ The \sbolheading{language} property}\label{sec:language} BioPAX & \url{http://identifiers.org/edam/format_3156}\\ \bottomrule \end{edtable} - \caption{Some commonly used model languages and their corresponding \sbol{URI}s.} + \caption{RECOMMENDED terms from the EDAM ontology to specify the \sbol{language} property of a \sbol{Model}.} \label{tbl:model_types} \end{table} @@ -976,7 +976,7 @@ \subsubsection*{ The \sbolheading{framework} property}\label{sec:framework} \subsubsection*{Serialization} -The serialization of \sbol{Model} objects has the following form: +The serialization of a \sbol{Model} MUST have the following form: \lstsetsbol \begin{lstlisting} @@ -988,7 +988,7 @@ \subsubsection*{Serialization} \end{lstlisting} -The example below shows the serialization of a \sbol{Model} object. The model object includes information about the models of a toggle switch. The model is implemented in SBML using a continuous modelling framework. In this case, the source property identifies the URL that can be used to retrieve the SBML model from a model repository. +The example below shows the serialization of a \sbol{Model} object that refers to a quantitative model of a genetic toggle switch. The model is implemented in the SBML \sbol{language} and adheres to a continuous modeling \sbol{framework}. Lastly, the model can be retrieved from a model repository via its \sbol{source} \external{URI}, which is a \external{URL}. \lstsetsbol \begin{lstlisting} @@ -1487,7 +1487,6 @@ \subsubsection{GenericTopLevel} Entities that have independent existence (i.e., would be another ``top level'' class) and are not recognized by the SBOL standard are loaded into these top level entities. These \sbol{GenericTopLevel} entities can thus be safely used by tools to exchange non-SBOL data embedded separately within SBOL. As with any other top level entities, \sbol{GenericTopLevel} entities may include SBOL properties such as \sbol{displayId}, \sbol{name}, \sbol{description}, etc. The type of data found in the generic entity is indicated using the \sbol{rdfType} property which is of type \sbol{QName}. - \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/generictoplevel} diff --git a/purpose.tex b/purpose.tex index 0f9914d9..ca603cf8 100644 --- a/purpose.tex +++ b/purpose.tex @@ -18,14 +18,11 @@ \section{Purpose} The ultimate utility of URIs in the SBOL Standard is the ability to support flexible annotation with appropriate metadata while associating an authority with that annotation. The definition of the data model and associated format, the rules on the addition of data within the format and the representation of this in electronic data files are intended to make the SBOL standard a useful means of promoting global data exchange between laboratories and between software programs. -\Ctodo{Need to make clear that this replaces SBOL 1.1 and all future work should use SBOL 2.0.} - This document presents the second version of SBOL. The previous version 1.1 of the SBOL standard focused on representing the structural aspects of genetic designs. Users of the standard were able to use it to exchange information on DNA designs but could not represent molecules other than DNA or represent the functional aspects of their designs beyond the DNA sequences. To serve as an effective medium for the computational exchange of genetic designs, SBOL must be extended to capture more aspects of a designed system, including both structural and functional information, and the composition of complex structural and functional designs by combining simpler parts. -The SBOL 2.0 data model defined in this specification thus extends the prior model to provide for addressing the most pressing needs for expanding SBOL Version 1.1: - +The SBOL 2.0 data model defined in this specification thus extends the prior model to provide for addressing the most pressing needs for expanding SBOL Version 1.1, in particular it can: \begin{itemize} \item represent structural components of a biological design, including DNA, RNA, proteins, small molecules and other physical components @@ -37,6 +34,7 @@ \section{Purpose} \item support rich annotations of all components, so that data required to describe a design, but not formalized in this specification can be safely exchanged \end{itemize} +Taken together, these capabilities allow SBOL sufficient expressiveness to support the description and exchange of hierarchical, modular representations of both the intended structure and function of designed biological systems. \begin{figure} \centering @@ -44,25 +42,26 @@ \section{Purpose} \caption{SBOL 2.0 extends prior formats to represent both structure and function of a genetic design in a single model.} \end{figure} -\Rtodo{Please review this new figure} - -Taken together, these capabilities allow SBOL sufficient expressivity to support the description and exchange of hierarchical, modular representations of both the intended structure and function of designed biological systems. +\Ctodo{Figure is not referenced in the text and moved to where it is referenced. -CJM} -To address the need for functional descriptions in SBOL, the proposed data model adds classes for modules, interactions, and models. These classes provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the Systems Biology Markup Language (SBML)~\cite{SBML} to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. - -\Rtodo{Added next two paragraphs to address queries from Mike B. -JSB} +To address the need for functional descriptions in SBOL, the proposed data model adds new classes to provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the \emph{Systems Biology Markup Language} (SBML)~\cite{SBML} to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module definition gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. The SBOL 2.0 specification also adds a number of measures to simplify adoption and validation of compatibility with the standard. First, the specification explicitly incorporates its serialization format into the specification, whereas SBOL 1.1 used an implicit standard tied to a reference implementation. Second, the specification includes a set of validation rules for determining compatibility of a document with SBOL 2.0, most of which are machine-verifiable. Finally, the specification includes a set of recommended best-practices likely to allow a tool to take best advantage of the standard and other compatible tools. +\Ctodo{We should add a section showing the mapping of objects from 1.1 to 2.0 using Nic's diagram.} + Care has been taken to ensure that SBOL 2.0 is backward-compatible with SBOL 1.x. The generalization of the data model does mean that many names have changed and thus an SBOL 1.x file is not a valid SBOL 2.0 file. There is, however, a direct mapping from the SBOL 1.x data model into the SBOL 2.0 data model, making it simple to automatically ``upgrade'' any SBOL 1.x file into and SBOL 2.0 file. +Therefore, SBOL 2.0 supersedes SBOL 1.1, and developers are encouraged to use it for all new software efforts. Since SBOL 2.0 can encode all data previously encoded in SBOL 1.1, developers are also encouraged to upgrade their SBOL 1.1 compliant software tools to use SBOL 2.0 data objects. + +\Rtodo{Added text above to address Swapnil's comment. Needs review. -CJM} The SBOL standard has been developed in collaboration between both ``wet'' bench scientists and ``dry'' scientific modelers and tool designers active within the Synthetic Biology community. -As with the earlier SBOL 1.1 standard this community (open for any practitioner to join) has met to discuss, argue and agree upon needs that the SBOL standard should address. -This information has then been used by developers within our community to design, develop and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects, as well as, the ability to share designs between different laboratories. +As with the earlier SBOL 1.1 standard, this community (open for any practitioner to join) has met to discuss, argue and agree upon needs that the SBOL standard should address. +This information has then been used by developers within our community to design, develop, and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects, as well as, the ability to share designs between different laboratories. The standard has also been used to develop software tools that employ the standard for developing and sharing synthetic design projects. The publication of this specification is intended to make these capabilities more widely accessible to the community of potential developers and users. \ No newline at end of file From 018f43628d08a292172bacdf779b094ca06180b4 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Wed, 3 Jun 2015 03:07:34 +0000 Subject: [PATCH 264/317] Update on Overleaf. --- apdx-validation.tex | 34 ++++++++++++++++++---------------- model.tex | 37 ++++++++++++++++++++++++------------- overview.tex | 2 +- purpose.tex | 15 +++++++++++++++ 4 files changed, 58 insertions(+), 30 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 8ccfefb1..e2a50ce5 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -133,6 +133,8 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \external{URI} references to \sbol{Sequence} objects. (Reference: \sec{sec:ComponentDefinition})} +\printModeling{Each \sbol{Sequence} object in the list of \sbol{sequences} SHOULD reference a \sbol{Sequence} object. (Reference: \sec{sec:ComponentDefinition})} + \printWarning{The \sbol{Sequence} objects referred to by the \sbol{sequences} property of a \sbol{ComponentDefinition} MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. (Reference: \sec{sec:ComponentDefinition})} \printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} @@ -221,7 +223,7 @@ \subsubsection*{Rules for the \class{Location} class} (Reference: \sec{sec:GenericLocation})} \subsubsection*{Rules for the \class{Range} class} -\setcounter{sbolCtr}{11001} +\setcounter{sbolCtr}{11101} \printValid{A \sbol{Range} MUST inherit all properties of the \sbol{Location} class. (Reference: \sec{sec:Range})} @@ -232,19 +234,19 @@ \subsubsection*{Rules for the \class{Range} class} \printValid{The value of the \sbol{end} property of a \sbol{Range} MUST be greater than or equal to the value of its \sbol{start} property. (Reference: \sec{sec:Range})} \subsubsection*{Rules for the \class{Cut} class} -\setcounter{sbolCtr}{11001} +\setcounter{sbolCtr}{11201} \printValid{A \sbol{Cut} MUST inherit all properties of the \sbol{Location} class. (Reference: \sec{sec:Cut})} \printValid{The \sbol{at} property is REQUIRED and MUST contain an \external{Integer} greater than or equal to zero. (Reference: \sec{sec:Cut})} \subsubsection*{Rules for the \class{GenericLocation} class} -\setcounter{sbolCtr}{11001} +\setcounter{sbolCtr}{11301} \printValid{A \sbol{GenericLocation} MUST inherit all properties of the \sbol{Location} class. (Reference: \sec{sec:GenericLocation})} \subsubsection*{Rules for the \class{SequenceConstraint} class} -\setcounter{sbolCtr}{11101} +\setcounter{sbolCtr}{11401} \printValid{A \sbol{SequenceConstraint} MUST inherit all properties of the \sbol{Identified} class. (Reference: \sec{sec:SequenceConstraint})} @@ -263,7 +265,7 @@ \subsubsection*{Rules for the \class{SequenceConstraint} class} (Reference: \sec{sec:SequenceConstraint})} \subsubsection*{Rules for the \class{Model} class} -\setcounter{sbolCtr}{11201} +\setcounter{sbolCtr}{11501} \printValid{A \sbol{Model} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Model})} @@ -275,12 +277,12 @@ \subsubsection*{Rules for the \class{Model} class} \printValid{The \sbol{framework} property is a REQUIRED \sbol{URI} that specifies the modeling framework. (Reference: \sec{sec:Model})} -\printModeling{The \sbol{framework} property SHOULD be a \sbol{URI} from the modeling framework branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Model})} +\printModeling{The \sbol{framework} property SHOULD be a \sbol{URI} from the modeling framework branch of the SBO. (Reference: \sec{sec:Model})} \printWarning{The \sbol{source} property MUST specify the location of the model source file in the specified \sbol{language} using the specified \sbol{framework}. (Reference: \sec{sec:Model})} \subsubsection*{Rules for the \class{ModuleDefinition} class} -\setcounter{sbolCtr}{11301} +\setcounter{sbolCtr}{11601} \printValid{A \sbol{ModuleDefinition} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:ModuleDefinition})} @@ -297,7 +299,7 @@ \subsubsection*{Rules for the \class{ModuleDefinition} class} \printModeling{Each \sbol{URI} in the set of \sbol{models} SHOULD reference a \sbol{Model} object. (Reference: \sec{sec:ModuleDefinition})} \subsubsection*{Rules for the \class{FunctionalComponent} class} -\setcounter{sbolCtr}{11401} +\setcounter{sbolCtr}{11701} \printValid{A \sbol{FunctionalComponent} MUST inherit all properties of the \sbol{ComponentInstance} class. (Reference: \sec{sec:ComponentInstance})} @@ -305,7 +307,7 @@ \subsubsection*{Rules for the \class{FunctionalComponent} class} (Reference: \sec{sec:FunctionalComponent})} \subsubsection*{Rules for the \class{Module} class} -\setcounter{sbolCtr}{11501} +\setcounter{sbolCtr}{11801} \printValid{A \sbol{Module} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:Module})} @@ -314,18 +316,18 @@ \subsubsection*{Rules for the \class{Module} class} \printValid{The \sbolmult{mapsTos:M}{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects. (Reference: \sec{sec:Module})} \subsubsection*{Rules for the \class{Interaction} class} -\setcounter{sbolCtr}{11601} +\setcounter{sbolCtr}{11901} \printValid{A \sbol{Interaction} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:Interaction})} \printValid{The \sbolmult{types:I}{types} property is a set of \sbol{URI}s, and it is REQUIRED to include at least one entry. (Reference: \sec{sec:Interaction})} -\printModeling{A least one type in the set of \sbolmult{types:I}{types} SHOULD be a \sbol{URI} from the occurring entity relationship branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Interaction})} +\printModeling{A least one type in the set of \sbolmult{types:I}{types} SHOULD be a \sbol{URI} from the occurring entity relationship branch of the SBO. (Reference: \sec{sec:Interaction})} \printValid{The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects. (Reference: \sec{sec:Interaction})} \subsubsection*{Rules for the \class{Participation} class} -\setcounter{sbolCtr}{11701} +\setcounter{sbolCtr}{12001} \printValid{A \sbol{Participation} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Participation})} @@ -333,10 +335,10 @@ \subsubsection*{Rules for the \class{Participation} class} \printValid{The \sbolmult{roles:P}{roles} property is an OPTIONAL set of \sbol{URI}s. (Reference: \sec{sec:Participation})} -\printModeling{A least one role in the set of \sbolmult{roles:P}{roles} SHOULD be a \sbol{URI} from the participant role branch of the Systems Biology Ontology (SBO). (Reference: \sec{sec:Participation})} +\printModeling{A least one role in the set of \sbolmult{roles:P}{roles} SHOULD be a \sbol{URI} from the participant role branch of the SBO. (Reference: \sec{sec:Participation})} \subsubsection*{Rules for the \class{Collection} class} -\setcounter{sbolCtr}{11801} +\setcounter{sbolCtr}{12101} \printValid{A \sbol{Collection} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} @@ -345,7 +347,7 @@ \subsubsection*{Rules for the \class{Collection} class} \printModeling{Each \sbol{URI} in the set of \sbol{members} SHOULD reference a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} \subsubsection*{Rules for the \class{Annotation} class} -\setcounter{sbolCtr}{11901} +\setcounter{sbolCtr}{12201} \printValid{The \sbol{name} property is REQUIRED, and it has data type \sbol{QName}. (Reference: \sec{sec:Annotations})} @@ -358,7 +360,7 @@ \subsubsection*{Rules for the \class{Annotation} class} \printValid{The \sbol{annotations} property is an OPTIONAL set for a \sbol{NestedAnnotations} object, and each member is of data type \sbol{Annotation}. (Reference: \sec{sec:Annotations})} \subsubsection*{Rules for the \class{GenericTopLevel} class} -\setcounter{sbolCtr}{12001} +\setcounter{sbolCtr}{12301} \printValid{A \sbol{GenericTopLevel} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:GenericTopLevel})} diff --git a/model.tex b/model.tex index 903cc8ba..0cb3734a 100644 --- a/model.tex +++ b/model.tex @@ -364,7 +364,7 @@ \subsubsection*{The \sbolheading{roles} property} \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbolmult{roles:CD}{roles} property and their \sbol{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). Any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use the \external{URI} for that term as one of its \sbolmult{roles:CD}{roles}. -\LDtodo{Query from Mike B: ``In my organization, it is very common to define single components containing multiple adjacent items from table 3, the table of roles. For example, it's more common to design a part as a gene + stop + terminator than just a lonely gene. We're not alone in this. Do you want to make any recommendations for this situation?'' ComponentDefinitions are hierarchical. I think the confusion is that what to do with a composite CD. I think we should have a term for engineered region or the like for that and explain it.} +\Ctodo{Query from Mike B: ``In my organization, it is very common to define single components containing multiple adjacent items from table 3, the table of roles. For example, it's more common to design a part as a gene + stop + terminator than just a lonely gene. We're not alone in this. Do you want to make any recommendations for this situation?'' Answer from Chris: ComponentDefinitions are hierarchical. I think the confusion is that what to do with a composite CD. I think we should have a term for engineered region or the like for that and explain it.} \begin{table}[ht] \begin{edtable}{tabular}{lll} @@ -395,7 +395,7 @@ \subsubsection*{The \sbolheading{sequences} property} If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} (see \ref{tbl:sequence_encodings}). -\LDtodo{Query from Mike B: ``"a ComponentDefinition MUST NOT refer to more than one Sequence with an IUPAC encoding...." If this is true, then how can I provide nonconflicting descriptions of a sequence at two different levels of abstraction? The example from the paragraph starting at p21 line 16 makes me think that this should be permitted. Did you really mean that "a ComponentDefinition MUST NOT refer to more than one Sequence with any single IUPAC encoding," i.e. you can't give two conflicting DNA sequences? If you really mean what it says, please provide a clarifying rationale for why e.g. I shouldn't be allowed to specify DNA, RNA, and protein sequences for a part.''} +\Ctodo{Query from Mike B: ``"a ComponentDefinition MUST NOT refer to more than one Sequence with an IUPAC encoding...." If this is true, then how can I provide nonconflicting descriptions of a sequence at two different levels of abstraction? The example from the paragraph starting at p21 line 16 makes me think that this should be permitted. Did you really mean that "a ComponentDefinition MUST NOT refer to more than one Sequence with any single IUPAC encoding," i.e. you can't give two conflicting DNA sequences? If you really mean what it says, please provide a clarifying rationale for why e.g. I shouldn't be allowed to specify DNA, RNA, and protein sequences for a part.'' Answer: Mike is does not realize that these would all be different ComponentDefinitions.} Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbolmult{types:CD}{types} property refers to a term from \ref{tbl:componentdefinition_types}, then one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this term in \ref{tbl:sequence_encodings}. Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbolmult{types:CD}{types} property MUST refer to the term from \ref{tbl:componentdefinition_types} that is cross-listed with this \sbol{encoding} in \ref{tbl:sequence_encodings}. @@ -412,9 +412,11 @@ \subsubsection*{The \sbolheading{components} property} \LDtodo{Comment from Mike B: ``"it MUST be possible to align the elements of the latter Sequence objects to the elements of the ComponentDefinition's Sequence." Alignment comes in lossy and lossless forms. One of SBOL 1.1's practical limitations when it came to modeling real-world processes was that annotations couldn't bear an approximate resemblance to the sequences they annotated; they had to be exact substrings. If you really intend to keep this restriction in SBOL 2.0, then please use stronger language than "align," because we all use alignment tools to detect lossy near-matches (indels), so this passage might be read the wrong way. If, on the other hand, you've deliberately changed that rule, then highlight the change here, because SBOL 1.1 was pretty emphatic about its "logical consistency" rules.''} -If the \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{Component} in its \sbol{components} property MUST refer to a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with the same \sbol{encoding}. -In addition, it MUST be possible to align the \sbol{elements} of the latter \sbol{Sequence} objects to the \sbol{elements} of the \sbol{ComponentDefinition}'s \sbol{Sequence}, subject to any restrictions imposed by the \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} objects that refer to the contents of the \sbol{components} property. -A DNA \sbol{ComponentDefinition}, for example, could refer to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} of ``{\tt gattaca}.'' In this case, any \sbol{Component} contained by this \sbol{ComponentDefinition} would itself need to have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} that can be aligned with ``{\tt gattaca},'' such as ``{\tt gatta}," or perhaps ``{\tt tgta}'' in the case of a \sbol{Component} that is positioned by a \sbol{SequenceAnnotation} with a \sbol{Location} \sbol{orientation} of ``reverse complement'' (see \ref{sec:Location}). +In this way, the \sbol{components} property can be used to construct a hierarchy of \sbol{ComponentDefinition} objects. If a \sbol{ComponentDefinition} in this hierarchy refers to one or more \sbol{Sequence} objects, then any . + +% If the \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{Component} in its \sbol{components} property MUST refer to a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with the same \sbol{encoding}. +% In addition, it MUST be possible to align the \sbol{elements} of the latter \sbol{Sequence} objects to the \sbol{elements} of the \sbol{ComponentDefinition}'s \sbol{Sequence}, subject to any restrictions imposed by the \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} objects that refer to the contents of the \sbol{components} property. +% A DNA \sbol{ComponentDefinition}, for example, could refer to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} of ``{\tt gattaca}.'' In this case, any \sbol{Component} contained by this \sbol{ComponentDefinition} would itself need to have a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} that has an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} that can be aligned with ``{\tt gattaca},'' such as ``{\tt gatta}," or perhaps ``{\tt tgta}'' in the case of a \sbol{Component} that is positioned by a \sbol{SequenceAnnotation} with a \sbol{Location} \sbol{orientation} of ``reverse complement'' (see \ref{sec:Location}). % Furthermore, this \sbol{Sequence} MUST have the same \external{IUPAC} \sbol{encoding} as a \sbol{Sequence} of the parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. @@ -875,7 +877,7 @@ \subsubsection{SequenceConstraint} \paragraph{The \sbolheading{restriction} property}\label{sec:restriction} The \sbol{restriction} property is REQUIRED and has a data type of \sbol{URI}. This property is used to indicate the type of structural restriction on the relative, sequence-based positions or orientations of the \sbol{subject} and \sbol{object} \sbol{Component} objects. The \sbol{URI} value of this property SHOULD come from the RECOMMENDED \sbol{URI}s in \ref{tbl:restriction_types}. -\Rtodo{Per Mike B comment: changed ``MUST ... or an [ill-defined] appropriate ontology'' to SHOULD, since that's the same. -JSB} +\Rtodo{Per Mike B comment: changed ``MUST ... or an [ill-defined] appropriate ontology'' to SHOULD, since that's the same. -JSB I'm not sure about this. I think it is MUST, as these are the only ones we allow right now. Same for all enumerated types we have defined. -CJM} % Note: With regards to SBOL Version 1.1., this is a generalization of former \sbol{SequenceAnnotation} property \external{precedes}. @@ -1167,6 +1169,8 @@ \subsubsection{FunctionalComponent} \subsubsection{Module} \label{sec:Module} +\Ctodo{Documented should be Identified in Figure below.} + \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/module} @@ -1244,7 +1248,7 @@ \subsubsection{Interaction} The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects, each of which identifies the \sbolmult{roles:P}{roles} that the referenced \sbol{FunctionalComponent} plays in the interaction. -\LDtodo{Should particpations be 1..n rather than 0..n? -JSB, per Mike B.} +\Rtodo{Should particpations be 1..n rather than 0..n? -JSB, per Mike B. I actually brought this up earlier, and I was told that we may want to be able to specify that we know there is an interaction but we don't yet know what the participants are. -CJM} \paragraph{Serialization} @@ -1399,6 +1403,7 @@ \subsection{SBOL Extension Mechanism} \subsubsection{Annotating SBOL objects} % whole set of labels for the properties defined herein +\label{sec:qName} \label{sec:QName} \label{sec:value} \label{sec:Annotation} @@ -1407,9 +1412,10 @@ \subsubsection{Annotating SBOL objects} \label{sec:nestedQName} \label{sec:nestedURI} -Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. The \sbol{QName} property is specified by a qualified name (\sbol{QName}), which is composed of a namespace, a prefix, and a local name. The \sbol{value} property can be a literal type (i.e., \sbol{String}, \sbol{Integer}, \sbol{Double}, \sbol{Boolean}), \sbol{URI}, or a \sbol{NestedAnnotations} object. The \sbol{NestedAnnotations} object is composed of a \sbol{nestedQName}, \sbol{nestedURI}, and an optional list of nested \sbol{annotations}. +Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. The \sbol{qName} property is specified by a qualified name (\sbol{QName}), which is composed of a namespace, a prefix, and a local name. The \sbol{qName} property must be stored in the data model to allow for proper serialization as described below. +The \sbol{value} property can be a literal type (i.e., \sbol{String}, \sbol{Integer}, \sbol{Double}, \sbol{Boolean}), \sbol{URI}, or a \sbol{NestedAnnotations} object. The \sbol{NestedAnnotations} object is composed of a \sbol{nestedQName}, \sbol{nestedURI}, and an optional list of nested \sbol{annotations}. -\Ctodo{Mike B: ``I was confused when I first read this because Annotation.qName seemed to be encoding XML within XML. Then I realized that no, the XML serialized form is clean, and you just needed a place to save arbitrary annotation tag names in the deserialized data model. Please explicitly note that you have to store qNames this way because it's an XML thing, and so the qNames become tag names. It's all right there in the examples, but I had to read it a few times to get it. Every XML-related complication is another temptation for a newcomer to quit in frustration. We should make it really easy to understand the weird parts of SBOL, like here, where the tail of SBOL's serialization format seems to be wagging the dog of the abstract data model.''} +\Rtodo{Mike B: ``I was confused when I first read this because Annotation.qName seemed to be encoding XML within XML. Then I realized that no, the XML serialized form is clean, and you just needed a place to save arbitrary annotation tag names in the deserialized data model. Please explicitly note that you have to store qNames this way because it's an XML thing, and so the qNames become tag names. It's all right there in the examples, but I had to read it a few times to get it. Every XML-related complication is another temptation for a newcomer to quit in frustration. We should make it really easy to understand the weird parts of SBOL, like here, where the tail of SBOL's serialization format seems to be wagging the dog of the abstract data model.'' I've added a sentence for this above. -CJM} \begin{figure}[!ht] \begin{center} @@ -1421,7 +1427,7 @@ \subsubsection{Annotating SBOL objects} \subsubsection*{Serialization} -\Ctodo{Mike B: ``Please refer to the relevant portions of the w3c XSD/XML specs when discussing prefix aliases and namespaces. Someone who isn't already familiar with how XSDs incorporate other XSDs by reference, or how XMLs exploit the types declared in XSDs, is likely to find this section very confusing. Just a few sentences summarizing what xmns:prefix really does, and why it's helpful, would help pave the way for XML newbies. Also, please note here that prefix strings are arbitrary. Some people assume that the "sbol" prefix has some special significance, when in fact it's just an alias set up by their own xmlns: decls in the document header.''} +\Rtodo{Mike B: ``Please refer to the relevant portions of the w3c XSD/XML specs when discussing prefix aliases and namespaces. Someone who isn't already familiar with how XSDs incorporate other XSDs by reference, or how XMLs exploit the types declared in XSDs, is likely to find this section very confusing. Just a few sentences summarizing what xmns:prefix really does, and why it's helpful, would help pave the way for XML newbies. Also, please note here that prefix strings are arbitrary. Some people assume that the "sbol" prefix has some special significance, when in fact it's just an alias set up by their own xmlns: decls in the document header.'' I tried to address this with text below. -CJM} The serialization of \sbol{Annotation} objects has the following form: @@ -1446,7 +1452,11 @@ \subsubsection*{Serialization} [\emph{elements}] \end{lstlisting} -The \sbol{name} property species the namespace, prefix, and localPart values. The first form is for a \sbol{literal} annotation. The second form is for a \sbol{URI} annotation. Finally, the third form is for an \sbol{NestedAnnotations} object annotation. In this last case, the \sbol{nestedQName} property specifies the nestedNamespace, nestedPrefix, and nestedLocalPart while the \sbol{nestedURI} property species the URI for the nested annotation. +The \sbol{qName} property specifies the namespace, prefix, and localPart values. The use of such qualified names is described in detail by the w3c here:\\ +\url{http://www.w3.org/TR/1999/REC-xml-names-19990114/#ns-using}\\ +Essentially, the "xmlns" statement defines the prefix string to use as an alias for the namespace. The prefix can be any arbitrary string, and its use is optional, since it simply replaces the full namespace making the serialization more readable. + +The first annotation shown above is for a \sbol{literal} annotation. The second form is for a \sbol{URI} annotation. Finally, the third form is for an \sbol{NestedAnnotations} object annotation. In this last case, the \sbol{nestedQName} property specifies the nestedNamespace, nestedPrefix, and nestedLocalPart while the \sbol{nestedURI} property species the URI for the nested annotation. The ComponentDefinition example for a promoter serialized below shows how annotations can be added to SBOL objects. Annotations are added using the relevant information from the Parts Registry. Annotation property names are qualified with the \external{http://www.partsregistry.org/} namespace, which is prefixed using \external{pr}. The first annotation is named as \external{pr:group}, indicating the iGEM group designing the promoter, and has a \sbol{String} value. The second \external{pr:experience} annotation has a \sbol{URI} value and is serialised as an RDF resource; in this case, the identifier also happens to be able to be resolved to the information Web page on the Parts Registry for the promoter. @@ -1486,7 +1496,8 @@ \subsubsection{GenericTopLevel} SBOL's \sbol{GenericTopLevel} is a top-level entity whose only purpose is to include a set of annotations as described above. Entities that have independent existence (i.e., would be another ``top level'' class) and are not recognized by the SBOL standard are loaded into these top level entities. These \sbol{GenericTopLevel} entities can thus be safely used by tools to exchange non-SBOL data embedded separately within SBOL. -As with any other top level entities, \sbol{GenericTopLevel} entities may include SBOL properties such as \sbol{displayId}, \sbol{name}, \sbol{description}, etc. The type of data found in the generic entity is indicated using the \sbol{rdfType} property which is of type \sbol{QName}. +As with any other top level entities, \sbol{GenericTopLevel} entities may include SBOL properties such as \sbol{displayId}, \sbol{name}, \sbol{description}, etc. The type of data found in the generic entity is indicated using the \sbol{rdfType} property which is of type \sbol{QName}. Again, the \sbol{rdfType} property is used to set the prefix and localPart fields during serialization. + \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/generictoplevel} @@ -1505,7 +1516,7 @@ \subsubsection*{Serialization} % ... % -\LDtodo{I don't see rdfType serialized in here; how is it worked? -JSB} +\Rtodo{I don't see rdfType serialized in here; how is it worked? -JSB It is again used for serialization. Added sentence above.} \lstsetsbol \begin{lstlisting} diff --git a/overview.tex b/overview.tex index eeca25ad..dd804f4e 100644 --- a/overview.tex +++ b/overview.tex @@ -58,4 +58,4 @@ \section{Overview of SBOL} Therefore, a \sbol{ModuleDefinition} does not own the \sbol{ModuleDefinition}s that it uses, but instead it refers to them using the \sbol{Module} objects that it does own. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, SBOL 2.0 provides a few other additional helper classes such as \sbol{Location} that generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint} that generalizes the relative positioning information among \sbol{Component}s. There is also \sbol{Participation}s, which allow \sbol {Interaction} objects to specify the roles of their participants while referencing the \sbol{FunctionalComponent}s, so that these can stand on their own. Finaly, there is the \sbol{MapsTo} class (not shown) that enables connections to be made between \sbol{Component}s and \sbol{FunctionalComponent}s at various levels of the design hierarchy. The next section provides complete definitions and details for all of these classes. -There is one final critical part of SBOL 2.0, its extension mechanism. This extension mechanism enables both a framework for application specific information, and a means to prototype representation of data whose format has not yet reached community consensus. In particular, each SBOL entity can be annotated using the \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \sbol{GenericTopLevel} entities. SBOL libraries makes these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. \ No newline at end of file +There is one final critical part of SBOL 2.0, its extension mechanism. This extension mechanism enables both a framework for application specific information, and a means to prototype representation of data whose format has not yet reached community consensus. In particular, each SBOL entity can be annotated using the \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \sbol{GenericTopLevel} entities. SBOL libraries makes these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. diff --git a/purpose.tex b/purpose.tex index ca603cf8..5d00470a 100644 --- a/purpose.tex +++ b/purpose.tex @@ -60,6 +60,21 @@ \section{Purpose} \Rtodo{Added text above to address Swapnil's comment. Needs review. -CJM} +\Ctodo{I added this to bring extensibility to the fore as I thikn it is a crtical component of SBOL 2.0. Currently it is discused too late into the document and in a technical way that may not understandable by non-technical readers - HMS.} + +As discussed previously, SBOL 2.0 allows designs to be described beyond the simple annotated DNA sequence offered in SBOL 1.1. Of equal importance in SBOL 2.0 is the explicit provision of mechanisms that allows SBOL to be easily extended~\cite{sec:Annotations}. The intent of SBOL is to allow designs of synthetic biological systems to be fully described so that designs can be reproduced. However SBOL does not currently offer a full catalog of data to allow one to achieve complete reproducibility. For example the proposed standard does not yet include environmental and host context information or details on how the performance of the design is measured. Such details can now be included in SBOL through an explicit extension mechanism. Three scenarios are envisaged for extending SBOL: + +\Ctodo{One might feel that this list probably should go to the end of the overview but I wanted somewhere to describe the use cases of extensions in plain language without introducing any comp sci technical terms, and the overview is already fairly technical. If people don't like these types of low level descriptions in the spec document which would be a rasonable concern, then I can suggest a second document that gives a non-technical description of SBOL 2.0 - HMS.} + +\begin{itemize} +\item For tool makers, the extension mechanism allows tool specific information to be added to SBOL. Such information could include tool settings specific to design that is being loaded, for example what windows should be opened or settings initialized, or encrypted proprietary information related to the company or client. +\item Use of the extension mechanism to include critical information related to the reproducibility of designs. For example, what growth media was used, what temperature were the organisms grown at, when were they harvested, was the DNA integrated into the host genome (if so here), or in a plasmid (what plasmid). +\item Non-essential information to reproducibility but nevertheless useful information for many users. There are many cases where a community of users require specific information not available in core of SBOL. Examples include visualization information, how the DNA was assembled, information on evolutionary stability, or specialist modeling information. +\end{itemize} + +The extension mechanism is therefore a critical part of SBOL 2.0 and will allow others in the community to incoroporate either their own requirements for data into SBOL or contribute to community efforts to expand the scope of SBOL. + + The SBOL standard has been developed in collaboration between both ``wet'' bench scientists and ``dry'' scientific modelers and tool designers active within the Synthetic Biology community. As with the earlier SBOL 1.1 standard, this community (open for any practitioner to join) has met to discuss, argue and agree upon needs that the SBOL standard should address. This information has then been used by developers within our community to design, develop, and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects, as well as, the ability to share designs between different laboratories. From 51d1d9c97f4c8f3bfce5e2d5936c36a5f7d7b966 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Wed, 3 Jun 2015 03:18:35 +0000 Subject: [PATCH 265/317] Update on Overleaf. --- model.tex | 2 +- purpose.tex | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/model.tex b/model.tex index 0cb3734a..bdaa438e 100644 --- a/model.tex +++ b/model.tex @@ -412,7 +412,7 @@ \subsubsection*{The \sbolheading{components} property} \LDtodo{Comment from Mike B: ``"it MUST be possible to align the elements of the latter Sequence objects to the elements of the ComponentDefinition's Sequence." Alignment comes in lossy and lossless forms. One of SBOL 1.1's practical limitations when it came to modeling real-world processes was that annotations couldn't bear an approximate resemblance to the sequences they annotated; they had to be exact substrings. If you really intend to keep this restriction in SBOL 2.0, then please use stronger language than "align," because we all use alignment tools to detect lossy near-matches (indels), so this passage might be read the wrong way. If, on the other hand, you've deliberately changed that rule, then highlight the change here, because SBOL 1.1 was pretty emphatic about its "logical consistency" rules.''} -In this way, the \sbol{components} property can be used to construct a hierarchy of \sbol{ComponentDefinition} objects. If a \sbol{ComponentDefinition} in this hierarchy refers to one or more \sbol{Sequence} objects, then any . +In this way, the \sbol{components} property can be used to construct a hierarchy of \sbol{ComponentDefinition} objects. If a \sbol{ComponentDefinition} in the hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then \sbol{elements} properties of these \sbol{Sequence} objects must be consistent with each other, such that mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding}. % If the \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{Component} in its \sbol{components} property MUST refer to a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with the same \sbol{encoding}. % In addition, it MUST be possible to align the \sbol{elements} of the latter \sbol{Sequence} objects to the \sbol{elements} of the \sbol{ComponentDefinition}'s \sbol{Sequence}, subject to any restrictions imposed by the \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} objects that refer to the contents of the \sbol{components} property. diff --git a/purpose.tex b/purpose.tex index 5d00470a..25f2e393 100644 --- a/purpose.tex +++ b/purpose.tex @@ -60,15 +60,16 @@ \section{Purpose} \Rtodo{Added text above to address Swapnil's comment. Needs review. -CJM} -\Ctodo{I added this to bring extensibility to the fore as I thikn it is a crtical component of SBOL 2.0. Currently it is discused too late into the document and in a technical way that may not understandable by non-technical readers - HMS.} +\Ctodo{I added this to bring extensibility to the fore as I thikn it is a crtical component of SBOL 2.0. Currently it is discused too late into the document and in a technical way that may not understandable by non-technical readers. The text will probably require some additional editing - HMS.} -As discussed previously, SBOL 2.0 allows designs to be described beyond the simple annotated DNA sequence offered in SBOL 1.1. Of equal importance in SBOL 2.0 is the explicit provision of mechanisms that allows SBOL to be easily extended~\cite{sec:Annotations}. The intent of SBOL is to allow designs of synthetic biological systems to be fully described so that designs can be reproduced. However SBOL does not currently offer a full catalog of data to allow one to achieve complete reproducibility. For example the proposed standard does not yet include environmental and host context information or details on how the performance of the design is measured. Such details can now be included in SBOL through an explicit extension mechanism. Three scenarios are envisaged for extending SBOL: +As discussed previously, SBOL 2.0 allows designs to be described beyond the simple annotated DNA sequence offered in SBOL 1.1. Of equal importance in SBOL 2.0 is the explicit provision of mechanisms that allows SBOL to be easily extended~\cite{sec:Annotations}. The intent of SBOL is to allow designs of synthetic biological systems to be fully described so that such designs can be reproduced. However SBOL does not currently offer a full catalog of data%Note I'm using data not metadata to avoid technical terms at this state +to allow one to achieve complete reproducibility. For example the proposed standard does not yet include environmental and host context information or details on how the performance of the design is measured. Such details can now be included in SBOL through an explicit extension mechanism. Three scenarios are envisaged for extending SBOL: -\Ctodo{One might feel that this list probably should go to the end of the overview but I wanted somewhere to describe the use cases of extensions in plain language without introducing any comp sci technical terms, and the overview is already fairly technical. If people don't like these types of low level descriptions in the spec document which would be a rasonable concern, then I can suggest a second document that gives a non-technical description of SBOL 2.0 - HMS.} +\Ctodo{One might feel that the following list probably should go to the end of the overview but I wanted somewhere to describe the use cases of extensions in plain language without introducing any comp sci technical terms, and the overview is already fairly technical. If people don't like these types of low level descriptions in the spec document which would be a reasonable concern, then I can suggest a second document that gives a non-technical description of SBOL 2.0 - HMS.} \begin{itemize} -\item For tool makers, the extension mechanism allows tool specific information to be added to SBOL. Such information could include tool settings specific to design that is being loaded, for example what windows should be opened or settings initialized, or encrypted proprietary information related to the company or client. \item Use of the extension mechanism to include critical information related to the reproducibility of designs. For example, what growth media was used, what temperature were the organisms grown at, when were they harvested, was the DNA integrated into the host genome (if so here), or in a plasmid (what plasmid). +\item For tool makers, the extension mechanism allows tool specific information to be added to SBOL. Such information could include tool settings specific to the design that is being loaded, for example what windows should be opene or settings initialized. Tool makers could also include encrypted proprietary information related to the company or client in an extension. \item Non-essential information to reproducibility but nevertheless useful information for many users. There are many cases where a community of users require specific information not available in core of SBOL. Examples include visualization information, how the DNA was assembled, information on evolutionary stability, or specialist modeling information. \end{itemize} From 8a618227ff95c7bde6e8cee63e339a549d89c7af Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Wed, 3 Jun 2015 03:33:00 +0000 Subject: [PATCH 266/317] Update on Overleaf. --- model.tex | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/model.tex b/model.tex index bdaa438e..3694b42d 100644 --- a/model.tex +++ b/model.tex @@ -410,9 +410,11 @@ \subsubsection*{The \sbolheading{components} property} While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple instances of a particular part (defined by reference to the same \sbol{ComponentDefinition}). For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \sbol{ComponentDefinition} of a CDS. -\LDtodo{Comment from Mike B: ``"it MUST be possible to align the elements of the latter Sequence objects to the elements of the ComponentDefinition's Sequence." Alignment comes in lossy and lossless forms. One of SBOL 1.1's practical limitations when it came to modeling real-world processes was that annotations couldn't bear an approximate resemblance to the sequences they annotated; they had to be exact substrings. If you really intend to keep this restriction in SBOL 2.0, then please use stronger language than "align," because we all use alignment tools to detect lossy near-matches (indels), so this passage might be read the wrong way. If, on the other hand, you've deliberately changed that rule, then highlight the change here, because SBOL 1.1 was pretty emphatic about its "logical consistency" rules.''} +\Rtodo{Comment from Mike B: ``"it MUST be possible to align the elements of the latter Sequence objects to the elements of the ComponentDefinition's Sequence." Alignment comes in lossy and lossless forms. One of SBOL 1.1's practical limitations when it came to modeling real-world processes was that annotations couldn't bear an approximate resemblance to the sequences they annotated; they had to be exact substrings. If you really intend to keep this restriction in SBOL 2.0, then please use stronger language than "align," because we all use alignment tools to detect lossy near-matches (indels), so this passage might be read the wrong way. If, on the other hand, you've deliberately changed that rule, then highlight the change here, because SBOL 1.1 was pretty emphatic about its "logical consistency" rules.'' Tried editing this section to use language other than ``align.'' Not sure if it's the right level of strength for what we want, though. - Nic} -In this way, the \sbol{components} property can be used to construct a hierarchy of \sbol{ComponentDefinition} objects. If a \sbol{ComponentDefinition} in the hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then \sbol{elements} properties of these \sbol{Sequence} objects must be consistent with each other, such that mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding}. +In this way, the \sbol{components} property can be used to construct a hierarchy of \sbol{ComponentDefinition} objects. If a \sbol{ComponentDefinition} in the hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then \sbol{elements} properties of these \sbol{Sequence} objects MUST be consistent with each other, such that mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding} (subject to any restrictions on the positions of \sbol{Component} objects that are imposed by \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} objects in the hierarchy). + +A DNA \sbol{ComponentDefinition}, for example, could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} of ``{\tt gattaca}.'' In turn, this \sbol{ComponentDefinition} could contain a \sbol{Component} that refers to a ``lower level'' \sbol{ComponentDefinition} that also refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. Consequently, the \sbol{elements} \external{String} of this ``lower level'' \sbol{Sequence} could be ``{\tt gatta}," or perhaps ``{\tt tgta}'' if the \sbol{Component} is positioned by a \sbol{SequenceAnnotation} that contains a \sbol{Location} with an \sbol{orientation} of ``reverse complement'' (see \ref{sec:Location}). % If the \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{Component} in its \sbol{components} property MUST refer to a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with the same \sbol{encoding}. % In addition, it MUST be possible to align the \sbol{elements} of the latter \sbol{Sequence} objects to the \sbol{elements} of the \sbol{ComponentDefinition}'s \sbol{Sequence}, subject to any restrictions imposed by the \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} objects that refer to the contents of the \sbol{components} property. From 7d06c2edb96f84e4b751d0f6c57eccef6eb2ed29 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 2 Jun 2015 22:38:25 -0500 Subject: [PATCH 267/317] incorporating last batch of Mike B notes --- apdx-validation.tex | 20 +++++++++++++++----- examples_serialization.tex | 4 ++++ model.tex | 2 ++ practices.tex | 30 ++++++++++++++++++++++++++---- sbol.bib | 6 +++--- serialization.tex | 2 +- 6 files changed, 51 insertions(+), 13 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index e2a50ce5..16dd8037 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -8,6 +8,8 @@ \section{Validation Rules} \Rtodo{New validation rules have been added. Needs review.} +\Ctodo{Mike B: ``I recommend reformatting the references, because they are a repeating motif in all rules, but their typographical positioning is unpredictable. Many of them linebreak awkwardly. Why not remove them from their parentheses and uniformly insert a newline before each rule's references? Then the eye can scan the references with an ergonomically friendly vertical sweep, instead of bouncing all over the page. (Sometimes I look for rules by section number, not vice versa.) It'll be prettier, too.''} + This section summarizes all the conditions that MUST be or are RECOMMENDED to be true of an SBOL Version~2 document. There are different degrees of rule strictness. @@ -51,6 +53,12 @@ \section{Validation Rules} \subsubsection*{General rules about an SBOL document} \setcounter{sbolCtr}{10101} +\LDtodo{Mike B: ``"An SBOL document MUST declare the use of the following XML Namespace: [dcterms]" +I don't think this is required by XML+XSD unless a dcterms element or attribute is actually used. The rules for Identified's serialization on p17 state that dcterms are 0..*, so maybe we should say this instead: +"An SBOL document MUST declare the use of the following XML Namespace: [dcterms] if it uses any of the tags provided by dcterms, such as title or description." +Aliasing an xmlns with a prefix, but then failing to using it int the document, is actually a lint violation. +Come to think of it, this rule is nothing but XML syntax. The rest of XML syntax isn't replicated in SBOL 2.0, so why is this rule special? Same goes for the others. If you want to include enough rules on p56 (lines 27-35) to make it obvious how to construct a header, then the spec should also have rules for the header (optional but recommended by XML, IIRC) and the root tag.''} + \printValid{An SBOL document MUST declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://sbols.org/v2\#}}. (Reference: \sec{xml-namespace}.)} @@ -233,6 +241,8 @@ \subsubsection*{Rules for the \class{Range} class} \printValid{The value of the \sbol{end} property of a \sbol{Range} MUST be greater than or equal to the value of its \sbol{start} property. (Reference: \sec{sec:Range})} +\Ctodo{Mike B: ``Might want to clarify how implementors should interpret these ranges, especially for cases of stuff that aligns to the - strand. For instance, can - strand components have end < start, because start and end are relative to the + strand?''} + \subsubsection*{Rules for the \class{Cut} class} \setcounter{sbolCtr}{11201} @@ -318,13 +328,13 @@ \subsubsection*{Rules for the \class{Module} class} \subsubsection*{Rules for the \class{Interaction} class} \setcounter{sbolCtr}{11901} -\printValid{A \sbol{Interaction} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:Interaction})} +\printValid{An \sbol{Interaction} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Interaction})} \printValid{The \sbolmult{types:I}{types} property is a set of \sbol{URI}s, and it is REQUIRED to include at least one entry. (Reference: \sec{sec:Interaction})} \printModeling{A least one type in the set of \sbolmult{types:I}{types} SHOULD be a \sbol{URI} from the occurring entity relationship branch of the SBO. (Reference: \sec{sec:Interaction})} -\printValid{The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects. (Reference: \sec{sec:Interaction})} +\printValid{The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects. (Reference: \sec{sec:Interaction})} \subsubsection*{Rules for the \class{Participation} class} \setcounter{sbolCtr}{12001} @@ -333,7 +343,7 @@ \subsubsection*{Rules for the \class{Participation} class} \printValid{The \sbol{participant} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:Participation})} -\printValid{The \sbolmult{roles:P}{roles} property is an OPTIONAL set of \sbol{URI}s. (Reference: \sec{sec:Participation})} +\printValid{The \sbolmult{roles:P}{roles} property is an OPTIONAL set of \sbol{URI}s. (Reference: \sec{sec:Participation})} \printModeling{A least one role in the set of \sbolmult{roles:P}{roles} SHOULD be a \sbol{URI} from the participant role branch of the SBO. (Reference: \sec{sec:Participation})} @@ -342,9 +352,9 @@ \subsubsection*{Rules for the \class{Collection} class} \printValid{A \sbol{Collection} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} -\printValid{The \sbol{members} property is an OPTIONAL set of \sbol{URI}s. that reference \sbol{TopLevel} objects. (Reference: \sec{sec:Collection})} +\printValid{The \sbol{members} property is an OPTIONAL set of \sbol{URI}s. that reference \sbol{TopLevel} objects. (Reference: \sec{sec:Collection})} -\printModeling{Each \sbol{URI} in the set of \sbol{members} SHOULD reference a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} +\printModeling{Each \sbol{URI} in the set of \sbol{members} SHOULD reference a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} \subsubsection*{Rules for the \class{Annotation} class} \setcounter{sbolCtr}{12201} diff --git a/examples_serialization.tex b/examples_serialization.tex index 0ee0bff4..fefcf885 100644 --- a/examples_serialization.tex +++ b/examples_serialization.tex @@ -2,6 +2,10 @@ \section{Examples of Serialization} \label{ser:examples} % ----------------------------------------------------------------------------- + +\Ctodo{Mike B: ``DNA sequences run off the page. +Historically, this has often been a problem with long DNA string datatypes that don't permit inline whitespace. They're impossible to print or justify for web presentation without breaking the validity of the document.''} + \subsection{PoPS Receiver} This example shows the serialization of the PoPS Receiver device designed by Canton and co-workers~\cite{canton-natbio-2008}. diff --git a/model.tex b/model.tex index bdaa438e..7fde97f4 100644 --- a/model.tex +++ b/model.tex @@ -226,6 +226,8 @@ \subsubsection*{Serialization} % properties inherited from \sbol{Documented}, where CLASS\_NAME is % replaced by the name of the class: +\Ctodo{Mike B: ``There is some potential for confusion because TopLevels aren't really at the TopLevel in the XML serialized form; they're one level down, beneath the RDF document root. Might want to clarify this in the relevant passages.''} + \subsection {TopLevel} \label{sec:TopLevel} \sbol{TopLevel} is an abstract class that is extended by any \sbol{Identified} class that can be found at the top level of an SBOL document or file. In other words, \sbol{TopLevel} objects are not nested inside any other object via a composite aggregation or black diamond arrow association property. Instead of nesting, composite \sbol{TopLevel} objects refer to subordinate \sbol{TopLevel} objects by their \sbol{URI}s using shared aggregation or white diamond arrow association properties. The \sbol{TopLevel} classes defined in this specification are \sbol{Sequence}, \sbol{ComponentDefinition}, \sbol{Model}, \sbol{ModuleDefinition}, \sbol{Collection}, and \sbol{GenericTopLevel} (\ref{uml:toplevel}). diff --git a/practices.tex b/practices.tex index 0b173e59..6f769ae2 100644 --- a/practices.tex +++ b/practices.tex @@ -1,5 +1,5 @@ % ----------------------------------------------------------------------------- -\section{Best Practices} +\section{Recommended Best Practices} \label{sec:bestpractices} % ----------------------------------------------------------------------------- \subsection{Use of the Version Property} @@ -17,6 +17,8 @@ \subsection{Use of the Version Property} \subsection{Compliant SBOL Objects} \label{sec:compliant} +\LDtodo{Mike B. ``If the persistentIdentity of a compliant object must end with a delim + its displayId, then a compliant object's displayId may never change. If that was your intent, I think you should state it explicitly here, to reinforce an impliciation which otherwise might go unnoticed by readers.''} + Maintaining unique identity URIs for all SBOL objects is a very challenging implementation task. To reduce the developer's burden, users of SBOL 2.0 are encouraged to follow a few simple rules when constructing the identity and related fields for SBOL objects. When these rules are followed, we say that the SBOL object is \emph{compliant}. The rules are as follows: \begin{enumerate} \item The \sbol{identity} of an SBOL object should begin with a \emph{URI prefix} that maps to a domain over which the user has control. Namely, the user can guarantee uniqueness of identities within this domain. @@ -25,9 +27,20 @@ \subsection{Compliant SBOL Objects} \item The \sbol{persistentIdentity} of a compliant child object must begin with the \sbol{persistentIdentity} of its parent object and be immediately followed by a delimiter ('/', '\#', or ':') followed by the \sbol{displayId} of the object. \item When a SBOL object is not given a \sbol{version}, the \sbol{identity} and \sbol{persistentIdentity} must be equal. \item When a SBOL object is given a \sbol{version}, the \sbol{identity} must be equal to the "\refObj{persistentIdentity}/\refObj{version}". -\item The \sbol{version} of a compliant child object must be equal to the \sbol{version} of it parent object. +\item The \sbol{version} of a compliant child object must be equal to the \sbol{version} of its parent object. \end{enumerate} +\LDtodo{Mike B: ``"The version of a compliant child object must be equal to the version of {its} parent object." +There is an alternative. Consider what happens in the following scenario: +suppose my parent object is 'dad', and its two children are 'daughter' and 'son'. +dad starts at v1.0, and likewise daughter starts at v1.0 and son is v1.0. +Now I want to revise just the son, so I give him a new haircut and I increment his version to v1.1. +Since the dad's child version changed, then dad needs to change as well, so let's increment his version to v1.1. +However, there is no reason why daughter's version should change to v1.1. Daughter is exactly the same as she was at v1.0, and retaining her old version saves us the trouble of diffing v1.0 and the identical v1.1. +In other words, version changes should be minimally promoted up the tree, but not back down to siblings and relatives if they didn't change. + +If you don't want to do it this way, I do see why, but I've found it helpful on past projects to increment versions only on the things that contain diffs (including their containers, recursively). That's the way that many dependency management systems work, as well as certain aspects of version control: when you ask for a log on an individual file in a version control system, you don't see every revisions that ever touched the repo, you only see the revisions that modified that file.''} + For examples, see any example in this specification, as all have been formulated using compliant URIs. @@ -41,7 +54,11 @@ \subsection{Annotations: Embedded Objects vs. External References} \item Store the information separately and annotate the SBOL model with URIs that point to it. \end{itemize} -In theory, either can be used in any case. In practice, however, +In theory, either can be used in any case (note that a third case not +discussed here is to use SBOL to annotate external objects, by linking +to SBOL documents rather than from the external objects). + +In practice, embedding massive amounts of non-SBOL data into SBOL models is likely to cause problems for people and software tools trying to manage and exchange such models. Therefore, it is RECOMMENDED that small amounts of information (e.g., design notes, preferred graphical layout) be embedded in the SBOL model, while large amounts of information (e.g., the contents of the scientific publication from which a model was derived, flow cytometry data characterizing performance) be linked with URIs pointing to external resources. The boundary between ``small'' and ``large'' is left deliberately vague, recognizing that it will likely depend on the particulars of a given SBOL application. @@ -63,9 +80,14 @@ \subsection{Completeness and Validation} retrieving them from various repositories) or else to mark them as being unverified and not depend on their correctness. +\LDtodo{Mike B. ``"the program doing [the deserialization] SHOULD verify that all of the property values encoded therein have the right type...." +Not everybody knows how to apply XML+XSD. Maybe we should give new users a big hint: they can just use any correctly implemented SBOL 2.0 XSD file along with a validating XML parser to do this stuff automatically. We really don't want implementators getting scared off by the burden imposed by this section of the spec. Let's perhaps additionally recommend as a bootstrapping exercise to grab an SBOL 2.0 XSD file out of a recognized reference implementation (libSBOLj, for instance), then start by feeding the XSD and the user's SBOL document in question to a validating XML parser such as xmllint, which is FOSS, works great, and installs in seconds. (Side note: if you choose to give these helpful hints, please make it clear that a given reference implementation is not a spec; if it contains errors, the spec wins.) + +A section about completeness and validation that doesn't talk about the available official or unofficial XSDs is incomplete. This part was left out of SBOL 1.1, but now that serialization is a big part of SBOL 2.0, an XSD should be included somehow, if only by reference.''} + \subsection{Recommended Ontologies for External Terms} -External ontologies and controlled vocabularies are an integral part of SBOL. SBOL utilizes these resources to access existing biological information where possible. New SBOL specific terms are defined only when necessary. Instead, SBOL provides placeholders that can point to external terms. For example, types of components, such as DNA or protein, are indicated using BioPAX. Similarly, the role of a DNA component is indicated via the SO terms. Although preferred ontologies have been indicated in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found at \ref{tbl:preferred_external_resources}. +External ontologies and controlled vocabularies are an integral part of SBOL. SBOL utilizes these resources to access existing biological information where possible. New SBOL specific terms are defined only when necessary. Instead, SBOL provides placeholders that can point to external terms. For example, types of components, such as DNA or protein, are indicated using BioPAX. Similarly, the role of a DNA component is indicated via the SO terms. Although preferred ontologies have been indicated in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found in \ref{tbl:preferred_external_resources}. \begin{table}[ht] \begin{edtable}{tabular}{p{3cm}p{1.5cm}p{4.5cm}p{6cm}} diff --git a/sbol.bib b/sbol.bib index 6c89ad61..d1e4f901 100644 --- a/sbol.bib +++ b/sbol.bib @@ -12,7 +12,7 @@ @article{roehner2014proposed } @article{galdzicki2014synthetic, - title={The Synthetic Biology Open Language (SBOL) provides a community standard for communicating designs in synthetic biology}, + title={The Synthetic Biology Open Language ({SBOL}) provides a community standard for communicating designs in synthetic biology}, author={Galdzicki, Michal and Clancy, Kevin P and Oberortner, Ernst and Pocock, Matthew and Quinn, Jacqueline Y and Rodriguez, Cesar A and Roehner, Nicholas and Wilson, Mandy L and Adam, Laura and Anderson, J Christopher and others}, journal={Nature biotechnology}, volume={32}, @@ -33,7 +33,7 @@ @article{canton-natbio-2008 } @article{rdfxml, - title={RDF/XML syntax specification (revised)}, + title={{RDF/XML} syntax specification (revised)}, author={Beckett, Dave and McBride, Brian}, journal={W3C recommendation}, volume={10}, @@ -41,7 +41,7 @@ @article{rdfxml } @article{COBRA, - title={Quantitative prediction of cellular metabolism with constraint-based models: the COBRA Toolbox v2. 0}, + title={Quantitative prediction of cellular metabolism with constraint-based models: the {COBRA} Toolbox v2.0}, author={Schellenberger, Jan and Que, Richard and Fleming, Ronan MT and Thiele, Ines and Orth, Jeffrey D and Feist, Adam M and Zielinski, Daniel C and Bordbar, Aarash and Lewis, Nathan E and Rahmanian, Sorena and others}, journal={Nature protocols}, volume={6}, diff --git a/serialization.tex b/serialization.tex index 7e547e51..38aab412 100644 --- a/serialization.tex +++ b/serialization.tex @@ -35,7 +35,7 @@ \section{SBOL RDF Serialization} All of the data types that are \sbol{TopLevel} are so named because they always appear at the top-most level of the RDF/XML serialization. All other datatypes will always appear nested within their parent container and, ultimately, some \sbol{TopLevel} object. For example, a \sbol{ComponentDefinition} is a \sbol{TopLevel} and therefore listed at the top-most level of the RDF/XML serialiation, and contains its \sbol{SequenceConstraint} objects, since they are not \sbol{TopLevel}. Its \sbol{Sequence}, however, is also \sbol{TopLevel} and is therefore not nested within and instead linked via a URI. -Each instance of a first-class SBOL datatype may also have annotations attached, as described in \ref{sec:Annotations}. These annotations are composed of a name and a value. They are serialized to RDF as a triple with the subject being the identity of the instance they annotate, the predicate being the name of the annotation, and the object being the value of that annotation. Annotation values are always nested within the RDF/XML serialization of the instance that they annotate. +Each instance of a first-class SBOL datatype may also have annotations attached, as described in \ref{sec:Annotations}. These annotations are composed of a name and a value. They are serialized to RDF as a conceptual triple with the subject being the identity of the instance they annotate, the predicate being the name of the annotation, and the object being the value of that annotation. Annotation values are always nested within the RDF/XML serialization of the instance that they annotate. For example, a \sbol{ModuleDefinition} might add a DOI annotation that links to the scientific article that first described the system that it represents. SBOL also supports top-level, user-defined annotations, again as described in \ref{sec:Annotations}. This is to allow non-standardized but necessary information to be carried around as part of a design. For example, a particular sub-community may have an internal standard for genetic device characterization data sheets. From 4bb03a1d4b3229f7e5d860f06b1bf23277e3860e Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 2 Jun 2015 22:46:52 -0500 Subject: [PATCH 268/317] added explanation of zero-participant interactions --- model.tex | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/model.tex b/model.tex index 21d9b806..51bb4fbf 100644 --- a/model.tex +++ b/model.tex @@ -1252,7 +1252,9 @@ \subsubsection{Interaction} The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects, each of which identifies the \sbolmult{roles:P}{roles} that the referenced \sbol{FunctionalComponent} plays in the interaction. -\Rtodo{Should particpations be 1..n rather than 0..n? -JSB, per Mike B. I actually brought this up earlier, and I was told that we may want to be able to specify that we know there is an interaction but we don't yet know what the participants are. -CJM} +Note that even though an \sbol{Interaction} generally involves at least one \sbol{Participation}, the case of zero participations is allowed because it is plausible that a design may wish to specify that an \sbol{Interaction} will exist, even if its \sbol{participants} are not yet determined. + +\Rtodo{Should particpations be 1..n rather than 0..n? -JSB, per Mike B. I actually brought this up earlier, and I was told that we may want to be able to specify that we know there is an interaction but we don't yet know what the participants are. -CJM Right: I have added text explaining. -JSB} \paragraph{Serialization} From 45a8949da63dbf3882b10970b1a6fd1e71b88c69 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Wed, 3 Jun 2015 12:58:36 +0000 Subject: [PATCH 269/317] Update on Overleaf. --- apdx-validation.tex | 10 ++++++---- model.tex | 6 +++--- sbol.bib | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 16dd8037..a85a9823 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -145,6 +145,8 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printWarning{The \sbol{Sequence} objects referred to by the \sbol{sequences} property of a \sbol{ComponentDefinition} MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with the same \sbol{encoding}. (Reference: \sec{sec:ComponentDefinition})} + \printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} \printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects, and one of the \sbolmult{types:CD}{types} of this \sbol{ComponentDefinition} comes from \ref{tbl:componentdefinition_types}, then one of the \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this type in \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} @@ -153,9 +155,7 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{The \sbol{components} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{Component} objects. (Reference: \sec{sec:ComponentDefinition})} -\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{Component} in the \sbol{components} property of the \sbol{ComponentDefinition} MUST itself refer to a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with the same \sbol{encoding}. (Reference: \sec{sec:ComponentDefinition})} - -\printWarning{Given that the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, and that each \sbol{Component} in the \sbol{components} property of the \sbol{ComponentDefinition} refers to a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with the same \sbol{encoding}, then it MUST be possible to align the \sbol{elements} of the latter \sbol{Sequence} objects to the \sbol{elements} of the \sbol{ComponentDefinition}'s \sbol{Sequence}, subject to any restrictions imposed by the \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} objects that refer to the contents of the \sbol{components} property. (Reference: \sec{sec:ComponentDefinition})} +\printWarning{If a \sbol{ComponentDefinition} in a \sbol{ComponentDefinition}-\sbol{Component} hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then the \sbol{elements} properties of these \sbol{Sequence} objects MUST be consistent with each other, such that well-defined mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding} (subject to any restrictions on the positions of \sbol{Component} objects in the hierarchy that are imposed by \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} objects). (Reference: \sec{sec:ComponentDefinition})} \printValid{The \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. (Reference: \sec{sec:ComponentDefinition})} @@ -268,10 +268,12 @@ \subsubsection*{Rules for the \class{SequenceConstraint} class} \printValid{The \sbol{Component} referenced by the \sbol{object} property of a \sbol{SequenceConstraint} MUST be contained by the \sbol{ComponentDefinition} that contains the \sbol{SequenceConstraint}. (Reference: \sec{sec:SequenceConstraint})} +\printValid{The \sbol{object} property of a \sbol{SequenceConstraint} MUST NOT refer to the same \sbol{Component} as the \sbol{subject} property of the \sbol{SequenceConstraint}. (Reference: \sec{sec:SequenceConstraint})} + \printValid{The \sbol{restriction} property is REQUIRED and MUST contain a \sbol{URI}. (Reference: \sec{sec:SequenceConstraint})} -\printModeling{The \external{URI} contained by the \sbol{restriction} property SHOULD come from \ref{tbl:restriction_types}. +\printModeling{The \sbol{URI} contained by the \sbol{restriction} property SHOULD come from \ref{tbl:restriction_types}. (Reference: \sec{sec:SequenceConstraint})} \subsubsection*{Rules for the \class{Model} class} diff --git a/model.tex b/model.tex index 51bb4fbf..e9cdea4d 100644 --- a/model.tex +++ b/model.tex @@ -395,7 +395,7 @@ \subsubsection*{The \sbolheading{sequences} property} Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the structure of a DNA \sbol{ComponentDefinition}, one that represents its structure at the level of nucleotide bases and one that represents its structure at the level of atoms and bonds. -If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} (see \ref{tbl:sequence_encodings}). +If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with the same \sbol{encoding}, and it MUST NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} (see \ref{tbl:sequence_encodings}). \Ctodo{Query from Mike B: ``"a ComponentDefinition MUST NOT refer to more than one Sequence with an IUPAC encoding...." If this is true, then how can I provide nonconflicting descriptions of a sequence at two different levels of abstraction? The example from the paragraph starting at p21 line 16 makes me think that this should be permitted. Did you really mean that "a ComponentDefinition MUST NOT refer to more than one Sequence with any single IUPAC encoding," i.e. you can't give two conflicting DNA sequences? If you really mean what it says, please provide a clarifying rationale for why e.g. I shouldn't be allowed to specify DNA, RNA, and protein sequences for a part.'' Answer: Mike is does not realize that these would all be different ComponentDefinitions.} @@ -412,9 +412,9 @@ \subsubsection*{The \sbolheading{components} property} While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple instances of a particular part (defined by reference to the same \sbol{ComponentDefinition}). For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \sbol{ComponentDefinition} of a CDS. -\Rtodo{Comment from Mike B: ``"it MUST be possible to align the elements of the latter Sequence objects to the elements of the ComponentDefinition's Sequence." Alignment comes in lossy and lossless forms. One of SBOL 1.1's practical limitations when it came to modeling real-world processes was that annotations couldn't bear an approximate resemblance to the sequences they annotated; they had to be exact substrings. If you really intend to keep this restriction in SBOL 2.0, then please use stronger language than "align," because we all use alignment tools to detect lossy near-matches (indels), so this passage might be read the wrong way. If, on the other hand, you've deliberately changed that rule, then highlight the change here, because SBOL 1.1 was pretty emphatic about its "logical consistency" rules.'' Tried editing this section to use language other than ``align.'' Not sure if it's the right level of strength for what we want, though. - Nic} +\Rtodo{Comment from Mike B: ``"it MUST be possible to align the elements of the latter Sequence objects to the elements of the ComponentDefinition's Sequence." Alignment comes in lossy and lossless forms. One of SBOL 1.1's practical limitations when it came to modeling real-world processes was that annotations couldn't bear an approximate resemblance to the sequences they annotated; they had to be exact substrings. If you really intend to keep this restriction in SBOL 2.0, then please use stronger language than "align," because we all use alignment tools to detect lossy near-matches (indels), so this passage might be read the wrong way. If, on the other hand, you've deliberately changed that rule, then highlight the change here, because SBOL 1.1 was pretty emphatic about its "logical consistency" rules.'' Tried editing this section to use language other than ``align.'' Need feedback on whether it's the right level of strength/detail, though. - Nic} -In this way, the \sbol{components} property can be used to construct a hierarchy of \sbol{ComponentDefinition} objects. If a \sbol{ComponentDefinition} in the hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then \sbol{elements} properties of these \sbol{Sequence} objects MUST be consistent with each other, such that mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding} (subject to any restrictions on the positions of \sbol{Component} objects that are imposed by \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} objects in the hierarchy). +In this way, the \sbol{components} property can be used to construct a hierarchy of \sbol{ComponentDefinition} objects. If a \sbol{ComponentDefinition} in the hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then the \sbol{elements} properties of these \sbol{Sequence} objects MUST be consistent with each other, such that well-defined mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding} (subject to any restrictions on the positions of \sbol{Component} objects in the hierarchy that are imposed by \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} objects). A DNA \sbol{ComponentDefinition}, for example, could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} of ``{\tt gattaca}.'' In turn, this \sbol{ComponentDefinition} could contain a \sbol{Component} that refers to a ``lower level'' \sbol{ComponentDefinition} that also refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. Consequently, the \sbol{elements} \external{String} of this ``lower level'' \sbol{Sequence} could be ``{\tt gatta}," or perhaps ``{\tt tgta}'' if the \sbol{Component} is positioned by a \sbol{SequenceAnnotation} that contains a \sbol{Location} with an \sbol{orientation} of ``reverse complement'' (see \ref{sec:Location}). diff --git a/sbol.bib b/sbol.bib index d1e4f901..f7a29815 100644 --- a/sbol.bib +++ b/sbol.bib @@ -145,4 +145,4 @@ @article{ swissprot pages = {882-899}, year = {2005}, url = {http://www.sciencedirect.com/science/article/pii/S1631069105001101} -} +} \ No newline at end of file From 86eb0a13b92994c8cb3e69af7584952a671ee055 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Wed, 3 Jun 2015 13:24:27 +0000 Subject: [PATCH 270/317] Update on Overleaf. --- model.tex | 3 --- uml/collection.pdf | Bin 0 -> 1771 bytes uml/collection.png | Bin 3272 -> 0 bytes uml/component_definition.pdf | Bin 0 -> 2410 bytes uml/component_definition.png | Bin 14051 -> 0 bytes uml/component_instance.pdf | Bin 0 -> 2347 bytes uml/component_instance.png | Bin 11091 -> 0 bytes uml/documented.png | Bin 4433 -> 0 bytes uml/generictoplevel.pdf | Bin 0 -> 1671 bytes uml/generictoplevel.png | Bin 3560 -> 0 bytes uml/identified.pdf | Bin 0 -> 1709 bytes uml/identified.png | Bin 9068 -> 0 bytes uml/identified_annotations.pdf | Bin 0 -> 2328 bytes uml/identified_annotations.png | Bin 13374 -> 0 bytes uml/interaction.pdf | Bin 0 -> 1856 bytes uml/interaction.png | Bin 5082 -> 0 bytes uml/location.pdf | Bin 0 -> 2129 bytes uml/location.png | Bin 8285 -> 0 bytes uml/maps_to.pdf | Bin 0 -> 1989 bytes uml/maps_to.png | Bin 5833 -> 0 bytes uml/model.pdf | Bin 0 -> 1701 bytes uml/model.png | Bin 3863 -> 0 bytes uml/module.pdf | Bin 0 -> 2008 bytes uml/module.png | Bin 6509 -> 0 bytes uml/module_definition.pdf | Bin 0 -> 2379 bytes uml/module_definition.png | Bin 10897 -> 0 bytes uml/participation.pdf | Bin 0 -> 1877 bytes uml/participation.png | Bin 5754 -> 0 bytes uml/sequence.pdf | Bin 0 -> 1686 bytes uml/sequence.png | Bin 3782 -> 0 bytes uml/sequence_annotation.pdf | Bin 0 -> 2026 bytes uml/sequence_annotation.png | Bin 6936 -> 0 bytes uml/sequence_constraint.pdf | Bin 0 -> 1986 bytes uml/sequence_constraint.png | Bin 6276 -> 0 bytes uml/toplevel.pdf | Bin 0 -> 2297 bytes uml/toplevel.png | Bin 7264 -> 0 bytes uml/toplevel_collection.png | Bin 7030 -> 0 bytes 37 files changed, 3 deletions(-) create mode 100644 uml/collection.pdf delete mode 100644 uml/collection.png create mode 100644 uml/component_definition.pdf delete mode 100644 uml/component_definition.png create mode 100644 uml/component_instance.pdf delete mode 100644 uml/component_instance.png delete mode 100644 uml/documented.png create mode 100644 uml/generictoplevel.pdf delete mode 100644 uml/generictoplevel.png create mode 100644 uml/identified.pdf delete mode 100644 uml/identified.png create mode 100644 uml/identified_annotations.pdf delete mode 100644 uml/identified_annotations.png create mode 100644 uml/interaction.pdf delete mode 100644 uml/interaction.png create mode 100644 uml/location.pdf delete mode 100644 uml/location.png create mode 100644 uml/maps_to.pdf delete mode 100644 uml/maps_to.png create mode 100644 uml/model.pdf delete mode 100644 uml/model.png create mode 100644 uml/module.pdf delete mode 100644 uml/module.png create mode 100644 uml/module_definition.pdf delete mode 100644 uml/module_definition.png create mode 100644 uml/participation.pdf delete mode 100644 uml/participation.png create mode 100644 uml/sequence.pdf delete mode 100644 uml/sequence.png create mode 100644 uml/sequence_annotation.pdf delete mode 100644 uml/sequence_annotation.png create mode 100644 uml/sequence_constraint.pdf delete mode 100644 uml/sequence_constraint.png create mode 100644 uml/toplevel.pdf delete mode 100644 uml/toplevel.png delete mode 100644 uml/toplevel_collection.png diff --git a/model.tex b/model.tex index e9cdea4d..c612ee3d 100644 --- a/model.tex +++ b/model.tex @@ -2,7 +2,6 @@ \section{SBOL Data Model}\label{sec:model} % ----------------------------------------------------------------------------- -\Ctodo{Change all figures from raster to vector format} \Ctodo{Ensure that no UML figures have labels conflicting with their arrows} In this section, we describe the types of biological design data that can belong to an SBOL document and the relationships between these data types. The SBOL data model is specified using Unified Modeling Language (UML) 2.0 diagrams \href{http://www.omg.org/spec/UML/2.0/}{(OMG 2005)}. Subsections \ref{sec:umldiagrams}, \ref{sec:nameconventions}, \ref{sec:datatypes} review the basics of UML diagrams and explain the naming conventions and generic data types used in this specification. The remaining sections then describe the SBOL data model in detail. Complete SBOL examples and best practices when using the standard can be found in \ref{sec:examples} and \ref{sec:bestpractices}, respectively. @@ -1173,8 +1172,6 @@ \subsubsection{FunctionalComponent} \subsubsection{Module} \label{sec:Module} -\Ctodo{Documented should be Identified in Figure below.} - \begin{figure}[ht] \begin{center} \includegraphics[scale=0.6]{uml/module} diff --git a/uml/collection.pdf b/uml/collection.pdf new file mode 100644 index 0000000000000000000000000000000000000000..523eda5599b10bc87e96ff76dd5381f21337d1cc GIT binary patch literal 1771 zcmbVN4^R|U7#DM-Inx{w$5i5BfgF15zT5k^%ykpT!3jzpcLX@cnR~bIaP`=g-90@m z$}tAh(&>*wC^9mEEWmD-SioHF~F12Z_o!QxMzwdj$ z?|r}T_jZ#Vwj2#i*Qt_wFLs_(82||c?|hZnOyqC@8Hq$rfRT|6`2-dbGZ9}V&jWgB zv{)orL`=CVv|-=NGiF^RN4IwFyit+a)!US?qI7o5nB`fYzjt$4%d}x7mmG7J@9zvv zIUK^u+edEwHdV3XrWlL<{*!bADOIMe8yumd|HFJ;mCuLWUQ#WruS9lHXcrNA6 z(%tA23g_?=1n-T5ukYMws2usC<(=e*!gEeKr4^HECtG`qRIZPp9J6OF`Uon zx)$G6cca*Kqt#=nU;J~uyYk12w})*l@4Kf$JR8viwiNxCqB_bFcp34s1QcyKiNYld z5#eCU5aC3U5EOk#!eVoXg3pCy;3lvh0a1uTG9Yrxahf&q%!)j7Jw$d$w!363OT5tT zfK*9@tM5D z-G7hbD%<+cxEiYvU>^fqY4!hs&+-PiiXeK78Vco+8a@WVXlKe)q5(1*Q234nW^kuM1>&{Swaxcs25g(Rn_i7fmTlR1I^_be<=Ht0iQDyJy(Q=m`Rr9-e)OOm7p18V^+q)G~b zwaA(YN>elKj+vT8NR%*csahS~Sx7{F6$v0z;f0Y481#Bd5B%W1&qQKElne0peGo#d zlZSky3A6H`54-Rod&o!sLmuYh;XDYbNAdLZBR&Xe%|ICm9p# zMXVp0NP`Yh77yVR1Q{rja1t(VDZ+eWij%{m(S#?Xl4M4d!)!y!M5~gMvuEX~{shmS BV%-1$ literal 0 HcmV?d00001 diff --git a/uml/collection.png b/uml/collection.png deleted file mode 100644 index 97be9ec022339f082fda326e7f2edfad44fed0ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3272 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 H&L{r^h%so< diff --git a/uml/component_definition.pdf b/uml/component_definition.pdf new file mode 100644 index 0000000000000000000000000000000000000000..42b5c02106b3761d6dbb4e04ed8b01447905a7d9 GIT binary patch literal 2410 zcmbVOdr%YS7B{|-SVkUKEuylDu|$D=Bq50~v4j}p4IzL$Ws__|AS9412n?ejR;ZSd zilV{=2DC)!#fm}|yalVGAOc>2qJY!#9A89dB;pIbyO9oebmmU){r=f+&pF@keCM2B zej8elKF(Rwx5Hzm_OS8ywBBP>!Awo&bZoEvoy^tgM*r=t+DNPdld^acW;<}*Vf%<``#?L zB_q~p{8s4Zn1&+*VTos6O@UF3Ka8B1S!M`7ZGo#}9VVv-9&{L$#`uQDH%+#I?CzgO z)q7@!vxYvLf6s?cB~z^J*)anRg#~u{g%JxP>k*d{rvoe2d(963%sI=8+N{FwOkA86 z`9yj=%ej#n0dEylKFeTsB_*re?2}jrg<&qV;UcFOYd`3Re{_qYT>2UMZl`cxvz6YT>j;QlUj)ic+0qgZwh2Q0uP#Z&+W-C2z+P`!;q+Gk;Wzbc@ zl5BIz(8h%?ytDj{Kjr3?o`1e)W8Rx&1$BIQF=Hqn9r$u|pE!h{kk`-P8QujnbeMCu zUQR8nt-K$2{aefV^NR9|if&GCi|<(HnI)8d?J0~{x}WZ(*;r$DO}sk6W1#-ny0JXH zGxubEp?n8^!PO3eYm&sIK6$-bX_xA z7f}XV_m~wⓈYx6ZL}!J0>sLPUp2AnCf$f>a=Ccl5z_QclYSRR0peq@oE2aRt{Cw zeEGwgfvlyBKmK_yL7~oXC~1u>YaQvjT~reQ`}mz4`}N3KUvKfD@>7y@>Z#4k$94rd z+%w#gUP@`+)9IAIdSK`@0MBKr$*L0E8sKS|6| z+EL@!^T_JZv$2~ecJ7nzVW0||eA;il-lyxme$RG>wB7QJ8!*YlO*TPCS$|TD%F?#W4^J0s%t5YYlN`N z%C@vAx44uGi}IbC^~V0Y_9DCCL#GO!=ZRMy5Vq&0T>ox~6(g+f-1|tmS45A(D?8Q=V*SRSP6un?cg}q=njzY!MvRO4EcBFi9=48xMqsB2ct^-JE z6M^E4WDE>K6&NVObedGH6w?t}7o^olLoghO0tq<;Krxn%1E6;j5yqc=dd@z*W58|c zxK{{Hs3LLDD+C5$6R=kZ0wCm$#{-2#PEtW(fMN0p5rFw|!vI(xV~D6AR7+e8V4FPt zm`sWCHR(|h@ydoE0O3F}JRVsZSrCactIHv&5}Yi8tOWj8519|-qdLsA*^a5wFkC4` zo%tG-4BVzBv|FiGfZMQ&O?Nkb^Ayf6nn2aLJa>;!05f zo-2x+%A5n5bCCU>b@(b}x+sz>qL?{i=s-_RDlwP;z~aswG4aO}#Zi?;Vd9bQ;{fOI zVRC}A3H&uO0YMZ;!4?F9S&%ElfVeOVL7XAxR}l0S9rPr=p}10`{_jx)J!PpX*ABJ$xwATs>My+Mj(VkrO~zp3aS4Fb}^wM literal 0 HcmV?d00001 diff --git a/uml/component_definition.png b/uml/component_definition.png deleted file mode 100644 index f93a709c3bb7ec50cdd40b83ee378d1574022827..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14051 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 diff --git a/uml/component_instance.pdf b/uml/component_instance.pdf new file mode 100644 index 0000000000000000000000000000000000000000..52b6c8d96b6905a55ece9050a5a1f1c5f9e94c79 GIT binary patch literal 2347 zcmb7G2~-nz8dqph15~i`R9x3l6G*IKW-^(C1RLbk6wr`x8OXy)GK4@(Bv(;(7Ykhs zD=t=|m4X$Kqm)CDv+Ge&P!{R|7Fk+o6-A54qEOe}LS<(nec5OG_O(!T}&aCr_bl+z5uMHAY+yhH5Y)9*iq=N*oNwwJKvW07E>M zKwvQHacn0gy|^PTO!qb9a$zj?yH?la%1V5q)tkR#U+oGr-Aq4Z?7ma>buX5gxr7!e zAKt@Ap)PbQIMJC8`{y=h)_;gptgI`$+wgh@qF6ludbOU(I`w1plaJB5gv%3ePhY=q z+O=Q?l+2t@e3mV2^FLjEDhoU}ebVuF5B@}5PHSC?6+SNgGW&j3Nf#>h>T-dRd25eQ z<(B*xQ!_*5_rGlxB>a2k#e?(LnG^ikkp}JAn(u{a4ol;ryVX7KnjLpLzZe}l86?Yj z9M$QQ^Zmf?D{p6xApNV@3J>(K}K(cw#LpErGC zYV2B7T~jOLd|FYRaM)Bb3Rlv>5sIk2wy>8ZBoADNt9RF=;Attd~n z9G;9Be{!3#X>GgAWzux>d}{XDGd(|s7dx-9X3-Nq{>wN^a-+FW9q{O*O@{4@ZY}ve z=I$67w${ZEXp2scC|_qX9urqTW0a{(RKl|{Qc#_GcyCZmeKuJX*H=D>ko8BNpesbW5J&t z5;jqG36sib-ou4)olbR;V+|GZ+3>fjlANSdQEL|O?77{Bl}C3_`WzU7dG%X^oyV(7 zjB%AR>z;%1h^(e9J$!fO`a2H8DOEY^R7aXc+3Yx4EvioJ=Sz$JD(zYJRrFX+?G?AT zCet=7G-XL1t?35yrGNM!bw}`pZ-KVFnku&Xse9|*(w{|UO?lRY=p}-d zHM{0BF479?Roqzf*&D0*ncqwc!ycwfg-uD{t&oI(41a@ovO<$ek3b?mBB_M5_k@{F5@q0vV1 z4uYMC2LEd7<&#y%XG?F(`x)zto0@9H{c2AiPJ=2n`3r}IvXEA+8f}+u?fC%sl3_lx zV1s{(x5TMCC#3f?ZJXs%nTB!N^4=$VtjwIjEmD&#R^}Y036WJE%Wro{YitX%(_qH(NIya3q*2QE>&2lGBe>RWIWQ zc62(STZUo{%VxIwE6rOGbK;cfpEO71~Gsv~W{HtlYlP!w z2@JqC;LQ>iz#>lq0T@ceBv&8|AU0hn3t+!IAOQN(hOiQ0dLl7^YtuyFN;MX!OOJ<$ zM-CSPSSTbD2*}dNf=HaX#VRq$jbssICGg97$ar8NX25NSEx5*v8`TPo8K~1J!4NI6 zeAQYN7^~I>XbtM0p6%ddZoe7)SKyMR{$^ZT(%a-3b(#tP6*0(`&&5z+0BkRcWW}z4 z>he-zK0z~MP z!Nj1@gZV57Mj;M_Ks*>le3=m28-lzUU=Z;qXjJR8|KExjPo+tL>*;E8GV1`;hwTFc zRV)aCm;^8jfTNJOC?GH`8m0$`XzIL=)F2SpJS zNCM_$Fo#FvPhNo5F5?hXz9K_>iLrS_#^w^ueMN@;+!rEx@iRN_FUVl-FW7O27x|SK zzA(Y|Pcow(Q)_TN`3)k}Ch3UJ4U%9`7!1U3QczQ z8_T5Zj6sZL4Bs<#@ArE@zwh_wkHML9&ilO2d7jtvdS1^7H_+4MU_Zsq#KgpLOH18| ziD`c-_o{$9kIN@hQpAQ!>LRN5>K$!-_}AE1Pz{oozJw_|{75hMi5hEQNmW5LiP`n9vXl_>B<&9|jQc zk&XZ#H^~2=wkO1W|Eu4xHYObNzsLSh8xx#us6j`15_uec;(2EdKuXi2w`Z+krtxPft%c9Byy_{8!6e%1dt=)wMspb5jF{ z!&zOqd^zS$yO5IqiPNV|zEAuWS}?Og3N-g~a>}o&8XCV$SzKI`){f2|WXCb5Bc4!H z$#QaX1@|646h|BC>FM3P`T6tbo80|3MP3I51q}?CH_m{@Sn*LPTyhht-H?e^{47cX9Xh_Iq-C3G(U74e!cW5m2b#PwSK5x!7I&WoV^``3akC2Oyt5-2=>kETY56rEM@IrmMGrU2P zyyl8BGWy-rhTV0ULWG^&kKuAhZ9YD}2ETP}zI_qvuCF5w1n6}A^AZ6M;c%lBDix8# zBQAO01_r}vSXx?IT~SiPCa&VumAExzo#F5|8Rg~1bIyZU%iXfF%evB1QrB=JJZjd~ z$xXA`$;9@lag83|F8n68zp?QEoDG;LW-K%!g8dLq8NGv12Rmr(^=E5e-<#*tY|yvK z_HI%}lf@Mx9#e*I-R!-K(=|3IB=Z_9wgcLQp6L+C0VeZscrFt!qbL;OU_LP{=42@j?EmgeRzh>IK4R99O@>ZM-K z_cAw6*uU1(W5m*4US7_tZ#`Vx>5e7UqXtEz1R%LBm6eq%D~~D6D`xA{eRl$lH+HJER2uKbAqk{ajPSwlnrkG0_)?d;Sd)?sUNy?Fv09ECeeuq}bO zh`sn|oGRFE0VZ5|787{0yB871fnPJdXnM6DoWn0y#t1x#Jz`gy#Xu2;FN5#@_GP9M zk-t2b>7Q@+{~E2uXQvX>WyR=!PVF4`%C4^@1AMex(OXk|`LMJ_c5oa_7dn#_+|fHL zUnVB*1xU1W?gP(@UKOU5H0%~UQ#v@h4-C&%YgU3l3M>Bk_g1spkt*QqOj@zgV`m;Q zOeI=L81fVX*7T%;efaND*3Ej~7(Q^OSQW7!$#~ctZ`rZm1264v{)jrTm!ffP7{+*U zqbCi!+me;eVYFo2=5+>co$;<=-BsaXKo{5vFc|a#YXMJX>?z60dQumMU%WVsGTokRi3R97SL&(czxn6Ys}JW!@b1nFYt^&@uzUdA4RqStnwOg! zR^o!BWUc>}hp%sS&-wG``T6qy z^@8hSVqd0(Ac!_BQxJT>XbQl7A4@1tOM82N+*2vVz}>p((^nteNQ=m5f32diNDUUY z{#s-vksWp}V75zG*TLR?&NyLz4Z?8uZGjSc=b^cBrKm(t%fVyMiv;x%hbA9Nedxi(N)JCAJN2 zrDg6%=ZwSa>aN2G;%6%3@=Hp%E@aZvpLq~9qNL4^>q`n4$3^J0L4e0#9Zw}nA@N#no>3XY?w!WQ#@b&KI+A!lN}fjg zW=l(=7Y3wsscUP``dq>pp?muC=a9BMi(%8kmS90I*!R}Ye5E)KKE`%Szu=U}tT5}5 zhFt8ZEE_M#o}8bD*Y3v@7q_>xTykaWuLj4_pxwB*6)mMoW*`Gmg=X+18ZtJbG zvgzhWLds~9%=hoRc%@`yzWN%y*2t8;!sqSn-H}wI{ht4;QTpYpBThZ&%t2lFl2 z`$T9^w3nBOlc}3;9Ts-yju%%73(uuNqE+>g;j%5>?#YG05;Eu0%tzstKS_1I$Bg6T zHRmMFv2QC)UCqqQn&CsAQx&~i$;-L9xxm8zy{-dx?t~VoQAerWm&JPu2b~svX00a3 z*e+2hct|I5Y4q_?M-XXEjSLLF75UEfoUc_WelmWal%*L3?^&G9G$JLn2T3OdZZ2nt zQpW2SqX5Tu5vsHo(cMMKxQ z0S>J^gH>QrmEr&h+{(9jlN1ybB=*NxEEkNV1MG&$X#OnqOoA$h-`=itK) zs{Q>I>+phtf@L`&e*W^e;~~r*$~81MhO?%MUPte2j#hh4_@*ia6ntp5Y4djPYs`B1 z!9Gk~1Oe%W95bkuiNW6ffttWjk5z~tI7A{RLU7PXW29~Qfb2?qQ5%&P_5GneFE8(R z%F8b%IfZE{oO9(B6%RI;5ak+k1qc|G{wuhfyUbb1X zLO*yg3E}`in4QkR-K?(`3bUcG9)kat(fVzD{o2IVKb4eHlao;k1I79I7ZiHo$%%=j z-6ePE1XC6Eb;|PCYL0cn!fBTH+*l8r64yY_(iNGL$ zBY2dL88-N=+*eU~`sobHw1uO?UVq5U)O7gUkYfI5{RUu4ZEd&vcfNgOrf_Ugsno?q zm;Njf?V$@3);z7}yqG!by*c~)`{%PHBqaKrFchPb98QU|XMX^q6Hji9lLRqsK7W2; zLC%)`mdE7ilu2mrQnR3_!4vf6@;y^bTPUZ12j!1vm@)hydr4@y3u!6BYdi{AxbXt= zhXVw+5MlAt)#YpP?1xiJiPrYBb8{=&#Ga*=TmZH>lshX@ZM?mLEm=%dv?#0@&t>WThtc*v=L5xD|lQ@vxR7{}p znVmuyR+PY5Ewak*-NVrNmnU0}&5i2T@UO<;RjC=B;>n0ix~4`nQK|@E7E%3I|9F4@ z6x{}8=jh_nhL^BfR+s_wDYN(Kn9%kCexoqrn1H*tx`2SdC4mHB8X51^KgSKqk=SeY zI!Yf$OixccI688jzM6ifwzhTz#_4Dss=B@OfGJF8!1mSQ6H*bsiRdpkcn0StkZ z138?C zLZNhYbYOJqmpjxvQ%t~~77Y4>v`bY8DA3qmR9FT`jD)pt7>PpAYQNNPD}$ zGk!Mg(J2WAwTiqjXcZHEydI@TX76>KZfkq-(mDHCZLPEd;3BBB#c*?!K?#qI{`ZHP zV<3mhOGC5sU3WYQCkbA&cKj48reB%)*VFt7;>r6zz3*F8g6*YwOI*XHDS8)x42bWm zTW&}F;^N}cl3Q&Uwxk3fn665u>CTTEwp6qu?gR7REj-YDvw<#+ZNs4yUIhK7bVHmP^e zTdVfSz+DhU6)*L@DK9H~b^6-(aWx%Pvb;$=$1AeKs~0b3QR_Jc4P|9L=w?ka&3OKj zZ_t6X`IL^&pIPlLF5MF27g^6{Ned&Io0|g;)}L%@VsaYlS5aRNTe!Oynbjc$iQuii z6xi2+3yCOSpWBs``P+C=(ms8!h{z|>*8;v&^yHU`>7!V^lN7&~r_M+?(Uj%@R&E9((LnqfXzO1W}nNXtZ zXFh6*yzVoq-3aXJzc7;Stw*-*4h$q&gVU@L?%QsWXS;ZF!&3o4%(O)@Nn?mD(UJAyM|2#l^$JgBzDOd6F|f3_6>9S|Yje zo53Zukdv~qvH-e+gM-IW8U)!Nq1vPDCyuuvbIr+FSy=%2fcGCP012cB0R^1t(#b_z zOQ{YWW}F)Q@JH%jT-UB$J9+Y?sE1qwGaKhnnzUa(HdZ6=gcX1}!~H-0+IV{x)hf+Pqp#lKoR)f@$(09h068ZO{wPnX5#Q$$^5GwY7n05M*8aWs7>qIK1R0B?>;k7 zY^^pkhCK2e8!nn~NpX7!>sgE(r9#%vR(7nf5`UNOm} zq~BFJ`<#4}OgNW`&=3Rak5R4sJczO5)(K8oRDpwn`4p{r6ov|jRZ>(xC(n(-VPN!w zEt#G_x7Qau-mhA#99kn!_WL`JD@I+k7>p}yq}Z%*8PPs`cp?f!ns;+#+fRn5`TP`Q zM336?t%kwzzCN#ISztH>wUCxBV5YAw%tB-zVAM$}AN?Jds)_yd>Ok>J+uPf90`Y_N znj&2!m=P&htq2%HmH6Inv!DFR;YTvk2*8Fgb>v8yAyrWMWL?b#Ph&0kY>mPd9IPBZ~ z{TWYeeg-(Qa{OaXC@eK8De0{s8Jx(MC?PKP1)S5iq6XEe2x0p%@K}Cf>4n@r_GU-C zJBhQ?g-d?^32Qy~PBCL;=BkiJs078dR!={t-;aF1xe!5yuFqI^zxKUCx?Q5Pk7tn3 zQ=RMlI3;;$!oU_cQbGgyQfbT9mancKn}!DY!lMux!T3P_`Aw*h+BmQ+-PVno9ejuC zin@+YB&97qgFAqY<U}tM?p66YzP~2-l zw)seLIJ`BM{%1vLsbQuO%GensU_DAe@F{XJH8q7N+B$N$9^QJCPbnsnXAmn(V~`SJ z8eoSN*h)=JO|pV_ZA@hw$RTR3R({=|@*-&u5E#_)rKzt8H75PS1D4bED%@EJsh*|& z(*j3RWHeu$HY5sWYmoCFhp^QfAGq*kd{-=v5`C|xE#Y#GuQx~18|tE=94S#n?ff<; z`!vK;0lpESI_{=y(JWF?xn!#z+()RY!jNnH*5^0UsRDA@^%{zU^VMQfg39Q{kYj(S zx~idLP(~XUN6g4n&)S@N_~3el^uwZ)3om+a!8^-ljoVFWjZz+5vEzh*5y2?@$mS(S zvz=qBio8qqekq?WMU7=p>F8gpBeg)2AKec*>?!`~Rp9O@GMDnpcbhubOi_m+HNuoG ziJYZbaod@$K>Op`^EIuy1v0J8&428T!7j}LA!2|P3QD~1$c_g2CjeWXl< zz0wEfVn>(q+OanPwDjnbXEH1BcsBd!!8qaRy=q||t^mOJ&B>CIl2#*q^o0m_T%ot( zB3Y{fBYpXLfeBQekqqpY#{@u5uaiKEccoo@{2lnSb$6)3*Va~$y}J-Lpf^d#Q^Wlj0RxC;TI_SR2BE~{WQfP4 z7SN&{9HyTi;u{_Fp`c!j~2;KW@0S z?q`CN2A|d%LxdsOynyCu2JLBOyhB-l_o1P=Ms*o|BNnIa^=uBX+#oygS6L%(Hgh_8 ztWxg(AsXTigia^!szS)w2W)_}fFyqVz|wrjAH(~=-ZAy1Dm|^OkyS-7tcwYkr~eJR z^dcIZF+-_!3aa1VxBzAB&<({xI@{)}iAfb8Nv6Ubx$c8UG1NjF^DhyRVHQ9_yzxsW zfaEDWn!Ofwg$byO77RVnzY}h2X?ape$kx_&hNdvz(6FqkVYF45D7Z&gM#G+;!lX>_kTd z0wEIm!Tu*!EvRX3*bu@2R9?#b8eoSxC+jmZCg%GKb8>Q$t^*!)YEiS+CftzrTpZ+6 z#0RNVKxA1^MXm@^ZE3jMrE>dBd;VcTo7__q9b#3M+U;q_-bX+$}T!F?C)2 z@g)jKZ|u?}LcqfGVGfRUDwTky6XS>={ag9o)YsS7+NvEG*bw3F<_6y_ckH}!OCjb(_b&#IBq&chm(>_ANc#`^>-P5KNkCLVyd6gc zPw?%-QK|yd-n}!~1!RSCdzhG`dGn@+r{`F>iK(f*-$0(I{=2KM)6(1{B>-qhNL(zI z3%`U7)tDIWr6*m%qMV zf%91fwi{j*G^rkFZLjl~ir9GN*X&p0a%th4lwifygj^Ov{^Zr|Cq%r8O6BU;8w4Fd zNX}J*^92b){x*;%Tm8vIxjaOqW_j(E40j|jUH}t)+Rd`d z%RNEW2xxIjQDfN(IRKP^*5IWP6Bn0LpuQJK^eI2tz3 zoD7yT9qNMiXnVDJC#nEqA3+n+#df=8#USoO!0s^#w_%hO}6&uf} zCNxbAE+>(n$|Wm&ipj9*`yEjQh!2ftS^GD^|mmV}? z#x`{9%6tbuwsQ^dEGNy)4L$fa%M2%l0M%#;$QJ7zi}Uj_hQ}`hf$pJ`v2m>RIelw- zE&{20cNeujAJ@bFs2<+g*@fy+|a;Un<>u8aYf-w<~>g(C7 zM{qQ>lL-7jpOdN<3ds6*t>ilv7Ju^V>gjQEaY;U&ZaZmxMOnF|B_<|DAfFDrsIaim zx;t%|Cpl?O4bI7(EPeG2LMEoA7Wf-G@?I5j%)T8+j#^W;s$}8hDB|4c(=0Ab0KR?9 z27PROeLX=MR`%ulqRq?R{6BvPSksF+6&z=SBtrY1hd-?MG{Cs>u zLhs!@e;|W{+Cx5u8qCJ^xsEv{C55hm>`2&**n~Sd{ffOW$0q(Wl*u*#$kZ4Z))Gx)+XLiu)RE?=5w^YrLCD4s-nw@$1DRW6m=LeQfL_-LQ1V&0vYy`p>J5`KGb5R;t*xL0jNI@+ zAO;5B*VWZ!XE#nSL;}s~lXIoWmsbMiTk}_7gCOS%NKghfYgqLN*NVpRkeasn$ljae zN^*Ss_!Zx&*0^Q5sIo6*nN;H~iJtKhIPLXNm7sC7VPl3_ApZnTY_Nyh#X(p~D%|xT z+(~6C*7^78e8)l-n@xK;Pql7<^@=L<747%-WjYrkrPPaq-QNv@M}%?Ipj$727dPkG;M9p+kpO z)y>S}dq9DM?^ZB|o*oJcWUl>7wInaE3ZZN~kZkL~o6UA-5y^YI8x3}dSDufWGY)R^ znxX(&30MlyL3O*m58sG^0uBDI>>;?*Ef*avokOkq3=U&-iyT2M67!~)_}yB+uSeFy z@>UJK{0{1GImyY%t{nZcHOYk%(mKxvU9`)$fFUITW6A6RsG(h`6L3^xC03LyT$C;n zqpiI+fZpBNB6e2Qjtav!#tv2%N=Z%6%y^&qj{Lo*EneZH@D8AG#*vEe1;M$tdk!R9 z8tCY_SqE8JHCKvt_xxs+^?!j9pM;^-Ov-S7e@?1S#x20h2Qy7?p2yECV@c;Rg5uj#T*@<@2%Bl=0}_tBFcDg9|;Klu&upa_tzr8l$-JKjg`+TuKYTgn`EkXOg-EiR9H|pElc+b zk}LC)K-Co}uw;%jK;Ot(md%tOQi5J!pEO=h^yM2b9T_>c7#SI9ouM{xuBQi)jUdHW_PQQ)auVK(efSSh zs=zX8>>`8hqV0~)Y)KOl9OUt$`sNBTxe_dP+l=SUFpbr}00TYE^8MEJpCu{0#uENB zi)&pNdE{6n$;!&3AKm>6d~Os_ImaCdgwB-PTzWcL_rR^8ly%N!o^K~UqMgk_AixNO z{YNzDh()~r{34IxbR ze{Eo>Km?=QW23seI|Yzu<63_w z(aJRtS>D`(!?isD&`!=hefspRxW9wL&7W+5-0%DZ0T8H;)_Ax4H+a>r`NTRoi;&{k zy{w0?pPee90t^G$?7+alfqv}ERl0J8YrkOm+SbpR?awb?axjYX?>WIWv47WtRzS@A zJQ|Jn($ILm+6)Jk=oni-b3q(^;8shLR)j$0Y~xG-fti`n83$aKaW!lCV=&t|J7B>% z`cp;u`Gz9g;Z^R}P*fny#7#?%4G!{UAz+ekSC5&XTwRN6UpDaLNVQ1)WQT^OEJgz6 zeYc^IK30naBJ1T+UDkY9>UhLBm-+Nyi7g}rWHLkT$fSfyfHyT$)xs2sH_34Z*Ilof zx&mRn4Ic)|J_nUTmPHb zfYr%xuci3U$~PUIG}^SkhDF$hDrJ>X_hwg-;F84-vZ=7Xu<$F*n~I;cv$Ko;2s=F+ zd7MBoBCEI*A_BZUJn0@(lc>>K3V z4**udWr(?9!PAF~YNIa#+?i5-J_p#_WB2@g?sjtyU|t>>&;|sc$8r7HcvVYFP|z&M zC@b@L{CMS1K6LirR`IMF1*Dwv;xElC7Up=H3SrI|9FC3I5TL^c#pwNTh2#1og(Knb zYii~n2pQjMQ=3x>{si8LrbJk(6()S#sDzVvT|X^pj{aac@*3xR{eD8)hMJ~kDDnuu z%x|5mB|inh0xn*S?*o;%4h<)F_YIgtiL+Ci@y3UiNaDU(U}IfafIju$;?TF>^ZYlF zeII-6=70D4@&|*cGA3dsv;POp1uXlj?>^jL=mo$jKU@l;4=^SK*F%9|@%x@AFgEb- zf44F2LNO$b|JBC0A@%?E``re#jo|t7>_*Wv_?GFGhMqcB^={CA E0e}6U8~^|S diff --git a/uml/documented.png b/uml/documented.png deleted file mode 100644 index 4ccb69c480a973e7f5413924ed2f1df5de6f1998..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4433 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 literal 0 HcmV?d00001 diff --git a/uml/identified.png b/uml/identified.png deleted file mode 100644 index 01384cae75891e86ad8d9a85f15ab78e801f0ae5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9068 zcmb_?cR1DI-~So*-iquQAtN&!GO~#fq0Ez+93tT)nIV;tbxu+!4%yk++1Xp!duNa5 zrk>~fT-WcP-}SqG=MUHUIQQp$-}n1|uh;8+hw1C8lanx!Kp+rujhiaBAQ0#;@V$x% z2L4*BYHdIuT;dukN=DwpD=7gtS%&r-Nja5NvQ<^GLy45)s8sM`R8`^-R54U4rYeCq ziPDw2yMhq{=EO=ty|L^{SCkm2e~@s#7UsBuM@+*_gu7`Pc+-N|*w!iLRrt+>wXI6G ztw&1*&5}r%K&Lr)q#F z0UlKmhW{S_-+wt1@mHE>5c-5%mF1bY`7NXC=-G?u)>WK724|C=%?QSc2!wNDFT)bk zh>+u2XETCDfPX{VeHVhZH>R3mV`HrXj$<)iJrY+^npa{RD9t8RE~J!u_5Y#ekFLp@L{O zMFqbDIxQ(lN!ydn&CM62jNDfzMn_fNvH9;ox2!6>e~ym6+=uKgE(*-fb7FG#mg&!Q zfa)LDa&mH#<_{_}PJ6I7*$^RnQu^^DK4xrejF6BpUf7}*~?7sM?o8YR+f-YPX;Sqj`U-Tw6*u3b`6;*=5LR<%#i!^OpQOPetVhbwb!aLR?C&K2TZ z6))i`FD?B_aiYfQ4mZcu=F)-!E}?3%04FD{)2cV)k4y(Nj}Ai~Kuj2j%RhdD_x9^D zcHeOI_qPmR;5^&)ZDWg=a}&`O5)%3y`uWQj{QjDcL6x+$v>!iyOsI07B4Fqn7_d3` z`9Ym1?#t)TR5iGq91Ul|B{R$u+1=gU)`6|L&Z(v2!(FRte;2PZetv#P49^Mvi*{9T za6^9&4y^+`-j|h^7qVDwX=zD+b7_`HqsW9H%^t6{KcnB)qNJd}Fi9?3@3|GW z`e;UEc){An2HsOtRCG)2gt+(Q!hgi|c!~fofxX2=?CkE|An#D~SutmE6q+-Bx)YB6 z#1Bi{r2)=kGz?EnOL+4t?Shiw%d-=htyK9x{WpA4_1x>v+&86Yw;PKs=FE?(3zG&Yv=`E$3kzqJKww(T9d+(2Ld zp15^tN=jef*WTrki2e5VcHkBHbmi_dE%cTFK-(!-vD9e_KAS4esH*XNQ52 z(FJX3Wkq;DBO`-{Gp;CGQ%?ER zb)~kBjt&r|useNUO!AGjv|7&sL(fic@7vg$aa8e;VeIqq3U0 zxafF?v@rHviQ7b6vYx$DaF~C}x1ypK!+Ao28*J<~LL0d`VK*o_E@O9T!y)stv$J1_ ze{($JYOwr$8?AHcOvT(->g1Dk4Qz%r>gm%<`u*0!_0Tqs!sKIax*Pje{`>ftgKD-G z_O}!;t^5)!>EkuVGAbPp2BmA!UVybc9iJuj07R6eD{P0c_kte4)~N zLs@iqV8B6AR!>i_)#MeE_wj+p@pg}%{Y11rx>3c)=i93%NaTDd#NzJVqp`;m?>s(z z`b3o{w-Jf0N>9hjc!B1{UKY?vlCH^ZY0*qk6cgh_6J(K+l6szukEecei6oe>tE)>( z199Tp=;+-aU;OCMu1-z`N;@4Xa>GY15xG3~NtB(>^@zfgXeM=yijKCK?dZ_GeLEIn zHcLrHc5|Ou$~9Tux4++a7;ih?%3tRC^`ng`^@5ijZ^bGrE9vR!?Q2*sc5Q8Kbi46^h9KSJ<53x*=>dO@LIgp&+|t?_5fPzeyT7E}f=2(kjE%!! zP8%4lvT?WrNLh8Y)g${PJJhGQAc!}b)aPWuhrcj}#Lg!?8?*{eo1U3@5NB$FaC33_ zotbMI~}vVV4csb)JY(>@LpEbPNo|#l^#c8~s59 zgoKsGcqsc9CGPO^wEQn`Z=|L1!w%jGC_`8Rlf$)~A-_XlUltY?rpIIDj~zNw{kG=~x`k4mEn#Q-Vd=8|65YA5 z@Zc5F#^wg&koG~*`uOfSy@R* zN%8UVfrQN1ce^owwAdJV43rN1O(iNpt!=Qo+gj4SRQOu^;cRcAss3yCq4vd)h>NfNU4mB%!yFz`%M~C*5|{9KeP}a>e@rh`~-qSLZF5w zZ~TR_6^=of15(ME$&m*_T1b!sAMHOV)#M;0Ap^Wo`aT3t1qKdWT)M=>AEZL@rk>;( z*Se5IJRSCNt~R1Vlz-yA$s+;`@Pr32rY|-zPM_nO(O$O& ze29TTXv!hVnRb?LRUAz&VNQ=6GBi$;q}M`d1zE5!2Q7Y3w4&1ngBox6FXOd%3o;V=M4L zB(o#H&Iqg45B&W3%y+ym-HKEY>t6TVN?DMKT;!)7M&a5BHbqOQu3{oUP&YUccd8lp zPp2R`x5H-Dj9~7)d-2-t zxbhzBB5r_^4NIJ6^Hj5m;0?OtWB=Ujv4Xj~Snu7x262LpJFv?PWwy1BZRJvs6fDk68)6{Sb> z{{eQKZvFsd{2=R}d$y0rStU;0#h01KyZd!-lI_x^D_5>amzPtW)$MHimE4vLKg+x- z0#3*KwPdk@333_8NKBeYmGkzO+^Sl$L4E}%N5|fyp4MK)!zaz)EzeD~u47pMCpyYG z5>qCkz)kT{ES!*9!mBhpTlU+98+q3P= z?>2p(D+jSUe?}ZYX^vO5fk{VS~fN|X4*;8&O;Dqw3j_G;%yEe zp7QZohIK@YkR4k5N1j2!P(2h+$KymDl6P z@TF_lu7S{%(63WEJkIAiQ8Jm=sE6O>O(*ZW)0PaEFflgv-)fiAMJ#c(5Fj&Nj7Ks{ zwHb^_OTZ51r~8H)i^$|1GYgTE53f~7UT%KISE^zfmdni1NR)Ut=3!#{B?gds}@Fx_jB# z#%EV7-?KRe(^jNBkW=pEGxFk0?fJ6ya{u1X z6YhG~)(_1-{+utlCWeQ_Fc$$}ec&YVgzWD6;?YzeVWVf&kzr2cBU6D>pM-WsOXf$# z#=n`iK6iO8;Ve>#kg$W&fLdh0d+(uf!t2QwayEME8LftUHYO{otE)>(iDbE1=-*K@ zZU>wmPBbSy{JU~lHomT9B5pU&ZW=qM=Uyvz(|Cm@FL36MS2pQ1p?WM(9R%OE2+qMH zUm(?>qJM8;DuNOL;^gm!i@A-PJ1IXIx2sS7}kQerG_is>ie%Wea`J9!Rt>S?e}tAGCAholQ*b&zei#aV$4} z8G*7yY;p0X2=l1UY)xUhotm0jo(UjCxUi=I-d~0-NEUiuy7>9AK)QeDNJ>3v9cfmq zh1?N@3+)?(v1WI=+r457s3AI_4A_Hn%}+&RspYr=)h@A^;6)~x_`gMa+5E(lej67z zxkF}Yk3?n`6f{re^3-@mNGgeI;kg4ZeN*Hi)35FLa{s5{sqE`v%Lc zF7#xC3UOQA>Q*JP;-$T%_*n4w5?T)SXG#sR&R4QkUysMBxH3C`<+;wy(ka7&&Qx1^ z>_C5iZw7fbb@kI^UhSI-0)oHu2^dBiiw`dBhp@0a!BL+~HC`F3C7xFHB?f!F8S^n{AvUDfALQlk~CpCWn!mqoujpZZwhD$LsIveg zp`Z{o?7u(5xTUdVGtK6O&L;1AXZ>RhuW+SQtRq@+7?{=q3gM9%|MK}4XAdPg)+M1c`Yq15w&gHPP4%Kme8oh?W+9> zPh@^k>&5=0`GdHjk&zoJFLS*gm(WOF#$7vHwrzwD+YgFFR=gIVx*1Ecp8$XR^!S_q z!2+Lox2p)(DG}T@hpce=F>KiD?!~z#ObfnC9ZD7}V`Rm?FLhx}{secQFKX7bIdFvb zTC<>7E$@mvPj2hpXZcd7dwa@s5z%8o-olvo85!!A?CGiizr@4>%R-Z(Kg7iqi`BY* zm0$lnHW6{=UYc^7XlrDhgQ}x~?=^YaN$uDH+`sXA(1~m>b z>E+^U`j>+rsxaSTz3z>+QerBHh64-@7typ7`XH4u+N^M<76#a`=HS#MV{KoyN~65w z)vN4Q(93sAB@1lWxK8unwl3)6>sR)51dma9(|RQHFSn+mm(nyF+J%K*tdQdU{#@gh z{`k9w=t1TW&eLXSd=4gPPuuF2pn$-(2%CzK819xa%7WWH$#T$ptv)h(IEYO7)@WGw zLuiL-*oi?XJ^+q7%Z_k-{fNG27MMgoFEKf2WIPM=*u$@rSAM!LFYf5*Q$zP{0vNKk^wYFkEp~6G$K+J;e!ykEg07PV0?|^8q zes;RIVIxkM+0IgXG{qmsCLPNSH*WDEcqk1RzS-oVp*t31M>6SV%kQOo5rZp&Cb(Cm zcoKS3mtor<)T8}%<^d&jMo+tH>*^9vDjJs5lt7<&d+!Z&(yviolKFwAS5JMGj%H+5T5RAa$M0BC+*wf$oO~DalxHul zYl^+1>ni>zHfem2M$-irYf}a<%gNDcvYR|E$o z41&v|bm-=W4A)a%k3`eyTOEON=iuN;0AfVaaetP9suf1p_|zHyk4=v><%HjEO04p0 zsGw~sH1{;W7WU-cJqVw^*GqHc5U<<7p3G}Cx`L<$#mUwV&aLXC%ryF=pS68$^NM$papXqYx5tk zjo­7|25i+Oc+g!hh}awkTSkxPj~`4u-rl9xb(3%kWrJ=D=bfn+A>f_jkd!G|^P z-*cxz_(tArG~hC7>d;azoa7Usyzf@G*Wfk9aGku6K z|Ne-S8y_|OtRZWA^3?#720QoMC`$M-j433zuAZ6ZY#KN+V1;Ko8Pl6HaT^Fx!ErR8 zFyB2$6ZmAtfxGttVu52L>N^K01;rsc`^nQ6-jJCt#5kbOd9Wd@H+X#T=HH{yY^CTr zw?1IU{x?~kLgHkEDJwbt{{1`PkexE<0OZc>A)TjNSuxx$ZeplDSQPxhjqU`!ke(V3 z&|j$B&`!)qMWE04cv*1>%h0%jr`us%TpTH*@bdDqX;|u*3GVJ?LBSsXo&^8R=`isc zJ^5!4upK;9y|0GL0%%4l$jChKTJSvBCfvwl{5HI(UR**sVVc zJG+m|k_vyh?hhL9`VO|((6NxtJFojhX+sDOB2NFZf@Hg|D;l&=L;d~155CGj`m;be zdEd=vxYUc19u}7TcJHjW+>~?9ZP+lxzwTD@W8*TC^bpck*A}g%Yj13s8lD z=&XupB1U@deDgb$giO!$u+`U%w;E4`*NrQ%V=Y!zN{Wl~N~}$v@ihTT^^RJSbQ^7& zOBc>TW1RJ2USbOApK}rF)$z{3$APSof_%KZRNO6vJsFCjA(int05wAPCiXs#%!MRCB}1Ix9MDx-1gqzCWIFL&x@_%2$;`pUtc+* zBoeHP{VAZL&!BLk)}zPwW8Jit+}s1LA>QKnwXeiV`0J12YzmM znS#o@Ax$5x_VxAa*C!|b*`@jUfp65#x-5Q$=$*|4N*J1b{ZjZ0S}&EJOANZ_E8dQo(6UrGhRziBMURau)MA3X zX@EhM9vrJ*P_HT~vQxMk930%;fB7t!Wy7`&M#n{mM>3w5R7!jTZ2j8WnuxG)Tx={4 z3ysEk(jWFgGm=fadATv6BB)XeG3af zA;ntg>_R61zl)a<2TW)cAP5Qg^di z(kRfZB_$!z_b@kS=AF*^Wrtyt;Xu=i@u8RW9|@Z3qTQ;G`{&xyeRLr}A%K`uJUtTs zg`eJH0&HkO0cQKh9WdAg8EEIr*+wvRoJG04M`_9ZOwb^3G8W`X!dxPGo{)ej{rpl; zM5N^UYcf-JZag9)d%qK`l zeESea;&R~@mtn=i)Y8F0nIM);{)z1>Gb=#?;0EUHFqkLGkfnJK*dFGcL?%qs(UT z{<51wCkLT{Jd<>i3>LO&G&|uDtQ3dDZzV?WzlWq4%Rqra%YxRm z>)+_Ztt) zi+MIAQPo(Vo1ZQ{HmmLb@_Gi#f@NCfV8h7kG;7HJ|63zx_ci`rNjXb7=l4WZ4fsBt a!nGaa{E-a&o8T4=L_<|q1*d#3@V@|}S}^(m diff --git a/uml/identified_annotations.pdf b/uml/identified_annotations.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7db8574495fec5f262ea68bfdfc559c2f26593bb GIT binary patch literal 2328 zcmb7GeK?fq8c(!`;p_*YeB?c4mSnu|JLa7kvLl0$RbfW*IT|xBUe}n>%=lP?QX;Dl zuGUA=3VXut`btx=v70ue^ug({IZ=qzhJ>-lh4ap2*SYFk=Q`*4=Xsv{e(w8z?%(gZ ze(y{4abuBSI|_j~G<>gzfB+C64v!`{Ie{!pC_^P6OURR`jCfFYLnuvA2}A(WjNMb74zbpQSe(+(=FfP8&!{ z*N7cA>AAAhAiw;}E5@LBqSkqGq9yp?5O@PULyXl=NxCry{`|SN#turjB8l5yVm{oI za;{Nl?B?*rkFoVEeM^EidfoVRLG8WL4##YvERAMk{FbltwswRF_vft&Eo^{MbC7%E)G&KdOkz zjc{=E>x9&5!>f9K4aawAXv6ygg%UUg*=ntgkw_)(7Rv z44orWeia=V)h3Q>f9l?;PjZ2DkDFI*FuL-K$6OGV%+dREp5YosqOXDDz;clH^C!X3 z*`S~oqYqqYQH`*!W%Vb94X*hmCFIG^E3~XjT2H7mcy!61Q5UB2>S&Xl57UkZ-IZ5c zQN~iDAC0CQe)QQFVVkiN){~jG&e(urm(G2=qo%~5!~2a+7AZSp=APQ{!~=>d&5ep; zWsrB&-G#qh>RQlxD4%X|>o)Nn_$V;7`x^hA&J3s4%xjD1KpU5)`{Y!ia)tYd=}ikx zhF}g9Snd@(u7Q-f1o!uCiEc>$_D_p1^|MAg&CM^bPhPD0p=*It^BT?`UF@3Emu!gg zeZg}DORsMKO>Vz5n+TRw8f$En_eCBus(3|dZ7vAWu*Hidzd?x|e50>_Mda3dZnH)S zr!L$@1_WX2@8ljll-7&1MYjt11sTRUq{{Ifmi{DjELtaT{Qe042e-28e#`D&F75d* z{Rb@eeoGGNDigi#GjWU?s9qW#L44AmPcBDI6J{eWM}AP$s7+$WwQM>bW|%vbrA;)s zR;c}{+e1C0m)zodQrB-EkG-h8d23sZ5J`CsTp<3Hqc|OK=6Y&Lewl%?VP<=I&($vv z@7^sm%D?dRPHA#+hHqUC{rs~^`_k_)`i4Aex}mA2_idAB53qR`BF(;M3hY((gJ)l7 zg`Xmsx2Nu`w+Qd}q_dU%t8Qj?y+;~zkJ){RUw!YzFH;~J7nGQBwgBn8UOzVEn6=o` zH4%U^4~$$%usmVwJNuVQJ8v+jwrw6Z$n}gnmbIVhhXPAEjeRy7OB66xKmBuF_2`Gy zuKVY!2U{HdDz*sCdW+`mtVQj%KkBWulQpH7el!2D>s71#JcrxlbF8kSW&C(JCdlG$ zF$l6$$lefgXK*+)&fsXw&JHs?+h}Gpf|y-J#|lpFyIkZn?{O@Npc6Aa7$Qti_7?Q^ zXJd}tV__2Un)L)!Bv{cce5DdP+N$8WibXP1B$EOv5oCjYU&NxI4=)l0*{D<;C*h+~ zTorvJVm=3z0l^?HoB-&DCdvTNGX_7#T$x>0X3tR2JyGVtk>UD@2YPT|fUHjJ!65_o zsuhC)vhbQJt%U(t?PHMv%3Bxi^x;YH`v6q6XE!Rqcua9(FobXEFa(fkP$+|;>PXdx zDttw_IdS1K)!kJMz;D}7l>wPNDXL!VM1}FF4CC`acM-1Zm?#q5hlyN7QtbErYF^cC z{_ngbrdTNO4i{nv;?V!0h6;?88hjoAuNGI~wd#OY9V$px9A20}8mwZG9lA=H6m%8G z;n4kCF8XSSnpsz#j3*RFsu`BP#dtNp!|LJPVu2gZptYML8G;dr3fV&rFqKRtK@=+p zvf2u|;-5hoCKmnoQ~0|P#PLyyHKuwpH2`8qv4epsG6X>+JTV!7{pt*aMHl%Np=2!J619=I|9DuUP}Km@R2gDG_Uji?47`ol(bz)^nJ zM#VvS$A-LbgYdrJJ4b`xk0t+yx-=?|K{!NNN%YQW;MoQv(Y-P-z4r(cPOx_!mW^ Bm306B literal 0 HcmV?d00001 diff --git a/uml/identified_annotations.png b/uml/identified_annotations.png deleted file mode 100644 index 3b1af1d5ed215d6decd3c40342af073a5d34e60f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13374 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 literal 0 HcmV?d00001 diff --git a/uml/interaction.png b/uml/interaction.png deleted file mode 100644 index cc8cbebf02a2fb6bbe9718bc90046be9767cae4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5082 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 diff --git a/uml/location.pdf b/uml/location.pdf new file mode 100644 index 0000000000000000000000000000000000000000..eefe8eb91cd0b48c51e374a883779bb588611da0 GIT binary patch literal 2129 zcmbVNdsGx<6!#V69t1@UU+5f=ht%%8c32j1&D~`mAc%md0ogG74NNS%Iy)c_C43~g ziiM<@qKQv@042u3(lj`lU}~Bem`XkpRx(WsTRmzs>w30>=X9+3XTG`je!u(O-@U(Y z0^`*hF)ERY0^^Mfc1LLhVcyQ0WQSi=}Oz``0M$pJN>%mx5Y1Evfv6AG6R3WbGZ z0hukzt2{O<*8CIVakytzcjJ)E(3UlRUhSS^8n!m)W|pUyY%SR`{|BGil{-iEKG@~8 z(tGA4{jg?L@iLDng|gsg{pOYmc?%ng>APa?WyeWQ;AE1|D#fk2nyjtXyID`_S|;0L zM>pB#`geOBzO{Is=Do6>F`9~q$K3-;c6>M}VCO3KtGIQi_tbzP!v`((>PRhq#pBH( zrH%f+52;qXAYX%>4zk|ccfRw(E7bA5EgtrWw}Q@Mt6K+XsZQ-KJz0FJG}!uENO?%> zZo4sg(#oH=7qSno#-7Z`tKvW?tU5dFHOpoFfIvmu;s{ z9jT1oY+I%5t~=Oq$S%%bkW94Eiyqy#<$j(vg}Bq@CE3!oQPpz&G<)Xiuu=Zl?bi!a zYi3T0X=j#*i5sc?f9|)2jJaK9jXOUk$ndCrh4-P0g-w3USKfvDm%^&GzXp`*bOATc z-vA#FT_^W+)ZV$!h6R1MetZ0zBDd}D6kQlIWp?wL0mTD#{X9=`CrXop>&q`~O6}?B z$l6@p{$PgZhO(PCbFay!hQ=`QofHq1niB&tNc0_Ui8eO8b=K+D)I5~>OMJe z9QRq4oBIAH-?IxBtbQ+YPWl4o*ylSuM_AJzMh8oLPwlae&mFd6=~DOkpAq%k>XCb@ z8*UEXh#WUCF`phX`fj{U9H|;_%df9VZd+co^9{G2y7jvo{TIBlmp)j3sXFz~JEQYs zMo>EKxf3JT)gGPo)NQTycu|u^dNN6kcj=~!*F{{eoc!g*sskhJSyzf4*B{$gn%OhD zU6pd-n-p7SgHHd*_VnyD`=p_-1q}U0?dzV@+zcoxA*-gigN{Hv#Rbdl9n}n zWUZU7KhS+paXWNLx&OpSqrEy|_R%N4cUuz=xDS2oS#sKcG5(;ku=;MPyti~q zh)?MvKM*eKUBqqhacf^D2@ieLy?@)QaV(eLe6Ost@{j(D$Ikygz%#;Ujw;66J@%US zz!JK*)mt0gRQB<_3FBA%SQqt}TxFQIQ;JG-o*G$nva#E__tzpff?N*`VeJB}5&8 zAt-@_AvhvO!w5`_NP`h1cp|Lg{}mi#HvM}PKc0ph3a}xJFqyRwA(2W@Xg7u+h?ob) zAT$Y|odhY9l~bYAkg3}EY2sYKT6o;li4$EX%VPm8LLd|s@f)2F6h;s@0nw1thDv2T zrNRT5TsA3BS|1x4#tW*C4I_A_`q=OnZ3xfB3vp8U3po%u@q!H{qzE6K#eZ{YZfIYA7X=LI^yZq@^@YNih-yQW=^ahL8jWD2m2#QW1$GIEu>* z7)@ie9MItujiP*6xQxK%xFJlgNP`p1W)2cYA^}ch3INY1PjR55HDX6+L>7)@IS1RQ OOezxv21ZTSi2eqKR1*pS literal 0 HcmV?d00001 diff --git a/uml/location.png b/uml/location.png deleted file mode 100644 index fca61090bb5bd8a2873046052da58cc50b4ec30e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8285 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 McQur-3Z_s0A0?m+>i_@% diff --git a/uml/maps_to.pdf b/uml/maps_to.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2b0db63d96128b9bcd6e3d20e681c0b36f7a52e3 GIT binary patch literal 1989 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 Vs<34(`8EjrRF!Th7Rldv^e=Ets6zk% diff --git a/uml/model.pdf b/uml/model.pdf new file mode 100644 index 0000000000000000000000000000000000000000..90166ef03a7b6bd9b78caae85e10bedb605e19af GIT binary patch literal 1701 zcmb7EZA@EL7*^&KJ29vkB9m~Cb(E3z-qZH>1G_TX($ZK)ZOd2qklWtVQdWAm+sjfn z9AuGXuw|NIoFdL?fI-RJ0&bDGjR?57FEwL}QKsl%E+LzaV2nY3cy6ib#*Eo+a&ymp z-}gN4d7tOW5!+2>DU>Ni;%hTsPl{B41gyJ3q|*^*e}G3EVGhtdG9eGkAi{=%KE56( zm1?~{#B+#l6otD_xr*5_@`+P_mCt^;?qTaYD>$e zOY5Ww6Q;KHUA{nm{;?UU&hpcruaC&uQ*J-~dGd*kkFSzg=X*@86W4R{6UuI{TvIpu zQ1?mC<+N1sig#=|m3503ANjU-dSLGxeZ+X`WRaxjh2|X%CB}2Mi$kpg^@a5vnfm?R z`(Ms5d_SK!lX-e_tWI`%<=#Q>&#T6}25k$a)xW((Y}u?g&vs@%o7nJNZiT)!c&ENtZ%lxdEbwb(yyE&2m2hh+WvPZ z0-ZN~XIn+k8q)4Jj5wcJ`Ra_DT5FVZDC(Z8Cb|4u({ zIq5cC{ifohPoCcp$vfr^XaBk}tNDg(SE%_ZS69`A!G`U*=XUC^O)pZZWe4+>uJ%Vo zD9FT=#4AC0P22%SHprtO9|D3a9E9uDEr_twK14WBh;8CLD1>cd=U9&u@t}&pP6C7r zg?T_&8*!N-_BF=7)*7NP%v+p1HWc1yaY6v2z!s+*$c2?&PndB}!F&)XqB*l1D3=xr zKrPkaDm%^Lg8_9kQ;ZltZD7MyB>sh(=v$-L3!@1G2{oB79$IQ(0}N3Z#J2YbeMGrGSP%^P|NW1H3uk*^@cY0OMtxx1=%Gv80sqz} zbRRtg%40n|G=TA;1Xbb*GM*6ljwN35GodQMD~_7DF+zlqZNj?Tfu)UaiTcM#^K^jq zMST=n5-^Sr1qEXbidn{ljUqAS$w^3&DpEmep;}H#No6)kX6Fz_eE;x%Hu(Ql*q%(2 z2XPX=;LMK!B~!{E7?6`BDaF8Y09}d-7ci6=3P81_z+$&aw;?WsajSE3;wKAp$ScCm zf+D;z_5c+{DJb9tu^1$k*bc%2g7Fx{4BQNU-#qv5xs_yMU z$?u6lD98NX-2+0^9e6xP`vZs*Zhvdg%YvvL4#H{zRXU}TMx>hYXf&i3X(&p=sBmMq z#-pJrhV-iRI)*0I2zro4t5s;B(u)|%>(&!oc`?y^NA@I aN2QTQl@Wz_n&YEvLj}}|#Nxsdv*;fzF*GLt literal 0 HcmV?d00001 diff --git a/uml/model.png b/uml/model.png deleted file mode 100644 index 6839c4b24c837021ddea6f11943c534711e0c9c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3863 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

    $d+De?p)>-y-apRJOONg+wM^W8C3guvF_$@k6 zyK&`_$(_Hs9Y+TTPP?N$3xj)|{3Jms21&`uvBR3RvGM6^m$#lh1T1#7$F-*qDf?^f z7p=FexJa&E-S2DQE`J0n9`<^Bxvj!?$9)RU(k#Xc^&}U&hH$p+PZ!Y~KVls5q#VDm zaYVTBB|Hfo<E9&HwYj5Tz5- zo&w1|`+c)VBc2cJvJ0D;DbM(fBx$umGO2kjAY7{Y`fG;OyCm&t+_5n+I*0Gy6aHJa zZS+JH7fJ)#Hef;!7Rc&#se!NkGwn zbq=q}a`YW3Hn4iQsQI#ZVI{!&716U70kRnt6&lh3<56@d-9iBuMDv}xX>YbgC`3fJoAE%T-4<#uGWc%lbuu(SHr zat>V>*(~IyqzZdTC*}yDXZR-5l@jVk=elQ)idKQCQa(sUjI%75_5?5%yMpaRu0H%~ z+QP%jr?f_#6H{xWC`#cOY0cU4t zCnqPNp`jHO6+1icMuZy5WdPtX-Rrd_fIv_ey4~FShYQzm$Gcp$lG$WD0+&^@NF45+=EL`6GA*0uhNH?BLc^M(@W#NP?vk$>fW^ z7ab4;g96lPnU$*G@uHs0LTm; z;#u%u&kH|__u+hbuQ-qfbtD(b?h!~PgCh?15qyvFWn%-=zSG$j{Lc_C-}Av5Qqz@G z|8$bAV{-iWM@#+x{G+m`H;eNJI|XGEvk_8vaZ!y5KgXAm_h3VZwN#hz)7LqOJnR-SVLu;fI1;NlbyUh><0E-TvtqA)-+`*xr*QTXxKLVW=o1+6n*l;6hC2@r4g_V*E5Rd&N_3@0nv4xHN{W57=HC?eZ{|g4cm*K)4Kabbxm4Ru`MmTEv&nqvc#D zcSo`XoS0dCr&X+Ioq!5l94!xKUvVE=Rt~qg)^X(WtLgo(XiCJ&g&ue79Bj!@ttHT=3-*8% zQ-93d?XtPxSE9k$U@?$gSa`Sd9v>ecH}|`0eo&4rO?^&Dp+8pSS=ro-sJ$h>W`&q< zCS!;Ce4~lVEhrcur~vB1vFseOlTX0&M(?j*ACC@zd&D|H%VhZs(5Mo?6oNqEke7Sa zY@U{iDt8ndOR-e%t@k{x%H%Z3MxmDI?w`!`936t(eU#Dh=+UFx-uU=q07cNr9KE`o*G*>WM~QdyN^r2=m-jSJdo;DpjM7~fQXe`W*#8j1xRbxFOcqB#|4 zsR=5y+JL;H>WwIxYQ0CfS*KXUNc0?ISmDaLq*r7m;+V;q_vYZR1sc_DeL-0OzCnz$dF zzih{9^>%^0x^akn%`W(8bblG_(;|FLT}k48lfmw#B^<7u350F~tyLg%0}Apor1p7} zuIy*ziE=|a^0m-DqKFUWVQ82p&TVN&5o^;7h_O>GAe;j(Y7OYT(drS|71wsut-D7{ zN+7H{{m}mX?5T3C2+hq(4np)2z;n+*VOlKW6^P_BYP7ynQ&7;kfig2T9(_hyu)f8=^PsrJCe*UZIg^`*r&7edU>|T(#1?&i#=WXNDZ(t*jLpnccvvy&jNA3e zs-|u$r@B+dsFB8X#{hjR1rX&wFEp8bzy{;UrxRa9|b zVRBxxo|j>{Y1n+O)&BmzpFC`(2~C7(&zfKBCbFN3UqEya<`N z>8NC&JFZRl73kBn2!SvpjUkMem-m3!faCOA(2W6-_RYcLRNPHvPsxI-2{#M8dKD`B_9{8? z+uE4nPkxZ0q6{N}^xZNC8G|PJj;IqTZ3h0y8Q=&CsRBKx6N$OT-{~a96C79sspEBy zcbX5<8xnM(Wenu>zi(RN`aj*olr(%n_3PN>giX)`9Iq7TixRr{|L?rzKc_ZXZ=921 XLXtH&6xT*T6M=%PvP?1brO$r>Nm4C4 diff --git a/uml/participation.pdf b/uml/participation.pdf new file mode 100644 index 0000000000000000000000000000000000000000..907ed45ca594da84c682e45fee29214013eda483 GIT binary patch literal 1877 zcmbVNYfuwc6wc^qF+R{bi1jgEv{BL$_Un9l~mSt`|>rZ8bH8hFP6r{U`EExBM)YD(>yXDJLf=H3SwRSBA_Oe zI-QsIAUa1{P*R=N%r?Veg$?QLx$j>2d|T9lCsnj!`ohz7RgLjii@*-`rygb}{X?wT z=a74^?^P0G*M%l*EeZ*h#a3JxR z9=4`*a#au354qXe)bid#`Px_BRkzQY3{#-dQE3{&Y(1JZ3b-Vf8Z5broSPx#IT6vd zBPY!YeQ~F_cEaGDuCVT?@uhE{J2J<;Kh!+Qpu5=pamnEDgUaQ1eb;u}J&Mg*ttA!d z&yRd-y>a1QlkUVeNmz5*muq5u&zfcoO#G>J-9=4!_>PQ0m#QZ`*f;mgfvCt))%EpF zOV8@u=bKxyeT^H_zu)}lXPG~0?{8|5tsQf{de1qDq^y#uT31?Bc=6WOTiS(BlWvR{ zJG3k;Zy3L)?McbXxaye)>rPdT8`Ayo%|nyFsH)perPz}eO&{K6tQan<8<7&)WVDu+ zjkCP0IoUn*uxfkz-Oh%^zRdD;`(t$S=koLlYvMHPfZdAyl{RKeZq541gVE-BA>}LM z%D!42KfHKeM6t6Tg+<*~bnLvNo@%_huV{YfMDv>K7K8DPRW+j%vP^RZZg`fhereKQ zi3=IIW@Zh06>qnMtR!J&Sx&@6YCiMox$~1<`+Rq%u21=6^xU?`xyM^F_-DmYj|TlZ z@q;af#-aDxPnKHp$8FAvIAi;3%v&3z1AK)uOs2vSCA$IqF5v|6yDw+*F6-QSvnz}R z9jC^2*=mnG-O|x`t~EbnCUHOZ#f5<_l1G)9o8E~&-0AD+_U--Uz{c1p11-OF>_g?U z!*l}TBveBs z)Z!GWRzTG>2&c)hc;S1=GaUQxUIINGd3NN9WJG3u1ITDqG!7046oCo>m;ks{nPCO` zG<_V%ii}H4O;O|{k5|CWlFNfHEASwv6apNV3Ks(ls7X>u0w?IzX>oxQ;sR{14krj9 zr#?DdE3~(d4nm>oeRci)piql`euS!@4pOk64kxt2Aoq!(R0;FZtK&U1<3=9wZR%oqn@$7u~jq#aUP2jQf&xC4<6J4Gl7oX|jBj7CF3Eup3%Wv3|0NkbAR zNaV0<2_;35cBHdmW{%^5NC`7$VU{AHo8Kr*% D>n@X{ literal 0 HcmV?d00001 diff --git a/uml/participation.png b/uml/participation.png deleted file mode 100644 index 252ffb56826561ec1050f036487c4449995dd305..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5754 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 YTej7+xpsskfSNJ{p^Q|@Ry2L~KfSXy(EtDd diff --git a/uml/sequence.pdf b/uml/sequence.pdf new file mode 100644 index 0000000000000000000000000000000000000000..870e6b033aaf1b627e117560fd07a3c06b8666f9 GIT binary patch literal 1686 zcmbVNeM}Tb6mJ6(J&+Pjs0A9v4+=!@W_I`XK7?N6I1aCTh<8*F?zDTmbFg^q!rnrz zr1nc&s`d|QX*4ZLT8&z5+DND|O-)fsDn={T@Q<`Xu^4J9L1_~cEA8xY&9%@pwv%jj z=Djz+H}Cy^JDXMEaOx?8QI|D#^YT@l2_PW*8+7^k&?yF0tUzawQ?Uc{vVdVJmg>}c zU}R{UEu<=#Yt)6i&QzAk=TOp_2US0wE=yY_esC(U{MyiwJCEJzjT?(!@TUE#%#oRy zuEVaH_=UT4MZ52O{c`KH_p=*R`?{3WovXV0JjvUu4-e|t`hf4@WFFV?%aT`LTWQqA#;9)a@US%q+|LXpbZ;5Gg*~V>5-s3}W?eG6(@}<$z zS4Q4jpPVt+v2wHM6$^agyMcYfc*?bX`N0VZ^1`WKpU9l}Cg~ENCbo+D^3QQbx^uk! z@co2_1<=!?Jb(1;z}n{XYWK-N2JQJ|%K>_YTHV)td3fn9{`6qgs5~Gqm#5#bURnB6 zL*uKk`?evarlaPH+61qr=Jh?(J7wrTaXtRQ_YVh-%bwp$(hvEI_k3|M1I)OO@m}(8)s^AoIFkp^&%CI1E zb~#*&$da;<$BcY7n^u}ukcJc0u&2eZYDH+3P_y-D`JkN(;mBk?4z^-d{6GjLY$}NPKzhGHoTO#@?kBr#}W#_^|a^a|=Ed6^Fk*CnYV4n-fQRG1o>Rc76_)nrEX(;Jm%0wK1EjaAFWE+I8=e z0y2p3;f5{;sLi(sEH?TXilZ?W{1#+kDHbCR2N)A=5qOI&U%*HR(5zLUtR^!}2S|4r zzd7LdW1eEHMr89rw=AnblY|?3#5PR&Nm`s0p++BJMi){!MU8ZuVi5TaWfg63>iz&} CmMu*H literal 0 HcmV?d00001 diff --git a/uml/sequence.png b/uml/sequence.png deleted file mode 100644 index 6ec642df4be9eae853e1988184888a7f2b6bd0dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3782 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 Qs83no=d8~X&bY_@2i&@4TmS$7 diff --git a/uml/sequence_annotation.pdf b/uml/sequence_annotation.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8d9c371bbda8b2b7c2a6182c3de29e3d7ce62b00 GIT binary patch literal 2026 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 diff --git a/uml/sequence_constraint.pdf b/uml/sequence_constraint.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a74ff961eb056c7403df1b4c17ed4558cd8d66e9 GIT binary patch literal 1986 zcmbVNYfuwc6lScn5YZyo)^`_`N2p<6BqSOGBm@Xz36Mb$7~CWqvKX?OY!IonR;)Pq zD1%7N=vW*WeDWAeA!@Z+p(tumK}D^`f{G8M2!bM1yBp%9BQqV_`{&+0kMG=b&Ufy5 z%frGsa6ll-yS<~ig~bCPfK+C%ghDW!&{4Pn4A)^49)_z(H4aAO`gBSQ1fhsXWTXr@ zmdVQAbz$*B@+RbV;_>1Kmhswyd7PW`E8FrXwC(vZZ$|#i+Iqs%@>^j|oApy^QlXij zbal#;rGU?0Pw}Uo6^GjL@`=-UaZg5*D4{FAV#l2*)+?u#r=}IVcy-$6`GelpHA0_Hea3$Cu9X(k{KT z2WWNOH_%;m{@f>-CtNQC?HNo!+6?|%ZVVUjePR{8r^$WD4`F{Vi?LOq_wu@hByxe!shz zz4_$5Wv~@>7q!l?s`)$Whb%Q89(tZvamcsJ`?zAkth?*`26;*sWzI&Q$VR7?7T1Cz z>1JPP_~hf88Y?-n5d&SX zJC3^5=bGF13L^z^G5zafAI@yqFx_j}+`AXk(;E7w>!#ja8+=Q^`BT)SjhsYA1ivgD zD|`t$ZC${2-O`lPuc+Jha`kon%xl)pXU!qsMHP(s#=1Lq^)}Y?{70UjYtNewS9&$B z?&YV|2K5&I+?iGd)(IX|S>GSy+{wcAYCFy86EhZk$9PCcJ%#HjBfyMI9H>~e90%oC zIu6F+M$%+Z;YNCfb$%FyarVB@az>xzAa7S!tD>-JMF9rnJG>dRGfr-iNWQhI@ zgm?e~L#ZMWlNyr{gJYlfc$1Q1l3+4{NAh9ffnv;v+YXVqE(@m!6~+;hIyETO({BQy zPX`wh`cS=*c=PQ5XYTg@z+;p;VucBRhZs!S|2f7x;4;Ox@DOlG(em+Byf5tNW7x-b855jb3I{E=W3rX$mBJTi_n(18y#9kd5nM5@DRqWFc) zLm-$7@gNiuz;@Bj6)S1W_q9Dl|x`5x{Cp0}D_rNF?NP5lE@x zAt;}RqZk5X2!`;~2oL7*_yQh|i&DWjlB58J5^-QWk%QCqq)Y5=YYoTN8J3a443w?f OFb|@C+1}EaaMs^gIn?9; literal 0 HcmV?d00001 diff --git a/uml/sequence_constraint.png b/uml/sequence_constraint.png deleted file mode 100644 index 334b6987602543729776e3b5c03d4a6341875167..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6276 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 WoAI|59QbzuqN1dsSStUg|Nj89A2!1P diff --git a/uml/toplevel.pdf b/uml/toplevel.pdf new file mode 100644 index 0000000000000000000000000000000000000000..597fd440906cc06036f527ca7a15be874552adf8 GIT binary patch literal 2297 zcmbVOc~}!?8V3rt1hmQ_Sa)HhKmZLhlbM7BV=M`YAg3WH=R!yZObQuH!le|0wSWg_ zi)X=Yak&NRBUlwytRR9?OMz0#p&~`jdTm`5#m*o;?4$eavrp%r`R0A!?>&CM@A-XW z=kG40!OkefZsg95ZVCf{06a=T;c!5qJXV9LKw+#zgSlf;T!w+(m@-DQ9e`mb%;l;z zDohebN&d1m*e7>@xxDGow(%n?w||Fw_La_jEl_*J{XO&RvU=tYV4xqBzf60&W?9U) z1wUOeVHyV^>qj{?!`<-?8&6xG_3jr^hGLVZ@6vYNuv&$myxn;zJOw%Jd$;Q4>{agR zjs5xi#x~j?zd2a$=Y45)=40t9-k_|-@e?8T!R)Q8cZS1P(V zUD3%l?VQ&dII%=`D{P0ejPZyMZa z8hqZgQ2SZPb}?9i*%=m@^{Ou2pQ;p4fBA)(KYGf+B>Uibg>F!@PETVVyFPD;zeRS9 zeRhqx09+e?hJo&XVb&{%($Y|ViC5EaAto=*^fk$zBrxub?Uh{7ml|hyZ=hN-{9?6+ z?`aLIuBuYhXIFG)?(W$7kzays7*$zf>eRwo`r-HJby(EE2Rj-beEdaPHe3~2vOf3X z)7DdcMQzrD9WNpTC6_gJLw%2%({9zW?=~qK{yp7$q5HQ1)^n6IojY4Q+x_6e4E6AJ z!FR!Pl}**2WwOtGE9s27$R08OivC`!RW~Z!99vFIF5lgC)ZxJ8ETk-h(*J$nr<7K0 zx!Y0O3`t|Yo_<}v)y_gI(N}p}0(8lSD_R~=mhVM!*mts!bhhaMN_pN)n8AB-`FeW& zwZp~BPWZLme)9WR{YUm969b!kn@9Df#wL-Q-%lPfUg6Plthw6o`mxc^Hk4@(m%3ii zxlf(OGurUW57NF}@oU3zhjEkoaGT4S&E@T`k$QTOi4RkT<1&Aq)Q?*0YRcbXxnr!n zmMHf)&Tl-aH$vZVaB17^YjbJ4o;{zvf3LG4z0RPjr~6uJytWhwg+r=V>)bLfNPiSH zmSdW}ysIqfol8de5`IK(YSx&GN$cPbCz57T#oJ9fvnMv2xH=XaI$Ndxvtj$k)x1F_Wgi}%#10x=j?dOW?L>>R=0Iq%V)zov2TVh5; zQVsRzjnkP!*-m@p0Ywb~fscipGxb-?&$;N>13LEAQ39hmQ>|iy z)7WbL3NMcnFLgI_1AeDqO4))Y5i3%}To%QQk1I8p zQlkb)ffIq^lz0sEm&9P82vg$;Dk-KW6whCUO9LVsf&jKbPDuDptND0sB8{kcceQkV*jJ?sz>J z3EH9qT6B=OEI7R6GIc0Pr6_!nH#Nw|6A1kNBNuCN%RIe&iAEBO$IR2Leg*Vme)eLp z4=!^jXmoIQr9&_SVnPVShFK^=gHS32Q5``(anEVwxblBT5r;>XAjMP;a`N2N01Ri; z83roo5CqYP#B=}_BSB(-x0UAxggLlv^7p1CVk$L}H_Xv-v9V+o7EOTw7@`mx7aoAg zU?2=28d$KwOeTRS`2fmA8$w|8h7CmtcHgiu-j0Kax!;Oovfj=||1bGm5CZr&YPhh7 zBm3H>QAy;nn2P+R@Ki?Q013Sa^mGS8Ik1co#bBc>OolR>=(Q7F@e&O)$gHUS)i z%Yl$+RKj4hQ7MW+2wg^JBGCjlG6^b`p)w|$8xD$aTmz8gi@*T+PK6b W6tza8(#!)3vk@l6&Q9Pbr2GLq#%+uM literal 0 HcmV?d00001 diff --git a/uml/toplevel.png b/uml/toplevel.png deleted file mode 100644 index b4e3df5542bfe02a2c98a8255491a37d0c2e2e5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7264 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 diff --git a/uml/toplevel_collection.png b/uml/toplevel_collection.png deleted file mode 100644 index 3e98d79cfd41f14693ae9fef8c8ee021aaf020c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7030 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 PX>{s0Z>tn4-3#~+nM;h0 From bab53dba632fb655b3faedbb0967317355d48ec3 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Wed, 3 Jun 2015 14:15:23 +0000 Subject: [PATCH 271/317] Update on Overleaf. --- apdx-validation.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index a85a9823..fd3a59d8 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -202,11 +202,11 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{The \sbol{remote} property of a \sbol{MapsTo} is REQUIRED and MUST contain a \external{URI} reference to a \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} -\printValid{The \sbol{remote} property of a \sbol{MapsTo} MUST refer to a \sbol{ComponentInstance} with an \sbol{access} property that contains the \external{URI} \url{http://sbols.org/v2\#public}. (Reference: \sec{sec:MapsTo})} +\printWarning{The \sbol{remote} property of a \sbol{MapsTo} MUST refer to a \sbol{ComponentInstance} with an \sbol{access} property that contains the \external{URI} \url{http://sbols.org/v2\#public}. (Reference: \sec{sec:MapsTo})} -\printValid{If a \sbol{MapsTo} is contained by a \sbol{ComponentInstance}, then the \sbol{remote} property of the \sbol{MapsTo} MUST refer to a \sbol{Component} in the \sbol{ComponentDefinition} that is referenced by the \sbolmult{definition:CI}{definition} of the \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} +\printWarning{If a \sbol{MapsTo} is contained by a \sbol{ComponentInstance}, then the \sbol{remote} property of the \sbol{MapsTo} MUST refer to a \sbol{Component} in the \sbol{ComponentDefinition} that is referenced by the \sbolmult{definition:CI}{definition} of the \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} -\printValid{If a \sbol{MapsTo} is contained by a \sbol{Module}, then the \sbol{remote} property of the \sbol{MapsTo} MUST refer to a \sbol{FunctionalComponent} in the \sbol{ModuleDefinition} that is referenced by the \sbolmult{definition:CI}{definition} of the \sbol{Module}. (Reference: \sec{sec:MapsTo})} +\printWarning{If a \sbol{MapsTo} is contained by a \sbol{Module}, then the \sbol{remote} property of the \sbol{MapsTo} MUST refer to a \sbol{FunctionalComponent} in the \sbol{ModuleDefinition} that is referenced by the \sbolmult{definition:CI}{definition} of the \sbol{Module}. (Reference: \sec{sec:MapsTo})} \printValid{The \sbol{refinement} property is REQUIRED and MUST contain a \external{URI} from \ref{tbl:mapsto_refinement}. (Reference: \sec{sec:MapsTo})} From db3a56609ac7741ae6bb0f2d5a96ec01e7bf3791 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Wed, 3 Jun 2015 11:03:09 -0500 Subject: [PATCH 272/317] finished authorship --- copyright.tex | 6 ++++++ history.tex | 3 ++- sbol2.tex | 15 +-------------- 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/copyright.tex b/copyright.tex index 4c4a609e..873bf878 100644 --- a/copyright.tex +++ b/copyright.tex @@ -5,3 +5,9 @@ \section{Copyright and License Statement} %% Variation from BBF RFC 0 specs confirmed in email communication with BBF by Jake Beal, 3/21/15 Copyright (C) The BioBricks Foundation and all authors listed on this BBF RFC. This work is made available under the Creative Commons Attribution 4.0 International Public License. To view a copy of this license visit \href{https://creativecommons.org/licenses/by/4.0/}{https://creativecommons.org/licenses/by/4.0/}. + +In addition to the listed authors, the following people are specifically recognized as additional contributors sharing in the copyright (alphabetically by institution): +Michael Bissell (Amyris, USA), +Douglas Densmore (Boston University, USA), +Jacqueline Quinn (Google, USA), +Guy-Bart Stan (Imperial College London, UK) diff --git a/history.tex b/history.tex index 8b12989d..a3a01007 100644 --- a/history.tex +++ b/history.tex @@ -34,4 +34,5 @@ \section{A Brief History of SBOL} In June, a description and our initial, multi-institutional demonstration of the use of SBOL 1.1 was published in Nature Biotechnology \cite{galdzicki2014synthetic}. In July, Nicholas Roehner presented a proposal for the next version of SBOL at the SEED Conference in Los Angeles \cite{roehner2014proposed}. Finally, in August 2014, the SBOL community attended their first COMBINE workshop as members of the COMBINE community. At this meeting, many of the final details of SBOL 2.0 were discussed, and the data model presented here is essentially the result of this meeting. -At the Harmony meeting in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (Raytheon BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). \ No newline at end of file +At the Harmony meeting in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (Raytheon BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). + diff --git a/sbol2.tex b/sbol2.tex index a45bf0de..9edf1104 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -115,19 +115,6 @@ \title{BBF RFC \rfcnum{}: Synthetic Biology Open Language \texorpdfstring{\\[3pt]}{}\mbox{(SBOL) Version~2.0.0}} -\author{Nicholas Roehner\\[0.25em] -\mailto{nicholasroehner@gmail.com}\\[0.25em] - Electrical and Computer Engineering\\ - Boston University\\ - Boston, MA, USA\\ - \\ - Matthew Pocock\\ -\mailto{turingatemyhamster@gmail.com}\\ - Turing Ate My Hamster LTD\\ - 7 Station RD, Backworth, NE27 0RT -} - - \author{{\bf Editors:}\hfil\\ \begin{tabular}{l>{\hspace*{15pt}}r} Bryan Bartley & \emph{University of Washington, USA}\\ @@ -144,11 +131,11 @@ \\ {\bf Additional authors, by institution:}\\ \begin{tabular}{l>{\hspace*{15pt}}r} +Ernst Oberortner & \emph{DOE Joint Genome Institute, USA}\\ Curtis Madsen, Matthew Pocock, Anil Wipat & \emph{Newcastle University, UK}\\ Tramy Nguyen, Zhen Zhang, Chris Myers & \emph{University of Utah, USA}\\ John H. Gennari & \emph{University of Washington, USA}\\ \end{tabular}\\ -\Ctodo{Fill in all rest of authors here.} } \maketitlepage From a1f4bcb2fdf2b4ac7186b2200c80f6b23ae21269 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Wed, 3 Jun 2015 20:02:10 +0000 Subject: [PATCH 273/317] Update on Overleaf. --- apdx-validation.tex | 4 ++-- copyright.tex | 2 +- history.tex | 3 +-- model.tex | 14 +++++++++----- sbol2.tex | 6 +++++- 5 files changed, 18 insertions(+), 11 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index fd3a59d8..354211a2 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -145,9 +145,9 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printWarning{The \sbol{Sequence} objects referred to by the \sbol{sequences} property of a \sbol{ComponentDefinition} MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with the same \sbol{encoding}. (Reference: \sec{sec:ComponentDefinition})} +\printModeling{The \sbol{sequences} property of a \sbol{ComponentDefinition} SHOULD NOT refer to more than one \sbol{Sequence} with the same \sbol{encoding}. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} +\printModeling{The \sbol{sequences} property of a \sbol{ComponentDefinition} SHOULD NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} \printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects, and one of the \sbolmult{types:CD}{types} of this \sbol{ComponentDefinition} comes from \ref{tbl:componentdefinition_types}, then one of the \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this type in \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} diff --git a/copyright.tex b/copyright.tex index 873bf878..6bbc6ea3 100644 --- a/copyright.tex +++ b/copyright.tex @@ -10,4 +10,4 @@ \section{Copyright and License Statement} Michael Bissell (Amyris, USA), Douglas Densmore (Boston University, USA), Jacqueline Quinn (Google, USA), -Guy-Bart Stan (Imperial College London, UK) +Guy-Bart Stan (Imperial College London, UK) \ No newline at end of file diff --git a/history.tex b/history.tex index a3a01007..8b12989d 100644 --- a/history.tex +++ b/history.tex @@ -34,5 +34,4 @@ \section{A Brief History of SBOL} In June, a description and our initial, multi-institutional demonstration of the use of SBOL 1.1 was published in Nature Biotechnology \cite{galdzicki2014synthetic}. In July, Nicholas Roehner presented a proposal for the next version of SBOL at the SEED Conference in Los Angeles \cite{roehner2014proposed}. Finally, in August 2014, the SBOL community attended their first COMBINE workshop as members of the COMBINE community. At this meeting, many of the final details of SBOL 2.0 were discussed, and the data model presented here is essentially the result of this meeting. -At the Harmony meeting in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (Raytheon BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). - +At the Harmony meeting in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (Raytheon BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). \ No newline at end of file diff --git a/model.tex b/model.tex index c612ee3d..414f6315 100644 --- a/model.tex +++ b/model.tex @@ -1,5 +1,9 @@ % ----------------------------------------------------------------------------- \section{SBOL Data Model}\label{sec:model} +% * 2015-06-03T17:32:14.465Z: +% +% +% % ----------------------------------------------------------------------------- \Ctodo{Ensure that no UML figures have labels conflicting with their arrows} @@ -337,8 +341,8 @@ \subsubsection*{The \sbolheading{types} property} The \sbolmult{types:CD}{types} property of every \sbol{ComponentDefinition} MUST contain one or more \sbol{URI}s that MUST identify terms from appropriate ontologies, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). \ref{tbl:componentdefinition_types} provides a list of RECOMMENDED ontology terms for the \sbolmult{types:CD}{types} property and their \sbol{URI}s. In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use the \external{URI} for that term as one of its \sbolmult{types:CD}{types}. -Finally, if the \sbolmult{types:CD}{types} property contains multiple \sbol{URI}s, then they MUST identify synonymous terms (otherwise, it may be unclear how to interpret the terms). -\LDtodo{Do we mean synonymous, or can it be weakened to non-conflicting? Query from Mike B} +Finally, if the \sbolmult{types:CD}{types} property contains multiple \sbol{URI}s, then they MUST identify non-conflicting terms (otherwise, it may not be clear how to interpret them). For example, the BioPAX terms provided by \ref{tbl:componentdefinition_types} would conflict because they specify classes of biochemical entities with different molecular structures. +\Rtodo{Do we mean synonymous, or can it be weakened to non-conflicting? Query from Mike B} \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -394,11 +398,11 @@ \subsubsection*{The \sbolheading{sequences} property} Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the structure of a DNA \sbol{ComponentDefinition}, one that represents its structure at the level of nucleotide bases and one that represents its structure at the level of atoms and bonds. -If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with the same \sbol{encoding}, and it MUST NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} (see \ref{tbl:sequence_encodings}). +If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects SHOULD be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, if a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} with the same \sbol{encoding}, then the \sbol{elements} of these \sbol{Sequence} objects SHOULD have equal lengths. These best practices are intended to make it easier for software tools to locate any regions specified by the \sbol{SequenceAnnotation} objects of a \sbol{ComponentDefinition} on its associated \sbol{Sequence} objects, as well as validate whether its \sbol{Sequence} objects are consistent with those associated to any \sbol{ComponentDefinition} objects that it effectively composes via the \sbol{components} property. -\Ctodo{Query from Mike B: ``"a ComponentDefinition MUST NOT refer to more than one Sequence with an IUPAC encoding...." If this is true, then how can I provide nonconflicting descriptions of a sequence at two different levels of abstraction? The example from the paragraph starting at p21 line 16 makes me think that this should be permitted. Did you really mean that "a ComponentDefinition MUST NOT refer to more than one Sequence with any single IUPAC encoding," i.e. you can't give two conflicting DNA sequences? If you really mean what it says, please provide a clarifying rationale for why e.g. I shouldn't be allowed to specify DNA, RNA, and protein sequences for a part.'' Answer: Mike is does not realize that these would all be different ComponentDefinitions.} +\Rtodo{Query from Mike B: ``"a ComponentDefinition MUST NOT refer to more than one Sequence with an IUPAC encoding...." If this is true, then how can I provide nonconflicting descriptions of a sequence at two different levels of abstraction? The example from the paragraph starting at p21 line 16 makes me think that this should be permitted. Did you really mean that "a ComponentDefinition MUST NOT refer to more than one Sequence with any single IUPAC encoding," i.e. you can't give two conflicting DNA sequences? If you really mean what it says, please provide a clarifying rationale for why e.g. I shouldn't be allowed to specify DNA, RNA, and protein sequences for a part.'' Answer: It was originally meant that a ComponentDefinition MUST NOT refer to both a DNA sequence and a RNA sequence, nor to multiple DNA sequences. The requirements on the contents of the sequences property have been relaxed to SHOULD NOTs and reasons for their utility have been given.} -Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbolmult{types:CD}{types} property refers to a term from \ref{tbl:componentdefinition_types}, then one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this term in \ref{tbl:sequence_encodings}. +Finally, a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \sbol{encoding} properties (see \ref{tbl:sequence_encodings}). For example, the \external{IUPAC} \sbol{encoding} properties provided by \ref{tbl:sequence_encodings} conflict because they do not specify how to encode the same classes of biochemical entities. \external{SMILES}, however, does not conflict with these encodings because it specifies how because it specifies In addition, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbolmult{types:CD}{types} property refers to a term from \ref{tbl:componentdefinition_types}, then one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this term in \ref{tbl:sequence_encodings}. Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbolmult{types:CD}{types} property MUST refer to the term from \ref{tbl:componentdefinition_types} that is cross-listed with this \sbol{encoding} in \ref{tbl:sequence_encodings}. For example, if the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}, then its \sbolmult{types:CD}{types} property must refer to the BioPAX term for DNA. diff --git a/sbol2.tex b/sbol2.tex index 9edf1104..8ee56864 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -332,4 +332,8 @@ \section{...} validation rule commands \cmd{validRule}, \cmd{consistencyRule} and \cmd{modelingRule} described in \sec{validation-rules}. -\end{itemize} \ No newline at end of file +\end{itemize} +% * 2015-06-03T17:34:31.200Z: +% +% +% \ No newline at end of file From 6e587064873d4ce653fe04f41f247103f94c4499 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Wed, 3 Jun 2015 20:02:31 +0000 Subject: [PATCH 274/317] Update on Overleaf. --- model.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model.tex b/model.tex index 414f6315..f4cb1a70 100644 --- a/model.tex +++ b/model.tex @@ -402,7 +402,7 @@ \subsubsection*{The \sbolheading{sequences} property} \Rtodo{Query from Mike B: ``"a ComponentDefinition MUST NOT refer to more than one Sequence with an IUPAC encoding...." If this is true, then how can I provide nonconflicting descriptions of a sequence at two different levels of abstraction? The example from the paragraph starting at p21 line 16 makes me think that this should be permitted. Did you really mean that "a ComponentDefinition MUST NOT refer to more than one Sequence with any single IUPAC encoding," i.e. you can't give two conflicting DNA sequences? If you really mean what it says, please provide a clarifying rationale for why e.g. I shouldn't be allowed to specify DNA, RNA, and protein sequences for a part.'' Answer: It was originally meant that a ComponentDefinition MUST NOT refer to both a DNA sequence and a RNA sequence, nor to multiple DNA sequences. The requirements on the contents of the sequences property have been relaxed to SHOULD NOTs and reasons for their utility have been given.} -Finally, a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \sbol{encoding} properties (see \ref{tbl:sequence_encodings}). For example, the \external{IUPAC} \sbol{encoding} properties provided by \ref{tbl:sequence_encodings} conflict because they do not specify how to encode the same classes of biochemical entities. \external{SMILES}, however, does not conflict with these encodings because it specifies how because it specifies In addition, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbolmult{types:CD}{types} property refers to a term from \ref{tbl:componentdefinition_types}, then one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this term in \ref{tbl:sequence_encodings}. +Finally, a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \sbol{encoding} properties (see \ref{tbl:sequence_encodings}). For example, the \external{IUPAC} \sbol{encoding} properties provided by \ref{tbl:sequence_encodings} conflict because they do not specify how to encode the same classes of biochemical entities. The \external{SMILES} \sbol{e, however, does not conflict with these encodings because it specifies how because it specifies In addition, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbolmult{types:CD}{types} property refers to a term from \ref{tbl:componentdefinition_types}, then one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this term in \ref{tbl:sequence_encodings}. Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbolmult{types:CD}{types} property MUST refer to the term from \ref{tbl:componentdefinition_types} that is cross-listed with this \sbol{encoding} in \ref{tbl:sequence_encodings}. For example, if the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}, then its \sbolmult{types:CD}{types} property must refer to the BioPAX term for DNA. From f2da3f8987ad5613e0b8aa5543fb5edc1dc48a2b Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Wed, 3 Jun 2015 20:52:28 +0000 Subject: [PATCH 275/317] Update on Overleaf. --- apdx-validation.tex | 18 +++++++++++------- model.tex | 12 ++++++------ 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 354211a2..48952831 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -125,10 +125,14 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printWarning{Each \external{URI} contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that describes the category of biochemical or physical entity that is represented by the \sbol{ComponentDefinition}. (Reference: \sec{sec:ComponentDefinition})} -\printWarning{All \external{URI}s contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to synonymous ontology terms. (Reference: \sec{sec:ComponentDefinition})} +\printWarning{All \external{URI}s contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to non-conflicting ontology terms. (Reference: \sec{sec:ComponentDefinition})} + + \printWarning{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_types} if it is well-described by this \external{URI}. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST NOT contain more than one \external{URI} from \ref{tbl:componentdefinition_types}. (Reference: \sec{sec:ComponentDefinition})} + \printValid{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \external{URI}s. (Reference: \sec{sec:ComponentDefinition})} \printWarning{Each \external{URI} contained by the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that clarifies the potential function of the \sbol{ComponentDefinition} in a biochemical or physical context. (Reference: \sec{sec:ComponentDefinition})} @@ -141,13 +145,13 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \external{URI} references to \sbol{Sequence} objects. (Reference: \sec{sec:ComponentDefinition})} -\printModeling{Each \sbol{Sequence} object in the list of \sbol{sequences} SHOULD reference a \sbol{Sequence} object. (Reference: \sec{sec:ComponentDefinition})} - \printWarning{The \sbol{Sequence} objects referred to by the \sbol{sequences} property of a \sbol{ComponentDefinition} MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. (Reference: \sec{sec:ComponentDefinition})} -\printModeling{The \sbol{sequences} property of a \sbol{ComponentDefinition} SHOULD NOT refer to more than one \sbol{Sequence} with the same \sbol{encoding}. (Reference: \sec{sec:ComponentDefinition})} +\printModeling{If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} with the same \sbol{encoding}, then the \sbol{elements} of these \sbol{Sequence} objects SHOULD have equal lengths. (Reference: \sec{sec:ComponentDefinition})} + +\printWarning{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \sbol{encoding} properties. (Reference: \sec{sec:ComponentDefinition})} -\printModeling{The \sbol{sequences} property of a \sbol{ComponentDefinition} SHOULD NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} \printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects, and one of the \sbolmult{types:CD}{types} of this \sbol{ComponentDefinition} comes from \ref{tbl:componentdefinition_types}, then one of the \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this type in \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} @@ -155,13 +159,13 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{The \sbol{components} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{Component} objects. (Reference: \sec{sec:ComponentDefinition})} -\printWarning{If a \sbol{ComponentDefinition} in a \sbol{ComponentDefinition}-\sbol{Component} hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then the \sbol{elements} properties of these \sbol{Sequence} objects MUST be consistent with each other, such that well-defined mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding} (subject to any restrictions on the positions of \sbol{Component} objects in the hierarchy that are imposed by \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} objects). (Reference: \sec{sec:ComponentDefinition})} +\printModeling{If a \sbol{ComponentDefinition} in a \sbol{ComponentDefinition}-\sbol{Component} hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then the \sbol{elements} properties of these \sbol{Sequence} objects SHOULD be consistent with each other, such that well-defined mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding} (subject to any restrictions on the positions of \sbol{Component} objects in the hierarchy that are imposed by \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} objects). (Reference: \sec{sec:ComponentDefinition})} \printValid{The \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. (Reference: \sec{sec:ComponentDefinition})} \printValid{If the \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} contains two or more \sbol{SequenceAnnotation} objects that refer to the same \sbol{Component}, then their \sbol{Location} objects MUST NOT specify regions that have conflicting \sbol{orientation} properties or occupy non-overlapping positions. (Reference: \sec{sec:ComponentDefinition})} -\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{SequenceAnnotation} that includes a \sbol{Range} and/or \sbol{Cut} in the \sbol{sequenceAnnotations} property of the \sbol{ComponentDefinition} MUST specify a region on the \sbol{elements} of this \sbol{Sequence}. (Reference: \sec{sec:ComponentDefinition})} +\printModeling{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{SequenceAnnotation} that includes a \sbol{Range} and/or \sbol{Cut} in the \sbol{sequenceAnnotations} property of the \sbol{ComponentDefinition} SHOULD specify a region on the \sbol{elements} of this \sbol{Sequence}. (Reference: \sec{sec:ComponentDefinition})} \printValid{The \sbol{sequenceConstraints} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceConstraint} objects. (Reference: \sec{sec:ComponentDefinition})} diff --git a/model.tex b/model.tex index f4cb1a70..a26fb23f 100644 --- a/model.tex +++ b/model.tex @@ -398,11 +398,11 @@ \subsubsection*{The \sbolheading{sequences} property} Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the structure of a DNA \sbol{ComponentDefinition}, one that represents its structure at the level of nucleotide bases and one that represents its structure at the level of atoms and bonds. -If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects SHOULD be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, if a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} with the same \sbol{encoding}, then the \sbol{elements} of these \sbol{Sequence} objects SHOULD have equal lengths. These best practices are intended to make it easier for software tools to locate any regions specified by the \sbol{SequenceAnnotation} objects of a \sbol{ComponentDefinition} on its associated \sbol{Sequence} objects, as well as validate whether its \sbol{Sequence} objects are consistent with those associated to any \sbol{ComponentDefinition} objects that it effectively composes via the \sbol{components} property. +If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects SHOULD be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, if a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} with the same \sbol{encoding}, then the \sbol{elements} of these \sbol{Sequence} objects SHOULD have equal lengths. These best practices are intended to make it easier for software tools to locate any regions specified by the \sbol{SequenceAnnotation} objects of a \sbol{ComponentDefinition} on its associated \sbol{Sequence} objects, as well as validate whether its \sbol{Sequence} objects are consistent with those associated to any \sbol{ComponentDefinition} objects that it may compose via its \sbol{Component} objects. -\Rtodo{Query from Mike B: ``"a ComponentDefinition MUST NOT refer to more than one Sequence with an IUPAC encoding...." If this is true, then how can I provide nonconflicting descriptions of a sequence at two different levels of abstraction? The example from the paragraph starting at p21 line 16 makes me think that this should be permitted. Did you really mean that "a ComponentDefinition MUST NOT refer to more than one Sequence with any single IUPAC encoding," i.e. you can't give two conflicting DNA sequences? If you really mean what it says, please provide a clarifying rationale for why e.g. I shouldn't be allowed to specify DNA, RNA, and protein sequences for a part.'' Answer: It was originally meant that a ComponentDefinition MUST NOT refer to both a DNA sequence and a RNA sequence, nor to multiple DNA sequences. The requirements on the contents of the sequences property have been relaxed to SHOULD NOTs and reasons for their utility have been given.} +\Rtodo{Query from Mike B: ``"a ComponentDefinition MUST NOT refer to more than one Sequence with an IUPAC encoding...." If this is true, then how can I provide nonconflicting descriptions of a sequence at two different levels of abstraction? The example from the paragraph starting at p21 line 16 makes me think that this should be permitted. Did you really mean that "a ComponentDefinition MUST NOT refer to more than one Sequence with any single IUPAC encoding," i.e. you can't give two conflicting DNA sequences? If you really mean what it says, please provide a clarifying rationale for why e.g. I shouldn't be allowed to specify DNA, RNA, and protein sequences for a part.'' Answer: It was originally meant that a ComponentDefinition MUST NOT refer to both a DNA sequence and a RNA sequence, nor to multiple DNA sequences. The rationale for the former requirement has been provided, while the latter requirement has been relaxed and described as a best practice.} -Finally, a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \sbol{encoding} properties (see \ref{tbl:sequence_encodings}). For example, the \external{IUPAC} \sbol{encoding} properties provided by \ref{tbl:sequence_encodings} conflict because they do not specify how to encode the same classes of biochemical entities. The \external{SMILES} \sbol{e, however, does not conflict with these encodings because it specifies how because it specifies In addition, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbolmult{types:CD}{types} property refers to a term from \ref{tbl:componentdefinition_types}, then one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this term in \ref{tbl:sequence_encodings}. +Finally, a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \sbol{encoding} properties. For example, the \external{IUPAC} \sbol{encoding} properties provided by \ref{tbl:sequence_encodings} conflict with each other because they do not specify how to encode the same class of biochemical entity. The \external{SMILES} \sbol{encoding}, however, does not conflict with them because it specifies how to encode biochemical entities in general, which includes DNA, RNA, and proteins. In addition, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbolmult{types:CD}{types} property refers to a term from \ref{tbl:componentdefinition_types}, then one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this term in \ref{tbl:sequence_encodings}. Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbolmult{types:CD}{types} property MUST refer to the term from \ref{tbl:componentdefinition_types} that is cross-listed with this \sbol{encoding} in \ref{tbl:sequence_encodings}. For example, if the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}, then its \sbolmult{types:CD}{types} property must refer to the BioPAX term for DNA. @@ -415,9 +415,9 @@ \subsubsection*{The \sbolheading{components} property} While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple instances of a particular part (defined by reference to the same \sbol{ComponentDefinition}). For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \sbol{ComponentDefinition} of a CDS. -\Rtodo{Comment from Mike B: ``"it MUST be possible to align the elements of the latter Sequence objects to the elements of the ComponentDefinition's Sequence." Alignment comes in lossy and lossless forms. One of SBOL 1.1's practical limitations when it came to modeling real-world processes was that annotations couldn't bear an approximate resemblance to the sequences they annotated; they had to be exact substrings. If you really intend to keep this restriction in SBOL 2.0, then please use stronger language than "align," because we all use alignment tools to detect lossy near-matches (indels), so this passage might be read the wrong way. If, on the other hand, you've deliberately changed that rule, then highlight the change here, because SBOL 1.1 was pretty emphatic about its "logical consistency" rules.'' Tried editing this section to use language other than ``align.'' Need feedback on whether it's the right level of strength/detail, though. - Nic} +\Rtodo{Comment from Mike B: ``"it MUST be possible to align the elements of the latter Sequence objects to the elements of the ComponentDefinition's Sequence." Alignment comes in lossy and lossless forms. One of SBOL 1.1's practical limitations when it came to modeling real-world processes was that annotations couldn't bear an approximate resemblance to the sequences they annotated; they had to be exact substrings. If you really intend to keep this restriction in SBOL 2.0, then please use stronger language than "align," because we all use alignment tools to detect lossy near-matches (indels), so this passage might be read the wrong way. If, on the other hand, you've deliberately changed that rule, then highlight the change here, because SBOL 1.1 was pretty emphatic about its "logical consistency" rules.'' Edited to use language other than alignment and relaxed requirement to a SHOULD. - Nic} -In this way, the \sbol{components} property can be used to construct a hierarchy of \sbol{ComponentDefinition} objects. If a \sbol{ComponentDefinition} in the hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then the \sbol{elements} properties of these \sbol{Sequence} objects MUST be consistent with each other, such that well-defined mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding} (subject to any restrictions on the positions of \sbol{Component} objects in the hierarchy that are imposed by \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} objects). +In this way, the \sbol{components} property can be used to construct a hierarchy of \sbol{ComponentDefinition} objects. If a \sbol{ComponentDefinition} in the hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then the \sbol{elements} properties of these \sbol{Sequence} objects SHOULD be consistent with each other, such that well-defined mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding} (subject to any restrictions on the positions of \sbol{Component} objects in the hierarchy that are imposed by \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} objects). A DNA \sbol{ComponentDefinition}, for example, could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} of ``{\tt gattaca}.'' In turn, this \sbol{ComponentDefinition} could contain a \sbol{Component} that refers to a ``lower level'' \sbol{ComponentDefinition} that also refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. Consequently, the \sbol{elements} \external{String} of this ``lower level'' \sbol{Sequence} could be ``{\tt gatta}," or perhaps ``{\tt tgta}'' if the \sbol{Component} is positioned by a \sbol{SequenceAnnotation} that contains a \sbol{Location} with an \sbol{orientation} of ``reverse complement'' (see \ref{sec:Location}). @@ -434,7 +434,7 @@ \subsubsection*{The \sbolheading{sequenceAnnotations} property} In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at the region specified by its \sbol{Location} objects (see \ref{sec:Location}). If more than one \sbol{SequenceAnnotation} refers to a \sbol{Component} in this manner, then they MUST NOT specify conflicting regions. That is, their \sbol{Location} objects MUST NOT specify regions that have conflicting \sbol{orientation} properties or occupy non-overlapping positions. -If a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, each \sbol{SequenceAnnotation} it contains with a \sbol{Range} and/or \sbol{Cut} MUST specify a region on the \sbol{elements} of this \sbol{Sequence}. +Finally, as a best practice, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each of its \sbol{SequenceAnnotation} objects that contains a \sbol{Range} or \sbol{Cut} SHOULD specify a region on the \sbol{elements} of this \sbol{Sequence}. For example, the \sbol{ComponentDefinition} of a eukaryotic gene could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. In order to specify the discontiguous region occupied by its CDS, this gene \sbol{ComponentDefinition} would need a \sbol{SequenceAnnotation} that contains one or more \sbol{Range} objects, each one specifying \sbol{start} and \sbol{end} positions that correspond to indices of the \sbol{elements} of its DNA \sbol{Sequence}. \subsubsection*{The \sbolheading{sequenceConstraints} property} From f0f9a1124676c8f221a789ae92d51e124c532339 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Wed, 3 Jun 2015 21:15:35 +0000 Subject: [PATCH 276/317] Update on Overleaf. --- apdx-validation.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 48952831..b4250b68 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -127,7 +127,7 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printWarning{All \external{URI}s contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to non-conflicting ontology terms. (Reference: \sec{sec:ComponentDefinition})} - +\printValid{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST NOT contain more than one \external{URI} from \ref{tbl:componentdefinition_types}. (Reference: \sec{sec:ComponentDefinition})} \printWarning{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_types} if it is well-described by this \external{URI}. (Reference: \sec{sec:ComponentDefinition})} @@ -151,7 +151,7 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printWarning{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \sbol{encoding} properties. (Reference: \sec{sec:ComponentDefinition})} -\printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to more than one \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \external{IUPAC} \sbol{encoding} \external{URI}s from \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} \printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects, and one of the \sbolmult{types:CD}{types} of this \sbol{ComponentDefinition} comes from \ref{tbl:componentdefinition_types}, then one of the \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this type in \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} From b576cfce978e9ceffef88ee3dc7171142d05c558 Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Thu, 4 Jun 2015 12:37:48 +0000 Subject: [PATCH 277/317] Update on Overleaf. --- apdx-validation.tex | 260 ++++++++++++++++++------------------ images/MapsTo_Diagram_3.png | Bin 0 -> 453497 bytes images/sbol_v1_to_v2.png | Bin 0 -> 60128 bytes model.tex | 14 +- overview.tex | 12 ++ practices.tex | 13 +- purpose.tex | 6 +- 7 files changed, 161 insertions(+), 144 deletions(-) create mode 100644 images/MapsTo_Diagram_3.png create mode 100644 images/sbol_v1_to_v2.png diff --git a/apdx-validation.tex b/apdx-validation.tex index b4250b68..105ccd61 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -8,7 +8,7 @@ \section{Validation Rules} \Rtodo{New validation rules have been added. Needs review.} -\Ctodo{Mike B: ``I recommend reformatting the references, because they are a repeating motif in all rules, but their typographical positioning is unpredictable. Many of them linebreak awkwardly. Why not remove them from their parentheses and uniformly insert a newline before each rule's references? Then the eye can scan the references with an ergonomically friendly vertical sweep, instead of bouncing all over the page. (Sometimes I look for rules by section number, not vice versa.) It'll be prettier, too.''} +\Rtodo{Mike B: ``I recommend reformatting the references, because they are a repeating motif in all rules, but their typographical positioning is unpredictable. Many of them linebreak awkwardly. Why not remove them from their parentheses and uniformly insert a newline before each rule's references? Then the eye can scan the references with an ergonomically friendly vertical sweep, instead of bouncing all over the page. (Sometimes I look for rules by section number, not vice versa.) It'll be prettier, too.'' Good suggestion, done. CJM} This section summarizes all the conditions that MUST be or are RECOMMENDED to be true of an SBOL Version~2 document. @@ -53,331 +53,335 @@ \section{Validation Rules} \subsubsection*{General rules about an SBOL document} \setcounter{sbolCtr}{10101} -\LDtodo{Mike B: ``"An SBOL document MUST declare the use of the following XML Namespace: [dcterms]" +\Rtodo{Mike B: ``"An SBOL document MUST declare the use of the following XML Namespace: [dcterms]" I don't think this is required by XML+XSD unless a dcterms element or attribute is actually used. The rules for Identified's serialization on p17 state that dcterms are 0..*, so maybe we should say this instead: "An SBOL document MUST declare the use of the following XML Namespace: [dcterms] if it uses any of the tags provided by dcterms, such as title or description." Aliasing an xmlns with a prefix, but then failing to using it int the document, is actually a lint violation. -Come to think of it, this rule is nothing but XML syntax. The rest of XML syntax isn't replicated in SBOL 2.0, so why is this rule special? Same goes for the others. If you want to include enough rules on p56 (lines 27-35) to make it obvious how to construct a header, then the spec should also have rules for the header (optional but recommended by XML, IIRC) and the root tag.''} +Come to think of it, this rule is nothing but XML syntax. The rest of XML syntax isn't replicated in SBOL 2.0, so why is this rule special? Same goes for the others. If you want to include enough rules on p56 (lines 27-35) to make it obvious how to construct a header, then the spec should also have rules for the header (optional but recommended by XML, IIRC) and the root tag.'' ANSWER: I can see your point, but I prefer to leave them in as this is something specific that must be included for an SBOL document, but if others think it should be removed, I could change my mind. For now, I've added the clarification that only needed if you use things in that namespace. SBOL and RDF namespace though are always required for any non-empty sbol document. CJM} -\printValid{An SBOL document MUST declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://sbols.org/v2\#}}. (Reference: - \sec{xml-namespace}.)} +\printValid{An SBOL document MUST declare the use of the following XML namespace: \\ \textls[-25]{\uri{http://sbols.org/v2\#}}.\\ +Reference: \sec{xml-namespace}} -\printValid{An SBOL document MUST declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://www.w3.org/1999/02/22-rdf-syntax-ns\#}}. (Reference: \sec{xml-namespace}.)} +\printValid{An SBOL document MUST declare the use of the following XML namespace: \\ \textls[-25]{\uri{http://www.w3.org/1999/02/22-rdf-syntax-ns\#}}.\\ +Reference: \sec{xml-namespace}} -\printValid{An SBOL document MUST declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://purl.org/dc/terms/}}. (Reference: \sec{xml-namespace}.)} +\printValid{An SBOL document MUST declare the use of the following XML namespace when it includes any \sbol{name} or \sbol{description} properties: \\ \textls[-25]{\uri{http://purl.org/dc/terms/}}.\\ +Reference: \sec{xml-namespace}} -\printValid{An SBOL document SHOULD declare the use of the following XML Namespace: \\ \textls[-25]{\uri{http://www.w3.org/ns/prov\#}}. (Reference: \sec{xml-namespace}.)} +\printValid{An SBOL document MUST declare the use of the following XML namespace when it includes any \sbol{wasDerivedFrom} properties: \\ \textls[-25]{\uri{http://www.w3.org/ns/prov\#}}.\\ Reference: \sec{xml-namespace}} \subsubsection*{Rules for the \class{Identified} class} \setcounter{sbolCtr}{10201} \printValid{The \sbol{identity} is a REQUIRED property for all \sbol{Identified} objects and has a data type of URI with a syntax defined by:\\ -\uri{http://www.w3.org/1999/02/22-rdf-syntax\#about} (Reference: \sec{sec:Identified})} +\uri{http://www.w3.org/1999/02/22-rdf-syntax\#about} \\ +Reference: \sec{sec:Identified}} -\printValid{The \sbol{persistentIdentity} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of \sbol{URI} with a syntax defined by:\\ \uri{http://www.w3.org/1999/02/22-rdf-syntax\#about} (Reference: \sec{sec:Identified})} +\printValid{The \sbol{persistentIdentity} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of \sbol{URI} with a syntax defined by:\\ \uri{http://www.w3.org/1999/02/22-rdf-syntax\#about}\\ +Reference: \sec{sec:Identified}} -\printValid{The \sbol{displayId} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String that is composed only of alphanumeric or underscore characters and MUST NOT begin with a digit. (Reference: \sec{sec:Identified})} +\printValid{The \sbol{displayId} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String that is composed only of alphanumeric or underscore characters and MUST NOT begin with a digit.\\ Reference: \sec{sec:Identified}} -\printValid{The \sbol{version} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String that is composed only of alphanumeric characters, underscores, hyphens, and periods and MUST begin with a digit. (Reference: \sec{sec:Identified})} +\printValid{The \sbol{version} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String that is composed only of alphanumeric characters, underscores, hyphens, and periods and MUST begin with a digit.\\ Reference: \sec{sec:Identified}} -\printValid{The \sbol{annotations} field is an OPTIONAL list of for all \sbol{Identified} objects and, if provided, includes references to \sbol{Annotation} objects. (Reference: \sec{sec:Identified})} +\printValid{The \sbol{annotations} field is an OPTIONAL list of for all \sbol{Identified} objects and, if provided, includes references to \sbol{Annotation} objects.\\ Reference: \sec{sec:Identified}} -\printValid{The \sbol{wasDerivedFrom} property is OPTIONAL for all \sbol{Identified} objects and, if provided, has a data type of \sbol{URI}. (Reference: \sec{sec:Identified})} +\printValid{The \sbol{wasDerivedFrom} property is OPTIONAL for all \sbol{Identified} objects and, if provided, has a data type of \sbol{URI}. \\ Reference: \sec{sec:Identified}} -\printValid{The \sbol{name} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String. (Reference: \sec{sec:Identified})} +\printValid{The \sbol{name} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String. \\ Reference: \sec{sec:Identified}} -\printValid{The \sbol{description} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String. (Reference: \sec{sec:Identified})} +\printValid{The \sbol{description} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String. \\ Reference: \sec{sec:Identified}} -\printModeling{The \sbol{displayId} of a compliant object is REQUIRED. (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{displayId} of a compliant object is REQUIRED. \\ Reference: \sec{sec:compliant}} -\printModeling{The \sbol{persistentIdentity} of a compliant top level object is REQUIRED and MUST end with a delimiter ('/', '\#', or ':') followed by the \sbol{displayId} of the object. (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{persistentIdentity} of a compliant top level object is REQUIRED and MUST end with a delimiter ('/', '\#', or ':') followed by the \sbol{displayId} of the object.\\ Reference: \sec{sec:compliant}} -\printModeling{The \sbol{persistentIdentity} of a compliant child object is REQUIRED and MUST begin with the\\ \sbol{persistentIdentity} of its parent object and be immediately followed by a delimiter ('/', '\#', or ':') and the \sbol{displayId} of the object. (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{persistentIdentity} of a compliant child object is REQUIRED and MUST begin with the\\ \sbol{persistentIdentity} of its parent object and be immediately followed by a delimiter ('/', '\#', or ':') and the \sbol{displayId} of the object.\\ Reference: \sec{sec:compliant}} -\printModeling{The \sbol{identity} of a compliant object MUST either be equal to the \sbol{persistentIdentity} when no \sbol{version} is specified or equal to "\refObj{persistentIdentity}/\refObj{version}" when a \sbol{version} is provided. (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{identity} of a compliant object MUST either be equal to the \sbol{persistentIdentity} when no \sbol{version} is specified or equal to "\refObj{persistentIdentity}/\refObj{version}" when a \sbol{version} is provided.\\ Reference: \sec{sec:compliant}} -\printModeling{The \sbol{version} of a compliant child object is REQUIRED to be equal to the \sbol{version} of its parent object. (Reference: \sec{sec:compliant})} +\printModeling{The \sbol{version} of a compliant child object is REQUIRED to be equal to the \sbol{version} of its parent object.\\ Reference: \sec{sec:compliant}} \subsubsection*{Rules for the \class{TopLevel} class} \setcounter{sbolCtr}{10301} -\printValid{A \sbol{TopLevel} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:TopLevel})} +\printValid{A \sbol{TopLevel} object inherits all properties of a \sbol{Identified} object.\\ Reference: \sec{sec:TopLevel}} \subsubsection*{Rules for the \class{Sequence} class} \setcounter{sbolCtr}{10401} -\printValid{A \sbol{Sequence} MUST inherit all properties of the \sbol{TopLevel} class. (Reference: \sec{sec:Sequence})} +\printValid{A \sbol{Sequence} MUST inherit all properties of the \sbol{TopLevel} class.\\ Reference: \sec{sec:Sequence}} -\printValid{The \sbol{elements} property of a \sbol{Sequence} is REQUIRED and MUST contain a \external{String}. (Reference: \sec{sec:Sequence})} +\printValid{The \sbol{elements} property of a \sbol{Sequence} is REQUIRED and MUST contain a \external{String}.\\ Reference: \sec{sec:Sequence}} -\printValid{The \sbol{encoding} property of \sbol{Sequence} is REQUIRED and MUST contain a \external{URI}. (Reference: \sec{sec:Sequence})} +\printValid{The \sbol{encoding} property of \sbol{Sequence} is REQUIRED and MUST contain a \external{URI}.\\ Reference: \sec{sec:Sequence}} -\printWarning{The \sbol{encoding} property of a \sbol{Sequence} MUST contain a \external{URI} from \ref{tbl:sequence_encodings} if it is well-described by this \external{URI}. (Reference: \sec{sec:Sequence})} +\printWarning{The \sbol{encoding} property of a \sbol{Sequence} MUST contain a \external{URI} from \ref{tbl:sequence_encodings} if it is well-described by this \external{URI}.\\ Reference: \sec{sec:Sequence}} -\printWarning{The \sbol{elements} property of a \sbol{Sequence} MUST be consistent with its \sbol{encoding} property. (Reference: \sec{sec:Sequence})} +\printWarning{The \sbol{elements} property of a \sbol{Sequence} MUST be consistent with its \sbol{encoding} property.\\ Reference: \sec{sec:Sequence}} \subsubsection*{Rules for the \class{ComponentDefinition} class} \setcounter{sbolCtr}{10501} -\printValid{A \sbol{ComponentDefinition} MUST inherit all properties of the \sbol{TopLevel} class. (Reference: \sec{sec:ComponentDefinition})} +\printValid{A \sbol{ComponentDefinition} MUST inherit all properties of the \sbol{TopLevel} class.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} is REQUIRED and MUST contain a non-empty set of \external{URI}s. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} is REQUIRED and MUST contain a non-empty set of \external{URI}s.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{Each \external{URI} contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that describes the category of biochemical or physical entity that is represented by the \sbol{ComponentDefinition}. (Reference: \sec{sec:ComponentDefinition})} +\printWarning{Each \external{URI} contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that describes the category of biochemical or physical entity that is represented by the \sbol{ComponentDefinition}.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{All \external{URI}s contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to non-conflicting ontology terms. (Reference: \sec{sec:ComponentDefinition})} +\printWarning{All \external{URI}s contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to non-conflicting ontology terms.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST NOT contain more than one \external{URI} from \ref{tbl:componentdefinition_types}. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST NOT contain more than one \external{URI} from \ref{tbl:componentdefinition_types}.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_types} if it is well-described by this \external{URI}. (Reference: \sec{sec:ComponentDefinition})} +\printWarning{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_types} if it is well-described by this \external{URI}.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST NOT contain more than one \external{URI} from \ref{tbl:componentdefinition_types}. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST NOT contain more than one \external{URI} from \ref{tbl:componentdefinition_types}.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \external{URI}s. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \external{URI}s.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{Each \external{URI} contained by the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that clarifies the potential function of the \sbol{ComponentDefinition} in a biochemical or physical context. (Reference: \sec{sec:ComponentDefinition})} +\printWarning{Each \external{URI} contained by the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that clarifies the potential function of the \sbol{ComponentDefinition} in a biochemical or physical context.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{Each \external{URI} contained by the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that is consistent with its \sbolmult{types:CD}{types} property. (Reference: \sec{sec:ComponentDefinition})} +\printWarning{Each \external{URI} contained by the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that is consistent with its \sbolmult{types:CD}{types} property.\\ Reference: \sec{sec:ComponentDefinition}} -\printModeling{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} SHOULD only contain a \external{URI} provided in \ref{tbl:componentdefinition_roles} if one of its \sbolmult{types:CD}{types} is cross-listed with the \external{URI}. (Reference: \sec{sec:ComponentDefinition})} +\printModeling{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} SHOULD only contain a \external{URI} provided in \ref{tbl:componentdefinition_roles} if one of its \sbolmult{types:CD}{types} is cross-listed with the \external{URI}.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_roles} if it is well-described by this \external{URI}. (Reference: \sec{sec:ComponentDefinition})} +\printWarning{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_roles} if it is well-described by this \external{URI}.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \external{URI} references to \sbol{Sequence} objects. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \external{URI} references to \sbol{Sequence} objects.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{The \sbol{Sequence} objects referred to by the \sbol{sequences} property of a \sbol{ComponentDefinition} MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. (Reference: \sec{sec:ComponentDefinition})} +\printWarning{The \sbol{Sequence} objects referred to by the \sbol{sequences} property of a \sbol{ComponentDefinition} MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties.\\ Reference: \sec{sec:ComponentDefinition}} -\printModeling{If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} with the same \sbol{encoding}, then the \sbol{elements} of these \sbol{Sequence} objects SHOULD have equal lengths. (Reference: \sec{sec:ComponentDefinition})} +\printModeling{If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} with the same \sbol{encoding}, then the \sbol{elements} of these \sbol{Sequence} objects SHOULD have equal lengths.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \sbol{encoding} properties. (Reference: \sec{sec:ComponentDefinition})} +\printWarning{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \sbol{encoding} properties.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \external{IUPAC} \sbol{encoding} \external{URI}s from \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \external{IUPAC} \sbol{encoding} \external{URI}s from \ref{tbl:sequence_encodings}.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects, and one of the \sbolmult{types:CD}{types} of this \sbol{ComponentDefinition} comes from \ref{tbl:componentdefinition_types}, then one of the \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this type in \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} +\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects, and one of the \sbolmult{types:CD}{types} of this \sbol{ComponentDefinition} comes from \ref{tbl:componentdefinition_types}, then one of the \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this type in \ref{tbl:sequence_encodings}.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then the \sbolmult{types:CD}{types} property of the \sbol{ComponentDefinition} MUST contain the type from \ref{tbl:componentdefinition_types} that is cross-listed with this \sbol{encoding} in \ref{tbl:sequence_encodings}. (Reference: \sec{sec:ComponentDefinition})} +\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then the \sbolmult{types:CD}{types} property of the \sbol{ComponentDefinition} MUST contain the type from \ref{tbl:componentdefinition_types} that is cross-listed with this \sbol{encoding} in \ref{tbl:sequence_encodings}.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{The \sbol{components} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{Component} objects. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{components} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{Component} objects.\\ Reference: \sec{sec:ComponentDefinition}} -\printModeling{If a \sbol{ComponentDefinition} in a \sbol{ComponentDefinition}-\sbol{Component} hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then the \sbol{elements} properties of these \sbol{Sequence} objects SHOULD be consistent with each other, such that well-defined mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding} (subject to any restrictions on the positions of \sbol{Component} objects in the hierarchy that are imposed by \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} objects). (Reference: \sec{sec:ComponentDefinition})} +\printModeling{If a \sbol{ComponentDefinition} in a \sbol{ComponentDefinition}-\sbol{Component} hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then the \sbol{elements} properties of these \sbol{Sequence} objects SHOULD be consistent with each other, such that well-defined mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding} (subject to any restrictions on the positions of \sbol{Component} objects in the hierarchy that are imposed by \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} objects).\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{The \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{If the \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} contains two or more \sbol{SequenceAnnotation} objects that refer to the same \sbol{Component}, then their \sbol{Location} objects MUST NOT specify regions that have conflicting \sbol{orientation} properties or occupy non-overlapping positions. (Reference: \sec{sec:ComponentDefinition})} +\printValid{If the \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} contains two or more \sbol{SequenceAnnotation} objects that refer to the same \sbol{Component}, then their \sbol{Location} objects MUST NOT specify regions that have conflicting \sbol{orientation} properties or occupy non-overlapping positions.\\ Reference: \sec{sec:ComponentDefinition}} -\printModeling{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{SequenceAnnotation} that includes a \sbol{Range} and/or \sbol{Cut} in the \sbol{sequenceAnnotations} property of the \sbol{ComponentDefinition} SHOULD specify a region on the \sbol{elements} of this \sbol{Sequence}. (Reference: \sec{sec:ComponentDefinition})} +\printModeling{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{SequenceAnnotation} that includes a \sbol{Range} and/or \sbol{Cut} in the \sbol{sequenceAnnotations} property of the \sbol{ComponentDefinition} SHOULD specify a region on the \sbol{elements} of this \sbol{Sequence}.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{The \sbol{sequenceConstraints} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceConstraint} objects. (Reference: \sec{sec:ComponentDefinition})} +\printValid{The \sbol{sequenceConstraints} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceConstraint} objects. \\ Reference: \sec{sec:ComponentDefinition}} \subsubsection*{Rules for the \class{ComponentInstance} class} \setcounter{sbolCtr}{10601} -\printValid{A \sbol{ComponentInstance} MUST inherit all properties of the \sbol{Identified} class. (Reference: \sec{sec:ComponentInstance})} +\printValid{A \sbol{ComponentInstance} MUST inherit all properties of the \sbol{Identified} class.\\ Reference: \sec{sec:ComponentInstance}} -\printValid{The \sbol{access} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \external{URI} from \ref{tbl:componentInstance_access} (Reference: \sec{sec:ComponentInstance})} +\printValid{The \sbol{access} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \external{URI} from \ref{tbl:componentInstance_access} \\ Reference: \sec{sec:ComponentInstance}} -\printModeling{It is RECOMMENDED that the \sbol{access} property of a \sbol{ComponentInstance} contain the \external{URI} \url{http://sbols.org/v2\#public}. (Reference: \sec{sec:ComponentInstance})} +\printModeling{It is RECOMMENDED that the \sbol{access} property of a \sbol{ComponentInstance} contain the \external{URI} \url{http://sbols.org/v2\#public}.\\ Reference: \sec{sec:ComponentInstance}} -\printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \external{URI} reference to a \sbol{ComponentDefinition}. (Reference: \sec{sec:ComponentInstance})} +\printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \external{URI} reference to a \sbol{ComponentDefinition}.\\ Reference: \sec{sec:ComponentInstance}} -\printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} MUST NOT contain a \external{URI} reference to the \sbol{ComponentDefinition} that contains the \sbol{ComponentInstance}. (Reference: \sec{sec:ComponentInstance})} +\printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} MUST NOT contain a \external{URI} reference to the \sbol{ComponentDefinition} that contains the \sbol{ComponentInstance}.\\ Reference: \sec{sec:ComponentInstance}} -\printWarning{\sbol{ComponentInstance} objects MUST NOT form circular reference chains via their \sbolmult{definition:CI}{definition} properties and parent \sbol{ComponentDefinition} objects. (Reference: \sec{sec:ComponentInstance})} +\printWarning{\sbol{ComponentInstance} objects MUST NOT form circular reference chains via their \sbolmult{definition:CI}{definition} properties and parent \sbol{ComponentDefinition} objects.\\ Reference: \sec{sec:ComponentInstance}} -\printValid{The \sbolmult{mapsTos:CI}{mapsTos} property of a \sbol{ComponentInstance} is OPTIONAL and MAY contain a set of \sbol{MapsTo} objects. (Reference: \sec{sec:ComponentInstance})} +\printValid{The \sbolmult{mapsTos:CI}{mapsTos} property of a \sbol{ComponentInstance} is OPTIONAL and MAY contain a set of \sbol{MapsTo} objects.\\ Reference: \sec{sec:ComponentInstance}} \subsubsection*{Rules for the \class{Component} class} \setcounter{sbolCtr}{10701} -\printValid{A \sbol{Component} MUST inherit all properties of the \sbol{ComponentInstance} class. (Reference: \sec{sec:ComponentInstance})} +\printValid{A \sbol{Component} MUST inherit all properties of the \sbol{ComponentInstance} class.\\ Reference: \sec{sec:ComponentInstance}} \subsubsection*{Rules for the \class{MapsTo} class} \setcounter{sbolCtr}{10801} -\printValid{A \sbol{MapsTo} MUST inherit all properties of the \sbol{Identified} class. (Reference: \sec{sec:MapsTo})} +\printValid{A \sbol{MapsTo} MUST inherit all properties of the \sbol{Identified} class.\\ Reference: \sec{sec:MapsTo}} -\printValid{The \sbol{local} property of a \sbol{MapsTo} is REQUIRED and MUST contain a \external{URI} reference to a \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} +\printValid{The \sbol{local} property of a \sbol{MapsTo} is REQUIRED and MUST contain a \external{URI} reference to a \sbol{ComponentInstance}.\\ Reference: \sec{sec:MapsTo}} -\printValid{The \sbol{local} property of a \sbol{MapsTo} MUST refer to a \sbol{ComponentInstance} with an \sbol{access} property that contains the \external{URI} \url{http://sbols.org/v2\#public}. (Reference: \sec{sec:MapsTo})} +\printValid{The \sbol{local} property of a \sbol{MapsTo} MUST refer to a \sbol{ComponentInstance} with an \sbol{access} property that contains the \external{URI} \url{http://sbols.org/v2\#public}.\\ Reference: \sec{sec:MapsTo}} -\printValid{If a \sbol{MapsTo} is contained by a \sbol{Component} in a \sbol{ComponentDefinition}, then the \sbol{local} property of the \sbol{MapsTo} MUST refer to another \sbol{Component} in the \sbol{ComponentDefinition}. (Reference: \sec{sec:MapsTo})} +\printValid{If a \sbol{MapsTo} is contained by a \sbol{Component} in a \sbol{ComponentDefinition}, then the \sbol{local} property of the \sbol{MapsTo} MUST refer to another \sbol{Component} in the \sbol{ComponentDefinition}.\\ Reference: \sec{sec:MapsTo}} -\printValid{If a \sbol{MapsTo} is contained by a \sbol{FunctionalComponent} or \sbol{Module} in a \sbol{ModuleDefinition}, then the \sbol{local} property of the \sbol{MapsTo} MUST refer to another \sbol{FunctionalComponent} in the \sbol{ModuleDefinition}. (Reference: \sec{sec:MapsTo})} +\printValid{If a \sbol{MapsTo} is contained by a \sbol{FunctionalComponent} or \sbol{Module} in a \sbol{ModuleDefinition}, then the \sbol{local} property of the \sbol{MapsTo} MUST refer to another \sbol{FunctionalComponent} in the \sbol{ModuleDefinition}.\\ Reference: \sec{sec:MapsTo}} -\printValid{The \sbol{remote} property of a \sbol{MapsTo} is REQUIRED and MUST contain a \external{URI} reference to a \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} +\printValid{The \sbol{remote} property of a \sbol{MapsTo} is REQUIRED and MUST contain a \external{URI} reference to a \sbol{ComponentInstance}.\\ Reference: \sec{sec:MapsTo}} -\printWarning{The \sbol{remote} property of a \sbol{MapsTo} MUST refer to a \sbol{ComponentInstance} with an \sbol{access} property that contains the \external{URI} \url{http://sbols.org/v2\#public}. (Reference: \sec{sec:MapsTo})} +\printWarning{The \sbol{remote} property of a \sbol{MapsTo} MUST refer to a \sbol{ComponentInstance} with an \sbol{access} property that contains the \external{URI} \url{http://sbols.org/v2\#public}.\\ Reference: \sec{sec:MapsTo}} -\printWarning{If a \sbol{MapsTo} is contained by a \sbol{ComponentInstance}, then the \sbol{remote} property of the \sbol{MapsTo} MUST refer to a \sbol{Component} in the \sbol{ComponentDefinition} that is referenced by the \sbolmult{definition:CI}{definition} of the \sbol{ComponentInstance}. (Reference: \sec{sec:MapsTo})} +\printWarning{If a \sbol{MapsTo} is contained by a \sbol{ComponentInstance}, then the \sbol{remote} property of the \sbol{MapsTo} MUST refer to a \sbol{Component} in the \sbol{ComponentDefinition} that is referenced by the \sbolmult{definition:CI}{definition} of the \sbol{ComponentInstance}.\\ Reference: \sec{sec:MapsTo}} -\printWarning{If a \sbol{MapsTo} is contained by a \sbol{Module}, then the \sbol{remote} property of the \sbol{MapsTo} MUST refer to a \sbol{FunctionalComponent} in the \sbol{ModuleDefinition} that is referenced by the \sbolmult{definition:CI}{definition} of the \sbol{Module}. (Reference: \sec{sec:MapsTo})} +\printWarning{If a \sbol{MapsTo} is contained by a \sbol{Module}, then the \sbol{remote} property of the \sbol{MapsTo} MUST refer to a \sbol{FunctionalComponent} in the \sbol{ModuleDefinition} that is referenced by the \sbolmult{definition:CI}{definition} of the \sbol{Module}.\\ Reference: \sec{sec:MapsTo}} \printValid{The \sbol{refinement} property is REQUIRED and MUST contain a \external{URI} from \ref{tbl:mapsto_refinement}. -(Reference: \sec{sec:MapsTo})} +\\ Reference: \sec{sec:MapsTo}} \subsubsection*{Rules for the \class{SequenceAnnotation} class} \setcounter{sbolCtr}{10901} -\printValid{A \sbol{SequenceAnnotation} MUST inherit all properties of the \sbol{Identified} class. (Reference: \sec{sec:SequenceAnnotation})} +\printValid{A \sbol{SequenceAnnotation} MUST inherit all properties of the \sbol{Identified} class.\\ Reference: \sec{sec:SequenceAnnotation}} -\printValid{The \sbol{locations} property of a \sbol{SequenceAnnotation} is REQUIRED and MUST contain a non-empty set of \sbol{Location} objects. (Reference: \sec{sec:SequenceAnnotation})} +\printValid{The \sbol{locations} property of a \sbol{SequenceAnnotation} is REQUIRED and MUST contain a non-empty set of \sbol{Location} objects.\\ Reference: \sec{sec:SequenceAnnotation}} -\printValid{The \sbol{component} property is OPTIONAL and MAY contain a \sbol{URI} reference to a \sbol{Component}. (Reference: \sec{sec:SequenceAnnotation})} +\printValid{The \sbol{component} property is OPTIONAL and MAY contain a \sbol{URI} reference to a \sbol{Component}.\\ Reference: \sec{sec:SequenceAnnotation}} -\printValid{The \sbol{Component} referenced by the \sbol{component} property of a \sbol{SequenceAnnotation} MUST be contained by the \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. (Reference: \sec{sec:SequenceAnnotation})} +\printValid{The \sbol{Component} referenced by the \sbol{component} property of a \sbol{SequenceAnnotation} MUST be contained by the \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}.\\ Reference: \sec{sec:SequenceAnnotation}} \subsubsection*{Rules for the \class{Location} class} \setcounter{sbolCtr}{11001} -\printValid{A \sbol{Location} MUST inherit all properties of the \sbol{Identified} class. (Reference: \sec{sec:Location})} +\printValid{A \sbol{Location} MUST inherit all properties of the \sbol{Identified} class.\\ Reference: \sec{sec:Location}} \printValid{The \sbol{orientation} property of a \sbol{Location} is OPTIONAL and MAY contain a \sbol{URI} from \ref{tbl:orientation_types}. -(Reference: \sec{sec:GenericLocation})} +\\ Reference: \sec{sec:GenericLocation}} \subsubsection*{Rules for the \class{Range} class} \setcounter{sbolCtr}{11101} -\printValid{A \sbol{Range} MUST inherit all properties of the \sbol{Location} class. (Reference: \sec{sec:Range})} +\printValid{A \sbol{Range} MUST inherit all properties of the \sbol{Location} class.\\ Reference: \sec{sec:Range}} -\printValid{The \sbol{start} property of a \sbol{Range} is REQUIRED and MUST contain an \external{Integer} greater than zero. (Reference: \sec{sec:Range})} +\printValid{The \sbol{start} property of a \sbol{Range} is REQUIRED and MUST contain an \external{Integer} greater than zero.\\ Reference: \sec{sec:Range}} -\printValid{The \sbol{end} property of a \sbol{Range} is REQUIRED and MUST contain an \external{Integer} greater than zero. (Reference: \sec{sec:Range})} +\printValid{The \sbol{end} property of a \sbol{Range} is REQUIRED and MUST contain an \external{Integer} greater than zero.\\ Reference: \sec{sec:Range}} -\printValid{The value of the \sbol{end} property of a \sbol{Range} MUST be greater than or equal to the value of its \sbol{start} property. (Reference: \sec{sec:Range})} +\printValid{The value of the \sbol{end} property of a \sbol{Range} MUST be greater than or equal to the value of its \sbol{start} property.\\ Reference: \sec{sec:Range}} \Ctodo{Mike B: ``Might want to clarify how implementors should interpret these ranges, especially for cases of stuff that aligns to the - strand. For instance, can - strand components have end < start, because start and end are relative to the + strand?''} \subsubsection*{Rules for the \class{Cut} class} \setcounter{sbolCtr}{11201} -\printValid{A \sbol{Cut} MUST inherit all properties of the \sbol{Location} class. (Reference: \sec{sec:Cut})} +\printValid{A \sbol{Cut} MUST inherit all properties of the \sbol{Location} class.\\ Reference: \sec{sec:Cut}} -\printValid{The \sbol{at} property is REQUIRED and MUST contain an \external{Integer} greater than or equal to zero. (Reference: \sec{sec:Cut})} +\printValid{The \sbol{at} property is REQUIRED and MUST contain an \external{Integer} greater than or equal to zero. \\ Reference: \sec{sec:Cut}} \subsubsection*{Rules for the \class{GenericLocation} class} \setcounter{sbolCtr}{11301} -\printValid{A \sbol{GenericLocation} MUST inherit all properties of the \sbol{Location} class. (Reference: \sec{sec:GenericLocation})} +\printValid{A \sbol{GenericLocation} MUST inherit all properties of the \sbol{Location} class.\\ Reference: \sec{sec:GenericLocation}} \subsubsection*{Rules for the \class{SequenceConstraint} class} \setcounter{sbolCtr}{11401} -\printValid{A \sbol{SequenceConstraint} MUST inherit all properties of the \sbol{Identified} class. (Reference: \sec{sec:SequenceConstraint})} +\printValid{A \sbol{SequenceConstraint} MUST inherit all properties of the \sbol{Identified} class.\\ Reference: \sec{sec:SequenceConstraint}} -\printValid{The \sbol{subject} property is REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{Component}. (Reference: \sec{sec:SequenceConstraint})} +\printValid{The \sbol{subject} property is REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{Component}.\\ Reference: \sec{sec:SequenceConstraint}} -\printValid{The \sbol{Component} referenced by the \sbol{subject} property of a \sbol{SequenceConstraint} MUST be contained by the \sbol{ComponentDefinition} that contains the \sbol{SequenceConstraint}. (Reference: \sec{sec:SequenceConstraint})} +\printValid{The \sbol{Component} referenced by the \sbol{subject} property of a \sbol{SequenceConstraint} MUST be contained by the \sbol{ComponentDefinition} that contains the \sbol{SequenceConstraint}.\\ Reference: \sec{sec:SequenceConstraint}} -\printValid{The \sbol{object} property is REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{Component}. (Reference: \sec{sec:SequenceConstraint})} +\printValid{The \sbol{object} property is REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{Component}.\\ Reference: \sec{sec:SequenceConstraint}} -\printValid{The \sbol{Component} referenced by the \sbol{object} property of a \sbol{SequenceConstraint} MUST be contained by the \sbol{ComponentDefinition} that contains the \sbol{SequenceConstraint}. (Reference: \sec{sec:SequenceConstraint})} +\printValid{The \sbol{Component} referenced by the \sbol{object} property of a \sbol{SequenceConstraint} MUST be contained by the \sbol{ComponentDefinition} that contains the \sbol{SequenceConstraint}.\\ Reference: \sec{sec:SequenceConstraint}} -\printValid{The \sbol{object} property of a \sbol{SequenceConstraint} MUST NOT refer to the same \sbol{Component} as the \sbol{subject} property of the \sbol{SequenceConstraint}. (Reference: \sec{sec:SequenceConstraint})} +\printValid{The \sbol{object} property of a \sbol{SequenceConstraint} MUST NOT refer to the same \sbol{Component} as the \sbol{subject} property of the \sbol{SequenceConstraint}.\\ Reference: \sec{sec:SequenceConstraint}} \printValid{The \sbol{restriction} property is REQUIRED and MUST contain a \sbol{URI}. -(Reference: \sec{sec:SequenceConstraint})} +\\ Reference: \sec{sec:SequenceConstraint}} \printModeling{The \sbol{URI} contained by the \sbol{restriction} property SHOULD come from \ref{tbl:restriction_types}. -(Reference: \sec{sec:SequenceConstraint})} +\\ Reference: \sec{sec:SequenceConstraint}} \subsubsection*{Rules for the \class{Model} class} \setcounter{sbolCtr}{11501} -\printValid{A \sbol{Model} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Model})} +\printValid{A \sbol{Model} object inherits all properties of a \sbol{TopLevel} object.\\ Reference: \sec{sec:Model}} -\printValid{The \sbol{source} property is a REQUIRED \sbol{URI} that specifies the location of the model source file. (Reference: \sec{sec:Model})} +\printValid{The \sbol{source} property is a REQUIRED \sbol{URI} that specifies the location of the model source file.\\ Reference: \sec{sec:Model}} -\printValid{The \sbol{language} property is a REQUIRED \sbol{URI} that specifies the language in which the model is encoded. (Reference: \sec{sec:Model})} +\printValid{The \sbol{language} property is a REQUIRED \sbol{URI} that specifies the language in which the model is encoded.\\ Reference: \sec{sec:Model}} -\printModeling{The \sbol{language} property SHOULD be a \sbol{URI} from the EMBRACE Data and Methods (EDAM) ontology. (Reference: \sec{sec:Model})} +\printModeling{The \sbol{language} property SHOULD be a \sbol{URI} from the EMBRACE Data and Methods (EDAM) ontology.\\ Reference: \sec{sec:Model}} -\printValid{The \sbol{framework} property is a REQUIRED \sbol{URI} that specifies the modeling framework. (Reference: \sec{sec:Model})} +\printValid{The \sbol{framework} property is a REQUIRED \sbol{URI} that specifies the modeling framework.\\ Reference: \sec{sec:Model}} -\printModeling{The \sbol{framework} property SHOULD be a \sbol{URI} from the modeling framework branch of the SBO. (Reference: \sec{sec:Model})} +\printModeling{The \sbol{framework} property SHOULD be a \sbol{URI} from the modeling framework branch of the SBO.\\ Reference: \sec{sec:Model}} -\printWarning{The \sbol{source} property MUST specify the location of the model source file in the specified \sbol{language} using the specified \sbol{framework}. (Reference: \sec{sec:Model})} +\printWarning{The \sbol{source} property MUST specify the location of the model source file in the specified \sbol{language} using the specified \sbol{framework}.\\ Reference: \sec{sec:Model}} \subsubsection*{Rules for the \class{ModuleDefinition} class} \setcounter{sbolCtr}{11601} -\printValid{A \sbol{ModuleDefinition} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:ModuleDefinition})} +\printValid{A \sbol{ModuleDefinition} object inherits all properties of a \sbol{TopLevel} object.\\ Reference: \sec{sec:ModuleDefinition}} -\printValid{The \sbolmult{roles:MD}{roles} property is an OPTIONAL set of \sbol{URI}s. (Reference: \sec{sec:ModuleDefinition})} +\printValid{The \sbolmult{roles:MD}{roles} property is an OPTIONAL set of \sbol{URI}s. \\ Reference: \sec{sec:ModuleDefinition}} -\printValid{The \sbol{modules} property is an OPTIONAL set of \sbol{Module} objects. (Reference: \sec{sec:ModuleDefinition})} +\printValid{The \sbol{modules} property is an OPTIONAL set of \sbol{Module} objects. \\ Reference: \sec{sec:ModuleDefinition}} -\printValid{The \sbol{interactions} property is an OPTIONAL set of \sbol{Interaction} objects. (Reference: \sec{sec:ModuleDefinition})} +\printValid{The \sbol{interactions} property is an OPTIONAL set of \sbol{Interaction} objects. \\ Reference: \sec{sec:ModuleDefinition}} -\printValid{The \sbol{functionalComponents} property is an OPTIONAL set of \sbol{FunctionalComponent} objects. (Reference: \sec{sec:ModuleDefinition})} +\printValid{The \sbol{functionalComponents} property is an OPTIONAL set of \sbol{FunctionalComponent} objects. \\ Reference: \sec{sec:ModuleDefinition}} -\printValid{The \sbol{models} property is an OPTIONAL set of \sbol{URI}s that reference \sbol{Model} objects. (Reference: \sec{sec:ModuleDefinition})} +\printValid{The \sbol{models} property is an OPTIONAL set of \sbol{URI}s that reference \sbol{Model} objects. \\ Reference: \sec{sec:ModuleDefinition}} -\printModeling{Each \sbol{URI} in the set of \sbol{models} SHOULD reference a \sbol{Model} object. (Reference: \sec{sec:ModuleDefinition})} +\printModeling{Each \sbol{URI} in the set of \sbol{models} SHOULD reference a \sbol{Model} object. \\ Reference: \sec{sec:ModuleDefinition}} \subsubsection*{Rules for the \class{FunctionalComponent} class} \setcounter{sbolCtr}{11701} -\printValid{A \sbol{FunctionalComponent} MUST inherit all properties of the \sbol{ComponentInstance} class. (Reference: \sec{sec:ComponentInstance})} +\printValid{A \sbol{FunctionalComponent} MUST inherit all properties of the \sbol{ComponentInstance} class.\\ Reference: \sec{sec:ComponentInstance}} \printValid{The \sbol{direction} property of a \sbol{FUnctionalComponent} is REQUIRED and MUST contain a \sbol{URI} from \ref{tbl:functionalcomponent_directions}. -(Reference: \sec{sec:FunctionalComponent})} +\\ Reference: \sec{sec:FunctionalComponent}} \subsubsection*{Rules for the \class{Module} class} \setcounter{sbolCtr}{11801} -\printValid{A \sbol{Module} object inherits all properties of a \sbol{Identified} object. (Reference: \sec{sec:Module})} +\printValid{A \sbol{Module} object inherits all properties of a \sbol{Identified} object.\\ Reference: \sec{sec:Module}} -\printValid{The \sbolmult{definition:M}{definition} property is a REQUIRED \sbol{URI} reference to a \sbol{ModuleDefinition} object. (Reference: \sec{sec:Module})} +\printValid{The \sbolmult{definition:M}{definition} property is a REQUIRED \sbol{URI} reference to a \sbol{ModuleDefinition} object. \\ Reference: \sec{sec:Module}} -\printValid{The \sbolmult{mapsTos:M}{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects. (Reference: \sec{sec:Module})} +\printValid{The \sbolmult{mapsTos:M}{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects. \\ Reference: \sec{sec:Module}} \subsubsection*{Rules for the \class{Interaction} class} \setcounter{sbolCtr}{11901} -\printValid{An \sbol{Interaction} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Interaction})} +\printValid{An \sbol{Interaction} object inherits all properties of an \sbol{Identified} object.\\ Reference: \sec{sec:Interaction}} -\printValid{The \sbolmult{types:I}{types} property is a set of \sbol{URI}s, and it is REQUIRED to include at least one entry. (Reference: \sec{sec:Interaction})} +\printValid{The \sbolmult{types:I}{types} property is a set of \sbol{URI}s, and it is REQUIRED to include at least one entry.\\ Reference: \sec{sec:Interaction}} -\printModeling{A least one type in the set of \sbolmult{types:I}{types} SHOULD be a \sbol{URI} from the occurring entity relationship branch of the SBO. (Reference: \sec{sec:Interaction})} +\printModeling{A least one type in the set of \sbolmult{types:I}{types} SHOULD be a \sbol{URI} from the occurring entity relationship branch of the SBO.\\ Reference: \sec{sec:Interaction}} -\printValid{The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects. (Reference: \sec{sec:Interaction})} +\printValid{The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects.\\ Reference: \sec{sec:Interaction}} \subsubsection*{Rules for the \class{Participation} class} \setcounter{sbolCtr}{12001} -\printValid{A \sbol{Participation} object inherits all properties of an \sbol{Identified} object. (Reference: \sec{sec:Participation})} +\printValid{A \sbol{Participation} object inherits all properties of an \sbol{Identified} object.\\ Reference: \sec{sec:Participation}} -\printValid{The \sbol{participant} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}. (Reference: \sec{sec:Participation})} +\printValid{The \sbol{participant} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}.\\ Reference: \sec{sec:Participation}} -\printValid{The \sbolmult{roles:P}{roles} property is an OPTIONAL set of \sbol{URI}s. (Reference: \sec{sec:Participation})} +\printValid{The \sbolmult{roles:P}{roles} property is an OPTIONAL set of \sbol{URI}s.\\ Reference: \sec{sec:Participation}} -\printModeling{A least one role in the set of \sbolmult{roles:P}{roles} SHOULD be a \sbol{URI} from the participant role branch of the SBO. (Reference: \sec{sec:Participation})} +\printModeling{A least one role in the set of \sbolmult{roles:P}{roles} SHOULD be a \sbol{URI} from the participant role branch of the SBO.\\ Reference: \sec{sec:Participation}} \subsubsection*{Rules for the \class{Collection} class} \setcounter{sbolCtr}{12101} -\printValid{A \sbol{Collection} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} +\printValid{A \sbol{Collection} object inherits all properties of a \sbol{TopLevel} object.\\ Reference: \sec{sec:Collection}} -\printValid{The \sbol{members} property is an OPTIONAL set of \sbol{URI}s. that reference \sbol{TopLevel} objects. (Reference: \sec{sec:Collection})} +\printValid{The \sbol{members} property is an OPTIONAL set of \sbol{URI}s. that reference \sbol{TopLevel} objects.\\ Reference: \sec{sec:Collection}} -\printModeling{Each \sbol{URI} in the set of \sbol{members} SHOULD reference a \sbol{TopLevel} object. (Reference: \sec{sec:Collection})} +\printModeling{Each \sbol{URI} in the set of \sbol{members} SHOULD reference a \sbol{TopLevel} object.\\ Reference: \sec{sec:Collection}} \subsubsection*{Rules for the \class{Annotation} class} \setcounter{sbolCtr}{12201} -\printValid{The \sbol{name} property is REQUIRED, and it has data type \sbol{QName}. (Reference: \sec{sec:Annotations})} +\printValid{The \sbol{name} property is REQUIRED, and it has data type \sbol{QName}.\\ Reference: \sec{sec:Annotations}} -\printValid{The \sbol{value} property is REQUIRED, and it has data type \sbol{AnnotationValue}. (Reference: \sec{sec:Annotations})} +\printValid{The \sbol{value} property is REQUIRED, and it has data type \sbol{AnnotationValue}.\\ Reference: \sec{sec:Annotations}} -\printValid{The \sbol{AnnotationValue} class MUST be of data type \sbol{String}, \sbol{Integer}, \sbol{Double}, \sbol{Boolean}, \sbol{URI}, or \sbol{NestedAnnotations}. (Reference: \sec{sec:Annotations})} +\printValid{The \sbol{AnnotationValue} class MUST be of data type \sbol{String}, \sbol{Integer}, \sbol{Double}, \sbol{Boolean}, \sbol{URI}, or \sbol{NestedAnnotations}.\\ Reference: \sec{sec:Annotations}} -\printValid{The \sbol{nestedURI} property is REQUIRED for a \sbol{NestedAnnotations} object, and it has data type \sbol{URI}. (Reference: \sec{sec:Annotations})} +\printValid{The \sbol{nestedURI} property is REQUIRED for a \sbol{NestedAnnotations} object, and it has data type \sbol{URI}. \\ Reference: \sec{sec:Annotations}} -\printValid{The \sbol{annotations} property is an OPTIONAL set for a \sbol{NestedAnnotations} object, and each member is of data type \sbol{Annotation}. (Reference: \sec{sec:Annotations})} +\printValid{The \sbol{annotations} property is an OPTIONAL set for a \sbol{NestedAnnotations} object, and each member is of data type \sbol{Annotation}. \\ Reference: \sec{sec:Annotations}} \subsubsection*{Rules for the \class{GenericTopLevel} class} \setcounter{sbolCtr}{12301} -\printValid{A \sbol{GenericTopLevel} object inherits all properties of a \sbol{TopLevel} object. (Reference: \sec{sec:GenericTopLevel})} +\printValid{A \sbol{GenericTopLevel} object inherits all properties of a \sbol{TopLevel} object.\\ Reference: \sec{sec:GenericTopLevel}} -\printValid{The \sbol{rdfType} property is REQUIRED, and it has data type \sbol{QName}. (Reference: \sec{sec:GenericTopLevel})} \ No newline at end of file +\printValid{The \sbol{rdfType} property is REQUIRED, and it has data type \sbol{QName}.\\ Reference: \sec{sec:GenericTopLevel}} \ No newline at end of file diff --git a/images/MapsTo_Diagram_3.png b/images/MapsTo_Diagram_3.png new file mode 100644 index 0000000000000000000000000000000000000000..8e5974b3234ee7f57ef48b3690d51e0ad4fe0ef9 GIT binary patch literal 453497 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%0Ap0qMCVj(>AJEq2`eX!0t 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

    O8s|!EVY)M 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�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๝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

    wjsR_S|Q+O}kash;Wg3orBkH^Jc9Ocj6Vg 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Ǽ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
    2?>42pf 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�diHk{3WT&;}uX*A8R-ISY~46Ou4a@|vf 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 literal 0 HcmV?d00001 diff --git a/model.tex b/model.tex index a26fb23f..e95c356e 100644 --- a/model.tex +++ b/model.tex @@ -229,8 +229,6 @@ \subsubsection*{Serialization} % properties inherited from \sbol{Documented}, where CLASS\_NAME is % replaced by the name of the class: -\Ctodo{Mike B: ``There is some potential for confusion because TopLevels aren't really at the TopLevel in the XML serialized form; they're one level down, beneath the RDF document root. Might want to clarify this in the relevant passages.''} - \subsection {TopLevel} \label{sec:TopLevel} \sbol{TopLevel} is an abstract class that is extended by any \sbol{Identified} class that can be found at the top level of an SBOL document or file. In other words, \sbol{TopLevel} objects are not nested inside any other object via a composite aggregation or black diamond arrow association property. Instead of nesting, composite \sbol{TopLevel} objects refer to subordinate \sbol{TopLevel} objects by their \sbol{URI}s using shared aggregation or white diamond arrow association properties. The \sbol{TopLevel} classes defined in this specification are \sbol{Sequence}, \sbol{ComponentDefinition}, \sbol{Model}, \sbol{ModuleDefinition}, \sbol{Collection}, and \sbol{GenericTopLevel} (\ref{uml:toplevel}). @@ -245,9 +243,10 @@ \subsubsection*{Serialization} \subsubsection*{Serialization} -No serialization is defined for \sbol{TopLevel}, since this class has -no properties of its own and is only used indirectly through its child -classes. +No serialization is defined for \sbol{TopLevel}, since this class has no properties of its own and is only used indirectly through its child classes. All \sbol{TopLevel} classes are serialized one level beneath the RDF document root. + +\Rtodo{Mike B: ``There is some potential for confusion because TopLevels aren't really at the TopLevel in the XML serialized form; they're one level down, beneath the RDF document root. Might want to clarify this in the relevant passages.'' - Added text above -CJM} + \subsection{Sequence} \label{sec:Sequence} @@ -369,7 +368,7 @@ \subsubsection*{The \sbolheading{roles} property} \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbolmult{roles:CD}{roles} property and their \sbol{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). Any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use the \external{URI} for that term as one of its \sbolmult{roles:CD}{roles}. -\Ctodo{Query from Mike B: ``In my organization, it is very common to define single components containing multiple adjacent items from table 3, the table of roles. For example, it's more common to design a part as a gene + stop + terminator than just a lonely gene. We're not alone in this. Do you want to make any recommendations for this situation?'' Answer from Chris: ComponentDefinitions are hierarchical. I think the confusion is that what to do with a composite CD. I think we should have a term for engineered region or the like for that and explain it.} +\Rtodo{Query from Mike B: ``In my organization, it is very common to define single components containing multiple adjacent items from table 3, the table of roles. For example, it's more common to design a part as a gene + stop + terminator than just a lonely gene. We're not alone in this. Do you want to make any recommendations for this situation?'' Answer from Chris: ComponentDefinitions are hierarchical. I think the confusion is that what to do with a composite CD. I have added the term for engineered gene for this.} \begin{table}[ht] \begin{edtable}{tabular}{lll} @@ -382,7 +381,8 @@ \subsubsection*{The \sbolheading{roles} property} Terminator & \url{http://identifiers.org/so/SO:0000141} & DNA \\ Gene & \url{http://identifiers.org/so/SO:0000704} & DNA \\ Operator & \url{http://identifiers.org/so/SO:0000057} & DNA \\ - mRNA & \url{http://identifiers.org/so/SO:0000234} & RNA \\ + Engineered Gene & \url{http://identifiers.org/so/SO:0000280} & DNA \\ + mRNA & \url{http://identifiers.org/so/SO:0000234} & RNA \\ Effector & \url{http://identifiers.org/chebi/CHEBI:35224} & Small Molecule \\ \bottomrule \end{edtable} diff --git a/overview.tex b/overview.tex index dd804f4e..3cfe3a0e 100644 --- a/overview.tex +++ b/overview.tex @@ -58,4 +58,16 @@ \section{Overview of SBOL} Therefore, a \sbol{ModuleDefinition} does not own the \sbol{ModuleDefinition}s that it uses, but instead it refers to them using the \sbol{Module} objects that it does own. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, SBOL 2.0 provides a few other additional helper classes such as \sbol{Location} that generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint} that generalizes the relative positioning information among \sbol{Component}s. There is also \sbol{Participation}s, which allow \sbol {Interaction} objects to specify the roles of their participants while referencing the \sbol{FunctionalComponent}s, so that these can stand on their own. Finaly, there is the \sbol{MapsTo} class (not shown) that enables connections to be made between \sbol{Component}s and \sbol{FunctionalComponent}s at various levels of the design hierarchy. The next section provides complete definitions and details for all of these classes. +\Rtodo{Added mapping of objects from 1.1 to 2.0 using the diagram from the libSBOLj paper. Needs review. Also not entirely sure this is the right place. Should we move it to its own section later? -CJM} + +Figure~\ref{SBOL1TO2} depicts the mapping between SBOL 1.1 data objects and SBOL 2.0 data objects. Collections of DNA components map to Collections of ComponentDefinitions, among other top level SBOL objects. DnaComponents map to ComponentDefinitions of type DNA. DnaSequences map to Sequences using the IUPAC encoding for nucleotide sequences. SequenceAnnotations with precise start and end positions are mapped to SequenceAnnotations with Range Locations, while SequenceAnnotations with imprecise positions are mapped to SequenceAnnotations with GenericLocations. Each Sequence Annotation also maps to a Component, which in SBOL 2.0 represents the instantiation or usage of a given ComponentDefinition. Finally, precedes relationships map to SequenceConstraints that specify precedes restrictions. + +\begin{figure*} +\begin{center} + \includegraphics[width=\textwidth]{images/sbol_v1_to_v2} +\end{center} +\caption{\label{SBOL1TO2}The mapping from the SBOL 1.1 data model to the SBOL 2.0 data model.} +\end{figure*} + There is one final critical part of SBOL 2.0, its extension mechanism. This extension mechanism enables both a framework for application specific information, and a means to prototype representation of data whose format has not yet reached community consensus. In particular, each SBOL entity can be annotated using the \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \sbol{GenericTopLevel} entities. SBOL libraries makes these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. + diff --git a/practices.tex b/practices.tex index 6f769ae2..460de572 100644 --- a/practices.tex +++ b/practices.tex @@ -17,7 +17,7 @@ \subsection{Use of the Version Property} \subsection{Compliant SBOL Objects} \label{sec:compliant} -\LDtodo{Mike B. ``If the persistentIdentity of a compliant object must end with a delim + its displayId, then a compliant object's displayId may never change. If that was your intent, I think you should state it explicitly here, to reinforce an impliciation which otherwise might go unnoticed by readers.''} +\Rtodo{Mike B. ``If the persistentIdentity of a compliant object must end with a delim + its displayId, then a compliant object's displayId may never change. If that was your intent, I think you should state it explicitly here, to reinforce an impliciation which otherwise might go unnoticed by readers.'' ANSWER: this is correct. I've added a bullet below stating this. -CJM} Maintaining unique identity URIs for all SBOL objects is a very challenging implementation task. To reduce the developer's burden, users of SBOL 2.0 are encouraged to follow a few simple rules when constructing the identity and related fields for SBOL objects. When these rules are followed, we say that the SBOL object is \emph{compliant}. The rules are as follows: \begin{enumerate} @@ -28,9 +28,10 @@ \subsection{Compliant SBOL Objects} \item When a SBOL object is not given a \sbol{version}, the \sbol{identity} and \sbol{persistentIdentity} must be equal. \item When a SBOL object is given a \sbol{version}, the \sbol{identity} must be equal to the "\refObj{persistentIdentity}/\refObj{version}". \item The \sbol{version} of a compliant child object must be equal to the \sbol{version} of its parent object. +\item The \sbol{identity}, \sbol{persistentIdentity}, \sbol{displayId}, and \sbol{version} of a compliant object once set can never be changed. \end{enumerate} -\LDtodo{Mike B: ``"The version of a compliant child object must be equal to the version of {its} parent object." +\NVtodo{Mike B: ``"The version of a compliant child object must be equal to the version of {its} parent object." There is an alternative. Consider what happens in the following scenario: suppose my parent object is 'dad', and its two children are 'daughter' and 'son'. dad starts at v1.0, and likewise daughter starts at v1.0 and son is v1.0. @@ -39,7 +40,9 @@ \subsection{Compliant SBOL Objects} However, there is no reason why daughter's version should change to v1.1. Daughter is exactly the same as she was at v1.0, and retaining her old version saves us the trouble of diffing v1.0 and the identical v1.1. In other words, version changes should be minimally promoted up the tree, but not back down to siblings and relatives if they didn't change. -If you don't want to do it this way, I do see why, but I've found it helpful on past projects to increment versions only on the things that contain diffs (including their containers, recursively). That's the way that many dependency management systems work, as well as certain aspects of version control: when you ask for a log on an individual file in a version control system, you don't see every revisions that ever touched the repo, you only see the revisions that modified that file.''} +If you don't want to do it this way, I do see why, but I've found it helpful on past projects to increment versions only on the things that contain diffs (including their containers, recursively). That's the way that many dependency management systems work, as well as certain aspects of version control: when you ask for a log on an individual file in a version control system, you don't see every revisions that ever touched the repo, you only see the revisions that modified that file.'' + +ANSWER: I can see your point. It would, however, complicate a few things in our library implementation, and it would be very difficult to change at this point. We can consider this for a future version.} For examples, see any example in this specification, as all have been formulated using compliant URIs. @@ -80,10 +83,10 @@ \subsection{Completeness and Validation} retrieving them from various repositories) or else to mark them as being unverified and not depend on their correctness. -\LDtodo{Mike B. ``"the program doing [the deserialization] SHOULD verify that all of the property values encoded therein have the right type...." +\NVtodo{Mike B. ``"the program doing [the deserialization] SHOULD verify that all of the property values encoded therein have the right type...." Not everybody knows how to apply XML+XSD. Maybe we should give new users a big hint: they can just use any correctly implemented SBOL 2.0 XSD file along with a validating XML parser to do this stuff automatically. We really don't want implementators getting scared off by the burden imposed by this section of the spec. Let's perhaps additionally recommend as a bootstrapping exercise to grab an SBOL 2.0 XSD file out of a recognized reference implementation (libSBOLj, for instance), then start by feeding the XSD and the user's SBOL document in question to a validating XML parser such as xmllint, which is FOSS, works great, and installs in seconds. (Side note: if you choose to give these helpful hints, please make it clear that a given reference implementation is not a spec; if it contains errors, the spec wins.) -A section about completeness and validation that doesn't talk about the available official or unofficial XSDs is incomplete. This part was left out of SBOL 1.1, but now that serialization is a big part of SBOL 2.0, an XSD should be included somehow, if only by reference.''} +A section about completeness and validation that doesn't talk about the available official or unofficial XSDs is incomplete. This part was left out of SBOL 1.1, but now that serialization is a big part of SBOL 2.0, an XSD should be included somehow, if only by reference.'' ANSWER: agreed, we need to do an XSD as soon as possible. Help would be appreciated. -CJM} \subsection{Recommended Ontologies for External Terms} diff --git a/purpose.tex b/purpose.tex index 25f2e393..e0d4a849 100644 --- a/purpose.tex +++ b/purpose.tex @@ -51,8 +51,6 @@ \section{Purpose} Second, the specification includes a set of validation rules for determining compatibility of a document with SBOL 2.0, most of which are machine-verifiable. Finally, the specification includes a set of recommended best-practices likely to allow a tool to take best advantage of the standard and other compatible tools. -\Ctodo{We should add a section showing the mapping of objects from 1.1 to 2.0 using Nic's diagram.} - Care has been taken to ensure that SBOL 2.0 is backward-compatible with SBOL 1.x. The generalization of the data model does mean that many names have changed and thus an SBOL 1.x file is not a valid SBOL 2.0 file. There is, however, a direct mapping from the SBOL 1.x data model into the SBOL 2.0 data model, making it simple to automatically ``upgrade'' any SBOL 1.x file into and SBOL 2.0 file. @@ -60,12 +58,12 @@ \section{Purpose} \Rtodo{Added text above to address Swapnil's comment. Needs review. -CJM} -\Ctodo{I added this to bring extensibility to the fore as I thikn it is a crtical component of SBOL 2.0. Currently it is discused too late into the document and in a technical way that may not understandable by non-technical readers. The text will probably require some additional editing - HMS.} +\Rtodo{I added this to bring extensibility to the fore as I thikn it is a crtical component of SBOL 2.0. Currently it is discused too late into the document and in a technical way that may not understandable by non-technical readers. The text will probably require some additional editing - HMS.} As discussed previously, SBOL 2.0 allows designs to be described beyond the simple annotated DNA sequence offered in SBOL 1.1. Of equal importance in SBOL 2.0 is the explicit provision of mechanisms that allows SBOL to be easily extended~\cite{sec:Annotations}. The intent of SBOL is to allow designs of synthetic biological systems to be fully described so that such designs can be reproduced. However SBOL does not currently offer a full catalog of data%Note I'm using data not metadata to avoid technical terms at this state to allow one to achieve complete reproducibility. For example the proposed standard does not yet include environmental and host context information or details on how the performance of the design is measured. Such details can now be included in SBOL through an explicit extension mechanism. Three scenarios are envisaged for extending SBOL: -\Ctodo{One might feel that the following list probably should go to the end of the overview but I wanted somewhere to describe the use cases of extensions in plain language without introducing any comp sci technical terms, and the overview is already fairly technical. If people don't like these types of low level descriptions in the spec document which would be a reasonable concern, then I can suggest a second document that gives a non-technical description of SBOL 2.0 - HMS.} +\Rtodo{One might feel that the following list probably should go to the end of the overview but I wanted somewhere to describe the use cases of extensions in plain language without introducing any comp sci technical terms, and the overview is already fairly technical. If people don't like these types of low level descriptions in the spec document which would be a reasonable concern, then I can suggest a second document that gives a non-technical description of SBOL 2.0 - HMS.} \begin{itemize} \item Use of the extension mechanism to include critical information related to the reproducibility of designs. For example, what growth media was used, what temperature were the organisms grown at, when were they harvested, was the DNA integrated into the host genome (if so here), or in a plasmid (what plasmid). From bf63c46fcd25fb5f26ceb005534bd1d1b2b38d4e Mon Sep 17 00:00:00 2001 From: jakebeal Date: Thu, 4 Jun 2015 07:59:37 -0500 Subject: [PATCH 278/317] resolved a couple of todos --- model.tex | 2 -- practices.tex | 2 -- 2 files changed, 4 deletions(-) diff --git a/model.tex b/model.tex index e95c356e..3395f6ee 100644 --- a/model.tex +++ b/model.tex @@ -1255,8 +1255,6 @@ \subsubsection{Interaction} Note that even though an \sbol{Interaction} generally involves at least one \sbol{Participation}, the case of zero participations is allowed because it is plausible that a design may wish to specify that an \sbol{Interaction} will exist, even if its \sbol{participants} are not yet determined. -\Rtodo{Should particpations be 1..n rather than 0..n? -JSB, per Mike B. I actually brought this up earlier, and I was told that we may want to be able to specify that we know there is an interaction but we don't yet know what the participants are. -CJM Right: I have added text explaining. -JSB} - \paragraph{Serialization} The serialization of \sbol{Interaction} objects has the following form. diff --git a/practices.tex b/practices.tex index 460de572..8a5064a3 100644 --- a/practices.tex +++ b/practices.tex @@ -17,8 +17,6 @@ \subsection{Use of the Version Property} \subsection{Compliant SBOL Objects} \label{sec:compliant} -\Rtodo{Mike B. ``If the persistentIdentity of a compliant object must end with a delim + its displayId, then a compliant object's displayId may never change. If that was your intent, I think you should state it explicitly here, to reinforce an impliciation which otherwise might go unnoticed by readers.'' ANSWER: this is correct. I've added a bullet below stating this. -CJM} - Maintaining unique identity URIs for all SBOL objects is a very challenging implementation task. To reduce the developer's burden, users of SBOL 2.0 are encouraged to follow a few simple rules when constructing the identity and related fields for SBOL objects. When these rules are followed, we say that the SBOL object is \emph{compliant}. The rules are as follows: \begin{enumerate} \item The \sbol{identity} of an SBOL object should begin with a \emph{URI prefix} that maps to a domain over which the user has control. Namely, the user can guarantee uniqueness of identities within this domain. From 0108c5bcc0b521f6ea380c0a3aa6940ce92cf039 Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Thu, 4 Jun 2015 15:08:08 +0000 Subject: [PATCH 279/317] Update on Overleaf. --- history.tex | 3 ++- purpose.tex | 29 +++++++++++++++++------------ vocabulary.tex | 6 ++++-- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/history.tex b/history.tex index 8b12989d..422df40e 100644 --- a/history.tex +++ b/history.tex @@ -28,7 +28,8 @@ \section{A Brief History of SBOL} The 8th SBOL workshop was held in November 2012 at Boston University, and the major topic of discussion was the next version of SBOL. SBOL 1.1 is limited to describing hierarchical DNA sequences. Several extensions were discussed at this meeting, such as a means to describe genetic regulation, which later become the \sbol{Interaction} class, and a means to group components, which later became the \sbol{Module} class. In April 2013, at the 9th SBOL workshop at Newcastle University, the framework for SBOL 2.0 was agreed upon. -Nicholas Roehner, Matthew Pocock, and Ernst Oberortner then began work on a draft proposal for SBOL 2.0. In January 2014 at the 10th SBOL workshop, this draft was discussed and many refinements were debated and approved. Another important decision at this meeting was that SBOL should begin investigating joining the COMBINE community of standards (\url{www.co.mbine.org}). +Nicholas Roehner, Matthew Pocock, and Ernst Oberortner then began work on a draft proposal for SBOL 2.0. In January 2014 at the 10th SBOL workshop, this draft was discussed and many refinements were debated and approved. +Another important decision at this meeting was that SBOL should be part of the COMBINE community of standards (\url{www.co.mbine.org}). In the Spring and Summer of 2014, several important events occurred. In April, several SBOL representatives attended Harmony in Manchester UK to discuss joining the COMBINE community, which was approved by both sides shortly thereafter. In May, Herbert Sauro, John Gennari, and Chris Myers received a grant from the National Science Foundation to support SBOL (this document and the supporting software are due in no small part to this support). diff --git a/purpose.tex b/purpose.tex index e0d4a849..621a4bbb 100644 --- a/purpose.tex +++ b/purpose.tex @@ -6,23 +6,27 @@ \section{Purpose} % The Synthetic Biology Open Language is intended to help synthetic biologists collaborate by allowing them to exchange designs in a standardized data format. In addition, the SBOL data model systematically describes the essential details of a design that are required for researchers to reproduce each other's designs in the laboratory. The purpose of the Synthetic Biology Open Language is to aid collaboration between researchers, improve scientific reproducibility, and to speed the research and development of technologies based on synthetic biology. % Below is my revision. Any thoughts? - Nic +\Ctodo{Goksel:I find this paragraph too detailed. Up to the sentence starting with "When designing" is ok. If we really want to give an example, just a TF would be enough without mentioning about microRNAs or antagonists, and keeping it short.} +Synthetic biology builds upon the techniques and successes of genetics, molecular biology, and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. A common factor of these challenges is the exchange of information about designed systems between laboratories. When designing a synthetic system, synthetic biologists need to exchange information about multiple types of molecules and their planned roles in the design. Often the functional role may be associated with another type of molecule entirely, such as a small chemical, a DNA, an RNA or a Protein molecule. An example is a DNA sequence that is transcribed into a messenger RNA that contains an encoded microRNA binding site, and the messenger RNA in turn being translated into a protein molecule which is a transcription factor binding protein. Functionally the representation of the products of the designed DNA sequence need to describe the role of microRNA binding to the messenger RNA leading to possible degradation, the functional consequence of the transcription factor protein being absent leading to repression of expression of another gene and the kinetic information associated with these different elements so they can be mathematically modeled. The DNA sequence itself is thus one or two steps removed from the functional role of the designed device or circuit. -Synthetic biology builds upon the techniques and successes of genetics, molecular biology, and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. A common factor of these challenges is the exchange of information about designed systems between laboratories. When designing a synthetic system, synthetic biologists need to exchange information about multiple types of molecules and their planned roles in the design. Often the functional role may be associated with another type of molecule entirely, such as a small chemical, a DNA, an RNA or a Protein molecule. An example is an DNA sequence that is transcribed into a messenger RNA that contains an encoded microRNA binding site, and the messenger RNA in turn being translated into a protein molecule which is a transcription factor binding protein. Functionally the representation of the products of the designed DNA sequence need to describe the role of microRNA binding to the messenger RNA leading to possible degradation, the functional consequence of the transcription factor protein being absent leading to repression of expression of another gene and the kinetic information associated with these different elements so they can be mathematically modeled. The DNA sequence itself is thus one or two steps removed from the functional role of the designed device or circuit. -SBOL has been designed as a standard to support synthetic biology, filling a need not satisfied by other pre-existing standards. Previous file formats such as GenBank and SwissProt represent sequence information based upon annotation of sequence features - they do not represent the functional roles or consequences of these sequences. Systems Biology Markup Language (SBML) represents reactions, pathways, and models, but does not typically represent the associated sequences. Kinetic information may be present in SBML~\cite{SBML} or mass conservation laws in other systems such as the COBRA Toolbox~\cite{COBRA}. Synthetic Biology needs a structured standard with defined ways on how to represent relevant molecules and their functional roles within the designed system, standardized rules on how such information is encoded in the file and the means to enable exchange of such data between participating laboratories as part of publications. +The \emph{Synthetic Biology Open Language} has been designed as a standard to support synthetic biology, filling a need not satisfied by other pre-existing standards. Previous file formats such as GenBank and Swiss-Prot represent sequence information based upon annotation of sequence features - they do not represent the functional roles or consequences of these sequences. Modelling languages, such as the Systems Biology Markup Language (SBML) ~\cite{SBML} can be used represent biological processes, but is not sufficient to represent the associated nucleotide or amino acid sequences. %Goksel: Commented this sentence: Kinetic information may be present in SBML~\cite{SBML} or mass conservation laws in other systems such as the COBRA Toolbox~\cite{COBRA}. +Synthetic biology needs a structured standard with defined ways on how to represent relevant molecules and their functional roles within the designed system, standardized rules on how such information is encoded in the file and the means to enable exchange of such data between participating laboratories as part of publications. +%Goksel: Updated the sentence as above:Systems Biology Markup Language (SBML) represents reactions, pathways, and models, but does not typically represent the associated sequences. -To help address these challenges, the \emph{Synthetic Biology Open Language} (SBOL) introduces a standardized format for the electronic exchange of information describing the structural and functional aspects of biological designs. -The standard is designed to support the development of explicit and unambiguous data models of biological designs through the use of a well defined model on how to represent the component molecules, and their structural and functional roles in a systematic fashion. +To help address these challenges, the SBOL introduces a standardized format for the electronic exchange of information describing the structural and functional aspects of biological designs. +The standard is designed to support the development of explicit and unambiguous data models of biological designs through the use of a well defined data model on how to represent the biological molecules, and their structural and functional roles in a systematic fashion. The standard further describes rules and best practices on how to include, develop, and populate this format with relevant information of essential design details. -Because the standard itself can represent information from other sources for sequence representations, reaction information and ontologies to represent biological design information, the standard uses modern information exchange techniques such as \emph{Universal Resource Identifiers} (URIs). This permits the reuse of existing information without the need to repeat it, thus avoiding both redundancy and likely future information decay within shared files. -The ultimate utility of URIs in the SBOL Standard is the ability to support flexible annotation with appropriate metadata while associating an authority with that annotation. +SBOL uses existing Semantic Web resources such as biological ontologies and \emph{Universal Resource Identifiers} (URIs) to unambiguously define genetic design elements. +%Goksel: Replaced thi sentence with the one above:Because the standard itself can represent information from other sources for sequence representations, reaction information and ontologies to represent biological design information, the standard uses modern information exchange techniques such as \emph{Universal Resource Identifiers} (URIs). This permits the reuse of existing information without the need to repeat it, thus avoiding both redundancy and likely future information decay within shared files. +%Goksel: Removed this sentence: The ultimate utility of URIs in the SBOL standard is the ability to support flexible annotation with appropriate metadata while associating an authority with that annotation. The definition of the data model and associated format, the rules on the addition of data within the format and the representation of this in electronic data files are intended to make the SBOL standard a useful means of promoting global data exchange between laboratories and between software programs. This document presents the second version of SBOL. The previous version 1.1 of the SBOL standard focused on representing the structural aspects of genetic designs. Users of the standard were able to use it to exchange information on DNA designs but could not represent molecules other than DNA or represent the functional aspects of their designs beyond the DNA sequences. To serve as an effective medium for the computational exchange of genetic designs, SBOL must be extended to capture more aspects of a designed system, including both structural and functional information, and the composition of complex structural and functional designs by combining simpler parts. -The SBOL 2.0 data model defined in this specification thus extends the prior model to provide for addressing the most pressing needs for expanding SBOL Version 1.1, in particular it can: +The SBOL 2.0 data model defined in this specification thus extends the prior model to provide for addressing the most pressing needs for expanding SBOL version 1.1, in particular it can: \begin{itemize} \item represent structural components of a biological design, including DNA, RNA, proteins, small molecules and other physical components @@ -42,9 +46,9 @@ \section{Purpose} \caption{SBOL 2.0 extends prior formats to represent both structure and function of a genetic design in a single model.} \end{figure} -\Ctodo{Figure is not referenced in the text and moved to where it is referenced. -CJM} +\Ctodo{Figure is not referenced in the text and moved to where it is referenced. -CJM. Goksel: We need to redraw the figure with SBOL-Visual icons.} -To address the need for functional descriptions in SBOL, the proposed data model adds new classes to provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the \emph{Systems Biology Markup Language} (SBML)~\cite{SBML} to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module definition gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. +To address the need for functional descriptions in SBOL, the proposed data model adds new classes to provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the SBML to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module definition gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. The SBOL 2.0 specification also adds a number of measures to simplify adoption and validation of compatibility with the standard. First, the specification explicitly incorporates its serialization format into the specification, whereas SBOL 1.1 used an implicit standard tied to a reference implementation. @@ -54,9 +58,10 @@ \section{Purpose} Care has been taken to ensure that SBOL 2.0 is backward-compatible with SBOL 1.x. The generalization of the data model does mean that many names have changed and thus an SBOL 1.x file is not a valid SBOL 2.0 file. There is, however, a direct mapping from the SBOL 1.x data model into the SBOL 2.0 data model, making it simple to automatically ``upgrade'' any SBOL 1.x file into and SBOL 2.0 file. -Therefore, SBOL 2.0 supersedes SBOL 1.1, and developers are encouraged to use it for all new software efforts. Since SBOL 2.0 can encode all data previously encoded in SBOL 1.1, developers are also encouraged to upgrade their SBOL 1.1 compliant software tools to use SBOL 2.0 data objects. +% Goksel - Removed this sentence:Therefore, SBOL 2.0 supersedes SBOL 1.1, and developers are encouraged to use it for all new software efforts. +Since SBOL 2.0 can encode all data previously encoded in SBOL 1.1, developers are also encouraged to upgrade their SBOL 1.1 compliant software tools to use SBOL 2.0 data objects. -\Rtodo{Added text above to address Swapnil's comment. Needs review. -CJM} +\Rtodo{Added text above to address Swapnil's comment. Needs review. -CJM. Goksel: Went through this and removed the previous sentence to remove duplication.} \Rtodo{I added this to bring extensibility to the fore as I thikn it is a crtical component of SBOL 2.0. Currently it is discused too late into the document and in a technical way that may not understandable by non-technical readers. The text will probably require some additional editing - HMS.} @@ -74,7 +79,7 @@ \section{Purpose} The extension mechanism is therefore a critical part of SBOL 2.0 and will allow others in the community to incoroporate either their own requirements for data into SBOL or contribute to community efforts to expand the scope of SBOL. -The SBOL standard has been developed in collaboration between both ``wet'' bench scientists and ``dry'' scientific modelers and tool designers active within the Synthetic Biology community. +The SBOL standard has been developed in collaboration between both ``wet'' bench scientists and ``dry'' scientific modelers and tool designers active within the synthetic biology community. As with the earlier SBOL 1.1 standard, this community (open for any practitioner to join) has met to discuss, argue and agree upon needs that the SBOL standard should address. This information has then been used by developers within our community to design, develop, and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects, as well as, the ability to share designs between different laboratories. The standard has also been used to develop software tools that employ the standard for developing and sharing synthetic design projects. diff --git a/vocabulary.tex b/vocabulary.tex index 1c38fbb9..2ce296be 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -5,6 +5,7 @@ \section{SBOL Specification Vocabulary} \subsection{Term Conventions} This document indicates requirement levels using the controlled vocabulary specified in IETF RFC 2119 and reiterated in BBF RFC 0. +\Rtodo{Goksel: Add ref} In particular, the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119. \begin{itemize} @@ -45,8 +46,9 @@ \subsection{SBOL Class Names} Represents a data container that can contain custom data added by user applications. \item \emph{\sbol{Model}}: -Links an SBOL representation of biological components and their interactions to quantitative, computational models that may be used to predict the functional behavior of a biological design. - +Links an SBOL representation of biological components and their interactions to computatinal models, such as quantitative or qualitative, that may be used to predict the functional behavior of a biological design. +%Goksel - Updated as above: Links an SBOL representation of biological components and their interactions to quantitative, computational models that may be used to predict the functional behavior of a biological design. +\Rtodo{Goksel: Needs a review, I updated the model description} \item \emph{\sbol{ModuleDefinition}}: Describes a ``system'' design as a collection of biological components and their functional relationships. From 8fb02f5254ffbefecc75649547bee68b6a3aa07d Mon Sep 17 00:00:00 2001 From: Herbert Sauro Date: Thu, 4 Jun 2015 20:24:51 +0000 Subject: [PATCH 280/317] Update on Overleaf. --- sbol2.tex | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sbol2.tex b/sbol2.tex index 8ee56864..e54826e5 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -123,10 +123,12 @@ Goksel Misirli & \emph{Newcastle University, UK}\\ Nicholas Roehner & \emph{Boston University, USA}\\ \end{tabular}\\ -{\bf Chair:}\hfil\\ -\begin{tabular}{l>{\hspace*{15pt}}r} -Herbert Sauro & \emph{University of Washington, USA}\\[8pt] -\end{tabular}\\ +% Temporarily taking my name off until I fully understand the spec. I've allocated dedicated +% time in mid June and July to fully digest the implications of the proposed SBOL 2.0. +%{\bf Chair:}\hfil\\ +%\begin{tabular}{l>{\hspace*{15pt}}r} +%Herbert Sauro & \emph{University of Washington, USA}\\[8pt] +%\end{tabular}\\ \href{mailto:editors@sbolstandard.org}{\sffamily editors@sbolstandard.org}\\ \\ {\bf Additional authors, by institution:}\\ From 1ba73e7e9879710ccd176dd0d174a2b454a7c76a Mon Sep 17 00:00:00 2001 From: Michael Bissell Date: Fri, 5 Jun 2015 03:46:16 +0000 Subject: [PATCH 281/317] v15 --- apdx-validation.tex | 11 ++--------- history.tex | 6 +++--- model.tex | 28 ++++++++++------------------ overview.tex | 10 ++++++---- practices.tex | 10 +++++----- 5 files changed, 26 insertions(+), 39 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 105ccd61..55cda504 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -8,8 +8,6 @@ \section{Validation Rules} \Rtodo{New validation rules have been added. Needs review.} -\Rtodo{Mike B: ``I recommend reformatting the references, because they are a repeating motif in all rules, but their typographical positioning is unpredictable. Many of them linebreak awkwardly. Why not remove them from their parentheses and uniformly insert a newline before each rule's references? Then the eye can scan the references with an ergonomically friendly vertical sweep, instead of bouncing all over the page. (Sometimes I look for rules by section number, not vice versa.) It'll be prettier, too.'' Good suggestion, done. CJM} - This section summarizes all the conditions that MUST be or are RECOMMENDED to be true of an SBOL Version~2 document. There are different degrees of rule strictness. @@ -53,12 +51,6 @@ \section{Validation Rules} \subsubsection*{General rules about an SBOL document} \setcounter{sbolCtr}{10101} -\Rtodo{Mike B: ``"An SBOL document MUST declare the use of the following XML Namespace: [dcterms]" -I don't think this is required by XML+XSD unless a dcterms element or attribute is actually used. The rules for Identified's serialization on p17 state that dcterms are 0..*, so maybe we should say this instead: -"An SBOL document MUST declare the use of the following XML Namespace: [dcterms] if it uses any of the tags provided by dcterms, such as title or description." -Aliasing an xmlns with a prefix, but then failing to using it int the document, is actually a lint violation. -Come to think of it, this rule is nothing but XML syntax. The rest of XML syntax isn't replicated in SBOL 2.0, so why is this rule special? Same goes for the others. If you want to include enough rules on p56 (lines 27-35) to make it obvious how to construct a header, then the spec should also have rules for the header (optional but recommended by XML, IIRC) and the root tag.'' ANSWER: I can see your point, but I prefer to leave them in as this is something specific that must be included for an SBOL document, but if others think it should be removed, I could change my mind. For now, I've added the clarification that only needed if you use things in that namespace. SBOL and RDF namespace though are always required for any non-empty sbol document. CJM} - \printValid{An SBOL document MUST declare the use of the following XML namespace: \\ \textls[-25]{\uri{http://sbols.org/v2\#}}.\\ Reference: \sec{xml-namespace}} @@ -222,6 +214,8 @@ \subsubsection*{Rules for the \class{MapsTo} class} \subsubsection*{Rules for the \class{SequenceAnnotation} class} \setcounter{sbolCtr}{10901} +\Ctodo{Should check that location is a valid position in the sequence.} + \printValid{A \sbol{SequenceAnnotation} MUST inherit all properties of the \sbol{Identified} class.\\ Reference: \sec{sec:SequenceAnnotation}} \printValid{The \sbol{locations} property of a \sbol{SequenceAnnotation} is REQUIRED and MUST contain a non-empty set of \sbol{Location} objects.\\ Reference: \sec{sec:SequenceAnnotation}} @@ -249,7 +243,6 @@ \subsubsection*{Rules for the \class{Range} class} \printValid{The value of the \sbol{end} property of a \sbol{Range} MUST be greater than or equal to the value of its \sbol{start} property.\\ Reference: \sec{sec:Range}} -\Ctodo{Mike B: ``Might want to clarify how implementors should interpret these ranges, especially for cases of stuff that aligns to the - strand. For instance, can - strand components have end < start, because start and end are relative to the + strand?''} \subsubsection*{Rules for the \class{Cut} class} \setcounter{sbolCtr}{11201} diff --git a/history.tex b/history.tex index 422df40e..586acf58 100644 --- a/history.tex +++ b/history.tex @@ -15,7 +15,7 @@ \section{A Brief History of SBOL} The original SBOL 1.0 was developed at these early meetings through Michal's efforts, together with the small group of other dedicated researchers. It was also that the Anaheim meeting that a decision was made to write a letter to Nature Biotechnology highlighting the issue of reproducibility in synthetic biology. This letter was initiated by Jean Peccoud and submitted by participants of the Anaheim meeting. -An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group resulting in 17 individuals at the meeting. New members included Cesar Rodriguez, Mandy Wilson, Guy-Bart Stan, Chris Myers, and Nicholas Roehner, and the over all pace of development quickened. +An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group resulting in 17 individuals at the meeting. New members included Cesar Rodriguez, Mandy Wilson, Guy-Bart Stan, Chris Myers, and Nicholas Roehner, and the overall pace of development quickened. At a meeting in San Diego in June 2011, the SBOL Developers Group was officially established, rules of governance were established, and the first SBOL editors were elected: Mike Galdzicki, Cesar Rodriguez, and Mandy Wilson. At this time, Allan Kuchinsky, a research scientist at Agilent, joined the effort, and he was able to obtain some resources to begin development on what was to become libSBOLj. @@ -24,9 +24,9 @@ \section{A Brief History of SBOL} At this meeting, the first data exchange between software tools using SBOL was conducted when a design was passed from Newcastle University's VirtualParts Repository to Boston University's Eugene tool, and finally to University of Utah's iBioSim tool. In March 2012, SBOL 1.1 was released, the version that this document replaces. -SBOL 1.1 did not make any major change, but provided a number of small adjustments and clarifications on the particulars of SBOL's intended use and implementation, particularly around annotation of sequences and their locational relations. +SBOL 1.1 did not make any major change, but provided a number of small adjustments and clarifications on the particulars of SBOL's intended use and implementation, particularly around the annotation of sequences and their locational relations. The 8th SBOL workshop was held in November 2012 at Boston University, and the major topic of discussion was the next version of SBOL. SBOL 1.1 is limited to describing hierarchical DNA sequences. -Several extensions were discussed at this meeting, such as a means to describe genetic regulation, which later become the \sbol{Interaction} class, and a means to group components, which later became the \sbol{Module} class. +Several extensions were discussed at this meeting, such as a means to describe genetic regulation, which later became the \sbol{Interaction} class, and a means to group components, which later became the \sbol{Module} class. In April 2013, at the 9th SBOL workshop at Newcastle University, the framework for SBOL 2.0 was agreed upon. Nicholas Roehner, Matthew Pocock, and Ernst Oberortner then began work on a draft proposal for SBOL 2.0. In January 2014 at the 10th SBOL workshop, this draft was discussed and many refinements were debated and approved. Another important decision at this meeting was that SBOL should be part of the COMBINE community of standards (\url{www.co.mbine.org}). diff --git a/model.tex b/model.tex index 3395f6ee..46710351 100644 --- a/model.tex +++ b/model.tex @@ -91,7 +91,8 @@ \subsection{Data Types} Note that, in compliance with RDF standards, URIs are generally serialized using an \external{rdf:resource} property, e.g.: \external{rdf:resource="http://www.partsregistry.org/Part:BBa\_J23119"} -It is also important to realize that, as used in RDF, a URI may or may not be a resolvable URL (web address). A URI is always a unique identifier within a structured name-space. In some cases, that name is also a reference to (or within) a document, and in some cases that document can also be retrieved (e.g., through a web browser). +\Rtodo{Below, I added 'globally' before 'unique identifer' per my reading of RDF + Tim Berners-Lee's blogs. TBL likes to emphasize the global and distributed nature of 'webized' docs, refs, and objects. Could somebody please sanity check my interpretation? -MB} +It is important to realize that in RDF, a URI may or may not be a resolvable URL (web address). A URI is always a globally unique identifier within a structured namespace. In some cases, that name is also a reference to (or within) a document, and in some cases that document can also be retrieved (e.g., using a web browser). \subsection{Identified} \label{sec:Identified} @@ -103,9 +104,10 @@ \subsection{Identified} As shown in \ref{uml:identified}, the \sbol{Identified} class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, \sbol{version}, \sbol{wasDerivedFrom}, \sbol{name}, \sbol{description}, and \sbol{annotations}. The latter property is described separately in \ref{sec:Annotations}. -When an SBOL object is referred to using a URI, that URI may either be the value of an \sbol{identity} property or to the value of a \sbol{persistentIdentity} property. -If the URI is equal to the value of an \sbol{identity} property, then it is guaranteed to be unique, and refers to precisely to one SBOL object with that value. -If the URI is equal to the value of a \sbol{persistentIdentity} property, then it may refer to multiple SBOL objects that are different ``versions'' of each other. These objects SHOULD be compared to one another to determine which single object the URI should be resolved to (usually the most recent version - see \ref{sec:version}). +\Rtodo{Reworded the following sentence to be about a reference, not an object, because the paragraph says that the reference might 'refer' to one object or a versioned lineage of multiple objects. Please proofread. -MB} +When an SBOL resource reference takes the form of a URI, that URI may either be the value of an \sbol{identity} property or the value of a \sbol{persistentIdentity} property. +If the URI is equal to the value of an \sbol{identity} property, then it is guaranteed to be unique, and it refers to precisely one SBOL object with that identity value. +If the URI is equal to the value of a \sbol{persistentIdentity} property, then it may refer to multiple SBOL objects that are different ``versions'' of each other. These objects SHOULD be compared to one another to determine which single object the URI should resolve to (normally the most recent version - see \ref{sec:version}). Throughout this document, when a URI is used to refer to an SBOL object, it could fall into either of these cases. \begin{figure}[ht] @@ -245,8 +247,6 @@ \subsubsection*{Serialization} No serialization is defined for \sbol{TopLevel}, since this class has no properties of its own and is only used indirectly through its child classes. All \sbol{TopLevel} classes are serialized one level beneath the RDF document root. -\Rtodo{Mike B: ``There is some potential for confusion because TopLevels aren't really at the TopLevel in the XML serialized form; they're one level down, beneath the RDF document root. Might want to clarify this in the relevant passages.'' - Added text above -CJM} - \subsection{Sequence} \label{sec:Sequence} @@ -341,7 +341,7 @@ \subsubsection*{The \sbolheading{types} property} \ref{tbl:componentdefinition_types} provides a list of RECOMMENDED ontology terms for the \sbolmult{types:CD}{types} property and their \sbol{URI}s. In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use the \external{URI} for that term as one of its \sbolmult{types:CD}{types}. Finally, if the \sbolmult{types:CD}{types} property contains multiple \sbol{URI}s, then they MUST identify non-conflicting terms (otherwise, it may not be clear how to interpret them). For example, the BioPAX terms provided by \ref{tbl:componentdefinition_types} would conflict because they specify classes of biochemical entities with different molecular structures. -\Rtodo{Do we mean synonymous, or can it be weakened to non-conflicting? Query from Mike B} + \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -368,7 +368,6 @@ \subsubsection*{The \sbolheading{roles} property} \ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbolmult{roles:CD}{roles} property and their \sbol{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). Any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use the \external{URI} for that term as one of its \sbolmult{roles:CD}{roles}. -\Rtodo{Query from Mike B: ``In my organization, it is very common to define single components containing multiple adjacent items from table 3, the table of roles. For example, it's more common to design a part as a gene + stop + terminator than just a lonely gene. We're not alone in this. Do you want to make any recommendations for this situation?'' Answer from Chris: ComponentDefinitions are hierarchical. I think the confusion is that what to do with a composite CD. I have added the term for engineered gene for this.} \begin{table}[ht] \begin{edtable}{tabular}{lll} @@ -398,9 +397,7 @@ \subsubsection*{The \sbolheading{sequences} property} Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the structure of a DNA \sbol{ComponentDefinition}, one that represents its structure at the level of nucleotide bases and one that represents its structure at the level of atoms and bonds. -If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects SHOULD be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, if a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} with the same \sbol{encoding}, then the \sbol{elements} of these \sbol{Sequence} objects SHOULD have equal lengths. These best practices are intended to make it easier for software tools to locate any regions specified by the \sbol{SequenceAnnotation} objects of a \sbol{ComponentDefinition} on its associated \sbol{Sequence} objects, as well as validate whether its \sbol{Sequence} objects are consistent with those associated to any \sbol{ComponentDefinition} objects that it may compose via its \sbol{Component} objects. - -\Rtodo{Query from Mike B: ``"a ComponentDefinition MUST NOT refer to more than one Sequence with an IUPAC encoding...." If this is true, then how can I provide nonconflicting descriptions of a sequence at two different levels of abstraction? The example from the paragraph starting at p21 line 16 makes me think that this should be permitted. Did you really mean that "a ComponentDefinition MUST NOT refer to more than one Sequence with any single IUPAC encoding," i.e. you can't give two conflicting DNA sequences? If you really mean what it says, please provide a clarifying rationale for why e.g. I shouldn't be allowed to specify DNA, RNA, and protein sequences for a part.'' Answer: It was originally meant that a ComponentDefinition MUST NOT refer to both a DNA sequence and a RNA sequence, nor to multiple DNA sequences. The rationale for the former requirement has been provided, while the latter requirement has been relaxed and described as a best practice.} +If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects SHOULD be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, if a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} with the same \sbol{encoding}, then the \sbol{elements} of these \sbol{Sequence} objects SHOULD have equal lengths. These best practices are intended to make it easier for software tools to locate any regions specified by the \sbol{SequenceAnnotation} objects of a \sbol{ComponentDefinition} on its associated \sbol{Sequence} objects, as well as validate whether its \sbol{Sequence} objects are consistent with those associated with any \sbol{ComponentDefinition} objects that it may compose via its \sbol{Component} objects. Finally, a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \sbol{encoding} properties. For example, the \external{IUPAC} \sbol{encoding} properties provided by \ref{tbl:sequence_encodings} conflict with each other because they do not specify how to encode the same class of biochemical entity. The \external{SMILES} \sbol{encoding}, however, does not conflict with them because it specifies how to encode biochemical entities in general, which includes DNA, RNA, and proteins. In addition, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbolmult{types:CD}{types} property refers to a term from \ref{tbl:componentdefinition_types}, then one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this term in \ref{tbl:sequence_encodings}. Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbolmult{types:CD}{types} property MUST refer to the term from \ref{tbl:componentdefinition_types} that is cross-listed with this \sbol{encoding} in \ref{tbl:sequence_encodings}. @@ -415,8 +412,6 @@ \subsubsection*{The \sbolheading{components} property} While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple instances of a particular part (defined by reference to the same \sbol{ComponentDefinition}). For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \sbol{ComponentDefinition} of a CDS. -\Rtodo{Comment from Mike B: ``"it MUST be possible to align the elements of the latter Sequence objects to the elements of the ComponentDefinition's Sequence." Alignment comes in lossy and lossless forms. One of SBOL 1.1's practical limitations when it came to modeling real-world processes was that annotations couldn't bear an approximate resemblance to the sequences they annotated; they had to be exact substrings. If you really intend to keep this restriction in SBOL 2.0, then please use stronger language than "align," because we all use alignment tools to detect lossy near-matches (indels), so this passage might be read the wrong way. If, on the other hand, you've deliberately changed that rule, then highlight the change here, because SBOL 1.1 was pretty emphatic about its "logical consistency" rules.'' Edited to use language other than alignment and relaxed requirement to a SHOULD. - Nic} - In this way, the \sbol{components} property can be used to construct a hierarchy of \sbol{ComponentDefinition} objects. If a \sbol{ComponentDefinition} in the hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then the \sbol{elements} properties of these \sbol{Sequence} objects SHOULD be consistent with each other, such that well-defined mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding} (subject to any restrictions on the positions of \sbol{Component} objects in the hierarchy that are imposed by \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} objects). A DNA \sbol{ComponentDefinition}, for example, could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} of ``{\tt gattaca}.'' In turn, this \sbol{ComponentDefinition} could contain a \sbol{Component} that refers to a ``lower level'' \sbol{ComponentDefinition} that also refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. Consequently, the \sbol{elements} \external{String} of this ``lower level'' \sbol{Sequence} could be ``{\tt gatta}," or perhaps ``{\tt tgta}'' if the \sbol{Component} is positioned by a \sbol{SequenceAnnotation} that contains a \sbol{Location} with an \sbol{orientation} of ``reverse complement'' (see \ref{sec:Location}). @@ -701,7 +696,6 @@ \subsubsection{SequenceAnnotation} \paragraph{The \sbolheading{component} property}\label{sec:component} The \sbol{component} property is OPTIONAL and has a data type of \sbol{URI}. This \sbol{URI} MUST refer to a \sbol{Component} that is contained by the same parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. In this way, the properties of the \sbol{SequenceAnnotation}, such as its \sbol{description} and \sbol{locations}, are associated with part of the substructure of its \sbol{ComponentDefinition}. -\Rtodo{Mike B query: ``"A SequenceAnnotation MUST NOT refer to the same Component as another SequenceAnnotation." As long as the two annotations are nonconflicting, what could possibly be the harm in this? Please explain.'' Eliminated this requirement and added new requirement for non-conflicting regions when two SequenceAnnotation objects position the same Component (see the sequenceAnnotations property of ComponentDefinition) - Nic} \paragraph{Serialization} @@ -884,7 +878,7 @@ \subsubsection{SequenceConstraint} \paragraph{The \sbolheading{restriction} property}\label{sec:restriction} The \sbol{restriction} property is REQUIRED and has a data type of \sbol{URI}. This property is used to indicate the type of structural restriction on the relative, sequence-based positions or orientations of the \sbol{subject} and \sbol{object} \sbol{Component} objects. The \sbol{URI} value of this property SHOULD come from the RECOMMENDED \sbol{URI}s in \ref{tbl:restriction_types}. -\Rtodo{Per Mike B comment: changed ``MUST ... or an [ill-defined] appropriate ontology'' to SHOULD, since that's the same. -JSB I'm not sure about this. I think it is MUST, as these are the only ones we allow right now. Same for all enumerated types we have defined. -CJM} +\Rtodo{Per Mike B comment: changed ``MUST ... or an [ill-defined] appropriate ontology'' to SHOULD, since that's the same. -JSB I'm not sure about this. I think it is MUST, as these are the only ones we allow right now. Same for all enumerated types we have defined. -CJM I agree with CJM. The original wording was problematic because it said 'restrictions MUST come from table 7 or anywhere else,' which we've simplified to a SHOULD. But implementors need a solid definition of each option, and a complete enumeration of options, because a hard constraint MUST never be disobeyed -- and that means that implementors MUST enforce all constraints. So this can't be open-ended. -MB } % Note: With regards to SBOL Version 1.1., this is a generalization of former \sbol{SequenceAnnotation} property \external{precedes}. @@ -1420,7 +1414,6 @@ \subsubsection{Annotating SBOL objects} Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. The \sbol{qName} property is specified by a qualified name (\sbol{QName}), which is composed of a namespace, a prefix, and a local name. The \sbol{qName} property must be stored in the data model to allow for proper serialization as described below. The \sbol{value} property can be a literal type (i.e., \sbol{String}, \sbol{Integer}, \sbol{Double}, \sbol{Boolean}), \sbol{URI}, or a \sbol{NestedAnnotations} object. The \sbol{NestedAnnotations} object is composed of a \sbol{nestedQName}, \sbol{nestedURI}, and an optional list of nested \sbol{annotations}. -\Rtodo{Mike B: ``I was confused when I first read this because Annotation.qName seemed to be encoding XML within XML. Then I realized that no, the XML serialized form is clean, and you just needed a place to save arbitrary annotation tag names in the deserialized data model. Please explicitly note that you have to store qNames this way because it's an XML thing, and so the qNames become tag names. It's all right there in the examples, but I had to read it a few times to get it. Every XML-related complication is another temptation for a newcomer to quit in frustration. We should make it really easy to understand the weird parts of SBOL, like here, where the tail of SBOL's serialization format seems to be wagging the dog of the abstract data model.'' I've added a sentence for this above. -CJM} \begin{figure}[!ht] \begin{center} @@ -1432,7 +1425,6 @@ \subsubsection{Annotating SBOL objects} \subsubsection*{Serialization} -\Rtodo{Mike B: ``Please refer to the relevant portions of the w3c XSD/XML specs when discussing prefix aliases and namespaces. Someone who isn't already familiar with how XSDs incorporate other XSDs by reference, or how XMLs exploit the types declared in XSDs, is likely to find this section very confusing. Just a few sentences summarizing what xmns:prefix really does, and why it's helpful, would help pave the way for XML newbies. Also, please note here that prefix strings are arbitrary. Some people assume that the "sbol" prefix has some special significance, when in fact it's just an alias set up by their own xmlns: decls in the document header.'' I tried to address this with text below. -CJM} The serialization of \sbol{Annotation} objects has the following form: @@ -1448,7 +1440,7 @@ \subsubsection*{Serialization} > ... - [\emph{zero or more}] A_LITERAL [\emph{elements}] + [\emph{zero or more}] A_LITERAL [\emph{elements}] [\emph{zero or more}] [\emph{elements}] [\emph{zero or more}] diff --git a/overview.tex b/overview.tex index 3cfe3a0e..984399f2 100644 --- a/overview.tex +++ b/overview.tex @@ -15,7 +15,7 @@ \section{Overview of SBOL} These parts have specific component-level interactions with IPTG and X-gal, as well as native host gene products, transcriptional machinery and translational machinery that collectively cause the desired system-level behavior. Knowledge of how such a device functions within the context of a host and how it might be adapted to new experimental applications has generally been passed on through working with fellow scientists or reading articles in papers and books. -But there was no systematic way to communicate the integration of sequences with functional designs, so users typically had to look in many different places to develop an understanding of this system. +But there was no systematic way to communicate the integration of sequences with functional designs, so users typically had to look in many different places to develop an understanding of a system. The SBOL 2.0 standard allows designers to describe these functional characteristics and connect them to the physical parts and sequences that make up the design. SBOL 2.0 includes two main classes that match the structural/functional distinction above: @@ -51,11 +51,12 @@ \section{Overview of SBOL} \end{center} \end{figure} -Another important difference between the figures is to more appropriately describe the connection of the functional side (modules) to the physical side (components). +\Rtodo{The first sentence of the following paragraph was a little awkward. I don't think we'd say that "Another important difference between the two cars is to be red." I patched it up a little, but perhaps one of you could check it? - MB} +The second figure additionally depicts the connection of the functional side (modules) to the physical side (components). This is accomplished via the class \sbol{FunctionalComponent}. This class allows modules to own their components instances, and yet also allows the physical descriptions (in \sbol{ComponentDefinition}s) to stand on their own. In a similar manner, the ability to have hierarchies of either functional or physical components shown in \ref{images:overview1} must be broken apart, so that sub-components can be used in multiple functional modules or multiple physical components. Thus, instead of the arc from \sbol{ModuleDefinition} to itself as in \ref{images:overview1}, our implementation actually divides this notion into two classes, \sbol{ModuleDefinition} and \sbol{Module}. -Therefore, a \sbol{ModuleDefinition} does not own the \sbol{ModuleDefinition}s that it uses, but instead it refers to them using the \sbol{Module} objects that it does own. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, SBOL 2.0 provides a few other additional helper classes such as \sbol{Location} that generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint} that generalizes the relative positioning information among \sbol{Component}s. There is also +Therefore, a \sbol{ModuleDefinition} does not own the \sbol{ModuleDefinition}s that it uses, but instead it refers to them using the \sbol{Module} objects that it does own. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, SBOL 2.0 provides a few other additional helper classes such as \sbol{Location}, which generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint}, which generalizes the relative positioning information among \sbol{Component}s. There is also \sbol{Participation}s, which allow \sbol {Interaction} objects to specify the roles of their participants while referencing the \sbol{FunctionalComponent}s, so that these can stand on their own. Finaly, there is the \sbol{MapsTo} class (not shown) that enables connections to be made between \sbol{Component}s and \sbol{FunctionalComponent}s at various levels of the design hierarchy. The next section provides complete definitions and details for all of these classes. \Rtodo{Added mapping of objects from 1.1 to 2.0 using the diagram from the libSBOLj paper. Needs review. Also not entirely sure this is the right place. Should we move it to its own section later? -CJM} @@ -69,5 +70,6 @@ \section{Overview of SBOL} \caption{\label{SBOL1TO2}The mapping from the SBOL 1.1 data model to the SBOL 2.0 data model.} \end{figure*} -There is one final critical part of SBOL 2.0, its extension mechanism. This extension mechanism enables both a framework for application specific information, and a means to prototype representation of data whose format has not yet reached community consensus. In particular, each SBOL entity can be annotated using the \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \sbol{GenericTopLevel} entities. SBOL libraries makes these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. +\Rtodo{Please review my rewording of the following paragraph. Just wanted to polish it up a bit, and I eliminated the redundant use of "mechanism" + "framework". -MB} +There is one final, critical element of SBOL 2.0: its extension mechanism. This extension mechanism enables the storage of application specific information within an SBOL document. It is also intended to support the prototyping of data representations whose format is not yet a matter of consensus within the community. In particular, each SBOL entity can be annotated using the \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \sbol{GenericTopLevel} entities. SBOL libraries makes these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. diff --git a/practices.tex b/practices.tex index 8a5064a3..4c395e90 100644 --- a/practices.tex +++ b/practices.tex @@ -38,7 +38,7 @@ \subsection{Compliant SBOL Objects} However, there is no reason why daughter's version should change to v1.1. Daughter is exactly the same as she was at v1.0, and retaining her old version saves us the trouble of diffing v1.0 and the identical v1.1. In other words, version changes should be minimally promoted up the tree, but not back down to siblings and relatives if they didn't change. -If you don't want to do it this way, I do see why, but I've found it helpful on past projects to increment versions only on the things that contain diffs (including their containers, recursively). That's the way that many dependency management systems work, as well as certain aspects of version control: when you ask for a log on an individual file in a version control system, you don't see every revisions that ever touched the repo, you only see the revisions that modified that file.'' +If you don't want to do it this way, I do see why, but I've found it helpful on past projects to increment versions only on the things that contain diffs (including their containers, recursively). That's the way that many dependency management systems work, as well as certain aspects of version control: when you ask for a log on an individual file in a version control system, you don't see every revision that ever touched the repo, you only see the revisions that modified that file.'' ANSWER: I can see your point. It would, however, complicate a few things in our library implementation, and it would be very difficult to change at this point. We can consider this for a future version.} @@ -55,9 +55,9 @@ \subsection{Annotations: Embedded Objects vs. External References} \item Store the information separately and annotate the SBOL model with URIs that point to it. \end{itemize} -In theory, either can be used in any case (note that a third case not -discussed here is to use SBOL to annotate external objects, by linking -to SBOL documents rather than from the external objects). +In theory, either method can be used in any case. (Note that a third case not +discussed here is to use SBOL to annotate external objects by linking +to SBOL documents rather than from the external objects.) In practice, embedding massive amounts of non-SBOL data into SBOL models is likely @@ -84,7 +84,7 @@ \subsection{Completeness and Validation} \NVtodo{Mike B. ``"the program doing [the deserialization] SHOULD verify that all of the property values encoded therein have the right type...." Not everybody knows how to apply XML+XSD. Maybe we should give new users a big hint: they can just use any correctly implemented SBOL 2.0 XSD file along with a validating XML parser to do this stuff automatically. We really don't want implementators getting scared off by the burden imposed by this section of the spec. Let's perhaps additionally recommend as a bootstrapping exercise to grab an SBOL 2.0 XSD file out of a recognized reference implementation (libSBOLj, for instance), then start by feeding the XSD and the user's SBOL document in question to a validating XML parser such as xmllint, which is FOSS, works great, and installs in seconds. (Side note: if you choose to give these helpful hints, please make it clear that a given reference implementation is not a spec; if it contains errors, the spec wins.) -A section about completeness and validation that doesn't talk about the available official or unofficial XSDs is incomplete. This part was left out of SBOL 1.1, but now that serialization is a big part of SBOL 2.0, an XSD should be included somehow, if only by reference.'' ANSWER: agreed, we need to do an XSD as soon as possible. Help would be appreciated. -CJM} +A section about completeness and validation that doesn't talk about the available official or unofficial XSDs is incomplete. This part was left out of SBOL 1.1, but now that serialization is a big part of SBOL 2.0, an XSD should be included somehow, if only by reference.'' ANSWER: agreed, we need to do an XSD as soon as possible. Help would be appreciated. -CJM I'll get in touch with the libsbol devs and offer to lend a hand. -MB} \subsection{Recommended Ontologies for External Terms} From 303a3a9f4573ee5000e77a7a48ce1ece2792798b Mon Sep 17 00:00:00 2001 From: Michael Bissell Date: Fri, 5 Jun 2015 17:17:05 +0000 Subject: [PATCH 282/317] v16 --- copyright.tex | 1 - examples_serialization.tex | 204 ++++++++++++++++++++++--------------- model.tex | 5 +- overview.tex | 4 +- purpose.tex | 10 +- relation.tex | 2 +- sbol2.tex | 11 +- vocabulary.tex | 5 +- 8 files changed, 134 insertions(+), 108 deletions(-) diff --git a/copyright.tex b/copyright.tex index 6bbc6ea3..ada57541 100644 --- a/copyright.tex +++ b/copyright.tex @@ -7,7 +7,6 @@ \section{Copyright and License Statement} Copyright (C) The BioBricks Foundation and all authors listed on this BBF RFC. This work is made available under the Creative Commons Attribution 4.0 International Public License. To view a copy of this license visit \href{https://creativecommons.org/licenses/by/4.0/}{https://creativecommons.org/licenses/by/4.0/}. In addition to the listed authors, the following people are specifically recognized as additional contributors sharing in the copyright (alphabetically by institution): -Michael Bissell (Amyris, USA), Douglas Densmore (Boston University, USA), Jacqueline Quinn (Google, USA), Guy-Bart Stan (Imperial College London, UK) \ No newline at end of file diff --git a/examples_serialization.tex b/examples_serialization.tex index fefcf885..84c4d21c 100644 --- a/examples_serialization.tex +++ b/examples_serialization.tex @@ -4,7 +4,8 @@ \section{Examples of Serialization} % ----------------------------------------------------------------------------- \Ctodo{Mike B: ``DNA sequences run off the page. -Historically, this has often been a problem with long DNA string datatypes that don't permit inline whitespace. They're impossible to print or justify for web presentation without breaking the validity of the document.''} +Historically, this has often been a problem with long DNA string datatypes that don't permit inline whitespace. They're impossible to print or justify for web presentation without breaking the validity of the document.'' +Goksel: I like the Genbank files having 60 nucleotides in one row. :) I keep Mike's comment here in case if someone else has any suggestion.} \subsection{PoPS Receiver} @@ -21,51 +22,6 @@ \subsection{PoPS Receiver} \begin{lstlisting} - - - BBa_B0015 - BBa_B0015 - Double terminator - - - - - - - BBa_R0062 - BBa_R0062 - LuxR inducible promoter - - - - - - - BBa_C0062 - BBa_C0062 - luxR coding sequence - - - - - - - BBa_R0040 - BBa_R0040 - TetR repressible promoter - - - - - - - BBa_B0034 - BBa_B0034 - RBS based on Elowitz repressilator - - - - BBa_F2620 @@ -86,7 +42,7 @@ \subsection{PoPS Receiver} luxR - + @@ -110,7 +66,7 @@ \subsection{PoPS Receiver} rbs - + @@ -118,9 +74,9 @@ \subsection{PoPS Receiver} anno3 - - - range + + + location3 69 770 @@ -130,19 +86,19 @@ \subsection{PoPS Receiver} - - - anno4 + + + anno5 - - - range - 771 - 900 + + + location5 + 901 + 956 - + @@ -150,9 +106,9 @@ \subsection{PoPS Receiver} anno1 - - - range + + + location1 1 55 @@ -162,19 +118,19 @@ \subsection{PoPS Receiver} - - - anno5 + + + anno4 - - - range - 901 - 956 + + + location4 + 771 + 900 - + @@ -182,9 +138,9 @@ \subsection{PoPS Receiver} anno2 - - - range + + + location2 56 68 @@ -194,6 +150,51 @@ \subsection{PoPS Receiver} + + + BBa_R0062 + pLuxR + LuxR inducible promoter + + + + + + + BBa_B0015 + BBa_B0015 + Double terminator + + + + + + + BBa_C0062 + luxR + luxR coding sequence + + + + + + + BBa_R0040 + pTetR + TetR repressible promoter + + + + + + + BBa_B0034 + BBa_B0034 + RBS based on Elowitz repressilator + + + + BBa_B0034 @@ -209,7 +210,15 @@ \subsection{PoPS Receiver} BBa_C0062 - atgcttatctgatatgactaaaatggtacattgtgaatattatttactcgcgatcatttatcctcattctatggttaaatctgatatttcaatcctagataattaccctaaaaaatggaggcaatattatgatgacgctaatttaataaaatatgatcctatagtagattattctaactccaatcattcaccaattaattggaatatatttgaaaacaatgctgtaaataaaaaatctccaaatgtaattaaagaagcgaaaacatcaggtcttatcactgggtttagtttccctattcatacggctaacaatggcttcggaatgcttagttttgcacattcagaaaaagacaactatatagatagtttatttttacatgcgtgtatgaacataccattaattgttccttctctagttgataattatcgaaaaataaatatagcaaataataaatcaaacaacgatttaaccaaaagagaaaaagaatgtttagcgtgggcatgcgaaggaaaaagctcttgggatatttcaaaaatattaggttgcagtgagcgtactgtcactttccatttaaccaatgcgcaaatgaaactcaatacaacaaaccgctgccaaagtatttctaaagcaattttaacaggagcaattgattgcccatactttaaaaattaataacactgatagtgctagtgtagatcac + atgcttatctgatatgactaaaatggtacattgtgaatattatttactcgcgatcatttatcctcattcta + tggttaaatctgatatttcaatcctagataattaccctaaaaaatggaggcaatattatgatgacgctaatttaataaaatatgat + cctatagtagattattctaactccaatcattcaccaattaattggaatatatttgaaaacaatgctgtaaataaaaaatctccaaa + tgtaattaaagaagcgaaaacatcaggtcttatcactgggtttagtttccctattcatacggctaacaatggcttcggaatgctta + gttttgcacattcagaaaaagacaactatatagatagtttatttttacatgcgtgtatgaacataccattaattgttccttctcta + gttgataattatcgaaaaataaatatagcaaataataaatcaaacaacgatttaaccaaaagagaaaaagaatgtttagcgtgggc + atgcgaaggaaaaagctcttgggatatttcaaaaatattaggttgcagtgagcgtactgtcactttccatttaaccaatgcgcaaa + tgaaactcaatacaacaaaccgctgccaaagtatttctaaagcaattttaacaggagcaattgattgcccatactttaaaaattaa + taacactgatagtgctagtgtagatcac @@ -221,7 +230,8 @@ \subsection{PoPS Receiver} BBa_B0015 - ccaggcatcaaataaaacgaaaggctcagtcgaaagactgggcctttcgttttatctgttgtttgtcggtgaacgctctctactagagtcacactggctcaccttcgggtgggcctttctgcgtttata + ccaggcatcaaataaaacgaaaggctcagtcgaaagactgggcctttcgttttatctgttgtttgtcggtg + aacgctctctactagagtcacactggctcaccttcgggtgggcctttctgcgtttata @@ -833,13 +843,22 @@ \subsection{Toggle Switch} BBa_E0040 - atgcgtaaaggagaagaacttttcactggagttgtcccaattcttgttgaattagatggtgatgttaatgggcacaaattttctgtcagtggagagggtgaaggtgatgcaacatacggaaaacttacccttaaatttatttgcactactggaaaactacctgttccatggccaacacttgtcactactttcggttatggtgttcaatgctttgcgagatacccagatcatatgaaacagcatgactttttcaagagtgccatgcccgaaggttatgtacaggaaagaactatatttttcaaagatgacgggaactacaagacacgtgctgaagtcaagtttgaaggtgatacccttgttaatagaatcgagttaaaaggtattgattttaaagaagatggaaacattcttggacacaaattggaatacaactataactcacacaatgtatacatcatggcagacaaacaaaagaatggaatcaaagttaacttcaaaattagacacaacattgaagatggaagcgttcaactagcagaccattatcaacaaaatactccaattggcgatggccctgtccttttaccagacaaccattacctgtccacacaatctgccctttcgaaagatcccaacgaaaagagagaccacatggtccttcttgagtttgtaacagctgctgggattacacatggcatggatgaactatacaaataataa + atgcgtaaaggagaagaacttttcactggagttgtcccaattcttgttgaattagatggtgatgttaatgg + gcacaaattttctgtcagtggagagggtgaaggtgatgcaacatacggaaaacttacccttaaatttatttgcactactggaaaac + tacctgttccatggccaacacttgtcactactttcggttatggtgttcaatgctttgcgagatacccagatcatatgaaacagcat + gactttttcaagagtgccatgcccgaaggttatgtacaggaaagaactatatttttcaaagatgacgggaactacaagacacgtgc + tgaagtcaagtttgaaggtgatacccttgttaatagaatcgagttaaaaggtattgattttaaagaagatggaaacattcttggac + acaaattggaatacaactataactcacacaatgtatacatcatggcagacaaacaaaagaatggaatcaaagttaacttcaaaatt + agacacaacattgaagatggaagcgttcaactagcagaccattatcaacaaaatactccaattggcgatggccctgtccttttacc + agacaaccattacctgtccacacaatctgccctttcgaaagatcccaacgaaaagagagaccacatggtccttcttgagtttgtaa + cagctgctgggattacacatggcatggatgaactatacaaataataa ECK120033736 - ttcagccaaaaaacttaagaccgccggtcttgtccactaccttgcagtaatgcggtggacaggatcggcggttttcttttctcttctcaa + ttcagccaaaaaacttaagaccgccggtcttgtccactaccttgcagtaatgcggtggacaggatcggcggtt + ttcttttctcttctcaa @@ -863,19 +882,40 @@ \subsection{Toggle Switch} BBa_C0040 - atgtccagattagataaaagtaaagtgattaacagcgcattagagctgcttaatgaggtcggaatcgaaggtttaacaacccgtaaactcgcccagaagctaggtgtagagcagcctacattgtattggcatgtaaaaaataagcgggctttgctcgacgccttagccattgagatgttagataggcaccatactcacttttgccctttagaaggggaaagctggcaagattttttacgtaataacgctaaaagttttagatgtgctttactaagtcatcgcgatggagcaaaagtacatttaggtacacggcctacagaaaaacagtatgaaactctcgaaaatcaattagcctttttatgccaacaaggtttttcactagagaatgcattatatgcactcagcgctgtggggcattttactttaggttgcgtattggaagatcaagagcatcaagtcgctaaagaagaaagggaaacacctactactgatagtatgccgccattattacgacaagctatcgaattatttgatcaccaaggtgcagagccagccttcttattcggccttgaattgatcatatgcggattagaaaaacaacttaaatgtgaaagtgggtccgctgcaaacgacgaaaactacgctttagtagcttaataa + atgtccagattagataaaagtaaagtgattaacagcgcattagagctgcttaatgaggtcggaatcgaagg + tttaacaacccgtaaactcgcccagaagctaggtgtagagcagcctacattgtattggcatgtaaaaaataagcgggctttgctcg + acgccttagccattgagatgttagataggcaccatactcacttttgccctttagaaggggaaagctggcaagattttttacgtaat + aacgctaaaagttttagatgtgctttactaagtcatcgcgatggagcaaaagtacatttaggtacacggcctacagaaaaacagta + tgaaactctcgaaaatcaattagcctttttatgccaacaaggtttttcactagagaatgcattatatgcactcagcgctgtggggc + attttactttaggttgcgtattggaagatcaagagcatcaagtcgctaaagaagaaagggaaacacctactactgatagtatgccg + ccattattacgacaagctatcgaattatttgatcaccaaggtgcagagccagccttcttattcggccttgaattgatcatatgcgg + attagaaaaacaacttaaatgtgaaagtgggtccgctgcaaacgacgaaaactacgctttagtagcttaataa BBa_C0012 - atggtgaatgtgaaaccagtaacgttatacgatgtcgcagagtatgccggtgtctcttatcagaccgtttcccgcgtggtgaaccaggccagccacgtttctgcgaaaacgcgggaaaaagtggaagcggcgatggcggagctgaattacattcccaaccgcgtggcacaacaactggcgggcaaacagtcgttgctgattggcgttgccacctccagtctggccctgcacgcgccgtcgcaaattgtcgcggcgattaaatctcgcgccgatcaactgggtgccagcgtggtggtgtcgatggtagaacgaagcggcgtcgaagcctgtaaagcggcggtgcacaatcttctcgcgcaacgcgtcagtgggctgatcattaactatccgctggatgaccaggatgccattgctgtggaagctgcctgcactaatgttccggcgttatttcttgatgtctctgaccagacacccatcaacagtattattttctcccatgaagacggtacgcgactgggcgtggagcatctggtcgcattgggtcaccagcaaatcgcgctgttagcgggcccattaagttctgtctcggcgcgtctgcgtctggctggctggcataaatatctcactcgcaatcaaattcagccgatagcggaacgggaaggcgactggagtgccatgtccggttttcaacaaaccatgcaaatgctgaatgagggcatcgttcccactgcgatgctggttgccaacgatcagatggcgctgggcgcaatgcgcgccattaccgagtccgggctgcgcgttggtgcggatatctcggtagtgggatacgacgataccgaagacagctcatgttatatcccgccgttaaccaccatcaaacaggattttcgcctgctggggcaaaccagcgtggaccgcttgctgcaactctctcagggccaggcggtgaagggcaatcagctgttgcccgtctcactggtgaaaagaaaaaccaccctggcgcccaatacgcaaaccgcctctccccgcgcgttggccgattcattaatgcagctggcacgacaggtttcccgactggaaagcgggcaggctgcaaacgacgaaaactacgctttagtagcttaataa + atggtgaatgtgaaaccagtaacgttatacgatgtcgcagagtatgccggtgtctcttatcagaccgtttccc + gcgtggtgaaccaggccagccacgtttctgcgaaaacgcgggaaaaagtggaagcggcgatggcggagctgaattacattcccaaccg + cgtggcacaacaactggcgggcaaacagtcgttgctgattggcgttgccacctccagtctggccctgcacgcgccgtcgcaaattgtc + gcggcgattaaatctcgcgccgatcaactgggtgccagcgtggtggtgtcgatggtagaacgaagcggcgtcgaagcctgtaaagcgg + cggtgcacaatcttctcgcgcaacgcgtcagtgggctgatcattaactatccgctggatgaccaggatgccattgctgtggaagctgc + ctgcactaatgttccggcgttatttcttgatgtctctgaccagacacccatcaacagtattattttctcccatgaagacggtacgcga + ctgggcgtggagcatctggtcgcattgggtcaccagcaaatcgcgctgttagcgggcccattaagttctgtctcggcgcgtctgcgtc + tggctggctggcataaatatctcactcgcaatcaaattcagccgatagcggaacgggaaggcgactggagtgccatgtccggttttca + acaaaccatgcaaatgctgaatgagggcatcgttcccactgcgatgctggttgccaacgatcagatggcgctgggcgcaatgcgcgcc + attaccgagtccgggctgcgcgttggtgcggatatctcggtagtgggatacgacgataccgaagacagctcatgttatatcccgccgt + taaccaccatcaaacaggattttcgcctgctggggcaaaccagcgtggaccgcttgctgcaactctctcagggccaggcggtgaaggg + caatcagctgttgcccgtctcactggtgaaaagaaaaaccaccctggcgcccaatacgcaaaccgcctctccccgcgcgttggccgat + tcattaatgcagctggcacgacaggtttcccgactggaaagcgggcaggctgcaaacgacgaaaactacgctttagtagcttaataa ECK120029600 - ttcagccaaaaaacttaagaccgccggtcttgtccactaccttgcagtaatgcggtggacaggatcggcggttttcttttctcttctcaa + ttcagccaaaaaacttaagaccgccggtcttgtccactaccttgcagtaatgcggtggacaggatcggcggtt + ttcttttctcttctcaa diff --git a/model.tex b/model.tex index 46710351..28b1acbf 100644 --- a/model.tex +++ b/model.tex @@ -6,7 +6,7 @@ \section{SBOL Data Model}\label{sec:model} % % ----------------------------------------------------------------------------- -\Ctodo{Ensure that no UML figures have labels conflicting with their arrows} +\Rtodo{Ensure that no UML figures have labels conflicting with their arrows} In this section, we describe the types of biological design data that can belong to an SBOL document and the relationships between these data types. The SBOL data model is specified using Unified Modeling Language (UML) 2.0 diagrams \href{http://www.omg.org/spec/UML/2.0/}{(OMG 2005)}. Subsections \ref{sec:umldiagrams}, \ref{sec:nameconventions}, \ref{sec:datatypes} review the basics of UML diagrams and explain the naming conventions and generic data types used in this specification. The remaining sections then describe the SBOL data model in detail. Complete SBOL examples and best practices when using the standard can be found in \ref{sec:examples} and \ref{sec:bestpractices}, respectively. @@ -80,7 +80,6 @@ \subsection{Data Types} \end{itemize} The term \sbol{literal} is used to denote an object that can be any of the four types listed above. In addition to the simple types listed above, SBOL also uses objects with types \emph{uniform resource identifier} (URI) and \emph{XML qualified name} (QName): -\Rtodo{Somebody please make sure I haven't screwed up QName and URI descriptions. -JSB A QName also has a namespace to define the prefix. The localPart must be defined in this namespace. -CJM} \begin{itemize} \item URI: \url{http://www.w3.org/TR/xmlschema11-2/#anyURI}\\ {\em Example: \external{http://www.partsregistry.org/Part:BBa\_J23119}} @@ -91,7 +90,6 @@ \subsection{Data Types} Note that, in compliance with RDF standards, URIs are generally serialized using an \external{rdf:resource} property, e.g.: \external{rdf:resource="http://www.partsregistry.org/Part:BBa\_J23119"} -\Rtodo{Below, I added 'globally' before 'unique identifer' per my reading of RDF + Tim Berners-Lee's blogs. TBL likes to emphasize the global and distributed nature of 'webized' docs, refs, and objects. Could somebody please sanity check my interpretation? -MB} It is important to realize that in RDF, a URI may or may not be a resolvable URL (web address). A URI is always a globally unique identifier within a structured namespace. In some cases, that name is also a reference to (or within) a document, and in some cases that document can also be retrieved (e.g., using a web browser). \subsection{Identified} @@ -104,7 +102,6 @@ \subsection{Identified} As shown in \ref{uml:identified}, the \sbol{Identified} class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, \sbol{version}, \sbol{wasDerivedFrom}, \sbol{name}, \sbol{description}, and \sbol{annotations}. The latter property is described separately in \ref{sec:Annotations}. -\Rtodo{Reworded the following sentence to be about a reference, not an object, because the paragraph says that the reference might 'refer' to one object or a versioned lineage of multiple objects. Please proofread. -MB} When an SBOL resource reference takes the form of a URI, that URI may either be the value of an \sbol{identity} property or the value of a \sbol{persistentIdentity} property. If the URI is equal to the value of an \sbol{identity} property, then it is guaranteed to be unique, and it refers to precisely one SBOL object with that identity value. If the URI is equal to the value of a \sbol{persistentIdentity} property, then it may refer to multiple SBOL objects that are different ``versions'' of each other. These objects SHOULD be compared to one another to determine which single object the URI should resolve to (normally the most recent version - see \ref{sec:version}). diff --git a/overview.tex b/overview.tex index 984399f2..0c86bef6 100644 --- a/overview.tex +++ b/overview.tex @@ -51,7 +51,6 @@ \section{Overview of SBOL} \end{center} \end{figure} -\Rtodo{The first sentence of the following paragraph was a little awkward. I don't think we'd say that "Another important difference between the two cars is to be red." I patched it up a little, but perhaps one of you could check it? - MB} The second figure additionally depicts the connection of the functional side (modules) to the physical side (components). This is accomplished via the class \sbol{FunctionalComponent}. This class allows modules to own their components instances, and yet also allows the physical descriptions (in \sbol{ComponentDefinition}s) to stand on their own. In a similar manner, the ability to have hierarchies of either functional or physical components shown in \ref{images:overview1} must be broken apart, so that sub-components can be used in multiple functional modules or multiple physical components. @@ -70,6 +69,5 @@ \section{Overview of SBOL} \caption{\label{SBOL1TO2}The mapping from the SBOL 1.1 data model to the SBOL 2.0 data model.} \end{figure*} -\Rtodo{Please review my rewording of the following paragraph. Just wanted to polish it up a bit, and I eliminated the redundant use of "mechanism" + "framework". -MB} -There is one final, critical element of SBOL 2.0: its extension mechanism. This extension mechanism enables the storage of application specific information within an SBOL document. It is also intended to support the prototyping of data representations whose format is not yet a matter of consensus within the community. In particular, each SBOL entity can be annotated using the \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \sbol{GenericTopLevel} entities. SBOL libraries makes these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. +There is one final, critical element of SBOL 2.0: its extension mechanism. This extension mechanism enables the storage of application specific information within an SBOL document. It is also intended to support the prototyping of data representations whose format is not yet a matter of consensus within the community. In particular, each SBOL entity can be annotated using the \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \sbol{GenericTopLevel} entities. SBOL libraries make these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. diff --git a/purpose.tex b/purpose.tex index 621a4bbb..22976472 100644 --- a/purpose.tex +++ b/purpose.tex @@ -61,18 +61,12 @@ \section{Purpose} % Goksel - Removed this sentence:Therefore, SBOL 2.0 supersedes SBOL 1.1, and developers are encouraged to use it for all new software efforts. Since SBOL 2.0 can encode all data previously encoded in SBOL 1.1, developers are also encouraged to upgrade their SBOL 1.1 compliant software tools to use SBOL 2.0 data objects. -\Rtodo{Added text above to address Swapnil's comment. Needs review. -CJM. Goksel: Went through this and removed the previous sentence to remove duplication.} - -\Rtodo{I added this to bring extensibility to the fore as I thikn it is a crtical component of SBOL 2.0. Currently it is discused too late into the document and in a technical way that may not understandable by non-technical readers. The text will probably require some additional editing - HMS.} - -As discussed previously, SBOL 2.0 allows designs to be described beyond the simple annotated DNA sequence offered in SBOL 1.1. Of equal importance in SBOL 2.0 is the explicit provision of mechanisms that allows SBOL to be easily extended~\cite{sec:Annotations}. The intent of SBOL is to allow designs of synthetic biological systems to be fully described so that such designs can be reproduced. However SBOL does not currently offer a full catalog of data%Note I'm using data not metadata to avoid technical terms at this state +As discussed previously, SBOL 2.0 allows designs to be described beyond the simple annotated DNA sequence offered in SBOL 1.1. Of equal importance in SBOL 2.0 is the explicit provision of mechanisms that allows SBOL to be easily extended~\cite{sec:Annotation}. The intent of SBOL is to allow designs of synthetic biological systems to be fully described so that such designs can be reproduced. However SBOL does not currently offer a full catalog of data %Note I'm using data not metadata to avoid technical terms at this state to allow one to achieve complete reproducibility. For example the proposed standard does not yet include environmental and host context information or details on how the performance of the design is measured. Such details can now be included in SBOL through an explicit extension mechanism. Three scenarios are envisaged for extending SBOL: -\Rtodo{One might feel that the following list probably should go to the end of the overview but I wanted somewhere to describe the use cases of extensions in plain language without introducing any comp sci technical terms, and the overview is already fairly technical. If people don't like these types of low level descriptions in the spec document which would be a reasonable concern, then I can suggest a second document that gives a non-technical description of SBOL 2.0 - HMS.} - \begin{itemize} \item Use of the extension mechanism to include critical information related to the reproducibility of designs. For example, what growth media was used, what temperature were the organisms grown at, when were they harvested, was the DNA integrated into the host genome (if so here), or in a plasmid (what plasmid). -\item For tool makers, the extension mechanism allows tool specific information to be added to SBOL. Such information could include tool settings specific to the design that is being loaded, for example what windows should be opene or settings initialized. Tool makers could also include encrypted proprietary information related to the company or client in an extension. +\item For tool makers, the extension mechanism allows tool specific information to be added to SBOL. Such information could include tool settings specific to the design that is being loaded, for example what windows should be opened or settings initialized. Tool makers could also include encrypted proprietary information related to the company or client in an extension. \item Non-essential information to reproducibility but nevertheless useful information for many users. There are many cases where a community of users require specific information not available in core of SBOL. Examples include visualization information, how the DNA was assembled, information on evolutionary stability, or specialist modeling information. \end{itemize} diff --git a/relation.tex b/relation.tex index 437a50d1..89af1e9d 100644 --- a/relation.tex +++ b/relation.tex @@ -1,6 +1,6 @@ \section{Relation to other BBF RFCs} -\Rtodo{Just added this section; needs review -JSB} +\Rtodo{Just added this section; needs review -JSB Looks fine, just need the new number -CJM} BBF RFC \rfcnum{} replaces BBF RFC 87 (the SBOL 1.1 standard). diff --git a/sbol2.tex b/sbol2.tex index e54826e5..d5ae0579 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -123,12 +123,10 @@ Goksel Misirli & \emph{Newcastle University, UK}\\ Nicholas Roehner & \emph{Boston University, USA}\\ \end{tabular}\\ -% Temporarily taking my name off until I fully understand the spec. I've allocated dedicated -% time in mid June and July to fully digest the implications of the proposed SBOL 2.0. -%{\bf Chair:}\hfil\\ -%\begin{tabular}{l>{\hspace*{15pt}}r} -%Herbert Sauro & \emph{University of Washington, USA}\\[8pt] -%\end{tabular}\\ +{\bf Chair:}\hfil\\ +\begin{tabular}{l>{\hspace*{15pt}}r} +Herbert Sauro & \emph{University of Washington, USA}\\[8pt] +\end{tabular}\\ \href{mailto:editors@sbolstandard.org}{\sffamily editors@sbolstandard.org}\\ \\ {\bf Additional authors, by institution:}\\ @@ -137,6 +135,7 @@ Curtis Madsen, Matthew Pocock, Anil Wipat & \emph{Newcastle University, UK}\\ Tramy Nguyen, Zhen Zhang, Chris Myers & \emph{University of Utah, USA}\\ John H. Gennari & \emph{University of Washington, USA}\\ +Michael Bissell & \emph{Amyris, Inc., USA} \end{tabular}\\ } diff --git a/vocabulary.tex b/vocabulary.tex index 2ce296be..24554d64 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -5,7 +5,6 @@ \section{SBOL Specification Vocabulary} \subsection{Term Conventions} This document indicates requirement levels using the controlled vocabulary specified in IETF RFC 2119 and reiterated in BBF RFC 0. -\Rtodo{Goksel: Add ref} In particular, the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119. \begin{itemize} @@ -46,9 +45,9 @@ \subsection{SBOL Class Names} Represents a data container that can contain custom data added by user applications. \item \emph{\sbol{Model}}: -Links an SBOL representation of biological components and their interactions to computatinal models, such as quantitative or qualitative, that may be used to predict the functional behavior of a biological design. +Links an SBOL representation of biological components and their interactions to quantitative or qualitative computational models that may be used to predict the functional behavior of a biological design. %Goksel - Updated as above: Links an SBOL representation of biological components and their interactions to quantitative, computational models that may be used to predict the functional behavior of a biological design. -\Rtodo{Goksel: Needs a review, I updated the model description} + \item \emph{\sbol{ModuleDefinition}}: Describes a ``system'' design as a collection of biological components and their functional relationships. From 169a163335e1b5201d494ff701016fe79817fefa Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Tue, 9 Jun 2015 15:18:29 +0000 Subject: [PATCH 283/317] Update on Overleaf. --- apdx-validation.tex | 4 ++-- example_uml/toggle_1.pdf | Bin 0 -> 3413 bytes example_uml/toggle_1.png | Bin 30966 -> 0 bytes example_uml/toggle_2.pdf | Bin 0 -> 4763 bytes example_uml/toggle_2.png | Bin 48330 -> 0 bytes example_uml/toggle_3.pdf | Bin 0 -> 3852 bytes example_uml/toggle_3.png | Bin 39523 -> 0 bytes example_uml/toggle_4.pdf | Bin 0 -> 5357 bytes example_uml/toggle_4.png | Bin 59299 -> 0 bytes examples_model.tex | 14 +++++++------- images/sbol_v1_to_v2.pdf | Bin 0 -> 4930 bytes images/sbol_v1_to_v2.png | Bin 60128 -> 0 bytes model.tex | 12 +++++------- overview.tex | 4 +++- 14 files changed, 17 insertions(+), 17 deletions(-) create mode 100644 example_uml/toggle_1.pdf delete mode 100644 example_uml/toggle_1.png create mode 100644 example_uml/toggle_2.pdf delete mode 100644 example_uml/toggle_2.png create mode 100644 example_uml/toggle_3.pdf delete mode 100644 example_uml/toggle_3.png create mode 100644 example_uml/toggle_4.pdf delete mode 100644 example_uml/toggle_4.png create mode 100644 images/sbol_v1_to_v2.pdf delete mode 100644 images/sbol_v1_to_v2.png diff --git a/apdx-validation.tex b/apdx-validation.tex index 55cda504..691632c7 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -214,12 +214,12 @@ \subsubsection*{Rules for the \class{MapsTo} class} \subsubsection*{Rules for the \class{SequenceAnnotation} class} \setcounter{sbolCtr}{10901} -\Ctodo{Should check that location is a valid position in the sequence.} - \printValid{A \sbol{SequenceAnnotation} MUST inherit all properties of the \sbol{Identified} class.\\ Reference: \sec{sec:SequenceAnnotation}} \printValid{The \sbol{locations} property of a \sbol{SequenceAnnotation} is REQUIRED and MUST contain a non-empty set of \sbol{Location} objects.\\ Reference: \sec{sec:SequenceAnnotation}} +\printWarning{Each \sbol{Location} object in the list of \sbol{locations} should reference a valid location on the corresponding \sbol{Sequence} within the \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}.} + \printValid{The \sbol{component} property is OPTIONAL and MAY contain a \sbol{URI} reference to a \sbol{Component}.\\ Reference: \sec{sec:SequenceAnnotation}} \printValid{The \sbol{Component} referenced by the \sbol{component} property of a \sbol{SequenceAnnotation} MUST be contained by the \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}.\\ Reference: \sec{sec:SequenceAnnotation}} diff --git a/example_uml/toggle_1.pdf b/example_uml/toggle_1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..98e0e5deb440a969d4eab864f8e063204b9d6eb1 GIT binary patch literal 3413 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 literal 0 HcmV?d00001 diff --git a/example_uml/toggle_1.png b/example_uml/toggle_1.png deleted file mode 100644 index f334dbf6b0cc0855b39e7b95da236776fc24477f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30966 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 literal 0 HcmV?d00001 diff --git a/example_uml/toggle_2.png b/example_uml/toggle_2.png deleted file mode 100644 index ab19ef1ab3b094d5a5f444e4e6fea0822e872825..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48330 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 NkK&M&Jb8x5@ejxOmc{@8 literal 0 HcmV?d00001 diff --git a/example_uml/toggle_3.png b/example_uml/toggle_3.png deleted file mode 100644 index 018a4407e7bd1dc4c148b338e9079ea673dbba9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39523 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 literal 0 HcmV?d00001 diff --git a/example_uml/toggle_4.png b/example_uml/toggle_4.png deleted file mode 100644 index 26e8388d24fe055473261847dcbe6496e86b25b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59299 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 F_%C6{m306B diff --git a/examples_model.tex b/examples_model.tex index 8c5cd4ba..b32c4696 100644 --- a/examples_model.tex +++ b/examples_model.tex @@ -33,14 +33,14 @@ \section{Data Model Examples} The LacI/TetR toggle switch is modeled in SBOL as two parallel hierarchies of structure and function. The structural hierarchy of the toggle switch is represented using \sbol{ComponentDefinition}s: \begin{itemize} -\item The base elements of the hierarchy are DNA components, transcription factors, and small molecules. As an example, \ref{uml:ex_comp_defs} is a UML diagram of the \sbol{ComponentDefinition}s that represent these elements. -\item Base elements are composed to form more complex structures at the top of the hierarchy, including genes and molecular complexes between transcription factors and small molecules. As an example, \ref{uml:ex_comp_def_compo} is a UML diagram of the composite \sbol{ComponentDefinition}s that represent the TetR gene and IPTG-LacI complex. +\item The base elements of the hierarchy are DNA components, transcription factor proteins, and small molecules. As an example, \ref{uml:ex_comp_defs} is a UML diagram of the \sbol{ComponentDefinition}s that represent these elements. +\item Base elements are composed to form more complex structures at the top of the hierarchy, including genes and non-covalent complexes between transcription factor proteins and small molecules. As an example, \ref{uml:ex_comp_def_compo} is a UML diagram of the composite \sbol{ComponentDefinition}s that represent the TetR gene and IPTG-LacI complex. \end{itemize} \begin{figure}[ht] \begin{center} \includegraphics[width=\textwidth]{example_uml/toggle_1} -\caption[]{\sbol{ComponentDefinition}s for the LacI inverter. These include \sbol{ComponentDefinition}s based on DNA parts from the iGEM Registry and \sbol{ComponentDefinition}s that represent TetR mRNA, TetR, LacI, and and IPTG. Each \sbol{ComponentDefinition} is associated with a \sbol{Sequence} that has an IUPAC nucleic acid or amino acid encoding, except the \sbol{ComponentDefinition} for IPTG, which is associated with a \sbol{Sequence} that has a SMILES encoding.} +\caption[]{\sbol{ComponentDefinition} objects for the LacI inverter. These include \sbol{ComponentDefinition} objects based on DNA parts from the iGEM Registry and \sbol{ComponentDefinition}s that represent TetR mRNA, TetR, LacI, and and IPTG. Each \sbol{ComponentDefinition} is associated with a \sbol{Sequence} that has an \external{IUPAC DNA/RNA} or \external{IUPAC protein} \sbol{encoding}, except the \sbol{ComponentDefinition} of IPTG, which is associated with a \sbol{Sequence} that has a \external{SMILES} \sbol{encoding}.} \label{uml:ex_comp_defs} \end{center} \end{figure} @@ -48,7 +48,7 @@ \section{Data Model Examples} \begin{figure}[ht] \begin{center} \includegraphics[width=\textwidth]{example_uml/toggle_2} -\caption[]{Composite \sbol{ComponentDefinition}s for the LacI inverter. In the case of the \sbol{ComponentDefinition} that represents the TetR gene, its sub-\sbol{Component}s are located as \sbol{Range}s along its \sbol{Sequence} using \sbol{SequenceAnnotation}s. The \sbol{ComponentDefinition} that represents the IPTG-LacI complex, however, has no \sbol{Sequence} and its sub-\sbol{Component}s are aggregated without any data about their relative positions.} +\caption[]{Composite \sbol{ComponentDefinition} objects for the LacI inverter. In the case of the \sbol{ComponentDefinition} that represents the TetR gene, its sub-\sbol{Component} objects are located as \sbol{Range}s along its \sbol{Sequence} using \sbol{SequenceAnnotation}s. The \sbol{ComponentDefinition} that represents the IPTG-LacI complex, however, has no \sbol{Sequence} and its sub-\sbol{Component} objects are composed without any data about their relative positions.} \label{uml:ex_comp_def_compo} \end{center} \end{figure} @@ -63,7 +63,7 @@ \section{Data Model Examples} \begin{figure}[ht] \begin{center} \includegraphics[width=\textwidth]{example_uml/toggle_3} -\caption[]{\sbol{ModuleDefinition} for the LacI inverter. This \sbol{ModuleDefinition} instantiates the \sbol{ComponentDefinition}s for the LacI/TetR transcription factors and the sub-\sbol{ComponentDefinition}s of the TetR gene as \sbol{FunctionalComponent}s that participate in a repression \sbol{Interaction} and a genetic production \sbol{Interaction}. In this case, the transcription and translation of TetR are represented as a single genetic production \sbol{Interaction} that abstracts away the presence of the intermediate TetR mRNA. In addition, the \sbol{ComponentDefinition} for the TetR gene is instantiated by the LacI inverter \sbol{ModuleDefinition} to indicate that the latter describes the function of the TetR gene as a whole. Finally, this \sbol{ModuleDefinition} is also associated with a continuous \sbol{Model} written in the SBML source file ``LacI\_Inverter.xml.''} +\caption[]{\sbol{ModuleDefinition} of the LacI inverter. This \sbol{ModuleDefinition} contains \sbol{FunctionalComponent} objects that instantiate the \sbol{ComponentDefinition} objects for the LacI/TetR transcription factors and TetR gene. The \sbol{FunctionalComponent} for the TetR gene as a whole does not participate in any \sbol{Interaction} and merely indicates the overall structure that is functionally described by the LacI inverter \sbol{ModuleDefinition}. The remaining \sbol{FunctionalComponent} objects participate in a repression \sbol{Interaction} and a genetic production \sbol{Interaction}, thereby indicating which parts of the overall structure carry out the function of the LacI inverter \sbol{ModuleDefinition}. In this case, the transcription and translation of TetR are represented as a single genetic production \sbol{Interaction} that abstracts away the presence of the intermediate TetR mRNA. In addition, this \sbol{ModuleDefinition} is also associated with a continuous \sbol{Model} written in the SBML source file ``LacI\_Inverter.xml.''} \label{uml:ex_mod_def} \end{center} \end{figure} @@ -71,7 +71,7 @@ \section{Data Model Examples} \begin{figure}[ht] \begin{center} \includegraphics[width=\textwidth]{example_uml/toggle_4} -\caption[]{Composite \sbol{ModuleDefinition} for the LacI/TetR toggle switch. This \sbol{ModuleDefinition} instantiates the LacI and TetR inverter \sbol{ModuleDefinition}s as sub-\sbol{Module}s. It also instantiates the \sbol{ComponentDefinition}s for the LacI/TetR transcription factors and IPTG/aTc small molecules as \sbol{FunctionalComponent}s that participate in non-covalent binding \sbol{Interaction}s. To complete the composition of the \sbol{ModuleDefinition} for the toggle switch, \sbol{MapsTo} objects are used to indicate that the output of the LacI inverter is identical to the input of the TetR inverter and vice versa. +\caption[]{Composite \sbol{ModuleDefinition} of the LacI/TetR toggle switch. This \sbol{ModuleDefinition} contains the \sbol{Module} objects that instantiate \sbol{ModuleDefinition} object for sthe LacI and TetR inverter. It also contains \sbol{FunctionalComponent} objects that instantiate the \sbol{ComponentDefinition} objects for the LacI/TetR transcription factors and IPTG/aTc small molecules. These \sbol{FunctionalComponent} objects each participate in a non-covalent binding \sbol{Interaction}. To complete the composition of the toggle switch, \sbol{MapsTo} objects are used to indicate that the output of the LacI inverter \sbol{ModuleDefinition} is identical to the input of the TetR inverter \sbol{ModuleDefinition} and vice versa. } \label{uml:ex_mod_def_compo} \end{center} @@ -79,7 +79,7 @@ \section{Data Model Examples} % Each \sbol{ModuleDefinition} also contains the \sbol{FunctionalComponent}s that participate in \sbol{Interaction}s and are defined by the same \sbol{ComponentDefinition}s as the parallel \sbol{Component}s in the structural hierarchy of the toggle switch. Finally, \sbol{MapsTo} entities are used to refine which \sbol{FunctionalComponent}s of the functional hierarchy are identical or map them to \sbol{Component}s in the structural hierarchy. -\Ctodo{ComponentDefinition.types in the following figure are not consistent with the list of BioPax ontological terms described previously in the Data Model section. Nick will fix this.} +\Rtodo{ComponentDefinition.types in the following figure are not consistent with the list of BioPax ontological terms described previously in the Data Model section. Should now be consistent. - Nic} % The first use case is to indicate with greater fidelity how a module describes the function of a composite component, namely by asserting that particular component instantiations within the module correspond to particular component instantiations within the component. diff --git a/images/sbol_v1_to_v2.pdf b/images/sbol_v1_to_v2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..23d664862219830455592d20016a5a48061a13f8 GIT binary patch literal 4930 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 NDgY@deRBiA{{eZFicbIl literal 0 HcmV?d00001 diff --git a/images/sbol_v1_to_v2.png b/images/sbol_v1_to_v2.png deleted file mode 100644 index 8be9af1165eee28c939ee08788e70e0a38343583..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60128 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�diHk{3WT&;}uX*A8R-ISY~46Ou4a@|vf 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 diff --git a/model.tex b/model.tex index 28b1acbf..a56409a2 100644 --- a/model.tex +++ b/model.tex @@ -348,7 +348,8 @@ \subsubsection*{The \sbolheading{types} property} DNA & \url{http://www.biopax.org/release/biopax-level3.owl#DnaRegion}\\ RNA & \url{http://www.biopax.org/release/biopax-level3.owl#RnaRegion}\\ Protein & \url{http://www.biopax.org/release/biopax-level3.owl#Protein}\\ - Small Molecule & \url{http://www.biopax.org/release/biopax-level3.owl#SmallMolecule}\\ + Small Molecule & \url{http://www.biopax.org/release/biopax-level3.owl#SmallMolecule}\\ + Complex & \url{http://www.biopax.org/release/biopax-level3.owl#Complex}\\ \bottomrule \end{edtable} \caption{RECOMMENDED BioPAX terms to specify the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition}.} @@ -591,9 +592,8 @@ \subsubsection{MapsTo} \end{center} \end{figure} -\Ctodo{Mike B comment: ``This discussion feels a little messy. As a first- and second-time reader, I was not sold on the need for this class, and eventually I had to sort of reverse-engineer its practical rationale. I think the first paragraph should make it crystal clear what this is for. If two things are identical, then under what real-world circumstances would I expect to have two copies in my model? If two copies are in conflict, or if they are nonidentical but overlapping, then why is this the right way to unify them? I think you have answers for these questions, informed by real-world experience, but they're not conveyed here. Readers need insight.''} -When \sbol{ComponentDefinition} and \sbol{ModuleDefinition} objects are composed into structural and functional hierarchies using \sbol{ComponentInstance} and \sbol{Module} objects, it is often the case that some \sbol{ComponentInstance} objects are intended to represent the same entity in the overall design. The purpose of the \sbol{MapsTo} class is to make these identity relationships clear and explicit. +When \sbol{ComponentDefinition} and \sbol{ModuleDefinition} objects are composed into structural and functional hierarchies using \sbol{ComponentInstance} and \sbol{Module} objects, it is often the case that some \sbol{ComponentInstance} objects are intended to represent the same entity in the overall design. The purpose of the \sbol{MapsTo} class is to make these identity relationships clear and explicit. For example, consider a \sbol{ModuleDefinition} for a generic genetic inverter that includes a \sbol{FunctionalComponent} for a repressor protein. When this \sbol{ModuleDefinition} is instantiated within a higher level \sbol{ModuleDefinition} that includes a \sbol{FunctionalComponent} for a LacI protein, the \sbol{MapsTo} object can be used to indicate that the specific repressor protein in this instance is LacI. In particular, a \sbol{MapsTo} object provides two pieces of information: \begin{itemize} @@ -875,7 +875,7 @@ \subsubsection{SequenceConstraint} \paragraph{The \sbolheading{restriction} property}\label{sec:restriction} The \sbol{restriction} property is REQUIRED and has a data type of \sbol{URI}. This property is used to indicate the type of structural restriction on the relative, sequence-based positions or orientations of the \sbol{subject} and \sbol{object} \sbol{Component} objects. The \sbol{URI} value of this property SHOULD come from the RECOMMENDED \sbol{URI}s in \ref{tbl:restriction_types}. -\Rtodo{Per Mike B comment: changed ``MUST ... or an [ill-defined] appropriate ontology'' to SHOULD, since that's the same. -JSB I'm not sure about this. I think it is MUST, as these are the only ones we allow right now. Same for all enumerated types we have defined. -CJM I agree with CJM. The original wording was problematic because it said 'restrictions MUST come from table 7 or anywhere else,' which we've simplified to a SHOULD. But implementors need a solid definition of each option, and a complete enumeration of options, because a hard constraint MUST never be disobeyed -- and that means that implementors MUST enforce all constraints. So this can't be open-ended. -MB } +\Ctodo{Per Mike B comment: changed ``MUST ... or an [ill-defined] appropriate ontology'' to SHOULD, since that's the same. -JSB I'm not sure about this. I think it is MUST, as these are the only ones we allow right now. Same for all enumerated types we have defined. -CJM I agree with CJM. The original wording was problematic because it said 'restrictions MUST come from table 7 or anywhere else,' which we've simplified to a SHOULD. But implementors need a solid definition of each option, and a complete enumeration of options, because a hard constraint MUST never be disobeyed -- and that means that implementors MUST enforce all constraints. So this can't be open-ended. -MB So the outstanding question is do we want to make this SHOULD or MUST? -CJM} % Note: With regards to SBOL Version 1.1., this is a generalization of former \sbol{SequenceAnnotation} property \external{precedes}. @@ -1244,7 +1244,7 @@ \subsubsection{Interaction} The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects, each of which identifies the \sbolmult{roles:P}{roles} that the referenced \sbol{FunctionalComponent} plays in the interaction. -Note that even though an \sbol{Interaction} generally involves at least one \sbol{Participation}, the case of zero participations is allowed because it is plausible that a design may wish to specify that an \sbol{Interaction} will exist, even if its \sbol{participants} are not yet determined. +Note that even though an \sbol{Interaction} generally involves at least one \sbol{Participation}, the case of zero participations is allowed because it is plausible that a design may wish to specify that an \sbol{Interaction} will exist, even if its \sbol{participant}s are not yet determined. \paragraph{Serialization} @@ -1510,8 +1510,6 @@ \subsubsection*{Serialization} % ... % -\Rtodo{I don't see rdfType serialized in here; how is it worked? -JSB It is again used for serialization. Added sentence above.} - \lstsetsbol \begin{lstlisting} diff --git a/overview.tex b/overview.tex index 0c86bef6..326b4389 100644 --- a/overview.tex +++ b/overview.tex @@ -58,7 +58,9 @@ \section{Overview of SBOL} Therefore, a \sbol{ModuleDefinition} does not own the \sbol{ModuleDefinition}s that it uses, but instead it refers to them using the \sbol{Module} objects that it does own. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, SBOL 2.0 provides a few other additional helper classes such as \sbol{Location}, which generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint}, which generalizes the relative positioning information among \sbol{Component}s. There is also \sbol{Participation}s, which allow \sbol {Interaction} objects to specify the roles of their participants while referencing the \sbol{FunctionalComponent}s, so that these can stand on their own. Finaly, there is the \sbol{MapsTo} class (not shown) that enables connections to be made between \sbol{Component}s and \sbol{FunctionalComponent}s at various levels of the design hierarchy. The next section provides complete definitions and details for all of these classes. -\Rtodo{Added mapping of objects from 1.1 to 2.0 using the diagram from the libSBOLj paper. Needs review. Also not entirely sure this is the right place. Should we move it to its own section later? -CJM} +\Rtodo{Added mapping of objects from 1.1 to 2.0 using the diagram from the libSBOLj paper. Needs review. Also not entirely sure this is the right place. Should we move it to its own section later? -CJM + +Yes please. Since this mapping figure really is drawn as UML, it needs to appear after section 7.1 "Understanding UML Diagrams". -jhg } Figure~\ref{SBOL1TO2} depicts the mapping between SBOL 1.1 data objects and SBOL 2.0 data objects. Collections of DNA components map to Collections of ComponentDefinitions, among other top level SBOL objects. DnaComponents map to ComponentDefinitions of type DNA. DnaSequences map to Sequences using the IUPAC encoding for nucleotide sequences. SequenceAnnotations with precise start and end positions are mapped to SequenceAnnotations with Range Locations, while SequenceAnnotations with imprecise positions are mapped to SequenceAnnotations with GenericLocations. Each Sequence Annotation also maps to a Component, which in SBOL 2.0 represents the instantiation or usage of a given ComponentDefinition. Finally, precedes relationships map to SequenceConstraints that specify precedes restrictions. From ee3bf8a3df8b0ba969691a8fe2dfde08cce23169 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Wed, 17 Jun 2015 15:20:22 +0000 Subject: [PATCH 284/317] Update on Overleaf. --- apdx-validation.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 691632c7..d641ac59 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -218,7 +218,7 @@ \subsubsection*{Rules for the \class{SequenceAnnotation} class} \printValid{The \sbol{locations} property of a \sbol{SequenceAnnotation} is REQUIRED and MUST contain a non-empty set of \sbol{Location} objects.\\ Reference: \sec{sec:SequenceAnnotation}} -\printWarning{Each \sbol{Location} object in the list of \sbol{locations} should reference a valid location on the corresponding \sbol{Sequence} within the \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}.} +\printWarning{Each \sbol{Location} object in the list of \sbol{locations} should reference a valid location on the corresponding \sbol{Sequence} within the \sbol{ComponentDefinition} (for DNA/RNA/Protein types) that contains the \sbol{SequenceAnnotation}.} \printValid{The \sbol{component} property is OPTIONAL and MAY contain a \sbol{URI} reference to a \sbol{Component}.\\ Reference: \sec{sec:SequenceAnnotation}} From a35e92be108dc7569f496bc07758fd4be27b09f2 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Thu, 18 Jun 2015 09:04:46 +0000 Subject: [PATCH 285/317] Update on Overleaf. --- apdx-validation.tex | 42 ++++++++++++++++++++---------------------- model.tex | 18 +++++++++++++++++- overview.tex | 13 ------------- 3 files changed, 37 insertions(+), 36 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index d641ac59..4aa5bae1 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -6,8 +6,6 @@ \section{Validation Rules} \label{validation} -\Rtodo{New validation rules have been added. Needs review.} - This section summarizes all the conditions that MUST be or are RECOMMENDED to be true of an SBOL Version~2 document. There are different degrees of rule strictness. @@ -119,39 +117,39 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} is REQUIRED and MUST contain a non-empty set of \external{URI}s.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{Each \external{URI} contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that describes the category of biochemical or physical entity that is represented by the \sbol{ComponentDefinition}.\\ Reference: \sec{sec:ComponentDefinition}} - -\printWarning{All \external{URI}s contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to non-conflicting ontology terms.\\ Reference: \sec{sec:ComponentDefinition}} - \printValid{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST NOT contain more than one \external{URI} from \ref{tbl:componentdefinition_types}.\\ Reference: \sec{sec:ComponentDefinition}} \printWarning{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_types} if it is well-described by this \external{URI}.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST NOT contain more than one \external{URI} from \ref{tbl:componentdefinition_types}.\\ Reference: \sec{sec:ComponentDefinition}} +\printWarning{Each \external{URI} contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that describes the category of biochemical or physical entity that is represented by the \sbol{ComponentDefinition}.\\ Reference: \sec{sec:ComponentDefinition}} + +\printWarning{All \external{URI}s contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to non-conflicting ontology terms.\\ Reference: \sec{sec:ComponentDefinition}} \printValid{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \external{URI}s.\\ Reference: \sec{sec:ComponentDefinition}} +\printWarning{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_roles} if it is well-described by this \external{URI}.\\ Reference: \sec{sec:ComponentDefinition}} + \printWarning{Each \external{URI} contained by the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that clarifies the potential function of the \sbol{ComponentDefinition} in a biochemical or physical context.\\ Reference: \sec{sec:ComponentDefinition}} \printWarning{Each \external{URI} contained by the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that is consistent with its \sbolmult{types:CD}{types} property.\\ Reference: \sec{sec:ComponentDefinition}} \printModeling{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} SHOULD only contain a \external{URI} provided in \ref{tbl:componentdefinition_roles} if one of its \sbolmult{types:CD}{types} is cross-listed with the \external{URI}.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_roles} if it is well-described by this \external{URI}.\\ Reference: \sec{sec:ComponentDefinition}} - \printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \external{URI} references to \sbol{Sequence} objects.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{The \sbol{Sequence} objects referred to by the \sbol{sequences} property of a \sbol{ComponentDefinition} MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties.\\ Reference: \sec{sec:ComponentDefinition}} - -\printModeling{If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} with the same \sbol{encoding}, then the \sbol{elements} of these \sbol{Sequence} objects SHOULD have equal lengths.\\ Reference: \sec{sec:ComponentDefinition}} +\printWarning{Each \external{URI} in the set of \sbol{sequences} MUST reference a \sbol{Sequence} object.\\ Reference: \sec{sec:ComponentDefinition}} \printWarning{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \sbol{encoding} properties.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \external{IUPAC} \sbol{encoding} \external{URI}s from \ref{tbl:sequence_encodings}.\\ Reference: \sec{sec:ComponentDefinition}} +\printWarning{The \sbol{Sequence} objects referred to by the \sbol{sequences} property of a \sbol{ComponentDefinition} MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties.\\ Reference: \sec{sec:ComponentDefinition}} + +\printWarning{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \external{IUPAC} \sbol{encoding} \external{URI}s from \ref{tbl:sequence_encodings}.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects, and one of the \sbolmult{types:CD}{types} of this \sbol{ComponentDefinition} comes from \ref{tbl:componentdefinition_types}, then one of the \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this type in \ref{tbl:sequence_encodings}.\\ Reference: \sec{sec:ComponentDefinition}} +\printWarning{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects, and one of the \sbolmult{types:CD}{types} of this \sbol{ComponentDefinition} comes from \ref{tbl:componentdefinition_types}, then one of the \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this type in \ref{tbl:sequence_encodings}.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then the \sbolmult{types:CD}{types} property of the \sbol{ComponentDefinition} MUST contain the type from \ref{tbl:componentdefinition_types} that is cross-listed with this \sbol{encoding} in \ref{tbl:sequence_encodings}.\\ Reference: \sec{sec:ComponentDefinition}} +\printWarning{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then the \sbolmult{types:CD}{types} property of the \sbol{ComponentDefinition} MUST contain the type from \ref{tbl:componentdefinition_types} that is cross-listed with this \sbol{encoding} in \ref{tbl:sequence_encodings}.\\ Reference: \sec{sec:ComponentDefinition}} + +\printModeling{If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} with the same \sbol{encoding}, then the \sbol{elements} of these \sbol{Sequence} objects SHOULD have equal lengths.\\ Reference: \sec{sec:ComponentDefinition}} \printValid{The \sbol{components} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{Component} objects.\\ Reference: \sec{sec:ComponentDefinition}} @@ -159,7 +157,7 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{The \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{If the \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} contains two or more \sbol{SequenceAnnotation} objects that refer to the same \sbol{Component}, then their \sbol{Location} objects MUST NOT specify regions that have conflicting \sbol{orientation} properties or occupy non-overlapping positions.\\ Reference: \sec{sec:ComponentDefinition}} +\printValid{If the \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} must not contain two or more \sbol{SequenceAnnotation} objects that refer to the same \sbol{Component}.\\ Reference: \sec{sec:ComponentDefinition}} \printModeling{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{SequenceAnnotation} that includes a \sbol{Range} and/or \sbol{Cut} in the \sbol{sequenceAnnotations} property of the \sbol{ComponentDefinition} SHOULD specify a region on the \sbol{elements} of this \sbol{Sequence}.\\ Reference: \sec{sec:ComponentDefinition}} @@ -172,10 +170,10 @@ \subsubsection*{Rules for the \class{ComponentInstance} class} \printValid{The \sbol{access} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \external{URI} from \ref{tbl:componentInstance_access} \\ Reference: \sec{sec:ComponentInstance}} -\printModeling{It is RECOMMENDED that the \sbol{access} property of a \sbol{ComponentInstance} contain the \external{URI} \url{http://sbols.org/v2\#public}.\\ Reference: \sec{sec:ComponentInstance}} - \printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \external{URI} reference to a \sbol{ComponentDefinition}.\\ Reference: \sec{sec:ComponentInstance}} +\printWarning{The \sbol{definition} property \external{URI} must reference a \sbol{ComponentDefinition} object.\\ Reference: \sec{sec:ComponentInstance}} + \printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} MUST NOT contain a \external{URI} reference to the \sbol{ComponentDefinition} that contains the \sbol{ComponentInstance}.\\ Reference: \sec{sec:ComponentInstance}} \printWarning{\sbol{ComponentInstance} objects MUST NOT form circular reference chains via their \sbolmult{definition:CI}{definition} properties and parent \sbol{ComponentDefinition} objects.\\ Reference: \sec{sec:ComponentInstance}} @@ -194,8 +192,6 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{The \sbol{local} property of a \sbol{MapsTo} is REQUIRED and MUST contain a \external{URI} reference to a \sbol{ComponentInstance}.\\ Reference: \sec{sec:MapsTo}} -\printValid{The \sbol{local} property of a \sbol{MapsTo} MUST refer to a \sbol{ComponentInstance} with an \sbol{access} property that contains the \external{URI} \url{http://sbols.org/v2\#public}.\\ Reference: \sec{sec:MapsTo}} - \printValid{If a \sbol{MapsTo} is contained by a \sbol{Component} in a \sbol{ComponentDefinition}, then the \sbol{local} property of the \sbol{MapsTo} MUST refer to another \sbol{Component} in the \sbol{ComponentDefinition}.\\ Reference: \sec{sec:MapsTo}} \printValid{If a \sbol{MapsTo} is contained by a \sbol{FunctionalComponent} or \sbol{Module} in a \sbol{ModuleDefinition}, then the \sbol{local} property of the \sbol{MapsTo} MUST refer to another \sbol{FunctionalComponent} in the \sbol{ModuleDefinition}.\\ Reference: \sec{sec:MapsTo}} @@ -316,13 +312,13 @@ \subsubsection*{Rules for the \class{FunctionalComponent} class} \printValid{A \sbol{FunctionalComponent} MUST inherit all properties of the \sbol{ComponentInstance} class.\\ Reference: \sec{sec:ComponentInstance}} -\printValid{The \sbol{direction} property of a \sbol{FUnctionalComponent} is REQUIRED and MUST contain a \sbol{URI} from \ref{tbl:functionalcomponent_directions}. +\printValid{The \sbol{direction} property of a \sbol{FunctionalComponent} is REQUIRED and MUST contain a \sbol{URI} from \ref{tbl:functionalcomponent_directions}. \\ Reference: \sec{sec:FunctionalComponent}} \subsubsection*{Rules for the \class{Module} class} \setcounter{sbolCtr}{11801} -\printValid{A \sbol{Module} object inherits all properties of a \sbol{Identified} object.\\ Reference: \sec{sec:Module}} +\printValid{A \sbol{Module} object inherits all properties of an \sbol{Identified} object.\\ Reference: \sec{sec:Module}} \printValid{The \sbolmult{definition:M}{definition} property is a REQUIRED \sbol{URI} reference to a \sbol{ModuleDefinition} object. \\ Reference: \sec{sec:Module}} @@ -368,6 +364,8 @@ \subsubsection*{Rules for the \class{Annotation} class} \printValid{The \sbol{AnnotationValue} class MUST be of data type \sbol{String}, \sbol{Integer}, \sbol{Double}, \sbol{Boolean}, \sbol{URI}, or \sbol{NestedAnnotations}.\\ Reference: \sec{sec:Annotations}} +\printValid{The \sbol{nestedQName} property is REQUIRED for a \sbol{NestedAnnotations} object, and it has data type \sbol{QName}. \\ Reference: \sec{sec:Annotations}} + \printValid{The \sbol{nestedURI} property is REQUIRED for a \sbol{NestedAnnotations} object, and it has data type \sbol{URI}. \\ Reference: \sec{sec:Annotations}} \printValid{The \sbol{annotations} property is an OPTIONAL set for a \sbol{NestedAnnotations} object, and each member is of data type \sbol{Annotation}. \\ Reference: \sec{sec:Annotations}} diff --git a/model.tex b/model.tex index a56409a2..b9e6562c 100644 --- a/model.tex +++ b/model.tex @@ -875,6 +875,7 @@ \subsubsection{SequenceConstraint} \paragraph{The \sbolheading{restriction} property}\label{sec:restriction} The \sbol{restriction} property is REQUIRED and has a data type of \sbol{URI}. This property is used to indicate the type of structural restriction on the relative, sequence-based positions or orientations of the \sbol{subject} and \sbol{object} \sbol{Component} objects. The \sbol{URI} value of this property SHOULD come from the RECOMMENDED \sbol{URI}s in \ref{tbl:restriction_types}. + \Ctodo{Per Mike B comment: changed ``MUST ... or an [ill-defined] appropriate ontology'' to SHOULD, since that's the same. -JSB I'm not sure about this. I think it is MUST, as these are the only ones we allow right now. Same for all enumerated types we have defined. -CJM I agree with CJM. The original wording was problematic because it said 'restrictions MUST come from table 7 or anywhere else,' which we've simplified to a SHOULD. But implementors need a solid definition of each option, and a complete enumeration of options, because a hard constraint MUST never be disobeyed -- and that means that implementors MUST enforce all constraints. So this can't be open-ended. -MB So the outstanding question is do we want to make this SHOULD or MUST? -CJM} % Note: With regards to SBOL Version 1.1., this is a generalization of former \sbol{SequenceAnnotation} property \external{precedes}. @@ -1555,4 +1556,19 @@ \subsubsection*{Serialization} \end{lstlisting} \label{ser:GenericTopLevel} -\end{figure} \ No newline at end of file +\end{figure} + +\section{Mapping Between SBOL 1.1 and SBOL 2.0} +\label{sec:mapping} + +\Rtodo{I moved this into its own section after data model, since I believe it makes the most sense after the data model is explained, and though short is perhaps important enough for its own section. Open to moving this further down, if need be. -CJM} + +Figure~\ref{SBOL1TO2} depicts the mapping between SBOL 1.1 data objects and SBOL 2.0 data objects. Collections of DNA components map to Collections of ComponentDefinitions, among other top level SBOL objects. DnaComponents map to ComponentDefinitions of type DNA. DnaSequences map to Sequences using the IUPAC encoding for nucleotide sequences. SequenceAnnotations with precise start and end positions are mapped to SequenceAnnotations with Range Locations, while SequenceAnnotations with imprecise positions are mapped to SequenceAnnotations with GenericLocations. Each Sequence Annotation also maps to a Component, which in SBOL 2.0 represents the instantiation or usage of a given ComponentDefinition. Finally, precedes relationships map to SequenceConstraints that specify precedes restrictions. + +\begin{figure*}[h] +\begin{center} + \includegraphics[width=\textwidth]{images/sbol_v1_to_v2} +\end{center} +\caption{\label{SBOL1TO2}The mapping from the SBOL 1.1 data model to the SBOL 2.0 data model.} +\end{figure*} + diff --git a/overview.tex b/overview.tex index 326b4389..3d805345 100644 --- a/overview.tex +++ b/overview.tex @@ -58,18 +58,5 @@ \section{Overview of SBOL} Therefore, a \sbol{ModuleDefinition} does not own the \sbol{ModuleDefinition}s that it uses, but instead it refers to them using the \sbol{Module} objects that it does own. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, SBOL 2.0 provides a few other additional helper classes such as \sbol{Location}, which generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint}, which generalizes the relative positioning information among \sbol{Component}s. There is also \sbol{Participation}s, which allow \sbol {Interaction} objects to specify the roles of their participants while referencing the \sbol{FunctionalComponent}s, so that these can stand on their own. Finaly, there is the \sbol{MapsTo} class (not shown) that enables connections to be made between \sbol{Component}s and \sbol{FunctionalComponent}s at various levels of the design hierarchy. The next section provides complete definitions and details for all of these classes. -\Rtodo{Added mapping of objects from 1.1 to 2.0 using the diagram from the libSBOLj paper. Needs review. Also not entirely sure this is the right place. Should we move it to its own section later? -CJM - -Yes please. Since this mapping figure really is drawn as UML, it needs to appear after section 7.1 "Understanding UML Diagrams". -jhg } - -Figure~\ref{SBOL1TO2} depicts the mapping between SBOL 1.1 data objects and SBOL 2.0 data objects. Collections of DNA components map to Collections of ComponentDefinitions, among other top level SBOL objects. DnaComponents map to ComponentDefinitions of type DNA. DnaSequences map to Sequences using the IUPAC encoding for nucleotide sequences. SequenceAnnotations with precise start and end positions are mapped to SequenceAnnotations with Range Locations, while SequenceAnnotations with imprecise positions are mapped to SequenceAnnotations with GenericLocations. Each Sequence Annotation also maps to a Component, which in SBOL 2.0 represents the instantiation or usage of a given ComponentDefinition. Finally, precedes relationships map to SequenceConstraints that specify precedes restrictions. - -\begin{figure*} -\begin{center} - \includegraphics[width=\textwidth]{images/sbol_v1_to_v2} -\end{center} -\caption{\label{SBOL1TO2}The mapping from the SBOL 1.1 data model to the SBOL 2.0 data model.} -\end{figure*} - There is one final, critical element of SBOL 2.0: its extension mechanism. This extension mechanism enables the storage of application specific information within an SBOL document. It is also intended to support the prototyping of data representations whose format is not yet a matter of consensus within the community. In particular, each SBOL entity can be annotated using the \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \sbol{GenericTopLevel} entities. SBOL libraries make these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. From 9824cca847613e94b0aaa7f17a10b2e800bddb51 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Sun, 21 Jun 2015 17:47:12 -0500 Subject: [PATCH 286/317] shifted some TODO notes to git issue tracker --- practices.tex | 24 ------------------------ purpose.tex | 4 ---- sbol2.tex | 13 ------------- 3 files changed, 41 deletions(-) diff --git a/practices.tex b/practices.tex index 4c395e90..f6657995 100644 --- a/practices.tex +++ b/practices.tex @@ -10,10 +10,6 @@ \subsection{Use of the Version Property} As stated in \ref{sec:version}, it is RECOMMENDED that version numbering should follow the conventions of semantic versions (\url{http://semver.org/}), particularly as implemented by Maven (\url{http://maven.apache.org/}). This convention represents versions as sequences of numbers and qualifiers separated by the characters {\tt .} and {\tt -} and compared in lexicographical order (for example, 1 < 1.3.1 < 2.0-beta). For a full explanation, see the linked resources. -%% \subsection{Creation and Modification Dates} - -\NVtodo{Annotations: Annotating with created and modified dates, and how to add them. Is this section needed? -- CJM} - \subsection{Compliant SBOL Objects} \label{sec:compliant} @@ -29,19 +25,6 @@ \subsection{Compliant SBOL Objects} \item The \sbol{identity}, \sbol{persistentIdentity}, \sbol{displayId}, and \sbol{version} of a compliant object once set can never be changed. \end{enumerate} -\NVtodo{Mike B: ``"The version of a compliant child object must be equal to the version of {its} parent object." -There is an alternative. Consider what happens in the following scenario: -suppose my parent object is 'dad', and its two children are 'daughter' and 'son'. -dad starts at v1.0, and likewise daughter starts at v1.0 and son is v1.0. -Now I want to revise just the son, so I give him a new haircut and I increment his version to v1.1. -Since the dad's child version changed, then dad needs to change as well, so let's increment his version to v1.1. -However, there is no reason why daughter's version should change to v1.1. Daughter is exactly the same as she was at v1.0, and retaining her old version saves us the trouble of diffing v1.0 and the identical v1.1. -In other words, version changes should be minimally promoted up the tree, but not back down to siblings and relatives if they didn't change. - -If you don't want to do it this way, I do see why, but I've found it helpful on past projects to increment versions only on the things that contain diffs (including their containers, recursively). That's the way that many dependency management systems work, as well as certain aspects of version control: when you ask for a log on an individual file in a version control system, you don't see every revision that ever touched the repo, you only see the revisions that modified that file.'' - -ANSWER: I can see your point. It would, however, complicate a few things in our library implementation, and it would be very difficult to change at this point. We can consider this for a future version.} - For examples, see any example in this specification, as all have been formulated using compliant URIs. @@ -81,11 +64,6 @@ \subsection{Completeness and Validation} retrieving them from various repositories) or else to mark them as being unverified and not depend on their correctness. -\NVtodo{Mike B. ``"the program doing [the deserialization] SHOULD verify that all of the property values encoded therein have the right type...." -Not everybody knows how to apply XML+XSD. Maybe we should give new users a big hint: they can just use any correctly implemented SBOL 2.0 XSD file along with a validating XML parser to do this stuff automatically. We really don't want implementators getting scared off by the burden imposed by this section of the spec. Let's perhaps additionally recommend as a bootstrapping exercise to grab an SBOL 2.0 XSD file out of a recognized reference implementation (libSBOLj, for instance), then start by feeding the XSD and the user's SBOL document in question to a validating XML parser such as xmllint, which is FOSS, works great, and installs in seconds. (Side note: if you choose to give these helpful hints, please make it clear that a given reference implementation is not a spec; if it contains errors, the spec wins.) - -A section about completeness and validation that doesn't talk about the available official or unofficial XSDs is incomplete. This part was left out of SBOL 1.1, but now that serialization is a big part of SBOL 2.0, an XSD should be included somehow, if only by reference.'' ANSWER: agreed, we need to do an XSD as soon as possible. Help would be appreciated. -CJM I'll get in touch with the libsbol devs and offer to lend a hand. -MB} - \subsection{Recommended Ontologies for External Terms} External ontologies and controlled vocabularies are an integral part of SBOL. SBOL utilizes these resources to access existing biological information where possible. New SBOL specific terms are defined only when necessary. Instead, SBOL provides placeholders that can point to external terms. For example, types of components, such as DNA or protein, are indicated using BioPAX. Similarly, the role of a DNA component is indicated via the SO terms. Although preferred ontologies have been indicated in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found in \ref{tbl:preferred_external_resources}. @@ -112,5 +90,3 @@ \subsection{Recommended Ontologies for External Terms} \caption{Preferred external resources from which to draw values for various SBOL properties.} \label{tbl:preferred_external_resources} \end{table} - -\NVtodo{Goksel and Neil need to sort out GO vs. UniProt, and possibly just recommend both here.} \ No newline at end of file diff --git a/purpose.tex b/purpose.tex index 22976472..8300f68f 100644 --- a/purpose.tex +++ b/purpose.tex @@ -5,8 +5,6 @@ \section{Purpose} % The Synthetic Biology Open Language is intended to help synthetic biologists collaborate by allowing them to exchange designs in a standardized data format. In addition, the SBOL data model systematically describes the essential details of a design that are required for researchers to reproduce each other's designs in the laboratory. The purpose of the Synthetic Biology Open Language is to aid collaboration between researchers, improve scientific reproducibility, and to speed the research and development of technologies based on synthetic biology. -% Below is my revision. Any thoughts? - Nic -\Ctodo{Goksel:I find this paragraph too detailed. Up to the sentence starting with "When designing" is ok. If we really want to give an example, just a TF would be enough without mentioning about microRNAs or antagonists, and keeping it short.} Synthetic biology builds upon the techniques and successes of genetics, molecular biology, and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. A common factor of these challenges is the exchange of information about designed systems between laboratories. When designing a synthetic system, synthetic biologists need to exchange information about multiple types of molecules and their planned roles in the design. Often the functional role may be associated with another type of molecule entirely, such as a small chemical, a DNA, an RNA or a Protein molecule. An example is a DNA sequence that is transcribed into a messenger RNA that contains an encoded microRNA binding site, and the messenger RNA in turn being translated into a protein molecule which is a transcription factor binding protein. Functionally the representation of the products of the designed DNA sequence need to describe the role of microRNA binding to the messenger RNA leading to possible degradation, the functional consequence of the transcription factor protein being absent leading to repression of expression of another gene and the kinetic information associated with these different elements so they can be mathematically modeled. The DNA sequence itself is thus one or two steps removed from the functional role of the designed device or circuit. @@ -46,8 +44,6 @@ \section{Purpose} \caption{SBOL 2.0 extends prior formats to represent both structure and function of a genetic design in a single model.} \end{figure} -\Ctodo{Figure is not referenced in the text and moved to where it is referenced. -CJM. Goksel: We need to redraw the figure with SBOL-Visual icons.} - To address the need for functional descriptions in SBOL, the proposed data model adds new classes to provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the SBML to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module definition gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. The SBOL 2.0 specification also adds a number of measures to simplify adoption and validation of compatibility with the standard. diff --git a/sbol2.tex b/sbol2.tex index d5ae0579..eaf68be8 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -142,19 +142,6 @@ \maketitlepage \maketableofcontents -\Rtodo{When editing, change the todos that you handle to ``Rtodo'' (``R'' for ``resolved''), rather than just deleting them, so that a second person can review} - -\Ctodo{Final pass before release must include: - -Ensure that all references are defined precisely once (grep 'undefined' and 'multiply' in log) - -Make sure all requirements words are properly upper-cased - -Spell check - -Ensure that TOC links to correct locations} - - \input{purpose} \input{relation} From 096a28c1c2b7e41239aec13696864dfd199ed63f Mon Sep 17 00:00:00 2001 From: jakebeal Date: Sun, 21 Jun 2015 18:05:06 -0500 Subject: [PATCH 287/317] all todo notes gone --- examples_model.tex | 2 -- examples_serialization.tex | 4 ---- history.tex | 2 -- model.tex | 13 ------------- relation.tex | 2 -- sbol2.tex | 9 --------- 6 files changed, 32 deletions(-) diff --git a/examples_model.tex b/examples_model.tex index b32c4696..b62b78c4 100644 --- a/examples_model.tex +++ b/examples_model.tex @@ -79,8 +79,6 @@ \section{Data Model Examples} % Each \sbol{ModuleDefinition} also contains the \sbol{FunctionalComponent}s that participate in \sbol{Interaction}s and are defined by the same \sbol{ComponentDefinition}s as the parallel \sbol{Component}s in the structural hierarchy of the toggle switch. Finally, \sbol{MapsTo} entities are used to refine which \sbol{FunctionalComponent}s of the functional hierarchy are identical or map them to \sbol{Component}s in the structural hierarchy. -\Rtodo{ComponentDefinition.types in the following figure are not consistent with the list of BioPax ontological terms described previously in the Data Model section. Should now be consistent. - Nic} - % The first use case is to indicate with greater fidelity how a module describes the function of a composite component, namely by asserting that particular component instantiations within the module correspond to particular component instantiations within the component. % As an example of this use case, one might compose the structure and function of the LacI-repressible gene of the genetic toggle switch. In this example, the LacI-repressible gene and two of its subcomponents, the pLac promoter and cTetR CDS, are to be composed with the LacI inverter module. In order to compose these components with the LacI inverter module and indicate that it describes their behavior, they are instantiated inside the module. In addition, port maps are placed on the instantiation of the LacI-repressible gene to connect between its pLac plus cTetR subcomponent instantiations and the corresponding component instantiations in the module. Doing so makes it clear which subcomponent instantiations in the gene are being described by which component instantiations in the module. In this way, GDA tools for sequence editing and biochemical modeling can guarantee that their users are handling corresponding elements of a given genetic design, while GDA tools for genetic technology mapping can make explicit connections between the structural and functional elements of a design. \ No newline at end of file diff --git a/examples_serialization.tex b/examples_serialization.tex index 84c4d21c..9eeff1ed 100644 --- a/examples_serialization.tex +++ b/examples_serialization.tex @@ -3,10 +3,6 @@ \section{Examples of Serialization} \label{ser:examples} % ----------------------------------------------------------------------------- -\Ctodo{Mike B: ``DNA sequences run off the page. -Historically, this has often been a problem with long DNA string datatypes that don't permit inline whitespace. They're impossible to print or justify for web presentation without breaking the validity of the document.'' -Goksel: I like the Genbank files having 60 nucleotides in one row. :) I keep Mike's comment here in case if someone else has any suggestion.} - \subsection{PoPS Receiver} This example shows the serialization of the PoPS Receiver device designed by Canton and co-workers~\cite{canton-natbio-2008}. diff --git a/history.tex b/history.tex index 586acf58..be5852b5 100644 --- a/history.tex +++ b/history.tex @@ -3,8 +3,6 @@ \section{A Brief History of SBOL} % ----------------------------------------------------------------------------- %Add yourself if you have helped and aren't on the list -\Rtodo{The text below needs thorough review by the community. We are certain that there are many errors, including missing people. Please send input to fix these errors. Reviewed: JSB} - In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. Part of the funds were used to fund the initial standards meeting held in Seattle on April 26-27, 2008. The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. diff --git a/model.tex b/model.tex index b9e6562c..f2830884 100644 --- a/model.tex +++ b/model.tex @@ -6,8 +6,6 @@ \section{SBOL Data Model}\label{sec:model} % % ----------------------------------------------------------------------------- -\Rtodo{Ensure that no UML figures have labels conflicting with their arrows} - In this section, we describe the types of biological design data that can belong to an SBOL document and the relationships between these data types. The SBOL data model is specified using Unified Modeling Language (UML) 2.0 diagrams \href{http://www.omg.org/spec/UML/2.0/}{(OMG 2005)}. Subsections \ref{sec:umldiagrams}, \ref{sec:nameconventions}, \ref{sec:datatypes} review the basics of UML diagrams and explain the naming conventions and generic data types used in this specification. The remaining sections then describe the SBOL data model in detail. Complete SBOL examples and best practices when using the standard can be found in \ref{sec:examples} and \ref{sec:bestpractices}, respectively. \subsection{Understanding the UML Diagrams} @@ -95,8 +93,6 @@ \subsection{Data Types} \subsection{Identified} \label{sec:Identified} -\NVtodo{Put a small concrete example for each toplevel, in the style of the mapsTo diagram} - All SBOL-defined classes are directly or indirectly derived from the \sbol{Identified} abstract class. This inheritance means that all SBOL objects are uniquely identified using \sbol{URI}s that uniquely refer to these objects within an SBOL document or at locations on the World Wide Web. @@ -270,7 +266,6 @@ \subsubsection*{The \sbolheading{encoding} property} \ref{tbl:sequence_encodings} provides a list of RECOMMENDED \sbol{URI}s for the \sbol{encoding} property. The terms in \ref{tbl:sequence_encodings} are organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that typically refer to a \sbol{Sequence} with such an \sbol{encoding}. When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \sbol{URI}s in \ref{tbl:sequence_encodings}, it MUST use that \sbol{URI} for this property. -\NVtodo{revisit for next version of the spec. We looked at EDAM on NCBO as a nice example that integrates many ontologies in biology. This could be a possible way to simplify to one ontology source rathern than many as a best practice - KC} %A Summary of letters for nucleic acids and aminoacids \begin{table}[ht] \begin{edtable}{tabular}{lll} @@ -387,8 +382,6 @@ \subsubsection*{The \sbolheading{roles} property} \label{tbl:componentdefinition_roles} \end{table} -\NVtodo{Goksel to replace URI for Transcription Factor role with something more appropriate (currently is URI for the term ``transcription activity.''} - \subsubsection*{The \sbolheading{sequences} property} \label{sec:sequences} The \sbol{sequences} property is OPTIONAL and MAY include a set of \sbol{URI}s that refer to \sbol{Sequence} objects. These objects define the primary structure of the \sbol{ComponentDefinition}. @@ -876,8 +869,6 @@ \subsubsection{SequenceConstraint} The \sbol{restriction} property is REQUIRED and has a data type of \sbol{URI}. This property is used to indicate the type of structural restriction on the relative, sequence-based positions or orientations of the \sbol{subject} and \sbol{object} \sbol{Component} objects. The \sbol{URI} value of this property SHOULD come from the RECOMMENDED \sbol{URI}s in \ref{tbl:restriction_types}. -\Ctodo{Per Mike B comment: changed ``MUST ... or an [ill-defined] appropriate ontology'' to SHOULD, since that's the same. -JSB I'm not sure about this. I think it is MUST, as these are the only ones we allow right now. Same for all enumerated types we have defined. -CJM I agree with CJM. The original wording was problematic because it said 'restrictions MUST come from table 7 or anywhere else,' which we've simplified to a SHOULD. But implementors need a solid definition of each option, and a complete enumeration of options, because a hard constraint MUST never be disobeyed -- and that means that implementors MUST enforce all constraints. So this can't be open-ended. -MB So the outstanding question is do we want to make this SHOULD or MUST? -CJM} - % Note: With regards to SBOL Version 1.1., this is a generalization of former \sbol{SequenceAnnotation} property \external{precedes}. \begin{table}[ht] @@ -894,8 +885,6 @@ \subsubsection{SequenceConstraint} \label{tbl:restriction_types} \end{table} -\NVtodo{We need things like nextTo and overlapping, and think we might be able to get it from region-connection-calculus ontology} - \paragraph{Serialization} The serialization of a \sbol{SequenceConstraint} MUST have the following form: @@ -1561,8 +1550,6 @@ \subsubsection*{Serialization} \section{Mapping Between SBOL 1.1 and SBOL 2.0} \label{sec:mapping} -\Rtodo{I moved this into its own section after data model, since I believe it makes the most sense after the data model is explained, and though short is perhaps important enough for its own section. Open to moving this further down, if need be. -CJM} - Figure~\ref{SBOL1TO2} depicts the mapping between SBOL 1.1 data objects and SBOL 2.0 data objects. Collections of DNA components map to Collections of ComponentDefinitions, among other top level SBOL objects. DnaComponents map to ComponentDefinitions of type DNA. DnaSequences map to Sequences using the IUPAC encoding for nucleotide sequences. SequenceAnnotations with precise start and end positions are mapped to SequenceAnnotations with Range Locations, while SequenceAnnotations with imprecise positions are mapped to SequenceAnnotations with GenericLocations. Each Sequence Annotation also maps to a Component, which in SBOL 2.0 represents the instantiation or usage of a given ComponentDefinition. Finally, precedes relationships map to SequenceConstraints that specify precedes restrictions. \begin{figure*}[h] diff --git a/relation.tex b/relation.tex index 89af1e9d..f7d82b25 100644 --- a/relation.tex +++ b/relation.tex @@ -1,7 +1,5 @@ \section{Relation to other BBF RFCs} -\Rtodo{Just added this section; needs review -JSB Looks fine, just need the new number -CJM} - BBF RFC \rfcnum{} replaces BBF RFC 87 (the SBOL 1.1 standard). BBF RFC \rfcnum{} updates BBF RFC 30 (RDF-based framework for synthetic biology data), as it proposes a standard conforming to BBF RFC 30. diff --git a/sbol2.tex b/sbol2.tex index eaf68be8..716ae798 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -1,7 +1,6 @@ \documentclass[draftspec]{sbmlpkgspec} \usepackage{microtype} \usepackage{color} -\usepackage[]{todonotes} % preface with "disable" to hide todo notes %% ============================================================================ %% Description: Documentation for sbmlpkgspec.cls @@ -89,14 +88,6 @@ \newcommand{\sbol}[1]{\texttt{\hyperref[sec:#1]{#1}}} \newcommand{\sbolmult}[2]{\texttt{\hyperref[sec:#1]{#2}}} \newcommand{\refObj}[1]{$\langle$#1$\rangle$} -% Decision vs. Low-Priority Decision vs. Clarification TODOs: -\newcommand{\Dtodo}[1]{\todo[inline,color=red]{#1}} -\newcommand{\LDtodo}[1]{\todo[inline,color=yellow]{#1}} -\newcommand{\Ctodo}[1]{\todo[inline,color=cyan]{#1}} -% Resolved but still awaiting review: -\newcommand{\Rtodo}[1]{\todo[inline,color=green]{#1}} -% Deferred to the next (minor) version -\newcommand{\NVtodo}[1]{\todo[inline,color=blue]{#1}} %Command to format external terms in the document \newcommand{\external}[1]{\texttt{#1}} From ac9e271226ee8fafe78f3ab8af45f84c37d5817e Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Wed, 1 Jul 2015 15:19:51 +0000 Subject: [PATCH 288/317] v17 --- apdx-validation.tex | 2 +- model.tex | 7 +++---- practices.tex | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 4aa5bae1..4c4346a8 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -157,7 +157,7 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{The \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{If the \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} must not contain two or more \sbol{SequenceAnnotation} objects that refer to the same \sbol{Component}.\\ Reference: \sec{sec:ComponentDefinition}} +\printValid{The \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} MUST NOT contain two or more \sbol{SequenceAnnotation} objects that refer to the same \sbol{Component}.\\ Reference: \sec{sec:ComponentDefinition}} \printModeling{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{SequenceAnnotation} that includes a \sbol{Range} and/or \sbol{Cut} in the \sbol{sequenceAnnotations} property of the \sbol{ComponentDefinition} SHOULD specify a region on the \sbol{elements} of this \sbol{Sequence}.\\ Reference: \sec{sec:ComponentDefinition}} diff --git a/model.tex b/model.tex index f2830884..4c58c7ae 100644 --- a/model.tex +++ b/model.tex @@ -418,7 +418,7 @@ \subsubsection*{The \sbolheading{sequenceAnnotations} property} The \sbol{sequenceAnnotations} property is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects. Each \sbol{SequenceAnnotation} specifies and describes a potentially discontiguous region on the \sbol{Sequence} objects referred to by the \sbol{ComponentDefinition}. -In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at the region specified by its \sbol{Location} objects (see \ref{sec:Location}). If more than one \sbol{SequenceAnnotation} refers to a \sbol{Component} in this manner, then they MUST NOT specify conflicting regions. That is, their \sbol{Location} objects MUST NOT specify regions that have conflicting \sbol{orientation} properties or occupy non-overlapping positions. +In addition, each \sbol{SequenceAnnotation} can position a \sbol{Component} of the \sbol{ComponentDefinition} at the region specified by its \sbol{Location} objects (see \ref{sec:Location}). The \sbol{sequenceAnnotations} property MUST NOT contain two or more \sbol{SequenceAnnotation} objects that refer to the same \sbol{Component} in this way. Finally, as a best practice, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each of its \sbol{SequenceAnnotation} objects that contains a \sbol{Range} or \sbol{Cut} SHOULD specify a region on the \sbol{elements} of this \sbol{Sequence}. For example, the \sbol{ComponentDefinition} of a eukaryotic gene could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. In order to specify the discontiguous region occupied by its CDS, this gene \sbol{ComponentDefinition} would need a \sbol{SequenceAnnotation} that contains one or more \sbol{Range} objects, each one specifying \sbol{start} and \sbol{end} positions that correspond to indices of the \sbol{elements} of its DNA \sbol{Sequence}. @@ -970,7 +970,7 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - + ... [\emph{properties inherited from identified}] ... [\emph{one}] [\emph{element}] [\emph{one}] [\emph{element}] @@ -1557,5 +1557,4 @@ \section{Mapping Between SBOL 1.1 and SBOL 2.0} \includegraphics[width=\textwidth]{images/sbol_v1_to_v2} \end{center} \caption{\label{SBOL1TO2}The mapping from the SBOL 1.1 data model to the SBOL 2.0 data model.} -\end{figure*} - +\end{figure*} \ No newline at end of file diff --git a/practices.tex b/practices.tex index f6657995..3611b1e5 100644 --- a/practices.tex +++ b/practices.tex @@ -89,4 +89,4 @@ \subsection{Recommended Ontologies for External Terms} \end{edtable} \caption{Preferred external resources from which to draw values for various SBOL properties.} \label{tbl:preferred_external_resources} -\end{table} +\end{table} \ No newline at end of file From 4edaa419314858756a477abbf4d01a0680063d95 Mon Sep 17 00:00:00 2001 From: Goksel Misirli Date: Thu, 9 Jul 2015 16:20:22 +0000 Subject: [PATCH 289/317] v18 --- apdx-validation.tex | 4 +- examples_serialization.tex | 565 +++++++++++++++++++------------------ model.tex | 25 +- 3 files changed, 297 insertions(+), 297 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 4c4346a8..d2cc9ebd 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -22,7 +22,7 @@ \section{Validation Rules} ``This must be checked.'') \item[\hspace*{6.5pt}\cSymbol\csp] A \cSymbolName indicates a weak - REQUIRED condition for SBOL conformance. While this rule MUST be followed, it is difficult, if not impossible, for a machine to automatically check whether the rule has been followed. (Mnemonic intention behind the choice of symbol: ``This is a cause for warning.'') + REQUIRED condition for SBOL conformance. While this rule MUST be followed, it can be difficult, if not impossible, for a machine to automatically check whether the rule has been followed. (Mnemonic intention behind the choice of symbol: ``This is a cause for warning.'') \item[\hspace*{6.5pt}\mSymbol\msp] A \mSymbolName indicates a RECOMMENDED condition for following best practices. This rule is not strictly a matter of SBOL conformance, but its recommendation comes from logical @@ -153,7 +153,7 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{The \sbol{components} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{Component} objects.\\ Reference: \sec{sec:ComponentDefinition}} -\printModeling{If a \sbol{ComponentDefinition} in a \sbol{ComponentDefinition}-\sbol{Component} hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then the \sbol{elements} properties of these \sbol{Sequence} objects SHOULD be consistent with each other, such that well-defined mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding} (subject to any restrictions on the positions of \sbol{Component} objects in the hierarchy that are imposed by \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} objects).\\ Reference: \sec{sec:ComponentDefinition}} +\printModeling{If a \sbol{ComponentDefinition} in a \sbol{ComponentDefinition}-\sbol{Component} hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then the \sbol{elements} properties of these \sbol{Sequence} objects SHOULD be consistent with each other, such that well-defined mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding}. This mapping is also subject to any restrictions on the positions of the \sbol{Component} objects in the hierarchy that are imposed by the \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} objects contained by the \sbol{ComponentDefinition} objects in the hierarchy.\\ Reference: \sec{sec:ComponentDefinition}} \printValid{The \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects.\\ Reference: \sec{sec:ComponentDefinition}} diff --git a/examples_serialization.tex b/examples_serialization.tex index 9eeff1ed..428dfb7c 100644 --- a/examples_serialization.tex +++ b/examples_serialization.tex @@ -2,6 +2,7 @@ \section{Examples of Serialization} \label{ser:examples} % ----------------------------------------------------------------------------- +\subsection{Simple examples} \subsection{PoPS Receiver} @@ -248,40 +249,24 @@ \subsection{Toggle Switch} toggle_switch - - - LacI - + + + TetR + - - - TetR - + + + LacI + - - - - - laci_inverter - - - - - LacI_mapping - - - - - - - + @@ -292,8 +277,24 @@ \subsection{Toggle Switch} TetR_mapping - - + + + + + + + + + + laci_inverter + + + + + LacI_mapping + + + @@ -350,19 +351,19 @@ \subsection{Toggle Switch} tetr_inverter - - - promoter - + + + TF + - - - TF - + + + promoter + @@ -391,126 +392,78 @@ \subsection{Toggle Switch} - - - toogleswicth + + + toogleswitch - - - BBa_J61130 - BBa_J61101 RBS - RBS2 - - - - - - - pIKELeftCassette_1 - TetR Inverter - TetR Inverter + + + pIKE_Toggle_1 + LacI/TetR Toggle Switch + LacI/TetR Toggle Switch - - - ECK120029600 - - - - - - - - BBa_R0040 - - - - - - - - BBa_C0012 + + + pIKERightCassette_1 - + - - - BBa_J61101 + + + pIKELeftCassette_1 - + - - - anno3 - - - - range - 69 - 1197 - - - - - - - - - - anno4 - - - - range - 1198 - 1288 - - - - - - - - - + + anno2 - - - range - 56 - 68 + + + location2 + 1286 + 2834 - + - - + + anno1 - - - range + + + location1 1 - 55 + 1285 - + + + + BBa_J61130 + BBa_J61101 RBS + RBS2 + + + + BBa_C0012 @@ -581,6 +534,136 @@ \subsection{Toggle Switch} + + + pIKELeftCassette_1 + TetR Inverter + TetR Inverter + + + + + + ECK120029600 + + + + + + + + BBa_R0040 + + + + + + + + BBa_C0012 + + + + + + + + BBa_J61101 + + + + + + + + anno4 + + + + location4 + 1198 + 1288 + + + + + + + + + + anno2 + + + + location2 + 56 + 68 + + + + + + + + + + anno1 + + + + location1 + 1 + 55 + + + + + + + + + + anno3 + + + + location3 + 69 + 1197 + + + + + + + + + + BBa_J61101 + BBa_J61101 RBS + RBS1 + + + + + + + BBa_R0010 + pLacI + pLacI promoter + + + + + + + P42212 + GFP + GFP protein + + + pIKERightCassette_1 @@ -636,62 +719,14 @@ \subsection{Toggle Switch} - - - - anno3 - - - - range - 69 - 729 - - - - - - - - - - anno2 - - - - range - 56 - 68 - - - - - - - - - - anno4 - - - - range - 730 - 742 - - - - - - anno1 - - - range + + + location1 1 55 @@ -705,9 +740,9 @@ \subsection{Toggle Switch} anno5 - - - range + + + location5 743 1463 @@ -721,9 +756,9 @@ \subsection{Toggle Switch} anno6 - - - range + + + location6 1464 1554 @@ -732,89 +767,55 @@ \subsection{Toggle Switch} - - - - BBa_J61101 - BBa_J61101 RBS - RBS1 - - - - - - - BBa_R0010 - pLacI - pLacI promoter - - - - - - - pIKE_Toggle_1 - LacI/TetR Toggle Swicth - LacI/TetR Toggle Swicth - - - - - - pIKERightCassette_1 - - - - - - - - pIKELeftCassette_1 - - - - - - - anno1 + + + anno3 - - - range - 1 - 1285 + + + location3 + 69 + 729 - + - - + + + anno4 + + + + location4 + 730 + 742 + + + + + + + + + anno2 - - - range - 1286 - 2834 + + + location2 + 56 + 68 - + - - - P42212 - GFP - GFP protein - - - BBa_C0040 @@ -839,22 +840,22 @@ \subsection{Toggle Switch} BBa_E0040 - atgcgtaaaggagaagaacttttcactggagttgtcccaattcttgttgaattagatggtgatgttaatgg - gcacaaattttctgtcagtggagagggtgaaggtgatgcaacatacggaaaacttacccttaaatttatttgcactactggaaaac - tacctgttccatggccaacacttgtcactactttcggttatggtgttcaatgctttgcgagatacccagatcatatgaaacagcat - gactttttcaagagtgccatgcccgaaggttatgtacaggaaagaactatatttttcaaagatgacgggaactacaagacacgtgc - tgaagtcaagtttgaaggtgatacccttgttaatagaatcgagttaaaaggtattgattttaaagaagatggaaacattcttggac - acaaattggaatacaactataactcacacaatgtatacatcatggcagacaaacaaaagaatggaatcaaagttaacttcaaaatt - agacacaacattgaagatggaagcgttcaactagcagaccattatcaacaaaatactccaattggcgatggccctgtccttttacc - agacaaccattacctgtccacacaatctgccctttcgaaagatcccaacgaaaagagagaccacatggtccttcttgagtttgtaa - cagctgctgggattacacatggcatggatgaactatacaaataataa + atgcgtaaaggagaagaacttttcactggagttgtcccaattcttgttgaattagatggtgatgttaatgggcac + aaattttctgtcagtggagagggtgaaggtgatgcaacatacggaaaacttacccttaaatttatttgcactactggaaaactacctgtt + ccatggccaacacttgtcactactttcggttatggtgttcaatgctttgcgagatacccagatcatatgaaacagcatgactttttcaag + agtgccatgcccgaaggttatgtacaggaaagaactatatttttcaaagatgacgggaactacaagacacgtgctgaagtcaagtttgaa + ggtgatacccttgttaatagaatcgagttaaaaggtattgattttaaagaagatggaaacattcttggacacaaattggaatacaactat + aactcacacaatgtatacatcatggcagacaaacaaaagaatggaatcaaagttaacttcaaaattagacacaacattgaagatggaagc + gttcaactagcagaccattatcaacaaaatactccaattggcgatggccctgtccttttaccagacaaccattacctgtccacacaatct + gccctttcgaaagatcccaacgaaaagagagaccacatggtccttcttgagtttgtaacagctgctgggattacacatggcatggatgaa + ctatacaaataataa ECK120033736 - ttcagccaaaaaacttaagaccgccggtcttgtccactaccttgcagtaatgcggtggacaggatcggcggtt - ttcttttctcttctcaa + ttcagccaaaaaacttaagaccgccggtcttgtccactaccttgcagtaatgcggtggacaggatcggcggtttt + cttttctcttctcaa @@ -878,41 +879,41 @@ \subsection{Toggle Switch} BBa_C0040 - atgtccagattagataaaagtaaagtgattaacagcgcattagagctgcttaatgaggtcggaatcgaagg - tttaacaacccgtaaactcgcccagaagctaggtgtagagcagcctacattgtattggcatgtaaaaaataagcgggctttgctcg - acgccttagccattgagatgttagataggcaccatactcacttttgccctttagaaggggaaagctggcaagattttttacgtaat - aacgctaaaagttttagatgtgctttactaagtcatcgcgatggagcaaaagtacatttaggtacacggcctacagaaaaacagta - tgaaactctcgaaaatcaattagcctttttatgccaacaaggtttttcactagagaatgcattatatgcactcagcgctgtggggc - attttactttaggttgcgtattggaagatcaagagcatcaagtcgctaaagaagaaagggaaacacctactactgatagtatgccg - ccattattacgacaagctatcgaattatttgatcaccaaggtgcagagccagccttcttattcggccttgaattgatcatatgcgg - attagaaaaacaacttaaatgtgaaagtgggtccgctgcaaacgacgaaaactacgctttagtagcttaataa + atgtccagattagataaaagtaaagtgattaacagcgcattagagctgcttaatgaggtcggaatcgaaggttta + acaacccgtaaactcgcccagaagctaggtgtagagcagcctacattgtattggcatgtaaaaaataagcgggctttgctcgacgcctta + gccattgagatgttagataggcaccatactcacttttgccctttagaaggggaaagctggcaagattttttacgtaataacgctaaaagt + tttagatgtgctttactaagtcatcgcgatggagcaaaagtacatttaggtacacggcctacagaaaaacagtatgaaactctcgaaaat + caattagcctttttatgccaacaaggtttttcactagagaatgcattatatgcactcagcgctgtggggcattttactttaggttgcgta + ttggaagatcaagagcatcaagtcgctaaagaagaaagggaaacacctactactgatagtatgccgccattattacgacaagctatcgaa + ttatttgatcaccaaggtgcagagccagccttcttattcggccttgaattgatcatatgcggattagaaaaacaacttaaatgtgaaagt + gggtccgctgcaaacgacgaaaactacgctttagtagcttaataa BBa_C0012 - atggtgaatgtgaaaccagtaacgttatacgatgtcgcagagtatgccggtgtctcttatcagaccgtttccc - gcgtggtgaaccaggccagccacgtttctgcgaaaacgcgggaaaaagtggaagcggcgatggcggagctgaattacattcccaaccg - cgtggcacaacaactggcgggcaaacagtcgttgctgattggcgttgccacctccagtctggccctgcacgcgccgtcgcaaattgtc - gcggcgattaaatctcgcgccgatcaactgggtgccagcgtggtggtgtcgatggtagaacgaagcggcgtcgaagcctgtaaagcgg - cggtgcacaatcttctcgcgcaacgcgtcagtgggctgatcattaactatccgctggatgaccaggatgccattgctgtggaagctgc - ctgcactaatgttccggcgttatttcttgatgtctctgaccagacacccatcaacagtattattttctcccatgaagacggtacgcga - ctgggcgtggagcatctggtcgcattgggtcaccagcaaatcgcgctgttagcgggcccattaagttctgtctcggcgcgtctgcgtc - tggctggctggcataaatatctcactcgcaatcaaattcagccgatagcggaacgggaaggcgactggagtgccatgtccggttttca - acaaaccatgcaaatgctgaatgagggcatcgttcccactgcgatgctggttgccaacgatcagatggcgctgggcgcaatgcgcgcc - attaccgagtccgggctgcgcgttggtgcggatatctcggtagtgggatacgacgataccgaagacagctcatgttatatcccgccgt - taaccaccatcaaacaggattttcgcctgctggggcaaaccagcgtggaccgcttgctgcaactctctcagggccaggcggtgaaggg - caatcagctgttgcccgtctcactggtgaaaagaaaaaccaccctggcgcccaatacgcaaaccgcctctccccgcgcgttggccgat - tcattaatgcagctggcacgacaggtttcccgactggaaagcgggcaggctgcaaacgacgaaaactacgctttagtagcttaataa + atggtgaatgtgaaaccagtaacgttatacgatgtcgcagagtatgccggtgtctcttatcagaccgtttcccgc + gtggtgaaccaggccagccacgtttctgcgaaaacgcgggaaaaagtggaagcggcgatggcggagctgaattacattcccaaccgcgtg + gcacaacaactggcgggcaaacagtcgttgctgattggcgttgccacctccagtctggccctgcacgcgccgtcgcaaattgtcgcggcg + attaaatctcgcgccgatcaactgggtgccagcgtggtggtgtcgatggtagaacgaagcggcgtcgaagcctgtaaagcggcggtgcac + aatcttctcgcgcaacgcgtcagtgggctgatcattaactatccgctggatgaccaggatgccattgctgtggaagctgcctgcactaat + gttccggcgttatttcttgatgtctctgaccagacacccatcaacagtattattttctcccatgaagacggtacgcgactgggcgtggag + catctggtcgcattgggtcaccagcaaatcgcgctgttagcgggcccattaagttctgtctcggcgcgtctgcgtctggctggctggcat + aaatatctcactcgcaatcaaattcagccgatagcggaacgggaaggcgactggagtgccatgtccggttttcaacaaaccatgcaaatg + ctgaatgagggcatcgttcccactgcgatgctggttgccaacgatcagatggcgctgggcgcaatgcgcgccattaccgagtccgggctg + cgcgttggtgcggatatctcggtagtgggatacgacgataccgaagacagctcatgttatatcccgccgttaaccaccatcaaacaggat + tttcgcctgctggggcaaaccagcgtggaccgcttgctgcaactctctcagggccaggcggtgaagggcaatcagctgttgcccgtctca + ctggtgaaaagaaaaaccaccctggcgcccaatacgcaaaccgcctctccccgcgcgttggccgattcattaatgcagctggcacgacag + gtttcccgactggaaagcgggcaggctgcaaacgacgaaaactacgctttagtagcttaataa ECK120029600 - ttcagccaaaaaacttaagaccgccggtcttgtccactaccttgcagtaatgcggtggacaggatcggcggtt - ttcttttctcttctcaa + ttcagccaaaaaacttaagaccgccggtcttgtccactaccttgcagtaatgcggtggacaggatcggcggtttt + cttttctcttctcaa + \end{lstlisting} \ No newline at end of file diff --git a/model.tex b/model.tex index 4c58c7ae..d494b3f7 100644 --- a/model.tex +++ b/model.tex @@ -264,7 +264,7 @@ \subsubsection*{The \sbolheading{encoding} property} For example, the \sbol{elements} property of a \sbol{Sequence} with an \external{IUPAC DNA} encoding property MUST contain characters that represent nucleotide bases, such as {\tt a}, {\tt t}, {\tt c}, and {\tt g}. The \sbol{elements} property of a \sbol{Sequence} with a \external{Simplified Molecular-Input Line-Entry System (SMILES)} encoding, on the other hand, MUST contain characters that represent atoms and chemical bonds, such as {\tt C}, {\tt N}, {\tt O}, and {\tt =}. -\ref{tbl:sequence_encodings} provides a list of RECOMMENDED \sbol{URI}s for the \sbol{encoding} property. The terms in \ref{tbl:sequence_encodings} are organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that typically refer to a \sbol{Sequence} with such an \sbol{encoding}. When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \sbol{URI}s in \ref{tbl:sequence_encodings}, it MUST use that \sbol{URI} for this property. +\ref{tbl:sequence_encodings} provides a list of possible \sbol{URI} values for the \sbol{encoding} property. The terms in \ref{tbl:sequence_encodings} are organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that typically refer to a \sbol{Sequence} with such an \sbol{encoding}. When the \sbol{encoding} of a \sbol{Sequence} is well described by one of the \sbol{URI}s in \ref{tbl:sequence_encodings}, it MUST contain that \sbol{URI}. %A Summary of letters for nucleic acids and aminoacids \begin{table}[ht] @@ -277,7 +277,7 @@ \subsubsection*{The \sbolheading{encoding} property} SMILES & \url{http://www.opensmiles.org/opensmiles.html} & SmallMolecule \\ \bottomrule \end{edtable} - \caption{RECOMMENDED \sbol{URI}s for specifying the \sbol{encoding} property of a \sbol{Sequence}, organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that typically refer to a \sbol{Sequence} with such an \sbol{encoding}.} + \caption{\sbol{URI}s for specifying the \sbol{encoding} property of a \sbol{Sequence}, organized by the type of \sbol{ComponentDefinition} (see \ref{tbl:componentdefinition_types}) that typically refer to a \sbol{Sequence} with such an \sbol{encoding}.} \label{tbl:sequence_encodings} \end{table} @@ -330,7 +330,7 @@ \subsubsection*{The \sbolheading{types} property} The \sbolmult{types:CD}{types} property is a REQUIRED set of \sbol{URI}s that specifies the category of biochemical or physical entity (for example DNA, protein, or small molecule) that a \sbol{ComponentDefinition} object abstracts for the purpose of engineering design. The \sbolmult{types:CD}{types} property of every \sbol{ComponentDefinition} MUST contain one or more \sbol{URI}s that MUST identify terms from appropriate ontologies, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). -\ref{tbl:componentdefinition_types} provides a list of RECOMMENDED ontology terms for the \sbolmult{types:CD}{types} property and their \sbol{URI}s. +\ref{tbl:componentdefinition_types} provides a list of possible ontology terms for the \sbolmult{types:CD}{types} property and their \sbol{URI}s. In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use the \external{URI} for that term as one of its \sbolmult{types:CD}{types}. Finally, if the \sbolmult{types:CD}{types} property contains multiple \sbol{URI}s, then they MUST identify non-conflicting terms (otherwise, it may not be clear how to interpret them). For example, the BioPAX terms provided by \ref{tbl:componentdefinition_types} would conflict because they specify classes of biochemical entities with different molecular structures. @@ -347,7 +347,7 @@ \subsubsection*{The \sbolheading{types} property} Complex & \url{http://www.biopax.org/release/biopax-level3.owl#Complex}\\ \bottomrule \end{edtable} - \caption{RECOMMENDED BioPAX terms to specify the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition}.} + \caption{BioPAX terms to specify the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition}.} \label{tbl:componentdefinition_types} \end{table} @@ -358,7 +358,7 @@ \subsubsection*{The \sbolheading{roles} property} The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MAY contain one or more \sbol{URI}s that MUST identify terms from ontologies that are consistent with the \sbolmult{types:CD}{types} property of the \sbol{ComponentDefinition}. For example, the \sbolmult{roles:CD}{roles} property of a DNA or RNA \sbol{ComponentDefinition} could contain \sbol{URI}s identifying terms from the Sequence Ontology (SO). -\ref{tbl:componentdefinition_roles} contains a list of RECOMMENDED ontology terms for the \sbolmult{roles:CD}{roles} property and their \sbol{URI}s. +\ref{tbl:componentdefinition_roles} contains a list of possible ontology terms for the \sbolmult{roles:CD}{roles} property and their \sbol{URI}s. These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). Any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use the \external{URI} for that term as one of its \sbolmult{roles:CD}{roles}. @@ -378,7 +378,7 @@ \subsubsection*{The \sbolheading{roles} property} Effector & \url{http://identifiers.org/chebi/CHEBI:35224} & Small Molecule \\ \bottomrule \end{edtable} - \caption{RECOMMENDED ontology terms to specify the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition}, organized by the type of \sbol{ComponentDefinition} to which they should apply (see \ref{tbl:componentdefinition_types}).} + \caption{Ontology terms to specify the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition}, organized by the type of \sbol{ComponentDefinition} to which they should apply (see \ref{tbl:componentdefinition_types}).} \label{tbl:componentdefinition_roles} \end{table} @@ -388,24 +388,23 @@ \subsubsection*{The \sbolheading{sequences} property} Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the structure of a DNA \sbol{ComponentDefinition}, one that represents its structure at the level of nucleotide bases and one that represents its structure at the level of atoms and bonds. -If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects SHOULD be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. In addition, if a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} with the same \sbol{encoding}, then the \sbol{elements} of these \sbol{Sequence} objects SHOULD have equal lengths. These best practices are intended to make it easier for software tools to locate any regions specified by the \sbol{SequenceAnnotation} objects of a \sbol{ComponentDefinition} on its associated \sbol{Sequence} objects, as well as validate whether its \sbol{Sequence} objects are consistent with those associated with any \sbol{ComponentDefinition} objects that it may compose via its \sbol{Component} objects. +If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. Furthermore, these objects MUST NOT have conflicting \sbol{encoding} properties. For example, the \external{IUPAC} \sbol{encoding} properties provided by \ref{tbl:sequence_encodings} conflict with each other because they do not specify how to encode the same class of biochemical entity. The \external{SMILES} \sbol{encoding}, however, does not conflict with them because it specifies how to encode biochemical entities in general, which includes DNA, RNA, and proteins. If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} with the same \sbol{encoding}, then the \sbol{elements} of these \sbol{Sequence} objects SHOULD have equal lengths. These requirements and best practices are intended to make it easier for software tools to locate any regions specified by the \sbol{SequenceAnnotation} objects of a \sbol{ComponentDefinition} on its associated \sbol{Sequence} objects, as well as validate whether its \sbol{Sequence} objects are consistent with those associated with any \sbol{ComponentDefinition} objects that it composes via its \sbol{Component} objects. -Finally, a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \sbol{encoding} properties. For example, the \external{IUPAC} \sbol{encoding} properties provided by \ref{tbl:sequence_encodings} conflict with each other because they do not specify how to encode the same class of biochemical entity. The \external{SMILES} \sbol{encoding}, however, does not conflict with them because it specifies how to encode biochemical entities in general, which includes DNA, RNA, and proteins. In addition, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbolmult{types:CD}{types} property refers to a term from \ref{tbl:componentdefinition_types}, then one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this term in \ref{tbl:sequence_encodings}. +Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbolmult{types:CD}{types} property refers to a term from \ref{tbl:componentdefinition_types}, then one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this term in \ref{tbl:sequence_encodings}. Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbolmult{types:CD}{types} property MUST refer to the term from \ref{tbl:componentdefinition_types} that is cross-listed with this \sbol{encoding} in \ref{tbl:sequence_encodings}. -For example, if the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}, then its \sbolmult{types:CD}{types} property must refer to the BioPAX term for DNA. +For example, if the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}, then its \sbolmult{types:CD}{types} property must refer to the BioPAX term for DNA. These requirements are meant to provide for some degree of consistency between the \sbol{types} property of a \sbol{ComponentDefinition} and the \sbol{encoding} properties of the \sbol{Sequence} objects to which it refers. \subsubsection*{The \sbolheading{components} property} \label{sec:components} -The \sbol{components} property is OPTIONAL and MAY specify a set of \sbol{Component} objects that are contained by the \sbol{ComponentDefinition}. -Note that the set of relations between \sbol{Component} and \sbol{ComponentDefinition} objects is strictly acyclic. +The \sbol{components} property is OPTIONAL and MAY specify a set of \sbol{Component} objects that are contained by the \sbol{ComponentDefinition}. The set of relations between \sbol{Component} and \sbol{ComponentDefinition} objects is strictly acyclic (see \ref{sec:ComponentInstance}). While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple instances of a particular part (defined by reference to the same \sbol{ComponentDefinition}). For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \sbol{ComponentDefinition} of a CDS. -In this way, the \sbol{components} property can be used to construct a hierarchy of \sbol{ComponentDefinition} objects. If a \sbol{ComponentDefinition} in the hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then the \sbol{elements} properties of these \sbol{Sequence} objects SHOULD be consistent with each other, such that well-defined mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding} (subject to any restrictions on the positions of \sbol{Component} objects in the hierarchy that are imposed by \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} objects). +The \sbol{components} properties of \sbol{ComponentDefinition} objects can be used to construct a hierarchy of \sbol{ComponentDefinition} and \sbol{Component} objects. If a \sbol{ComponentDefinition} in the hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then the \sbol{elements} properties of these \sbol{Sequence} objects SHOULD be consistent with each other, such that well-defined mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding}. This mapping is also subject to any restrictions on the positions of the \sbol{Component} objects in the hierarchy that are imposed by the \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} objects contained by the \sbol{ComponentDefinition} objects in the hierarchy. -A DNA \sbol{ComponentDefinition}, for example, could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} of ``{\tt gattaca}.'' In turn, this \sbol{ComponentDefinition} could contain a \sbol{Component} that refers to a ``lower level'' \sbol{ComponentDefinition} that also refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. Consequently, the \sbol{elements} \external{String} of this ``lower level'' \sbol{Sequence} could be ``{\tt gatta}," or perhaps ``{\tt tgta}'' if the \sbol{Component} is positioned by a \sbol{SequenceAnnotation} that contains a \sbol{Location} with an \sbol{orientation} of ``reverse complement'' (see \ref{sec:Location}). +A DNA \sbol{ComponentDefinition}, for example, could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} of ``{\tt gattaca}.'' In turn, this \sbol{ComponentDefinition} could contain a \sbol{Component} that refers to a ``lower level'' \sbol{ComponentDefinition} that also refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. Consequently, a consistent \sbol{elements} \external{String} of this ``lower level'' \sbol{Sequence} could be ``{\tt gatta}," or perhaps ``{\tt tgta}'' if the \sbol{Component} is positioned by a \sbol{SequenceAnnotation} that contains a \sbol{Location} with an \sbol{orientation} of ``reverse complement'' (see \ref{sec:Location}). % If the \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC} \sbol{encoding} from \ref{tbl:sequence_encodings}, then each \sbol{Component} in its \sbol{components} property MUST refer to a \sbol{ComponentDefinition} that refers to a \sbol{Sequence} with the same \sbol{encoding}. % In addition, it MUST be possible to align the \sbol{elements} of the latter \sbol{Sequence} objects to the \sbol{elements} of the \sbol{ComponentDefinition}'s \sbol{Sequence}, subject to any restrictions imposed by the \sbol{SequenceAnnotation} and \sbol{SequenceConstraint} objects that refer to the contents of the \sbol{components} property. From 8a161806eb805113d35ca282edf922b686b34672 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Wed, 15 Jul 2015 15:57:18 +0000 Subject: [PATCH 290/317] Update on Overleaf. --- apdx-validation.tex | 33 +++-- examples_serialization.tex | 290 ++++++++++++++++++++++++++++++++++++- model.tex | 7 +- 3 files changed, 307 insertions(+), 23 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index d2cc9ebd..9499a2d2 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -106,10 +106,10 @@ \subsubsection*{Rules for the \class{Sequence} class} \printValid{The \sbol{encoding} property of \sbol{Sequence} is REQUIRED and MUST contain a \external{URI}.\\ Reference: \sec{sec:Sequence}} -\printWarning{The \sbol{encoding} property of a \sbol{Sequence} MUST contain a \external{URI} from \ref{tbl:sequence_encodings} if it is well-described by this \external{URI}.\\ Reference: \sec{sec:Sequence}} - \printWarning{The \sbol{elements} property of a \sbol{Sequence} MUST be consistent with its \sbol{encoding} property.\\ Reference: \sec{sec:Sequence}} +\printWarning{The \sbol{encoding} property of a \sbol{Sequence} MUST contain a \external{URI} from \ref{tbl:sequence_encodings} if it is well-described by this \external{URI}.\\ Reference: \sec{sec:Sequence}} + \subsubsection*{Rules for the \class{ComponentDefinition} class} \setcounter{sbolCtr}{10501} @@ -119,31 +119,32 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST NOT contain more than one \external{URI} from \ref{tbl:componentdefinition_types}.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_types} if it is well-described by this \external{URI}.\\ Reference: \sec{sec:ComponentDefinition}} - \printWarning{Each \external{URI} contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that describes the category of biochemical or physical entity that is represented by the \sbol{ComponentDefinition}.\\ Reference: \sec{sec:ComponentDefinition}} +\printWarning{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_types} if it is well-described by this \external{URI}.\\ Reference: \sec{sec:ComponentDefinition}} + \printWarning{All \external{URI}s contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to non-conflicting ontology terms.\\ Reference: \sec{sec:ComponentDefinition}} \printValid{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \external{URI}s.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_roles} if it is well-described by this \external{URI}.\\ Reference: \sec{sec:ComponentDefinition}} - \printWarning{Each \external{URI} contained by the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that clarifies the potential function of the \sbol{ComponentDefinition} in a biochemical or physical context.\\ Reference: \sec{sec:ComponentDefinition}} \printWarning{Each \external{URI} contained by the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that is consistent with its \sbolmult{types:CD}{types} property.\\ Reference: \sec{sec:ComponentDefinition}} -\printModeling{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} SHOULD only contain a \external{URI} provided in \ref{tbl:componentdefinition_roles} if one of its \sbolmult{types:CD}{types} is cross-listed with the \external{URI}.\\ Reference: \sec{sec:ComponentDefinition}} +\printWarning{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_roles} if it is well-described by this \external{URI}.\\ Reference: \sec{sec:ComponentDefinition}} + +\printModeling{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} SHOULD only contain a \external{URI} provided in \ref{tbl:componentdefinition_roles} if one of its \sbolmult{types:CD}{types} is cross-listed with this \external{URI}.\\ Reference: \sec{sec:ComponentDefinition}} \printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \external{URI} references to \sbol{Sequence} objects.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{Each \external{URI} in the set of \sbol{sequences} MUST reference a \sbol{Sequence} object.\\ Reference: \sec{sec:ComponentDefinition}} - -\printWarning{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \sbol{encoding} properties.\\ Reference: \sec{sec:ComponentDefinition}} +\printWarning{Each \external{URI} contained by the \sbol{sequences} property of a \sbol{ComponentDefinition} MUST refer to a \sbol{Sequence} object.\\ Reference: \sec{sec:ComponentDefinition}} \printWarning{The \sbol{Sequence} objects referred to by the \sbol{sequences} property of a \sbol{ComponentDefinition} MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \external{IUPAC} \sbol{encoding} \external{URI}s from \ref{tbl:sequence_encodings}.\\ Reference: \sec{sec:ComponentDefinition}} +\printWarning{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \sbol{encoding} properties.\\ Reference: \sec{sec:ComponentDefinition}} + +% Redundant since subsumed by previous rule of equivalent strength +% \printWarning{The \sbol{sequences} property of a \sbol{ComponentDefinition} MUST NOT refer to \sbol{Sequence} objects with conflicting \external{IUPAC} \sbol{encoding} \external{URI}s from \ref{tbl:sequence_encodings}.\\ Reference: \sec{sec:ComponentDefinition}} \printWarning{If the \sbol{sequences} property of a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects, and one of the \sbolmult{types:CD}{types} of this \sbol{ComponentDefinition} comes from \ref{tbl:componentdefinition_types}, then one of the \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this type in \ref{tbl:sequence_encodings}.\\ Reference: \sec{sec:ComponentDefinition}} @@ -153,7 +154,7 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printValid{The \sbol{components} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{Component} objects.\\ Reference: \sec{sec:ComponentDefinition}} -\printModeling{If a \sbol{ComponentDefinition} in a \sbol{ComponentDefinition}-\sbol{Component} hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then the \sbol{elements} properties of these \sbol{Sequence} objects SHOULD be consistent with each other, such that well-defined mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding}. This mapping is also subject to any restrictions on the positions of the \sbol{Component} objects in the hierarchy that are imposed by the \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} objects contained by the \sbol{ComponentDefinition} objects in the hierarchy.\\ Reference: \sec{sec:ComponentDefinition}} +\printModeling{If a \sbol{ComponentDefinition} in a \sbol{ComponentDefinition}-\sbol{Component} hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then the \sbol{elements} properties of these \sbol{Sequence} objects SHOULD be consistent with each other, such that well-defined mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding} properties. This mapping is also subject to any restrictions on the positions of the \sbol{Component} objects in the hierarchy that are imposed by the \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} objects contained by the \sbol{ComponentDefinition} objects in the hierarchy.\\ Reference: \sec{sec:ComponentDefinition}} \printValid{The \sbol{sequenceAnnotations} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{SequenceAnnotation} objects.\\ Reference: \sec{sec:ComponentDefinition}} @@ -168,18 +169,18 @@ \subsubsection*{Rules for the \class{ComponentInstance} class} \printValid{A \sbol{ComponentInstance} MUST inherit all properties of the \sbol{Identified} class.\\ Reference: \sec{sec:ComponentInstance}} -\printValid{The \sbol{access} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \external{URI} from \ref{tbl:componentInstance_access} \\ Reference: \sec{sec:ComponentInstance}} - \printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \external{URI} reference to a \sbol{ComponentDefinition}.\\ Reference: \sec{sec:ComponentInstance}} -\printWarning{The \sbol{definition} property \external{URI} must reference a \sbol{ComponentDefinition} object.\\ Reference: \sec{sec:ComponentInstance}} - \printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} MUST NOT contain a \external{URI} reference to the \sbol{ComponentDefinition} that contains the \sbol{ComponentInstance}.\\ Reference: \sec{sec:ComponentInstance}} +\printWarning{The \external{URI} contained by the \sbolmult{definition:CI}{definition} property must refer to a \sbol{ComponentDefinition} object.\\ Reference: \sec{sec:ComponentInstance}} + \printWarning{\sbol{ComponentInstance} objects MUST NOT form circular reference chains via their \sbolmult{definition:CI}{definition} properties and parent \sbol{ComponentDefinition} objects.\\ Reference: \sec{sec:ComponentInstance}} \printValid{The \sbolmult{mapsTos:CI}{mapsTos} property of a \sbol{ComponentInstance} is OPTIONAL and MAY contain a set of \sbol{MapsTo} objects.\\ Reference: \sec{sec:ComponentInstance}} +\printValid{The \sbol{access} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \external{URI} from \ref{tbl:componentInstance_access} \\ Reference: \sec{sec:ComponentInstance}} + \subsubsection*{Rules for the \class{Component} class} \setcounter{sbolCtr}{10701} diff --git a/examples_serialization.tex b/examples_serialization.tex index 428dfb7c..6ef7b8ba 100644 --- a/examples_serialization.tex +++ b/examples_serialization.tex @@ -2,9 +2,293 @@ \section{Examples of Serialization} \label{ser:examples} % ----------------------------------------------------------------------------- -\subsection{Simple examples} +\subsection{Simple Examples} -\subsection{PoPS Receiver} +\subsubsection{Serializing Sequence Entities} +This example shows how to create \sbol{Sequence} entities. +\lstsetsbol +\begin{lstlisting} + + + + + BBa_J23119 + + ttgacagctagctcagtcctaggtataatgctagc + + + +\end{lstlisting} + + +\subsubsection{Serializing ComponentDefinition Entities} +This example shows how to create simple \sbol{ComponentDefinition} entities. A \sbol{ComponentDefinition} entity is created for a promoter part, and its nucleotide sequence is associated using a \sbol{Sequence} entity. +\lstsetsbol +\begin{lstlisting} + + + + + BBa_J23119 + + J23119 promoter + Constitutive promoter + + + + + + + + + BBa_J23119 + + ttgacagctagctcagtcctaggtataatgctagc + + + +\end{lstlisting} + +\subsubsection{Serializing SequenceConstraint Entities} + This example shows to add constraints between subcomponents of a \sbol{ComponentDefinition} entity using \sbol{SequenceConstraint} entities. In the example, a promoter has two subcomponents: a core promoter region and and a binding site. Using a \sbol{SequenceConstraint} entity, it is specified that the core promoter region precedes the binding site. +\lstsetsbol +\begin{lstlisting} + + + + + BBa_K174004 + pspac promoter + LacI repressible promoter + + + + + + r1 + + + + + + + + + pspac + constitutive promoter + pspac core promoter region + + + + + + LacI_operator + LacI operator + LacI binding site + + + + +\end{lstlisting} + +\subsubsection{Serializing Cut Location Entities} +This example shows how to use {@link org.sbolstandard.core2.Cut} entities to specify a cut location. +\lstsetsbol +\begin{lstlisting} + + + + + BBa_J23119 + + J23119 promoter + Constitutive promoter + + + + + + + cutat10 + + + + cut1 + 10 + + + + + + + + + cutat12 + + + + cut2 + 12 + + + + + + + + + + BBa_J23119 + + ttgacagctagctcagtcctaggtataatgctagc + + + +\end{lstlisting} + + +\subsubsection{Serializing Model Entities} +This example shows how to create \sbol{Model} entities. In the example, the \sbol{Model} entity refers to an ODE model in the SBML format. +\lstsetsbol +\begin{lstlisting} + + + + + pIKE_Toggle_1 + pIKE_Toggle_1 toggle switch + + + + + +\end{lstlisting} + +\subsubsection{Serializing ModuleDefinition Entities} +This example shows to create simple \sbol{ModuleDefinition} entities. The module includes an \sbol{Interaction} entity to represent the translation of a protein. +\lstsetsbol +\begin{lstlisting} + + + + + GFP_expression + + + + Constitutive_GFP + + + + + + + + + GFP_protein + + + + + + + + + express_GFP + + + + + Protein + + + + + + + CDS + + + + + + + + +\end{lstlisting} + +\subsubsection{Serializing Application Specific Data Within SBOL entities} +This example shows how to embed application specific custom data into SBOL documents. A \sbol{ComponentDefinition} entity, representing a promoter, is annotated with information about the promoter's sigma factor and how it is regulated. +\lstsetsbol +\begin{lstlisting} + + + + + BBa_J23119 + iGEM2006_Berkeley + + + + //rnap/prokaryote/ecoli/sigma70 + //regulation/constitutive + + + J23119 + Constitutive promoter + + + + +\end{lstlisting} + +\subsubsection{Serializing Application Specific Data Outside SBOL entities} +This example shows embedding custom application specific data into SBOL documents as top-level entities. Such data are represented using \sbol{GenericTopLevel} entities and can be referenced from other SBOL entities via custom annotations. +\lstsetsbol +\begin{lstlisting} + + + + + BBa_J23119 + + + J23119 + Constitutive promoter + + + + + + datasheet1 + + 1 + Datasheet 1 + + +\end{lstlisting} + + +\subsubsection{Serializing Collection Entities} +This examples shows how to create \sbol{Collection} entities. The Collection entity in the example is used to represent a library of promoters. +\lstsetsbol +\begin{lstlisting} + + + + + Anderson + Anderson promoters + The Anderson promoter collection + + + + +\end{lstlisting} + +\subsection{Complex Examples} + +\subsubsection{PoPS Receiver} This example shows the serialization of the PoPS Receiver device designed by Canton and co-workers~\cite{canton-natbio-2008}. In particular, this is a \sbol{ComponentDefinition} comprising five other \sbol{Component} objects to construct a detector for the cell-cell signaling molecule 3OC$_6$HSL. @@ -234,7 +518,7 @@ \subsection{PoPS Receiver} \end{lstlisting} -\subsection{Toggle Switch} +\subsubsection{Toggle Switch} This example shows the serialization of an SBOL data model for a LacI/TetR toggle switch similar to those constructed in \cite{Gardner2000}. This design is essentially similar to the one presented in \ref{sec:examples}, except that it uses some alternate groupings in how the total design is built up out of smaller entities. diff --git a/model.tex b/model.tex index d494b3f7..c0e54583 100644 --- a/model.tex +++ b/model.tex @@ -392,7 +392,7 @@ \subsubsection*{The \sbolheading{sequences} property} Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbolmult{types:CD}{types} property refers to a term from \ref{tbl:componentdefinition_types}, then one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this term in \ref{tbl:sequence_encodings}. Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbolmult{types:CD}{types} property MUST refer to the term from \ref{tbl:componentdefinition_types} that is cross-listed with this \sbol{encoding} in \ref{tbl:sequence_encodings}. -For example, if the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}, then its \sbolmult{types:CD}{types} property must refer to the BioPAX term for DNA. These requirements are meant to provide for some degree of consistency between the \sbol{types} property of a \sbol{ComponentDefinition} and the \sbol{encoding} properties of the \sbol{Sequence} objects to which it refers. +For example, if the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}, then its \sbolmult{types:CD}{types} property must refer to the BioPAX term for DNA. These requirements are meant to provide for some degree of consistency between the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} and the \sbol{encoding} properties of the \sbol{Sequence} objects to which it refers. \subsubsection*{The \sbolheading{components} property} \label{sec:components} @@ -402,7 +402,7 @@ \subsubsection*{The \sbolheading{components} property} While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple instances of a particular part (defined by reference to the same \sbol{ComponentDefinition}). For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \sbol{ComponentDefinition} of a CDS. -The \sbol{components} properties of \sbol{ComponentDefinition} objects can be used to construct a hierarchy of \sbol{ComponentDefinition} and \sbol{Component} objects. If a \sbol{ComponentDefinition} in the hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then the \sbol{elements} properties of these \sbol{Sequence} objects SHOULD be consistent with each other, such that well-defined mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding}. This mapping is also subject to any restrictions on the positions of the \sbol{Component} objects in the hierarchy that are imposed by the \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} objects contained by the \sbol{ComponentDefinition} objects in the hierarchy. +The \sbol{components} properties of \sbol{ComponentDefinition} objects can be used to construct a hierarchy of \sbol{ComponentDefinition} and \sbol{Component} objects. If a \sbol{ComponentDefinition} in such a hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then the \sbol{elements} properties of these \sbol{Sequence} objects SHOULD be consistent with each other, such that well-defined mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding} properties. This mapping is also subject to any restrictions on the positions of the \sbol{Component} objects in the hierarchy that are imposed by the \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} objects contained by the \sbol{ComponentDefinition} objects in the hierarchy. A DNA \sbol{ComponentDefinition}, for example, could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} of ``{\tt gattaca}.'' In turn, this \sbol{ComponentDefinition} could contain a \sbol{Component} that refers to a ``lower level'' \sbol{ComponentDefinition} that also refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. Consequently, a consistent \sbol{elements} \external{String} of this ``lower level'' \sbol{Sequence} could be ``{\tt gatta}," or perhaps ``{\tt tgta}'' if the \sbol{Component} is positioned by a \sbol{SequenceAnnotation} that contains a \sbol{Location} with an \sbol{orientation} of ``reverse complement'' (see \ref{sec:Location}). @@ -531,8 +531,7 @@ \subsubsection{ComponentInstance} \label{tbl:componentInstance_access} \end{table} -Unless a designer has a reason to prevent others from accessing the \sbol{ComponentInstance} when their design is reused, it is RECOMMENDED that the \sbol{access} property of the \sbol{ComponentInstance} be set to ``public.'' -For example, a designer who is concerned about retroactivity might set the \sbol{access} of the \sbol{ComponentInstance} to ``private'' in order to prevent others from specifying its \sbol{Participation} in a new \sbol{Interaction} as part of a composite design. +In some cases, a designer might want to set the \sbol{access} property of a \sbol{ComponentInstance} such that others cannot map to the \sbol{ComponentInstance} when they reuse its parent \sbol{ComponentDefinition}. For example, a designer who is concerned about retroactivity might set the \sbol{access} of the \sbol{ComponentInstance} to ``private'' in order to prevent its mapping to another \sbol{ComponentInstance} that participates in a new \sbol{Interaction} as part of a composite design. \paragraph{Serialization} From b0402eda417a95a0f4f6a8c31a8cf5cc38aab247 Mon Sep 17 00:00:00 2001 From: Anil Wipat Date: Tue, 21 Jul 2015 04:54:45 +0000 Subject: [PATCH 291/317] Update on Overleaf. --- example_uml/toggle_1.pdf | Bin 3413 -> 3414 bytes example_uml/toggle_2.pdf | Bin 4763 -> 4836 bytes example_uml/toggle_3.pdf | Bin 3852 -> 3882 bytes example_uml/toggle_4.pdf | Bin 5357 -> 5568 bytes images/sbol_v1_to_v2.pdf | Bin 4930 -> 4993 bytes model.tex | 8 ++++---- purpose.tex | 1 + uml/collection.pdf | Bin 1771 -> 1768 bytes uml/component_definition.pdf | Bin 2410 -> 2428 bytes uml/identified_annotations.pdf | Bin 2328 -> 2327 bytes uml/maps_to.pdf | Bin 1989 -> 1999 bytes uml/module.pdf | Bin 2008 -> 2007 bytes uml/module_definition.pdf | Bin 2379 -> 2399 bytes uml/sequence_annotation.pdf | Bin 2026 -> 2029 bytes uml/sequence_constraint.pdf | Bin 1986 -> 1990 bytes 15 files changed, 5 insertions(+), 4 deletions(-) diff --git a/example_uml/toggle_1.pdf b/example_uml/toggle_1.pdf index 98e0e5deb440a969d4eab864f8e063204b9d6eb1..f4649571ceb99a512589f7e1eaf088a8ea0b427e 100644 GIT binary patch delta 2610 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 diff --git a/example_uml/toggle_2.pdf b/example_uml/toggle_2.pdf index c1012d99147ea60d0420f8da90805978dbfc4180..b04b3c131fe00b088bd95b4d45e5cd73db3aa184 100644 GIT binary patch delta 4032 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 delta 3979 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 diff --git a/example_uml/toggle_4.pdf b/example_uml/toggle_4.pdf index 2cdb28298401a13256323abddbc0cb44bc3c1988..9959823b02e5f3a89a392745b209a24d777673c8 100644 GIT binary patch delta 4754 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 delta 3971 zcmZWsc{J4P|L;n!CE1f?-$`c1j4|1T!B|4bZtP^qQZx-8rficfJ2NOU_9gq4eJ|O` zzJ-u+qtaOF>n^`Pe)m4-`QtgS^PJZ?@AG=UUeEgp6YCUBkORPAWo7>WKWDTTeGqZT zdLjN}9V3v_*6EW*YKU$1I((^mFv_oq7p$NDF3{iQ66iP6u8{Q3oB3;7g{E=tr_rEb z|K8o@P=);vR*85Ce6IMfI?BmzZ$xik`J>16lQPOYJJX8m@=x>uc zi*GqimPVK!+`s)Ua4l!JwRLK!xzEVy#6O5r!Isi{9CGp)OSRzYtxYs-H$n{7Ey>UHr z&|r#OblxFSTEtv7p;qGtjCo<(^`eH|7AKTh;X6IOqV}_ibL`M)dr@YqVZf=!0yXva z7J6-20w6EzQ)8d>TVQ0SaeO%gsG5 ykqsaiaxYc1mO{;YB%amOA9KPDQVTi|@8O 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 YW@ZM4X-1PbvKeuhajB}h`nz!f0HF#&tpET3 delta 846 zcmaFC`+#e4GIh22}O{HmWh<=C}Fd)wq|um67=7x(=ZJC~z;M|!;b2D{yBom%GG zwYWSHC^EZ!{_pc(gHq#iDVuGF6fDFJnJlaIN;=kJX!Fb|mhb<;mrO_RW=m=0Es*_n zymrfBl?{hBaEI-*k+_(lYL_dW^>B6YzFkEHSG;a-&94xB-gf(M_RE;^zu)qI*3U4X zdwBL91>w#ehbs+ImbG6$$^GZw$Jr^Dv63 z0=J)deA#$!)jy_! zU1BmZ+bqVc!8kdbMRKwo5Ermi>zf%E8(12e7@O%Dn5Y{VsB7vw15-{(W`3SaVo9oo zi19TH4u| w16hfw#wq4WmMNBLW+tWvi54kIsVQlx76xV}sm7Dnu^Dk#a;d7i`nz!f0C)gVCjbBd diff --git a/uml/component_definition.pdf b/uml/component_definition.pdf index 42b5c02106b3761d6dbb4e04ed8b01447905a7d9..c289d7247523d8331bd7da3a12e06fc06bb21fb2 100644 GIT binary patch delta 1498 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 delta 1490 zcmZvZc{CIV9LJNRG3-|3${@2bv7$N5DIJ zFfh7+=WZLSVlCUYS~ctkhH%3k8a1&^RUQS1*?zkyUEN zkP#y~jjv7R6%=z?m*d@|xLZyO@o^t^8dv(7N9{KH>7tXyXH6o-?`p-HL|z(GAFE6f z720i?q`DS1AJ`db-K9bPO7|A=B)qQ1pTIgvUioA==K;2H(uU+oc4gK#O=5%`Vy{)+ zv~DbexUou%`XfDifqj_Pk>l#twbJ4yCsiWp@vi(qQH~?UvpzzH6b-IZAJFk_S%Rr6 z0aWMLVW`4gPH$%*-cm+a{XAYdM#%GR` zwNDw9)#^05uqQR81Ew{B1t#8<@u^xDL{g((wrBTphu@73u{tO!LOclA>PnLG4{G5Gd!h?R7L)4~G1u4==Yc6G+6c*U<;H&;~ zAU!jb#6(}LmTQM_VzzyD-(D4c7vn#}v*#!cEeL$b^_j;aCVvxE{YqRVJ zJMs^E#P_%Oy_4Q>u2Qwtu;F(Ru`-|TI~ zB|kZ|vjn0~bJf%u$p9Ga6P>t|X>R z9lm-)v1}RD(VBZ%OqaIj7Wq@^7U4b1z zez_@1488INQ%yHLHA*Jf3)499xj$Sk1r{&6MjG zKc(P~Wn+>RRK)Fj!80Ey+h$O#{=gb+NH7Y!|Ap>*M^CLg{#=c^FXt$?!|Ah3YI==z zg1MdQ`*0Up%~0*FIJk}(8JcoG7tL+2nVU4E?+ox(+{xzGrk_V?-qv;8{Hgw2r}^5c z6H{_oHW6ubZ*vziM8s$s)=@5GBPccNud`XRKe8;mw^`$DhAw3qL8?Rf+o!cdx^-X5 z9z1=$IZox#_8@P$gIeTFY<5ViE^AxJ@THLGL=96pf+qX=S76r0-bKXj0Zv+OZcgEC zy0EGnq~HtrX}Ot~8uE>|t9$ zUr2J81yah)q`hQI#Ykh|`fvjT28m(f4ypa8BOZ#x z)6f_k69mvYvwwp8A1W4Ou#bR4pqP;Ws5urv!s5s%gg*jlpznhuX91e@aqLDr*1RQOEK%sDGG;<7q1Ym(s=vjL!;NP-qqv8Mn diff --git a/uml/maps_to.pdf b/uml/maps_to.pdf index 2b0db63d96128b9bcd6e3d20e681c0b36f7a52e3..d4c52243404a988883aa3ded5ed904c628d0b166 100644 GIT binary patch delta 1047 zcmX@gf1ZDWX}yW5on3KBQEFl?SH+y8(@y5yHV|-l|A$NNHk0R$PNnLci)?xmoRdUt zSu7>C&9Rv9_6XmF`}&r5_L_Dl9Pcn${7~o8o`qj}_L+8g`z$?hmgR581=A`w7GtLm zcjj=uo1maG@9kGU+XeO+jT-;DCH|#`*(!N`5Z$#`xgzO~z08C9(s%A&&Y}mu)%Qu1 z2R&DbV7{iZQtq^OXYiyc7NU<2#mt`X>+<2OYSNTB;WM~$`#vuyOze}D606!06dSd8 zeaqIbdD?=lQiFE!6mVK&Mezp_GxEj$@PT$R&pX~U$hdOnlCgS zXkebl89LvlWsafq8OhZaN0_$ra(rG|5@5C7;J$i9m`0K~n|%MaeuizH4IA?I)H6Kz zUG#5Dj06W;_t(=IhI#%+8x2H_7#uBEGOuJ~a8a{}j@LM{#nAoCEG|oyW)JIqD`l4% zz4`CAy7qiR;=-0vRsOv!HKsyc(e{sKS|~qnF794&tkLmcAPXCLf5ksRvKp#4lbPqjV4bp)~kj<}KOjU^g6K`CZ&zY6b1#@^_v@wuJ$Dr-M)gVz4|Z)^`f zSUy^GrMKlfAY?-X5HqxrsDQ7=c7+o9Czr4^=7&g z>!u!D&$Tau$|}N@nwL^sGFg@RG?R(J=1t4&D_+?*w{4L%+Msw!Xh;}(I{zhH@hLHp*feTs;j>n7XY0U BvX#V2i#0Q;a{|g%Gzwex{!7Ivg`BIN@ ze(#ki&SMRxUa9?0j~+4f^pWY_n3(r9RYHY>g8>@-NBS==vRxyYpLC&vWAQ-FhY@+xd0YSF4h* z!Qtz!FI@SL?en#ar5`8z+|T~3|Jv}E$qbXbRc3QdC!hb?UCaLZ+RFtOHZiEFaOiUI zSSWNV{CaZmIgg~%xqzdJVjYvBbjlGR^VNSi-@st%e z>;7(^Rb<=TIP=l*r#4@NKHT--$otcg{HQ5L=#ZDfzj=y9-rafQ2b0PPo-NyIq=2QJu}Rn za6~36TAx$q`PO);bRk#QOQ%IuvvrJS>j+7o|GVS!w*>Ah6e!K0pud?o@e8a)Q zBcbzm9`=0pU#9&fdxm}L8rKySw~y5x{TXtzWv1umdN0w$GU3#lXT)FU+`aQQUaJ0w ziv4AdWC6zd%f%bz!|dOEG@GPqXZM@czTo}#@_8K98@G4&H#??YS?%kc5T|-#bx+pR zgoN#v6BaG$`lvP4aBnJCu%e~hn?ik89jmWfmw$V_w~Zq#{=48(ufThoS~v?NiWGy7 zF`g?kl-v4$Nwgf}_Wl2uzFlKD%axj!0!{8fR({fCOXh=2#-^M9FkfTjG&3+ZurxF` zFq?dvRThcI$W|6;V6I>Q0t$HwTwsQQp|P6(D7+WiHXL>CTRwymMNx2NoGlD7M6B4CKjn_ vNydrENhy}esg@}Q7HNql$rhF=7Re^&W+^5qlc%y9avGR(sj9mAyKw;kT${ZZ diff --git a/uml/module.pdf b/uml/module.pdf index 85daf144742490a1daa1e3ce80a2b7608c5edeec..dd797dd92afae1cb2ebbc033870af744d8102089 100644 GIT binary patch delta 1078 zcmcb?f1Q7VS-r8HU2#cKYGN)|#hjzzvH7dF6W9qaUTW!g7P;B_@6g zc$*ltV5!lDKEL0;H?M!JFQp+J7^qUD_ucr%k0Umd%5?=zTca**Qf0eyQ1F*2n-3^F z;QLUr-c3f^gy(7Uev3wZgRR%Ee&u;__nKJo_4U@XO;)bB^6jwSni2z_`~|mvtdRNc z_&udD*!b7eUr&OJ&1K6k|D052<-Kine_4?Cw$`~fYq>*q=^T9PzFR5(W{cr6*4+9D z-Lrka-#&Byy!h#_pE7qw?$4~3&(VGDIIr)(mB*Ks&JB9hRnX6)^svFF{Jmr+%f|E! z0qbRoLcE(yi|x}c>qi;&#PU|WTkRb`_jk&d%(+iZPe~^2_YXfPZn1Me!wN0mh$Yc# zasSejDrR*h&YSk`WW~n?d$}X#{`Q*nNp_Z&__FF*O5FOp9MkyHULR9?bYbF?IrYhc zT+bJ6RTerH`e35tk_qQ+m<^V_TDEPY`M86deow5_ zUO7EBD!!^8{7JO(K=E3s53ar4-MjWTJTNNNs=pL?TqVUyEpp)k=6x1d7fj+{+$mrw z#QA?$jAHjT{j7-&Kedl?FnDh``Q%fK$(9>)3&P%&yQSEy`Xjm8;p~d%YcE)s3aVzs zO;GuN>+5r+Xtt>bqtzlpEtEDspC)Bf+Z$Xo-=b4CsG#5xOX-aOTo&TUru1Q-;nxOs+W^<_jhEj{kaE~qs(62w*8SD3 zf{)s^JUG&HTrSvR-pZ7^x$(^9H@~zf;z85$c}n40Svn5Y{VsB7vw12afTW`3SaVo9ooigZ!`7_i%ty5jJEWrELxfAWvd`<`_PBC^1 z|8{PL;#80F?|T*bpJ+!4FR15OK0o)0GNW7m$-Cxm>1KbQFdbi7KYt}}`j(==3kn7t zJD6?mu4X*W#q0d@hQ8keZl5=$wZ^Pf`?nsw^Y!&TwO(zlt$#NNYs>OnmV9Amr*%B` z0(0bpD?N2PEq7kI;(PpV$-X6X&rN#!Yw_GGlX4T&%kDEx)$=a+eR181XtT7QOvl^u zDJ8pS{x$pj{qxbHy)|)p*Ya=GyGNg{ny{SN;OmZ(%;i&dDBV$R_OMX6e7BlS$?=V( z)RDf-4wvSfvv>M$mUK_!Ne*X@`}OKl_;WkS+Nku(-lDb}?=OdbVD)>a&#=l%SnTDr z&hY;;CFU(lnz4LowNac+#&f2y=ldott7%_$s`X{xvJ;0cu9-e_@6BBsJ1w@Hm20f; zwm0sS%{5rZ)X$^T`sS%*gQBU~)?VAB>n0}{9VcsO-6~#?WF@i8c*=A+`7nuH?w8qC zlxEP6?TwR*baH4V07!IUjWUhH}}|PYsJYW45}) zYDA^2+m-6IPl>-`osaFl6&Zzr-^B%Dmif6_)vub?;%xMI%{r-B+~j#Ynti!yj``1s>hkja)CbJN4#mAj?btoqZr%HiyS<*P4Pmz&eWkE(} z3I-sckf*=}W*8V6n;K$>8JL)2h#4ANV2BwRnN7aPrml%$s)2HE8YLztSsGcIry3<0nkA-LrX;2qS{SF<*`%2pr5T#0ni-^;nI)Q< gr>25DYXB5VG%-$1O*EN2m)(fNj7wG3)!&T^0IX-cvH$=8 diff --git a/uml/module_definition.pdf b/uml/module_definition.pdf index b069a8817a8c66db6b5719a638d454c7ec5b1dff..77d4469da5352eee09b90a2eaa2fed206551056b 100644 GIT binary patch delta 1447 zcmZvXc{r2_0LD#W#;|fEkE=%R`}@YsH{%*PMj2<$M8q7}r<@UMnGRROR@*SiV4X<} zTfE6o@psy;lb-YlYln&QT-Cl*PJh7Nf|v^eMHS9zvr6Q+UWz*l{e5 zUq1b8X(>S9WKG{4l!#~V-8x_1>Mh@+m&LMk5|=EcU`>s0U6Dw=5)S6gcGGXZEh6oG zsdQ5!Tn^%Q+wpT(c3Xq!W1)X)xgiDbpTEx1=&Uz*1n;uu6&igEKf^&*KOIhKE@GUF z6!uvu)CsLpgF43emKDOy`z z49GIAr3o;X*Fxl-K;#{<%Xz+Yf7+~1eA5M|oz%ZdoZo4eD`iN}GPsIEc~xO$WK3+d z{tcE3>`bL#$s(bfLXS)i>Tf>R%o_~jwdS*beC)!(WV^nxJZ$TS`n3EtWbyu=KeU>>UQz~x^Q0!X?ikw$P9QG3R~fu>>K?JT17 z>k-f~U4RmcDCmBsA7wGn7+xtJuZ*4UDx)_plVI|i91{tdw5RgZcl}qYS1J}X+P%WB zjo4Y+jwLz;)+WfJG=`2l^c7;LUEDaUMmFgE%u7jLFWqycPcjU?N>>#R zyPkf~PByYMc=p1$Jk7zqBDf_pH?>kJvE((u%-CEX8Uku!^6Lq^pI^l*7=#~8iW@2E z^q(|YHRinus`K3mx#HT98Yw}Zk}(X^vISHcTL4iuh}Jiv)Y$k|tQCjG!d)X6*tl%% zCv@IYPuaM^T-e+3Dos$^J!64>c)XA=qJhlx@!rxCPn>Y{zSB~Zd_2oh*sdLNaZJbZ z=lE|Wgm9JSC*u#Kx-2eCBDoopyp!B`unQD6u2q_7|nL2xZh}) zV-~v*{oyG$ns0O>}qb delta 1434 zcmZwHdobMPcnMduYSd97J-At^I4yvG=cgKYx7BxqsX%)s|>yl6e+H8yjwT z7@Kh(5nb4K(%EeXUbA(DK6}3w_N8e?b{}`xQ$y%s?O~09o8{78R-*b(pSpGy+!k}$G$2mDRrWK+?aRjj8`W; zs!@GDKRSypn{SxWExJ@!1Pt4rlIC;I(`!S3n?Ki1mHUjBXCv&5f}jH6|88Bb@Hzu5=w*s-+aC%Y<*U)!Pdm)K5HQr13^ODfyFtsQoHU-cL!ChLiz z1zK0lI^T*f&~+FpLT9#Ay4x7Woa1lx#$eeU2zG+*^F;c7rkw#yXz*=M!(uc3^iI)y4-L!V#Wd(P6!VW(A~TxmM|s(row;ZL*E zuv!mHB@u|b$&WE-D(`uzMr^S(@Qz6vZWR1*VkgGS_o>inQqmB_U7h~IHT6qGZ8A@lReH)m>=BGjlxRhu-b3wKd(Vn!R2?ub% zNoJ&y?zqslu3O3;@Y0}xWdD-G;=(iXLZ(qi@iVxH*qju#j(BcqaH?J65f_iMy zc=0yoH-^4Ozmtvj)<088{o85UA+SB><*rI1zPh0EjwjYT!X*T0HaI~m{<}1~A~8CD z=GkZsWBc`t#T#c)17vmG>He@Y$4syiS6`3wd#m8zj;G-MN5mFoU(*Xmo%*@G*Bllp z4;GtCkbxrMsU@!qm-dd#Ir3h_dKRil`*3wgdi4?dGs2+d5!;>shTPGenyOK}7@V*0 zk(jZD&hiVPFE3B0~SBZKMs zeSH1ePbsCwJjjV&Z$O)-*#$ltlOK;BSXfpC`Bqv8b};Mv+sWyG^=>4Q8`4yUl+?%o z0f6uzk(d*xs`sBMOEtos41pNndtrhxh<_UZ4_a8PGa{b6&Pe}bWFY4x+{l`^KGgzP zZy-cjmr5b#w7`uH0wgkr2r*bp0H82P3^tL&qA(dGCP2h<*eoV!V@08mm;?y2V1wU; jO#&!PJcmr-5SSpqCV)(Q4pt4Pj)x!+fyLUn*(3e|m|Scy diff --git a/uml/sequence_annotation.pdf b/uml/sequence_annotation.pdf index 8d9c371bbda8b2b7c2a6182c3de29e3d7ce62b00..05b0868088178e0f5b766afb85e81224fc2bb8b8 100644 GIT binary patch delta 1047 zcmaFG|CWD(8Kdb$bMyLK-O~LZZQfQ^6djGzotd{IhbMmB&DpB6H*2fy5NgVQD6%KL z_l)|z_ctwnpJ7w`nZN8u^@Lq12Y#K{S0h}*`-%}H7d=1owW;D3Im z#-=yMRvL~kv-rfN#Q$98^yr@XbZ&Ef^fRG%Hy15nTE5c4_n_fK<+-Q5Hq~cOys-WA zoL-y0>*qIH^PIT$?1k3X;P;F z*ZGEW)$JK~7QPYMWGT$V^x(8;^|o8N^>5nFZm8e4hef)8dsg}tm+pf>HxeGP-ZYq$ zQ}9E0^GqGzGs|BbIDBQ{0v#_;?*-}$1nOVZ+~PcKW!3X+@_rFVy;qMXw?0X~zH>&& zD&LM7=K@yD3uxk)q*W-;wCPmsr+{GY9>2tr(vK@NgAd(sI@Wem*r}gF~k9ukA~O!*|V^T_Qax_xMf|BO~*v z_hQ|$>Q!gO{a4yoaplSEDK(QP^>B(A({udiE$uz~g}Ph`q&pVl~4D162$F1t5j z_rHtpez?+%QCi$j`*B_836mRK+ZZOV+j%qh)5JZ`9NhMC?9#p#xww03LExm@6BZp= z{l#Q$X=b+U!=<_As$a^O-DbR58MHjV>19{%wJlfmY!7({_U27-o8S}bSi54u>+0`; zi!W4coxt@{JjimktnJmfB&GaqIcEgPiFHyS@(X@32ycy ze)6q5>MFE+xb-6h1K0i2@=f}1K{V7;M^$rGR8-EoeeddX+pa!)YVhV;y|3E)GgAe3 z-AMZU=oj-_XS?T{U6}tcPL5=ioa_L^MXc5O=7wg5#zvL~2D%0&>IMetn)=Q~sfi_- z`FSphC8-)NRz?PfrUr0TlV#Y-1I-i+KtLf+feXwqFf=wd!W1(x#}G3#HNg-wGBKb0 zgiYNRL$!g0DTbJ#iHQY<2_}}tlRengoJ`VE(o!r^lg*6M5)IQ*Oe~Wv5=~7lEG>+a zjLegb676h~Qw=N)&5ct{ER7OPlT#8cl2U+9H!w3bOfpZiG&P>Qf!&D1oJ&>J)!&T^ E00o%AEdT%j delta 1006 zcmaFM|B8Qt8KcoebMyMOI!EtU%=>0jR&+E@cV^y>9G>`fH)pHP-mI;*L#QeLp`8zA##nmBll?Ovy?1;yiSf1a?@zuTOjp?7IFR_N|A`x?9&gvmhAO974*ROl zxlBx*f6wW zq+RVwUt5G+CWLf03rq=lH?e(IR6+^Y;?>;lcXed0T-sQmad-W3uV;eA>!di=ELQR8 zuj=<`+aXyR+_(9Oh4sn4VuNJmUa9c57FMs>7j~=8-Eryaoh7#?Jp-rFxayWHo!sbABbgyQ*)=i+nu1_21&Gw?bFlPyLGH zon(5oucvXP&pk7~FTI5ea@wnWO$F|)O_Ye46PI(%-$bzIv+s`7Ye&mmt|%F(P6*bE zyP5kb(L2COT9?B)_F2s*om}Q~=|_au`cD&I&0!wIEnFXAy@hAZlpXs*LO&#K|Fv)b z4PO7PoHuslL`jx=yDU2xwt;m<$>)+oka$ERO z`t%AFHbjSnaL;wOU3l&PcCCizzTfn<5vNH#Jw zPcktuOEFJNGe}NOG*7g&v`96#NJ}-gG&V@Kvq?!dH%c;0O))e`OfoP^G)OZwH!(6c aF-x*AOExwETCthkh{J?SRn^tsjSB$2R;$hc diff --git a/uml/sequence_constraint.pdf b/uml/sequence_constraint.pdf index a74ff961eb056c7403df1b4c17ed4558cd8d66e9..f6731c43931b85d03bbf0a7a834da9dabf904410 100644 GIT binary patch delta 1054 zcmX@ae~f>ES-qK^U2#cKYGN)|#hkO@zWKKec=o;yf3br%V>SQjZDlbVMP)ZQ&*rff zvCZkcy{usJSMJ}xl{F)cg4Iu3EskY6vPAym@d*E(B5gaLR^6rRxGd*(_Xig$<+V<7 z)2?I=SB(x7QH%Xpr@iio`9_hbe?o3`Z7Z@Fx9{)RT&((h!oT|StYzNyic+!KFAdIU z8ATcKNO7nh?!6KD$cLxXxKz+<&Vk<#G8R33YCGld_q(cTZ>=LMe(VrD_WNAs;$#s^ z#U4w;H(oITuf68U^#qwou4D?c>ab)-P@|B4?e%^WHlv&z6qS3u%e~lgy)21kNwsx&pkTjugK|WCI2_Q zqFV}g7SHqFRG+3+5Weqw>#0@xZy9xRJKt_ve#7zV>EFlimc;*W-^8x#%6n)==OpLV z%aj}HUrR35vcIg>cVw3I%`%~apB?ObFK@N}z`DL~|7DRAbM*S=GrMW-c)g#=S2-Yi z*>ca~-#2v9&pynm{9o|B_TYbc7p`Mdp-k$@cLt^oo3RYj<`-vSD?^nrZ33 zV)jjs_wT=MdSh=rbDTLRCs%4-3N*a~S@}tmb(jw^nHX*Uz^uVI*^pIovIG!&u~xI2 z8=4s!8yieM!zvGFe`2i&GB#E)00D(O1uihdz|h#h0z=He$Q(n=(8vHo%*e=K@*XyI zTMQEnEDSNk3{4CyF-$NqHJPlyuI^}VY-(--ba7&exp88Ok&%(Hu|;ySS!zm(rHQeL zrJaqrWm1}vnWeE&vYDZQg;8>vS#pwziMeI6v4N>Us%i4%4t66B3ocbvSARDy0Oc90 AC;$Ke delta 1034 zcmX@ce~5pAS-p{+U2#cKYGN)|#hkO@-ubr;c=o*xf3br%V|BakZR>S6y7+D^+}bYN zCAaNJrtpq)leXNrFYg*TX{JTwHOaRL3Tl5prhXJ&yXHoFSLWf=X&l+^5iPz}$Vf9}- z^He}aKtR}r0D((_+T51TZ4-<`9y-MwEG-N4s@vXJ@Ga_o$0ZT zf=6dMF3r5VS#p}*kFQ51E_y{T-ekIKMS${$cW;ERaPOJz`1G4*#>~>oTy6SJ-K_m6E+JKRrP60E4IUsBCCRn&vw?UG}j8O<3}x(q!9gpR8i7V4-8DQ@9; zbXe%rme(^cPh!~}C}g`})q;!>$4@7xxSo|mUU&IyRPo~mkSEtqg&U_W)e`KYAlV;C>r`d-0jRowk z$lgz}m~rIyjxGFazPGPkqy9#9Z-}kZla|jv&5}5hsyfs>jx&_+;G8hUwMX66O=55N z(X|5VU+;0aN^viLcjDV~OQ$rOnLn>zjGTXgIpPLK`^kA})-m^OWZl2L`Tuwq&ynVt zkCxkbSO)ojZOIONDR;R|MloCG$%XXzqn~ARq@Fa`-?h|zZ+9xgLnPnb{?}p_n_v12 zeYTpMy{D?ahHRhwtLA2&-1YmyIu+VWt=J9v`+DO%_oca zZRVe*?SCG>UVppgi}m-}m{^}rR$#uwWMH=W3$q5}WK&kj$udCf$6C#9W?*b!X=pL| z0;@cn{f)IE$iPIw00b2B6u7_)14CmYOAIjsBV!CPLqjtRF(X5>$p_ffZ81zWurS0B zGc++U#W2Cd)L^m-ySk&XnW?EoVw$CeQIe5Sa#C8dv3XLOrC~~9nxUm}qPd-osi~1c tQnHzmv4vTxaiWo7qEVueS&EUFp_!S5rCDm~ Date: Tue, 21 Jul 2015 18:37:16 -0500 Subject: [PATCH 292/317] RFC 107; also set intended release date of July 31 --- sbol2.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sbol2.tex b/sbol2.tex index 716ae798..1a6f38dd 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -19,7 +19,7 @@ % Macros just for this document: -\newcommand{\rfcnum}{???} +\newcommand{\rfcnum}{107} \newcommand{\sbmlpkg}{\texorpdfstring{% \textls[-25]{\textsc{SBMLPkgSpec}}}{% @@ -101,7 +101,7 @@ \packageTitle{\latex Class for SBML Package Specifications} \packageVersion{Version 2.0.0} -\packageVersionDate{June XXX, 2015} +\packageVersionDate{July 31, 2015} \title{BBF RFC \rfcnum{}: Synthetic Biology Open Language \texorpdfstring{\\[3pt]}{}\mbox{(SBOL) Version~2.0.0}} From ee6ecb7d562f00e70f633dac5d83371738509507 Mon Sep 17 00:00:00 2001 From: Michael Bissell Date: Wed, 22 Jul 2015 04:21:50 +0000 Subject: [PATCH 293/317] Update on Overleaf. --- vocabulary.tex | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/vocabulary.tex b/vocabulary.tex index 24554d64..7cc9d79a 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -28,14 +28,16 @@ \subsection{SBOL Class Names} \begin{itemize} \item \emph{\sbol{Component}}: -Represents a specific occurrence or instance of a single entity within the design of a more complex component. -Each \sbol{Component} is associated with a \sbol{ComponentDefinition}, and there may be many different instances at different locations in a design that share the same definition. +Pointer class. Incorporates a child \sbol{ComponentDefinition} by reference into exactly one parent \sbol{ComponentDefinition}. Represents a specific occurrence or instance of an entity within the design of a more complex entity. Because the same definition may appear at multiple locations in a design, a single \sbol{ComponentDefinition} may have zero or more parent \sbol{ComponentDefinition}s, and each such parent-child link requires its own, distinct \sbol{Component}. +% Mike Bissell - Clarified the role of this class to match changes below in section six. Introduced the term "pointer class" after consulting briefly with Chris M. The emphasis on pointer classes is on the definitions they point to. WAS: "Represents a specific occurrence or instance of a single entity within the design of a more complex component. Each Component is associated with a ComponentDefinition, and there may be many different instances at different locations in a design that share the same definition." \item \emph{\sbol{Location}}: Specifies the base coordinates and orientation of a genetic feature on a DNA or RNA molecule or a residue or site on another sequential macromolecule such as a protein. \item \emph{\sbol{SequenceAnnotation}}: -Describes the \sbol{Location} of a notable sub-sequence found within the \sbol{Sequence} linked to a \sbol{ComponentDefinition}, with an optional link to a \sbol{Component}. +Describes the \sbol{Location} of a notable sub-sequence found within a +\sbol{ComponentDefinition}'s \sbol{Sequence}. Optionally contains a child \sbol{Component} link. +% Mike Bissell - Reworded for clarity of the relationship between ComponentDefinition and Sequence. Broke the original paragraph into two sentences for simplicity. Reworded second sentence to emphasize that a Component is a) a child entity, and b) a link (pointer). Old wording was vague on Component's job within SequenceAnnotation, and old wording made it sound as if the Component was the payload itself, rather than just a reference. WAS: "Describes the Location of a notable sub-sequence found within the Sequence linked to a ComponentDefinition, with an optional link to a Component." \item \emph{\sbol{SequenceConstraint}}: Describes the relative spatial position and orientation of two \sbol{Component} objects that are contained within the same \sbol{ComponentDefinition}. @@ -45,7 +47,7 @@ \subsection{SBOL Class Names} Represents a data container that can contain custom data added by user applications. \item \emph{\sbol{Model}}: -Links an SBOL representation of biological components and their interactions to quantitative or qualitative computational models that may be used to predict the functional behavior of a biological design. +Links an SBOL representation of biological components and their interactions to quantitative or qualitative computational models that may be used to predict the functional behavior of a biological design. %Goksel - Updated as above: Links an SBOL representation of biological components and their interactions to quantitative, computational models that may be used to predict the functional behavior of a biological design. \item \emph{\sbol{ModuleDefinition}}: From 8cdafdaca75936b43f5ceb7d3b6b79fd3f0558e5 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 21 Jul 2015 23:23:16 -0500 Subject: [PATCH 294/317] improved SBOL 1 -> 2 mapping section --- model.tex | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/model.tex b/model.tex index e703e6ea..029181e2 100644 --- a/model.tex +++ b/model.tex @@ -1548,7 +1548,18 @@ \subsubsection*{Serialization} \section{Mapping Between SBOL 1.1 and SBOL 2.0} \label{sec:mapping} -Figure~\ref{SBOL1TO2} depicts the mapping between SBOL 1.1 data objects and SBOL 2.0 data objects. Collections of DNA components map to Collections of ComponentDefinitions, among other top level SBOL objects. DnaComponents map to ComponentDefinitions of type DNA. DnaSequences map to Sequences using the IUPAC encoding for nucleotide sequences. SequenceAnnotations with precise start and end positions are mapped to SequenceAnnotations with Range Locations, while SequenceAnnotations with imprecise positions are mapped to SequenceAnnotations with GenericLocations. Each Sequence Annotation also maps to a Component, which in SBOL 2.0 represents the instantiation or usage of a given ComponentDefinition. Finally, precedes relationships map to SequenceConstraints that specify precedes restrictions. +\ref{SBOL1TO2} depicts the mapping of SBOL 1.1 classes to SBOL 2.0 classes, indicating corresponding elements by color. +The SBOL 2.0 Model and ModuleDefinition classes have no SBOL 1.1 equivalent, and are thus not shown. +In particular: +\begin{itemize} +\item SBOL 1.1 \external{Collection} objects containing \external{DnaComponent} objects map to SBOL 2.0 \sbol{Collection} objects that can contain both \sbol{ComponentDefinition} objects and other top level SBOL objects. +\item SBOL 1.1 \external{DnaComponent} maps to an SBOL 2.0 \sbol{ComponentDefinition} of type DNA. +\item SBOL 1.1 \external{DnaSequence} maps to an SBOL 2.0 \sbol{Sequence} using the IUPAC encoding for nucleotide sequences. +\item SBOL 1.1 \external{SequenceAnnotation} with a precise start and end position maps to an SBOL 2.0 \sbol{SequenceAnnotation} with a \sbol{Range} \sbol{Location} +\item SBOL 1.1 \external{SequenceAnnotation} with imprecise positions maps to an SBOL 2.0 \sbol{SequenceAnnotation} with a \sbol{GenericLocation}. +\item Each SBOL 1.1 \external{SequenceAnnotation} also maps to an SBOL 2.0 \sbol{Component}, which represents the instantiation or usage of a given \sbol{ComponentDefinition}. +\item Each SBOL 1.1 \external{precedes} relationship maps to an SBOL 2.0 \sbol{SequenceConstraint} that specifies a \external{precedes} restriction. +\end{itemize} \begin{figure*}[h] \begin{center} From 2a69ca71342d13cf008e3b13e705dabb3fbc10af Mon Sep 17 00:00:00 2001 From: Michael Bissell Date: Wed, 22 Jul 2015 04:38:07 +0000 Subject: [PATCH 295/317] Update on Overleaf. --- vocabulary.tex | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/vocabulary.tex b/vocabulary.tex index 7cc9d79a..244a00f5 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -28,14 +28,14 @@ \subsection{SBOL Class Names} \begin{itemize} \item \emph{\sbol{Component}}: -Pointer class. Incorporates a child \sbol{ComponentDefinition} by reference into exactly one parent \sbol{ComponentDefinition}. Represents a specific occurrence or instance of an entity within the design of a more complex entity. Because the same definition may appear at multiple locations in a design, a single \sbol{ComponentDefinition} may have zero or more parent \sbol{ComponentDefinition}s, and each such parent-child link requires its own, distinct \sbol{Component}. -% Mike Bissell - Clarified the role of this class to match changes below in section six. Introduced the term "pointer class" after consulting briefly with Chris M. The emphasis on pointer classes is on the definitions they point to. WAS: "Represents a specific occurrence or instance of a single entity within the design of a more complex component. Each Component is associated with a ComponentDefinition, and there may be many different instances at different locations in a design that share the same definition." +Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ComponentDefinition}. Represents a specific occurrence or instance of an entity within the design of a more complex entity. Because the same definition may appear at multiple locations in a design, a single \sbol{ComponentDefinition} may have zero or more parent \sbol{ComponentDefinition}s, and each such parent-child link requires its own, distinct \sbol{Component}. +% Mike Bissell - Clarified the role of this class to match changes below in section six. Introduced the term "pointer class" after consulting briefly with Chris M. The emphasis on pointer classes is on the definitions they point to. WAS: "Represents a specific occurrence or instance of a single entity within the design of a more complex component. Each Component is associated with a ComponentDefinition, and there may be many different instances at different locations in a design that share the same definition." I felt this was necessary because it \item \emph{\sbol{Location}}: Specifies the base coordinates and orientation of a genetic feature on a DNA or RNA molecule or a residue or site on another sequential macromolecule such as a protein. \item \emph{\sbol{SequenceAnnotation}}: -Describes the \sbol{Location} of a notable sub-sequence found within a +Describes the \sbol{Location} of a notable sub-sequence found within a \newline \sbol{ComponentDefinition}'s \sbol{Sequence}. Optionally contains a child \sbol{Component} link. % Mike Bissell - Reworded for clarity of the relationship between ComponentDefinition and Sequence. Broke the original paragraph into two sentences for simplicity. Reworded second sentence to emphasize that a Component is a) a child entity, and b) a link (pointer). Old wording was vague on Component's job within SequenceAnnotation, and old wording made it sound as if the Component was the payload itself, rather than just a reference. WAS: "Describes the Location of a notable sub-sequence found within the Sequence linked to a ComponentDefinition, with an optional link to a Component." @@ -55,8 +55,8 @@ \subsection{SBOL Class Names} \begin{itemize} \item \emph{\sbol{FunctionalComponent}}: -Represents a specific occurrence or instance of an \sbol{ComponentDefinition} within a \sbol{ModuleDefinition}. -Exactly like a \sbol{Component}, except that it can be associated with information about its context of use in the \sbol{Module}, rather than in the context of a containing \sbol{ComponentDefinition}. +Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of an entity within the design of a system. Because the same definition may appear at multiple locations in a design, a single \sbol{ComponentDefinition} may have zero or more parent \sbol{ModuleDefinition}s, and each such parent-child link requires its own, distinct \sbol{FunctionalComponent}. +% Mike Bissell - As above, reworded to clarify the structure of these relationships, with special attention to the pointer-like nature of this type. WAS: "Represents a specific occurrence or instance of an ComponentDefinition within a ModuleDefinition. Exactly like a Component, except that it can be associated with information about its context of use in the Module, rather than in the context of a containing ComponentDefinition." I eliminated the bit about it being "exactly like... except," because with those exceptions, the likeness is *inexact*. Instead, I deliberately reworked the paragraph's phrasing and contents to emphasize this class's similarity to the other two pointer classes. \item \emph{\sbol{Interaction}}: Describes a functional relationship between biological entities, such as regulatory activation or repression, or a biological process such as transcription or translation. @@ -66,8 +66,8 @@ \subsection{SBOL Class Names} In this case, a referencing \sbol{ComponentInstance} needs to be created in the design and a \sbol{MapsTo} is added to the instance for the sub-design, which associates the original and the referencing instance. \item \emph{\sbol{Module}}: -Represents a specific occurrence or instance of a sub-system within a larger design. -Each \sbol{Module} is associated with a \sbol{ModuleDefinition}, and there may be many different instances at different locations in a design that share the same definition. +Pointer class. Incorporates a child \sbol{ModuleDefinition} by \textit{reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of a subsystem within the design of a larger system. Because the same definition may appear at multiple locations in a design, a single \sbol{ModuleDefinition} may have zero or more parent \sbol{ModuleDefinition}s, and each such parent-child link requires its own, distinct \sbol{Module}. +% Mike Bissell - Reworked this paragraph like I did for Component and FunctionalComponent (see above). WAS: "Represents a specific occurrence or instance of a sub-system within a larger design. Each Module is associated with a ModuleDefinition, and there may be many different instances at different locations in a design that share the same definition." \item \emph{\sbol{Participation}}: Describes the role that a \sbol{Component} plays in an \sbol{Interaction}. From 45bd40814c6cd7035f4db68089bcd9103fc6cd03 Mon Sep 17 00:00:00 2001 From: Michael Bissell Date: Wed, 22 Jul 2015 04:38:46 +0000 Subject: [PATCH 296/317] Update on Overleaf. --- vocabulary.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vocabulary.tex b/vocabulary.tex index 244a00f5..d63b50a7 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -29,7 +29,7 @@ \subsection{SBOL Class Names} \begin{itemize} \item \emph{\sbol{Component}}: Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ComponentDefinition}. Represents a specific occurrence or instance of an entity within the design of a more complex entity. Because the same definition may appear at multiple locations in a design, a single \sbol{ComponentDefinition} may have zero or more parent \sbol{ComponentDefinition}s, and each such parent-child link requires its own, distinct \sbol{Component}. -% Mike Bissell - Clarified the role of this class to match changes below in section six. Introduced the term "pointer class" after consulting briefly with Chris M. The emphasis on pointer classes is on the definitions they point to. WAS: "Represents a specific occurrence or instance of a single entity within the design of a more complex component. Each Component is associated with a ComponentDefinition, and there may be many different instances at different locations in a design that share the same definition." I felt this was necessary because it +% Mike Bissell - Clarified the role of this class to match changes below in section six. Introduced the term "pointer class" after consulting briefly with Chris M. The emphasis on pointer classes is on the definitions they point to. WAS: "Represents a specific occurrence or instance of a single entity within the design of a more complex component. Each Component is associated with a ComponentDefinition, and there may be many different instances at different locations in a design that share the same definition." I felt this was necessary because it is too easy for a novice to get confused about Component vs. ComponentDefinition here, where they first encounter Component, even before ComponentDefinition is defined. In 2.0.1 I recomment \item \emph{\sbol{Location}}: Specifies the base coordinates and orientation of a genetic feature on a DNA or RNA molecule or a residue or site on another sequential macromolecule such as a protein. From 4efaf44a288ed189bffa17d52f561df7d4093735 Mon Sep 17 00:00:00 2001 From: Michael Bissell Date: Wed, 22 Jul 2015 04:38:51 +0000 Subject: [PATCH 297/317] Update on Overleaf. --- vocabulary.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vocabulary.tex b/vocabulary.tex index d63b50a7..3ef238fe 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -29,7 +29,7 @@ \subsection{SBOL Class Names} \begin{itemize} \item \emph{\sbol{Component}}: Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ComponentDefinition}. Represents a specific occurrence or instance of an entity within the design of a more complex entity. Because the same definition may appear at multiple locations in a design, a single \sbol{ComponentDefinition} may have zero or more parent \sbol{ComponentDefinition}s, and each such parent-child link requires its own, distinct \sbol{Component}. -% Mike Bissell - Clarified the role of this class to match changes below in section six. Introduced the term "pointer class" after consulting briefly with Chris M. The emphasis on pointer classes is on the definitions they point to. WAS: "Represents a specific occurrence or instance of a single entity within the design of a more complex component. Each Component is associated with a ComponentDefinition, and there may be many different instances at different locations in a design that share the same definition." I felt this was necessary because it is too easy for a novice to get confused about Component vs. ComponentDefinition here, where they first encounter Component, even before ComponentDefinition is defined. In 2.0.1 I recomment +% Mike Bissell - Clarified the role of this class to match changes below in section six. Introduced the term "pointer class" after consulting briefly with Chris M. The emphasis on pointer classes is on the definitions they point to. WAS: "Represents a specific occurrence or instance of a single entity within the design of a more complex component. Each Component is associated with a ComponentDefinition, and there may be many different instances at different locations in a design that share the same definition." I felt this was necessary because it is too easy for a novice to get confused about Component vs. ComponentDefinition here, where they first encounter Component, even before ComponentDefinition is defined. \item \emph{\sbol{Location}}: Specifies the base coordinates and orientation of a genetic feature on a DNA or RNA molecule or a residue or site on another sequential macromolecule such as a protein. From e7ac8e7b9107bd3ca64e2313f054832baacb9927 Mon Sep 17 00:00:00 2001 From: Michael Bissell Date: Wed, 22 Jul 2015 04:38:57 +0000 Subject: [PATCH 298/317] Update on Overleaf. --- vocabulary.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vocabulary.tex b/vocabulary.tex index 3ef238fe..ea7dad1b 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -37,7 +37,7 @@ \subsection{SBOL Class Names} \item \emph{\sbol{SequenceAnnotation}}: Describes the \sbol{Location} of a notable sub-sequence found within a \newline \sbol{ComponentDefinition}'s \sbol{Sequence}. Optionally contains a child \sbol{Component} link. -% Mike Bissell - Reworded for clarity of the relationship between ComponentDefinition and Sequence. Broke the original paragraph into two sentences for simplicity. Reworded second sentence to emphasize that a Component is a) a child entity, and b) a link (pointer). Old wording was vague on Component's job within SequenceAnnotation, and old wording made it sound as if the Component was the payload itself, rather than just a reference. WAS: "Describes the Location of a notable sub-sequence found within the Sequence linked to a ComponentDefinition, with an optional link to a Component." +% Mike Bissell - Reworded for clarity of the relationship between ComponentDefinition and Sequence. Broke the original paragraph into two sentences for simplicity. Reworded second sentence to emphasize that a Component is a) a child entity, and b) a link (pointer). Old wording was vague on Component's job within SequenceAnnotation, and old wording made it sound as if the Component was the payload itself, rather than just a reference. WAS: "Describes the Location of a notable sub-sequence found within the Sequence linked to a ComponentDefinition, with an optional link to a Component." I felt this was necessary because it is too easy for a novice to get confused about Component vs. ComponentDefinition here, where they first encounter Component, even before ComponentDefinition is defined. \item \emph{\sbol{SequenceConstraint}}: Describes the relative spatial position and orientation of two \sbol{Component} objects that are contained within the same \sbol{ComponentDefinition}. From 3ea2d1ad35f5630de815e2ade54f6f6f4196d532 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Tue, 21 Jul 2015 23:38:38 -0500 Subject: [PATCH 299/317] reference figure 1 and include FASTA comparison --- model.tex | 2 +- purpose.tex | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/model.tex b/model.tex index 029181e2..f4a8a0b0 100644 --- a/model.tex +++ b/model.tex @@ -1565,5 +1565,5 @@ \section{Mapping Between SBOL 1.1 and SBOL 2.0} \begin{center} \includegraphics[width=\textwidth]{images/sbol_v1_to_v2} \end{center} -\caption{\label{SBOL1TO2}The mapping from the SBOL 1.1 data model to the SBOL 2.0 data model.} +\caption{\label{SBOL1TO2}The mapping from the SBOL 1.1 data model to the SBOL 2.0 data model, indicating corresponding elements by color.} \end{figure*} \ No newline at end of file diff --git a/purpose.tex b/purpose.tex index ea68d70b..a0e51377 100644 --- a/purpose.tex +++ b/purpose.tex @@ -8,7 +8,10 @@ \section{Purpose} Synthetic biology builds upon the techniques and successes of genetics, molecular biology, and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. A common factor of these challenges is the exchange of information about designed systems between laboratories. When designing a synthetic system, synthetic biologists need to exchange information about multiple types of molecules and their planned roles in the design. Often the functional role may be associated with another type of molecule entirely, such as a small chemical, a DNA, an RNA or a Protein molecule. An example is a DNA sequence that is transcribed into a messenger RNA that contains an encoded microRNA binding site, and the messenger RNA in turn being translated into a protein molecule which is a transcription factor binding protein. Functionally the representation of the products of the designed DNA sequence need to describe the role of microRNA binding to the messenger RNA leading to possible degradation, the functional consequence of the transcription factor protein being absent leading to repression of expression of another gene and the kinetic information associated with these different elements so they can be mathematically modeled. The DNA sequence itself is thus one or two steps removed from the functional role of the designed device or circuit. -The \emph{Synthetic Biology Open Language} has been designed as a standard to support synthetic biology, filling a need not satisfied by other pre-existing standards. Previous file formats such as GenBank and Swiss-Prot represent sequence information based upon annotation of sequence features - they do not represent the functional roles or consequences of these sequences. Modelling languages, such as the Systems Biology Markup Language (SBML) ~\cite{SBML} can be used represent biological processes, but is not sufficient to represent the associated nucleotide or amino acid sequences. %Goksel: Commented this sentence: Kinetic information may be present in SBML~\cite{SBML} or mass conservation laws in other systems such as the COBRA Toolbox~\cite{COBRA}. +The \emph{Synthetic Biology Open Language} has been designed as a standard to support synthetic biology, filling a need not satisfied by other pre-existing standards. +Previous nucleic acid sequence description formats lack key capabilities: simple sequence encoding formats such as FASTA encode almost nothing about design rationale, while more sophisticated formats such as GenBank and Swiss-Prot support a flat annotation of sequence features that is well suited for description of natural systems but unable to represent either the multi-layered design structure common to engineered systems or the functional roles or consequences of these sequences. +\ref{f:sequence} shows the relationship of selected prior sequence description formats to SBOL 1.1 and SBOL 2.0. +Modelling languages, such as the Systems Biology Markup Language (SBML) ~\cite{SBML} can be used represent biological processes, but is not sufficient to represent the associated nucleotide or amino acid sequences. %Goksel: Commented this sentence: Kinetic information may be present in SBML~\cite{SBML} or mass conservation laws in other systems such as the COBRA Toolbox~\cite{COBRA}. Synthetic biology needs a structured standard with defined ways on how to represent relevant molecules and their functional roles within the designed system, standardized rules on how such information is encoded in the file and the means to enable exchange of such data between participating laboratories as part of publications. %Goksel: Updated the sentence as above:Systems Biology Markup Language (SBML) represents reactions, pathways, and models, but does not typically represent the associated sequences. @@ -42,7 +45,8 @@ \section{Purpose} \begin{figure} \centering \includegraphics[width=5in]{images/format-comparison.pdf} -\caption{SBOL 2.0 extends prior formats to represent both structure and function of a genetic design in a single model.} +\caption{SBOL 2.0 extends prior sequence description formats to represent both structure and function of a genetic design in a single model.} +\label{f:sequence} \end{figure} To address the need for functional descriptions in SBOL, the proposed data model adds new classes to provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the SBML to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module definition gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. From a232acef3841561dd1d6c2fa3320a52cf9928f7b Mon Sep 17 00:00:00 2001 From: Michael Bissell Date: Wed, 22 Jul 2015 05:22:12 +0000 Subject: [PATCH 300/317] v19 --- overview.tex | 26 ++++++++++++++++---------- vocabulary.tex | 8 ++++---- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/overview.tex b/overview.tex index 3d805345..2f1fe6ed 100644 --- a/overview.tex +++ b/overview.tex @@ -7,8 +7,10 @@ \section{Overview of SBOL} \item Structural terms, e.g., a set of annotated sequences or information about the chemical makeup of components. \item Functional terms, e.g., the way that components might interact with each other and the overall behavior of a design. \end{itemize} -In broad strokes, the prior SBOL 1.1 standard focused on physical, structural information, whereas SBOL 2.0 extends to also include functional aspects. -The physical information about a designed genetic construct includes the order of its constituents and their descriptions. The exact locations of these constituents and their sequences allow genetic constructs to be defined unambiguously, and reused in other designs. SBOL 2.0 extends SBOL 1.1 in several ways: it extends physical descriptions to include entities beyond DNA sequences, and it allows for functional descriptions of the design. +% Mike Bissell - FIXME. "The way" and "the..behavior" are not really "terms" or "descriptions," so the preceding sentence could really use some work. +In broad strokes, the prior SBOL 1.1 standard focused on conveying physical, structural information, whereas SBOL 2.0 expands 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 allow genetic constructs to be defined unambiguously and reused in other designs. SBOL 2.0 extends SBOL 1.1 in several ways: it extends physical descriptions to include entities beyond DNA sequences, and it supports functional descriptions of designs. +% Mike Bissell - Fixed what seemed to be missing words in the first half of the paragraph. Swapped in "supports" in place of "allows for". More consistent pluralization. As an example, consider the design of an expression cassette, such as the one found in the plasmid pUC18~\cite{L08752.1}. This device is designed to detect successful versus unsuccessful molecular cloning. As an overall system, the device is designed to grow either blue-colored (unsuccessful) or white-colored (successful) colonies in the presence of IPTG and the chemical X-gal. Internally, the device has a number of parts, including a promoter, the lac repressor binding site, and the lacZ coding sequence. @@ -20,7 +22,7 @@ \section{Overview of SBOL} SBOL 2.0 includes two main classes that match the structural/functional distinction above: \begin{itemize} -\item The \sbol{ComponentDefinition} object describes the physical aspects of the designed system, such as the DNA or RNA sequences and the physical relationships among sub-components, such as one sequence containing another as a sub-sequence. +\item The \sbol{ComponentDefinition} object describes the physical aspects of the designed system, such as its DNA or RNA sequences, and the physical relationships among sub-components, as when one sequence contains another as a sub-sequence. \item The \sbol{ModuleDefinition} object describes interactions of the designed system, such as specific binding relationships and repression and activation relationships. \end{itemize} @@ -51,12 +53,16 @@ \section{Overview of SBOL} \end{center} \end{figure} -The second figure additionally depicts the connection of the functional side (modules) to the physical side (components). -This is accomplished via the class \sbol{FunctionalComponent}. This class allows modules to own their components instances, and yet also allows the physical descriptions (in \sbol{ComponentDefinition}s) to stand on their own. -In a similar manner, the ability to have hierarchies of either functional or physical components shown in \ref{images:overview1} must be broken apart, so that sub-components can be used in multiple functional modules or multiple physical components. -Thus, instead of the arc from \sbol{ModuleDefinition} to itself as in \ref{images:overview1}, our implementation actually divides this notion into two classes, \sbol{ModuleDefinition} and \sbol{Module}. -Therefore, a \sbol{ModuleDefinition} does not own the \sbol{ModuleDefinition}s that it uses, but instead it refers to them using the \sbol{Module} objects that it does own. The identical relationship occurs on the physical side with \sbol{ComponentDefinition} and \sbol{Component}. Finally, SBOL 2.0 provides a few other additional helper classes such as \sbol{Location}, which generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint}, which generalizes the relative positioning information among \sbol{Component}s. There is also -\sbol{Participation}s, which allow \sbol {Interaction} objects to specify the roles of their participants while referencing the \sbol{FunctionalComponent}s, so that these can stand on their own. Finaly, there is the \sbol{MapsTo} class (not shown) that enables connections to be made between \sbol{Component}s and \sbol{FunctionalComponent}s at various levels of the design hierarchy. The next section provides complete definitions and details for all of these classes. +\ref{images:overview2} additionally shows that when it is possible to incorporate a single object into multiple parents, we always incorporate that object by reference. We do not directly incorporate it by copy. Each reference is formed by a pointer object. Pointers refer from a parent to a child. There are three distinct pointer classes: \sbol{Component}, \sbol{Module}, and \sbol{FunctionalComponent}. A \sbol{Component} points from a \sbol{ComponentDefinition} to a child \sbol{ComponentDefinition}, incorporating it by reference into the parent structure. A \sbol{Module} points from a \sbol{ModuleDefinition} to a child \sbol{ModuleDefinition}, likewise incorporating it by reference into the parent system. Similarly, a parent \sbol{ModuleDefinition} on the functional side of a model may incorporate a child \sbol{ComponentDefinition} from the model's physical side by means of a \sbol{FunctionalComponent} reference. These three pointer classes allow the efficient reuse of definitions in multiple locations. +% Mike Bissell - I rewrote the first half of the paragraph that used to live here per Chris Myers's request. Please review my changes. (Also, could somebody please fix the right alignment?) Rationale: the old version did not have a single theme, and it obscured what is essentially a simple pattern. This edit prompted the insertion of extra verbiage re: the three "pointer classes" above, in section 5.2. I also eliminated two out of the three transitions using "finally" or "final," because only one item can come last. -There is one final, critical element of SBOL 2.0: its extension mechanism. This extension mechanism enables the storage of application specific information within an SBOL document. It is also intended to support the prototyping of data representations whose format is not yet a matter of consensus within the community. In particular, each SBOL entity can be annotated using the \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \sbol{GenericTopLevel} entities. SBOL libraries make these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. +SBOL 2.0 provides a few helper classes such as \sbol{Location}, which generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint}, which generalizes the relative positioning information among \sbol{Component}s. + +There are also +\sbol{Participation}s, which allow \sbol{Interaction} objects to specify the roles of their participants while referencing the \sbol{FunctionalComponent}s, so that these can stand on their own. + +Additionally, there is the \sbol{MapsTo} class (not shown), which enables connections to be made between \sbol{Component}s and \sbol{FunctionalComponent}s across various levels of the design hierarchy. The next section provides complete definitions and details for all of these classes. +% Mike Bissell - Changed "at various levels" to "across various levels." Please confirm. + +There is one final, critical element of SBOL 2.0: its extension mechanism. This extension mechanism enables the storage of application specific information within an SBOL document. It is also intended to support the prototyping of data representations whose format is not yet a matter of consensus within the community. In particular, each SBOL entity can be annotated using the \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \sbol{GenericTopLevel} entities. SBOL libraries make these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. diff --git a/vocabulary.tex b/vocabulary.tex index ea7dad1b..53131e1e 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -37,7 +37,7 @@ \subsection{SBOL Class Names} \item \emph{\sbol{SequenceAnnotation}}: Describes the \sbol{Location} of a notable sub-sequence found within a \newline \sbol{ComponentDefinition}'s \sbol{Sequence}. Optionally contains a child \sbol{Component} link. -% Mike Bissell - Reworded for clarity of the relationship between ComponentDefinition and Sequence. Broke the original paragraph into two sentences for simplicity. Reworded second sentence to emphasize that a Component is a) a child entity, and b) a link (pointer). Old wording was vague on Component's job within SequenceAnnotation, and old wording made it sound as if the Component was the payload itself, rather than just a reference. WAS: "Describes the Location of a notable sub-sequence found within the Sequence linked to a ComponentDefinition, with an optional link to a Component." I felt this was necessary because it is too easy for a novice to get confused about Component vs. ComponentDefinition here, where they first encounter Component, even before ComponentDefinition is defined. +% Mike Bissell - Reworded for clarity of the relationship between ComponentDefinition and Sequence. Broke the original paragraph into two sentences for simplicity. Reworded second sentence to emphasize that a Component is a) a child entity, and b) a link (pointer). Old wording was vague on Component's job within SequenceAnnotation, and old wording made it sound as if the Component was the payload itself, rather than just a reference. WAS: "Describes the Location of a notable sub-sequence found within the Sequence linked to a ComponentDefinition, with an optional link to a Component." \item \emph{\sbol{SequenceConstraint}}: Describes the relative spatial position and orientation of two \sbol{Component} objects that are contained within the same \sbol{ComponentDefinition}. @@ -56,7 +56,7 @@ \subsection{SBOL Class Names} \begin{itemize} \item \emph{\sbol{FunctionalComponent}}: Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of an entity within the design of a system. Because the same definition may appear at multiple locations in a design, a single \sbol{ComponentDefinition} may have zero or more parent \sbol{ModuleDefinition}s, and each such parent-child link requires its own, distinct \sbol{FunctionalComponent}. -% Mike Bissell - As above, reworded to clarify the structure of these relationships, with special attention to the pointer-like nature of this type. WAS: "Represents a specific occurrence or instance of an ComponentDefinition within a ModuleDefinition. Exactly like a Component, except that it can be associated with information about its context of use in the Module, rather than in the context of a containing ComponentDefinition." I eliminated the bit about it being "exactly like... except," because with those exceptions, the likeness is *inexact*. Instead, I deliberately reworked the paragraph's phrasing and contents to emphasize this class's similarity to the other two pointer classes. +% Mike Bissell - As above, reworded to clarify the structure of these relationships, with special attention to the pointer-like nature of this type. WAS: "Represents a specific occurrence or instance of an ComponentDefinition within a ModuleDefinition. Exactly like a Component, except that it can be associated with information about its context of use in the Module, rather than in the context of a containing ComponentDefinition." I eliminated the bit about it being "exactly like... except," because with those exceptions, the likeness is *inexact*. Instead, I deliberately reworked the paragraph's phrasing and contents to emphasize this class's similarity to the other two pointer classes. I felt this was necessary because it is easy for a novice to get confused about FunctionalComponent vs. Component vs. ComponentDefinition in this context. \item \emph{\sbol{Interaction}}: Describes a functional relationship between biological entities, such as regulatory activation or repression, or a biological process such as transcription or translation. @@ -66,8 +66,8 @@ \subsection{SBOL Class Names} In this case, a referencing \sbol{ComponentInstance} needs to be created in the design and a \sbol{MapsTo} is added to the instance for the sub-design, which associates the original and the referencing instance. \item \emph{\sbol{Module}}: -Pointer class. Incorporates a child \sbol{ModuleDefinition} by \textit{reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of a subsystem within the design of a larger system. Because the same definition may appear at multiple locations in a design, a single \sbol{ModuleDefinition} may have zero or more parent \sbol{ModuleDefinition}s, and each such parent-child link requires its own, distinct \sbol{Module}. -% Mike Bissell - Reworked this paragraph like I did for Component and FunctionalComponent (see above). WAS: "Represents a specific occurrence or instance of a sub-system within a larger design. Each Module is associated with a ModuleDefinition, and there may be many different instances at different locations in a design that share the same definition." +Pointer class. Incorporates a child \sbol{ModuleDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of a subsystem within the design of a larger system. Because the same definition may appear at multiple locations in a design, a single \sbol{ModuleDefinition} may have zero or more parent \sbol{ModuleDefinition}s, and each such parent-child link requires its own, distinct \sbol{Module}. +% Mike Bissell - Reworked this paragraph like I did for Component and FunctionalComponent (see above). WAS: "Represents a specific occurrence or instance of a sub-system within a larger design. Each Module is associated with a ModuleDefinition, and there may be many different instances at different locations in a design that share the same definition." I felt this was necessary because it is way too easy for a novice to get confused about Module vs. ModuleDefinition in this (introductory) context. \item \emph{\sbol{Participation}}: Describes the role that a \sbol{Component} plays in an \sbol{Interaction}. From e7827f732d96168c2fe464a920ba23ca6d5b0175 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Wed, 22 Jul 2015 09:16:59 -0500 Subject: [PATCH 301/317] improve first paragraph of purpose (ref issue #1) --- purpose.tex | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/purpose.tex b/purpose.tex index a0e51377..f71b49cd 100644 --- a/purpose.tex +++ b/purpose.tex @@ -5,10 +5,11 @@ \section{Purpose} % The Synthetic Biology Open Language is intended to help synthetic biologists collaborate by allowing them to exchange designs in a standardized data format. In addition, the SBOL data model systematically describes the essential details of a design that are required for researchers to reproduce each other's designs in the laboratory. The purpose of the Synthetic Biology Open Language is to aid collaboration between researchers, improve scientific reproducibility, and to speed the research and development of technologies based on synthetic biology. -Synthetic biology builds upon the techniques and successes of genetics, molecular biology, and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. A common factor of these challenges is the exchange of information about designed systems between laboratories. When designing a synthetic system, synthetic biologists need to exchange information about multiple types of molecules and their planned roles in the design. Often the functional role may be associated with another type of molecule entirely, such as a small chemical, a DNA, an RNA or a Protein molecule. An example is a DNA sequence that is transcribed into a messenger RNA that contains an encoded microRNA binding site, and the messenger RNA in turn being translated into a protein molecule which is a transcription factor binding protein. Functionally the representation of the products of the designed DNA sequence need to describe the role of microRNA binding to the messenger RNA leading to possible degradation, the functional consequence of the transcription factor protein being absent leading to repression of expression of another gene and the kinetic information associated with these different elements so they can be mathematically modeled. The DNA sequence itself is thus one or two steps removed from the functional role of the designed device or circuit. +Synthetic biology builds upon the techniques and successes of genetics, molecular biology, and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. A common factor of these challenges is the exchange of information about designed systems between laboratories. +When designing a synthetic system, synthetic biologists need to exchange information about multiple types of molecules and their expected behavior in the design. +Moreover, there is often one or more steps of separation between a specified nucleic acid sequence (e.g., the sequence that encodes an enzyme or transcription factor) and the interactions that are being reasoned about in order to determine that sequence (e.g., chemical modification of metabolites or regulation of gene expression), yet these different perspectives are often intimately tied together in the engineering of biological systems. - -The \emph{Synthetic Biology Open Language} has been designed as a standard to support synthetic biology, filling a need not satisfied by other pre-existing standards. +The \emph{Synthetic Biology Open Language} has been designed as a standard to support the specification and exchange of such information in synthetic biology, filling a need not satisfied by other pre-existing standards. Previous nucleic acid sequence description formats lack key capabilities: simple sequence encoding formats such as FASTA encode almost nothing about design rationale, while more sophisticated formats such as GenBank and Swiss-Prot support a flat annotation of sequence features that is well suited for description of natural systems but unable to represent either the multi-layered design structure common to engineered systems or the functional roles or consequences of these sequences. \ref{f:sequence} shows the relationship of selected prior sequence description formats to SBOL 1.1 and SBOL 2.0. Modelling languages, such as the Systems Biology Markup Language (SBML) ~\cite{SBML} can be used represent biological processes, but is not sufficient to represent the associated nucleotide or amino acid sequences. %Goksel: Commented this sentence: Kinetic information may be present in SBML~\cite{SBML} or mass conservation laws in other systems such as the COBRA Toolbox~\cite{COBRA}. From 25eff3f86dd870f43c2c6bd569fc51012e1549dc Mon Sep 17 00:00:00 2001 From: jakebeal Date: Wed, 22 Jul 2015 09:22:28 -0500 Subject: [PATCH 302/317] fixed section multiple/undefined problems --- model.tex | 2 -- purpose.tex | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/model.tex b/model.tex index f4a8a0b0..6259c299 100644 --- a/model.tex +++ b/model.tex @@ -62,7 +62,6 @@ \subsection{Data Types} \label{sec:Double} \label{sec:Boolean} \label{sec:URI} -\label{sec:QName} \label{sec:literal} When SBOL use simple ``primitive'' data types such as strings or integers, these are defined as the following specific formal types: @@ -1372,7 +1371,6 @@ \subsubsection*{Serialization} \subsection{SBOL Extension Mechanism} \label{sec:Annotations} -\label{sec:annotations} SBOL does not attempt to represent all information about a biological system, since many things do not yet have a clear ``right way'' to be represented, such as design intent, biological context, or performance data. Instead, SBOL allows the embedding of application specific data that are not captured by the SBOL standard. Such data are optional, but can be computationally generated and exchanged via SBOL documents without getting damaged or lost. This SBOL extension mechanism is designed to allow easy incorporation within the SBOL standard once there is community agreement on data content to be exchanged. diff --git a/purpose.tex b/purpose.tex index f71b49cd..231ee722 100644 --- a/purpose.tex +++ b/purpose.tex @@ -63,7 +63,7 @@ \section{Purpose} % Goksel - Removed this sentence:Therefore, SBOL 2.0 supersedes SBOL 1.1, and developers are encouraged to use it for all new software efforts. Since SBOL 2.0 can encode all data previously encoded in SBOL 1.1, developers are also encouraged to upgrade their SBOL 1.1 compliant software tools to use SBOL 2.0 data objects. -As discussed previously, SBOL 2.0 allows designs to be described beyond the simple annotated DNA sequence offered in SBOL 1.1. Of equal importance in SBOL 2.0 is the explicit provision of mechanisms that allows SBOL to be easily extended~\cite{sec:Annotation}. The intent of SBOL is to allow designs of synthetic biological systems to be fully described so that such designs can be reproduced. However SBOL does not currently offer a full catalog of data %Note I'm using data not metadata to avoid technical terms at this state +As discussed previously, SBOL 2.0 allows designs to be described beyond the simple annotated DNA sequence offered in SBOL 1.1. Of equal importance in SBOL 2.0 is the explicit provision of mechanisms that allows SBOL to be easily extended (see \ref{sec:Annotations}). The intent of SBOL is to allow designs of synthetic biological systems to be fully described so that such designs can be reproduced. However SBOL does not currently offer a full catalog of data %Note I'm using data not metadata to avoid technical terms at this state to allow one to achieve complete reproducibility. For example the proposed standard does not yet include environmental and host context information or details on how the performance of the design is measured. Such details can now be included in SBOL through an explicit extension mechanism. Three scenarios are envisaged for extending SBOL: \begin{itemize} From e123539c6b0177df0c4f96265191c3b903473d71 Mon Sep 17 00:00:00 2001 From: Chris Myers Date: Thu, 23 Jul 2015 15:29:56 +0000 Subject: [PATCH 303/317] Update on Overleaf. --- overview.tex | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/overview.tex b/overview.tex index 2f1fe6ed..d37c5871 100644 --- a/overview.tex +++ b/overview.tex @@ -53,14 +53,11 @@ \section{Overview of SBOL} \end{center} \end{figure} -\ref{images:overview2} additionally shows that when it is possible to incorporate a single object into multiple parents, we always incorporate that object by reference. We do not directly incorporate it by copy. Each reference is formed by a pointer object. Pointers refer from a parent to a child. There are three distinct pointer classes: \sbol{Component}, \sbol{Module}, and \sbol{FunctionalComponent}. A \sbol{Component} points from a \sbol{ComponentDefinition} to a child \sbol{ComponentDefinition}, incorporating it by reference into the parent structure. A \sbol{Module} points from a \sbol{ModuleDefinition} to a child \sbol{ModuleDefinition}, likewise incorporating it by reference into the parent system. Similarly, a parent \sbol{ModuleDefinition} on the functional side of a model may incorporate a child \sbol{ComponentDefinition} from the model's physical side by means of a \sbol{FunctionalComponent} reference. These three pointer classes allow the efficient reuse of definitions in multiple locations. +\ref{images:overview2} additionally shows that when it is possible to incorporate a single object into multiple parents, we always incorporate that object by reference. We do not directly incorporate it by copy. Each reference is formed by a pointer object. Pointers refer from a parent to a child. There are three distinct pointer classes: \sbol{Component}, \sbol{Module}, and \sbol{FunctionalComponent}. A \sbol{Component} points from a \sbol{ComponentDefinition} to a child \sbol{ComponentDefinition}, incorporating it by reference into the parent structure. A \sbol{Module} points from a \sbol{ModuleDefinition} to a child \sbol{ModuleDefinition}, likewise incorporating the child by reference into the parent system. Similarly, a parent \sbol{ModuleDefinition} on the functional side of a model may incorporate a child \sbol{ComponentDefinition} from the model's physical side by means of a \sbol{FunctionalComponent} reference. These three pointer classes allow the efficient reuse of definitions in multiple locations. % Mike Bissell - I rewrote the first half of the paragraph that used to live here per Chris Myers's request. Please review my changes. (Also, could somebody please fix the right alignment?) Rationale: the old version did not have a single theme, and it obscured what is essentially a simple pattern. This edit prompted the insertion of extra verbiage re: the three "pointer classes" above, in section 5.2. I also eliminated two out of the three transitions using "finally" or "final," because only one item can come last. -SBOL 2.0 provides a few helper classes such as \sbol{Location}, which generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint}, which generalizes the relative positioning information among \sbol{Component}s. - -There are also -\sbol{Participation}s, which allow \sbol{Interaction} objects to specify the roles of their participants while referencing the \sbol{FunctionalComponent}s, so that these can stand on their own. - +SBOL 2.0 provides a few helper classes. First, \sbol{Location} generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint}, which generalizes the relative positioning information among \sbol{Component}s. +There are also \sbol{Participation}s, which allow \sbol{Interaction} objects to specify the roles of their participants while referencing the \sbol{FunctionalComponent}s, so that these can stand on their own. Additionally, there is the \sbol{MapsTo} class (not shown), which enables connections to be made between \sbol{Component}s and \sbol{FunctionalComponent}s across various levels of the design hierarchy. The next section provides complete definitions and details for all of these classes. % Mike Bissell - Changed "at various levels" to "across various levels." Please confirm. From 21756db524a1eb0d5dd663e22fe0b785eb886fef Mon Sep 17 00:00:00 2001 From: jakebeal Date: Thu, 23 Jul 2015 11:02:39 -0500 Subject: [PATCH 304/317] improve parent/child link explanation --- vocabulary.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vocabulary.tex b/vocabulary.tex index 53131e1e..4c33a829 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -28,7 +28,7 @@ \subsection{SBOL Class Names} \begin{itemize} \item \emph{\sbol{Component}}: -Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ComponentDefinition}. Represents a specific occurrence or instance of an entity within the design of a more complex entity. Because the same definition may appear at multiple locations in a design, a single \sbol{ComponentDefinition} may have zero or more parent \sbol{ComponentDefinition}s, and each such parent-child link requires its own, distinct \sbol{Component}. +Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ComponentDefinition}. Represents a specific occurrence or instance of an entity within the design of a more complex entity. Because the same definition may appear at multiple locations in a design, a single \sbol{ComponentDefinition} may have multiple different links to the same child \sbol{ComponentDefinition}s, and each such parent-child link requires its own, distinct \sbol{Component}. % Mike Bissell - Clarified the role of this class to match changes below in section six. Introduced the term "pointer class" after consulting briefly with Chris M. The emphasis on pointer classes is on the definitions they point to. WAS: "Represents a specific occurrence or instance of a single entity within the design of a more complex component. Each Component is associated with a ComponentDefinition, and there may be many different instances at different locations in a design that share the same definition." I felt this was necessary because it is too easy for a novice to get confused about Component vs. ComponentDefinition here, where they first encounter Component, even before ComponentDefinition is defined. \item \emph{\sbol{Location}}: @@ -55,7 +55,7 @@ \subsection{SBOL Class Names} \begin{itemize} \item \emph{\sbol{FunctionalComponent}}: -Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of an entity within the design of a system. Because the same definition may appear at multiple locations in a design, a single \sbol{ComponentDefinition} may have zero or more parent \sbol{ModuleDefinition}s, and each such parent-child link requires its own, distinct \sbol{FunctionalComponent}. +Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of an entity within the design of a system. Because the same definition may appear at multiple locations in a design, a single \sbol{ComponentDefinition} may have multiple different links to the same child \sbol{ModuleDefinition}s, and each such parent-child link requires its own, distinct \sbol{FunctionalComponent}. % Mike Bissell - As above, reworded to clarify the structure of these relationships, with special attention to the pointer-like nature of this type. WAS: "Represents a specific occurrence or instance of an ComponentDefinition within a ModuleDefinition. Exactly like a Component, except that it can be associated with information about its context of use in the Module, rather than in the context of a containing ComponentDefinition." I eliminated the bit about it being "exactly like... except," because with those exceptions, the likeness is *inexact*. Instead, I deliberately reworked the paragraph's phrasing and contents to emphasize this class's similarity to the other two pointer classes. I felt this was necessary because it is easy for a novice to get confused about FunctionalComponent vs. Component vs. ComponentDefinition in this context. \item \emph{\sbol{Interaction}}: @@ -66,7 +66,7 @@ \subsection{SBOL Class Names} In this case, a referencing \sbol{ComponentInstance} needs to be created in the design and a \sbol{MapsTo} is added to the instance for the sub-design, which associates the original and the referencing instance. \item \emph{\sbol{Module}}: -Pointer class. Incorporates a child \sbol{ModuleDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of a subsystem within the design of a larger system. Because the same definition may appear at multiple locations in a design, a single \sbol{ModuleDefinition} may have zero or more parent \sbol{ModuleDefinition}s, and each such parent-child link requires its own, distinct \sbol{Module}. +Pointer class. Incorporates a child \sbol{ModuleDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of a subsystem within the design of a larger system. Because the same definition may appear at multiple locations in a design, a single \sbol{ModuleDefinition} may have multiple different links to the same child \sbol{ModuleDefinition}s, and each such parent-child link requires its own, distinct \sbol{Module}. % Mike Bissell - Reworked this paragraph like I did for Component and FunctionalComponent (see above). WAS: "Represents a specific occurrence or instance of a sub-system within a larger design. Each Module is associated with a ModuleDefinition, and there may be many different instances at different locations in a design that share the same definition." I felt this was necessary because it is way too easy for a novice to get confused about Module vs. ModuleDefinition in this (introductory) context. \item \emph{\sbol{Participation}}: From ade85956175bba57eefc7292c21fd10b379b5181 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Thu, 23 Jul 2015 11:06:37 -0500 Subject: [PATCH 305/317] additional tuning of mike's words describing references --- overview.tex | 4 +++- vocabulary.tex | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/overview.tex b/overview.tex index d37c5871..c2c5703b 100644 --- a/overview.tex +++ b/overview.tex @@ -53,7 +53,9 @@ \section{Overview of SBOL} \end{center} \end{figure} -\ref{images:overview2} additionally shows that when it is possible to incorporate a single object into multiple parents, we always incorporate that object by reference. We do not directly incorporate it by copy. Each reference is formed by a pointer object. Pointers refer from a parent to a child. There are three distinct pointer classes: \sbol{Component}, \sbol{Module}, and \sbol{FunctionalComponent}. A \sbol{Component} points from a \sbol{ComponentDefinition} to a child \sbol{ComponentDefinition}, incorporating it by reference into the parent structure. A \sbol{Module} points from a \sbol{ModuleDefinition} to a child \sbol{ModuleDefinition}, likewise incorporating the child by reference into the parent system. Similarly, a parent \sbol{ModuleDefinition} on the functional side of a model may incorporate a child \sbol{ComponentDefinition} from the model's physical side by means of a \sbol{FunctionalComponent} reference. These three pointer classes allow the efficient reuse of definitions in multiple locations. +\ref{images:overview2} additionally shows that when it is possible to incorporate a single object into multiple parents, we always incorporate that object by reference. We do not directly incorporate it by copy, as when an object is used many times, keeping many copies can become both very inefficient and also difficult to maintain. +Instead, each reference is handled by a pointer object. +Pointers refer from a parent to a child. There are three distinct pointer classes: \sbol{Component}, \sbol{Module}, and \sbol{FunctionalComponent}. A \sbol{Component} points from a \sbol{ComponentDefinition} to a child \sbol{ComponentDefinition}, incorporating it by reference into the parent structure. A \sbol{Module} points from a \sbol{ModuleDefinition} to a child \sbol{ModuleDefinition}, likewise incorporating the child by reference into the parent system. Similarly, a parent \sbol{ModuleDefinition} on the functional side of a model may incorporate a child \sbol{ComponentDefinition} from the model's physical side by means of a \sbol{FunctionalComponent} reference. These three pointer classes allow the efficient reuse of definitions in multiple locations. % Mike Bissell - I rewrote the first half of the paragraph that used to live here per Chris Myers's request. Please review my changes. (Also, could somebody please fix the right alignment?) Rationale: the old version did not have a single theme, and it obscured what is essentially a simple pattern. This edit prompted the insertion of extra verbiage re: the three "pointer classes" above, in section 5.2. I also eliminated two out of the three transitions using "finally" or "final," because only one item can come last. SBOL 2.0 provides a few helper classes. First, \sbol{Location} generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint}, which generalizes the relative positioning information among \sbol{Component}s. diff --git a/vocabulary.tex b/vocabulary.tex index 4c33a829..c5e4b235 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -28,7 +28,7 @@ \subsection{SBOL Class Names} \begin{itemize} \item \emph{\sbol{Component}}: -Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ComponentDefinition}. Represents a specific occurrence or instance of an entity within the design of a more complex entity. Because the same definition may appear at multiple locations in a design, a single \sbol{ComponentDefinition} may have multiple different links to the same child \sbol{ComponentDefinition}s, and each such parent-child link requires its own, distinct \sbol{Component}. +Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ComponentDefinition}. Represents a specific occurrence or instance of an entity within the design of a more complex entity. Because the same definition may appear at multiple locations in a design, a single \sbol{ComponentDefinition} may have multiple different links to the same child \sbol{ComponentDefinition}, and each such parent-child link requires its own, distinct \sbol{Component}. % Mike Bissell - Clarified the role of this class to match changes below in section six. Introduced the term "pointer class" after consulting briefly with Chris M. The emphasis on pointer classes is on the definitions they point to. WAS: "Represents a specific occurrence or instance of a single entity within the design of a more complex component. Each Component is associated with a ComponentDefinition, and there may be many different instances at different locations in a design that share the same definition." I felt this was necessary because it is too easy for a novice to get confused about Component vs. ComponentDefinition here, where they first encounter Component, even before ComponentDefinition is defined. \item \emph{\sbol{Location}}: @@ -55,7 +55,7 @@ \subsection{SBOL Class Names} \begin{itemize} \item \emph{\sbol{FunctionalComponent}}: -Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of an entity within the design of a system. Because the same definition may appear at multiple locations in a design, a single \sbol{ComponentDefinition} may have multiple different links to the same child \sbol{ModuleDefinition}s, and each such parent-child link requires its own, distinct \sbol{FunctionalComponent}. +Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of an entity within the design of a system. Because the same definition may appear at multiple locations in a design, a single \sbol{ModuleDefinition} may have multiple different links to the same child \sbol{ComponentDefinition}, and each such parent-child link requires its own, distinct \sbol{FunctionalComponent}. % Mike Bissell - As above, reworded to clarify the structure of these relationships, with special attention to the pointer-like nature of this type. WAS: "Represents a specific occurrence or instance of an ComponentDefinition within a ModuleDefinition. Exactly like a Component, except that it can be associated with information about its context of use in the Module, rather than in the context of a containing ComponentDefinition." I eliminated the bit about it being "exactly like... except," because with those exceptions, the likeness is *inexact*. Instead, I deliberately reworked the paragraph's phrasing and contents to emphasize this class's similarity to the other two pointer classes. I felt this was necessary because it is easy for a novice to get confused about FunctionalComponent vs. Component vs. ComponentDefinition in this context. \item \emph{\sbol{Interaction}}: @@ -66,7 +66,7 @@ \subsection{SBOL Class Names} In this case, a referencing \sbol{ComponentInstance} needs to be created in the design and a \sbol{MapsTo} is added to the instance for the sub-design, which associates the original and the referencing instance. \item \emph{\sbol{Module}}: -Pointer class. Incorporates a child \sbol{ModuleDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of a subsystem within the design of a larger system. Because the same definition may appear at multiple locations in a design, a single \sbol{ModuleDefinition} may have multiple different links to the same child \sbol{ModuleDefinition}s, and each such parent-child link requires its own, distinct \sbol{Module}. +Pointer class. Incorporates a child \sbol{ModuleDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of a subsystem within the design of a larger system. Because the same definition may appear at multiple locations in a design, a single \sbol{ModuleDefinition} may have multiple different links to the same child \sbol{ModuleDefinition}, and each such parent-child link requires its own, distinct \sbol{Module}. % Mike Bissell - Reworked this paragraph like I did for Component and FunctionalComponent (see above). WAS: "Represents a specific occurrence or instance of a sub-system within a larger design. Each Module is associated with a ModuleDefinition, and there may be many different instances at different locations in a design that share the same definition." I felt this was necessary because it is way too easy for a novice to get confused about Module vs. ModuleDefinition in this (introductory) context. \item \emph{\sbol{Participation}}: From 6186f809c4ccf43218aebc88ed43bc3e33642ff5 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 23 Jul 2015 23:17:16 +0000 Subject: [PATCH 306/317] Update on Overleaf. --- history.tex | 49 ++++++++++++++++++------------------------------- overview.tex | 3 +-- 2 files changed, 19 insertions(+), 33 deletions(-) diff --git a/history.tex b/history.tex index be5852b5..1271499a 100644 --- a/history.tex +++ b/history.tex @@ -3,34 +3,21 @@ \section{A Brief History of SBOL} % ----------------------------------------------------------------------------- %Add yourself if you have helped and aren't on the list -In early 2006, Microsoft issued a call for proposals in the field of computational synthetic biology. A proposal was submitted from UW with the aim to kickstart an effort to develop exchange standards for designs in the new field of synthetic biology. Along with five other groups, the UW group was successful in securing a modest grant. -Part of the funds were used to fund the initial standards meeting held in Seattle on April 26-27, 2008. -The organizers of the initial meeting were Herbert Sauro, Sean Sleight and Deepak Chandran. -The meeting included talks by Raik Gruenberg, Kim de Mora from the Jason Kelly lab, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Michal Galdzicki. -Michal was to go on and lead the development of PoBol, as it was then called. Mike's early efforts were instrumental in making SBOL the success it is today. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. -These were held at the Synthetic Biology Data Exchange Working Group meeting at Stanford on July 26, 2009 and Anaheim, CA on June 13, 2010. -Included at the Anaheim meeting were Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. -The original SBOL 1.0 was developed at these early meetings through Michal's efforts, together with the small group of other dedicated researchers. -It was also that the Anaheim meeting that a decision was made to write a letter to Nature Biotechnology highlighting the issue of reproducibility in synthetic biology. This letter was initiated by Jean Peccoud and submitted by participants of the Anaheim meeting. - -An important meeting was held in 2011 at Blacksburg, Virginia on January 7-10, 2011 where new members joined the group resulting in 17 individuals at the meeting. New members included Cesar Rodriguez, Mandy Wilson, Guy-Bart Stan, Chris Myers, and Nicholas Roehner, and the overall pace of development quickened. - -At a meeting in San Diego in June 2011, the SBOL Developers Group was officially established, rules of governance were established, and the first SBOL editors were elected: Mike Galdzicki, Cesar Rodriguez, and Mandy Wilson. -At this time, Allan Kuchinsky, a research scientist at Agilent, joined the effort, and he was able to obtain some resources to begin development on what was to become libSBOLj. -Kevin Clancy from LifeTechnologies also joined at this time, as well as Anil Wipat, Matthew Pocock, and Goksel Misirli from Newcastle University, and Jacob Beal, Aaron Adler, and Fusun Yaman Sirin from Raytheon BBN Technologies. -In October 2011, SBOL 1.0 was officially released. At our next meeting in Seattle in January 2012, Herbert Sauro was elected the SBOL Chair, and two new editors were added: Matthew Pocock and Ernst Oberortner. -At this meeting, the first data exchange between software tools using SBOL was conducted when a design was passed from Newcastle University's VirtualParts Repository to Boston University's Eugene tool, and finally to University of Utah's iBioSim tool. - -In March 2012, SBOL 1.1 was released, the version that this document replaces. -SBOL 1.1 did not make any major change, but provided a number of small adjustments and clarifications on the particulars of SBOL's intended use and implementation, particularly around the annotation of sequences and their locational relations. -The 8th SBOL workshop was held in November 2012 at Boston University, and the major topic of discussion was the next version of SBOL. SBOL 1.1 is limited to describing hierarchical DNA sequences. -Several extensions were discussed at this meeting, such as a means to describe genetic regulation, which later became the \sbol{Interaction} class, and a means to group components, which later became the \sbol{Module} class. -In April 2013, at the 9th SBOL workshop at Newcastle University, the framework for SBOL 2.0 was agreed upon. -Nicholas Roehner, Matthew Pocock, and Ernst Oberortner then began work on a draft proposal for SBOL 2.0. In January 2014 at the 10th SBOL workshop, this draft was discussed and many refinements were debated and approved. -Another important decision at this meeting was that SBOL should be part of the COMBINE community of standards (\url{www.co.mbine.org}). - -In the Spring and Summer of 2014, several important events occurred. In April, several SBOL representatives attended Harmony in Manchester UK to discuss joining the COMBINE community, which was approved by both sides shortly thereafter. In May, Herbert Sauro, John Gennari, and Chris Myers received a grant from the National Science Foundation to support SBOL (this document and the supporting software are due in no small part to this support). - -In June, a description and our initial, multi-institutional demonstration of the use of SBOL 1.1 was published in Nature Biotechnology \cite{galdzicki2014synthetic}. In July, Nicholas Roehner presented a proposal for the next version of SBOL at the SEED Conference in Los Angeles \cite{roehner2014proposed}. Finally, in August 2014, the SBOL community attended their first COMBINE workshop as members of the COMBINE community. At this meeting, many of the final details of SBOL 2.0 were discussed, and the data model presented here is essentially the result of this meeting. - -At the Harmony meeting in April 2015 in Wittenberg, Germany, the work on this specification began in earnest. The key contributors at this meeting and the previous one were: Bryan Bartley (University of Washington), Jacob Beal (Raytheon BBN Technologies), Kevin Clancy (ThermoFischer), Bryan Der (MIT), John Gennari (University of Washington), Curtis Madsen (Newcastle University), Goksel Misirli (Newcastle University), Chris J. Myers (University of Utah), Tramy Nguyen (University of Utah), Matthew Pocock (Newcastle University and Turing Ate My Hamster LTD), Jackie Quinn (Google), Nicholas Roehner (Boston University), Herbert M. Sauro (University of Washington), Anil Wipat (Newcastle University), and Zhen Zhang (University of Utah). \ No newline at end of file +The SBOL standard was kickstarted in 2006 in order to develop a data exchange standard for genetic designs. Several groups, led by Herbert Sauro's group from University of Washington, secured a modest grant from Microsoft in the field of computational synthetic biology which was used to fund the initial meeting in Seattle on April 26-27, 2008. This workshop was organized by Herbert Sauro, Sean Sleight and Deepak Chandran and included talks by Raik Gruenberg, Kim de Mora, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Michal Galdzicki. + +Michal's early efforts were instrumental in making SBOL the success it is today. As part of his doctoral work, Mike led the development of PoBol, as SBOL was originally called. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. The original SBOL 1.0 was developed by a small group of dedicated researchers calling themselves the Synthetic Biology Data Exchange Working Group meeting at Stanford in 2009 and Anaheim, CA in 2010. During the Anaheim meeting, the community decided to write a letter to Nature Biotechnology highlighting the issue of reproducibility in synthetic biology. This letter was initiated by Jean Peccoud and submitted by participants of the Anaheim meeting, including Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. The overall pace of development quickened when several new members joined at the next workshop in Blacksburg, Virginia on January 7-10, 2011. New members included Cesar Rodriguez, Mandy Wilson, Guy-Bart Stan, Chris Myers, and Nicholas Roehner. + +The SBOL Developers Group was officially established at a meeting in San Diego in June 2011. Rules of governance were established, and the first SBOL editors were elected: Mike Galdzicki, Cesar Rodriguez, and Mandy Wilson. At our next meeting in Seattle in January 2012, Herbert Sauro was elected the SBOL Chair, and two new editors were added: Matthew Pocock and Ernst Oberortner. New developers joining at these workshops included several representatives from industry, Kevin Clancy, Jacob Beal, Aaron Adler, and Fusun Yaman Sirin. New members hailing from Newcastle University included Anil Wipat, Matthew Pocock, and Goksel Misirli. + +Development of the first software library (libSBOLj) based on the SBOL standard was initiated by Allan Kuchinsky, a research scientist from Agilent, at the 2011 meeting. By the time of the 2012 meeting, the first data exchange between software tools using SBOL was conducted when a design was passed from Newcastle University's VirtualParts Repository to Boston University's Eugene tool, and finally to University of Utah's iBioSim tool. + +SBOL 1.0 was officially released in October 2011. In March 2012, SBOL 1.1 was released, the version that this document replaces. SBOL 1.1 did not make any major change, but provided a number of small adjustments and clarifications, particularly around the annotation of sequences and their locational relations. Multi-institutional data exchange using SBOL 1.1 was later demonstrated in Nature Biotechnology \cite{galdzicki2014synthetic}. + +While SBOL 1.1 has a number of advantages over the GenBank representation of DNA sequences, such as representing hierarchical organizations of DNA components, it is still limited in other respects. The major topic of discussion at the 8th SBOL Workshop at Boston University in November 2012 was how to address these shortcomings through extensions. Several extensions were discussed at this meeting, such as a means to describe genetic regulation, which later became important classes in the current 2.0 specification. + +A general framework for SBOL 2.0 emerged at the 9th SBOL workshop at Newcastle University in April 2013. Subsequently, Nicholas Roehner, Matthew Pocock, and Ernst Oberortner drafted a proposal for SBOL 2.0, and Nicholas presented this proposal at the SEED Conference in Los Angeles \cite{roehner2014proposed} in July 2014. The proposed 2.0 data model was discussed and debated over the course of the 10th, 11th, and 12th workshops. The actual specification document you are now reading was drafted at the 13th workshop in Wittenberg, Germany by the authors. The SBOL 2.0 data model presented here is essentially the result of these meetings and ongoing discussions conducted through the SBOL Developers email lists. + +The Computational Modeling in Biology Network (\href{www.co.mbine.org}{COMBINE}) holds regular workshops where synthetic biologists and systems biologists can work toward a common goal of integrating biological knowledge through inter-operable and non-overlapping data standards. In April of 2014, several SBOL Developers attended a COMBINE workshop and then proposed that SBOL join this larger standards community. The proposal passed and SBOL workshops have been co-located with COMBINE ever since the 11th workshop at the University of South California in August 2014. + +Current development of this SBOL 2.0 specification is funded in large part by a grant from the National Science Foundation (Collaborative award \#1355909). This document and the supporting software are due in no small part to this support. + diff --git a/overview.tex b/overview.tex index c2c5703b..d67e1b15 100644 --- a/overview.tex +++ b/overview.tex @@ -63,5 +63,4 @@ \section{Overview of SBOL} Additionally, there is the \sbol{MapsTo} class (not shown), which enables connections to be made between \sbol{Component}s and \sbol{FunctionalComponent}s across various levels of the design hierarchy. The next section provides complete definitions and details for all of these classes. % Mike Bissell - Changed "at various levels" to "across various levels." Please confirm. -There is one final, critical element of SBOL 2.0: its extension mechanism. This extension mechanism enables the storage of application specific information within an SBOL document. It is also intended to support the prototyping of data representations whose format is not yet a matter of consensus within the community. In particular, each SBOL entity can be annotated using the \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \sbol{GenericTopLevel} entities. SBOL libraries make these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. - +There is one final, critical element of SBOL 2.0: its extension mechanism. This extension mechanism enables the storage of application specific information within an SBOL document. It is also intended to support the prototyping of data representations whose format is not yet a matter of consensus within the community. In particular, each SBOL entity can be annotated using the \emph{Resource Description Framework} (RDF). Moreover, application specific entities in the form of RDF documents can be included as \sbol{GenericTopLevel} entities. SBOL libraries make these annotations and entities available to tools as generic properties and objects that are preserved during subsequent read and write operations. \ No newline at end of file From 8bb3dbb644decefa0188ccfc09842104d3535f7d Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Fri, 31 Jul 2015 21:33:10 +0000 Subject: [PATCH 307/317] Update on Overleaf. --- apdx-validation.tex | 241 ++++++++++++--------- copyright.tex | 4 +- example_uml/toggle_4.pdf | Bin 5568 -> 5568 bytes examples_model.tex | 16 +- history.tex | 18 +- model.tex | 441 ++++++++++++++++++++------------------- overview.tex | 8 +- practices.tex | 62 +++--- purpose.tex | 80 ++++--- serialization.tex | 22 +- vocabulary.tex | 19 +- 11 files changed, 485 insertions(+), 426 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 9499a2d2..670fa503 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -6,12 +6,12 @@ \section{Validation Rules} \label{validation} -This section summarizes all the conditions that MUST be or -are RECOMMENDED to be true of an SBOL Version~2 document. +This section summarizes all the conditions that either MUST be or +are RECOMMENDED to be true of an SBOL Version~2.0 document. There are different degrees of rule strictness. Rules of the former kind are strict SBOL validation rules---data encoded in SBOL MUST conform to all of them in order to be considered valid. Rules of the latter kind -are consistency rules that are RECCOMENDED for following best practices. To help highlight these differences, we use the +are consistency rules that SBOL data are RECOMENDED to adhere to as a best practice. To help highlight these differences, we use the following symbols next to the rule numbers: \begin{description} @@ -33,10 +33,10 @@ \section{Validation Rules} The validation rules listed in the following subsections should all be stated or implied in the rest of this specification document. They are enumerated here for convenience and to provide a ``master -checklist'' for SBOL compliance. In case of a conflict between this +checklist'' for SBOL validation. In case of a conflict between this section and other portions of the specification (though there should -be none), this section is considered authoritative for purpose of -determining SBOL document compliance. +be none), this section is considered authoritative for the purpose of +determining the validity of an SBOL document. For \notice convenience and brievity, we use the shorthand ``\token{sbol:x}'' to stand for an attribute or element name \token{x} @@ -46,7 +46,7 @@ \section{Validation Rules} write a full explanation everywhere we refer to an attribute or element in the SBOL specification namespace. -\subsubsection*{General rules about an SBOL document} +\subsubsection*{General rules for an SBOL document} \setcounter{sbolCtr}{10101} \printValid{An SBOL document MUST declare the use of the following XML namespace: \\ \textls[-25]{\uri{http://sbols.org/v2\#}}.\\ @@ -55,89 +55,106 @@ \subsubsection*{General rules about an SBOL document} \printValid{An SBOL document MUST declare the use of the following XML namespace: \\ \textls[-25]{\uri{http://www.w3.org/1999/02/22-rdf-syntax-ns\#}}.\\ Reference: \sec{xml-namespace}} -\printValid{An SBOL document MUST declare the use of the following XML namespace when it includes any \sbol{name} or \sbol{description} properties: \\ \textls[-25]{\uri{http://purl.org/dc/terms/}}.\\ +\printValid{If an SBOL document includes any \sbol{name} or \sbol{description} properties, then it MUST declare the use of the following XML namespace: \\ \textls[-25]{\uri{http://purl.org/dc/terms/}}.\\ Reference: \sec{xml-namespace}} -\printValid{An SBOL document MUST declare the use of the following XML namespace when it includes any \sbol{wasDerivedFrom} properties: \\ \textls[-25]{\uri{http://www.w3.org/ns/prov\#}}.\\ Reference: \sec{xml-namespace}} +\printValid{If an SBOL document includes any \sbol{wasDerivedFrom} properties, then it MUST declare the use of the following XML namespace: \\ \textls[-25]{\uri{http://www.w3.org/ns/prov\#}}.\\ Reference: \sec{xml-namespace}} \subsubsection*{Rules for the \class{Identified} class} \setcounter{sbolCtr}{10201} -\printValid{The \sbol{identity} is a REQUIRED property for all \sbol{Identified} objects and has a data type of URI with a syntax defined by:\\ +\printValid{The \sbol{identity} property of an \sbol{Identified} object is REQUIRED and MUST contain a \sbol{URI} that adheres to the syntax defined by:\\ \uri{http://www.w3.org/1999/02/22-rdf-syntax\#about} \\ Reference: \sec{sec:Identified}} -\printValid{The \sbol{persistentIdentity} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of \sbol{URI} with a syntax defined by:\\ \uri{http://www.w3.org/1999/02/22-rdf-syntax\#about}\\ +\printWarning{The \sbol{identity} property of an \sbol{Identified} object MUST be globally unique. \\ Reference: \sec{sec:Identified}} -\printValid{The \sbol{displayId} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String that is composed only of alphanumeric or underscore characters and MUST NOT begin with a digit.\\ Reference: \sec{sec:Identified}} +\printValid{The \sbol{persistentIdentity} property of an \sbol{Identified} object is OPTIONAL and MAY contain a \sbol{URI} that MUST adhere to the syntax defined by:\\ \uri{http://www.w3.org/1999/02/22-rdf-syntax\#about}\\ +Reference: \sec{sec:Identified}} + +\printValid{The \sbol{displayId} property of an \sbol{Identified} object is OPTIONAL and MAY contain a \sbol{String} that MUST be composed of only alphanumeric or underscore characters and MUST NOT begin with a digit.\\ Reference: \sec{sec:Identified}} + +\printModeling{The \sbol{displayId} property of an \sbol{Identified} object SHOULD be locally unique. \\ +Reference: \sec{sec:Identified}} + +\printValid{The \sbol{version} property of an \sbol{Identified} object is OPTIONAL and MAY contain a \sbol{String} that MUST be composed of only alphanumeric characters, underscores, hyphens, or periods and MUST begin with a digit.\\ Reference: \sec{sec:Identified}} -\printValid{The \sbol{version} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String that is composed only of alphanumeric characters, underscores, hyphens, and periods and MUST begin with a digit.\\ Reference: \sec{sec:Identified}} +\printModeling{The \sbol{version} property of an \sbol{Identified} object SHOULD follow the conventions of semantic versioning as implemented by Maven. \\ +Reference: \sec{sec:Identified}} -\printValid{The \sbol{annotations} field is an OPTIONAL list of for all \sbol{Identified} objects and, if provided, includes references to \sbol{Annotation} objects.\\ Reference: \sec{sec:Identified}} +\printValid{The \sbol{wasDerivedFrom} property of an \sbol{Identified} object is OPTIONAL and MAY contain a \sbol{URI}. \\ Reference: \sec{sec:Identified}} -\printValid{The \sbol{wasDerivedFrom} property is OPTIONAL for all \sbol{Identified} objects and, if provided, has a data type of \sbol{URI}. \\ Reference: \sec{sec:Identified}} +\printValid{The \sbol{wasDerivedFrom} property of an \sbol{Identified} object MUST NOT contain a \sbol{URI} reference to the \sbol{Identified} object itself. \\ Reference: \sec{sec:Identified}} -\printValid{The \sbol{name} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String. \\ Reference: \sec{sec:Identified}} +\printWarning{\sbol{Identified} objects MUST NOT form circular reference chains via their \sbol{wasDerivedFrom} properties.\\ Reference: \sec{sec:Identified}} -\printValid{The \sbol{description} is an OPTIONAL property for all \sbol{Identified} objects and, if provided, has a data type of String. \\ Reference: \sec{sec:Identified}} +\printWarning{If the \sbol{wasDerivedFrom} property of one \sbol{Identified} object refers to another \sbol{Identified} object with the same \sbol{persistentIdentity} property, then \sbol{version} property of the second \sbol{Identified} object MUST precede that of the first if both objects have a \sbol{version}.\\ Reference: \sec{sec:Identified}} -\printModeling{The \sbol{displayId} of a compliant object is REQUIRED. \\ Reference: \sec{sec:compliant}} +\printValid{The \sbol{name} property of an \sbol{Identified} object is OPTIONAL and MAY contain a \sbol{String}. \\ Reference: \sec{sec:Identified}} -\printModeling{The \sbol{persistentIdentity} of a compliant top level object is REQUIRED and MUST end with a delimiter ('/', '\#', or ':') followed by the \sbol{displayId} of the object.\\ Reference: \sec{sec:compliant}} +\printValid{The \sbol{description} property of an \sbol{Identified} object is OPTIONAL and MAY contain a \sbol{String}. \\ Reference: \sec{sec:Identified}} -\printModeling{The \sbol{persistentIdentity} of a compliant child object is REQUIRED and MUST begin with the\\ \sbol{persistentIdentity} of its parent object and be immediately followed by a delimiter ('/', '\#', or ':') and the \sbol{displayId} of the object.\\ Reference: \sec{sec:compliant}} +\printValid{The \sbol{annotations} property of an \sbol{Identified} object is OPTIONAL and MAY contain a set of \sbol{Annotation} objects.\\ Reference: \sec{sec:Identified}} -\printModeling{The \sbol{identity} of a compliant object MUST either be equal to the \sbol{persistentIdentity} when no \sbol{version} is specified or equal to "\refObj{persistentIdentity}/\refObj{version}" when a \sbol{version} is provided.\\ Reference: \sec{sec:compliant}} +\printModeling{The \sbol{displayId} property of a compliant \sbol{Identified} object is REQUIRED. \\ Reference: \sec{sec:compliant}} -\printModeling{The \sbol{version} of a compliant child object is REQUIRED to be equal to the \sbol{version} of its parent object.\\ Reference: \sec{sec:compliant}} +\printModeling{The \sbol{persistentIdentity} property of a compliant \sbol{TopLevel} object is REQUIRED and MUST contain a \sbol{URI} that ends with a delimiter ('/', '\#', or ':') followed by the \sbol{displayId} of the \sbol{TopLevel} object.\\ Reference: \sec{sec:compliant}} + +\printModeling{The \sbol{persistentIdentity} property of a compliant \sbol{Identified} object that is not also a \sbol{TopLevel} object is REQUIRED and MUST contain a \sbol{URI} that begins with the \sbol{persistentIdentity} of the compliant object's parent and is immediately followed by a delimiter ('/', '\#', or ':') and the \sbol{displayId} of the compliant object.\\ Reference: \sec{sec:compliant}} + +\printModeling{If a compliant \sbol{Identified} object has no \sbol{version} property, then its \sbol{identity} property MUST contain the same \sbol{URI} as its \sbol{persistentIdentity} property. Otherwise, the compliant object's \sbol{identity} property MUST contain a \sbol{URI} that begins with its \sbol{persistentIdentity} and is immediately followed by a delimiter ('/', '\#', or ':') and its \sbol{version}.\\ Reference: \sec{sec:compliant}} + +\printModeling{The \sbol{version} property of a compliant \sbol{Identified} object that is not also a \sbol{TopLevel} object is REQUIRED to contain the same \sbol{String} as the \sbol{version} property of the compliant object's parent.\\ Reference: \sec{sec:compliant}} \subsubsection*{Rules for the \class{TopLevel} class} \setcounter{sbolCtr}{10301} -\printValid{A \sbol{TopLevel} object inherits all properties of a \sbol{Identified} object.\\ Reference: \sec{sec:TopLevel}} +\printValid{A \sbol{TopLevel} object MUST inherit all properties of the \sbol{Identified} class.\\ Reference: \sec{sec:TopLevel}} \subsubsection*{Rules for the \class{Sequence} class} \setcounter{sbolCtr}{10401} \printValid{A \sbol{Sequence} MUST inherit all properties of the \sbol{TopLevel} class.\\ Reference: \sec{sec:Sequence}} -\printValid{The \sbol{elements} property of a \sbol{Sequence} is REQUIRED and MUST contain a \external{String}.\\ Reference: \sec{sec:Sequence}} +\printValid{The \sbol{elements} property of a \sbol{Sequence} is REQUIRED and MUST contain a \sbol{String}.\\ Reference: \sec{sec:Sequence}} -\printValid{The \sbol{encoding} property of \sbol{Sequence} is REQUIRED and MUST contain a \external{URI}.\\ Reference: \sec{sec:Sequence}} +\printValid{The \sbol{encoding} property of \sbol{Sequence} is REQUIRED and MUST contain a \sbol{URI}.\\ Reference: \sec{sec:Sequence}} + +\printWarning{The \sbol{encoding} property of a \sbol{Sequence} MUST indicate how the \sbol{elements} property of the \sbol{Sequence} is to be formed and interpreted.\\ Reference: \sec{sec:Sequence}} \printWarning{The \sbol{elements} property of a \sbol{Sequence} MUST be consistent with its \sbol{encoding} property.\\ Reference: \sec{sec:Sequence}} -\printWarning{The \sbol{encoding} property of a \sbol{Sequence} MUST contain a \external{URI} from \ref{tbl:sequence_encodings} if it is well-described by this \external{URI}.\\ Reference: \sec{sec:Sequence}} +\printWarning{The \sbol{encoding} property of a \sbol{Sequence} MUST contain a \sbol{URI} from \ref{tbl:sequence_encodings} if it is well-described by this \sbol{URI}.\\ Reference: \sec{sec:Sequence}} \subsubsection*{Rules for the \class{ComponentDefinition} class} \setcounter{sbolCtr}{10501} \printValid{A \sbol{ComponentDefinition} MUST inherit all properties of the \sbol{TopLevel} class.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} is REQUIRED and MUST contain a non-empty set of \external{URI}s.\\ Reference: \sec{sec:ComponentDefinition}} +\printValid{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} is REQUIRED and MUST contain a non-empty set of \sbol{URI}s.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST NOT contain more than one \external{URI} from \ref{tbl:componentdefinition_types}.\\ Reference: \sec{sec:ComponentDefinition}} +\printValid{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST NOT contain more than one \sbol{URI} from \ref{tbl:componentdefinition_types}.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{Each \external{URI} contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that describes the category of biochemical or physical entity that is represented by the \sbol{ComponentDefinition}.\\ Reference: \sec{sec:ComponentDefinition}} +\printWarning{Each \sbol{URI} contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that describes the category of biochemical or physical entity that is represented by the \sbol{ComponentDefinition}.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_types} if it is well-described by this \external{URI}.\\ Reference: \sec{sec:ComponentDefinition}} +\printWarning{The \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST contain a \sbol{URI} from \ref{tbl:componentdefinition_types} if it is well-described by this \sbol{URI}.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{All \external{URI}s contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to non-conflicting ontology terms.\\ Reference: \sec{sec:ComponentDefinition}} +\printWarning{All \sbol{URI}s contained by the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} MUST refer to non-conflicting ontology terms.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \external{URI}s.\\ Reference: \sec{sec:ComponentDefinition}} +\printValid{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{URI}s.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{Each \external{URI} contained by the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that clarifies the potential function of the \sbol{ComponentDefinition} in a biochemical or physical context.\\ Reference: \sec{sec:ComponentDefinition}} +\printWarning{Each \sbol{URI} contained by the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that clarifies the potential function of the \sbol{ComponentDefinition} in a biochemical or physical context.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{Each \external{URI} contained by the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that is consistent with its \sbolmult{types:CD}{types} property.\\ Reference: \sec{sec:ComponentDefinition}} +\printWarning{Each \sbol{URI} contained by the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST refer to an ontology term that is consistent with its \sbolmult{types:CD}{types} property.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST contain a \external{URI} from \ref{tbl:componentdefinition_roles} if it is well-described by this \external{URI}.\\ Reference: \sec{sec:ComponentDefinition}} +\printWarning{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MUST contain a \sbol{URI} from \ref{tbl:componentdefinition_roles} if it is well-described by this \sbol{URI}.\\ Reference: \sec{sec:ComponentDefinition}} -\printModeling{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} SHOULD only contain a \external{URI} provided in \ref{tbl:componentdefinition_roles} if one of its \sbolmult{types:CD}{types} is cross-listed with this \external{URI}.\\ Reference: \sec{sec:ComponentDefinition}} +\printModeling{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} SHOULD only contain a \sbol{URI} provided in \ref{tbl:componentdefinition_roles} if one of its \sbolmult{types:CD}{types} is cross-listed with this \sbol{URI}.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \external{URI} references to \sbol{Sequence} objects.\\ Reference: \sec{sec:ComponentDefinition}} +\printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{URI} references to \sbol{Sequence} objects.\\ Reference: \sec{sec:ComponentDefinition}} -\printWarning{Each \external{URI} contained by the \sbol{sequences} property of a \sbol{ComponentDefinition} MUST refer to a \sbol{Sequence} object.\\ Reference: \sec{sec:ComponentDefinition}} +\printWarning{Each \sbol{URI} contained by the \sbol{sequences} property of a \sbol{ComponentDefinition} MUST refer to a \sbol{Sequence} object.\\ Reference: \sec{sec:ComponentDefinition}} \printWarning{The \sbol{Sequence} objects referred to by the \sbol{sequences} property of a \sbol{ComponentDefinition} MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties.\\ Reference: \sec{sec:ComponentDefinition}} @@ -169,17 +186,17 @@ \subsubsection*{Rules for the \class{ComponentInstance} class} \printValid{A \sbol{ComponentInstance} MUST inherit all properties of the \sbol{Identified} class.\\ Reference: \sec{sec:ComponentInstance}} -\printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \external{URI} reference to a \sbol{ComponentDefinition}.\\ Reference: \sec{sec:ComponentInstance}} +\printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{ComponentDefinition}.\\ Reference: \sec{sec:ComponentInstance}} -\printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} MUST NOT contain a \external{URI} reference to the \sbol{ComponentDefinition} that contains the \sbol{ComponentInstance}.\\ Reference: \sec{sec:ComponentInstance}} +\printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} MUST NOT contain a \sbol{URI} reference to the \sbol{ComponentDefinition} that contains the \sbol{ComponentInstance}.\\ Reference: \sec{sec:ComponentInstance}} -\printWarning{The \external{URI} contained by the \sbolmult{definition:CI}{definition} property must refer to a \sbol{ComponentDefinition} object.\\ Reference: \sec{sec:ComponentInstance}} +\printWarning{The \sbol{URI} contained by the \sbolmult{definition:CI}{definition} property must refer to a \sbol{ComponentDefinition} object.\\ Reference: \sec{sec:ComponentInstance}} \printWarning{\sbol{ComponentInstance} objects MUST NOT form circular reference chains via their \sbolmult{definition:CI}{definition} properties and parent \sbol{ComponentDefinition} objects.\\ Reference: \sec{sec:ComponentInstance}} \printValid{The \sbolmult{mapsTos:CI}{mapsTos} property of a \sbol{ComponentInstance} is OPTIONAL and MAY contain a set of \sbol{MapsTo} objects.\\ Reference: \sec{sec:ComponentInstance}} -\printValid{The \sbol{access} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \external{URI} from \ref{tbl:componentInstance_access} \\ Reference: \sec{sec:ComponentInstance}} +\printValid{The \sbol{access} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \sbol{URI} from \ref{tbl:componentInstance_access} \\ Reference: \sec{sec:ComponentInstance}} \subsubsection*{Rules for the \class{Component} class} \setcounter{sbolCtr}{10701} @@ -191,23 +208,25 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{A \sbol{MapsTo} MUST inherit all properties of the \sbol{Identified} class.\\ Reference: \sec{sec:MapsTo}} -\printValid{The \sbol{local} property of a \sbol{MapsTo} is REQUIRED and MUST contain a \external{URI} reference to a \sbol{ComponentInstance}.\\ Reference: \sec{sec:MapsTo}} +\printValid{The \sbol{local} property of a \sbol{MapsTo} is REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{ComponentInstance}.\\ Reference: \sec{sec:MapsTo}} \printValid{If a \sbol{MapsTo} is contained by a \sbol{Component} in a \sbol{ComponentDefinition}, then the \sbol{local} property of the \sbol{MapsTo} MUST refer to another \sbol{Component} in the \sbol{ComponentDefinition}.\\ Reference: \sec{sec:MapsTo}} \printValid{If a \sbol{MapsTo} is contained by a \sbol{FunctionalComponent} or \sbol{Module} in a \sbol{ModuleDefinition}, then the \sbol{local} property of the \sbol{MapsTo} MUST refer to another \sbol{FunctionalComponent} in the \sbol{ModuleDefinition}.\\ Reference: \sec{sec:MapsTo}} -\printValid{The \sbol{remote} property of a \sbol{MapsTo} is REQUIRED and MUST contain a \external{URI} reference to a \sbol{ComponentInstance}.\\ Reference: \sec{sec:MapsTo}} +\printValid{The \sbol{remote} property of a \sbol{MapsTo} is REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{ComponentInstance}.\\ Reference: \sec{sec:MapsTo}} -\printWarning{The \sbol{remote} property of a \sbol{MapsTo} MUST refer to a \sbol{ComponentInstance} with an \sbol{access} property that contains the \external{URI} \url{http://sbols.org/v2\#public}.\\ Reference: \sec{sec:MapsTo}} +\printWarning{The \sbol{remote} property of a \sbol{MapsTo} MUST refer to a \sbol{ComponentInstance} with an \sbol{access} property that contains the \sbol{URI} \url{http://sbols.org/v2\#public}.\\ Reference: \sec{sec:MapsTo}} -\printWarning{If a \sbol{MapsTo} is contained by a \sbol{ComponentInstance}, then the \sbol{remote} property of the \sbol{MapsTo} MUST refer to a \sbol{Component} in the \sbol{ComponentDefinition} that is referenced by the \sbolmult{definition:CI}{definition} of the \sbol{ComponentInstance}.\\ Reference: \sec{sec:MapsTo}} +\printWarning{If a \sbol{MapsTo} is contained by a \sbol{ComponentInstance}, then the \sbol{remote} property of the \sbol{MapsTo} MUST refer to a \sbol{Component} in the \sbol{ComponentDefinition} that is referenced by the \sbolmult{definition:CI}{definition} property of the \sbol{ComponentInstance}.\\ Reference: \sec{sec:MapsTo}} -\printWarning{If a \sbol{MapsTo} is contained by a \sbol{Module}, then the \sbol{remote} property of the \sbol{MapsTo} MUST refer to a \sbol{FunctionalComponent} in the \sbol{ModuleDefinition} that is referenced by the \sbolmult{definition:CI}{definition} of the \sbol{Module}.\\ Reference: \sec{sec:MapsTo}} +\printWarning{If a \sbol{MapsTo} is contained by a \sbol{Module}, then the \sbol{remote} property of the \sbol{MapsTo} MUST refer to a \sbol{FunctionalComponent} in the \sbol{ModuleDefinition} that is referenced by the \sbolmult{definition:CI}{definition} property of the \sbol{Module}.\\ Reference: \sec{sec:MapsTo}} -\printValid{The \sbol{refinement} property is REQUIRED and MUST contain a \external{URI} from \ref{tbl:mapsto_refinement}. +\printValid{The \sbol{refinement} property of a \sbol{MapsTo} is REQUIRED and MUST contain a \sbol{URI} from \ref{tbl:mapsto_refinement}. \\ Reference: \sec{sec:MapsTo}} +\printWarning{If the \sbol{refinement} property of a \sbol{MapsTo} contains the \sbol{URI} \url{http://sbols.org/v2\#verifyIdentical}, then the \sbol{ComponentInstance} objects referred to by \sbol{local} and \sbol{remote} properties of the \sbol{MapsTo} MUST refer to the same \sbol{ComponentDefinition} via their \sbolmult{definition:CI}{definition} properties.\\ Reference: \sec{sec:MapsTo}} + \subsubsection*{Rules for the \class{SequenceAnnotation} class} \setcounter{sbolCtr}{10901} @@ -215,7 +234,7 @@ \subsubsection*{Rules for the \class{SequenceAnnotation} class} \printValid{The \sbol{locations} property of a \sbol{SequenceAnnotation} is REQUIRED and MUST contain a non-empty set of \sbol{Location} objects.\\ Reference: \sec{sec:SequenceAnnotation}} -\printWarning{Each \sbol{Location} object in the list of \sbol{locations} should reference a valid location on the corresponding \sbol{Sequence} within the \sbol{ComponentDefinition} (for DNA/RNA/Protein types) that contains the \sbol{SequenceAnnotation}.} +\printModeling{The \sbol{Location} objects contained by the \sbol{locations} property of a single \sbol{SequenceAnnotation} SHOULD NOT specify overlapping regions.\\ Reference: \sec{sec:SequenceAnnotation}} \printValid{The \sbol{component} property is OPTIONAL and MAY contain a \sbol{URI} reference to a \sbol{Component}.\\ Reference: \sec{sec:SequenceAnnotation}} @@ -234,9 +253,9 @@ \subsubsection*{Rules for the \class{Range} class} \printValid{A \sbol{Range} MUST inherit all properties of the \sbol{Location} class.\\ Reference: \sec{sec:Range}} -\printValid{The \sbol{start} property of a \sbol{Range} is REQUIRED and MUST contain an \external{Integer} greater than zero.\\ Reference: \sec{sec:Range}} +\printValid{The \sbol{start} property of a \sbol{Range} is REQUIRED and MUST contain an \sbol{Integer} greater than zero.\\ Reference: \sec{sec:Range}} -\printValid{The \sbol{end} property of a \sbol{Range} is REQUIRED and MUST contain an \external{Integer} greater than zero.\\ Reference: \sec{sec:Range}} +\printValid{The \sbol{end} property of a \sbol{Range} is REQUIRED and MUST contain an \sbol{Integer} greater than zero.\\ Reference: \sec{sec:Range}} \printValid{The value of the \sbol{end} property of a \sbol{Range} MUST be greater than or equal to the value of its \sbol{start} property.\\ Reference: \sec{sec:Range}} @@ -246,7 +265,7 @@ \subsubsection*{Rules for the \class{Cut} class} \printValid{A \sbol{Cut} MUST inherit all properties of the \sbol{Location} class.\\ Reference: \sec{sec:Cut}} -\printValid{The \sbol{at} property is REQUIRED and MUST contain an \external{Integer} greater than or equal to zero. \\ Reference: \sec{sec:Cut}} +\printValid{The \sbol{at} property is REQUIRED and MUST contain an \sbol{Integer} greater than or equal to zero. \\ Reference: \sec{sec:Cut}} \subsubsection*{Rules for the \class{GenericLocation} class} \setcounter{sbolCtr}{11301} @@ -271,109 +290,145 @@ \subsubsection*{Rules for the \class{SequenceConstraint} class} \printValid{The \sbol{restriction} property is REQUIRED and MUST contain a \sbol{URI}. \\ Reference: \sec{sec:SequenceConstraint}} +\printWarning{The \sbol{URI} contained by the \sbol{restriction} property of a \sbol{SequenceConstraint} MUST indicate the type of structural restriction on the relative, sequence-based positions or orientations of the \sbol{Component} objects referred to by the \sbol{subject} and \sbol{object} properties of the \sbol{SequenceConstraint}. +\\ Reference: \sec{sec:SequenceConstraint}} + +\printWarning{If the \sbol{restriction} property of a \sbol{SequenceConstraint} contains the \sbol{URI} \url{http://sbols.org/v2\#precedes}, then the position of the \sbol{Component} referred to by the \sbol{subject} property of the \sbol{SequenceConstraint} MUST precede that of the \sbol{Component} referred to by its \sbol{object} property. +\\ Reference: \sec{sec:SequenceConstraint}} + +\printWarning{If the \sbol{restriction} property of a \sbol{SequenceConstraint} contains the \sbol{URI} \url{http://sbols.org/v2\#sameOrientationAs}, then the orientation of the \sbol{Component} referred to by the \sbol{subject} property of the \sbol{SequenceConstraint} MUST be the same as that of the \sbol{Component} referred to by its \sbol{object} property. +\\ Reference: \sec{sec:SequenceConstraint}} + +\printWarning{If the \sbol{restriction} property of a \sbol{SequenceConstraint} contains the \sbol{URI} \url{http://sbols.org/v2\#oppositeOrientationAs}, then the orientation of the \sbol{Component} referred to by the \sbol{subject} property of the \sbol{SequenceConstraint} MUST be opposite that of the \sbol{Component} referred to by its \sbol{object} property. +\\ Reference: \sec{sec:SequenceConstraint}} + \printModeling{The \sbol{URI} contained by the \sbol{restriction} property SHOULD come from \ref{tbl:restriction_types}. \\ Reference: \sec{sec:SequenceConstraint}} \subsubsection*{Rules for the \class{Model} class} \setcounter{sbolCtr}{11501} -\printValid{A \sbol{Model} object inherits all properties of a \sbol{TopLevel} object.\\ Reference: \sec{sec:Model}} +\printValid{A \sbol{Model} MUST inherit all properties of the \sbol{TopLevel} class.\\ Reference: \sec{sec:Model}} + +\printValid{The \sbol{source} property is a REQUIRED and MUST contain a \sbol{URI}.\\ Reference: \sec{sec:Model}} + +\printWarning{The \sbol{URI} contained by the \sbol{source} property of a \sbol{Model} MUST specify the location of the model's source file.\\ Reference: \sec{sec:Model}} + +\printValid{The \sbol{language} property is REQUIRED and MUST contain a \sbol{URI}.\\ Reference: \sec{sec:Model}} -\printValid{The \sbol{source} property is a REQUIRED \sbol{URI} that specifies the location of the model source file.\\ Reference: \sec{sec:Model}} +\printWarning{The \sbol{URI} contained by the \sbol{language} property of a \sbol{Model} MUST specify the language in which the model is encoded.\\ Reference: \sec{sec:Model}} -\printValid{The \sbol{language} property is a REQUIRED \sbol{URI} that specifies the language in which the model is encoded.\\ Reference: \sec{sec:Model}} +\printWarning{The \sbol{language} property of a \sbol{Model} MUST contain a \sbol{URI} from \ref{tbl:model_types} if it is well-described by this \sbol{URI}.\\ Reference: \sec{sec:Model}} -\printModeling{The \sbol{language} property SHOULD be a \sbol{URI} from the EMBRACE Data and Methods (EDAM) ontology.\\ Reference: \sec{sec:Model}} +\printModeling{The \sbol{language} property of a \sbol{Model} SHOULD contain a \sbol{URI} that refers to a term from the EDAM ontology.\\ Reference: \sec{sec:Model}} -\printValid{The \sbol{framework} property is a REQUIRED \sbol{URI} that specifies the modeling framework.\\ Reference: \sec{sec:Model}} +\printValid{The \sbol{framework} property is REQUIRED and must contain a \sbol{URI}.\\ Reference: \sec{sec:Model}} -\printModeling{The \sbol{framework} property SHOULD be a \sbol{URI} from the modeling framework branch of the SBO.\\ Reference: \sec{sec:Model}} +\printWarning{The \sbol{URI} contained by the \sbol{framework} property of a \sbol{Model} MUST specify the mathematical framework of the model.\\ Reference: \sec{sec:Model}} -\printWarning{The \sbol{source} property MUST specify the location of the model source file in the specified \sbol{language} using the specified \sbol{framework}.\\ Reference: \sec{sec:Model}} +\printWarning{The \sbol{framework} property of a \sbol{Model} MUST contain a \sbol{URI} from \ref{tbl:model_frameworks} if it is well-described by this \sbol{URI}.\\ Reference: \sec{sec:Model}} + +\printModeling{The \sbol{framework} property SHOULD contain a \sbol{URI} that refers to a term from the modeling framework branch of the SBO.\\ Reference: \sec{sec:Model}} \subsubsection*{Rules for the \class{ModuleDefinition} class} \setcounter{sbolCtr}{11601} -\printValid{A \sbol{ModuleDefinition} object inherits all properties of a \sbol{TopLevel} object.\\ Reference: \sec{sec:ModuleDefinition}} +\printValid{A \sbol{ModuleDefinition} MUST inherit all properties of the \sbol{TopLevel} class.\\ Reference: \sec{sec:ModuleDefinition}} -\printValid{The \sbolmult{roles:MD}{roles} property is an OPTIONAL set of \sbol{URI}s. \\ Reference: \sec{sec:ModuleDefinition}} +\printValid{The \sbolmult{roles:MD}{roles} property is OPTIONAL and MAY contain a set of \sbol{URI}s.\\ Reference: \sec{sec:ModuleDefinition}} -\printValid{The \sbol{modules} property is an OPTIONAL set of \sbol{Module} objects. \\ Reference: \sec{sec:ModuleDefinition}} +\printValid{The \sbol{modules} property OPTIONAL and may contain a set of \sbol{Module} objects.\\ Reference: \sec{sec:ModuleDefinition}} -\printValid{The \sbol{interactions} property is an OPTIONAL set of \sbol{Interaction} objects. \\ Reference: \sec{sec:ModuleDefinition}} +\printValid{The \sbol{interactions} property is OPTIONAL and MAY contain a set of \sbol{Interaction} objects.\\ Reference: \sec{sec:ModuleDefinition}} -\printValid{The \sbol{functionalComponents} property is an OPTIONAL set of \sbol{FunctionalComponent} objects. \\ Reference: \sec{sec:ModuleDefinition}} +\printValid{The \sbol{functionalComponents} property is OPTIONAL and MAY contain a set of \sbol{FunctionalComponent} objects.\\ Reference: \sec{sec:ModuleDefinition}} -\printValid{The \sbol{models} property is an OPTIONAL set of \sbol{URI}s that reference \sbol{Model} objects. \\ Reference: \sec{sec:ModuleDefinition}} +\printValid{The \sbol{models} property is OPTIONAL and MAY contain a set of \sbol{URI}s. \\ Reference: \sec{sec:ModuleDefinition}} -\printModeling{Each \sbol{URI} in the set of \sbol{models} SHOULD reference a \sbol{Model} object. \\ Reference: \sec{sec:ModuleDefinition}} +\printWarning{Each \sbol{URI} contained by the \sbol{models} property of a \sbol{ModuleDefinition} MUST refer to a \sbol{Model}.\\ Reference: \sec{sec:ModuleDefinition}} -\subsubsection*{Rules for the \class{FunctionalComponent} class} +\subsubsection*{Rules for the \class{Module} class} \setcounter{sbolCtr}{11701} -\printValid{A \sbol{FunctionalComponent} MUST inherit all properties of the \sbol{ComponentInstance} class.\\ Reference: \sec{sec:ComponentInstance}} +\printValid{A \sbol{Module} MUST inherit all properties of the \sbol{Identified} class.\\ Reference: \sec{sec:Module}} -\printValid{The \sbol{direction} property of a \sbol{FunctionalComponent} is REQUIRED and MUST contain a \sbol{URI} from \ref{tbl:functionalcomponent_directions}. -\\ Reference: \sec{sec:FunctionalComponent}} +\printValid{The \sbolmult{definition:M}{definition} property of a \sbol{Module} is REQUIRED and MUST contain a \sbol{URI}. \\ Reference: \sec{sec:Module}} -\subsubsection*{Rules for the \class{Module} class} -\setcounter{sbolCtr}{11801} +\printValid{The \sbol{URI} contained by the \sbolmult{definition:M}{definition} property of \sbol{Module} must refer to a \sbol{ModuleDefinition}.\\ Reference: \sec{sec:Module}} + +\printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{Module} MUST NOT contain a \sbol{URI} reference to the \sbol{ModuleDefinition} that contains the \sbol{Module}.\\ Reference: \sec{sec:Module}} -\printValid{A \sbol{Module} object inherits all properties of an \sbol{Identified} object.\\ Reference: \sec{sec:Module}} +\printWarning{\sbol{Module} objects MUST NOT form circular reference chains via their \sbolmult{definition:CI}{definition} properties and parent \sbol{ModuleDefinition} objects.\\ Reference: \sec{sec:Module}} -\printValid{The \sbolmult{definition:M}{definition} property is a REQUIRED \sbol{URI} reference to a \sbol{ModuleDefinition} object. \\ Reference: \sec{sec:Module}} +\printValid{The \sbolmult{mapsTos:M}{mapsTos} property is OPTIONAL and MAY contain a set of \sbol{MapsTo} objects.\\ Reference: \sec{sec:Module}} -\printValid{The \sbolmult{mapsTos:M}{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects. \\ Reference: \sec{sec:Module}} +\subsubsection*{Rules for the \class{FunctionalComponent} class} +\setcounter{sbolCtr}{11801} + +\printValid{A \sbol{FunctionalComponent} MUST inherit all properties of the \sbol{ComponentInstance} class.\\ Reference: \sec{sec:ComponentInstance}} + +\printValid{The \sbol{direction} property of a \sbol{FunctionalComponent} is REQUIRED and MUST contain a \sbol{URI} from \ref{tbl:functionalcomponent_directions}. +\\ Reference: \sec{sec:FunctionalComponent}} \subsubsection*{Rules for the \class{Interaction} class} \setcounter{sbolCtr}{11901} -\printValid{An \sbol{Interaction} object inherits all properties of an \sbol{Identified} object.\\ Reference: \sec{sec:Interaction}} +\printValid{An \sbol{Interaction} MUST inherit all properties of the \sbol{Identified} class.\\ Reference: \sec{sec:Interaction}} -\printValid{The \sbolmult{types:I}{types} property is a set of \sbol{URI}s, and it is REQUIRED to include at least one entry.\\ Reference: \sec{sec:Interaction}} +\printValid{The \sbolmult{types:I}{types} property of an \sbol{Interaction} is REQUIRED and MUST contain a non-empty set of \sbol{URI}s.\\ Reference: \sec{sec:Interaction}} -\printModeling{A least one type in the set of \sbolmult{types:I}{types} SHOULD be a \sbol{URI} from the occurring entity relationship branch of the SBO.\\ Reference: \sec{sec:Interaction}} +\printWarning{Each \sbol{URI} contained by the \sbolmult{types:I}{types} property of an \sbol{Interaction} MUST refer to an ontology term that describes the behavior represented by the \sbol{Interaction}.\\ Reference: \sec{sec:Interaction}} -\printValid{The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects.\\ Reference: \sec{sec:Interaction}} +\printWarning{All \sbol{URI}s contained by the \sbolmult{types:I}{types} property of an \sbol{Interaction} MUST refer to non-conflicting ontology terms.\\ Reference: \sec{sec:Interaction}} + +\printModeling{A least one \sbol{URI} contained by the \sbolmult{types:I}{types} property of an \sbol{Interaction} SHOULD refer to a term from the occurring entity relationship branch of the SBO.\\ Reference: \sec{sec:Interaction}} + +\printValid{The \sbol{participations} property of an \sbol{Interaction} is OPTIONAL and MAY contain a set of \sbol{Participation} objects.\\ Reference: \sec{sec:Interaction}} \subsubsection*{Rules for the \class{Participation} class} \setcounter{sbolCtr}{12001} -\printValid{A \sbol{Participation} object inherits all properties of an \sbol{Identified} object.\\ Reference: \sec{sec:Participation}} +\printValid{A \sbol{Participation} MUST inherit all properties of the \sbol{Identified} class.\\ Reference: \sec{sec:Participation}} + +\printValid{The \sbol{participant} property of a \sbol{Participation} is REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{FunctionalComponent}.\\ Reference: \sec{sec:Participation}} + +\printValid{The \sbol{FunctionalComponent} referenced by the \sbol{participant} property of a \sbol{Participation} MUST be contained by the \sbol{ModuleDefinition} that contains the \sbol{Interaction} which contains the \sbol{Participation}.\\ Reference: \sec{sec:Participation}} + +\printValid{The \sbolmult{roles:P}{roles} property of an \sbol{Participation} is OPTIONAL and MAY contain a set of \sbol{URI}s.\\ Reference: \sec{sec:Participation}} -\printValid{The \sbol{participant} property is a REQUIRED \sbol{URI} that MUST reference a \sbol{FunctionalComponent} that is specified within the same \sbol{ModuleDefinition}.\\ Reference: \sec{sec:Participation}} +\printWarning{Each \sbol{URI} contained by the \sbolmult{roles:P}{roles} property of an \sbol{Participation} MUST refer to an ontology term that describes the behavior represented by the \sbol{Participation}.\\ Reference: \sec{sec:Participation}} -\printValid{The \sbolmult{roles:P}{roles} property is an OPTIONAL set of \sbol{URI}s.\\ Reference: \sec{sec:Participation}} +\printWarning{All \sbol{URI}s contained by the \sbolmult{roles:P}{roles} property of an \sbol{Participation} MUST refer to non-conflicting ontology terms.\\ Reference: \sec{sec:Participation}} \printModeling{A least one role in the set of \sbolmult{roles:P}{roles} SHOULD be a \sbol{URI} from the participant role branch of the SBO.\\ Reference: \sec{sec:Participation}} \subsubsection*{Rules for the \class{Collection} class} \setcounter{sbolCtr}{12101} -\printValid{A \sbol{Collection} object inherits all properties of a \sbol{TopLevel} object.\\ Reference: \sec{sec:Collection}} +\printValid{A \sbol{Collection} MUST inherit all properties of the \sbol{TopLevel} class.\\ Reference: \sec{sec:Collection}} -\printValid{The \sbol{members} property is an OPTIONAL set of \sbol{URI}s. that reference \sbol{TopLevel} objects.\\ Reference: \sec{sec:Collection}} +\printValid{The \sbol{members} property of a \sbol{Collection} is OPTIONAL and MAY contain a set of \sbol{URI}s.\\ Reference: \sec{sec:Collection}} -\printModeling{Each \sbol{URI} in the set of \sbol{members} SHOULD reference a \sbol{TopLevel} object.\\ Reference: \sec{sec:Collection}} +\printWarning{Each \sbol{URI} contained by the \sbol{members} property of a \sbol{Collection} MUST reference a \sbol{TopLevel} object.\\ Reference: \sec{sec:Collection}} \subsubsection*{Rules for the \class{Annotation} class} \setcounter{sbolCtr}{12201} -\printValid{The \sbol{name} property is REQUIRED, and it has data type \sbol{QName}.\\ Reference: \sec{sec:Annotations}} +\printValid{The \sbol{name} property of an \sbol{Annotation} is REQUIRED and MUST contain a \sbol{QName}.\\ Reference: \sec{sec:Annotations}} -\printValid{The \sbol{value} property is REQUIRED, and it has data type \sbol{AnnotationValue}.\\ Reference: \sec{sec:Annotations}} +\printValid{The \sbol{value} property of an \sbol{Annotation} is REQUIRED and MUST contain an \sbol{AnnotationValue}.\\ Reference: \sec{sec:Annotations}} -\printValid{The \sbol{AnnotationValue} class MUST be of data type \sbol{String}, \sbol{Integer}, \sbol{Double}, \sbol{Boolean}, \sbol{URI}, or \sbol{NestedAnnotations}.\\ Reference: \sec{sec:Annotations}} +\printValid{An \sbol{AnnotationValue} MUST be a \sbol{literal} (a \sbol{String}, \sbol{Integer}, \sbol{Double}, or \sbol{Boolean}), \sbol{URI}, or a \sbol{NestedAnnotations} object.\\ Reference: \sec{sec:Annotations}} -\printValid{The \sbol{nestedQName} property is REQUIRED for a \sbol{NestedAnnotations} object, and it has data type \sbol{QName}. \\ Reference: \sec{sec:Annotations}} +\printValid{The \sbol{nestedQName} property of a \sbol{NestedAnnotations} object is REQUIRED and must contain a \sbol{QName}. \\ Reference: \sec{sec:Annotations}} -\printValid{The \sbol{nestedURI} property is REQUIRED for a \sbol{NestedAnnotations} object, and it has data type \sbol{URI}. \\ Reference: \sec{sec:Annotations}} +\printValid{The \sbol{nestedURI} property of a \sbol{NestedAnnotations} object is REQUIRED and MUST contain a \sbol{URI}. \\ Reference: \sec{sec:Annotations}} -\printValid{The \sbol{annotations} property is an OPTIONAL set for a \sbol{NestedAnnotations} object, and each member is of data type \sbol{Annotation}. \\ Reference: \sec{sec:Annotations}} +\printValid{The \sbol{annotations} property of a \sbol{NestedAnnotations} object is OPTIONAL and MAY contain a set of \sbol{Annotation} objects. \\ Reference: \sec{sec:Annotations}} \subsubsection*{Rules for the \class{GenericTopLevel} class} \setcounter{sbolCtr}{12301} -\printValid{A \sbol{GenericTopLevel} object inherits all properties of a \sbol{TopLevel} object.\\ Reference: \sec{sec:GenericTopLevel}} +\printValid{A \sbol{GenericTopLevel} object MUST inherits all properties of the \sbol{TopLevel} class.\\ Reference: \sec{sec:GenericTopLevel}} -\printValid{The \sbol{rdfType} property is REQUIRED, and it has data type \sbol{QName}.\\ Reference: \sec{sec:GenericTopLevel}} \ No newline at end of file +\printValid{The \sbol{rdfType} property of a \sbol{GenericTopLevel} object is REQUIRED and MUST contain a \sbol{QName}.\\ Reference: \sec{sec:GenericTopLevel}} \ No newline at end of file diff --git a/copyright.tex b/copyright.tex index ada57541..83a76b60 100644 --- a/copyright.tex +++ b/copyright.tex @@ -8,5 +8,5 @@ \section{Copyright and License Statement} In addition to the listed authors, the following people are specifically recognized as additional contributors sharing in the copyright (alphabetically by institution): Douglas Densmore (Boston University, USA), -Jacqueline Quinn (Google, USA), -Guy-Bart Stan (Imperial College London, UK) \ No newline at end of file +Jacqueline Quinn (Google, USA), and +Guy-Bart Stan (Imperial College London, UK). \ No newline at end of file diff --git a/example_uml/toggle_4.pdf b/example_uml/toggle_4.pdf index 9959823b02e5f3a89a392745b209a24d777673c8..3802dcb249076d8cecf5cb0719c7a2179c64e86a 100644 GIT binary patch delta 4478 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 diff --git a/examples_model.tex b/examples_model.tex index b62b78c4..d29a5a00 100644 --- a/examples_model.tex +++ b/examples_model.tex @@ -9,13 +9,13 @@ \section{Data Model Examples} Conceptually, the toggle switch is constructed from two mutually repressing genes. With repressors LacI and TetR, this results in a bi-stable system that will tend to settle into a state where precisely one of the two repressors is strongly expressed, repressing the other. -Each of these repressors can have its activity disrupted by a small molecule (IPTG for LacI, aTc for TetR), which allows the system to be ``toggled'' from one state to the other by dosing it with the appropriate small molecule. +Each of these repressors can have its activity disrupted by a small molecule (IPTG for LacI, aTc for TetR), which enables the system to be ``toggled'' from one state to the other by dosing it with the appropriate small molecule. \begin{figure}[ht] \begin{center} \includegraphics[scale=1.0]{images/toggle-highlevel.pdf} \caption[]{Conceptual diagram of LacI/TetR toggle switch: the LacI - and TetR transcriptional factors are arranged to mutually repress, + and TetR transcription factors are arranged to mutually repress each other's expression, creating a bi-stable system. Transition between the two states is triggered by the small-molecule signals aTc (which disrupts TetR repression) and IPTG (which disrupts LacI repression).} @@ -33,14 +33,14 @@ \section{Data Model Examples} The LacI/TetR toggle switch is modeled in SBOL as two parallel hierarchies of structure and function. The structural hierarchy of the toggle switch is represented using \sbol{ComponentDefinition}s: \begin{itemize} -\item The base elements of the hierarchy are DNA components, transcription factor proteins, and small molecules. As an example, \ref{uml:ex_comp_defs} is a UML diagram of the \sbol{ComponentDefinition}s that represent these elements. -\item Base elements are composed to form more complex structures at the top of the hierarchy, including genes and non-covalent complexes between transcription factor proteins and small molecules. As an example, \ref{uml:ex_comp_def_compo} is a UML diagram of the composite \sbol{ComponentDefinition}s that represent the TetR gene and IPTG-LacI complex. +\item The base elements of the hierarchy are DNA components, transcription factor proteins, and small molecules. As an example, \ref{uml:ex_comp_defs} is a UML diagram of the \sbol{ComponentDefinition} objects that represent these elements. +\item Base elements are composed to form more complex structures at the top of the hierarchy, including genes and non-covalent complexes between transcription factor proteins and small molecules. As an example, \ref{uml:ex_comp_def_compo} is a UML diagram of the composite \sbol{ComponentDefinition} objects that represent the TetR gene and IPTG-LacI complex. \end{itemize} \begin{figure}[ht] \begin{center} \includegraphics[width=\textwidth]{example_uml/toggle_1} -\caption[]{\sbol{ComponentDefinition} objects for the LacI inverter. These include \sbol{ComponentDefinition} objects based on DNA parts from the iGEM Registry and \sbol{ComponentDefinition}s that represent TetR mRNA, TetR, LacI, and and IPTG. Each \sbol{ComponentDefinition} is associated with a \sbol{Sequence} that has an \external{IUPAC DNA/RNA} or \external{IUPAC protein} \sbol{encoding}, except the \sbol{ComponentDefinition} of IPTG, which is associated with a \sbol{Sequence} that has a \external{SMILES} \sbol{encoding}.} +\caption[]{\sbol{ComponentDefinition} objects for the LacI inverter. These include \sbol{ComponentDefinition} objects based on DNA parts from the iGEM Parts Registry and \sbol{ComponentDefinition} objectss that represent TetR mRNA, TetR, LacI, and IPTG. Each \sbol{ComponentDefinition} is associated with a \sbol{Sequence} that has an \external{IUPAC DNA/RNA} or \external{IUPAC protein} \sbol{encoding}, except the \sbol{ComponentDefinition} of IPTG, which is associated with a \sbol{Sequence} that has a \external{SMILES} \sbol{encoding}.} \label{uml:ex_comp_defs} \end{center} \end{figure} @@ -48,7 +48,7 @@ \section{Data Model Examples} \begin{figure}[ht] \begin{center} \includegraphics[width=\textwidth]{example_uml/toggle_2} -\caption[]{Composite \sbol{ComponentDefinition} objects for the LacI inverter. In the case of the \sbol{ComponentDefinition} that represents the TetR gene, its sub-\sbol{Component} objects are located as \sbol{Range}s along its \sbol{Sequence} using \sbol{SequenceAnnotation}s. The \sbol{ComponentDefinition} that represents the IPTG-LacI complex, however, has no \sbol{Sequence} and its sub-\sbol{Component} objects are composed without any data about their relative positions.} +\caption[]{Composite \sbol{ComponentDefinition} objects for the LacI inverter. In the case of the \sbol{ComponentDefinition} that represents the TetR gene, its sub-\sbol{Component} objects are located as \sbol{Range}s along its \sbol{Sequence} using \sbol{SequenceAnnotation} objects. The \sbol{ComponentDefinition} that represents the IPTG-LacI complex, however, has no \sbol{Sequence} and its sub-\sbol{Component} objects are composed without any data about their relative positions.} \label{uml:ex_comp_def_compo} \end{center} \end{figure} @@ -63,7 +63,7 @@ \section{Data Model Examples} \begin{figure}[ht] \begin{center} \includegraphics[width=\textwidth]{example_uml/toggle_3} -\caption[]{\sbol{ModuleDefinition} of the LacI inverter. This \sbol{ModuleDefinition} contains \sbol{FunctionalComponent} objects that instantiate the \sbol{ComponentDefinition} objects for the LacI/TetR transcription factors and TetR gene. The \sbol{FunctionalComponent} for the TetR gene as a whole does not participate in any \sbol{Interaction} and merely indicates the overall structure that is functionally described by the LacI inverter \sbol{ModuleDefinition}. The remaining \sbol{FunctionalComponent} objects participate in a repression \sbol{Interaction} and a genetic production \sbol{Interaction}, thereby indicating which parts of the overall structure carry out the function of the LacI inverter \sbol{ModuleDefinition}. In this case, the transcription and translation of TetR are represented as a single genetic production \sbol{Interaction} that abstracts away the presence of the intermediate TetR mRNA. In addition, this \sbol{ModuleDefinition} is also associated with a continuous \sbol{Model} written in the SBML source file ``LacI\_Inverter.xml.''} +\caption[]{\sbol{ModuleDefinition} of the LacI inverter. This \sbol{ModuleDefinition} contains \sbol{FunctionalComponent} objects that instantiate the \sbol{ComponentDefinition} objects for the LacI/TetR transcription factors and TetR gene. The \sbol{FunctionalComponent} for the TetR gene as a whole does not participate in any \sbol{Interaction} and merely indicates that the function of the gene is described by the LacI inverter \sbol{ModuleDefinition}. The remaining \sbol{FunctionalComponent} objects participate in a repression \sbol{Interaction} and a genetic production \sbol{Interaction}, thereby indicating which biological structures carry out the function of the LacI inverter \sbol{ModuleDefinition}. In this case, the transcription and translation of TetR are represented as a single genetic production \sbol{Interaction} that abstracts away the presence of the intermediate TetR mRNA. In addition, this \sbol{ModuleDefinition} is also associated with a continuous \sbol{Model} written in the SBML source file ``LacI\_Inverter.xml.''} \label{uml:ex_mod_def} \end{center} \end{figure} @@ -71,7 +71,7 @@ \section{Data Model Examples} \begin{figure}[ht] \begin{center} \includegraphics[width=\textwidth]{example_uml/toggle_4} -\caption[]{Composite \sbol{ModuleDefinition} of the LacI/TetR toggle switch. This \sbol{ModuleDefinition} contains the \sbol{Module} objects that instantiate \sbol{ModuleDefinition} object for sthe LacI and TetR inverter. It also contains \sbol{FunctionalComponent} objects that instantiate the \sbol{ComponentDefinition} objects for the LacI/TetR transcription factors and IPTG/aTc small molecules. These \sbol{FunctionalComponent} objects each participate in a non-covalent binding \sbol{Interaction}. To complete the composition of the toggle switch, \sbol{MapsTo} objects are used to indicate that the output of the LacI inverter \sbol{ModuleDefinition} is identical to the input of the TetR inverter \sbol{ModuleDefinition} and vice versa. +\caption[]{Composite \sbol{ModuleDefinition} of the LacI/TetR toggle switch. This \sbol{ModuleDefinition} contains the \sbol{Module} objects that instantiate LacI and TetR inverter \sbol{ModuleDefinition} objects. It also contains \sbol{FunctionalComponent} objects that instantiate the \sbol{ComponentDefinition} objects for the LacI/TetR transcription factors and IPTG/aTc small molecules. These \sbol{FunctionalComponent} objects each participate in a non-covalent binding \sbol{Interaction}. To complete the composition of the toggle switch, \sbol{MapsTo} objects are used to indicate that the output of the LacI inverter \sbol{ModuleDefinition} is identical to the input of the TetR inverter \sbol{ModuleDefinition} and vice versa. } \label{uml:ex_mod_def_compo} \end{center} diff --git a/history.tex b/history.tex index 1271499a..06f0dd79 100644 --- a/history.tex +++ b/history.tex @@ -3,21 +3,23 @@ \section{A Brief History of SBOL} % ----------------------------------------------------------------------------- %Add yourself if you have helped and aren't on the list -The SBOL standard was kickstarted in 2006 in order to develop a data exchange standard for genetic designs. Several groups, led by Herbert Sauro's group from University of Washington, secured a modest grant from Microsoft in the field of computational synthetic biology which was used to fund the initial meeting in Seattle on April 26-27, 2008. This workshop was organized by Herbert Sauro, Sean Sleight and Deepak Chandran and included talks by Raik Gruenberg, Kim de Mora, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and last but not least Michal Galdzicki. +The SBOL effort was kickstarted in 2006 with the goal of developing a data exchange standard for genetic designs. Herbert Sauro (University of Washington) secured a modest grant from Microsoft in the field of computational synthetic biology, which was used to fund the initial meeting in Seattle on April 26-27, 2008. This workshop was organized by Herbert Sauro, Sean Sleight, and Deepak Chandran, and included talks by Raik Gruenberg, Kim de Mora, John Cumbers, Christopher Anderson, Mac Cowell, Jason Morrison, Jean Peccoud, Ralph Santos, Andrew Milar, Vincent Rouilly, Mike Hucka, Michael Blinov, Lucian Smith, Sarah Richardson, Guillermo Rodrigo, Jonathan Goler, and Michal Galdzicki. -Michal's early efforts were instrumental in making SBOL the success it is today. As part of his doctoral work, Mike led the development of PoBol, as SBOL was originally called. He organized annual workshops from 2008 to 2011 and kept the idea of developing a standard alive. The original SBOL 1.0 was developed by a small group of dedicated researchers calling themselves the Synthetic Biology Data Exchange Working Group meeting at Stanford in 2009 and Anaheim, CA in 2010. During the Anaheim meeting, the community decided to write a letter to Nature Biotechnology highlighting the issue of reproducibility in synthetic biology. This letter was initiated by Jean Peccoud and submitted by participants of the Anaheim meeting, including Chandran, Densmore, Dmytriv, Galdzicki, Ham, Rodriquez, Peccoud, Sauro, and Stan. The overall pace of development quickened when several new members joined at the next workshop in Blacksburg, Virginia on January 7-10, 2011. New members included Cesar Rodriguez, Mandy Wilson, Guy-Bart Stan, Chris Myers, and Nicholas Roehner. +% Go over past meetings and mention who funded them, eg Douglas Densmore. -The SBOL Developers Group was officially established at a meeting in San Diego in June 2011. Rules of governance were established, and the first SBOL editors were elected: Mike Galdzicki, Cesar Rodriguez, and Mandy Wilson. At our next meeting in Seattle in January 2012, Herbert Sauro was elected the SBOL Chair, and two new editors were added: Matthew Pocock and Ernst Oberortner. New developers joining at these workshops included several representatives from industry, Kevin Clancy, Jacob Beal, Aaron Adler, and Fusun Yaman Sirin. New members hailing from Newcastle University included Anil Wipat, Matthew Pocock, and Goksel Misirli. +Michal's early efforts were instrumental in making SBOL successful. As part of his doctoral work, Mike led the development of PoBol, as SBOL was originally known. He organized annual workshops from 2008 to 2011 and kept the idea of developing a genetic design standard alive. The original SBOL 1.0 was developed by a small group of dedicated researchers calling themselves the Synthetic Biology Data Exchange Working Group, meeting at Stanford in 2009 and Anaheim, CA in 2010. During the Anaheim meeting, the community decided to write a letter to Nature Biotechnology highlighting the issue of reproducibility in synthetic biology. This letter was initiated by Jean Peccoud and submitted by participants of the Anaheim meeting, including Deepak Chandran, Douglas Densmore, Dmytriv, Michal Galdzicki, Timothy Ham, Cesar Rodriquez, Jean Peccoud, Herbert Sauro, and Guy-Bart Stan. The overall pace of development quickened when several new members joined at the next workshop in Blacksburg, Virginia on January 7-10, 2011. This early work was also supported by an STTR grant from the National Institute of Health (NIH \#1R41LM010745 and \#9R42HG006737, from 2010-13) in collaboration with Clark \& Parsia, LLC (Co-PIs: John Gennari and Evren Sirin). New members included Cesar Rodriguez, Mandy Wilson, Guy-Bart Stan, Chris Myers, and Nicholas Roehner. + +The SBOL Developers Group was officially established at a meeting in San Diego in June 2011. Rules of governance were established, and the first SBOL editors were elected: Mike Galdzicki, Cesar Rodriguez, and Mandy Wilson. At our next meeting in Seattle in January 2012, Herbert Sauro was elected the SBOL chair, and two new editors were added: Matthew Pocock and Ernst Oberortner. New developers joining at these workshops included several representatives from industry, Kevin Clancy, Jacob Beal, Aaron Adler, and Fusun Yaman Sirin. New members hailing from Newcastle University included Anil Wipat, Matthew Pocock, and Goksel Misirli. Development of the first software library (libSBOLj) based on the SBOL standard was initiated by Allan Kuchinsky, a research scientist from Agilent, at the 2011 meeting. By the time of the 2012 meeting, the first data exchange between software tools using SBOL was conducted when a design was passed from Newcastle University's VirtualParts Repository to Boston University's Eugene tool, and finally to University of Utah's iBioSim tool. -SBOL 1.0 was officially released in October 2011. In March 2012, SBOL 1.1 was released, the version that this document replaces. SBOL 1.1 did not make any major change, but provided a number of small adjustments and clarifications, particularly around the annotation of sequences and their locational relations. Multi-institutional data exchange using SBOL 1.1 was later demonstrated in Nature Biotechnology \cite{galdzicki2014synthetic}. +SBOL 1.0 was officially released in October 2011. In March 2012, SBOL 1.1 was released, the version that this document replaces. SBOL 1.1 did not make any major changes, but provided a number of small adjustments and clarifications, particularly around the annotation of sequences. Multi-institutional data exchange using SBOL 1.1 was later demonstrated in Nature Biotechnology \cite{galdzicki2014synthetic}. -While SBOL 1.1 has a number of advantages over the GenBank representation of DNA sequences, such as representing hierarchical organizations of DNA components, it is still limited in other respects. The major topic of discussion at the 8th SBOL Workshop at Boston University in November 2012 was how to address these shortcomings through extensions. Several extensions were discussed at this meeting, such as a means to describe genetic regulation, which later became important classes in the current 2.0 specification. +While SBOL 1.1 had a number of significant advantages over the GenBank representation of DNA sequences, such as representing hierarchical organization of DNA components, it was still limited in other respects. The major topic of discussion at the 8th SBOL Workshop at Boston University in November 2012 was how to address these shortcomings through extensions. Several extensions were discussed at this meeting, such as a means to describe genetic regulation, which later became important classes in the current 2.0 specification. -A general framework for SBOL 2.0 emerged at the 9th SBOL workshop at Newcastle University in April 2013. Subsequently, Nicholas Roehner, Matthew Pocock, and Ernst Oberortner drafted a proposal for SBOL 2.0, and Nicholas presented this proposal at the SEED Conference in Los Angeles \cite{roehner2014proposed} in July 2014. The proposed 2.0 data model was discussed and debated over the course of the 10th, 11th, and 12th workshops. The actual specification document you are now reading was drafted at the 13th workshop in Wittenberg, Germany by the authors. The SBOL 2.0 data model presented here is essentially the result of these meetings and ongoing discussions conducted through the SBOL Developers email lists. +A general framework for SBOL 2.0 emerged at the 9th SBOL workshop at Newcastle University in April 2013. Subsequently, Nicholas Roehner, Matthew Pocock, and Ernst Oberortner drafted a proposal for SBOL 2.0, and Nicholas presented this proposal at the SEED conference in Los Angeles in July 2014 \cite{roehner2014proposed}. The proposed 2.0 data model was discussed over the course of the 10th, 11th, and 12th workshops. The actual specification document you are now reading was drafted at the 13th workshop in Wittenberg, Germany by the authors. The SBOL 2.0 data model presented here is essentially the result of these meetings and ongoing discussions conducted through the SBOL Developers mailing lists. -The Computational Modeling in Biology Network (\href{www.co.mbine.org}{COMBINE}) holds regular workshops where synthetic biologists and systems biologists can work toward a common goal of integrating biological knowledge through inter-operable and non-overlapping data standards. In April of 2014, several SBOL Developers attended a COMBINE workshop and then proposed that SBOL join this larger standards community. The proposal passed and SBOL workshops have been co-located with COMBINE ever since the 11th workshop at the University of South California in August 2014. +The Computational Modeling in Biology Network (\href{www.co.mbine.org}{COMBINE}) holds regular workshops where synthetic biologists and systems biologists can work toward a common goal of integrating biological knowledge through inter-operable and non-overlapping data standards. In April of 2014, several SBOL Developers attended a COMBINE workshop and then proposed that SBOL join this larger standards community. The proposal passed and SBOL workshops have been co-located with COMBINE meetings since the 11th workshop at the University of Southern California in August 2014. -Current development of this SBOL 2.0 specification is funded in large part by a grant from the National Science Foundation (Collaborative award \#1355909). This document and the supporting software are due in no small part to this support. +Current development of this SBOL 2.0 specification is funded in large part by a grant from the National Science Foundation (DBI-1355909 and DBI-1356041). This document and the supporting software libraries are due in no small part to this support. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation. diff --git a/model.tex b/model.tex index 6259c299..107d3e78 100644 --- a/model.tex +++ b/model.tex @@ -15,7 +15,7 @@ \subsection{Understanding the UML Diagrams} Classes may be connected to other classes by association properties, which are represented in UML diagrams as arrows. These arrows are labeled with data cardinalities in order to indicate how many values a given association property may possess (see below). The remaining (non-association) properties of a class are listed below its name. Each of the latter properties is labeled with its data type and cardinality. -In the case of an association property, the class from which the arrow originates is the owner of the association property. A diamond at the origin of the arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, in which the owner of the association property exists independently of its value. In the SBOL data model, the value of an association property MUST be a URI or set of \sbol{URI}s that refer to SBOL objects belonging to the class at the tip of the arrow. +In the case of an association property, the class from which the arrow originates is the owner of the association property. A diamond at the origin of the arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, in which the owner of the association property exists independently of its value. In the SBOL data model, the value of an association property MUST be a \sbol{URI} or set of \sbol{URI}s that refer to SBOL objects belonging to the class at the tip of the arrow. By contrast, filled diamonds indicate composite aggregation, also known as a part-whole relationship, in which the value of the association property MUST NOT exist independently of its owner. In addition, in the SBOL data model, it is REQUIRED that the value of each composite aggregation property is a unique SBOL object (that is, not the value for more than one such property). @@ -47,14 +47,12 @@ \subsection{Naming and Font Conventions} Properties, on the other hand, are named using lower camel case, meaning that they begin lowercase (e.g., \sbol{identity}) but if they consist of multiple words, all words after the first begin with an uppercase letter (e.g., \sbol{persistentIdentity}). Within the SBOL data model, each property is given a singular or plural name in accordance with its data cardinalities. -The forms of these names follow the usual rules of English grammar. For example, \sbol{SequenceAnnotation} is the singular form of \sbol{SequenceAnnotation}s. +The forms of these names follow the usual rules of English grammar. For example, sequenceAnnotation is the singular form of \sbol{sequenceAnnotations}. SBOL properties are always given singular names, however, when SBOL objects are serialized (using \emph{Resource Description Framework} (RDF) as described in \ref{sec:serialization}). This is because the SBOL data model does not contain classes that correspond directly to the RDF elements that group other elements into ordered or unordered sets. Consequently, if an SBOL property has multiple values, then it is serialized as multiple property entries, each with a singular name and a single value. For example, if an SBOL property has five values, then its serialization contains five RDF triples, each with a singular predicate name and one of the five values as its object. -Lastly, font color is used in the body text of this specification to indicate whether a class or property is defined externally or within the SBOL data model. In particular, if a class or property name is written in a blue font, then it is defined by SBOL. If it is written in a bold font, then it is defined externally. - \subsection{Data Types} \label{sec:datatypes} \label{sec:String} @@ -64,30 +62,30 @@ \subsection{Data Types} \label{sec:URI} \label{sec:literal} -When SBOL use simple ``primitive'' data types such as strings or integers, these are defined as the following specific formal types: +When SBOL use simple ``primitive'' data types such as \sbol{String}s or \sbol{Integer}s, these are defined as the following specific formal types: \begin{itemize} -\item String: \url{http://www.w3.org/TR/xmlschema11-2/#string}\\ +\item \sbol{String}: \url{http://www.w3.org/TR/xmlschema11-2/#string}\\ {\em Example: ``LacI coding sequence''} -\item Integer: \url{http://www.w3.org/TR/xmlschema11-2/#integer}\\ +\item \sbol{Integer}: \url{http://www.w3.org/TR/xmlschema11-2/#integer}\\ {\em Example: 3} -\item Double: \url{http://www.w3.org/TR/xmlschema11-2/#double}\\ +\item \sbol{Double}: \url{http://www.w3.org/TR/xmlschema11-2/#double}\\ {\em Example: 3.14159} -\item Boolean: \url{http://www.w3.org/TR/xmlschema11-2/#boolean}\\ +\item \sbol{Boolean}: \url{http://www.w3.org/TR/xmlschema11-2/#boolean}\\ {\em Example: \external{true}} \end{itemize} The term \sbol{literal} is used to denote an object that can be any of the four types listed above. -In addition to the simple types listed above, SBOL also uses objects with types \emph{uniform resource identifier} (URI) and \emph{XML qualified name} (QName): +In addition to the simple types listed above, SBOL also uses objects with types \emph{Uniform Resource Identifier} (\sbol{URI}) and \emph{XML Qualified Name} (\sbol{QName}): \begin{itemize} -\item URI: \url{http://www.w3.org/TR/xmlschema11-2/#anyURI}\\ +\item \sbol{URI}: \url{http://www.w3.org/TR/xmlschema11-2/#anyURI}\\ {\em Example: \external{http://www.partsregistry.org/Part:BBa\_J23119}} -\item QName: \url{http://www.w3.org/TR/xmlschema11-2/#QName}\\ - {\em Example: \external{myapp:Datasheet}} where \external{myapp="http://www.myapp.org/"} namespace. +\item \sbol{QName}: \url{http://www.w3.org/TR/xmlschema11-2/#QName}\\ + {\em Example: \external{myapp:Datasheet}} where \external{myapp="http://www.myapp.org/"} \end{itemize} -Note that, in compliance with RDF standards, URIs are generally serialized using an \external{rdf:resource} property, e.g.: +Note that, in compliance with RDF standards, \sbol{URI}s are generally serialized using an \external{rdf:resource} property, e.g.: \external{rdf:resource="http://www.partsregistry.org/Part:BBa\_J23119"} -It is important to realize that in RDF, a URI may or may not be a resolvable URL (web address). A URI is always a globally unique identifier within a structured namespace. In some cases, that name is also a reference to (or within) a document, and in some cases that document can also be retrieved (e.g., using a web browser). +It is important to realize that in RDF, a \sbol{URI} may or may not be a resolvable URL (web address). A \sbol{URI} is always a globally unique identifier within a structured namespace. In some cases, that name is also a reference to (or within) a document, and in some cases that document can also be retrieved (e.g., using a web browser). \subsection{Identified} \label{sec:Identified} @@ -97,10 +95,10 @@ \subsection{Identified} As shown in \ref{uml:identified}, the \sbol{Identified} class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, \sbol{version}, \sbol{wasDerivedFrom}, \sbol{name}, \sbol{description}, and \sbol{annotations}. The latter property is described separately in \ref{sec:Annotations}. -When an SBOL resource reference takes the form of a URI, that URI may either be the value of an \sbol{identity} property or the value of a \sbol{persistentIdentity} property. -If the URI is equal to the value of an \sbol{identity} property, then it is guaranteed to be unique, and it refers to precisely one SBOL object with that identity value. -If the URI is equal to the value of a \sbol{persistentIdentity} property, then it may refer to multiple SBOL objects that are different ``versions'' of each other. These objects SHOULD be compared to one another to determine which single object the URI should resolve to (normally the most recent version - see \ref{sec:version}). -Throughout this document, when a URI is used to refer to an SBOL object, it could fall into either of these cases. +When an SBOL resource reference takes the form of a \sbol{URI}, that \sbol{URI} may either be the value of an \sbol{identity} property or the value of a \sbol{persistentIdentity} property. +If the \sbol{URI} is equal to the value of an \sbol{identity} property, then it is guaranteed to be unique, and it refers to precisely one SBOL object with that \sbol{URI}. +If the \sbol{URI} is equal to the value of a \sbol{persistentIdentity} property, then it may refer to multiple SBOL objects that are different ``versions'' of each other. These objects SHOULD be compared to one another to determine which single object the \sbol{URI} should resolve to (normally the most recent version - see \ref{sec:version}). +Throughout this document, when a \sbol{URI} is used to refer to an SBOL object, it could fall into either of these cases. \begin{figure}[ht] \begin{center} @@ -112,7 +110,7 @@ \subsection{Identified} \subsubsection*{The \sbolheading{identity} property} \label{sec:identity} -The \sbol{identity} property is REQUIRED by all \sbol{Identified} objects and has a data type of \sbol{URI}. A given \sbol{Identified} object's \sbol{identity} \sbol{URI} MUST be globally unique among all other \sbol{identity} \sbol{URI}s. It is also highly RECOMMENDED that the URI structure follows the recommended best practices for compliant \sbol{URI}s specified in \ref{sec:compliant}. +The \sbol{identity} property is REQUIRED by all \sbol{Identified} objects and has a data type of \sbol{URI}. A given \sbol{Identified} object's \sbol{identity} \sbol{URI} MUST be globally unique among all other \sbol{identity} \sbol{URI}s. It is also highly RECOMMENDED that the \sbol{URI} structure follows the recommended best practices for compliant \sbol{URI}s specified in \ref{sec:compliant}. Although most SBOL properties are defined by SBOL and serialized with its namespace, the \sbol{identity} property is defined by the analogous RDF \external{about} property and is serialized with the RDF namespace as follows: @@ -167,7 +165,7 @@ \subsubsection*{The \sbolheading{description} property} \subsubsection*{The \sbolheading{annotations} property} \label{sec:annotations} -The \sbol{annotations} property is OPTIONAL and MAY specify a set of \sbol{Annotation} objects that are contained by the \sbol{Identified} object. \sbol{Annotation} objects are described in more detail in Section~\ref{sec:Annotation}. +The \sbol{annotations} property is OPTIONAL and MAY specify a set of \sbol{Annotation} objects that are contained by the \sbol{Identified} object. The \sbol{Annotation} class is described in more detail in Section~\ref{sec:Annotation}. \subsubsection*{Serialization} @@ -259,7 +257,7 @@ \subsubsection*{The \sbolheading{elements} property} \subsubsection*{The \sbolheading{encoding} property} \label{sec:encoding} -The \sbol{encoding} property is REQUIRED and has a data type of \sbol{URI}. This property is used to indicate how the \sbol{elements} property of a \sbol{Sequence} MUST be formed and interpreted. +The \sbol{encoding} property is REQUIRED and has a data type of \sbol{URI}. This property MUST indicate how the \sbol{elements} property of a \sbol{Sequence} MUST be formed and interpreted. For example, the \sbol{elements} property of a \sbol{Sequence} with an \external{IUPAC DNA} encoding property MUST contain characters that represent nucleotide bases, such as {\tt a}, {\tt t}, {\tt c}, and {\tt g}. The \sbol{elements} property of a \sbol{Sequence} with a \external{Simplified Molecular-Input Line-Entry System (SMILES)} encoding, on the other hand, MUST contain characters that represent atoms and chemical bonds, such as {\tt C}, {\tt N}, {\tt O}, and {\tt =}. @@ -330,10 +328,9 @@ \subsubsection*{The \sbolheading{types} property} The \sbolmult{types:CD}{types} property of every \sbol{ComponentDefinition} MUST contain one or more \sbol{URI}s that MUST identify terms from appropriate ontologies, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). \ref{tbl:componentdefinition_types} provides a list of possible ontology terms for the \sbolmult{types:CD}{types} property and their \sbol{URI}s. -In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use the \external{URI} for that term as one of its \sbolmult{types:CD}{types}. +In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use the \sbol{URI} for that term as one of its \sbolmult{types:CD}{types}. Finally, if the \sbolmult{types:CD}{types} property contains multiple \sbol{URI}s, then they MUST identify non-conflicting terms (otherwise, it may not be clear how to interpret them). For example, the BioPAX terms provided by \ref{tbl:componentdefinition_types} would conflict because they specify classes of biochemical entities with different molecular structures. - \begin{table}[ht] \begin{edtable}{tabular}{ll} \toprule @@ -353,12 +350,12 @@ \subsubsection*{The \sbolheading{types} property} \subsubsection*{The \sbolheading{roles} property} \label{sec:roles:CD} -The \sbolmult{roles:CD}{roles} property is an OPTIONAL set of \sbol{URI}s that clarifies the potential function of an entity in a biochemical or physical context. +The \sbolmult{roles:CD}{roles} property is an OPTIONAL set of \sbol{URI}s that clarifies the potential function of the entity represented by a \sbol{ComponentDefinition} in a biochemical or physical context. The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} MAY contain one or more \sbol{URI}s that MUST identify terms from ontologies that are consistent with the \sbolmult{types:CD}{types} property of the \sbol{ComponentDefinition}. For example, the \sbolmult{roles:CD}{roles} property of a DNA or RNA \sbol{ComponentDefinition} could contain \sbol{URI}s identifying terms from the Sequence Ontology (SO). \ref{tbl:componentdefinition_roles} contains a list of possible ontology terms for the \sbolmult{roles:CD}{roles} property and their \sbol{URI}s. -These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). Any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use the \external{URI} for that term as one of its \sbolmult{roles:CD}{roles}. +These terms are organized by the type of \sbol{ComponentDefinition} to which they SHOULD apply (see \ref{tbl:componentdefinition_types}). Any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_roles} MUST use the \sbol{URI} for that term as one of its \sbolmult{roles:CD}{roles}. \begin{table}[ht] @@ -391,7 +388,7 @@ \subsubsection*{The \sbolheading{sequences} property} Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbolmult{types:CD}{types} property refers to a term from \ref{tbl:componentdefinition_types}, then one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this term in \ref{tbl:sequence_encodings}. Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbolmult{types:CD}{types} property MUST refer to the term from \ref{tbl:componentdefinition_types} that is cross-listed with this \sbol{encoding} in \ref{tbl:sequence_encodings}. -For example, if the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}, then its \sbolmult{types:CD}{types} property must refer to the BioPAX term for DNA. These requirements are meant to provide for some degree of consistency between the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} and the \sbol{encoding} properties of the \sbol{Sequence} objects to which it refers. +For example, if the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}, then its \sbolmult{types:CD}{types} property must refer to the BioPAX term for DNA. These requirements are meant to provide for some degree of consistency between the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} and the \sbol{encoding} properties of the \sbol{Sequence} objects to which the \sbol{ComponentDefinition} refers. \subsubsection*{The \sbolheading{components} property} \label{sec:components} @@ -401,7 +398,7 @@ \subsubsection*{The \sbolheading{components} property} While the \sbol{ComponentDefinition} class is analogous to a blueprint or specification sheet for a biological part, the \sbol{Component} class represents the specific occurrence of a part within a design. Hence, this class allows a biological design to include multiple instances of a particular part (defined by reference to the same \sbol{ComponentDefinition}). For example, the \sbol{ComponentDefinition} of a polycistronic gene could contain two \sbol{Component} objects that refer to the same \sbol{ComponentDefinition} of a CDS. -The \sbol{components} properties of \sbol{ComponentDefinition} objects can be used to construct a hierarchy of \sbol{ComponentDefinition} and \sbol{Component} objects. If a \sbol{ComponentDefinition} in such a hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then the \sbol{elements} properties of these \sbol{Sequence} objects SHOULD be consistent with each other, such that well-defined mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding} properties. This mapping is also subject to any restrictions on the positions of the \sbol{Component} objects in the hierarchy that are imposed by the \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} objects contained by the \sbol{ComponentDefinition} objects in the hierarchy. +The \sbol{components} properties of \sbol{ComponentDefinition} objects can be used to construct a hierarchy of \sbol{Component} and \sbol{ComponentDefinition} objects. If a \sbol{ComponentDefinition} in such a hierarchy refers to one or more \sbol{Sequence} objects, and there exist \sbol{ComponentDefinition} objects lower in the hierarchy that refer to \sbol{Sequence} objects with the same \sbol{encoding}, then the \sbol{elements} properties of these \sbol{Sequence} objects SHOULD be consistent with each other, such that well-defined mappings exist from the ``lower level'' \sbol{elements} to the ``higher level'' \sbol{elements} in accordance with their shared \sbol{encoding} properties. This mapping is also subject to any restrictions on the positions of the \sbol{Component} objects in the hierarchy that are imposed by the \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} objects contained by the \sbol{ComponentDefinition} objects in the hierarchy. A DNA \sbol{ComponentDefinition}, for example, could refer to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding} and an \sbol{elements} \external{String} of ``{\tt gattaca}.'' In turn, this \sbol{ComponentDefinition} could contain a \sbol{Component} that refers to a ``lower level'' \sbol{ComponentDefinition} that also refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}. Consequently, a consistent \sbol{elements} \external{String} of this ``lower level'' \sbol{Sequence} could be ``{\tt gatta}," or perhaps ``{\tt tgta}'' if the \sbol{Component} is positioned by a \sbol{SequenceAnnotation} that contains a \sbol{Location} with an \sbol{orientation} of ``reverse complement'' (see \ref{sec:Location}). @@ -428,9 +425,9 @@ \subsubsection*{The \sbolheading{sequenceConstraints} property} \subsubsection*{Serialization} The serialization of a \sbol{ComponentDefinition} MUST have the form below. -The \sbol{components}, \sbol{sequenceConstraints}, \sbol{sequenceAnnotations}, and \sbol{sequences} properties of a \sbol{ComponentDefinition} contain objects belonging to the appropriate SBOL classes as their values, while the \sbolmult{types:CD}{types} and \sbolmult{roles:CD}{roles} properties contain \sbol{URI}s that identify ontology terms as their values. +The \sbol{components}, \sbol{sequenceConstraints}, \sbol{sequenceAnnotations}, and \sbol{sequences} properties of a \sbol{ComponentDefinition} contain or reference objects belonging to the appropriate SBOL classes as their values, while the \sbolmult{types:CD}{types} and \sbolmult{roles:CD}{roles} properties contain \sbol{URI}s that identify ontology terms as their values. As shown below, each of these objects and \sbol{URI}s is serialized as part of an implicit set of SBOL properties with singular rather then plural names. -In particular, each object is serialized as a RDF/XML node nested within a singular property, while each \sbol{URI} (except the \sbol{identity}) is serialized as a \external{rdf:resource} on a singular property. +In particular, each object is serialized as a RDF/XML node nested within a property, while each \sbol{URI} (except the \sbol{identity}) is serialized as a \external{rdf:resource} on a property. \lstsetsbol \begin{lstlisting} @@ -522,8 +519,8 @@ \subsubsection{ComponentInstance} \toprule \textbf{Access URI} & \textbf{Description} \\ \midrule - \url{http://sbols.org/v2#public} & The \sbol{ComponentInstance} MAY be referred to by \sbol{MapsTo} objects. \\ - \url{http://sbols.org/v2#private} & The \sbol{ComponentInstance} MUST NOT be referred to by any \sbol{MapsTo} object. \\ + \url{http://sbols.org/v2#public} & The \sbol{ComponentInstance} MAY be referred to by remote \sbol{MapsTo} objects. \\ + \url{http://sbols.org/v2#private} & The \sbol{ComponentInstance} MUST NOT be referred to by remote \sbol{MapsTo} objects. \\ \bottomrule \end{edtable} \caption{REQUIRED \sbol{URI}s for the \sbol{access} property.} @@ -538,7 +535,7 @@ \subsubsection{ComponentInstance} \subsubsection{Component} \label{sec:Component} -The \sbol{Component} class is used to compose \sbol{ComponentDefinition} objects into a structural hierarchy. For example, the \sbol{ComponentDefinition} of a gene could contain four \sbol{Component} objects, including a promoter, RBS, CDS, and terminator. In turn, the \sbol{ComponentDefinition} of the promoter \sbol{Component} could contain \sbol{Component} objects defined as various operator sites. +The \sbol{Component} class is used to compose \sbol{ComponentDefinition} objects into a structural hierarchy. For example, the \sbol{ComponentDefinition} of a gene could contain four \sbol{Component} objects: a promoter, RBS, CDS, and terminator. In turn, the \sbol{ComponentDefinition} of the promoter \sbol{Component} could contain \sbol{Component} objects defined as various operator sites. % All \sbol{Component} objects directly referenced within a \sbol{ComponentDefinition}'s \sbol{SequenceAnnotation} or \sbol{SequenceConstraint} parts MUST be associated with that \sbol{ComponentDefinition} by means of its \sbol{components} property. @@ -582,14 +579,13 @@ \subsubsection{MapsTo} \end{center} \end{figure} - -When \sbol{ComponentDefinition} and \sbol{ModuleDefinition} objects are composed into structural and functional hierarchies using \sbol{ComponentInstance} and \sbol{Module} objects, it is often the case that some \sbol{ComponentInstance} objects are intended to represent the same entity in the overall design. The purpose of the \sbol{MapsTo} class is to make these identity relationships clear and explicit. For example, consider a \sbol{ModuleDefinition} for a generic genetic inverter that includes a \sbol{FunctionalComponent} for a repressor protein. When this \sbol{ModuleDefinition} is instantiated within a higher level \sbol{ModuleDefinition} that includes a \sbol{FunctionalComponent} for a LacI protein, the \sbol{MapsTo} object can be used to indicate that the specific repressor protein in this instance is LacI. +When \sbol{ComponentDefinition} and \sbol{ModuleDefinition} objects are composed into structural and functional hierarchies using \sbol{ComponentInstance} and \sbol{Module} objects, it is often the case that some \sbol{ComponentInstance} objects are intended to represent the same entity in the overall design. The purpose of the \sbol{MapsTo} class is to make these identity relationships clear and explicit. For example, consider a \sbol{ModuleDefinition} for a genetic inverter that includes a \sbol{FunctionalComponent} for an abstract repressor protein. When this \sbol{ModuleDefinition} is instantiated within a ``higher level'' \sbol{ModuleDefinition} that includes a \sbol{FunctionalComponent} for a LacI protein, the \sbol{MapsTo} object can be used to indicate that the repressor protein in the first \sbol{ModuleDefinition} is LacI in the context of the composite design. In particular, a \sbol{MapsTo} object provides two pieces of information: \begin{itemize} \item An identity relationship between two \sbol{ComponentInstance} objects, the first contained by the ``lower level'' definition of the \sbol{ComponentInstance} or \sbol{Module} that owns the - \sbol{MapsTo}, and the second contained by the ``higher level'' definition that contains this \sbol{ComponentInstance} or \sbol{Module}. The \sbol{remote} property of a \sbol{MapsTo} refers to the first ``lower level'' \sbol{ComponentInstance}, while the \sbol{local} property refers to the second ``higher level'' \sbol{ComponentInstance}. -\item Instructions on how to interpret \sbol{local} and \sbol{remote} \sbol{ComponentInstance} objects that refer to different \sbol{ComponentDefinition} objects (that is, they are not identical). These are specified using the \sbol{refinement} property of the \sbol{MapsTo} class. + \sbol{MapsTo}, and the second contained by the ``higher level'' definition that contains the \sbol{ComponentInstance} or \sbol{Module} that owns the \sbol{MapsTo}. The \sbol{remote} property of a \sbol{MapsTo} refers to the first ``lower level'' \sbol{ComponentInstance}, while the \sbol{local} property refers to the second ``higher level'' \sbol{ComponentInstance}. +\item Instructions on how to interpret \sbol{local} and \sbol{remote} \sbol{ComponentInstance} objects that refer to different \sbol{ComponentDefinition} objects (that is, non-identical objects). These are specified using the \sbol{refinement} property of the \sbol{MapsTo} class. \end{itemize} \begin{figure}[ht] @@ -626,10 +622,10 @@ \subsubsection{MapsTo} \toprule \textbf{Refinement URI} & \textbf{Description} \\ \midrule - \url{http://sbols.org/v2#useRemote} & All references to the \sbolmult{definition:CI}{definition} property of the \sbol{local} \sbol{ComponentInstance} MUST dereference to that of the \sbol{remote} \sbol{ComponentInstance} instead.\\ - \url{http://sbols.org/v2#useLocal} & In the context of the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the owner of the \sbol{MapsTo}, all references to the \sbolmult{definition:CI}{definition} property of the \sbol{remote} \sbol{ComponentInstance} MUST dereference to that of the \sbol{local} \sbol{ComponentInstance} instead.\\ + \url{http://sbols.org/v2#useRemote} & All references to the \sbol{local} \sbol{ComponentInstance} MUST dereference to the \sbol{remote} \sbol{ComponentInstance} instead.\\ + \url{http://sbols.org/v2#useLocal} & In the context of the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the owner of the \sbol{MapsTo}, all references to the \sbol{remote} \sbol{ComponentInstance} MUST dereference to the \sbol{local} \sbol{ComponentInstance} instead.\\ \url{http://sbols.org/v2#verifyIdentical} & The \sbolmult{definition:CI}{definition} properties of the \sbol{local} and \sbol{remote} \sbol{ComponentInstance} objects MUST refer to the same \sbol{ComponentDefinition}.\\ - \url{http://sbols.org/v2#merge} & In the context of the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the owner of the \sbol{MapsTo}, all references to the \sbolmult{definition:CI}{definition} property of the \sbol{local} \sbol{ComponentInstance} or that of the \sbol{remote} \sbol{ComponentInstance} MUST dereference to both properties.\\ + \url{http://sbols.org/v2#merge} & In the context of the \sbol{ComponentDefinition} or \sbol{ModuleDefinition} that contains the owner of the \sbol{MapsTo}, all references to the \sbol{local} \sbol{ComponentInstance} or the \sbol{remote} \sbol{ComponentInstance} MUST dereference to both objects.\\ \bottomrule \end{edtable} \caption{REQUIRED \sbol{URI}s for the \sbol{refinement} property.} @@ -648,15 +644,15 @@ \subsubsection{MapsTo} \end{lstlisting} -In the example below, a \sbol{FunctionalComponent} in a ``lower level'' LacI inverter \sbol{ModuleDefinition} is linked to a \sbol{FunctionalComponent} in a ``higher level'' \sbol{ModuleDefinition} of a genetic toggle switch. The full example can be found in \ref{ser:toggleswitch}. +In the example below, a \sbol{FunctionalComponent} in a ``higher level'' \sbol{ModuleDefinition} of a genetic toggle switch is linked to a \sbol{FunctionalComponent} in a ``lower level'' LacI inverter \sbol{ModuleDefinition}. The full example can be found in \ref{ser:toggleswitch}. \lstsetsbol \begin{lstlisting} LacI_mapping - - + + \end{lstlisting} @@ -676,12 +672,12 @@ \subsubsection{SequenceAnnotation} \paragraph{The \sbolheading{locations} property}\label{sec:locations} The \sbol{locations} property is a REQUIRED set of one or more \sbol{Location} objects that indicate which \sbol{elements} of a \sbol{Sequence} are described by the \sbol{SequenceAnnotation}. -Allowing multiple \sbol{Location} objects on a single \sbol{SequenceAnnotation} is intended to allow representation of discontinuous ranges (for example, a \sbol{Component} encoded across a set of exons with interspersed introns). +Allowing multiple \sbol{Location} objects on a single \sbol{SequenceAnnotation} is intended to enable representation of discontinuous regions (for example, a \sbol{Component} encoded across a set of exons with interspersed introns). As such, the \sbol{Location} objects of a single \sbol{SequenceAnnotation} SHOULD NOT specify overlapping regions, since it is not clear what this would mean. There is no such concern with different \sbol{SequenceAnnotation} objects, however, which can freely overlap in \sbol{Location} (for example, specifying overlapping linkers for sequence assembly). \paragraph{The \sbolheading{component} property}\label{sec:component} -The \sbol{component} property is OPTIONAL and has a data type of \sbol{URI}. This \sbol{URI} MUST refer to a \sbol{Component} that is contained by the same parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. In this way, the properties of the \sbol{SequenceAnnotation}, such as its \sbol{description} and \sbol{locations}, are associated with part of the substructure of its \sbol{ComponentDefinition}. +The \sbol{component} property is OPTIONAL and has a data type of \sbol{URI}. This \sbol{URI} MUST refer to a \sbol{Component} that is contained by the same parent \sbol{ComponentDefinition} that contains the \sbol{SequenceAnnotation}. In this way, the properties of the \sbol{SequenceAnnotation}, such as its \sbol{description} and \sbol{locations}, are associated with part of the substructure of its parent \sbol{ComponentDefinition}. \paragraph{Serialization} @@ -692,9 +688,9 @@ \subsubsection{SequenceAnnotation} ... [\emph{properties inherited from identified}] ... [\emph{zero or one}] [\emph{element}] - [\emph{one or more}] + [\emph{one or more}] ... - [\emph{elements}] + [\emph{elements}] \end{lstlisting} @@ -738,8 +734,8 @@ \subsubsection{Location} \toprule \textbf{Orientation URI} & \textbf{Description} \\ \midrule - \url{http://sbols.org/v2\#inline} & The region specified by this \sbol{Location} MUST be on the \sbol{elements} of a \sbol{Sequence}. \\ - \url{http://sbols.org/v2\#reverseComplement} & The region specified by this \sbol{Location} MUST be on the reverse-complement translation of the \sbol{elements} of a \sbol{Sequence}. The exact nature of this translation depends on the \sbol{encoding} of the \sbol{Sequence}. \\ + \url{http://sbols.org/v2\#inline} & The region specified by this \sbol{Location} is on the \sbol{elements} of a \sbol{Sequence}. \\ + \url{http://sbols.org/v2\#reverseComplement} & The region specified by this \sbol{Location} is on the reverse-complement translation of the \sbol{elements} of a \sbol{Sequence}. The exact nature of this translation depends on the \sbol{encoding} of the \sbol{Sequence}. \\ \bottomrule \end{edtable} \caption{REQUIRED \sbol{URI}s for the \sbol{orientation} property} @@ -757,7 +753,7 @@ \subsubsection{Location} The \sbol{start} property specifies the inclusive starting position of the \sbol{Range}. This property is REQUIRED and MUST contain an \sbol{Integer} value greater than zero. \paragraph{The \sbolheading{end} property}\label{sec:end} -The \sbol{end} property specifies the inclusive ending position of the \sbol{Range}. This property is REQUIRED and MUST contain an \sbol{Integer} value greater than zero. In addition, this \external{Integer} value MUST be greater than or equal to that of the \sbol{start} property. +The \sbol{end} property specifies the inclusive ending position of the \sbol{Range}. This property is REQUIRED and MUST contain an \sbol{Integer} value greater than zero. In addition, this \sbol{Integer} value MUST be greater than or equal to that of the \sbol{start} property. \paragraph{Serialization} @@ -822,7 +818,7 @@ \subsubsection{Location} While the \sbol{Range} and \sbol{Cut} classes are best suited to specifying regions on \sbol{Sequence} objects with \external{IUPAC} encodings, the -\sbol{GenericLocation} class is included as a starting point for specifying regions on \sbol{Sequence} objects with different \sbol{encoding} properties and potentially nonlinear structure. This class can also be used to set the \sbol{orientation} of a \sbol{SequenceAnnotation} and any associated \sbol{Component} when their parent \sbol{ComponentDefinition} is partial design that lacks a \sbol{Sequence}. +\sbol{GenericLocation} class is included as a starting point for specifying regions on \sbol{Sequence} objects with different \sbol{encoding} properties and potentially nonlinear structure. This class can also be used to set the \sbol{orientation} of a \sbol{SequenceAnnotation} and any associated \sbol{Component} when their parent \sbol{ComponentDefinition} is a partial design that lacks a \sbol{Sequence}. \paragraph{Serialization} @@ -846,7 +842,7 @@ \subsubsection{Location} \subsubsection{SequenceConstraint} \label{sec:SequenceConstraint} The \sbol{SequenceConstraint} class can be used to assert restrictions on the relative, sequence-based positions of pairs of \sbol{Component} objects contained by the same parent \sbol{ComponentDefinition}. -The primary purpose of this class is to enable the specification of partially designed \sbol{ComponentDefinition} objects, for which the precise positions or ordering of their contained \sbol{Component} objects are not yet fully determined. Each \sbol{SequenceConstraint} includes the \sbol{restriction}, \sbol{subject}, and \sbol{object} properties. +The primary purpose of this class is to enable the specification of partially designed \sbol{ComponentDefinition} objects, for which the precise positions or orientations of their contained \sbol{Component} objects are not yet fully determined. Each \sbol{SequenceConstraint} includes the \sbol{restriction}, \sbol{subject}, and \sbol{object} properties. \begin{figure}[ht] \begin{center} @@ -864,7 +860,7 @@ \subsubsection{SequenceConstraint} \paragraph{The \sbolheading{restriction} property}\label{sec:restriction} -The \sbol{restriction} property is REQUIRED and has a data type of \sbol{URI}. This property is used to indicate the type of structural restriction on the relative, sequence-based positions or orientations of the \sbol{subject} and \sbol{object} \sbol{Component} objects. The \sbol{URI} value of this property SHOULD come from the RECOMMENDED \sbol{URI}s in \ref{tbl:restriction_types}. +The \sbol{restriction} property is REQUIRED and has a data type of \sbol{URI}. This property MUST indicate the type of structural restriction on the relative, sequence-based positions or orientations of the \sbol{subject} and \sbol{object} \sbol{Component} objects. The \sbol{URI} value of this property SHOULD come from the RECOMMENDED \sbol{URI}s in \ref{tbl:restriction_types}. % Note: With regards to SBOL Version 1.1., this is a generalization of former \sbol{SequenceAnnotation} property \external{precedes}. @@ -873,9 +869,9 @@ \subsubsection{SequenceConstraint} \toprule \textbf{Restriction URI} & \textbf{Description} \\ \midrule - http://sbols.org/v2\#precedes & The position of the \sbol{subject} \sbol{Component} MUST precede that of the \sbol{object} \sbol{Component}. If each one is associated with a \sbol{SequenceAnnotation}, then the \sbol{SequenceAnnotation} associated with the \sbol{subject} \sbol{Component} MUST specify a region that starts before the region specified by the \sbol{SequenceAnnotation} associated with the \sbol{object} \sbol{Component}. \\ - http://sbols.org/v2\#sameOrientationAs & The \sbol{subject} and \sbol{object} \sbol{Component} objects MUST have the same orientation. If each one is associated with a \sbol{SequenceAnnotation}, then the \sbol{orientation} \external{URI}s of the \sbol{Location} objects of the first \sbol{SequenceAnnotation} MUST be represented among those of the second \sbol{SequenceAnnotation}, and vice versa. \\ - http://sbols.org/v2\#oppositeOrientationAs & The \sbol{subject} and \sbol{object} \sbol{Component} objects MUST have opposite orientations. If each one is associated with a \sbol{SequenceAnnotation}, then the \sbol{orientation} \external{URI}s of the \sbol{Location} objects of one \sbol{SequenceAnnotation} MUST NOT be represented among those of the other \sbol{SequenceAnnotation}. \\ + \url{http://sbols.org/v2\#precedes} & The position of the \sbol{subject} \sbol{Component} MUST precede that of the \sbol{object} \sbol{Component}. If each one is associated with a \sbol{SequenceAnnotation}, then the \sbol{SequenceAnnotation} associated with the \sbol{subject} \sbol{Component} MUST specify a region that starts before the region specified by the \sbol{SequenceAnnotation} associated with the \sbol{object} \sbol{Component}. \\ + \url{http://sbols.org/v2\#sameOrientationAs} & The \sbol{subject} and \sbol{object} \sbol{Component} objects MUST have the same orientation. If each one is associated with a \sbol{SequenceAnnotation}, then the \sbol{orientation} \sbol{URI}s of the \sbol{Location} objects of the first \sbol{SequenceAnnotation} MUST be among those of the second \sbol{SequenceAnnotation}, and vice versa. \\ + \url{http://sbols.org/v2\#oppositeOrientationAs} & The \sbol{subject} and \sbol{object} \sbol{Component} objects MUST have opposite orientations. If each one is associated with a \sbol{SequenceAnnotation}, then the \sbol{orientation} \sbol{URI}s of the \sbol{Location} objects of one \sbol{SequenceAnnotation} MUST NOT be among those of the other \sbol{SequenceAnnotation}. \\ \bottomrule \end{edtable} \caption{RECOMMENDED \sbol{URI}s for the \sbol{restriction} property.} @@ -918,46 +914,46 @@ \subsection{Model} \end{center} \end{figure} -The purpose of the \sbol{Model} class is to serve as a placeholder for an external model and provide additional meta-data to enable better reasoning about the contents of this model. -In this way, there is minimal duplication of standardization efforts and users of SBOL can specify the quantitative function of a \sbol{ModuleDefinition} in the language of their choice. +The purpose of the \sbol{Model} class is to serve as a placeholder for an external computational model and provide additional meta-data to enable better reasoning about the contents of this model. +In this way, there is minimal duplication of standardization efforts and users of SBOL can formalize the function of a \sbol{ModuleDefinition} in the language of their choice. -The meta-data provided by the \sbol{Model} class include the following properties: the \sbol{source} or location of the actual content of the model, the \sbol{language} in which the model is implemented, and the model's mathematical \sbol{framework}. +The meta-data provided by the \sbol{Model} class include the following properties: the \sbol{source} or location of the actual content of the model, the \sbol{language} in which the model is implemented, and the model's \sbol{framework}. \subsubsection*{ The \sbolheading{source} property}\label{sec:source} -The \sbol{source} property is REQUIRED and MUST contain a \external{URI} reference to a qualitative or quantitative model. +The \sbol{source} property is REQUIRED and MUST contain a \sbol{URI} reference to the source file for a model. \subsubsection*{ The \sbolheading{language} property}\label{sec:language} -The \sbol{language} property is REQUIRED and MUST contain a \external{URI} that specifies the language in which the model is implemented. It is RECOMMENDED that this \external{URI} refer to a term from the EMBRACE Data and Methods (EDAM) ontology. \ref{tbl:model_types} provides a list of RECOMMENDED terms from this ontology and their \external{URI}s. If the \sbol{language} property of a \sbol{Model} is well-described by one these terms, then it MUST use the \external{URI} for this term as its value. +The \sbol{language} property is REQUIRED and MUST contain a \sbol{URI} that specifies the language in which the model is implemented. It is RECOMMENDED that this \sbol{URI} refer to a term from the EMBRACE Data and Methods (EDAM) ontology. \ref{tbl:model_types} provides a list of terms from this ontology and their \sbol{URI}s. If the \sbol{language} property of a \sbol{Model} is well-described by one these terms, then it MUST contain the \sbol{URI} for this term as its value. \begin{table}[ht] \begin{edtable}{tabular}{ll} \toprule - \textbf{Model Language} & \textbf{URI} \\ + \textbf{Model Language} & \textbf{URI for EDAM Term} \\ \midrule SBML & \url{http://identifiers.org/edam/format_2585}\\ CellML & \url{http://identifiers.org/edam/format_3240}\\ BioPAX & \url{http://identifiers.org/edam/format_3156}\\ \bottomrule \end{edtable} - \caption{RECOMMENDED terms from the EDAM ontology to specify the \sbol{language} property of a \sbol{Model}.} + \caption{Terms from the EDAM ontology to specify the \sbol{language} property of a \sbol{Model}.} \label{tbl:model_types} \end{table} \subsubsection*{ The \sbolheading{framework} property}\label{sec:framework} -This REQUIRED property is a URI that specifies the modeling framework that a model is implemented within. -Values for this URI are RECOMMENDED to be chosen from the SBO's modeling framework terms where possible. A few suggested model frameworks and corresponding URI values are shown in \ref{tbl:model_frameworks}. +The \sbol{framework} property is REQUIRED and MUST contain a \sbol{URI} that specifies the framework in which the model is implemented. +It is RECOMMENDED this \sbol{URI} refer to a term from the modeling framework branch of the SBO when possible. A few suggested modeling frameworks and their corresponding \sbol{URI}s are shown in \ref{tbl:model_frameworks}. If the \sbol{framework} property of a \sbol{Model} is well-described by one these terms, then it MUST contain the \sbol{URI} for this term as its value. \begin{table}[ht] \begin{edtable}{tabular}{ll} \toprule - \textbf{Framework} & \textbf{URI} \\ + \textbf{Framework} & \textbf{URI for SBO Term} \\ \midrule Continuous & \url{http://identifiers.org/biomodels.sbo/SBO:0000062}\\ Discrete & \url{http://identifiers.org/biomodels.sbo/SBO:0000063}\\ \bottomrule \end{edtable} - \caption{Example modelling frameworks and corresponding SBO terms.} + \caption{SBO terms to specify the \sbol{framework} property of a \sbol{Model}.} \label{tbl:model_frameworks} \end{table} @@ -967,7 +963,7 @@ \subsubsection*{Serialization} \lstsetsbol \begin{lstlisting} - + ... [\emph{properties inherited from identified}] ... [\emph{one}] [\emph{element}] [\emph{one}] [\emph{element}] @@ -975,7 +971,7 @@ \subsubsection*{Serialization} \end{lstlisting} -The example below shows the serialization of a \sbol{Model} object that refers to a quantitative model of a genetic toggle switch. The model is implemented in the SBML \sbol{language} and adheres to a continuous modeling \sbol{framework}. Lastly, the model can be retrieved from a model repository via its \sbol{source} \external{URI}, which is a \external{URL}. +The example below shows the serialization of a \sbol{Model} object that refers to a quantitative model of a genetic toggle switch. The model is implemented in the SBML \sbol{language} and adheres to a continuous modeling \sbol{framework}. Lastly, the model can be retrieved from a model repository via its \sbol{source} \sbol{URI}, which is a \external{URL}. \lstsetsbol \begin{lstlisting} @@ -1003,46 +999,43 @@ \subsection{ModuleDefinition} \end{center} \end{figure} -The \sbol{ModuleDefinition} class is the hub where the structural and functional aspects of genetic designs are brought together to form a complete picture of the design. -A \sbol{ModuleDefinition} object is composed from zero or more \sbol{FunctionalComponent}, \sbol{Module}, and \sbol{Interaction} objects, and links to zero or more \sbol{Model} objects. +The \sbol{ModuleDefinition} class represents a grouping of structural and functional entities in a biological design. The primary usage of this class is to assert the molecular interactions and abstract function of its child entities. -As an engineering object, a \sbol{ModuleDefinition} will often have certain of its \sbol{FunctionalComponent} objects that are intended to carry signals in or out of it. -This functionality of designated ``inputs'' and ``outputs'' is expressed by \sbol{direction} properties on its \sbol{FunctionalComponent} elements. +As shown in \ref{uml:module_definition}, these child entities are aggregated via the \sbol{functionalComponents} \sbol{modules} properties, while representation of their abstract function is accomplished via the \sbolmult{roles:MD}{roles} property. More detailed descriptions of the function of a \sbol{ModuleDefinition} are provided by its \sbol{interactions} and \sbol{models} properties. Lastly, since \sbol{ModuleDefinition} objects can be more abstract and represent entities of engineering design rather than biology, they can have designated ``inputs'' and ``outputs'' expressed by the \sbol{direction} properties on its \sbol{FunctionalComponent} objects. \subsubsection*{The \sbolheading{roles} property}\label{sec:roles:MD} -The \sbolmult{roles:MD}{roles} property is an OPTIONAL set of \sbol{URI}s that clarifies the intended function of a \sbol{ModuleDefinition} in a biological context. +The \sbolmult{roles:MD}{roles} property is an OPTIONAL set of \sbol{URI}s that clarifies the intended function of a \sbol{ModuleDefinition}. -These terms might identify ``logical'' roles, such as ``inverter'' or ``AND gate'', or they might identify descriptive biological roles, such as ``metabolic pathway'' and ``signaling cascade,'' or might identify roles from some other manner of describing intended function. -Interpretation of the meaning of such roles is currently implementation-dependent. +These \sbol{URI}s might identify descriptive biological roles, such as ``metabolic pathway'' and ``signaling cascade,'' but they may also identify identify ``logical'' roles, such as ``inverter'' or ``AND gate'', or other abstract roles for describing the function of design. Interpretation of the meaning of such roles currently depends on the software tools that read and write them. \subsubsection*{The \sbolheading{modules} property}\label{sec:modules} The \sbol{modules} property is OPTIONAL and MAY specify a set of \sbol{Module} objects contained by the \sbol{ModuleDefinition}. Note that the set of relations between \sbol{Module} and \sbol{ModuleDefinition} objects is strictly acyclic. -While the \sbol{ModuleDefinition} class is analogous to a blueprint or specification sheet for a system of interaction biological elements, the \sbol{Module} class represents the specific occurrence of a particular sub-system within that design. -Hence, this class allows a biological design to include multiple instances of a subsystem (defined by reference to the same \sbol{ModuleDefinition}). -For example, the \sbol{ModuleDefinition} for a network of two-input repressor systems, where the particular repressors have not yet been chosen, contain multiple \sbol{Module} objects that refer to the same \sbol{URI} for the \sbol{ModuleDefinition} of an abstract two-input repressor device. +While the \sbol{ModuleDefinition} class is analogous to a specification sheet for a system of interacting biological elements, the \sbol{Module} class represents the occurrence of a particular subsystem within the system. +Hence, this class allows a system design to include multiple instances of a subsystem, all defined by reference to the same \sbol{ModuleDefinition}. +For example, consider the \sbol{ModuleDefinition} for a network of two-input repressor devices in which the particular repressors have not been chosen yet. This \sbol{ModuleDefinition} could contain multiple \sbol{Module} objects that refer to the same \sbol{ModuleDefinition} of an abstract two-input repressor device. \subsubsection*{The \sbolheading{functionalComponents} property} \label{sec:functionalComponents} The \sbol{functionalComponents} property is OPTIONAL and MAY specify a set of \sbol{FunctionalComponent} objects contained by the \sbol{ModuleDefinition}. -Just as a \sbol{Module} represents an instance of a subsystem in the \sbol{ModuleDefinition} "blueprint", a \sbol{FunctionalComponent} represents an instance of an individual element whose \sbol{ComponentDefinition} may be used multiple times in a \sbol{ModuleDefinition}. For example, a \sbol{ModuleDefinition} might contain several copies of a particular promoter. +Just as a \sbol{Module} represents an instance of a subsystem in the overall system represented by a \sbol{ModuleDefinition}, a \sbol{FunctionalComponent} represents an instance of a structural entity (represented by a \sbol{ComponentDefinition}) in the system. This concept allows a \sbol{ModuleDefinition} to assert different interactions for separate copies of the same structural entity if needed. For example, a \sbol{ModuleDefinition} might contain multiple \sbol{FunctionalComponent} objects that refer to the same promoter \sbol{ComponentDefinition}, but assert different interactions for these promoter copies based on their separate positions in another \sbol{ComponentDefinition} that represents the structure of the entire system. \subsubsection*{The \sbolheading{interactions} property}\label{sec:interactions} -The \sbol{interactions} property is OPTIONAL and MAY specify a set of \sbol{Interaction} objects within a \sbol{ModuleDefinition}. +The \sbol{interactions} property is OPTIONAL and MAY specify a set of \sbol{Interaction} objects within the \sbol{ModuleDefinition}. -The \sbol{Interaction} class provides an abstract, machine-friendly representation of the functional interactions of entities within a \sbol{ModuleDefinition} (whereas a \sbol{Model} of a system may not be readily susceptible to machine reasoning, depending on how it is implemented). -Each \sbol{Interaction} includes \sbol{Participation} entities that indicate the roles of the \sbol{FunctionalComponent} objects involved in the \sbol{Interaction} +The \sbol{Interaction} class provides an abstract, machine-readable representation of entity behavior within a \sbol{ModuleDefinition} (whereas a more detailed model of the system may not be suited to machine reasoning, depending on its implementation). +Each \sbol{Interaction} contains \sbol{Participation} objects that indicate the roles of the \sbol{FunctionalComponent} objects involved in the \sbol{Interaction}. \subsubsection*{The \sbolheading{models} property}\label{sec:models} -The \sbol{models} property is OPTIONAL and MAY specify a set of \sbol{URI}s identifying \sbol{Model} objects. +The \sbol{models} property is OPTIONAL and MAY specify a set of \sbol{URI} references to \sbol{Model} objects. -SBOL's \sbol{Model} objects are placeholders used to link specifications of biological parts and their interactions to computational models of arbitrary format. -A \sbol{ModuleDefinition} object can link to more than one \sbol{Model} since each might encode the same system in a different way or at a different level of detail. +\sbol{Model} objects are placeholders that link \sbol{ModuleDefinition} objects to computational models of any format. +A \sbol{ModuleDefinition} object can link to more than one \sbol{Model} since each might encode system behavior in a different way or at a different level of detail. \subsubsection*{Serialization} @@ -1092,65 +1085,6 @@ \subsubsection*{Serialization} \end{lstlisting} -\subsubsection{FunctionalComponent} -\label{sec:FunctionalComponent} -A \sbol{FunctionalComponent} is an instance of a \sbol{ComponentDefinition} being used as part of a \sbol{ModuleDefinition} object. -Each \sbol{FunctionalComponent} object is owned by a \sbol{ModuleDefinition} object and represents an explicit usage of a \sbol{ComponentDefinition} object for the purpose of fulfilling some function. - -\sbol{FunctionalComponent} derives from \sbol{ComponentInstance}, and therefore has the \sbolmult{definition:CI}{definition}, \sbol{access}, and \sbolmult{mapsTos:CI}{mapsTos} properties. -Additionally, it has a \sbol{direction} property that specifies whether it serves as an input, output, both, or neither with regards to the \sbol{ModuleDefinition} that contains it. - -\paragraph{The \sbolheading{direction} property}\label{sec:direction} -Each \sbol{FunctionalComponent} MUST specify via the \sbol{direction} property whether it serves as an input, output, both, or neither for its parent \sbol{ModuleDefinition} object. -The value for this property MUST be one of the values given in \ref{tbl:functionalcomponent_directions}. - - -\begin{table}[ht] - \begin{edtable}{tabular}{ll} - \toprule - \textbf{Direction URI} & \textbf{Description} \\ - \midrule - \url{http://sbols.org/v2#inout} & To indicate a \sbol{FunctionalComponent} can be used as both input or output\\ - \url{http://sbols.org/v2#in} & To indicate a \sbol{FunctionalComponent} can be used as input\\ - \url{http://sbols.org/v2#out} & To indicate a \sbol{FunctionalComponent} can be used as output\\ - \url{http://sbols.org/v2#none} & To indicate a \sbol{FunctionalComponent} is neither input nor output\\ - \bottomrule - \end{edtable} - \caption{\sbol{URI}s for the \sbol{direction} property.} - \label{tbl:functionalcomponent_directions} -\end{table} - -The \sbol{direction} property is a means to encode a common way in which designers think about the ``purpose'' of a connection in a system. In this case, the connection is the \sbol{FunctionalComponent}, and the system is the \sbol{ModuleDefinition}. -For example, consider a system that is designed to indicate concentration of the cell-cell signalling molecule 3OC$_6$HSL by the concentration of the product of a particular CDS. -In this system, the concentration of 3OC$_6$HSL is the signal being interpreted by the system, so the \sbol{FunctionalComponent} for 3OC$_6$HSL would have a \sbol{direction} of ``input.'' -Complementarily, the concentration of the designated product is the signal intended for consumption by other biologicals systems, and so the \sbol{FunctionalComponent} for that product would have a \sbol{direction} of ``output.'' -The CDS encoding the product, however, is not intended to interact directly, and so its \sbol{FunctionalComponent} would have a \sbol{direction} of ``neither.'' -Finally, in some cases a \sbol{FunctionalComponent} may serve as both an input and output, and be marked as having a \sbol{direction} of ``both.'' - -\paragraph{Serialization} - -The serialization of \sbol{FunctionalComponent}s has the following form. -\lstsetsbol -\begin{lstlisting} - - ... [\emph{properties inherited from identified}] ... - [\emph{one}] [\emph{element}] - [\emph{one}] [\emph{element}] - [\emph{one}] [\emph{element}] - [\emph{zero or more}] [\emph{elements}] - -\end{lstlisting} - -In the example below, the functional component is defined as public input or output. The component refers to the \texttt{Part:BBa\_R0010} promoter from the Parts Registry. -\lstsetsbol -\begin{lstlisting} - - - - - -\end{lstlisting} - \subsubsection{Module} \label{sec:Module} @@ -1175,7 +1109,7 @@ \subsubsection{Module} \paragraph{The \sbolheading{mapsTo} property} \label{sec:mapsTos:M} -The \sbolmult{mapsTos:M}{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects that refer to and link \sbol{Module} objects together within a larger design. +The \sbolmult{mapsTos:M}{mapsTos} property is an OPTIONAL set of \sbol{MapsTo} objects that refer to and link \sbol{ComponentInstance} objects together within the heterarchy of \sbol{Module}, \sbol{ModuleDefinition}, \sbol{ComponentInstance}, and \sbol{ComponentDefinition} objects. \ref{sec:MapsTo} contains a detailed description of the \sbol{MapsTo} class. @@ -1193,7 +1127,7 @@ \subsubsection{Module} \end{lstlisting} The example below specifies a TetR inverter that is being used as -a part of a toggle switch: +a part of a genetic toggle switch: \lstsetsbol \begin{lstlisting} @@ -1203,6 +1137,63 @@ \subsubsection{Module} \end{lstlisting} +\subsubsection{FunctionalComponent} +\label{sec:FunctionalComponent} +A \sbol{FunctionalComponent} is an instance of a \sbol{ComponentDefinition} being used as part of a \sbol{ModuleDefinition}. The \sbol{ModuleDefinition} describes how the that describes how the \sbol{FunctionalComponent} interacts with others and summarizes their aggregate function. + +The \sbol{FunctionalComponent} class inherits from the \sbol{ComponentInstance} class and therefore has the \sbolmult{definition:CI}{definition}, \sbol{access}, and \sbolmult{mapsTos:CI}{mapsTos} properties. +In addition, it has a \sbol{direction} property that specifies whether it serves as an input, output, both, or neither with regards to the \sbol{ModuleDefinition} that contains it. + +\paragraph{The \sbolheading{direction} property}\label{sec:direction} +Each \sbol{FunctionalComponent} MUST specify via the \sbol{direction} property whether it serves as an input, output, both, or neither for its parent \sbol{ModuleDefinition} object. +The value for this property MUST be one of the \sbol{URI}s given in \ref{tbl:functionalcomponent_directions}. + + +\begin{table}[ht] + \begin{edtable}{tabular}{ll} + \toprule + \textbf{Direction URI} & \textbf{Description} \\ + \midrule + + \url{http://sbols.org/v2#in} & Indicates that the \sbol{FunctionalComponent} is an input.\\ + \url{http://sbols.org/v2#out} & Indicates that the \sbol{FunctionalComponent} is an output.\\ + \url{http://sbols.org/v2#inout} & Indicates that the \sbol{FunctionalComponent} is both an input and output\\ \url{http://sbols.org/v2#none} & Indicates that the \sbol{FunctionalComponent} is neither an input or output.\\ + \bottomrule + \end{edtable} + \caption{REQUIRED \sbol{URI}s for the \sbol{direction} property.} + \label{tbl:functionalcomponent_directions} +\end{table} + +The \sbol{direction} property is a means to encode how a designer thinks about the ``purpose'' of a connection in a system. In SBOL, such a connection is represented with a \sbol{FunctionalComponent}, and a system is represented as with a \sbol{ModuleDefinition}. +For example, consider a system that has been designed to sense the concentration of the cell-to-cell signaling molecule 3OC$_6$HSL and report it via the concentration of another gene product. +In this system, the concentration of 3OC$_6$HSL is being sensed by the system, so the \sbol{FunctionalComponent} for 3OC$_6$HSL would have a \sbol{direction} of ``input.'' +In turn, the concentration of the reporter gene product is intended to be read/consumed by other biological systems, so the \sbol{FunctionalComponent} for this product would have a \sbol{direction} of ``output.'' +The CDS encoding the product, however, is not intended to directly transfer information into or out of the \sbol{ModuleDefinition} for the system, so its \sbol{FunctionalComponent} would have a \sbol{direction} of ``neither.'' + +\paragraph{Serialization} + +The serialization of a \sbol{FunctionalComponent} has the following form. +\lstsetsbol +\begin{lstlisting} + + ... [\emph{properties inherited from identified}] ... + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{one}] [\emph{element}] + [\emph{zero or more}] [\emph{elements}] + +\end{lstlisting} + +In the example below, the functional component is defined as a public input/output. The component refers to the \texttt{Part:BBa\_R0010} promoter from the iGEM Parts Registry. +\lstsetsbol +\begin{lstlisting} + + + + + +\end{lstlisting} + \subsubsection{Interaction} \label{sec:Interaction} @@ -1214,28 +1205,43 @@ \subsubsection{Interaction} \end{center} \end{figure} -The \sbol{Interaction} class provides a description of the functional interactions of entities within a \sbol{ModuleDefinition}. -For example, it can be used to represent regulatory interactions, such as activation or repression, processes from the central dogma of biology, such as transcription and translation, or molecular interactions like non-covalent binding between a small molecule and transcription factor or phosphorylation of a transcription factor by an enzyme. -Such an \sbol{Interaction} is represented in SBOL by referring to an ontology defining the type of interaction and declaring how various entities participate in the interaction. +The \sbol{Interaction} class provides more detailed description of how the \sbol{FunctionalComponent} objects of a \sbol{ModuleDefinition} are intended to work together. +For example, this class can be used to represent different forms of genetic regulation (e.g., transcriptional activation or repression), processes from the central dogma of biology (e.g. transcription and translation), and other basic molecular interactions (e.g., non-covalent binding or enzymatic phosphorylation). +Each \sbol{Interaction} includes a \sbolmult{types:I}{types} property that refers to descriptive ontology terms and a \sbol{participations} property that describes which \sbol{FunctionalComponent} objects participate in the \sbol{Interaction}. \paragraph{The \sbolheading{types} property}\label{sec:types:I} -The \sbolmult{types:I}{types} property is a REQUIRED set of one or more \sbol{URI}s that identify an appropriate ontology term describing the behavior represented by this \sbol{Interaction}. -If an \sbol{Interaction} object has multiple -\sbolmult{types:I}{types} \sbol{URI}s, then they must identify synonymous terms. +The \sbolmult{types:I}{types} property is a REQUIRED set of \sbol{URI}s that describes the behavior represented by an \sbol{Interaction}. + +The \sbolmult{types:I}{types} property MUST contain one or more \sbol{URI}s that MUST identify terms from appropriate ontologies. It is RECOMMENDED that at least one of the \sbol{URI}s contained by the \sbolmult{types:I}{types} property refer to a term from the occurring entity branch of the Systems Biology Ontology (SBO). (See \url{http://www.ebi.ac.uk/sbo/main/}) \ref{tbl:interaction_types} provides a list of possible SBO terms for the \sbolmult{types:I}{types} property and their corresponding \sbol{URI}s. + +\begin{table}[ht] + \begin{edtable}{tabular}{ll} + \toprule + \textbf{Interaction Type} & \textbf{URI for SBO Term} \\ + \midrule + Inhibition & \url{http://identifiers.org/biomodels.sbo/SBO:0000169}\\ + Stimulation & \url{http://identifiers.org/biomodels.sbo/SBO:0000170}\\ + Genetic Production & \url{http://identifiers.org/biomodels.sbo/SBO:0000589}\\ + Non-Covalent Binding & \url{http://identifiers.org/biomodels.sbo/SBO:0000177}\\ + \bottomrule + \end{edtable} + \caption{SBO terms to specify the \sbolmult{types:I}{types} property of an \sbol{Interaction}.} + \label{tbl:interaction_types} +\end{table} -Values for this URI are RECOMMENDED to be chosen from the occurring entity branch of the Systems Biology Ontology (SBO), where possible. -(See \url{http://www.ebi.ac.uk/sbo/main/}) +If an \sbol{Interaction} is well described by one of the terms from \ref{tbl:interaction_types}, then its \sbolmult{types:I}{types} property must contain the \sbol{URI} that identifies this term. Lastly, if the \sbolmult{types:I}{types} property of an \sbol{Interaction} contains multiple + \sbol{URI}s, then they must identify non-conflicting terms. For example, the SBO terms ``stimulation'' and ``inhibition'' would conflict. \paragraph{The \sbolheading{participations} property}\label{sec:participations} -The \sbol{participations} property is an OPTIONAL set of \sbol{Participation} objects, each of which identifies the \sbolmult{roles:P}{roles} that the referenced \sbol{FunctionalComponent} plays in the interaction. +The \sbol{participations} property is an OPTIONAL and MAY contain a set of \sbol{Participation} objects, each of which identifies the \sbolmult{roles:P}{roles} that its referenced \sbol{FunctionalComponent} plays in the \sbol{Interaction}. -Note that even though an \sbol{Interaction} generally involves at least one \sbol{Participation}, the case of zero participations is allowed because it is plausible that a design may wish to specify that an \sbol{Interaction} will exist, even if its \sbol{participant}s are not yet determined. +Even though an \sbol{Interaction} generally contains at least one \sbol{Participation}, the case of zero \sbol{Participation} objects is allowed because it is plausible that a designer may want to specify that an \sbol{Interaction} will exist, even if its \sbol{participant}s have not yet been determined. \paragraph{Serialization} -The serialization of \sbol{Interaction} objects has the following form. +The serialization of an \sbol{Interaction} has the following form. \lstsetsbol \begin{lstlisting} @@ -1279,22 +1285,38 @@ \subsubsection{Interaction} \subsubsection{Participation} \label{sec:Participation} -Each \sbol{Participation} object describes the role or roles that a -particular \sbol{FunctionalComponent} plays in its parent +Each \sbol{Participation} represents how a particular \sbol{FunctionalComponent} behaves in its parent \sbol{Interaction}. \paragraph{The \sbolheading{roles} property}\label{sec:roles:P} -The \sbolmult{roles:P}{roles} property is an OPTIONAL set of \sbol{URI}s that identify an appropriate ontology term describing this elements relationship to its parent \sbol{Interaction}. -If a \sbol{Participation} object has multiple -\sbolmult{roles:P}{roles} \sbol{URI}s, then they must identify synonymous terms. +The \sbolmult{roles:P}{roles} property is an OPTIONAL set of \sbol{URI}s that describes the behavior of a \sbol{Participation} (and by extension its referenced \sbol{FunctionalComponent}) in the context of its parent \sbol{Interaction}. -Values for this URI are RECOMMENDED to be chosen from the participant role branch of the Systems Biology Ontology (SBO) where possible. -(See \url{http://www.ebi.ac.uk/sbo/main/}) +The \sbolmult{roles:P}{roles} property MAY contain one or more \sbol{URI}s that MUST identify terms from appropriate ontologies. It is RECOMMENDED that at least one of the \sbol{URI}s contained by the \sbolmult{types:I}{types} property refer to a term from the participant role branch of the SBO. \ref{tbl:participant_roles} provides a list of possible SBO terms for the \sbolmult{roles:P}{roles} property and their corresponding \sbol{URI}s. + +\begin{table}[ht] + \begin{edtable}{tabular}{ll} + \toprule + \textbf{Participation Role} & \textbf{URI for SBO Term} \\ + \midrule + Inhibitor & \url{http://identifiers.org/biomodels.sbo/SBO:0000020}\\ + Stimulator & \url{http://identifiers.org/biomodels.sbo/SBO:0000459}\\ + Reactant & \url{http://identifiers.org/biomodels.sbo/SBO:0000010}\\ + Product & \url{http://identifiers.org/biomodels.sbo/SBO:0000011}\\ + Ligand & \url{http://identifiers.org/biomodels.sbo/SBO:0000280}\\ + Non-Covalent Complex & \url{http://identifiers.org/biomodels.sbo/SBO:0000253}\\ + \bottomrule + \end{edtable} + \caption{SBO terms to specify the \sbolmult{roles:P}{roles} property of a \sbol{Participation}.} + \label{tbl:participant_roles} +\end{table} + +If a \sbol{Participation} is well described by one of the terms from \ref{tbl:participant_roles}, then its \sbolmult{roles:P}{roles} property must contain the \sbol{URI} that identifies this term. Lastly, if the \sbolmult{roles:P}{roles} property of a \sbol{Participation} contains multiple + \sbol{URI}s, then they must identify non-conflicting terms. For example, the SBO terms ``stimulator'' and ``inhibitor'' would conflict. \paragraph{The \sbolheading{participant} property}\label{sec:participant} -The \sbol{participant} property MUST specify precisely one \sbol{FunctionalComponent} object that plays the designated \sbolmult{roles:P}{roles} in its parent \sbol{Interaction} object. +The \sbol{participant} property MUST specify precisely one \sbol{FunctionalComponent} object that plays the designated role in its parent \sbol{Interaction} object. \paragraph{Serialization} @@ -1309,7 +1331,7 @@ \subsubsection{Participation} \end{lstlisting} -In the example below, the role of participating \sbol{FunctionalComponent} is defined to be \external{inhibitor}, using the \external{SBO:0000020} term. This component is specified using the participant property of the \sbol{Participation} entity. +In the example below, the role of participating \sbol{FunctionalComponent} is defined to be \external{inhibitor}, using the \external{SBO:0000020} term. This component is specified using the \sbol{participant} property of the \sbol{Participation} entity. \lstsetsbol \begin{lstlisting} @@ -1323,8 +1345,8 @@ \subsubsection{Participation} The \sbol{Collection} class is a class that groups together a set of \sbol{TopLevel} objects that have something in common. Some examples of \sbol{Collection} objects: \begin{itemize} -\item Results of a query to find all \sbol{ComponentDefinition} objects that function as promoters in a repository. -\item A set of \sbol{ModuleDefinition} objects representing a library of NAND gates. +\item Results of a query to find all \sbol{ComponentDefinition} objects in a repository that function as promoters. +\item A set of \sbol{ModuleDefinition} objects representing a library of genetic logic gates. \item A \sbol{ModuleDefinition} for a complex design, and all of the \sbol{ModuleDefinition}, \sbol{ComponentDefinition}, \sbol{Sequence}, and \sbol{Model} objects used to provide its full specification. \end{itemize} @@ -1337,11 +1359,11 @@ \subsubsection{Participation} \end{figure} \subsubsection*{The \sbolheading{members} property}\label{sec:members} -The \sbol{members} property has a data type of URI and has the URI for a \sbol{TopLevel} entity. A \sbol{Collection} may have any number of members, including none. +The \sbol{members} property of a \sbol{Collection} is optional and MAY contain a set of \sbol{URI} references to zero or more \sbol{TopLevel} objects. \subsubsection*{Serialization} -The serialization of \sbol{Collection} objects has the following form: +The serialization of a \sbol{Collection} has the following form: \lstsetsbol \begin{lstlisting} @@ -1369,19 +1391,19 @@ \subsubsection*{Serialization} \end{lstlisting} \label{ser:Collection} -\subsection{SBOL Extension Mechanism} +\subsection{Annotation and Extension of SBOL} \label{sec:Annotations} -SBOL does not attempt to represent all information about a biological system, since many things do not yet have a clear ``right way'' to be represented, such as design intent, biological context, or performance data. Instead, SBOL allows the embedding of application specific data that are not captured by the SBOL standard. Such data are optional, but can be computationally generated and exchanged via SBOL documents without getting damaged or lost. This SBOL extension mechanism is designed to allow easy incorporation within the SBOL standard once there is community agreement on data content to be exchanged. +SBOL does not currently represent all types of biological design data, since many of these data types (e.g., biological context and design performance metrics) lack a clear consensus on their proper representation. In addition, some types of biological data are not directly relevant to design and are therefore outside of the scope of SBOL. -To do this, SBOL provides an ``annotation'' mechanism for attaching arbitrary information to SBOL objects, which allows SBOL models to be connected with any other models in an extensible manner. -In particular, several methods are supported for connecting the SBOL data model with other, possibly application-specific data: -\begin{enumerate} -\item Information that is ``part'' of an SBOL object (i.e., a ``filled diamond'' relationship) is annotated simply by adding non-conflicting properties and custom entries to an SBOL object. An example might be source information about the registry from which a \sbol{ComponentDefinition} was imported. -\item Information that is an independent object is annotated by wrapping it inside of a \sbol{GenericTopLevel} object. An example might be a data sheet describing the performance of a \sbol{ModuleDefinition} in some particular context. -\item Conversely, rather than embedding external objects in SBOL, SBOL objects can also be linked to external data. The only requirement is that some URI resolution mechanism must be available that allows the links from SBOL objects to be followed when needed. -\item Finally, just as external objects can be embedded in SBOL, external documents can embed or refer to SBOL objects. This last case needs no explicit support from this specification (it depends only on the external non-SBOL system managing its own relations to SBOL), and is included here for completeness. -\end{enumerate} +To enable representation of these data, SBOL allows developers to embed custom data within SBOL objects and documents, such that these data can be exchanged without being damaged or lost. This annotation and extension mechanism is designed to enable new types of data to be easily incorporated into the SBOL standard once there is community consensus on their proper representation. + +Several methods are supported for connecting the SBOL data model with other types of application-specific data: +\begin{itemize} +\item Custom data can be added to an SBOL object by annotating that object with non-conflicting properties. These properties could contain \sbol{literal} data types such as \sbol{String}s or \sbol{URI}s that require a resolution mechanism to obtain external data. An example is annotating a \sbol{ComponentDefinition} with a property that contains a \sbol{String} description and \sbol{URI} for the parts registry from which its source data was originally imported. +\item Custom data in the form of independent objects can be added to an SBOL document by creating \sbol{GenericTopLevel} objects and annotating them as described above. An example is a \sbol{GenericTopLevel} object that is annotated such that it represents a data sheet that describes the performance of a \sbol{ModuleDefinition} in a particular context. +\item Finally, just as custom objects can be embedded in an SBOL document, external documents can embed or refer to SBOL objects. Support for this last case is not explicitly provided in this specification. Rather, this case depends on the external non-SBOL system managing its relationship to SBOL and data serialized in RDF/XML, and is included here for completeness. +\end{itemize} \subsubsection{Annotating SBOL objects} % whole set of labels for the properties defined herein @@ -1394,9 +1416,8 @@ \subsubsection{Annotating SBOL objects} \label{sec:nestedQName} \label{sec:nestedURI} -Each \sbol{Identified} object may have a number of annotations in the form of name/value property pairs. The \sbol{qName} property is specified by a qualified name (\sbol{QName}), which is composed of a namespace, a prefix, and a local name. The \sbol{qName} property must be stored in the data model to allow for proper serialization as described below. -The \sbol{value} property can be a literal type (i.e., \sbol{String}, \sbol{Integer}, \sbol{Double}, \sbol{Boolean}), \sbol{URI}, or a \sbol{NestedAnnotations} object. The \sbol{NestedAnnotations} object is composed of a \sbol{nestedQName}, \sbol{nestedURI}, and an optional list of nested \sbol{annotations}. - +Each \sbol{Identified} object may contain any number of \sbol{Annotation} objects that store data in the form of name/value property pairs. The \sbol{qName} is REQUIRED and MUST contain a \sbol{QName}, which is composed of a namespace, an OPTIONAL prefix, and a local name. The \sbol{qName} property must be stored in the data model to allow for proper serialization as described below. +The \sbol{value} property is also REQUIRED and must contain a \sbol{literal} (i.e., a \sbol{String}, \sbol{Integer}, \sbol{Double}, \sbol{Boolean}), \sbol{URI}, or \sbol{NestedAnnotations} object. A \sbol{NestedAnnotations} object MUST contain \sbol{nestedQName} and \sbol{nestedURI} properties, and it MAY contain an \sbol{annotations} property that contains zero or more \sbol{Annotation} objects. \begin{figure}[!ht] \begin{center} @@ -1408,8 +1429,7 @@ \subsubsection{Annotating SBOL objects} \subsubsection*{Serialization} - -The serialization of \sbol{Annotation} objects has the following form: +The serialization of an \sbol{Annotation} has the following form: \lstsetsbol \begin{lstlisting} @@ -1432,15 +1452,13 @@ \subsubsection*{Serialization} [\emph{elements}] \end{lstlisting} -The \sbol{qName} property specifies the namespace, prefix, and localPart values. The use of such qualified names is described in detail by the w3c here:\\ -\url{http://www.w3.org/TR/1999/REC-xml-names-19990114/#ns-using}\\ -Essentially, the "xmlns" statement defines the prefix string to use as an alias for the namespace. The prefix can be any arbitrary string, and its use is optional, since it simply replaces the full namespace making the serialization more readable. +The \sbol{qName} property specifies a namespace, prefix, and local part/name. The use of such qualified names is described in detail by the W3C (\url{http://www.w3.org/TR/1999/REC-xml-names-19990114/#ns-using}). Essentially, the "xmlns" property defines the prefix \sbol{String} to use as an alias for the namespace. The prefix can be any \sbol{String}. Its use is OPTIONAL, since it simply replaces the full namespace, thereby making the serialization easier for a human to read. -The first annotation shown above is for a \sbol{literal} annotation. The second form is for a \sbol{URI} annotation. Finally, the third form is for an \sbol{NestedAnnotations} object annotation. In this last case, the \sbol{nestedQName} property specifies the nestedNamespace, nestedPrefix, and nestedLocalPart while the \sbol{nestedURI} property species the URI for the nested annotation. +The first form of \sbol{Annotation} shown above is for an \sbol{Annotation} that contains a \sbol{literal} as its \sbol{value}. The second form is for an \sbol{Annotation} that contains a \sbol{URI} as its value. Finally, the third form is for an \sbol{Annotation} that contains a \sbol{NestedAnnotations} object as its value. In the last case, the \sbol{nestedQName} property specifies the nested namespace, nested prefix, and nested local part/name, while the \sbol{nestedURI} property species the \sbol{URI} for the \sbol{NestedAnnotations} object. -The ComponentDefinition example for a promoter serialized below shows how annotations can be added to SBOL objects. Annotations are added using the relevant information from the Parts Registry. Annotation property names are qualified with the \external{http://www.partsregistry.org/} namespace, which is prefixed using \external{pr}. The first annotation is named as \external{pr:group}, indicating the iGEM group designing the promoter, and has a \sbol{String} value. -The second \external{pr:experience} annotation has a \sbol{URI} value and is serialised as an RDF resource; in this case, the identifier also happens to be able to be resolved to the information Web page on the Parts Registry for the promoter. -The \external{pr:information} property represents a complex annotation which is a type of \external{pr:Information} and includes information about the regulatory details of the promoter using Parts Registry categories. +The example below shows how the serialization for a promoter \sbol{ComponentDefinition} can be annotated with custom data. \sbol{Annotation}s are added containing the relevant information from the iGEM Parts Registry. Each property serialization of an \sbol{Annotation} is qualified with the \external{http://www.partsregistry.org/} namespace, which is prefixed using \external{pr}. The first \sbol{Annotation} is named \external{pr:group}. It specifies the iGEM group that has designed the promoter and has a \sbol{String} value. +The second \sbol{Annotation} is named \external{pr:experience}. It contains a \sbol{URI} value that is serialized as an RDF resource and can be resolved to the information Web page on the Parts Registry for the promoter. +Finally, the third \sbol{Annotation} is named \external{pr:information}. It contains a \sbol{NestedAnnotation} object that is serialized as shown and includes information about the regulatory details of the promoter using \sbol{Annotations} that correspond to Parts Registry categories. \begin{figure} [ht] \lstsetsbol @@ -1472,11 +1490,11 @@ \subsubsection{GenericTopLevel} \label{sec:GenericTopLevel} \label{sec:rdfType} -SBOL documents can also be annotated at the top level. -SBOL's \sbol{GenericTopLevel} is a top-level entity whose only purpose is to include a set of annotations as described above. -Entities that have independent existence (i.e., would be another ``top level'' class) and are not recognized by the SBOL standard are loaded into these top level entities. -These \sbol{GenericTopLevel} entities can thus be safely used by tools to exchange non-SBOL data embedded separately within SBOL. -As with any other top level entities, \sbol{GenericTopLevel} entities may include SBOL properties such as \sbol{displayId}, \sbol{name}, \sbol{description}, etc. The type of data found in the generic entity is indicated using the \sbol{rdfType} property which is of type \sbol{QName}. Again, the \sbol{rdfType} property is used to set the prefix and localPart fields during serialization. +Custom data can also be embedded at the top level of an SBOL document. The \sbol{GenericTopLevel} class is used to represent top-level entities whose purpose is to contain a set of annotations that are independent of any other class of SBOL object. +Entities that have independent existence and are not recognized by the SBOL standard are deserialized to \sbol{GenericTopLevel} objects. +These \sbol{GenericTopLevel} objects can be safely used by tools to exchange non-SBOL data. + +As with other \sbol{TopLevel} objects, \sbol{GenericTopLevel} objects MAY include the properties \sbol{displayId}, \sbol{name}, \sbol{description}, etc. The type of data annotating a \sbol{GenericTopLevel} object is indicated using the REQUIRED \sbol{rdfType} property, which MUST contain a \sbol{QName}. As before with the \sbol{qName} property, the \sbol{rdfType} property is used to set the namespace, prefix, and local part/name during serialization. \begin{figure}[ht] \begin{center} @@ -1488,7 +1506,7 @@ \subsubsection{GenericTopLevel} \subsubsection*{Serialization} -The serialization of \sbol{GenericTopLevel} objects has the following form where the prefix, namespace, and localPart are defined by the \sbol{rdfType} property: +The serialization of the \sbol{GenericTopLevel} class has the following form, where the prefix, namespace, and local part/name are defined by the \sbol{rdfType} property: % % @@ -1511,10 +1529,7 @@ \subsubsection*{Serialization} \end{lstlisting} The example below shows how a datasheet object can be added to an SBOL document using the \sbol{GenericTopLevel} class. -The J23119 promoter example is annotated with the URI of a top Level Datasheet object, here defining the annotation properties using the custom \external{\path{http://www.myapp.org/}} namespace and the \external{myapp} prefix. -The datasheet object, with the data type of \external{myapp:Datasheet}, is accessed using the \sbol{URI} specified by the \external{myapp:characterizationData} property of the promoter \sbol{ComponentDefinition}. -The datasheet object is further annotated with the transcription rate and URI for the actual characterization data using the \external{myapp:transcriptionRate} and \external{myapp:characterizationData} properties, respectively. -Finally, this data sheet is linked from the component it describes using an annotation with a \external{myapp:datasheet} property whose value is the datasheet's URI. +The J23119 promoter \sbol{ComponentDefinition} is annotated with the \external{myapp:datasheet} property that contains the \sbol{URI} of a \sbol{TopLevel} Datasheet object. The Datasheet object is further annotated with the transcription rate and \sbol{URI} for the actual characterization data using the \external{myapp:transcriptionRate} and \external{myapp:characterizationData} properties, respectively. As specified by their \sbol{rdfType} and \sbol{qName} properties, the \sbol{TopLevel} Datasheet object and all \sbol{Annotation} objects in this example are serialized with the custom \external{\path{http://www.myapp.org/}} namespace and \external{myapp} prefix. \begin{figure}[ht] \lstsetsbol @@ -1546,22 +1561,22 @@ \subsubsection*{Serialization} \section{Mapping Between SBOL 1.1 and SBOL 2.0} \label{sec:mapping} -\ref{SBOL1TO2} depicts the mapping of SBOL 1.1 classes to SBOL 2.0 classes, indicating corresponding elements by color. -The SBOL 2.0 Model and ModuleDefinition classes have no SBOL 1.1 equivalent, and are thus not shown. +\ref{SBOL1TO2} depicts the mapping of SBOL 1.1 classes to SBOL 2.0 classes, indicating corresponding classes/properties by color. +The SBOL 2.0 \sbol{Model} and \sbol{ModuleDefinition} classes have no SBOL 1.1 equivalent, and thus are not shown. In particular: \begin{itemize} -\item SBOL 1.1 \external{Collection} objects containing \external{DnaComponent} objects map to SBOL 2.0 \sbol{Collection} objects that can contain both \sbol{ComponentDefinition} objects and other top level SBOL objects. -\item SBOL 1.1 \external{DnaComponent} maps to an SBOL 2.0 \sbol{ComponentDefinition} of type DNA. -\item SBOL 1.1 \external{DnaSequence} maps to an SBOL 2.0 \sbol{Sequence} using the IUPAC encoding for nucleotide sequences. -\item SBOL 1.1 \external{SequenceAnnotation} with a precise start and end position maps to an SBOL 2.0 \sbol{SequenceAnnotation} with a \sbol{Range} \sbol{Location} -\item SBOL 1.1 \external{SequenceAnnotation} with imprecise positions maps to an SBOL 2.0 \sbol{SequenceAnnotation} with a \sbol{GenericLocation}. -\item Each SBOL 1.1 \external{SequenceAnnotation} also maps to an SBOL 2.0 \sbol{Component}, which represents the instantiation or usage of a given \sbol{ComponentDefinition}. -\item Each SBOL 1.1 \external{precedes} relationship maps to an SBOL 2.0 \sbol{SequenceConstraint} that specifies a \external{precedes} restriction. +\item SBOL 1.1 \external{Collection} objects containing \external{DnaComponent} objects map to SBOL 2.0 \sbol{Collection} objects that contain \sbol{ComponentDefinition} objects with DNA \sbolmult{types:CD}{types} properties. +\item SBOL 1.1 \external{DnaComponent} objects maps to SBOL 2.0 \sbol{ComponentDefinition} objects with DNA \sbolmult{types:CD}{types} properties. +\item SBOL 1.1 \external{DnaSequence} objects maps to an SBOL 2.0 \sbol{Sequence} objects with \sbol{IUPAC DNA} \sbol{encoding} properties. +\item SBOL 1.1 \external{SequenceAnnotation} objects with \external{bioStart} and \external{bioEnd} properties map to SBOL 2.0 \sbol{SequenceAnnotation} objects that contain \sbol{Range} objects. +\item SBOL 1.1 \external{SequenceAnnotation} objects that lack \external{bioStart} and \external{bioEnd} properties map to an SBOL 2.0 \sbol{SequenceAnnotation} objects that contain \sbol{GenericLocation} objects. +\item Each SBOL 1.1 \external{SequenceAnnotation} also maps to an SBOL 2.0 \sbol{Component}, which represents the instantiation or usage of the appropriate \sbol{ComponentDefinition}. +\item Each SBOL 1.1 \external{precedes} property maps to an SBOL 2.0 \sbol{SequenceConstraint} that specifies a precedes \sbol{restriction} property. \end{itemize} \begin{figure*}[h] \begin{center} \includegraphics[width=\textwidth]{images/sbol_v1_to_v2} \end{center} -\caption{\label{SBOL1TO2}The mapping from the SBOL 1.1 data model to the SBOL 2.0 data model, indicating corresponding elements by color.} +\caption{\label{SBOL1TO2}The mapping from the SBOL 1.1 data model to the SBOL 2.0 data model, indicating corresponding classes/properties by color.} \end{figure*} \ No newline at end of file diff --git a/overview.tex b/overview.tex index d67e1b15..1800fb3f 100644 --- a/overview.tex +++ b/overview.tex @@ -17,7 +17,7 @@ \section{Overview of SBOL} These parts have specific component-level interactions with IPTG and X-gal, as well as native host gene products, transcriptional machinery and translational machinery that collectively cause the desired system-level behavior. Knowledge of how such a device functions within the context of a host and how it might be adapted to new experimental applications has generally been passed on through working with fellow scientists or reading articles in papers and books. -But there was no systematic way to communicate the integration of sequences with functional designs, so users typically had to look in many different places to develop an understanding of a system. +But there has been no systematic way to communicate the integration of sequences with functional designs, so users typically have had to look in many different places to develop an understanding of a system. The SBOL 2.0 standard allows designers to describe these functional characteristics and connect them to the physical parts and sequences that make up the design. SBOL 2.0 includes two main classes that match the structural/functional distinction above: @@ -30,7 +30,7 @@ \section{Overview of SBOL} The \sbol{ModuleDefinition} specifies the structural elements that make up the cassette by referencing a number of \sbol{ComponentDefinition} objects. These would include the DNA component for the promoter and the small molecule component for IPTG, for example. The \sbol{ComponentDefinition} objects can be organized hierarchically. For example, the plasmid \sbol{ComponentDefinition} may reference \sbol{ComponentDefinition}s for the promoter, coding sequence, etc. Each \sbol{ComponentDefinition} object can also include the actual \sbol{Sequence} information (if available), as well as \sbol{SequenceAnnotation} objects that identify the locations of the promoters, coding sequences, etc., on the \sbol{Sequence}. -In order to specify functional information, the \sbol{ModuleDefinition} can specify \sbol{Interaction} objects that describe any qualitative relationships among components, such as how IPTG and X-gal interact with the gene products. Finally, a \sbol{ModuleDefinition} object can point to a \sbol{Model} object that provides a reference to a complete quantitative model using a language such as SBML, CellML, Matlab, etc. Finally, all the of elements of the genetic design can be grouped together within a \sbol{Collection}. +In order to specify functional information, the \sbol{ModuleDefinition} can specify \sbol{Interaction} objects that describe any qualitative relationships among components, such as how IPTG and X-gal interact with the gene products. Finally, a \sbol{ModuleDefinition} object can point to a \sbol{Model} object that provides a reference to a complete computational model using a language such as SBML, CellML, Matlab, etc. Finally, all the of elements of the genetic design can be grouped together within a \sbol{Collection}. \begin{figure}[ht] \begin{center} @@ -53,12 +53,12 @@ \section{Overview of SBOL} \end{center} \end{figure} -\ref{images:overview2} additionally shows that when it is possible to incorporate a single object into multiple parents, we always incorporate that object by reference. We do not directly incorporate it by copy, as when an object is used many times, keeping many copies can become both very inefficient and also difficult to maintain. +\ref{images:overview2} additionally shows that when it is possible to incorporate a single object into multiple parents, we always incorporate that object by reference. We do not directly incorporate it by copy, because when an object is used many times, keeping many copies becomes spatially inefficient and difficult to maintain. Instead, each reference is handled by a pointer object. Pointers refer from a parent to a child. There are three distinct pointer classes: \sbol{Component}, \sbol{Module}, and \sbol{FunctionalComponent}. A \sbol{Component} points from a \sbol{ComponentDefinition} to a child \sbol{ComponentDefinition}, incorporating it by reference into the parent structure. A \sbol{Module} points from a \sbol{ModuleDefinition} to a child \sbol{ModuleDefinition}, likewise incorporating the child by reference into the parent system. Similarly, a parent \sbol{ModuleDefinition} on the functional side of a model may incorporate a child \sbol{ComponentDefinition} from the model's physical side by means of a \sbol{FunctionalComponent} reference. These three pointer classes allow the efficient reuse of definitions in multiple locations. % Mike Bissell - I rewrote the first half of the paragraph that used to live here per Chris Myers's request. Please review my changes. (Also, could somebody please fix the right alignment?) Rationale: the old version did not have a single theme, and it obscured what is essentially a simple pattern. This edit prompted the insertion of extra verbiage re: the three "pointer classes" above, in section 5.2. I also eliminated two out of the three transitions using "finally" or "final," because only one item can come last. -SBOL 2.0 provides a few helper classes. First, \sbol{Location} generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated, and \sbol{SequenceConstraint}, which generalizes the relative positioning information among \sbol{Component}s. +SBOL 2.0 provides a few helper classes. \sbol{Location} generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated. \sbol{SequenceConstraint} generalizes the relative positioning information among \sbol{Component}s. There are also \sbol{Participation}s, which allow \sbol{Interaction} objects to specify the roles of their participants while referencing the \sbol{FunctionalComponent}s, so that these can stand on their own. Additionally, there is the \sbol{MapsTo} class (not shown), which enables connections to be made between \sbol{Component}s and \sbol{FunctionalComponent}s across various levels of the design hierarchy. The next section provides complete definitions and details for all of these classes. % Mike Bissell - Changed "at various levels" to "across various levels." Please confirm. diff --git a/practices.tex b/practices.tex index 3611b1e5..72f9d158 100644 --- a/practices.tex +++ b/practices.tex @@ -4,69 +4,67 @@ \section{Recommended Best Practices} % ----------------------------------------------------------------------------- \subsection{Use of the Version Property} -Once an SBOL object has been published where others might have accessed it (e.g., to an online repository), it may be the case that others make copies of the object or else come to depend on the particular contents of the object. Thus, in order to avoid confusion, if a person wants to change the properties of a published object, the best practice is to do so by making a new copy that incorporates the change, with a new URI. +Once an SBOL object has been published where others might have access it (e.g., to an online repository), it may be the case that other objects come to depend on the particular contents of the published object. Thus, in order to avoid creating conflicting data, if a person wants to change the properties of a published object, they SHOULD do so by making a new copy of object that incorporates the change and has an \sbol{identity} property that contains a new \sbol{URI}. -The relationship between the old and new objects (i.e., that the new object was derived from the old object), however, is not visible unless it is explicitly declared. This is RECOMMENDED to be done using the \sbol{persistentIdentity}, and \sbol{version} properties. The preferred practice for declaring such a relationship is to use the same \sbol{persistentIdentity} for both objects, and label the newer one as being the newer version. Then, when the new object is published, it can be clear to both humans and machines that this object is intended to replace the one that was published previously. In this way also, when the user of an object always wants the latest version, they can obtain it by referencing the object with the \sbol{persistentIdentity} rather than the \sbol{identity}. +The relationship between the old and new objects (i.e., that the new object was derived from the old object), however, is not visible unless it is explicitly declared. This is RECOMMENDED to be done using the \sbol{persistentIdentity}, and \sbol{version} properties. The preferred practice for declaring such a relationship is to use the same \sbol{persistentIdentity} for both objects, but give the newer object a later \sbol{version}. Then, when the new object is published, it can be clear to both humans and machines that this object is intended to update the previously published object. In this way, when a user wants the latest version of an object, they can obtain it by referencing the object via its \sbol{persistentIdentity} and rely on a tool to find the object with that \sbol{persistentIdentity} and the latest \sbol{version}. As stated in \ref{sec:version}, it is RECOMMENDED that version numbering should follow the conventions of semantic versions (\url{http://semver.org/}), particularly as implemented by Maven (\url{http://maven.apache.org/}). This convention represents versions as sequences of numbers and qualifiers separated by the characters {\tt .} and {\tt -} and compared in lexicographical order (for example, 1 < 1.3.1 < 2.0-beta). For a full explanation, see the linked resources. \subsection{Compliant SBOL Objects} \label{sec:compliant} -Maintaining unique identity URIs for all SBOL objects is a very challenging implementation task. To reduce the developer's burden, users of SBOL 2.0 are encouraged to follow a few simple rules when constructing the identity and related fields for SBOL objects. When these rules are followed, we say that the SBOL object is \emph{compliant}. The rules are as follows: +Maintaining unique \sbol{identity} \sbol{URI}s for all SBOL objects can be a very challenging implementation task. To reduce this burden, users of SBOL 2.0 are encouraged to follow a few simple rules when constructing the \sbol{identity} properties and related properties for SBOL objects. When these rules are followed in constructing an SBOL object, we say that this object is \emph{compliant}. These rules are as follows: \begin{enumerate} -\item The \sbol{identity} of an SBOL object should begin with a \emph{URI prefix} that maps to a domain over which the user has control. Namely, the user can guarantee uniqueness of identities within this domain. -\item In a compliant SBOL object, the \sbol{persistentIdentity} and \sbol{displayId} properties are required. -\item The \sbol{persistentIdentity} of a compliant top level object must end with a delimiter ('/', '\#', or ':') followed by the \sbol{displayId} of the object. -\item The \sbol{persistentIdentity} of a compliant child object must begin with the \sbol{persistentIdentity} of its parent object and be immediately followed by a delimiter ('/', '\#', or ':') followed by the \sbol{displayId} of the object. -\item When a SBOL object is not given a \sbol{version}, the \sbol{identity} and \sbol{persistentIdentity} must be equal. -\item When a SBOL object is given a \sbol{version}, the \sbol{identity} must be equal to the "\refObj{persistentIdentity}/\refObj{version}". -\item The \sbol{version} of a compliant child object must be equal to the \sbol{version} of its parent object. -\item The \sbol{identity}, \sbol{persistentIdentity}, \sbol{displayId}, and \sbol{version} of a compliant object once set can never be changed. +\item The \sbol{identity} of a compliant SBOL object MUST begin with a \emph{URI prefix} that maps to a domain over which the user has control. Namely, the user can guarantee uniqueness of identities within this domain. +\item The \sbol{persistentIdentity} and \sbol{displayId} properties are REQUIRED of a compliant SBOL object. +\item The \sbol{persistentIdentity} of a compliant \sbol{TopLevel} object MUST end with a delimiter ('/', '\#', or ':') followed by the \sbol{displayId} of the object. +\item The \sbol{persistentIdentity} of a compliant SBOL object that is not also a \sbol{TopLevel} object MUST begin with the \sbol{persistentIdentity} of its parent object and be immediately followed by a delimiter ('/', '\#', or ':') and the \sbol{displayId} of the compliant object. +\item If a compliant SBOL object is not given a \sbol{version}, then its \sbol{identity} and \sbol{persistentIdentity} properties MUST contain the same \sbol{URI}. +\item If a compliant SBOL object has a \sbol{version}, then its \sbol{identity} property MUST contain a \sbol{URI} of the form "\refObj{persistentIdentity}/\refObj{version}". +\item The \sbol{version} of a compliant SBOL object that is not also a \sbol{TopLevel} object MUST contain the same \sbol{String} as the \sbol{version} property of the compliant object's parent object. +\item The \sbol{identity}, \sbol{persistentIdentity}, \sbol{displayId}, and \sbol{version} properties of a compliant SBOL object MUST NOT be changed once set. \end{enumerate} -For examples, see any example in this specification, as all have been -formulated using compliant URIs. +All examples in this specification use compliant \sbol{URI}s. \subsection{Annotations: Embedded Objects vs. External References} -When annotating an SBOL model with additional information, there are +When annotating an SBOL document with additional information, there are two general methods that can be used: \begin{itemize} -\item Embed the information in the SBOL model, either as non-SBOL - properties or wrapped in \sbol{GenericTopLevel} objects. -\item Store the information separately and annotate the SBOL model - with URIs that point to it. +\item Embed the information in the SBOL document, either as non-SBOL + properties or \sbol{GenericTopLevel} objects. +\item Store the information separately and annotate the SBOL document + with \sbol{URI}s that point to it. \end{itemize} In theory, either method can be used in any case. (Note that a third case not -discussed here is to use SBOL to annotate external objects by linking -to SBOL documents rather than from the external objects.) +discussed here is to use SBOL to annotate external objects with linking +to SBOL documents, rather than annotate SBOL documents with links external objects.) In practice, -embedding massive amounts of non-SBOL data into SBOL models is likely +embedding massive amounts of non-SBOL data into SBOL documents is likely to cause problems for people and software tools trying to manage and -exchange such models. Therefore, it is RECOMMENDED that small amounts of information (e.g., design notes, preferred graphical layout) be embedded in the SBOL model, while large amounts of information (e.g., the contents of the scientific publication from which a model was derived, flow cytometry data characterizing performance) be linked with URIs pointing to external resources. The boundary between ``small'' and ``large'' is left deliberately vague, recognizing that it will likely depend on the particulars of a given SBOL application. +exchange such documents. Therefore, it is RECOMMENDED that small amounts of information (e.g., design notes or preferred graphical layout) be embedded in the SBOL model, while large amounts of information (e.g., the contents of the scientific publication from which a model was derived or flow cytometry data that characterizes performance) be linked with URIs pointing to external resources. The boundary between ``small'' and ``large'' is left deliberately vague, recognizing that it will likely depend on the particulars of a given SBOL application. \subsection{Completeness and Validation} RDF documents containing serialized SBOL objects may or may not be -entirely self-contained. A SBOL document is self-contained or ``complete'' if every SBOL object referred to in the document is contained in the document. It is RECOMMENDED that serializations be complete whenever practical. In order words, when serializing an SBOL object, serialize all of the other objects that it points to, then serialize all of the additional objects that they point to, etc., until the document is complete. +entirely self-contained. A SBOL document is self-contained or ``complete'' if every SBOL object referred to in the document is contained in the document. It is RECOMMENDED that serializations be complete whenever practical. In order words, when serializing an SBOL object, serialize all of the other objects that it points to, then serialize all of the other objects that these objects point to, etc., until the document is complete. It is important to note that there is no guarantee that an RDF document -contains valid SBOL. When an RDF document is de-serialized into SBOL +contains valid SBOL. When an RDF document is deserialized to SBOL objects, the program doing so SHOULD verify that all of the property -values encoded therein have the right type (e.g., that the object +values encoded therein have the right data type (e.g., that the object pointed to by the \sbol{sequences} property of a -\sbol{ComponentDefinition} really is a \sbol{Sequence} object). -For complete files, this can be carried out readily and entirely -locally. For files that are not complete, an implementation needs to -either have a means of validating those external references (e.g., by -retrieving them from various repositories) or else to mark them as -being unverified and not depend on their correctness. +\sbol{ComponentDefinition} is really a \sbol{Sequence}). +For complete files, this validation can be carried out entirely locally. For files that are not complete, an implementation either needs to +have a means of validating those external references (e.g., by +retrieving them from various repositories), or it needs to mark them as +unverified and not depend on their correctness. \subsection{Recommended Ontologies for External Terms} -External ontologies and controlled vocabularies are an integral part of SBOL. SBOL utilizes these resources to access existing biological information where possible. New SBOL specific terms are defined only when necessary. Instead, SBOL provides placeholders that can point to external terms. For example, types of components, such as DNA or protein, are indicated using BioPAX. Similarly, the role of a DNA component is indicated via the SO terms. Although preferred ontologies have been indicated in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found in \ref{tbl:preferred_external_resources}. +External ontologies and controlled vocabularies are an integral part of SBOL. SBOL uses \sbol{URI}s to access existing biological information through these resources. New SBOL specific terms are defined only when necessary. For example, \sbol{ComponentDefinition} \sbolmult{types:CD}{types}, such as DNA or protein, are described using BioPAX terms. Similarly, the roles of a DNA \sbol{ComponentDefinition} are described via SO terms. Although RECOMMENDED ontologies have been indicated in relevant sections where possible, other resources providing similar terms can also be used. A summary of these external sources can be found in \ref{tbl:preferred_external_resources}. \begin{table}[ht] \begin{edtable}{tabular}{p{3cm}p{1.5cm}p{4.5cm}p{6cm}} diff --git a/purpose.tex b/purpose.tex index 231ee722..f6cf9ac5 100644 --- a/purpose.tex +++ b/purpose.tex @@ -6,77 +6,67 @@ \section{Purpose} % The Synthetic Biology Open Language is intended to help synthetic biologists collaborate by allowing them to exchange designs in a standardized data format. In addition, the SBOL data model systematically describes the essential details of a design that are required for researchers to reproduce each other's designs in the laboratory. The purpose of the Synthetic Biology Open Language is to aid collaboration between researchers, improve scientific reproducibility, and to speed the research and development of technologies based on synthetic biology. Synthetic biology builds upon the techniques and successes of genetics, molecular biology, and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. A common factor of these challenges is the exchange of information about designed systems between laboratories. -When designing a synthetic system, synthetic biologists need to exchange information about multiple types of molecules and their expected behavior in the design. -Moreover, there is often one or more steps of separation between a specified nucleic acid sequence (e.g., the sequence that encodes an enzyme or transcription factor) and the interactions that are being reasoned about in order to determine that sequence (e.g., chemical modification of metabolites or regulation of gene expression), yet these different perspectives are often intimately tied together in the engineering of biological systems. +When designing a synthetic system, synthetic biologists need to exchange information about multiple types of molecules and their expected behavior in the design. +Furthermore, there are often multiple degrees of separation between a specified nucleic acid sequence (e.g., a sequence that encodes an enzyme or transcription factor) and the molecular interactions that a designer intends to result from said sequence (e.g., chemical modification of metabolites or regulation of gene expression), yet these different perspectives must be connected together in the engineering of biological systems. -The \emph{Synthetic Biology Open Language} has been designed as a standard to support the specification and exchange of such information in synthetic biology, filling a need not satisfied by other pre-existing standards. -Previous nucleic acid sequence description formats lack key capabilities: simple sequence encoding formats such as FASTA encode almost nothing about design rationale, while more sophisticated formats such as GenBank and Swiss-Prot support a flat annotation of sequence features that is well suited for description of natural systems but unable to represent either the multi-layered design structure common to engineered systems or the functional roles or consequences of these sequences. +The \emph{Synthetic Biology Open Language} (SBOL) has been developed as a standard to support the specification and exchange of biological design information in synthetic biology, filling a need not satisfied by other pre-existing standards. +Previous nucleic acid sequence description formats lack key capabilities. For example, simple sequence encoding formats such as FASTA encode almost nothing about design rationale. More sophisticated formats such as GenBank and Swiss-Prot support a flat annotation of sequence features that is well suited to the description of natural systems, but is unable to represent the multi-layered design structure common to engineered systems. \ref{f:sequence} shows the relationship of selected prior sequence description formats to SBOL 1.1 and SBOL 2.0. -Modelling languages, such as the Systems Biology Markup Language (SBML) ~\cite{SBML} can be used represent biological processes, but is not sufficient to represent the associated nucleotide or amino acid sequences. %Goksel: Commented this sentence: Kinetic information may be present in SBML~\cite{SBML} or mass conservation laws in other systems such as the COBRA Toolbox~\cite{COBRA}. -Synthetic biology needs a structured standard with defined ways on how to represent relevant molecules and their functional roles within the designed system, standardized rules on how such information is encoded in the file and the means to enable exchange of such data between participating laboratories as part of publications. +Modelling languages, such as the Systems Biology Markup Language (SBML) ~\cite{SBML} can be used represent biological processes, but are not sufficient to represent the associated nucleotide or amino acid sequences. %Goksel: Commented this sentence: Kinetic information may be present in SBML~\cite{SBML} or mass conservation laws in other systems such as the COBRA Toolbox~\cite{COBRA}. +Synthetic biology needs a structured standard that defines how to represent relevant molecules and their functional roles within a designed system, standardized rules on how such information is encoded in a file format, and software libraries to enable the exchange of such data between participating laboratories and as part of the publication process. %Goksel: Updated the sentence as above:Systems Biology Markup Language (SBML) represents reactions, pathways, and models, but does not typically represent the associated sequences. -To help address these challenges, the SBOL introduces a standardized format for the electronic exchange of information describing the structural and functional aspects of biological designs. -The standard is designed to support the development of explicit and unambiguous data models of biological designs through the use of a well defined data model on how to represent the biological molecules, and their structural and functional roles in a systematic fashion. -The standard further describes rules and best practices on how to include, develop, and populate this format with relevant information of essential design details. -SBOL uses existing Semantic Web resources such as biological ontologies and \emph{Universal Resource Identifiers} (URIs) to unambiguously define genetic design elements. +To help address these challenges, SBOL introduces a standardized format for the electronic exchange of information on the structural and functional aspects of biological designs. +The standard has been designed to support the explicit and unambiguous description of biological designs by means of a well defined data model. +The standard further describes the rules and best practices on how to use this data model and populate it with relevant design details. +SBOL uses existing Semantic Web practices and resources, such as \emph{Uniform Resource Identifiers} (\sbol{URI}s) and ontologies, to unambiguously identify and define genetic design elements. %Anil: I think we need to say just a bit more here about how we support extensions to the core data model using annotations. I think the sentences removed below were hinting at that. %Goksel: Replaced thi sentence with the one above:Because the standard itself can represent information from other sources for sequence representations, reaction information and ontologies to represent biological design information, the standard uses modern information exchange techniques such as \emph{Universal Resource Identifiers} (URIs). This permits the reuse of existing information without the need to repeat it, thus avoiding both redundancy and likely future information decay within shared files. %Goksel: Removed this sentence: The ultimate utility of URIs in the SBOL standard is the ability to support flexible annotation with appropriate metadata while associating an authority with that annotation. The definition of the data model and associated format, the rules on the addition of data within the format and the representation of this in electronic data files are intended to make the SBOL standard a useful means of promoting global data exchange between laboratories and between software programs. -This document presents the second version of SBOL. -The previous version 1.1 of the SBOL standard focused on representing the structural aspects of genetic designs. -Users of the standard were able to use it to exchange information on DNA designs but could not represent molecules other than DNA or represent the functional aspects of their designs beyond the DNA sequences. -To serve as an effective medium for the computational exchange of genetic designs, SBOL must be extended to capture more aspects of a designed system, including both structural and functional information, and the composition of complex structural and functional designs by combining simpler parts. -The SBOL 2.0 data model defined in this specification thus extends the prior model to provide for addressing the most pressing needs for expanding SBOL version 1.1, in particular it can: +This document details version 2.0 of SBOL. +The previous version 1.1 of the SBOL standard focused on representing the structural aspects of genetic designs. Users of the standard were able to exchange information on DNA designs, but they could not represent molecules other than DNA or the functional aspects of designs beyond DNA sequence features. The SBOL 2.0 data model defined in this specification extends the version 1.1 data model to provide for the most pressing data exchange needs identified by the SBOL community. In particular, the extended data model can: \begin{itemize} -\item represent structural components of a biological design, including DNA, RNA, proteins, small molecules and other physical components +\item Represent non-DNA structural components of a biological design, including RNA, proteins, small molecules and other physical components. -\item describe behavioral aspects of a biological design, the intended or expected interactions and dynamic behavior +\item Describe the behavioral aspects of a biological design, such as the intended or expected molecular interactions, and link to mathematical models written in other standards -\item associate structure and function together, so that a single design can be understood both in terms of its structure and its behavior +\item Associate structure and function so that a single design can be understood in terms of its structure, behavior, or both. -\item support rich annotations of all components, so that data required to describe a design, but not formalized in this specification can be safely exchanged +\item Support rich annotation of biological designs, so that classes of design data that are not explicitly covered by this specification can be safely exchanged \end{itemize} -Taken together, these capabilities allow SBOL sufficient expressiveness to support the description and exchange of hierarchical, modular representations of both the intended structure and function of designed biological systems. +Taken together, these extensions enable SBOL to support the description and exchange of hierarchical, modular representations of both the intended structure and function of designed biological systems. \begin{figure} \centering \includegraphics[width=5in]{images/format-comparison.pdf} -\caption{SBOL 2.0 extends prior sequence description formats to represent both structure and function of a genetic design in a single model.} +\caption{SBOL 2.0 extends prior sequence description formats to represent both the structure and function of a genetic design in a modular, hierarchical manner.} \label{f:sequence} \end{figure} -To address the need for functional descriptions in SBOL, the proposed data model adds new classes to provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the SBML to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module definition gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. - -The SBOL 2.0 specification also adds a number of measures to simplify adoption and validation of compatibility with the standard. -First, the specification explicitly incorporates its serialization format into the specification, whereas SBOL 1.1 used an implicit standard tied to a reference implementation. -Second, the specification includes a set of validation rules for determining compatibility of a document with SBOL 2.0, most of which are machine-verifiable. -Finally, the specification includes a set of recommended best-practices likely to allow a tool to take best advantage of the standard and other compatible tools. - -Care has been taken to ensure that SBOL 2.0 is backward-compatible with SBOL 1.x. -The generalization of the data model does mean that many names have changed and thus an SBOL 1.x file is not a valid SBOL 2.0 file. -There is, however, a direct mapping from the SBOL 1.x data model into the SBOL 2.0 data model, making it simple to automatically ``upgrade'' any SBOL 1.x file into and SBOL 2.0 file. -% Goksel - Removed this sentence:Therefore, SBOL 2.0 supersedes SBOL 1.1, and developers are encouraged to use it for all new software efforts. -Since SBOL 2.0 can encode all data previously encoded in SBOL 1.1, developers are also encouraged to upgrade their SBOL 1.1 compliant software tools to use SBOL 2.0 data objects. - -As discussed previously, SBOL 2.0 allows designs to be described beyond the simple annotated DNA sequence offered in SBOL 1.1. Of equal importance in SBOL 2.0 is the explicit provision of mechanisms that allows SBOL to be easily extended (see \ref{sec:Annotations}). The intent of SBOL is to allow designs of synthetic biological systems to be fully described so that such designs can be reproduced. However SBOL does not currently offer a full catalog of data %Note I'm using data not metadata to avoid technical terms at this state -to allow one to achieve complete reproducibility. For example the proposed standard does not yet include environmental and host context information or details on how the performance of the design is measured. Such details can now be included in SBOL through an explicit extension mechanism. Three scenarios are envisaged for extending SBOL: +While the ultimate goal of SBOL is to describe synthetic biological designs such that they can be reproduced in the lab with a high degree of fidelity, SBOL 2.0 does not yet provide a complete catalog of the different classes of data that are necessary to achieve this goal. For example, SBOL 2.0 does not yet include data on environmental and host context, or details on how the performance of a design is measured. To enable progress towards capturing these types of data, SBOL 2.0 provides an annotation mechanism that allows SBOL to be easily extended (see \ref{sec:Annotations}). Three scenarios are envisaged for extending SBOL: \begin{itemize} -\item Use of the extension mechanism to include critical information related to the reproducibility of designs. For example, what growth media was used, what temperature were the organisms grown at, when were they harvested, was the DNA integrated into the host genome (if so here), or in a plasmid (what plasmid). -\item For tool makers, the extension mechanism allows tool specific information to be added to SBOL. Such information could include tool settings specific to the design that is being loaded, for example what windows should be opened or settings initialized. Tool makers could also include encrypted proprietary information related to the company or client in an extension. -\item Non-essential information to reproducibility but nevertheless useful information for many users. There are many cases where a community of users require specific information not available in core of SBOL. Examples include visualization information, how the DNA was assembled, information on evolutionary stability, or specialist modeling information. +\item Critical data related to the reproducibility of designs. These include what growth media was used, what temperature the organisms were grown at, or where the recombinant DNA was integrated into the host genome or a plasmid. +\item Tool specific data. These could include tool settings specific to the design that is being loaded, such as which windows should be opened or which settings should be initialized. Tool makers could also include encrypted proprietary information related to a company or client in an extension. +\item Data that are non-essential for reproducibility but are nevertheless useful to many users. There are many cases where specific communities of users require data that cannot be explicitly represented using the SBOL data model. These include data on visualization, evolutionary stability, or other . \end{itemize} -The extension mechanism is therefore a critical part of SBOL 2.0 and will allow others in the community to incoroporate either their own requirements for data into SBOL or contribute to community efforts to expand the scope of SBOL. +The extension mechanism is therefore a critical part of SBOL 2.0 and will allow others in the community to incorporate their own custom data into SBOL files and contribute to community efforts to expand the scope of SBOL. +% To address the need for functional descriptions in SBOL, the proposed data model adds new classes to provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the SBML to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module definition gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. + +The SBOL 2.0 specification also adds a number of measures to simplify adoption and validation of compatibility with the standard. +First, unlike the SBOL 1.1 specification, the SBOL 2.0 specification explicitly incorporates the primary serialization format for its data model to better show how the standard can be used. Second, the specification includes a set of validation rules for determining the compatibility of a document with SBOL 2.0, most of which are machine-verifiable. Finally, the specification includes a set of recommended best practices that should allow software tools to take best advantage of the standard and effectively exchange data. + +In addition, care has been taken to ensure that SBOL 2.0 is backwards-compatible with previous versions. While the changes made in SBOL 2.0 do mean that a SBOL 1.x file is not a valid SBOL 2.0 file, there does exist a direct mapping from the SBOL 1.x data model to the SBOL 2.0 data model, making it possible to automatically convert any SBOL 1.x file to an SBOL 2.0 file. +% Goksel - Removed this sentence:Therefore, SBOL 2.0 supersedes SBOL 1.1, and developers are encouraged to use it for all new software efforts. +Since SBOL 2.0 can encode all data previously encoded in SBOL 1.1, developers are encouraged to upgrade their SBOL 1.1 compliant software tools to use SBOL 2.0 software libraries. -The SBOL standard has been developed in collaboration between both ``wet'' bench scientists and ``dry'' scientific modelers and tool designers active within the synthetic biology community. -As with the earlier SBOL 1.1 standard, this community (open for any practitioner to join) has met to discuss, argue and agree upon needs that the SBOL standard should address. -This information has then been used by developers within our community to design, develop, and test a specification of the standard. The specification has been tested by the community through several iterations for the ability to represent a wide range of synthetic biology design projects, as well as, the ability to share designs between different laboratories. -The standard has also been used to develop software tools that employ the standard for developing and sharing synthetic design projects. -The publication of this specification is intended to make these capabilities more widely accessible to the community of potential developers and users. \ No newline at end of file +Lastly, the SBOL standard has been developed in collaboration between both ``wet'' bench scientists and ``dry'' scientific modelers and software developers that are active within the synthetic biology community. As before with SBOL version 1.1, this open community has met to discuss and agree upon the data exchange needs that version 2.0 of the SBOL standard should address. +These discussions have informed the efforts of developers within the community to produce a SBOL 2.0 specification after several rounds of proposal and revision. This specification has been evaluated by the community for its ability to represent a wide range of synthetic biology designs and share these designs between different laboratories. +This specification has also informed the development of software libraries that implement the standard, and software tools that employ the standard by means of these libraries, thereby providing further testing of SBOL 2.0. +The publication of this specification is intended to make these capabilities more widely accessible to potential developers and users in the synthetic biology community and beyond. \ No newline at end of file diff --git a/serialization.tex b/serialization.tex index 38aab412..f53f2602 100644 --- a/serialization.tex +++ b/serialization.tex @@ -3,7 +3,7 @@ \section{SBOL RDF Serialization} \label{sec:serialization} % ----------------------------------------------------------------------------- -In order for SBOL objects to be readily stored and exchanged, it is important that they be able to be {\em serialized}, i.e., converted to a sequence of bytes that can be stored in a file or exchanged over a network. The serialization format for SBOL is designed to meet several competing requirements. +In order for SBOL objects to be readily stored and exchanged, it is important that they are able to be {\em serialized}, i.e., converted to a sequence of bytes that can be stored in a file or exchanged over a network. The serialization format for SBOL is designed to meet several competing requirements. First, SBOL needs to support ad-hoc annotations and extensions. Second, SBOL needs to support processing by general database and semantic web software tools that have little or no knowledge of the SBOL data model. Finally, it should be relatively simple to write a new software implementation, so that SBOL can be readily used even in software environments where community-maintained implementations are not available. @@ -14,10 +14,10 @@ \section{SBOL RDF Serialization} Arbitrary RDF/XML, however, provides a sometimes problematically large amount of flexibility in how equivalent data can be serialized. This flexibility can result in different serializations when processing RDF/XML files using standard off-the-shelf XML tools, such as DOM-OO mappings. To address this issue, we define a canonical association between the nesting of data structures within the SBOL UML data model and the RDF/XML file. For all ownership associations (filled diamonds), the RDF/XML for the owned entity is embedded within the owner's RDF/XML (note, however, that the property values may be listed in any order). -For all associations that are by reference (open diamonds), the RDF/XML for the referenced property is linked via a resource URI. -For example, the serialization of a \sbol{ComponentDefinition} embeds the serializations of the \sbol{SequenceConstraint} and \sbol{Component} objects associated with it. Those \sbol{SequenceConstraint} objects, however, link to the \sbol{Component} objects with a URI rather than embedding another copy. +For all associations that are by reference (open diamonds), the RDF/XML for the referenced property is linked via a resource \sbol{URI}. +For example, the serialization of a \sbol{ComponentDefinition} embeds the serializations of the \sbol{SequenceConstraint} and \sbol{Component} objects associated with it. Those \sbol{SequenceConstraint} objects, however, link to the \sbol{Component} objects with a \sbol{URI} rather than embedding another copy. -Every SBOL document must be a valid RDF/XML document. Accordingly, each SBOL document starts with an XML declaration that has its XML version set to ``1.0.'' As shown in the example below, this declaration is then followed by an \external{rdf:RDF} XML element that includes the namespace declarations for RDF, Dublin Core, PROV, and SBOL. The SBOL namespace, which is \url{http://sbols.org/v2#}, is used to indicate which entities and properties in the SBOL document are defined by SBOL, and SHOULD NOT be used for any entities or properties not defined in this specification. +Every SBOL document must be a valid RDF/XML document. Accordingly, each SBOL document starts with an XML declaration that has its XML version set to ``1.0.'' As shown in the example below, this declaration is then followed by an \external{rdf:RDF} XML element that includes the namespace declarations for RDF, Dublin Core, PROV, and SBOL. The SBOL namespace, which is \url{http://sbols.org/v2#}, is used to indicate which entities and properties in the SBOL document are defined by SBOL, and MUST NOT be used for any entities or properties not defined in this specification. \label{xml-namespace} \lstsetsbol @@ -28,20 +28,20 @@ \section{SBOL RDF Serialization} \end{lstlisting} -All first-class SBOL data types (i.e., those enumerated in \ref{sec:model}) have an associated identifying URI. In the RDF, this is the resource URI used by instances of that type. For example, \sbol{ComponentDefinition} has the -type URI \external{sbol:ComponentDefinition}. +All first-class SBOL data types (i.e., those enumerated in \ref{sec:model}) have an associated identifying \sbol{URI}. In the RDF, this is the resource \sbol{URI} used by instances of that type. For example, \sbol{ComponentDefinition} has the +type \sbol{URI} \external{sbol:ComponentDefinition}. Properties and associations are then asserted as nested RDF/XML assertions. \ref{sec:model} provides the serialization template and an example at the end of its description of each data type. -All of the data types that are \sbol{TopLevel} are so named because they always appear at the top-most level of the RDF/XML serialization. All other datatypes will always appear nested within their parent container and, ultimately, some \sbol{TopLevel} object. -For example, a \sbol{ComponentDefinition} is a \sbol{TopLevel} and therefore listed at the top-most level of the RDF/XML serialiation, and contains its \sbol{SequenceConstraint} objects, since they are not \sbol{TopLevel}. Its \sbol{Sequence}, however, is also \sbol{TopLevel} and is therefore not nested within and instead linked via a URI. +All of the data types that are \sbol{TopLevel} are so named because they always appear at the top-most level of the RDF/XML serialization. All other data types will always appear nested within their parent container and, ultimately, some \sbol{TopLevel} object. +For example, a \sbol{ComponentDefinition} is a \sbol{TopLevel} and therefore listed at the top-most level of the RDF/XML serialization, and contains its \sbol{SequenceConstraint} objects, since they are not \sbol{TopLevel}. Its \sbol{Sequence}, however, is also \sbol{TopLevel} and is therefore not nested within and instead linked via a \sbol{URI}. Each instance of a first-class SBOL datatype may also have annotations attached, as described in \ref{sec:Annotations}. These annotations are composed of a name and a value. They are serialized to RDF as a conceptual triple with the subject being the identity of the instance they annotate, the predicate being the name of the annotation, and the object being the value of that annotation. Annotation values are always nested within the RDF/XML serialization of the instance that they annotate. For example, a \sbol{ModuleDefinition} might add a DOI annotation that links to the scientific article that first described the system that it represents. -SBOL also supports top-level, user-defined annotations, again as described in \ref{sec:Annotations}. This is to allow non-standardized but necessary information to be carried around as part of a design. For example, a particular sub-community may have an internal standard for genetic device characterization data sheets. +SBOL also supports top-level, user-defined data, again as described in \ref{sec:Annotations}. This is to allow non-standardized but necessary information to be carried around as part of a design. For example, a particular sub-community may have an internal standard for genetic device characterization data sheets. Such data can be represented as a \sbol{GenericTopLevel} object with internal structured annotations. -For example, each individual data sheets might be contained in its own \sbol{GenericTopLevel} instance. -This annotation will be serialized into the RDF/XML in the usual way, as an RDF/XML block at the top level of the file. +For example, each individual data sheet might be contained in its own \sbol{GenericTopLevel} instance. +This custom data is serialized into the RDF/XML in the usual way, as an RDF/XML block at the top level of the file. Other objects may refer to this entity through their annotations by reference, and this generic top-level entity may refer to other entities via references. For example, a \sbol{ModuleDefinition} might use an annotation to refer to the data sheet \sbol{GenericTopLevel} that documents its properties. diff --git a/vocabulary.tex b/vocabulary.tex index c5e4b235..56548cbb 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -28,15 +28,14 @@ \subsection{SBOL Class Names} \begin{itemize} \item \emph{\sbol{Component}}: -Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ComponentDefinition}. Represents a specific occurrence or instance of an entity within the design of a more complex entity. Because the same definition may appear at multiple locations in a design, a single \sbol{ComponentDefinition} may have multiple different links to the same child \sbol{ComponentDefinition}, and each such parent-child link requires its own, distinct \sbol{Component}. +Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ComponentDefinition}. Represents a specific occurrence or instance of an entity within the design of a more complex entity. Because the same definition may appear in multiple designs or multiple times in a single design, a single \sbol{ComponentDefinition} may have zero or more parent \sbol{ComponentDefinition}s, and each such parent-child link requires its own, distinct \sbol{Component}. % Mike Bissell - Clarified the role of this class to match changes below in section six. Introduced the term "pointer class" after consulting briefly with Chris M. The emphasis on pointer classes is on the definitions they point to. WAS: "Represents a specific occurrence or instance of a single entity within the design of a more complex component. Each Component is associated with a ComponentDefinition, and there may be many different instances at different locations in a design that share the same definition." I felt this was necessary because it is too easy for a novice to get confused about Component vs. ComponentDefinition here, where they first encounter Component, even before ComponentDefinition is defined. \item \emph{\sbol{Location}}: Specifies the base coordinates and orientation of a genetic feature on a DNA or RNA molecule or a residue or site on another sequential macromolecule such as a protein. \item \emph{\sbol{SequenceAnnotation}}: -Describes the \sbol{Location} of a notable sub-sequence found within a \newline -\sbol{ComponentDefinition}'s \sbol{Sequence}. Optionally contains a child \sbol{Component} link. +Describes the \sbol{Location} of a notable sub-sequence found within the \sbol{Sequence} of a \sbol{ComponentDefinition}. Optionally links to and effectively positions a child \sbol{Component}. % Mike Bissell - Reworded for clarity of the relationship between ComponentDefinition and Sequence. Broke the original paragraph into two sentences for simplicity. Reworded second sentence to emphasize that a Component is a) a child entity, and b) a link (pointer). Old wording was vague on Component's job within SequenceAnnotation, and old wording made it sound as if the Component was the payload itself, rather than just a reference. WAS: "Describes the Location of a notable sub-sequence found within the Sequence linked to a ComponentDefinition, with an optional link to a Component." \item \emph{\sbol{SequenceConstraint}}: @@ -47,7 +46,7 @@ \subsection{SBOL Class Names} Represents a data container that can contain custom data added by user applications. \item \emph{\sbol{Model}}: -Links an SBOL representation of biological components and their interactions to quantitative or qualitative computational models that may be used to predict the functional behavior of a biological design. +Links to quantitative or qualitative computational models that may be used to predict the functional behavior of a biological design. %Goksel - Updated as above: Links an SBOL representation of biological components and their interactions to quantitative, computational models that may be used to predict the functional behavior of a biological design. \item \emph{\sbol{ModuleDefinition}}: @@ -55,27 +54,27 @@ \subsection{SBOL Class Names} \begin{itemize} \item \emph{\sbol{FunctionalComponent}}: -Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of an entity within the design of a system. Because the same definition may appear at multiple locations in a design, a single \sbol{ModuleDefinition} may have multiple different links to the same child \sbol{ComponentDefinition}, and each such parent-child link requires its own, distinct \sbol{FunctionalComponent}. +Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of an entity within the design of a system. Because the same definition may appear in multiple designs or multiple times in a single design, a single \sbol{ComponentDefinition} may have zero or more parent \sbol{ModuleDefinition}s, and each such parent-child link requires its own, distinct \sbol{FunctionalComponent}. % Mike Bissell - As above, reworded to clarify the structure of these relationships, with special attention to the pointer-like nature of this type. WAS: "Represents a specific occurrence or instance of an ComponentDefinition within a ModuleDefinition. Exactly like a Component, except that it can be associated with information about its context of use in the Module, rather than in the context of a containing ComponentDefinition." I eliminated the bit about it being "exactly like... except," because with those exceptions, the likeness is *inexact*. Instead, I deliberately reworked the paragraph's phrasing and contents to emphasize this class's similarity to the other two pointer classes. I felt this was necessary because it is easy for a novice to get confused about FunctionalComponent vs. Component vs. ComponentDefinition in this context. \item \emph{\sbol{Interaction}}: Describes a functional relationship between biological entities, such as regulatory activation or repression, or a biological process such as transcription or translation. \item \emph{\sbol{MapsTo}}: -When a design (\sbol{ComponentDefinition} or \sbol{ModuleDefinition}) includes another design as a substructure, the larger design may need to refer to a \sbol{ComponentInstance} from the sub-design. -In this case, a referencing \sbol{ComponentInstance} needs to be created in the design and a \sbol{MapsTo} is added to the instance for the sub-design, which associates the original and the referencing instance. +When a design (\sbol{ComponentDefinition} or \sbol{ModuleDefinition}) includes another design as a sub-design, the parent design may need to refer to a \sbol{ComponentInstance} (either a \sbol{Component} or \sbol{FunctionalComponent}) in the sub-design. +In this case, a \sbol{MapsTo} needs to be added to the instance for the sub-design, and this \sbol{MapsTo} must link between the \sbol{ComponentInstance} in the sub-design and a \sbol{ComponentInstance} in the parent design. \item \emph{\sbol{Module}}: -Pointer class. Incorporates a child \sbol{ModuleDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of a subsystem within the design of a larger system. Because the same definition may appear at multiple locations in a design, a single \sbol{ModuleDefinition} may have multiple different links to the same child \sbol{ModuleDefinition}, and each such parent-child link requires its own, distinct \sbol{Module}. +Pointer class. Incorporates a child \sbol{ModuleDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of a subsystem within the design of a larger system. Because the same definition in multiple designs or multiple times in a single design, a single \sbol{ModuleDefinition} may have zero or more parent \sbol{ModuleDefinition}s, and each such parent-child link requires its own, distinct \sbol{Module}. % Mike Bissell - Reworked this paragraph like I did for Component and FunctionalComponent (see above). WAS: "Represents a specific occurrence or instance of a sub-system within a larger design. Each Module is associated with a ModuleDefinition, and there may be many different instances at different locations in a design that share the same definition." I felt this was necessary because it is way too easy for a novice to get confused about Module vs. ModuleDefinition in this (introductory) context. \item \emph{\sbol{Participation}}: -Describes the role that a \sbol{Component} plays in an \sbol{Interaction}. +Describes the role that a \sbol{FunctionalComponent} plays in an \sbol{Interaction}. For example, a transcription factor might participate in an \sbol{Interaction} as a repressor or as an activator. \end{itemize} \item \emph{\sbol{Sequence}}: -Represents a contiguous series of monomers in a macromoleculer polymer such as DNA, RNA, or protein. +Generally represents a contiguous series of monomers in a macromolecular polymer such as DNA, RNA, or protein. A \sbol{Sequence} can also encode the atoms and bonds of a molecule with non-linear structure (see \ref{sec:Sequence}). \end{description} \ No newline at end of file From 4acaca423713caff3cec25685095df77534e1201 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Fri, 31 Jul 2015 22:26:25 +0000 Subject: [PATCH 308/317] Update on Overleaf. --- apdx-validation.tex | 18 ++++++++++------ examples_serialization.tex | 44 +++++++++++++++++++------------------- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 670fa503..9de8a9b3 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -152,7 +152,7 @@ \subsubsection*{Rules for the \class{ComponentDefinition} class} \printModeling{The \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition} SHOULD only contain a \sbol{URI} provided in \ref{tbl:componentdefinition_roles} if one of its \sbolmult{types:CD}{types} is cross-listed with this \sbol{URI}.\\ Reference: \sec{sec:ComponentDefinition}} -\printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{URI} references to \sbol{Sequence} objects.\\ Reference: \sec{sec:ComponentDefinition}} +\printValid{The \sbol{sequences} property of a \sbol{ComponentDefinition} is OPTIONAL and MAY contain a set of \sbol{URI}s.\\ Reference: \sec{sec:ComponentDefinition}} \printWarning{Each \sbol{URI} contained by the \sbol{sequences} property of a \sbol{ComponentDefinition} MUST refer to a \sbol{Sequence} object.\\ Reference: \sec{sec:ComponentDefinition}} @@ -186,7 +186,7 @@ \subsubsection*{Rules for the \class{ComponentInstance} class} \printValid{A \sbol{ComponentInstance} MUST inherit all properties of the \sbol{Identified} class.\\ Reference: \sec{sec:ComponentInstance}} -\printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{ComponentDefinition}.\\ Reference: \sec{sec:ComponentInstance}} +\printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} is REQUIRED and MUST contain a \sbol{URI}.\\ Reference: \sec{sec:ComponentInstance}} \printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} MUST NOT contain a \sbol{URI} reference to the \sbol{ComponentDefinition} that contains the \sbol{ComponentInstance}.\\ Reference: \sec{sec:ComponentInstance}} @@ -208,15 +208,17 @@ \subsubsection*{Rules for the \class{MapsTo} class} \printValid{A \sbol{MapsTo} MUST inherit all properties of the \sbol{Identified} class.\\ Reference: \sec{sec:MapsTo}} -\printValid{The \sbol{local} property of a \sbol{MapsTo} is REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{ComponentInstance}.\\ Reference: \sec{sec:MapsTo}} +\printValid{The \sbol{local} property of a \sbol{MapsTo} is REQUIRED and MUST contain a \sbol{URI}.\\ Reference: \sec{sec:MapsTo}} \printValid{If a \sbol{MapsTo} is contained by a \sbol{Component} in a \sbol{ComponentDefinition}, then the \sbol{local} property of the \sbol{MapsTo} MUST refer to another \sbol{Component} in the \sbol{ComponentDefinition}.\\ Reference: \sec{sec:MapsTo}} \printValid{If a \sbol{MapsTo} is contained by a \sbol{FunctionalComponent} or \sbol{Module} in a \sbol{ModuleDefinition}, then the \sbol{local} property of the \sbol{MapsTo} MUST refer to another \sbol{FunctionalComponent} in the \sbol{ModuleDefinition}.\\ Reference: \sec{sec:MapsTo}} -\printValid{The \sbol{remote} property of a \sbol{MapsTo} is REQUIRED and MUST contain a \sbol{URI} reference to a \sbol{ComponentInstance}.\\ Reference: \sec{sec:MapsTo}} +\printValid{The \sbol{remote} property of a \sbol{MapsTo} is REQUIRED and MUST contain a \sbol{URI}.\\ Reference: \sec{sec:MapsTo}} -\printWarning{The \sbol{remote} property of a \sbol{MapsTo} MUST refer to a \sbol{ComponentInstance} with an \sbol{access} property that contains the \sbol{URI} \url{http://sbols.org/v2\#public}.\\ Reference: \sec{sec:MapsTo}} +\printWarning{The \sbol{remote} property of a \sbol{MapsTo} MUST refer to a \sbol{ComponentInstance}.\\ Reference: \sec{sec:MapsTo}} + +\printWarning{The \sbol{ComponentInstance} referred to by the \sbol{remote} property of a \sbol{MapsTo} MUST have an \sbol{access} property that contains the \sbol{URI} \url{http://sbols.org/v2\#public}.\\ Reference: \sec{sec:MapsTo}} \printWarning{If a \sbol{MapsTo} is contained by a \sbol{ComponentInstance}, then the \sbol{remote} property of the \sbol{MapsTo} MUST refer to a \sbol{Component} in the \sbol{ComponentDefinition} that is referenced by the \sbolmult{definition:CI}{definition} property of the \sbol{ComponentInstance}.\\ Reference: \sec{sec:MapsTo}} @@ -324,7 +326,7 @@ \subsubsection*{Rules for the \class{Model} class} \printValid{The \sbol{framework} property is REQUIRED and must contain a \sbol{URI}.\\ Reference: \sec{sec:Model}} -\printWarning{The \sbol{URI} contained by the \sbol{framework} property of a \sbol{Model} MUST specify the mathematical framework of the model.\\ Reference: \sec{sec:Model}} +\printWarning{The \sbol{URI} contained by the \sbol{framework} property of a \sbol{Model} MUST specify the modeling framework of the model.\\ Reference: \sec{sec:Model}} \printWarning{The \sbol{framework} property of a \sbol{Model} MUST contain a \sbol{URI} from \ref{tbl:model_frameworks} if it is well-described by this \sbol{URI}.\\ Reference: \sec{sec:Model}} @@ -337,6 +339,8 @@ \subsubsection*{Rules for the \class{ModuleDefinition} class} \printValid{The \sbolmult{roles:MD}{roles} property is OPTIONAL and MAY contain a set of \sbol{URI}s.\\ Reference: \sec{sec:ModuleDefinition}} +\printWarning{Each \sbol{URI} contained by \sbolmult{roles:MD}{roles} property of a \sbol{ModuleDefinition} MUST refer to a resource that clarifies the intended function of the \sbol{ModuleDefinition}.\\ Reference: \sec{sec:ModuleDefinition}} + \printValid{The \sbol{modules} property OPTIONAL and may contain a set of \sbol{Module} objects.\\ Reference: \sec{sec:ModuleDefinition}} \printValid{The \sbol{interactions} property is OPTIONAL and MAY contain a set of \sbol{Interaction} objects.\\ Reference: \sec{sec:ModuleDefinition}} @@ -429,6 +433,6 @@ \subsubsection*{Rules for the \class{Annotation} class} \subsubsection*{Rules for the \class{GenericTopLevel} class} \setcounter{sbolCtr}{12301} -\printValid{A \sbol{GenericTopLevel} object MUST inherits all properties of the \sbol{TopLevel} class.\\ Reference: \sec{sec:GenericTopLevel}} +\printValid{A \sbol{GenericTopLevel} object MUST inherit all properties of the \sbol{TopLevel} class.\\ Reference: \sec{sec:GenericTopLevel}} \printValid{The \sbol{rdfType} property of a \sbol{GenericTopLevel} object is REQUIRED and MUST contain a \sbol{QName}.\\ Reference: \sec{sec:GenericTopLevel}} \ No newline at end of file diff --git a/examples_serialization.tex b/examples_serialization.tex index 6ef7b8ba..c59fa4a4 100644 --- a/examples_serialization.tex +++ b/examples_serialization.tex @@ -4,8 +4,8 @@ \section{Examples of Serialization} % ----------------------------------------------------------------------------- \subsection{Simple Examples} -\subsubsection{Serializing Sequence Entities} -This example shows how to create \sbol{Sequence} entities. +\subsubsection{Serializing Sequence Objects} +This example shows the serialization of a \sbol{Sequence}. \lstsetsbol \begin{lstlisting} @@ -21,8 +21,8 @@ \subsubsection{Serializing Sequence Entities} \end{lstlisting} -\subsubsection{Serializing ComponentDefinition Entities} -This example shows how to create simple \sbol{ComponentDefinition} entities. A \sbol{ComponentDefinition} entity is created for a promoter part, and its nucleotide sequence is associated using a \sbol{Sequence} entity. +\subsubsection{Serializing ComponentDefinition Objects} +This example shows the serialization of a simple promoter \sbol{ComponentDefinition} and the \sbol{Sequence} to which it refers. \lstsetsbol \begin{lstlisting} @@ -49,8 +49,8 @@ \subsubsection{Serializing ComponentDefinition Entities} \end{lstlisting} -\subsubsection{Serializing SequenceConstraint Entities} - This example shows to add constraints between subcomponents of a \sbol{ComponentDefinition} entity using \sbol{SequenceConstraint} entities. In the example, a promoter has two subcomponents: a core promoter region and and a binding site. Using a \sbol{SequenceConstraint} entity, it is specified that the core promoter region precedes the binding site. +\subsubsection{Serializing SequenceConstraint Objects} + This example shows the serialization of \sbol{SequenceConstraint} between two \sbol{Component} objects in a composite promoter \sbol{ComponentDefinition}. In the example, the promoter \sbol{ComponentDefinition} has two sub-\sbol{Component}s that instantiate the \sbol{ComponentDefinition} objects for a core promoter region and and a binding site. The \sbol{SequenceConstraint} specifies that the core promoter region precedes the binding site. \lstsetsbol \begin{lstlisting} @@ -91,8 +91,8 @@ \subsubsection{Serializing SequenceConstraint Entities} \end{lstlisting} -\subsubsection{Serializing Cut Location Entities} -This example shows how to use {@link org.sbolstandard.core2.Cut} entities to specify a cut location. +\subsubsection{Serializing Cut Location Objects} +This example shows the serialization of a \sbol{Cut} \sbol{Location}. \lstsetsbol \begin{lstlisting} @@ -147,8 +147,8 @@ \subsubsection{Serializing Cut Location Entities} \end{lstlisting} -\subsubsection{Serializing Model Entities} -This example shows how to create \sbol{Model} entities. In the example, the \sbol{Model} entity refers to an ODE model in the SBML format. +\subsubsection{Serializing Model Objects} +This example shows the serialization of a \sbol{Model}. In this example, the \sbol{Model} refers to an ODE model written in SBML that can be accessed the identified source repository. \lstsetsbol \begin{lstlisting} @@ -164,8 +164,8 @@ \subsubsection{Serializing Model Entities} \end{lstlisting} -\subsubsection{Serializing ModuleDefinition Entities} -This example shows to create simple \sbol{ModuleDefinition} entities. The module includes an \sbol{Interaction} entity to represent the translation of a protein. +\subsubsection{Serializing ModuleDefinition Objects} +This example shows the serialization of a simple \sbol{ModuleDefinition}. This \sbol{ModuleDefinition} includes an \sbol{Interaction} that represents the translation of a protein. \lstsetsbol \begin{lstlisting} @@ -217,8 +217,8 @@ \subsubsection{Serializing ModuleDefinition Entities} \end{lstlisting} -\subsubsection{Serializing Application Specific Data Within SBOL entities} -This example shows how to embed application specific custom data into SBOL documents. A \sbol{ComponentDefinition} entity, representing a promoter, is annotated with information about the promoter's sigma factor and how it is regulated. +\subsubsection{Serializing Application Specific Data Within SBOL Objects} +This example shows the serialization of application-specific data from \sbol{Annotation} objects. A \sbol{ComponentDefinition} that represents a promoter is annotated with custom data on the promoter's sigma factor and how it is regulated. \lstsetsbol \begin{lstlisting} @@ -242,8 +242,8 @@ \subsubsection{Serializing Application Specific Data Within SBOL entities} \end{lstlisting} -\subsubsection{Serializing Application Specific Data Outside SBOL entities} -This example shows embedding custom application specific data into SBOL documents as top-level entities. Such data are represented using \sbol{GenericTopLevel} entities and can be referenced from other SBOL entities via custom annotations. +\subsubsection{Serializing Application-Specific Data Outside SBOL Objects} +This example shows the serialization of application-specific data from \sbol{GenericTopLevel} objects. Such data can be referenced by other SBOL objects via \sbol{Annotation} objects. \lstsetsbol \begin{lstlisting} @@ -269,8 +269,8 @@ \subsubsection{Serializing Application Specific Data Outside SBOL entities} \end{lstlisting} -\subsubsection{Serializing Collection Entities} -This examples shows how to create \sbol{Collection} entities. The Collection entity in the example is used to represent a library of promoters. +\subsubsection{Serializing Collection Objects} +This example shows the serialization of a \sbol{Collection}. This \sbol{Collection} represents a library of promoters. \lstsetsbol \begin{lstlisting} @@ -291,10 +291,10 @@ \subsection{Complex Examples} \subsubsection{PoPS Receiver} This example shows the serialization of the PoPS Receiver device designed by Canton and co-workers~\cite{canton-natbio-2008}. -In particular, this is a \sbol{ComponentDefinition} comprising five other \sbol{Component} objects to construct a detector for the cell-cell signaling molecule 3OC$_6$HSL. +In particular, this example includes the serialization of a \sbol{ComponentDefinition} that composes five \sbol{Component} objects to define the structure of a detector for the cell-cell signaling molecule 3OC$_6$HSL. The five components are arranged in a sequence: -first come four components together implement constitutive expression of the LuxR protein, which responds to 3OC$_6$HSL: a constitutive promoter, 5'UTR, coding sequence for LuxR, and terminator. -Finally, after this comes the pLuxR promoter, which is activated in the presence of LuxR and 3OC$_6$HSL. +first come four \sbol{Component} objects that together implement constitutive expression of the LuxR protein, which in turn responds to 3OC$_6$HSL: a constitutive promoter, 5'UTR, coding sequence for LuxR, and terminator. +Finally, after these objects comes the \sbol{Component} object for the pLuxR promoter, which is activated in the presence of LuxR and 3OC$_6$HSL. % Complete details of the device can be found in the cited paper and also at \url{http://parts.igem.org/Part:BBa_F2620}. @@ -520,7 +520,7 @@ \subsubsection{PoPS Receiver} \subsubsection{Toggle Switch} -This example shows the serialization of an SBOL data model for a LacI/TetR toggle switch similar to those constructed in \cite{Gardner2000}. +This example shows the serialization of the \sbol{ComponentDefinition} and \sbol{ModuleDefinition} objects for a LacI/TetR toggle switch similar to those constructed in \cite{Gardner2000}. This design is essentially similar to the one presented in \ref{sec:examples}, except that it uses some alternate groupings in how the total design is built up out of smaller entities. \label{ser:toggleswitch} From 3c106d0de54902cc4ca2d83f018ce76df809e9ee Mon Sep 17 00:00:00 2001 From: jakebeal Date: Fri, 31 Jul 2015 18:27:23 -0500 Subject: [PATCH 309/317] working on final pass --- apdx-validation.tex | 20 ++++++++++---------- model.tex | 45 ++++++++++++++++++++++----------------------- 2 files changed, 32 insertions(+), 33 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 670fa503..5776c808 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -19,29 +19,29 @@ \section{Validation Rules} \item[\hspace*{6.5pt}\vSymbol\vsp] A \vSymbolName indicates a strong REQUIRED condition for SBOL conformance. If a SBOL document does not follow this rule, it does not conform to the SBOL specification. (Mnemonic intention behind the choice of symbol: - ``This must be checked.'') + ``This MUST be checked.'') \item[\hspace*{6.5pt}\cSymbol\csp] A \cSymbolName indicates a weak REQUIRED condition for SBOL conformance. While this rule MUST be followed, it can be difficult, if not impossible, for a machine to automatically check whether the rule has been followed. (Mnemonic intention behind the choice of symbol: ``This is a cause for warning.'') \item[\hspace*{6.5pt}\mSymbol\msp] A \mSymbolName indicates a RECOMMENDED condition for following best practices. This rule is not strictly a matter of SBOL conformance, but its recommendation comes from logical - reasoning. If an SBOL document does not follow this rule, it is still valid SBOL, but it may have degraded functionality in some tools. (Mnemonic intention behind the choice of symbol: ``You're a star if you heed this.'') + reasoning. If an SBOL document does not follow this rule, it is still valid SBOL, but it might have degraded functionality in some tools. (Mnemonic intention behind the choice of symbol: ``You're a star if you heed this.'') \end{description} -The validation rules listed in the following subsections should all be +The validation rules listed in the following subsections are all believed to be stated or implied in the rest of this specification document. They are enumerated here for convenience and to provide a ``master checklist'' for SBOL validation. In case of a conflict between this -section and other portions of the specification (though there should +section and other portions of the specification (though there are believed to be none), this section is considered authoritative for the purpose of determining the validity of an SBOL document. For \notice convenience and brievity, we use the shorthand ``\token{sbol:x}'' to stand for an attribute or element name \token{x} in the namespace for the SBOL specification, using -the namespace prefix \token{sbol}. In reality, the prefix string may be different from the literal ``\token{sbol}'' used here (and indeed, it can be any valid XML namespace prefix that the software +the namespace prefix \token{sbol}. In reality, the prefix string can be different from the literal ``\token{sbol}'' used here (and indeed, it can be any valid XML namespace prefix that the software chooses). We use ``\token{sbol:x}'' because it is shorter than to write a full explanation everywhere we refer to an attribute or element in the SBOL specification namespace. @@ -190,7 +190,7 @@ \subsubsection*{Rules for the \class{ComponentInstance} class} \printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{ComponentInstance} MUST NOT contain a \sbol{URI} reference to the \sbol{ComponentDefinition} that contains the \sbol{ComponentInstance}.\\ Reference: \sec{sec:ComponentInstance}} -\printWarning{The \sbol{URI} contained by the \sbolmult{definition:CI}{definition} property must refer to a \sbol{ComponentDefinition} object.\\ Reference: \sec{sec:ComponentInstance}} +\printWarning{The \sbol{URI} contained by the \sbolmult{definition:CI}{definition} property MUST refer to a \sbol{ComponentDefinition} object.\\ Reference: \sec{sec:ComponentInstance}} \printWarning{\sbol{ComponentInstance} objects MUST NOT form circular reference chains via their \sbolmult{definition:CI}{definition} properties and parent \sbol{ComponentDefinition} objects.\\ Reference: \sec{sec:ComponentInstance}} @@ -322,7 +322,7 @@ \subsubsection*{Rules for the \class{Model} class} \printModeling{The \sbol{language} property of a \sbol{Model} SHOULD contain a \sbol{URI} that refers to a term from the EDAM ontology.\\ Reference: \sec{sec:Model}} -\printValid{The \sbol{framework} property is REQUIRED and must contain a \sbol{URI}.\\ Reference: \sec{sec:Model}} +\printValid{The \sbol{framework} property is REQUIRED and MUST contain a \sbol{URI}.\\ Reference: \sec{sec:Model}} \printWarning{The \sbol{URI} contained by the \sbol{framework} property of a \sbol{Model} MUST specify the mathematical framework of the model.\\ Reference: \sec{sec:Model}} @@ -337,7 +337,7 @@ \subsubsection*{Rules for the \class{ModuleDefinition} class} \printValid{The \sbolmult{roles:MD}{roles} property is OPTIONAL and MAY contain a set of \sbol{URI}s.\\ Reference: \sec{sec:ModuleDefinition}} -\printValid{The \sbol{modules} property OPTIONAL and may contain a set of \sbol{Module} objects.\\ Reference: \sec{sec:ModuleDefinition}} +\printValid{The \sbol{modules} property is OPTIONAL and MAY contain a set of \sbol{Module} objects.\\ Reference: \sec{sec:ModuleDefinition}} \printValid{The \sbol{interactions} property is OPTIONAL and MAY contain a set of \sbol{Interaction} objects.\\ Reference: \sec{sec:ModuleDefinition}} @@ -354,7 +354,7 @@ \subsubsection*{Rules for the \class{Module} class} \printValid{The \sbolmult{definition:M}{definition} property of a \sbol{Module} is REQUIRED and MUST contain a \sbol{URI}. \\ Reference: \sec{sec:Module}} -\printValid{The \sbol{URI} contained by the \sbolmult{definition:M}{definition} property of \sbol{Module} must refer to a \sbol{ModuleDefinition}.\\ Reference: \sec{sec:Module}} +\printValid{The \sbol{URI} contained by the \sbolmult{definition:M}{definition} property of \sbol{Module} MUST refer to a \sbol{ModuleDefinition}.\\ Reference: \sec{sec:Module}} \printValid{The \sbolmult{definition:CI}{definition} property of a \sbol{Module} MUST NOT contain a \sbol{URI} reference to the \sbol{ModuleDefinition} that contains the \sbol{Module}.\\ Reference: \sec{sec:Module}} @@ -420,7 +420,7 @@ \subsubsection*{Rules for the \class{Annotation} class} \printValid{An \sbol{AnnotationValue} MUST be a \sbol{literal} (a \sbol{String}, \sbol{Integer}, \sbol{Double}, or \sbol{Boolean}), \sbol{URI}, or a \sbol{NestedAnnotations} object.\\ Reference: \sec{sec:Annotations}} -\printValid{The \sbol{nestedQName} property of a \sbol{NestedAnnotations} object is REQUIRED and must contain a \sbol{QName}. \\ Reference: \sec{sec:Annotations}} +\printValid{The \sbol{nestedQName} property of a \sbol{NestedAnnotations} object is REQUIRED and MUST contain a \sbol{QName}. \\ Reference: \sec{sec:Annotations}} \printValid{The \sbol{nestedURI} property of a \sbol{NestedAnnotations} object is REQUIRED and MUST contain a \sbol{URI}. \\ Reference: \sec{sec:Annotations}} diff --git a/model.tex b/model.tex index 107d3e78..1e75cb1d 100644 --- a/model.tex +++ b/model.tex @@ -19,22 +19,21 @@ \subsection{Understanding the UML Diagrams} By contrast, filled diamonds indicate composite aggregation, also known as a part-whole relationship, in which the value of the association property MUST NOT exist independently of its owner. In addition, in the SBOL data model, it is REQUIRED that the value of each composite aggregation property is a unique SBOL object (that is, not the value for more than one such property). -Note that in all cases, composite aggregation is used in such a way that there should be no duplication of such objects. -%For example, it will later be shown how objects of the \sbol{SequenceAnnotation} class must associated with an object of the \sbol{ComponentDefinition} class (and only that object). +Note that in all cases, composite aggregation is used in such a way that there SHOULD NOT be duplication of such objects. All SBOL properties are labeled with one of several restrictions on data cardinality. These are: \begin{itemize} -\item $1$ - required, one: there must be exactly one value for this property. +\item $1$ - REQUIRED, one: there MUST be exactly one value for this property. -\item $0 \ldots 1$ - optional: there may be a single value for this property, or it may be absent. +\item $0 \ldots 1$ - OPTIONAL: there MAY be a single value for this property, or it may be absent. -\item $0 \ldots *$ - unbounded: there may be any number of values for this property, including none. +\item $0 \ldots *$ - unbounded: there MAY be any number of values for this property, including none. -\item $1 \ldots *$ - required, unbounded: there may be any number of values for this property, as long as there is at least one. +\item $1 \ldots *$ - REQUIRED, unbounded: there MAY be any number of values for this property, as long as there is at least one. -\item $n \ldots *$ - at least: there must be at least $n$ values for this property. +\item $n \ldots *$ - at least: there MUST be at least $n$ values for this property. \end{itemize} @@ -97,7 +96,7 @@ \subsection{Identified} When an SBOL resource reference takes the form of a \sbol{URI}, that \sbol{URI} may either be the value of an \sbol{identity} property or the value of a \sbol{persistentIdentity} property. If the \sbol{URI} is equal to the value of an \sbol{identity} property, then it is guaranteed to be unique, and it refers to precisely one SBOL object with that \sbol{URI}. -If the \sbol{URI} is equal to the value of a \sbol{persistentIdentity} property, then it may refer to multiple SBOL objects that are different ``versions'' of each other. These objects SHOULD be compared to one another to determine which single object the \sbol{URI} should resolve to (normally the most recent version - see \ref{sec:version}). +If the \sbol{URI} is equal to the value of a \sbol{persistentIdentity} property, then it may refer to multiple SBOL objects that are different ``versions'' of each other. These objects SHOULD be compared to one another to determine which single object the \sbol{URI} resolves to (normally the most recent version - see \ref{sec:version}). Throughout this document, when a \sbol{URI} is used to refer to an SBOL object, it could fall into either of these cases. \begin{figure}[ht] @@ -116,7 +115,7 @@ \subsubsection*{The \sbolheading{identity} property} \url{http://www.w3.org/1999/02/22-rdf-syntax-ns\#about}. -The use of \external{about} is expressly for the purpose of making SBOL compliant with pre-existing standards: when you see \external{about} in an SBOL document, you should interpret it as meaning \sbol{identity}. +The use of \external{about} is expressly for the purpose of making SBOL compliant with pre-existing standards: when you see \external{about} in an SBOL document, you SHOULD interpret it as meaning \sbol{identity}. \subsubsection*{The \sbolheading{persistentIdentity} property} \label{sec:persistentIdentity} @@ -128,16 +127,16 @@ \subsubsection*{The \sbolheading{displayId} property} \label{sec:displayId} The \sbol{displayId} property is an OPTIONAL identifier with a data type of \sbol{String}. This property is intended to be an intermediate between \sbol{name} and \sbol{identity} that is machine-readable, but more human-readable than the full \sbol{URI} of an \sbol{identity}. -If the \sbol{displayId} property is used, then its \sbol{String} value SHOULD be locally unique (global uniqueness is not required) and MUST be composed of only alphanumeric or underscore characters and MUST NOT begin with a digit. +If the \sbol{displayId} property is used, then its \sbol{String} value SHOULD be locally unique (global uniqueness is not necessary) and MUST be composed of only alphanumeric or underscore characters and MUST NOT begin with a digit. -% compliant with the type \external{http://www.w3.org/TR/xmlschema-2/\#NCName}, except that it must not include the characters "-" and ".". +% compliant with the type \external{http://www.w3.org/TR/xmlschema-2/\#NCName}, except that it MUST not include the characters "-" and ".". \subsubsection*{The \sbolheading{version} property} \label{sec:version} The \sbol{version} property is OPTIONAL and has a data type of \sbol{String}. This property can be used to compare two SBOL objects with the same \sbol{persistentIdentity}. -If the \sbol{version} property is used, then it is RECOMMENDED that version numbering should follow the conventions of semantic versioning (\url{http://semver.org/}), particularly as implemented by Maven (\url{http://maven.apache.org/}). +If the \sbol{version} property is used, then it is RECOMMENDED that version numbering follow the conventions of semantic versioning (\url{http://semver.org/}), particularly as implemented by Maven (\url{http://maven.apache.org/}). This convention represents versions as sequences of numbers and qualifiers that are separated by the characters ``{\tt .}'' and ``{\tt -}'' and are compared in lexicographical order (for example, 1 < 1.3.1 < 2.0-beta). For a full explanation, see the linked resources. @@ -374,7 +373,7 @@ \subsubsection*{The \sbolheading{roles} property} Effector & \url{http://identifiers.org/chebi/CHEBI:35224} & Small Molecule \\ \bottomrule \end{edtable} - \caption{Ontology terms to specify the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition}, organized by the type of \sbol{ComponentDefinition} to which they should apply (see \ref{tbl:componentdefinition_types}).} + \caption{Ontology terms to specify the \sbolmult{roles:CD}{roles} property of a \sbol{ComponentDefinition}, organized by the type of \sbol{ComponentDefinition} to which they are intended to apply (see \ref{tbl:componentdefinition_types}).} \label{tbl:componentdefinition_roles} \end{table} @@ -388,7 +387,7 @@ \subsubsection*{The \sbolheading{sequences} property} Finally, if a \sbol{ComponentDefinition} refers to one or more \sbol{Sequence} objects and its \sbolmult{types:CD}{types} property refers to a term from \ref{tbl:componentdefinition_types}, then one of these \sbol{Sequence} objects MUST have the \sbol{encoding} that is cross-listed with this term in \ref{tbl:sequence_encodings}. Conversely, if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \sbol{encoding} from \ref{tbl:sequence_encodings}, then its \sbolmult{types:CD}{types} property MUST refer to the term from \ref{tbl:componentdefinition_types} that is cross-listed with this \sbol{encoding} in \ref{tbl:sequence_encodings}. -For example, if the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}, then its \sbolmult{types:CD}{types} property must refer to the BioPAX term for DNA. These requirements are meant to provide for some degree of consistency between the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} and the \sbol{encoding} properties of the \sbol{Sequence} objects to which the \sbol{ComponentDefinition} refers. +For example, if the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} refers to the BioPAX term for DNA, then one of the \sbol{Sequence} objects to which it refers (if any) MUST have an \external{IUPAC DNA} \sbol{encoding}, and if a \sbol{ComponentDefinition} refers to a \sbol{Sequence} with an \external{IUPAC DNA} \sbol{encoding}, then its \sbolmult{types:CD}{types} property MUST refer to the BioPAX term for DNA. These requirements are meant to provide for some degree of consistency between the \sbolmult{types:CD}{types} property of a \sbol{ComponentDefinition} and the \sbol{encoding} properties of the \sbol{Sequence} objects to which the \sbol{ComponentDefinition} refers. \subsubsection*{The \sbolheading{components} property} \label{sec:components} @@ -601,7 +600,7 @@ \subsubsection{MapsTo} In order to explicitly represent the identity relationships in this example, a new RBS \sbol{Component} needs to be created inside the ``higher level'' \sbol{ComponentDefinition}. This ``higher level'' \sbol{Component} then needs to be linked to the equivalent ``lower level'' \sbol{Component} objects by means of the \sbol{MapsTo} class, using one \sbol{MapsTo} object per link. -For example, in order to link the ``higher level'' RBS \sbol{Component} to the ``lower level'' RBS \sbol{Component} of the promoter-RBS \sbol{ComponentDefinition}, a \sbol{MapsTo} must be created on the ``higher level'' promoter-RBS \sbol{Component}. The \sbol{local} property of this \sbol{MapsTo} must then refer to the ``higher level'' RBS \sbol{Component}, while its \sbol{remote} property must refer to the ``lower level'' RBS \sbol{Component}. +For example, in order to link the ``higher level'' RBS \sbol{Component} to the ``lower level'' RBS \sbol{Component} of the promoter-RBS \sbol{ComponentDefinition}, a \sbol{MapsTo} has to be created on the ``higher level'' promoter-RBS \sbol{Component}. The \sbol{local} property of this \sbol{MapsTo} then has to refer to the ``higher level'' RBS \sbol{Component}, while its \sbol{remote} property has to refer to the ``lower level'' RBS \sbol{Component}. In this way, many ``lower level'' \sbol{Component} objects can be linked together at the ``higher level'' using as an equal number of \sbol{MapsTo} objects, each one referring to a different \sbol{remote} \sbol{Component}, but all referring to the same \sbol{local} \sbol{Component}. The same types of identity relationships can also be declared between \sbol{FunctionalComponent} objects contained by \sbol{ModuleDefinition} objects, or between \sbol{Component} objects and \sbol{FunctionalComponent} objects contained by \sbol{ComponentDefinition} objects and \sbol{ModuleDefinition} objects, respectively. See \ref{sec:examples} and \ref{ser:examples} for additional examples using the \sbol{MapsTo} class. @@ -1230,8 +1229,8 @@ \subsubsection{Interaction} \label{tbl:interaction_types} \end{table} -If an \sbol{Interaction} is well described by one of the terms from \ref{tbl:interaction_types}, then its \sbolmult{types:I}{types} property must contain the \sbol{URI} that identifies this term. Lastly, if the \sbolmult{types:I}{types} property of an \sbol{Interaction} contains multiple - \sbol{URI}s, then they must identify non-conflicting terms. For example, the SBO terms ``stimulation'' and ``inhibition'' would conflict. +If an \sbol{Interaction} is well described by one of the terms from \ref{tbl:interaction_types}, then its \sbolmult{types:I}{types} property MUST contain the \sbol{URI} that identifies this term. Lastly, if the \sbolmult{types:I}{types} property of an \sbol{Interaction} contains multiple + \sbol{URI}s, then they MUST identify non-conflicting terms. For example, the SBO terms ``stimulation'' and ``inhibition'' would conflict. \paragraph{The \sbolheading{participations} property}\label{sec:participations} @@ -1311,8 +1310,8 @@ \subsubsection{Participation} \label{tbl:participant_roles} \end{table} -If a \sbol{Participation} is well described by one of the terms from \ref{tbl:participant_roles}, then its \sbolmult{roles:P}{roles} property must contain the \sbol{URI} that identifies this term. Lastly, if the \sbolmult{roles:P}{roles} property of a \sbol{Participation} contains multiple - \sbol{URI}s, then they must identify non-conflicting terms. For example, the SBO terms ``stimulator'' and ``inhibitor'' would conflict. +If a \sbol{Participation} is well described by one of the terms from \ref{tbl:participant_roles}, then its \sbolmult{roles:P}{roles} property MUST contain the \sbol{URI} that identifies this term. Lastly, if the \sbolmult{roles:P}{roles} property of a \sbol{Participation} contains multiple + \sbol{URI}s, then they MUST identify non-conflicting terms. For example, the SBO terms ``stimulator'' and ``inhibitor'' would conflict. \paragraph{The \sbolheading{participant} property}\label{sec:participant} @@ -1416,8 +1415,8 @@ \subsubsection{Annotating SBOL objects} \label{sec:nestedQName} \label{sec:nestedURI} -Each \sbol{Identified} object may contain any number of \sbol{Annotation} objects that store data in the form of name/value property pairs. The \sbol{qName} is REQUIRED and MUST contain a \sbol{QName}, which is composed of a namespace, an OPTIONAL prefix, and a local name. The \sbol{qName} property must be stored in the data model to allow for proper serialization as described below. -The \sbol{value} property is also REQUIRED and must contain a \sbol{literal} (i.e., a \sbol{String}, \sbol{Integer}, \sbol{Double}, \sbol{Boolean}), \sbol{URI}, or \sbol{NestedAnnotations} object. A \sbol{NestedAnnotations} object MUST contain \sbol{nestedQName} and \sbol{nestedURI} properties, and it MAY contain an \sbol{annotations} property that contains zero or more \sbol{Annotation} objects. +Each \sbol{Identified} object MAY contain any number of \sbol{Annotation} objects that store data in the form of name/value property pairs. The \sbol{qName} is REQUIRED and MUST contain a \sbol{QName}, which is composed of a namespace, an OPTIONAL prefix, and a local name. The \sbol{qName} property MUST be stored in the data model to allow for proper serialization as described below. +The \sbol{value} property is also REQUIRED and MUST contain a \sbol{literal} (i.e., a \sbol{String}, \sbol{Integer}, \sbol{Double}, \sbol{Boolean}), \sbol{URI}, or \sbol{NestedAnnotations} object. A \sbol{NestedAnnotations} object MUST contain \sbol{nestedQName} and \sbol{nestedURI} properties, and it MAY contain an \sbol{annotations} property that contains zero or more \sbol{Annotation} objects. \begin{figure}[!ht] \begin{center} @@ -1458,7 +1457,7 @@ \subsubsection*{Serialization} The example below shows how the serialization for a promoter \sbol{ComponentDefinition} can be annotated with custom data. \sbol{Annotation}s are added containing the relevant information from the iGEM Parts Registry. Each property serialization of an \sbol{Annotation} is qualified with the \external{http://www.partsregistry.org/} namespace, which is prefixed using \external{pr}. The first \sbol{Annotation} is named \external{pr:group}. It specifies the iGEM group that has designed the promoter and has a \sbol{String} value. The second \sbol{Annotation} is named \external{pr:experience}. It contains a \sbol{URI} value that is serialized as an RDF resource and can be resolved to the information Web page on the Parts Registry for the promoter. -Finally, the third \sbol{Annotation} is named \external{pr:information}. It contains a \sbol{NestedAnnotation} object that is serialized as shown and includes information about the regulatory details of the promoter using \sbol{Annotations} that correspond to Parts Registry categories. +Finally, the third \sbol{Annotation} is named \external{pr:information}. It contains a \sbol{NestedAnnotations} object that is serialized as shown and includes information about the regulatory details of the promoter using \sbol{Annotations} that correspond to Parts Registry categories. \begin{figure} [ht] \lstsetsbol @@ -1567,7 +1566,7 @@ \section{Mapping Between SBOL 1.1 and SBOL 2.0} \begin{itemize} \item SBOL 1.1 \external{Collection} objects containing \external{DnaComponent} objects map to SBOL 2.0 \sbol{Collection} objects that contain \sbol{ComponentDefinition} objects with DNA \sbolmult{types:CD}{types} properties. \item SBOL 1.1 \external{DnaComponent} objects maps to SBOL 2.0 \sbol{ComponentDefinition} objects with DNA \sbolmult{types:CD}{types} properties. -\item SBOL 1.1 \external{DnaSequence} objects maps to an SBOL 2.0 \sbol{Sequence} objects with \sbol{IUPAC DNA} \sbol{encoding} properties. +\item SBOL 1.1 \external{DnaSequence} objects maps to an SBOL 2.0 \sbol{Sequence} objects with \external{IUPAC DNA} \sbol{encoding} properties. \item SBOL 1.1 \external{SequenceAnnotation} objects with \external{bioStart} and \external{bioEnd} properties map to SBOL 2.0 \sbol{SequenceAnnotation} objects that contain \sbol{Range} objects. \item SBOL 1.1 \external{SequenceAnnotation} objects that lack \external{bioStart} and \external{bioEnd} properties map to an SBOL 2.0 \sbol{SequenceAnnotation} objects that contain \sbol{GenericLocation} objects. \item Each SBOL 1.1 \external{SequenceAnnotation} also maps to an SBOL 2.0 \sbol{Component}, which represents the instantiation or usage of the appropriate \sbol{ComponentDefinition}. From ccfa4b261f99c2c1b4d9b096da30cdb01123747b Mon Sep 17 00:00:00 2001 From: jakebeal Date: Fri, 31 Jul 2015 18:42:47 -0500 Subject: [PATCH 310/317] working on final pass --- model.tex | 29 ++++++++++++++++------------- overview.tex | 7 ++++--- practices.tex | 8 +++++--- purpose.tex | 13 +++++++------ sbol2.tex | 4 ++-- serialization.tex | 14 ++++++++------ vocabulary.tex | 4 ++-- 7 files changed, 44 insertions(+), 35 deletions(-) diff --git a/model.tex b/model.tex index 1e75cb1d..58c3a0b6 100644 --- a/model.tex +++ b/model.tex @@ -11,9 +11,9 @@ \section{SBOL Data Model}\label{sec:model} \subsection{Understanding the UML Diagrams} \label{sec:umldiagrams} -The types of biological design data modeled by SBOL are commonly referred to as {\em classes}, especially when discussing the details of software implementation. Each SBOL class can be instantiated by many SBOL objects. These objects may contain data that differ in content, but they MUST agree on the type and form of their data as dictated by their common class. Classes are represented in UML diagrams as rectangles labeled at the top with class names. +The types of biological design data modeled by SBOL are commonly referred to as {\em classes}, especially when discussing the details of software implementation. Each SBOL class can be instantiated by many SBOL objects. These objects MAY contain data that differ in content, but they MUST agree on the type and form of their data as dictated by their common class. Classes are represented in UML diagrams as rectangles labeled at the top with class names. -Classes may be connected to other classes by association properties, which are represented in UML diagrams as arrows. These arrows are labeled with data cardinalities in order to indicate how many values a given association property may possess (see below). The remaining (non-association) properties of a class are listed below its name. Each of the latter properties is labeled with its data type and cardinality. +Classes can be connected to other classes by association properties, which are represented in UML diagrams as arrows. These arrows are labeled with data cardinalities in order to indicate how many values a given association property can possess (see below). The remaining (non-association) properties of a class are listed below its name. Each of the latter properties is labeled with its data type and cardinality. In the case of an association property, the class from which the arrow originates is the owner of the association property. A diamond at the origin of the arrow indicates the type of association. Open-faced diamonds indicate shared aggregation, in which the owner of the association property exists independently of its value. In the SBOL data model, the value of an association property MUST be a \sbol{URI} or set of \sbol{URI}s that refer to SBOL objects belonging to the class at the tip of the arrow. @@ -27,7 +27,7 @@ \subsection{Understanding the UML Diagrams} \item $1$ - REQUIRED, one: there MUST be exactly one value for this property. -\item $0 \ldots 1$ - OPTIONAL: there MAY be a single value for this property, or it may be absent. +\item $0 \ldots 1$ - OPTIONAL: there MAY be a single value for this property, or it MAY be absent. \item $0 \ldots *$ - unbounded: there MAY be any number of values for this property, including none. @@ -84,7 +84,7 @@ \subsection{Data Types} Note that, in compliance with RDF standards, \sbol{URI}s are generally serialized using an \external{rdf:resource} property, e.g.: \external{rdf:resource="http://www.partsregistry.org/Part:BBa\_J23119"} -It is important to realize that in RDF, a \sbol{URI} may or may not be a resolvable URL (web address). A \sbol{URI} is always a globally unique identifier within a structured namespace. In some cases, that name is also a reference to (or within) a document, and in some cases that document can also be retrieved (e.g., using a web browser). +It is important to realize that in RDF, a \sbol{URI} might or might not be a resolvable URL (web address). A \sbol{URI} is always a globally unique identifier within a structured namespace. In some cases, that name is also a reference to (or within) a document, and in some cases that document can also be retrieved (e.g., using a web browser). \subsection{Identified} \label{sec:Identified} @@ -94,9 +94,9 @@ \subsection{Identified} As shown in \ref{uml:identified}, the \sbol{Identified} class includes the following properties: \sbol{identity}, \sbol{persistentIdentity}, \sbol{version}, \sbol{wasDerivedFrom}, \sbol{name}, \sbol{description}, and \sbol{annotations}. The latter property is described separately in \ref{sec:Annotations}. -When an SBOL resource reference takes the form of a \sbol{URI}, that \sbol{URI} may either be the value of an \sbol{identity} property or the value of a \sbol{persistentIdentity} property. +When an SBOL resource reference takes the form of a \sbol{URI}, that \sbol{URI} can either be the value of an \sbol{identity} property or the value of a \sbol{persistentIdentity} property. If the \sbol{URI} is equal to the value of an \sbol{identity} property, then it is guaranteed to be unique, and it refers to precisely one SBOL object with that \sbol{URI}. -If the \sbol{URI} is equal to the value of a \sbol{persistentIdentity} property, then it may refer to multiple SBOL objects that are different ``versions'' of each other. These objects SHOULD be compared to one another to determine which single object the \sbol{URI} resolves to (normally the most recent version - see \ref{sec:version}). +If the \sbol{URI} is equal to the value of a \sbol{persistentIdentity} property, then it MAY refer to multiple SBOL objects that are different ``versions'' of each other. These objects SHOULD be compared to one another to determine which single object the \sbol{URI} resolves to (normally the most recent version - see \ref{sec:version}). Throughout this document, when a \sbol{URI} is used to refer to an SBOL object, it could fall into either of these cases. \begin{figure}[ht] @@ -328,7 +328,7 @@ \subsubsection*{The \sbolheading{types} property} The \sbolmult{types:CD}{types} property of every \sbol{ComponentDefinition} MUST contain one or more \sbol{URI}s that MUST identify terms from appropriate ontologies, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest (ChEBI). \ref{tbl:componentdefinition_types} provides a list of possible ontology terms for the \sbolmult{types:CD}{types} property and their \sbol{URI}s. In order to maximize the compatibility of designs, any \sbol{ComponentDefinition} that can be well-described by one of the terms in \ref{tbl:componentdefinition_types} MUST use the \sbol{URI} for that term as one of its \sbolmult{types:CD}{types}. -Finally, if the \sbolmult{types:CD}{types} property contains multiple \sbol{URI}s, then they MUST identify non-conflicting terms (otherwise, it may not be clear how to interpret them). For example, the BioPAX terms provided by \ref{tbl:componentdefinition_types} would conflict because they specify classes of biochemical entities with different molecular structures. +Finally, if the \sbolmult{types:CD}{types} property contains multiple \sbol{URI}s, then they MUST identify non-conflicting terms (otherwise, it might not be clear how to interpret them). For example, the BioPAX terms provided by \ref{tbl:componentdefinition_types} would conflict because they specify classes of biochemical entities with different molecular structures. \begin{table}[ht] \begin{edtable}{tabular}{ll} @@ -381,7 +381,9 @@ \subsubsection*{The \sbolheading{sequences} property} \label{sec:sequences} The \sbol{sequences} property is OPTIONAL and MAY include a set of \sbol{URI}s that refer to \sbol{Sequence} objects. These objects define the primary structure of the \sbol{ComponentDefinition}. -Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. For certain use cases, however, it may be appropriate to refer to multiple \sbol{Sequence} objects. For example, a user may wish to provide two different representations of the structure of a DNA \sbol{ComponentDefinition}, one that represents its structure at the level of nucleotide bases and one that represents its structure at the level of atoms and bonds. +Many \sbol{ComponentDefinition} objects will refer to precisely one \sbol{Sequence} object. +For certain use cases, however, it can be appropriate to refer to multiple \sbol{Sequence} objects. +For example, a user might wish to provide two different representations of the structure of a DNA \sbol{ComponentDefinition}, one that represents its structure at the level of nucleotide bases and one that represents its structure at the level of atoms and bonds. If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} object, then these objects MUST be consistent with each other, such that well-defined mappings exist between their \sbol{elements} properties in accordance with their \sbol{encoding} properties. Furthermore, these objects MUST NOT have conflicting \sbol{encoding} properties. For example, the \external{IUPAC} \sbol{encoding} properties provided by \ref{tbl:sequence_encodings} conflict with each other because they do not specify how to encode the same class of biochemical entity. The \external{SMILES} \sbol{encoding}, however, does not conflict with them because it specifies how to encode biochemical entities in general, which includes DNA, RNA, and proteins. If a \sbol{ComponentDefinition} refers to more than one \sbol{Sequence} with the same \sbol{encoding}, then the \sbol{elements} of these \sbol{Sequence} objects SHOULD have equal lengths. These requirements and best practices are intended to make it easier for software tools to locate any regions specified by the \sbol{SequenceAnnotation} objects of a \sbol{ComponentDefinition} on its associated \sbol{Sequence} objects, as well as validate whether its \sbol{Sequence} objects are consistent with those associated with any \sbol{ComponentDefinition} objects that it composes via its \sbol{Component} objects. @@ -420,7 +422,8 @@ \subsubsection*{The \sbolheading{sequenceAnnotations} property} \subsubsection*{The \sbolheading{sequenceConstraints} property} \label{sec:sequenceConstraints} -The \sbol{sequenceConstraints} property is OPTIONAL and MAY contain a set of \sbol{SequenceConstraint} objects. These objects describe any restrictions on the relative, sequence-based positions and/or orientations of the \sbol{Component} objects contained by the \sbol{ComponentDefinition}. For example, the \sbol{ComponentDefinition} of a gene may specify that the position of its promoter \sbol{Component} precedes that of its CDS \sbol{Component}. This is particulary useful when a \sbol{ComponentDefinition} lacks a \sbol{Sequence} and therefore cannot specify the precise, sequence-based positions of its \sbol{Component} objects using \sbol{SequenceAnnotation} objects. +The \sbol{sequenceConstraints} property is OPTIONAL and MAY contain a set of \sbol{SequenceConstraint} objects. These objects describe any restrictions on the relative, sequence-based positions and/or orientations of the \sbol{Component} objects contained by the \sbol{ComponentDefinition}. +For example, the \sbol{ComponentDefinition} of a gene might specify that the position of its promoter \sbol{Component} precedes that of its CDS \sbol{Component}. This is particulary useful when a \sbol{ComponentDefinition} lacks a \sbol{Sequence} and therefore cannot specify the precise, sequence-based positions of its \sbol{Component} objects using \sbol{SequenceAnnotation} objects. \subsubsection*{Serialization} The serialization of a \sbol{ComponentDefinition} MUST have the form below. @@ -1005,7 +1008,7 @@ \subsection{ModuleDefinition} \subsubsection*{The \sbolheading{roles} property}\label{sec:roles:MD} The \sbolmult{roles:MD}{roles} property is an OPTIONAL set of \sbol{URI}s that clarifies the intended function of a \sbol{ModuleDefinition}. -These \sbol{URI}s might identify descriptive biological roles, such as ``metabolic pathway'' and ``signaling cascade,'' but they may also identify identify ``logical'' roles, such as ``inverter'' or ``AND gate'', or other abstract roles for describing the function of design. Interpretation of the meaning of such roles currently depends on the software tools that read and write them. +These \sbol{URI}s might identify descriptive biological roles, such as ``metabolic pathway'' and ``signaling cascade,'' but they can also identify identify ``logical'' roles, such as ``inverter'' or ``AND gate'', or other abstract roles for describing the function of design. Interpretation of the meaning of such roles currently depends on the software tools that read and write them. \subsubsection*{The \sbolheading{modules} property}\label{sec:modules} @@ -1027,7 +1030,7 @@ \subsubsection*{The \sbolheading{interactions} property}\label{sec:interactions} The \sbol{interactions} property is OPTIONAL and MAY specify a set of \sbol{Interaction} objects within the \sbol{ModuleDefinition}. -The \sbol{Interaction} class provides an abstract, machine-readable representation of entity behavior within a \sbol{ModuleDefinition} (whereas a more detailed model of the system may not be suited to machine reasoning, depending on its implementation). +The \sbol{Interaction} class provides an abstract, machine-readable representation of entity behavior within a \sbol{ModuleDefinition} (whereas a more detailed model of the system might not be suited to machine reasoning, depending on its implementation). Each \sbol{Interaction} contains \sbol{Participation} objects that indicate the roles of the \sbol{FunctionalComponent} objects involved in the \sbol{Interaction}. \subsubsection*{The \sbolheading{models} property}\label{sec:models} @@ -1236,7 +1239,7 @@ \subsubsection{Interaction} The \sbol{participations} property is an OPTIONAL and MAY contain a set of \sbol{Participation} objects, each of which identifies the \sbolmult{roles:P}{roles} that its referenced \sbol{FunctionalComponent} plays in the \sbol{Interaction}. -Even though an \sbol{Interaction} generally contains at least one \sbol{Participation}, the case of zero \sbol{Participation} objects is allowed because it is plausible that a designer may want to specify that an \sbol{Interaction} will exist, even if its \sbol{participant}s have not yet been determined. +Even though an \sbol{Interaction} generally contains at least one \sbol{Participation}, the case of zero \sbol{Participation} objects is allowed because it is plausible that a designer might want to specify that an \sbol{Interaction} will exist, even if its \sbol{participant}s have not yet been determined. \paragraph{Serialization} @@ -1358,7 +1361,7 @@ \subsubsection{Participation} \end{figure} \subsubsection*{The \sbolheading{members} property}\label{sec:members} -The \sbol{members} property of a \sbol{Collection} is optional and MAY contain a set of \sbol{URI} references to zero or more \sbol{TopLevel} objects. +The \sbol{members} property of a \sbol{Collection} is OPTIONAL and MAY contain a set of \sbol{URI} references to zero or more \sbol{TopLevel} objects. \subsubsection*{Serialization} diff --git a/overview.tex b/overview.tex index 1800fb3f..fbd85e54 100644 --- a/overview.tex +++ b/overview.tex @@ -28,7 +28,8 @@ \section{Overview of SBOL} \ref{images:overview1} shows a simplified view of these classes, as well as other helper classes in SBOL. To continue with the pUC18 example, the description would begin with a top-level \sbol{ModuleDefinition}. The \sbol{ModuleDefinition} specifies the structural elements that make up the cassette by referencing a number of \sbol{ComponentDefinition} objects. These would include the DNA component for the promoter and the small molecule component for IPTG, for example. -The \sbol{ComponentDefinition} objects can be organized hierarchically. For example, the plasmid \sbol{ComponentDefinition} may reference \sbol{ComponentDefinition}s for the promoter, coding sequence, etc. +The \sbol{ComponentDefinition} objects can be organized hierarchically. +For example, the plasmid \sbol{ComponentDefinition} might reference \sbol{ComponentDefinition}s for the promoter, coding sequence, etc. Each \sbol{ComponentDefinition} object can also include the actual \sbol{Sequence} information (if available), as well as \sbol{SequenceAnnotation} objects that identify the locations of the promoters, coding sequences, etc., on the \sbol{Sequence}. In order to specify functional information, the \sbol{ModuleDefinition} can specify \sbol{Interaction} objects that describe any qualitative relationships among components, such as how IPTG and X-gal interact with the gene products. Finally, a \sbol{ModuleDefinition} object can point to a \sbol{Model} object that provides a reference to a complete computational model using a language such as SBML, CellML, Matlab, etc. Finally, all the of elements of the genetic design can be grouped together within a \sbol{Collection}. @@ -41,7 +42,7 @@ \section{Overview of SBOL} \end{figure} Whereas \ref{images:overview1} provides a broad overview of SBOL, \ref{images:overview2} provides a detailed, implementation-level overview of the class structure for the SBOL 2.0 data model. This figure relies on the semantics of the \emph{Unified Modeling Language} (UML), which will be presented in more detail in the next section. \ref{images:overview2} distinguishes between \emph{top level} classes, in green, and other supporting classes (note that \ref{images:overview1} also includes all of the top level classes). In \ref{images:overview2}, dashed arcs represent "refersTo", whereas a solid arrow represents ownership. In UML, the meaning of ownership is that if a parent class is deleted, so are all of its owned children. Thus, a \sbol{Collection} does not own its -\sbol{ComponentDefinition} objects, because these can stand on their own. All of the supporting classes (in orange) must be owned by some top-level class, directly or indirectly. +\sbol{ComponentDefinition} objects, because these can stand on their own. All of the supporting classes (in orange) have to be owned by some top-level class, directly or indirectly. % Figure~\ref{images:overview2} provides a more detailed view the the class structure for the SBOL 2.0 data model. The main, or \emph{top level} classes, are \sbol{Collection}, \sbol{ComponentDefinition}, sbol{Sequence}, \sbol{ModuleDefinition}, and \sbol{Model}. The key distinction of these classes is that they can stand alone and be referenced by other top level objects (see the dashed arrows between the green boxes). The purpose of these classes is described above. Each of these classes is assisted in their purpose by several \emph{child} classes. The key distinction of a child object is that it is owned by its parent object, and if that parent object is removed, so is the child object. This ownership is indicated using the solid arrows in the figure. For example, a \sbol{ComponentDefinition} owns its \sbol{SequenceAnnotation}s. @@ -55,7 +56,7 @@ \section{Overview of SBOL} \ref{images:overview2} additionally shows that when it is possible to incorporate a single object into multiple parents, we always incorporate that object by reference. We do not directly incorporate it by copy, because when an object is used many times, keeping many copies becomes spatially inefficient and difficult to maintain. Instead, each reference is handled by a pointer object. -Pointers refer from a parent to a child. There are three distinct pointer classes: \sbol{Component}, \sbol{Module}, and \sbol{FunctionalComponent}. A \sbol{Component} points from a \sbol{ComponentDefinition} to a child \sbol{ComponentDefinition}, incorporating it by reference into the parent structure. A \sbol{Module} points from a \sbol{ModuleDefinition} to a child \sbol{ModuleDefinition}, likewise incorporating the child by reference into the parent system. Similarly, a parent \sbol{ModuleDefinition} on the functional side of a model may incorporate a child \sbol{ComponentDefinition} from the model's physical side by means of a \sbol{FunctionalComponent} reference. These three pointer classes allow the efficient reuse of definitions in multiple locations. +Pointers refer from a parent to a child. There are three distinct pointer classes: \sbol{Component}, \sbol{Module}, and \sbol{FunctionalComponent}. A \sbol{Component} points from a \sbol{ComponentDefinition} to a child \sbol{ComponentDefinition}, incorporating it by reference into the parent structure. A \sbol{Module} points from a \sbol{ModuleDefinition} to a child \sbol{ModuleDefinition}, likewise incorporating the child by reference into the parent system. Similarly, a parent \sbol{ModuleDefinition} on the functional side of a model might incorporate a child \sbol{ComponentDefinition} from the model's physical side by means of a \sbol{FunctionalComponent} reference. These three pointer classes allow the efficient reuse of definitions in multiple locations. % Mike Bissell - I rewrote the first half of the paragraph that used to live here per Chris Myers's request. Please review my changes. (Also, could somebody please fix the right alignment?) Rationale: the old version did not have a single theme, and it obscured what is essentially a simple pattern. This edit prompted the insertion of extra verbiage re: the three "pointer classes" above, in section 5.2. I also eliminated two out of the three transitions using "finally" or "final," because only one item can come last. SBOL 2.0 provides a few helper classes. \sbol{Location} generalizes the positioning information from SBOL 1.1 to allow discontinuous ranges and cuts to be annotated. \sbol{SequenceConstraint} generalizes the relative positioning information among \sbol{Component}s. diff --git a/practices.tex b/practices.tex index 72f9d158..e19a2dca 100644 --- a/practices.tex +++ b/practices.tex @@ -4,11 +4,13 @@ \section{Recommended Best Practices} % ----------------------------------------------------------------------------- \subsection{Use of the Version Property} -Once an SBOL object has been published where others might have access it (e.g., to an online repository), it may be the case that other objects come to depend on the particular contents of the published object. Thus, in order to avoid creating conflicting data, if a person wants to change the properties of a published object, they SHOULD do so by making a new copy of object that incorporates the change and has an \sbol{identity} property that contains a new \sbol{URI}. +Once an SBOL object has been published where others might have access it (e.g., to an online repository), it might be the case that other objects come to depend on the particular contents of the published object. +Thus, in order to avoid creating conflicting data, if a person wants to change the properties of a published object, they SHOULD do so by making a new copy of object that incorporates the change and has an \sbol{identity} property that contains a new \sbol{URI}. The relationship between the old and new objects (i.e., that the new object was derived from the old object), however, is not visible unless it is explicitly declared. This is RECOMMENDED to be done using the \sbol{persistentIdentity}, and \sbol{version} properties. The preferred practice for declaring such a relationship is to use the same \sbol{persistentIdentity} for both objects, but give the newer object a later \sbol{version}. Then, when the new object is published, it can be clear to both humans and machines that this object is intended to update the previously published object. In this way, when a user wants the latest version of an object, they can obtain it by referencing the object via its \sbol{persistentIdentity} and rely on a tool to find the object with that \sbol{persistentIdentity} and the latest \sbol{version}. -As stated in \ref{sec:version}, it is RECOMMENDED that version numbering should follow the conventions of semantic versions (\url{http://semver.org/}), particularly as implemented by Maven (\url{http://maven.apache.org/}). This convention represents versions as sequences of numbers and qualifiers separated by the characters {\tt .} and {\tt -} and compared in lexicographical order (for example, 1 < 1.3.1 < 2.0-beta). For a full explanation, see the linked resources. +As stated in \ref{sec:version}, it is RECOMMENDED that version numbering follow the conventions of semantic versions (\url{http://semver.org/}), particularly as implemented by Maven (\url{http://maven.apache.org/}). +This convention represents versions as sequences of numbers and qualifiers separated by the characters {\tt .} and {\tt -} and compared in lexicographical order (for example, 1 < 1.3.1 < 2.0-beta). For a full explanation, see the linked resources. \subsection{Compliant SBOL Objects} \label{sec:compliant} @@ -48,7 +50,7 @@ \subsection{Annotations: Embedded Objects vs. External References} \subsection{Completeness and Validation} -RDF documents containing serialized SBOL objects may or may not be +RDF documents containing serialized SBOL objects might or might not be entirely self-contained. A SBOL document is self-contained or ``complete'' if every SBOL object referred to in the document is contained in the document. It is RECOMMENDED that serializations be complete whenever practical. In order words, when serializing an SBOL object, serialize all of the other objects that it points to, then serialize all of the other objects that these objects point to, etc., until the document is complete. It is important to note that there is no guarantee that an RDF document diff --git a/purpose.tex b/purpose.tex index f6cf9ac5..df52da4a 100644 --- a/purpose.tex +++ b/purpose.tex @@ -3,16 +3,16 @@ \section{Purpose} % ----------------------------------------------------------------------------- % Synthetic biology aims to apply engineering principles such as standardization, modularity, and design abstraction to molecular biology. However, synthetic biology still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. -% The Synthetic Biology Open Language is intended to help synthetic biologists collaborate by allowing them to exchange designs in a standardized data format. In addition, the SBOL data model systematically describes the essential details of a design that are required for researchers to reproduce each other's designs in the laboratory. The purpose of the Synthetic Biology Open Language is to aid collaboration between researchers, improve scientific reproducibility, and to speed the research and development of technologies based on synthetic biology. +% The Synthetic Biology Open Language is intended to help synthetic biologists collaborate by allowing them to exchange designs in a standardized data format. In addition, the SBOL data model systematically describes the essential details of a design that are needed for researchers to reproduce each other's designs in the laboratory. The purpose of the Synthetic Biology Open Language is to aid collaboration between researchers, improve scientific reproducibility, and to speed the research and development of technologies based on synthetic biology. Synthetic biology builds upon the techniques and successes of genetics, molecular biology, and metabolic engineering by applying engineering principles to the design of biological systems. These principles include standardization, modularity, and design abstraction. The field still faces substantial challenges, including long development times, high rates of failure, and poor reproducibility. A common factor of these challenges is the exchange of information about designed systems between laboratories. When designing a synthetic system, synthetic biologists need to exchange information about multiple types of molecules and their expected behavior in the design. -Furthermore, there are often multiple degrees of separation between a specified nucleic acid sequence (e.g., a sequence that encodes an enzyme or transcription factor) and the molecular interactions that a designer intends to result from said sequence (e.g., chemical modification of metabolites or regulation of gene expression), yet these different perspectives must be connected together in the engineering of biological systems. +Furthermore, there are often multiple degrees of separation between a specified nucleic acid sequence (e.g., a sequence that encodes an enzyme or transcription factor) and the molecular interactions that a designer intends to result from said sequence (e.g., chemical modification of metabolites or regulation of gene expression), yet these different perspectives need to be connected together in the engineering of biological systems. The \emph{Synthetic Biology Open Language} (SBOL) has been developed as a standard to support the specification and exchange of biological design information in synthetic biology, filling a need not satisfied by other pre-existing standards. Previous nucleic acid sequence description formats lack key capabilities. For example, simple sequence encoding formats such as FASTA encode almost nothing about design rationale. More sophisticated formats such as GenBank and Swiss-Prot support a flat annotation of sequence features that is well suited to the description of natural systems, but is unable to represent the multi-layered design structure common to engineered systems. \ref{f:sequence} shows the relationship of selected prior sequence description formats to SBOL 1.1 and SBOL 2.0. -Modelling languages, such as the Systems Biology Markup Language (SBML) ~\cite{SBML} can be used represent biological processes, but are not sufficient to represent the associated nucleotide or amino acid sequences. %Goksel: Commented this sentence: Kinetic information may be present in SBML~\cite{SBML} or mass conservation laws in other systems such as the COBRA Toolbox~\cite{COBRA}. +Modelling languages, such as the Systems Biology Markup Language (SBML) ~\cite{SBML} can be used represent biological processes, but are not sufficient to represent the associated nucleotide or amino acid sequences. %Goksel: Commented this sentence: Kinetic information might be present in SBML~\cite{SBML} or mass conservation laws in other systems such as the COBRA Toolbox~\cite{COBRA}. Synthetic biology needs a structured standard that defines how to represent relevant molecules and their functional roles within a designed system, standardized rules on how such information is encoded in a file format, and software libraries to enable the exchange of such data between participating laboratories and as part of the publication process. %Goksel: Updated the sentence as above:Systems Biology Markup Language (SBML) represents reactions, pathways, and models, but does not typically represent the associated sequences. @@ -51,7 +51,7 @@ \section{Purpose} \begin{itemize} \item Critical data related to the reproducibility of designs. These include what growth media was used, what temperature the organisms were grown at, or where the recombinant DNA was integrated into the host genome or a plasmid. -\item Tool specific data. These could include tool settings specific to the design that is being loaded, such as which windows should be opened or which settings should be initialized. Tool makers could also include encrypted proprietary information related to a company or client in an extension. +\item Tool specific data. These could include tool settings specific to the design that is being loaded, such as which windows are to be opened or which settings are to be initialized. Tool makers could also include encrypted proprietary information related to a company or client in an extension. \item Data that are non-essential for reproducibility but are nevertheless useful to many users. There are many cases where specific communities of users require data that cannot be explicitly represented using the SBOL data model. These include data on visualization, evolutionary stability, or other . \end{itemize} @@ -60,13 +60,14 @@ \section{Purpose} % To address the need for functional descriptions in SBOL, the proposed data model adds new classes to provide a firm basis for functional representation in SBOL without going so far as to create a new standard for mathematically modeling biology, as there already exist several established languages for doing so, from the SBML to CellML~\cite{CellML} and even MatLab~\cite{matlab}. Rather, these classes enable users of SBOL to group components that function together, describe the basic qualitative interactions between these components, and document references to standard mathematical models that are external to SBOL and that provide more detailed descriptions of component function. In other words, a module definition gathers together a set of component instantiations, a set of interactions between these component instantiations, and a set of references to external models that are expected to be consistent with the module's interactions. The SBOL 2.0 specification also adds a number of measures to simplify adoption and validation of compatibility with the standard. -First, unlike the SBOL 1.1 specification, the SBOL 2.0 specification explicitly incorporates the primary serialization format for its data model to better show how the standard can be used. Second, the specification includes a set of validation rules for determining the compatibility of a document with SBOL 2.0, most of which are machine-verifiable. Finally, the specification includes a set of recommended best practices that should allow software tools to take best advantage of the standard and effectively exchange data. +First, unlike the SBOL 1.1 specification, the SBOL 2.0 specification explicitly incorporates the primary serialization format for its data model to better show how the standard can be used. Second, the specification includes a set of validation rules for determining the compatibility of a document with SBOL 2.0, most of which are machine-verifiable. Finally, the specification includes a set of recommended best practices that can allow software tools to take best advantage of the standard and effectively exchange data. In addition, care has been taken to ensure that SBOL 2.0 is backwards-compatible with previous versions. While the changes made in SBOL 2.0 do mean that a SBOL 1.x file is not a valid SBOL 2.0 file, there does exist a direct mapping from the SBOL 1.x data model to the SBOL 2.0 data model, making it possible to automatically convert any SBOL 1.x file to an SBOL 2.0 file. % Goksel - Removed this sentence:Therefore, SBOL 2.0 supersedes SBOL 1.1, and developers are encouraged to use it for all new software efforts. Since SBOL 2.0 can encode all data previously encoded in SBOL 1.1, developers are encouraged to upgrade their SBOL 1.1 compliant software tools to use SBOL 2.0 software libraries. -Lastly, the SBOL standard has been developed in collaboration between both ``wet'' bench scientists and ``dry'' scientific modelers and software developers that are active within the synthetic biology community. As before with SBOL version 1.1, this open community has met to discuss and agree upon the data exchange needs that version 2.0 of the SBOL standard should address. +Lastly, the SBOL standard has been developed in collaboration between both ``wet'' bench scientists and ``dry'' scientific modelers and software developers that are active within the synthetic biology community. +As before with SBOL version 1.1, this open community has met to discuss and agree upon the data exchange needs that version 2.0 of the SBOL standard is intended to address. These discussions have informed the efforts of developers within the community to produce a SBOL 2.0 specification after several rounds of proposal and revision. This specification has been evaluated by the community for its ability to represent a wide range of synthetic biology designs and share these designs between different laboratories. This specification has also informed the development of software libraries that implement the standard, and software tools that employ the standard by means of these libraries, thereby providing further testing of SBOL 2.0. The publication of this specification is intended to make these capabilities more widely accessible to potential developers and users in the synthetic biology community and beyond. \ No newline at end of file diff --git a/sbol2.tex b/sbol2.tex index 1a6f38dd..3f216d65 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -274,7 +274,7 @@ \section{...} \item[draftspec] This option causes the front page of the document to contain the word ``DRAFT'' in large gray letters, and the footer of every page of - the document to contain the word ``(DRAFT)''. Authors should use this + the document to contain the word ``(DRAFT)''. Authors can use this option until such time as the specification document is considered a release candidate or a final release. @@ -285,7 +285,7 @@ \section{...} \item[\hspace*{6.5pt}\vSymbol\vsp] A \vSymbolName indicates a \emph{requirement} for conformance. If a model fails to follow this rule, it does not conform to the specification. (Mnemonic intention behind the - choice of symbol: ``This must be checked.'') + choice of symbol: ``This MUST be checked.'') \item[\hspace*{6.5pt}\cSymbol\csp] A \cSymbolName indicates a \emph{recommendation} for model consistency. If a model does not follow diff --git a/serialization.tex b/serialization.tex index f53f2602..12e6619c 100644 --- a/serialization.tex +++ b/serialization.tex @@ -6,18 +6,20 @@ \section{SBOL RDF Serialization} In order for SBOL objects to be readily stored and exchanged, it is important that they are able to be {\em serialized}, i.e., converted to a sequence of bytes that can be stored in a file or exchanged over a network. The serialization format for SBOL is designed to meet several competing requirements. First, SBOL needs to support ad-hoc annotations and extensions. Second, SBOL needs to support processing by general database and semantic web software tools that have little or no knowledge of the SBOL data model. -Finally, it should be relatively simple to write a new software implementation, so that SBOL can be readily used even in software environments where community-maintained implementations are not available. +Finally, it ought to be relatively simple to write a new software implementation, so that SBOL can be readily used even in software environments where community-maintained implementations are not available. To meet these goals, the canonical serialization of SBOL has been selected to be a strict dialect of RDF/XML~\cite{rdfxml}, a syntactic standard defined for Semantic Web data exchange. This serialization provides a standard base from which to meet further requirements. Moreover, it allows any RDF/XML-aware software tool to consume and operate on an SBOL file without needing any customization to support SBOL. Where possible, we have re-used predicates from widely-used terminologies (such as Dublin Core~\cite{dcmi2012}) to expose as much of the data as practical to such standard RDF tooling. Arbitrary RDF/XML, however, provides a sometimes problematically large amount of flexibility in how equivalent data can be serialized. This flexibility can result in different serializations when processing RDF/XML files using standard off-the-shelf XML tools, such as DOM-OO mappings. -To address this issue, we define a canonical association between the nesting of data structures within the SBOL UML data model and the RDF/XML file. For all ownership associations (filled diamonds), the RDF/XML for the owned entity is embedded within the owner's RDF/XML (note, however, that the property values may be listed in any order). +To address this issue, we define a canonical association between the nesting of data structures within the SBOL UML data model and the RDF/XML file. +For all ownership associations (filled diamonds), the RDF/XML for the owned entity is embedded within the owner's RDF/XML (note, however, that the property values MAY be listed in any order). For all associations that are by reference (open diamonds), the RDF/XML for the referenced property is linked via a resource \sbol{URI}. For example, the serialization of a \sbol{ComponentDefinition} embeds the serializations of the \sbol{SequenceConstraint} and \sbol{Component} objects associated with it. Those \sbol{SequenceConstraint} objects, however, link to the \sbol{Component} objects with a \sbol{URI} rather than embedding another copy. -Every SBOL document must be a valid RDF/XML document. Accordingly, each SBOL document starts with an XML declaration that has its XML version set to ``1.0.'' As shown in the example below, this declaration is then followed by an \external{rdf:RDF} XML element that includes the namespace declarations for RDF, Dublin Core, PROV, and SBOL. The SBOL namespace, which is \url{http://sbols.org/v2#}, is used to indicate which entities and properties in the SBOL document are defined by SBOL, and MUST NOT be used for any entities or properties not defined in this specification. +Every SBOL document MUST be a valid RDF/XML document. +Accordingly, each SBOL document starts with an XML declaration that has its XML version set to ``1.0.'' As shown in the example below, this declaration is then followed by an \external{rdf:RDF} XML element that includes the namespace declarations for RDF, Dublin Core, PROV, and SBOL. The SBOL namespace, which is \url{http://sbols.org/v2#}, is used to indicate which entities and properties in the SBOL document are defined by SBOL, and MUST NOT be used for any entities or properties not defined in this specification. \label{xml-namespace} \lstsetsbol @@ -35,14 +37,14 @@ \section{SBOL RDF Serialization} All of the data types that are \sbol{TopLevel} are so named because they always appear at the top-most level of the RDF/XML serialization. All other data types will always appear nested within their parent container and, ultimately, some \sbol{TopLevel} object. For example, a \sbol{ComponentDefinition} is a \sbol{TopLevel} and therefore listed at the top-most level of the RDF/XML serialization, and contains its \sbol{SequenceConstraint} objects, since they are not \sbol{TopLevel}. Its \sbol{Sequence}, however, is also \sbol{TopLevel} and is therefore not nested within and instead linked via a \sbol{URI}. -Each instance of a first-class SBOL datatype may also have annotations attached, as described in \ref{sec:Annotations}. These annotations are composed of a name and a value. They are serialized to RDF as a conceptual triple with the subject being the identity of the instance they annotate, the predicate being the name of the annotation, and the object being the value of that annotation. Annotation values are always nested within the RDF/XML serialization of the instance that they annotate. +Each instance of a first-class SBOL datatype MAY have annotations attached, as described in \ref{sec:Annotations}. These annotations are composed of a name and a value. They are serialized to RDF as a conceptual triple with the subject being the identity of the instance they annotate, the predicate being the name of the annotation, and the object being the value of that annotation. Annotation values are always nested within the RDF/XML serialization of the instance that they annotate. For example, a \sbol{ModuleDefinition} might add a DOI annotation that links to the scientific article that first described the system that it represents. -SBOL also supports top-level, user-defined data, again as described in \ref{sec:Annotations}. This is to allow non-standardized but necessary information to be carried around as part of a design. For example, a particular sub-community may have an internal standard for genetic device characterization data sheets. +SBOL also supports top-level, user-defined data, again as described in \ref{sec:Annotations}. This is to allow non-standardized but necessary information to be carried around as part of a design. For example, a particular sub-community might have an internal standard for genetic device characterization data sheets. Such data can be represented as a \sbol{GenericTopLevel} object with internal structured annotations. For example, each individual data sheet might be contained in its own \sbol{GenericTopLevel} instance. This custom data is serialized into the RDF/XML in the usual way, as an RDF/XML block at the top level of the file. -Other objects may refer to this entity through their annotations by reference, and this generic top-level entity may refer to other entities via references. +Other objects can refer to this entity through their annotations by reference, and this generic top-level entity can refer to other entities via references. For example, a \sbol{ModuleDefinition} might use an annotation to refer to the data sheet \sbol{GenericTopLevel} that documents its properties. By adopting this paradigm of RDF/XML serialization, SBOL is able to adapt to future changes in the standard without requiring large-scale alterations to the RDF files. Since exactly the same scheme is used to serialize annotations as is used to serialize specification-defined properties and associations, it is possible to update the SBOL standard to recognize a different range of properties and associations. Those properties not recognized by the specification will always be available through the API as annotations. Similarly, by allowing arbitrary top-level entities in a SBOL file, we enable future specifications or extensions to ratify the structure of other top-level objects. These entities would then become part of the explicit data model, but the identical RDF serialization would be used. Applications lacking support for a given extension can safely read in, manipulate, and write out the top-level data that is not understood, treating it as a top-level structured annotation, without data loss or corruption. Finally, the very regimented control of nesting versus referencing also allows the XML structure to be very predictable, enabling XML/DOM-based tooling to work with SBOL RDF/XML files safely. \ No newline at end of file diff --git a/vocabulary.tex b/vocabulary.tex index 56548cbb..23ecf16b 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -61,8 +61,8 @@ \subsection{SBOL Class Names} Describes a functional relationship between biological entities, such as regulatory activation or repression, or a biological process such as transcription or translation. \item \emph{\sbol{MapsTo}}: -When a design (\sbol{ComponentDefinition} or \sbol{ModuleDefinition}) includes another design as a sub-design, the parent design may need to refer to a \sbol{ComponentInstance} (either a \sbol{Component} or \sbol{FunctionalComponent}) in the sub-design. -In this case, a \sbol{MapsTo} needs to be added to the instance for the sub-design, and this \sbol{MapsTo} must link between the \sbol{ComponentInstance} in the sub-design and a \sbol{ComponentInstance} in the parent design. +When a design (\sbol{ComponentDefinition} or \sbol{ModuleDefinition}) includes another design as a sub-design, the parent design might need to refer to a \sbol{ComponentInstance} (either a \sbol{Component} or \sbol{FunctionalComponent}) in the sub-design. +In this case, a \sbol{MapsTo} needs to be added to the instance for the sub-design, and this \sbol{MapsTo} needs to link between the \sbol{ComponentInstance} in the sub-design and a \sbol{ComponentInstance} in the parent design. \item \emph{\sbol{Module}}: Pointer class. Incorporates a child \sbol{ModuleDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of a subsystem within the design of a larger system. Because the same definition in multiple designs or multiple times in a single design, a single \sbol{ModuleDefinition} may have zero or more parent \sbol{ModuleDefinition}s, and each such parent-child link requires its own, distinct \sbol{Module}. From cd03f74f39e18f0e6b671b66bda63536d3c0fff5 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Fri, 31 Jul 2015 18:46:49 -0500 Subject: [PATCH 311/317] all controlled vocabulary words capitalized or reworded --- vocabulary.tex | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/vocabulary.tex b/vocabulary.tex index 23ecf16b..e57ef68c 100644 --- a/vocabulary.tex +++ b/vocabulary.tex @@ -10,8 +10,8 @@ \subsection{Term Conventions} \begin{itemize} \item The words "MUST", "REQUIRED", or "SHALL" mean that the item is an absolute requirement. \item The phrases "MUST NOT" or "SHALL NOT" mean that the item is an absolute prohibition. -\item The word "SHOULD" or the adjective "RECOMMENDED" mean that there may exist valid reasons in particular circumstances to ignore a particular item, but the full implications must be understood and carefully weighed before choosing a different course. -\item The phrases "SHOULD NOT" or "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label. +\item The word "SHOULD" or the adjective "RECOMMENDED" mean that there might exist valid reasons in particular circumstances to ignore a particular item, but the full implications need to be understood and carefully weighed before choosing a different course. +\item The phrases "SHOULD NOT" or "NOT RECOMMENDED" mean that there might exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications needs to be understood and the case carefully weighed before implementing any behavior described with this label. \item The word "MAY" or the adjective "OPTIONAL" mean that an item is truly optional. \end{itemize} @@ -28,15 +28,15 @@ \subsection{SBOL Class Names} \begin{itemize} \item \emph{\sbol{Component}}: -Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ComponentDefinition}. Represents a specific occurrence or instance of an entity within the design of a more complex entity. Because the same definition may appear in multiple designs or multiple times in a single design, a single \sbol{ComponentDefinition} may have zero or more parent \sbol{ComponentDefinition}s, and each such parent-child link requires its own, distinct \sbol{Component}. -% Mike Bissell - Clarified the role of this class to match changes below in section six. Introduced the term "pointer class" after consulting briefly with Chris M. The emphasis on pointer classes is on the definitions they point to. WAS: "Represents a specific occurrence or instance of a single entity within the design of a more complex component. Each Component is associated with a ComponentDefinition, and there may be many different instances at different locations in a design that share the same definition." I felt this was necessary because it is too easy for a novice to get confused about Component vs. ComponentDefinition here, where they first encounter Component, even before ComponentDefinition is defined. +Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ComponentDefinition}. Represents a specific occurrence or instance of an entity within the design of a more complex entity. Because the same definition might appear in multiple designs or multiple times in a single design, a single \sbol{ComponentDefinition} can have zero or more parent \sbol{ComponentDefinition}s, and each such parent-child link requires its own, distinct \sbol{Component}. +% Mike Bissell - Clarified the role of this class to match changes below in section six. Introduced the term "pointer class" after consulting briefly with Chris M. The emphasis on pointer classes is on the definitions they point to. WAS: "Represents a specific occurrence or instance of a single entity within the design of a more complex component. Each Component is associated with a ComponentDefinition, and there might be many different instances at different locations in a design that share the same definition." I felt this was necessary because it is too easy for a novice to get confused about Component vs. ComponentDefinition here, where they first encounter Component, even before ComponentDefinition is defined. \item \emph{\sbol{Location}}: Specifies the base coordinates and orientation of a genetic feature on a DNA or RNA molecule or a residue or site on another sequential macromolecule such as a protein. \item \emph{\sbol{SequenceAnnotation}}: -Describes the \sbol{Location} of a notable sub-sequence found within the \sbol{Sequence} of a \sbol{ComponentDefinition}. Optionally links to and effectively positions a child \sbol{Component}. -% Mike Bissell - Reworded for clarity of the relationship between ComponentDefinition and Sequence. Broke the original paragraph into two sentences for simplicity. Reworded second sentence to emphasize that a Component is a) a child entity, and b) a link (pointer). Old wording was vague on Component's job within SequenceAnnotation, and old wording made it sound as if the Component was the payload itself, rather than just a reference. WAS: "Describes the Location of a notable sub-sequence found within the Sequence linked to a ComponentDefinition, with an optional link to a Component." +Describes the \sbol{Location} of a notable sub-sequence found within the \sbol{Sequence} of a \sbol{ComponentDefinition}. Can also link to and effectively position a child \sbol{Component}. +% Mike Bissell - Reworded for clarity of the relationship between ComponentDefinition and Sequence. Broke the original paragraph into two sentences for simplicity. Reworded second sentence to emphasize that a Component is a) a child entity, and b) a link (pointer). Old wording was vague on Component's job within SequenceAnnotation, and old wording made it sound as if the Component was the payload itself, rather than just a reference. WAS: "Describes the Location of a notable sub-sequence found within the Sequence linked to a ComponentDefinition, with an option al link to a Component." \item \emph{\sbol{SequenceConstraint}}: Describes the relative spatial position and orientation of two \sbol{Component} objects that are contained within the same \sbol{ComponentDefinition}. @@ -46,15 +46,15 @@ \subsection{SBOL Class Names} Represents a data container that can contain custom data added by user applications. \item \emph{\sbol{Model}}: -Links to quantitative or qualitative computational models that may be used to predict the functional behavior of a biological design. -%Goksel - Updated as above: Links an SBOL representation of biological components and their interactions to quantitative, computational models that may be used to predict the functional behavior of a biological design. +Links to quantitative or qualitative computational models that might be used to predict the functional behavior of a biological design. +%Goksel - Updated as above: Links an SBOL representation of biological components and their interactions to quantitative, computational models that might be used to predict the functional behavior of a biological design. \item \emph{\sbol{ModuleDefinition}}: Describes a ``system'' design as a collection of biological components and their functional relationships. \begin{itemize} \item \emph{\sbol{FunctionalComponent}}: -Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of an entity within the design of a system. Because the same definition may appear in multiple designs or multiple times in a single design, a single \sbol{ComponentDefinition} may have zero or more parent \sbol{ModuleDefinition}s, and each such parent-child link requires its own, distinct \sbol{FunctionalComponent}. +Pointer class. Incorporates a child \sbol{ComponentDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of an entity within the design of a system. Because the same definition might appear in multiple designs or multiple times in a single design, a single \sbol{ComponentDefinition} can have zero or more parent \sbol{ModuleDefinition}s, and each such parent-child link requires its own, distinct \sbol{FunctionalComponent}. % Mike Bissell - As above, reworded to clarify the structure of these relationships, with special attention to the pointer-like nature of this type. WAS: "Represents a specific occurrence or instance of an ComponentDefinition within a ModuleDefinition. Exactly like a Component, except that it can be associated with information about its context of use in the Module, rather than in the context of a containing ComponentDefinition." I eliminated the bit about it being "exactly like... except," because with those exceptions, the likeness is *inexact*. Instead, I deliberately reworked the paragraph's phrasing and contents to emphasize this class's similarity to the other two pointer classes. I felt this was necessary because it is easy for a novice to get confused about FunctionalComponent vs. Component vs. ComponentDefinition in this context. \item \emph{\sbol{Interaction}}: @@ -65,8 +65,8 @@ \subsection{SBOL Class Names} In this case, a \sbol{MapsTo} needs to be added to the instance for the sub-design, and this \sbol{MapsTo} needs to link between the \sbol{ComponentInstance} in the sub-design and a \sbol{ComponentInstance} in the parent design. \item \emph{\sbol{Module}}: -Pointer class. Incorporates a child \sbol{ModuleDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of a subsystem within the design of a larger system. Because the same definition in multiple designs or multiple times in a single design, a single \sbol{ModuleDefinition} may have zero or more parent \sbol{ModuleDefinition}s, and each such parent-child link requires its own, distinct \sbol{Module}. -% Mike Bissell - Reworked this paragraph like I did for Component and FunctionalComponent (see above). WAS: "Represents a specific occurrence or instance of a sub-system within a larger design. Each Module is associated with a ModuleDefinition, and there may be many different instances at different locations in a design that share the same definition." I felt this was necessary because it is way too easy for a novice to get confused about Module vs. ModuleDefinition in this (introductory) context. +Pointer class. Incorporates a child \sbol{ModuleDefinition} \textit{by reference} into exactly one parent \sbol{ModuleDefinition}. Represents a specific occurrence or instance of a subsystem within the design of a larger system. Because the same definition in multiple designs or multiple times in a single design, a single \sbol{ModuleDefinition} can have zero or more parent \sbol{ModuleDefinition}s, and each such parent-child link requires its own, distinct \sbol{Module}. +% Mike Bissell - Reworked this paragraph like I did for Component and FunctionalComponent (see above). WAS: "Represents a specific occurrence or instance of a sub-system within a larger design. Each Module is associated with a ModuleDefinition, and there might be many different instances at different locations in a design that share the same definition." I felt this was necessary because it is way too easy for a novice to get confused about Module vs. ModuleDefinition in this (introductory) context. \item \emph{\sbol{Participation}}: Describes the role that a \sbol{FunctionalComponent} plays in an \sbol{Interaction}. From ebd6dec4ba187f58bb4143b67eca5c25c94a192e Mon Sep 17 00:00:00 2001 From: jakebeal Date: Fri, 31 Jul 2015 19:00:10 -0500 Subject: [PATCH 312/317] spell-checking complete --- apdx-validation.tex | 4 ++-- examples_model.tex | 2 +- model.tex | 4 ++-- serialization.tex | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apdx-validation.tex b/apdx-validation.tex index 2c0209de..fd18982d 100644 --- a/apdx-validation.tex +++ b/apdx-validation.tex @@ -11,7 +11,7 @@ \section{Validation Rules} There are different degrees of rule strictness. Rules of the former kind are strict SBOL validation rules---data encoded in SBOL MUST conform to all of them in order to be considered valid. Rules of the latter kind -are consistency rules that SBOL data are RECOMENDED to adhere to as a best practice. To help highlight these differences, we use the +are consistency rules that SBOL data are RECOMMENDED to adhere to as a best practice. To help highlight these differences, we use the following symbols next to the rule numbers: \begin{description} @@ -38,7 +38,7 @@ \section{Validation Rules} be none), this section is considered authoritative for the purpose of determining the validity of an SBOL document. -For \notice convenience and brievity, we use the shorthand +For \notice convenience and brevity, we use the shorthand ``\token{sbol:x}'' to stand for an attribute or element name \token{x} in the namespace for the SBOL specification, using the namespace prefix \token{sbol}. In reality, the prefix string can be different from the literal ``\token{sbol}'' used here (and indeed, it can be any valid XML namespace prefix that the software diff --git a/examples_model.tex b/examples_model.tex index d29a5a00..e3e9c8df 100644 --- a/examples_model.tex +++ b/examples_model.tex @@ -40,7 +40,7 @@ \section{Data Model Examples} \begin{figure}[ht] \begin{center} \includegraphics[width=\textwidth]{example_uml/toggle_1} -\caption[]{\sbol{ComponentDefinition} objects for the LacI inverter. These include \sbol{ComponentDefinition} objects based on DNA parts from the iGEM Parts Registry and \sbol{ComponentDefinition} objectss that represent TetR mRNA, TetR, LacI, and IPTG. Each \sbol{ComponentDefinition} is associated with a \sbol{Sequence} that has an \external{IUPAC DNA/RNA} or \external{IUPAC protein} \sbol{encoding}, except the \sbol{ComponentDefinition} of IPTG, which is associated with a \sbol{Sequence} that has a \external{SMILES} \sbol{encoding}.} +\caption[]{\sbol{ComponentDefinition} objects for the LacI inverter. These include \sbol{ComponentDefinition} objects based on DNA parts from the iGEM Parts Registry and \sbol{ComponentDefinition} objects that represent TetR mRNA, TetR, LacI, and IPTG. Each \sbol{ComponentDefinition} is associated with a \sbol{Sequence} that has an \external{IUPAC DNA/RNA} or \external{IUPAC protein} \sbol{encoding}, except the \sbol{ComponentDefinition} of IPTG, which is associated with a \sbol{Sequence} that has a \external{SMILES} \sbol{encoding}.} \label{uml:ex_comp_defs} \end{center} \end{figure} diff --git a/model.tex b/model.tex index 58c3a0b6..74cc4564 100644 --- a/model.tex +++ b/model.tex @@ -423,7 +423,7 @@ \subsubsection*{The \sbolheading{sequenceConstraints} property} \label{sec:sequenceConstraints} The \sbol{sequenceConstraints} property is OPTIONAL and MAY contain a set of \sbol{SequenceConstraint} objects. These objects describe any restrictions on the relative, sequence-based positions and/or orientations of the \sbol{Component} objects contained by the \sbol{ComponentDefinition}. -For example, the \sbol{ComponentDefinition} of a gene might specify that the position of its promoter \sbol{Component} precedes that of its CDS \sbol{Component}. This is particulary useful when a \sbol{ComponentDefinition} lacks a \sbol{Sequence} and therefore cannot specify the precise, sequence-based positions of its \sbol{Component} objects using \sbol{SequenceAnnotation} objects. +For example, the \sbol{ComponentDefinition} of a gene might specify that the position of its promoter \sbol{Component} precedes that of its CDS \sbol{Component}. This is particularly useful when a \sbol{ComponentDefinition} lacks a \sbol{Sequence} and therefore cannot specify the precise, sequence-based positions of its \sbol{Component} objects using \sbol{SequenceAnnotation} objects. \subsubsection*{Serialization} The serialization of a \sbol{ComponentDefinition} MUST have the form below. @@ -593,7 +593,7 @@ \subsubsection{MapsTo} \begin{figure}[ht] \begin{center} \includegraphics[scale=1]{images/MapsTo_Diagram3} -\caption{Linking \sbol{Component} objects using \sbol{MapsTo} entities. Boxes with diagrams represent \sbol{ComponentDefinition} objects, boxes with the C label represent \sbol{Component} objects, and boxes with the M label represent \sbol{MapsTo} objects. In both diagrams, a promoter-RBS \sbol{ComponentDefinition} and a RBS-CDS \sbol{ComponentDefinition} are being composed to form the \sbol{ComponentDefinition} of a complete transcriptional unit. In the lefthand diagram, the two \sbol{Component} objects inside the promoter-RBS \sbol{ComponentDefinition} and RBS-CDS \sbol{ComponentDefinition} objects both refer to an abstract RBS \sbol{ComponentDefinition} that lacks a sequence (white semicircle). Through the use of \sbol{MapsTo} objects with \sbol{refinement} set to useLocal, these ``lower level'' \sbol{ComponentDefinition} objects are effectively overridden by that of the green RBS in the \sbol{ComponentDefinition} of the complete transcriptional unit. In the righthand diagram, however, the two ``lower level'' RBS \sbol{ComponentDefinition} objects do not lack sequences and it is the ``higher level'' RBS \sbol{ComponentDefinition} that is abstract. In this case, one of the \sbol{MapsTo} objects has a useRemote \sbol{refinement}, resulting in the green RBS \sbol{ComponentDefinition} overriding that of the abstract RBS in the ``higher level'' \sbol{ComponentDefinition}.} +\caption{Linking \sbol{Component} objects using \sbol{MapsTo} entities. Boxes with diagrams represent \sbol{ComponentDefinition} objects, boxes with the C label represent \sbol{Component} objects, and boxes with the M label represent \sbol{MapsTo} objects. In both diagrams, a promoter-RBS \sbol{ComponentDefinition} and a RBS-CDS \sbol{ComponentDefinition} are being composed to form the \sbol{ComponentDefinition} of a complete transcriptional unit. In the left-hand diagram, the two \sbol{Component} objects inside the promoter-RBS \sbol{ComponentDefinition} and RBS-CDS \sbol{ComponentDefinition} objects both refer to an abstract RBS \sbol{ComponentDefinition} that lacks a sequence (white semicircle). Through the use of \sbol{MapsTo} objects with \sbol{refinement} set to useLocal, these ``lower level'' \sbol{ComponentDefinition} objects are effectively overridden by that of the green RBS in the \sbol{ComponentDefinition} of the complete transcriptional unit. In the right-hand diagram, however, the two ``lower level'' RBS \sbol{ComponentDefinition} objects do not lack sequences and it is the ``higher level'' RBS \sbol{ComponentDefinition} that is abstract. In this case, one of the \sbol{MapsTo} objects has a useRemote \sbol{refinement}, resulting in the green RBS \sbol{ComponentDefinition} overriding that of the abstract RBS in the ``higher level'' \sbol{ComponentDefinition}.} \label{image:maps_to_diagram2} \end{center} \end{figure} diff --git a/serialization.tex b/serialization.tex index 12e6619c..b9ab002b 100644 --- a/serialization.tex +++ b/serialization.tex @@ -37,7 +37,7 @@ \section{SBOL RDF Serialization} All of the data types that are \sbol{TopLevel} are so named because they always appear at the top-most level of the RDF/XML serialization. All other data types will always appear nested within their parent container and, ultimately, some \sbol{TopLevel} object. For example, a \sbol{ComponentDefinition} is a \sbol{TopLevel} and therefore listed at the top-most level of the RDF/XML serialization, and contains its \sbol{SequenceConstraint} objects, since they are not \sbol{TopLevel}. Its \sbol{Sequence}, however, is also \sbol{TopLevel} and is therefore not nested within and instead linked via a \sbol{URI}. -Each instance of a first-class SBOL datatype MAY have annotations attached, as described in \ref{sec:Annotations}. These annotations are composed of a name and a value. They are serialized to RDF as a conceptual triple with the subject being the identity of the instance they annotate, the predicate being the name of the annotation, and the object being the value of that annotation. Annotation values are always nested within the RDF/XML serialization of the instance that they annotate. +Each instance of a first-class SBOL data type MAY have annotations attached, as described in \ref{sec:Annotations}. These annotations are composed of a name and a value. They are serialized to RDF as a conceptual triple with the subject being the identity of the instance they annotate, the predicate being the name of the annotation, and the object being the value of that annotation. Annotation values are always nested within the RDF/XML serialization of the instance that they annotate. For example, a \sbol{ModuleDefinition} might add a DOI annotation that links to the scientific article that first described the system that it represents. SBOL also supports top-level, user-defined data, again as described in \ref{sec:Annotations}. This is to allow non-standardized but necessary information to be carried around as part of a design. For example, a particular sub-community might have an internal standard for genetic device characterization data sheets. From 97f91a924f937654bc0820ea8558c48cbeebaa41 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Fri, 31 Jul 2015 21:16:18 -0500 Subject: [PATCH 313/317] remove draft watermark --- sbol2.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sbol2.tex b/sbol2.tex index 3f216d65..a13d62d0 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -1,4 +1,4 @@ -\documentclass[draftspec]{sbmlpkgspec} +\documentclass[]{sbmlpkgspec} \usepackage{microtype} \usepackage{color} @@ -315,4 +315,4 @@ \section{...} % * 2015-06-03T17:34:31.200Z: % % -% \ No newline at end of file +% From 30e0b7fbb85ce9951532a4a5eb81196a3f755538 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Sat, 1 Aug 2015 14:10:32 +0000 Subject: [PATCH 314/317] Update on Overleaf. --- sbol2.tex | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sbol2.tex b/sbol2.tex index 3f216d65..896656a8 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -1,4 +1,5 @@ -\documentclass[draftspec]{sbmlpkgspec} +\documentclass[finalspec]{sbmlpkgspec} +%% \documentclass[draftspec]{sbmlpkgspec} \usepackage{microtype} \usepackage{color} @@ -103,14 +104,15 @@ \packageVersion{Version 2.0.0} \packageVersionDate{July 31, 2015} -\title{BBF RFC \rfcnum{}: Synthetic Biology Open Language \texorpdfstring{\\[3pt]}{}\mbox{(SBOL) Version~2.0.0}} +% BBF RFC \rfcnum{}: +\title{Synthetic Biology Open Language \texorpdfstring{\\[3pt]}{}\mbox{(SBOL) Version~2.0.0}} \author{{\bf Editors:}\hfil\\ \begin{tabular}{l>{\hspace*{15pt}}r} Bryan Bartley & \emph{University of Washington, USA}\\ Jacob Beal & \emph{Raytheon BBN Technologies, USA}\\ -Kevin Clancy & \emph{ThermoFischer Scientific, USA}\\ +Kevin Clancy & \emph{ThermoFisher Scientific, USA}\\ Goksel Misirli & \emph{Newcastle University, UK}\\ Nicholas Roehner & \emph{Boston University, USA}\\ \end{tabular}\\ From 225a11d155ab09450e5caa20c9fefcf4778363c1 Mon Sep 17 00:00:00 2001 From: Nicholas Roehner Date: Sun, 23 Aug 2015 15:36:29 +0000 Subject: [PATCH 315/317] v20 --- sbol2.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sbol2.tex b/sbol2.tex index 07660e97..406e8554 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -105,7 +105,7 @@ \packageVersionDate{July 31, 2015} % BBF RFC \rfcnum{}: -\title{Synthetic Biology Open Language \texorpdfstring{\\[3pt]}{}\mbox{(SBOL) Version~2.0.0}} +\title{BBF RFC \rfcnum{}: Synthetic Biology Open Language \texorpdfstring{\\[3pt]}{}\mbox{(SBOL) Version~2.0.0}} \author{{\bf Editors:}\hfil\\ @@ -317,4 +317,4 @@ \section{...} % * 2015-06-03T17:34:31.200Z: % % -% +% \ No newline at end of file From 86c9b082752ada9cc43f1e67a4987baada4c6953 Mon Sep 17 00:00:00 2001 From: jakebeal Date: Mon, 7 Sep 2015 14:49:40 -0500 Subject: [PATCH 316/317] change to 108 --- sbol2.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sbol2.tex b/sbol2.tex index 406e8554..34b3cd28 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -20,7 +20,7 @@ % Macros just for this document: -\newcommand{\rfcnum}{107} +\newcommand{\rfcnum}{108} \newcommand{\sbmlpkg}{\texorpdfstring{% \textls[-25]{\textsc{SBMLPkgSpec}}}{% @@ -317,4 +317,4 @@ \section{...} % * 2015-06-03T17:34:31.200Z: % % -% \ No newline at end of file +% From 7e30dc8720749aaa4cf4263623cf820676c0ff45 Mon Sep 17 00:00:00 2001 From: nroehner Date: Tue, 22 Mar 2016 21:51:15 -0700 Subject: [PATCH 317/317] Removed draft mode. --- sbol2.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sbol2.tex b/sbol2.tex index 00b533a1..fa823cff 100644 --- a/sbol2.tex +++ b/sbol2.tex @@ -1,5 +1,5 @@ -\documentclass[finalspec,draft]{sbmlpkgspec} +\documentclass[finalspec]{sbmlpkgspec} %% \documentclass[draftspec]{sbmlpkgspec} \usepackage{microtype} \usepackage{color}

    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

  • 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