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.
- Jupp, Simon. Bechhofer, Sean. Kostkova, Patty. Steven, Robert. Yesilada, Yeliz. Document Navigation: Ontologies or Knowledge Organisation Systems? In Network Tools and Applications in Biology (NETTAB'2007) - A Semantic Web for Bioinformatics: Goals, Tools, Systems, Applications, June 2007. .pdf
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
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 |
Description | This represents the whole ontology identified in one file by an individual namespace |
SKOS | Each OBO ontology represents a concept scheme in SKOS |
URI | skos: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 |
Description | Gives the OBO specification version that this file uses. |
SKOS | Not necessarily applicable to the SKOS conversion, but no harm in keeping it |
URI | obo: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 |
Description | The program that generated the file. |
SKOS | No relevant SKOS type so generate a new one |
URI | obo: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 |
Description | The username of the person to last save this file. |
SKOS | Used dc:creator, but the creator of the OBO file is not always the creator of the SKOS file |
URI | dc:creator |
E.g. |
<rdf:Description rdf:about="http://obo.sourceforge.net/obo/sequence#sequenceScheme">
<dc:creator>johnsmith</obo:creator>
</rdf:Description>
|
OBO title |
Description | Title of the new document |
SKOS | Used dc:title generated from the namespace used in the OBO file |
URI | dc: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 |
Description | Date the OBO file was generated |
SKOS | Used dc:date |
URI | dc: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 |
Description | The unique id for a obo term |
SKOS | The OBO id is used to create a new SKOS concept |
URI | skos: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 |
Description | The preferred term name |
SKOS | The OBO name is converted to the SKOS property 'preferred label' |
URI | skos: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 |
Description | The definition of the current term. |
SKOS | The OBO def is converted to the SKOS property 'definition' |
URI | skos: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 |
Description | This tag gives a synonym for this term. |
SKOS | The OBO synonym is converted to the SKOS property 'alternate label' |
URI | skos: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 |
Description | A comment for this term |
SKOS | The OBO comment is converted to the SKOS 'editorial note' |
URI | skos: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 |
Description | This tag describes a subclassing relationship between one term and another. |
See also | OBOREL:is_a |
SKOS | The OBO is-a relation converted to a sub-property of skos:broader |
URI | oborelation:is_a |
Super property | skos:broader |
Inverse | oborelation:super_class_of |
Types | owl: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 |
Description | This tag describes a part-of relationship between one term and another. |
See also | OBOREL:part_of |
Comment | We 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. |
SKOS | The OBO part-of relation converted to a sub-property of skos:broader |
URI | oborelation:part_of |
Super-property | skos:broader |
Inverse | oborelation:has_part |
Types | owl: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 |
Description | This tag describes a integral-part-of relationship between one term and another. |
See also | OBOREL:integral_part_of |
SKOS | The OBO integral-part-of relation converted to a sub-property of skos:broader |
URI | oborelation:integral_part_of |
Super-property | skos:broader |
Inverse | oborelation:has_integral__part |
OBO proper-part-of |
Description | This tag describes a proper-part-of relationship between one term and another. |
See also | OBOREL:proper_part_of |
SKOS | The OBO proper-part-of relation converted to a sub-property of skos:broader |
URI | oborelation:proper_part_of |
Super-property | skos:broader |
Inverse | oborelation:has_proper_part |
OBO located-in |
Description | This tag describes a located-in relationship between one term and another. |
See also | OBOREL:located_in |
SKOS | The OBO located-in relation converted to a sub-property of skos:broader |
URI | oborelation:located_in |
Super-property | skos:broader |
Inverse | oborelation:contains |
OBO adjacent-to |
Description | This tag describes a adjacent-to relationship between one term and another. |
See also | OBOREL:adjacent_to |
SKOS | The OBO adjacent-to relation converted to a sub-property of skos:related |
URI | oborelation:adjacent_to |
Super-property | skos:related |
Types | owl:symmetricProperty |
OBO transformation-of |
Description | This tag describes a transformation-of relationship between one term and another. |
See also | OBOREL:transformation_of |
SKOS | The OBO transformation-of relation converted to a sub-property of skos:related |
URI | oborelation:transformation-of |
Super-property | skos:related |
Types | owl:symmetricProperty |
OBO derives-from |
Description | This tag describes a derives-from relationship between one term and another. |
See also | OBOREL:derives_from |
SKOS | The OBO derives-from relation converted to a sub-property of skos:related |
URI | oborelation:derives-from |
Super-property | skos:related |
Types | owl:symmetricProperty |
OBO preceded-by |
Description | This tag describes a preceded-by relationship between one term and another. |
See also | OBOREL:preceded_by |
SKOS | The OBO preceded-by relation converted to a sub-property of skos:related |
URI | oborelation:preceded_by |
Super-property | skos:related |
Types | owl:symmetricProperty |
OBO has-participant |
Description | This tag describes a has-participant relationship between one term and another. |
See also | OBOREL:has_participant |
SKOS | The OBO has-participant relation converted to a sub-property of skos:narrower |
URI | oborelation:has_participant |
Super-property | skos:narrower |
Inverse | oborelation:participates_in |
OBO has-agent |
Description | This tag describes a has-agent relationship between one term and another. |
See also | OBOREL:has_agent |
SKOS | The OBO has-agent relation converted to a sub-property of skos:broader |
URI | oborelation:has_agent |
Super-property | skos:broader |
Inverse | oborelation:is_agent_of |
OBO instance-of |
Description | This tag describes a instance-of relationship between one term and another. |
See also | OBOREL:instance_of |
SKOS | The OBO instance-of relation converted to a sub-property of skos:broader |
URI | oborelation:instance_of |
Super-property | skos:broader |
Inverse | oborelation:has_instance |