<p>The key to understanding this is to think about a system with more than one copy of a genetic construct. </p>

<p>For example, let's say you have a construct that uses two copies of the pBAD promoter, each regulating a different coding sequence. Both of these promoters are pBAD promoters, with the same sequence and type information, so they should share the same <code>ComponentDefinition</code>.</p>

<p>But there are two copies. In the context of the larger construct, we need to be able to talk about each copy separately. For example, we might need to say that the first comes after a MoClo cut site, while the second comes after a terminator. For that, we need the <code>Component</code> object, to have a way to say "this particular copy of pBAD", as opposed to "pBAD in general", which is what the <code>ComponentDefinition</code> tells us about.</p>

CC BY-SA 4.0
2019-07-25T19:56:11.403Z
2019-07-25T19:56:11.403Z
jakebeal
<p>Essentially, a <code>ComponentDefinition</code> represents <em>the component itself</em>, while a <code>Component</code> represents <em>the component being used as a sub-component</em>.</p>

<p>There is <a href="https://github.com/SynBioDex/SEPs/blob/master/sep_015.md" rel="nofollow noreferrer">a proposal</a> within the SBOL community as to whether for SBOL version 3 <code>ComponentDefinition</code> should be renamed to <code>Component</code> and <code>Component</code> should be renamed to <code>SubComponent</code> to make this situation less confusing.</p>

CC BY-SA 4.0
2019-07-26T00:34:45.897Z
2019-07-26T00:34:45.897Z
James M
<p>What is the point of having both a Component and a ComponentDefinition in SBOL? Shouldn't you be able to link straight from one component to its sub-components?</p>

<p>The same question goes for Module and ModuleDefinition.</p>

<sbol>
Why does SBOL have both Component and ComponentDefinition?
# Why does SBOL have both Component and ComponentDefinition?

(Asked by: username_0 on 2019-07-25)

What is the point of having both a Component and a ComponentDefinition in SBOL? Shouldn't you be able to link straight from one component to its sub-components?

The same question goes for Module and ModuleDefinition.

**Tags:** sbol

---

## 2 answers

### Answer by username_0 on 2019-07-25. Score: 2

The key to understanding this is to think about a system with more than one copy of a genetic construct.

For example, let's say you have a construct that uses two copies of the pBAD promoter, each regulating a different coding sequence. Both of these promoters are pBAD promoters, with the same sequence and type information, so they should share the same `ComponentDefinition`.

But there are two copies. In the context of the larger construct, we need to be able to talk about each copy separately. For example, we might need to say that the first comes after a MoClo cut site, while the second comes after a terminator. For that, we need the `Component` object, to have a way to say "this particular copy of pBAD", as opposed to "pBAD in general", which is what the `ComponentDefinition` tells us about.


---

### Answer by username_1 on 2019-07-26. Score: 1

Essentially, a `ComponentDefinition` represents *the component itself*, while a `Component` represents *the component being used as a sub-component*.

There is [a proposal](https://github.com/SynBioDex/SEPs/blob/master/sep_015.md) within the SBOL community as to whether for SBOL version 3 `ComponentDefinition` should be renamed to `Component` and `Component` should be renamed to `SubComponent` to make this situation less confusing.


---

