The BioBricks Foundation:Standards/Technical/PoBoL/Owl Draft 0.1

Raik Says:

Here is a first OWL-formatted draft of our minimal ontology (partsrdf.owl). I've written this from scratch as N3 file (see partsrdf.n3) and converted it to the xml format using the RDF validator at http://www.rdfabout.com/demo/validator/

The owl file loads into Protege and Swoop for perhaps easier editing. I would suggest that we continue to ship N3 versions though for better readability (they say XML was invented as a human readable format, yeah right...).

What is still missing are restrictions, like that a Biobrick must have exactly one sequence and format and so on. So far I have just fixed the range of values of each property (owl:range) and what kind of properties a class can have (owl:domain, note this goes into the property not the class definition).

More explanations: "a owl:FunctionalProperty" means this property can only occur ones per object. And "a owl:InverseFunctionalProperty" means this property has to be unique for each object.

Apart from the restrictions, I didn't find out yet how to define a datatype "list of Biobrick instances" for the subParts property (aka composition). N3 allows to formulate lists of values like this:

BBa0102 bbf:subParts  (BBa0001 BBa0002).

But I didn't find any documentation how to enforce that in an ontology. Hints anyone?

Last note, I changed some property names (dnaSequence rather than sequence, isCircular rather than Circular, subFamilyOf rather than parent) to better conform with informal owl conventions. These are open to debate of course. Ah, and I forgot the selfScar and constraint in Format...

Anyway, work in progress obviously. I've some last traveling to do starting tomorrow and, probably, won't touch these files for the week to come. Feel free to fill in the missing bits. Could anyone please set up a google code project for this to get version control? Or this site may be an interesting alternative: http://www.knoodl.com Other ideas?

@prefix bbf: . @prefix formats: . @prefix knightlab:   . @prefix endylab:   . @prefix : <#>.


 * BBa_P1010

bbf:dnaSequence   "ATGXX"; bbf:format     formats:1_0;

bbf:shortDescription   "ccdb death switch"; bbf:longDescription    "a negative selection marker"; bbf:author             knightlab:tom; bbf:author             endylab:drew; . @prefix xsd:    . @prefix rdfs:   . @prefix rdf:    . @prefix owl:    . @prefix foaf:   . @prefix : .


 * 1) Definition of Biobrick Class and core Properties


 * Biobrick

a       owl:Class; rdfs:subClassOf owl:Thing; rdfs:label      "Biobrick"; rdfs:comment    "description of a Biobrick"; .


 * dnaSequence

a      owl:InverseFunctionalProperty; a      owl:FunctionalProperty; rdfs:domain      :Biobrick; rdfs:range       xsd:string; rdfs:label      "sequence"; .


 * format

a      owl:InverseFunctionalProperty; a      owl:FunctionalProperty; rdfs:domain      :Biobrick; rdfs:range       :BiobrickFormat; rdfs:label       "format"; .


 * subParts

a      owl:InverseFunctionalProperty; a      owl:FunctionalProperty; rdfs:domain      :Biobrick; rdfs:label      "Biobrick Composition"; rdfs:comment    "a list of basic Biobricks this Biobrick is made of"; .
 * 1)        rdfs:range       xsd:collection; ## haven't found the type for "collection of x" yet.


 * family

a      owl:ObjectProperty; rdfs:domain     :Biobrick; rdfs:range      :BiobrickFamily; rdfs:label      "family"; rdfs:comment    "group of related Biobricks to which this one belongs"; .

## Definition of add-on Biobrick Properties


 * author

a       owl:ObjectProperty; rdfs:range      foaf:Person; # http://xmlns.com/foaf/spec/#term_Person rdfs:domain     :Biobrick; .


 * date

a      owl:FunctionalProperty; rdfs:range      xsd:date; rdfs:domain     :Biobrick; .


 * reference

