The University of Manchester

Home
 

OBO to SKOS Converter

You can access the OBO to SKOS converter here (This is a development server so page may be down!).

This tools uses the OWL API to parse a OBO ontology and convert it into a SKOS style representation. For more information about the mapping from OBO to OWL used by the OWL API see here, for information about the mapping from OBO to SKOS see below.

You can use the developmental SKOS plugin for Protege 4 to view the structure of the generated SKOS vocabulary. It is available for download from here.

 

About SKOS

SKOS is a model for representing, among other things, controlled vocabularies. The SKOS model can be used to provide meta-data about resources on the web, the SKOS core vocabulary is an extension of RDF. SKOS concepts are members of SKOS concept schemas and each concept can have things like textual definitions and preferred/alternative labels, it also has properties for asserting weak semantic relationships between these concepts. The three main types of semantic relationships found in SKOS are broader, narrower and related. SKOS is currently undergoing standardisation by the W3C, for more information about SKOS see here.

By converting OBO ontologies into SKOS we can utilse the RDF representation and make the ontologies accessible to Semantic Web applications. Although a conversion to from OBO to OWL is arguably more appropriate for this task, the strict semantics mean you must be careful when converting, especially with OBO ontologies where the semantics are not clearly defined. The weaker semantics of SKOS make it suitable for simple conversion, and can serve as part of a migratory path for using the OBO ontologies in Semantic Web scenarios. More justification for building the converters can be found in this publication that was recently presented at NETTAB 2007 and also the SIG Bio-ontolgies meeting at ISMB 2007.

 

OBO to SKOS Details

This is a first attempt conversion and there are still some open questions. I am hoping that by putting this page up on the web I can find others who will find this useful and contribute to the discussion about converting OBO to SKOS. Because SKOS is an extension of RDF we have the ability to extend SKOS using sub-classes and sub-properties, when converting OBO to SKOS we create sub-properties of the SKOS semantic relationships. This means we can keep all the information from the original OBO documents whilst still making everything available to SKOS aware applications, it also opens the way for conversion back from SKOS into OBO. Where possible I have tried to reuse sensible vocabulary from other web standards such as Dublin Core. Essentially, this whole mapping table is up for review so please comment and send any suggestion to Simon.Jupp[at]manchester.ac.uk.

SKOS represents concept schemas, we convert each OBO ontology into a SKOS concept scheme, each term from OBO becomes a SKOS concept and a member of that concept scheme. Here is a list of OBO ontologies that I have already converted into SKOS RDF/XML, they should load into Protege 4 Alpha and the concept hierarchy can be viewed using the Protege SKOS plugin.


The Conversion

General

Relations

obo=http://www.obo.sourceforge.net/obo/obo#
oborelation=http://www.obo.sourceforge.net/obo/oborelation#
skos=http://www.w3.org/2004/02/skos/core#
dc=http://purl.org/dc/elements/1.1/
OBO ontology
DescriptionThis represents the whole ontology identified in one file by an individual namespace
SKOSEach OBO ontology represents a concept scheme in SKOS
URIskos:ConceptScheme
E.g.
<rdf:Description rdf:about="http://obo.sourceforge.net/obo/sequence#sequenceScheme">
 <rdf:type rdf:resource="http://www.w3.org/2004/02/skos/core#ConceptScheme"/>
</rdf:Description>
	

 
OBO Format Version
DescriptionGives the OBO specification version that this file uses.
SKOSNot necessarily applicable to the SKOS conversion, but no harm in keeping it
URIobo:oboFormatVersion
E.g.
<rdf:Description rdf:about="http://obo.sourceforge.net/obo/sequence#sequenceScheme">
 <obo:oboFormatVersion>1.2</obo:oboFormatVersion>
</rdf:Description>
 	

 
OBO Auto Generated By
DescriptionThe program that generated the file.
SKOSNo relevant SKOS type so generate a new one
URIobo:oboAutoGeneratedBy
E.g.
<rdf:Description rdf:about="http://obo.sourceforge.net/obo/sequence#sequenceScheme">
 <obo:oboAutoGeneratedBy>OBO-Edit 1.002-beta3</obo:oboAutoGeneratedBy>
