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

From OpenWetWare
Jump to navigationJump to search

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:  <http://www.biobricks.org/rdf/0.1#> .
@prefix formats: <http://www.biobricks.org/rdfformats/0.1#> .
@prefix knightlab:    <http://xxx/knight/people#> .
@prefix endylab:    <http://xxx/knight/people#> .
@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:     <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix foaf:    <http://xmlns.com/foaf/0.1#> .
@prefix :  <http://www.biobricks.org/rdf/0.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:range       xsd:collection; ## haven't found the type for "collection of x" yet.
       rdfs:label       "Biobrick Composition";
       rdfs:comment     "a list of basic Biobricks this Biobrick is made of";
       .

: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;
       .

## 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.

## 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;
       .

## 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";
       .

## 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";
       .

## 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.