a       owl:ObjectProperty; rdfs:range     xsd:string;  # PMID? DOI? rdfs:domain     :Biobrick; .


 * shortDescription

a      owl:FunctionalProperty; rdfs:range      xsd:string; rdfs:domain     :Biobrick; .


 * longDescription

a      owl:FunctionalProperty; rdfs:range      xsd:string; rdfs:domain     :Biobrick; .


 * 1) Definition of Biobrick physical Format class and properties


 * BiobrickFormat

a       owl:Class; rdfs:subClassOf owl:Thing; rdfs:label      "Biobrick Format"; rdfs:comment    "Biobrick Physical Assembly Format"; .


 * prefix

a      owl:ObjectProperty; a      owl:FunctionalProperty; rdfs:range      xsd:string; rdfs:comment    "standard prefix sequence"; rdfs:label      "Biobrick prefix"; .


 * suffix

a      owl:ObjectProperty; a      owl:FunctionalProperty; rdfs:range      xsd:string; rdfs:comment    "standard suffix sequence"; rdfs:label      "Biobrick suffix"; .


 * shortDescription      rdfs:domain     :BiobrickFormat. # described above
 * longDescription       rdfs:domain     :BiobrickFormat.


 * 1) Biobrick subclasses


 * BiobrickBasic

a      owl:Class; rdfs:subClassOf :Biobrick; .


 * BiobrickComposite

a      owl:Class; rdfs:subClassOf :Biobrick; .


 * BiobrickVector

a      owl:Class; rdfs:subClassOf :Biobrick; .


 * isCircular

a      owl:FunctionalProperty; rdfs:range      xsd:boolean; rdfs:domain     :BiobrickVector; rdfs:comment    "circular DNA flag"; rdfs:label      "is circular?"; .


 * SelectiveMarker

a      owl:Class; rdfs:subClassOf :Biobrick; .


 * 1) Physical DNA class and properties


 * DNA

a      owl:Class; rdfs:subClassOf owl:Thing; rdfs:comment    "description of an actual piece of DNA"; rdfs:label      "Physical DNA"; .


 * vector

a      owl:FunctionalProperty; rdfs:domain     :DNA; rdfs:range      :Vector; rdfs:label      "vector"; .


 * insert

a      owl:FunctionalProperty; rdfs:domain     :DNA; rdfs:range      :Biobrick; rdfs:label      "insert"; rdfs:comment    "biobrick embedded in a vector"; .


 * 1) minimal Sample description


 * Sample

a      owl:Class; rdfs:subClassOf owl:Thing; rdfs:comment    "description of a sample in a freezer or elsewhere"; rdfs:label      "sample"; .


 * date  rdfs:domain     :Sample .  # defined in more detail above


 * dna

a      owl:FunctionalProperty; a      owl:InverseFunctionalProperty; rdfs:domain     :Sample; rdfs:range      :DNA; rdfs:label      "physical DNA"; rdfs:comment    "DNA content of a sample"; .


 * 1) Biobrick Family


 * BiobrickFamily

a      owl:Class; rdfs:subClassOf owl:Thing; rdfs:comment    "description of a group of related Biobricks"; rdfs:label      "Biobrick Family"; .


 * name

a      owl:FunctionalProperty; a      owl:InverseFunctionalProperty; rdfs:domain     :BiobrickFamily; rdfs:range      xsd:string; rdfs:label      "name"; rdfs:comment    "a name"; .


 * subFamilyOf

a      owl:ObjectProperty; rdfs:domain     :BiobrickFamily; rdfs:range      :BiobrickFamily; rdfs:label      "super Family"; rdfs:comment    "0 or more parent families"; .


 * shortDescription      rdfs:domain     :BiobrickFamily. # as defined above
 * longDescription       rdfs:domain     :BiobrickFamily.
 * author                rdfs:domain     :BiobrickFamily.
 * date                  rdfs:domain     :BiobrickFamily.
 * reference             rdfs:domain     :BiobrickFamily.