</rdf:Description>
 	

 
OBO Creator
DescriptionThe username of the person to last save this file.
SKOSUsed dc:creator, but the creator of the OBO file is not always the creator of the SKOS file
URIdc:creator
E.g.
<rdf:Description rdf:about="http://obo.sourceforge.net/obo/sequence#sequenceScheme">
 <dc:creator>johnsmith</obo:creator>
</rdf:Description>
 	

 
OBO title
DescriptionTitle of the new document
SKOSUsed dc:title generated from the namespace used in the OBO file
URIdc:title
E.g.
<rdf:Description rdf:about="http://obo.sourceforge.net/obo/sequence#sequenceScheme">
 <dc:title xml:lang="en">sequence</dc:title>
</rdf:Description>
 	

 
OBO date
DescriptionDate the OBO file was generated
SKOSUsed dc:date
URIdc:date
E.g.
<rdf:Description rdf:about="http://obo.sourceforge.net/obo/sequence#sequenceScheme">
 <dc:date>Tue Aug 22 14:43:00 BST 2006</dc:date>
</rdf:Description>
 	

 
OBO id
DescriptionThe unique id for a obo term
SKOSThe OBO id is used to create a new SKOS concept
URIskos:Concept
E.g.
<rdf:Description rdf:about="http://obo.sourceforge.net/obo/sequence#SO:0000509">
  <skos:inScheme rdf:resource="http://obo.sourceforge.net/obo/sequence#sequenceScheme"/>
  <rdf:type rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
</rdf:Description>
 	

 
OBO name
DescriptionThe preferred term name
SKOSThe OBO name is converted to the SKOS property 'preferred label'
URIskos:prefLabel
E.g.
<rdf:Description rdf:about="http://obo.sourceforge.net/obo/sequence#SO:0000509">
 <skos:prefLabel xml:lang="en">D_J_C_cluster</skos:prefLabel>
</rdf:Description>
 	

 
OBO def
DescriptionThe definition of the current term.
SKOSThe OBO def is converted to the SKOS property 'definition'
URIskos:definition
E.g.
<rdf:Description rdf:about="http://obo.sourceforge.net/obo/sequence#SO:0000509">
 <skos:definition xml:lang="en">
  Genomic DNA of immunoglobulin/T-cell receptor gene in germline configuration
  including at least one D-gene, one J-gene and one C-gene.
 </skos:definition>
</rdf:Description>
 	

 
OBO synonym
DescriptionThis tag gives a synonym for this term.
SKOSThe OBO synonym is converted to the SKOS property 'alternate label'
URIskos:altLabel
E.g.
<rdf:Description rdf:about="http://obo.sourceforge.net/obo/sequence#SO:0000509">
 <skos:altLabel xml:lang="en">D-J-C-CLUSTER</skos:altLabel>
</rdf:Description>
 	

 
OBO comment
DescriptionA comment for this term
SKOSThe OBO comment is converted to the SKOS 'editorial note'
URIskos:editorialNote
E.g.
<rdf:Description rdf:about="http://obo.sourceforge.net/obo/sequence#SO:0000509">
 <skos:editorialNote xml:lang="en">Some random comment...</skos:editorialNote>
</rdf:Description>
 	

OBO relationships

This is the main focus of this conversion. SKOS has three main semantic relations; broader, narrower and related. The main relationships between terms found in OBO ontologies is the 'is-a' relationship. In OBO consider term A 'is-a' term B, the semantics of this relationship mean that every instance of A is also an instance of B. In SKOS, the semantics don't allow us to say anything as strong as this, we would simply state that term A has 'broader' term B. If two documents are annotated with A and B, we could infer that documents annotated with A are more specific (or narrower) than documents annotated with B. The tables below propose conversions from OBO relations to the appropriate SKOS property.

Each property is created as a sub-property of one of the SKOS semantic relations. Because skos:broader and skos:narrower are owl:inverse properties we can create the inverse property for all the obo relations. The skos:related property is owl:symmetric. For OBO ontologies that have created their own relation (such as the Sequence Ontology) the conversion software offers a choice between broader, narrower and related for each relation.


 
OBO is-a
DescriptionThis tag describes a subclassing relationship between one term and another.
See alsoOBOREL:is_a
SKOSThe OBO is-a relation converted to a sub-property of skos:broader
URIoborelation:is_a
Super propertyskos:broader
Inverseoborelation:super_class_of
Typesowl:transitiveProperty
E.g.
<rdf:Description rdf:about="http://obo.sourceforge.net/obo/sequence#SO:0000509">
 <oborelation:is_a rdf:resource="http://obo.sourceforge.net/obo/sequence#SO:0000482"/>
 <oborelation:super_class_of rdf:resource="http://obo.sourceforge.net/obo/sequence#SO:0000473"/>
</rdf:Description>
 	

   
OBO part-of
DescriptionThis tag describes a part-of relationship between one term and another.
See alsoOBOREL:part_of
CommentWe could use the skos extension skos:broaderPartive for this preoperty, but its semantics are unclear and the term is unstable in the SKOS vocabulary so i will leave it out for now.
SKOSThe OBO part-of relation converted to a sub-property of skos:broader
URIoborelation:part_of
Super-propertyskos:broader
Inverseoborelation:has_part
Typesowl:transitiveProperty
E.g.
<rdf:Description rdf:about="http://obo.sourceforge.net/obo/anatomy#finger">
 <oborelation:part_of rdf:resource="http://obo.sourceforge.net/obo/anatomy#hand"/>
 <oborelation:has_part rdf:resource="http://obo.sourceforge.net/obo/anatomy#finger_nail"/>
</rdf:Description>
 	

 
OBO intergral-part-of
DescriptionThis tag describes a integral-part-of relationship between one term and another.
See alsoOBOREL:integral_part_of
SKOSThe OBO integral-part-of relation converted to a sub-property of skos:broader
URIoborelation:integral_part_of
Super-propertyskos:broader
Inverseoborelation:has_integral__part

 
OBO proper-part-of
DescriptionThis tag describes a proper-part-of relationship between one term and another.
See alsoOBOREL:proper_part_of
SKOSThe OBO proper-part-of relation converted to a sub-property of skos:broader
URIoborelation:proper_part_of
Super-propertyskos:broader
Inverseoborelation:has_proper_part

 
OBO located-in
DescriptionThis tag describes a located-in relationship between one term and another.
See alsoOBOREL:located_in
SKOSThe OBO located-in relation converted to a sub-property of skos:broader
URIoborelation:located_in
Super-propertyskos:broader
Inverseoborelation:contains

 
OBO adjacent-to
DescriptionThis tag describes a adjacent-to relationship between one term and another.
See alsoOBOREL:adjacent_to
SKOSThe OBO adjacent-to relation converted to a sub-property of skos:related
URIoborelation:adjacent_to
Super-propertyskos:related
Typesowl:symmetricProperty

 
OBO transformation-of
DescriptionThis tag describes a transformation-of relationship between one term and another.
See alsoOBOREL:transformation_of
SKOSThe OBO transformation-of relation converted to a sub-property of skos:related
URIoborelation:transformation-of
Super-propertyskos:related
Typesowl:symmetricProperty

 
OBO derives-from
DescriptionThis tag describes a derives-from relationship between one term and another.
See alsoOBOREL:derives_from
SKOSThe OBO derives-from relation converted to a sub-property of skos:related
URIoborelation:derives-from
Super-propertyskos:related
Typesowl:symmetricProperty

 
OBO preceded-by
DescriptionThis tag describes a preceded-by relationship between one term and another.
See alsoOBOREL:preceded_by
SKOSThe OBO preceded-by relation converted to a sub-property of skos:related
URIoborelation:preceded_by
Super-propertyskos:related
Typesowl:symmetricProperty

 
OBO has-participant
DescriptionThis tag describes a has-participant relationship between one term and another.
See alsoOBOREL:has_participant
SKOSThe OBO has-participant relation converted to a sub-property of skos:narrower
URIoborelation:has_participant
Super-propertyskos:narrower
Inverseoborelation:participates_in

 
OBO has-agent
DescriptionThis tag describes a has-agent relationship between one term and another.
See alsoOBOREL:has_agent
SKOSThe OBO has-agent relation converted to a sub-property of skos:broader
URIoborelation:has_agent
Super-propertyskos:broader
Inverseoborelation:is_agent_of

 
OBO instance-of
DescriptionThis tag describes a instance-of relationship between one term and another.
See alsoOBOREL:instance_of
SKOSThe OBO instance-of relation converted to a sub-property of skos:broader
URIoborelation:instance_of
Super-propertyskos:broader
Inverseoborelation:has_instance