Copyright © 2008 Toby Inkster, some rights reserved.
An RDF vocabulary for the taxonomy of all forms of life. The namespace URI for this vocabulary is http://purl.org/NET/biol/ns#; it is usually given the prefix biol. Specific versions of this vocabulary can be referenced using versioned URIs such as http://purl.org/NET/biol/ns-20080513#, but future versions aim to be backwards compatible, so it is generally better to use the unversioned URI.
This vocabulary should cover most people's taxonomic needs, but for those with more specialist needs, there are detailed vocabularies for botany and zoology. The namespaces and links to RDF schema are below, but no detailed specification document is available yet.
The vocabulary can be easily used in conjunction with FOAF and other RDF vocabularies. Examples are given below.
Sub-class of: | rdfs:Class |
---|
A taxonomy is a classification for something. An animal or plant has a taxonomy; an animal or plant is not a taxonomy. For those familiar with object-oriented programming, think of a taxonomy as being analogous to a class, not an object.
Sub-class of: | biol:Taxonomy |
---|
A ZooTaxonomy is a subclass of Taxonomy. It is not necessarily used to describe an animal, but it indicates that certain ambiguous terms, such as "division" should be interpreted the way zoologists use them. Most of the time, it is more appropriate to use Taxonomy instead.
Sub-class of: | biol:Taxonomy |
---|
A BotTaxonomy is a subclass of Taxonomy. It is not necessarily used to describe a plant. Most of the time, it is more appropriate to use Taxonomy instead.
Sub-property of: | rdf:type |
---|---|
Range: | biol:Taxonomy |
This property provides a relationship between an entity (such as a foaf:Person) and a taxonomy. Because biologists don't always agree on how to classify life, a single entity may have multiple taxonomies, each of which may be differentiated between using biol:authority or dc:date.
Domain: | biol:Taxonomy |
---|---|
Range: | rdfs:Literal |
A scientific name; a binomial or trinomial. For example, Homo sapiens.
Sub-property of: | rdfs:label |
---|---|
Domain: | biol:Taxonomy |
Range: | rdfs:Literal |
A non-scientific name. For example, "Human".
Sub-property of: | ubio:taxonomicGroup |
---|---|
Domain: | biol:Taxonomy |
Range: | rdfs:Literal |
An unspecified classification. This should not normally be used.
Sub-property of: | biol:rank |
---|---|
Domain: | biol:Taxonomy |
Range: | rdfs:Literal |
The highest-level and least specific level of classification. Example kingdoms are Animalia and Plantae.
Sub-property of: | biol:rank |
---|---|
Domain: | biol:Taxonomy |
Range: | rdfs:Literal |
The second highest level of classification. Zoologists call these phyla and botanists call them "divisions". In general, you should pick one of those terms and use it instead.
Sub-property of: | biol:secondLevelClassification |
---|---|
Domain: | biol:Taxonomy |
Range: | rdfs:Literal |
The second highest level of classification, as used by zoologists. Note that phylum may be used to describe any form of life — the use of phylum is not meant to imply that the entity being described is an animal, merely that zoological names of ranks are being used.
Sub-property of: | biol:secondLevelClassification |
---|---|
Domain: | biol:Taxonomy |
Range: | rdfs:Literal |
The second highest level of classification, as used by botanists. Note that division may be used to describe any form of life — the use of division is not meant to imply that the entity being described is a plant, merely that botanical names of ranks are being used. Zoologists use the term "division" to describe a rank between an "infraclass" and a "cohort". biol:division should not be used for this purpose — use biol:rank instead.
Sub-property of: | biol:rank |
---|---|
Domain: | biol:Taxonomy |
Range: | rdfs:Literal |
The third highest level of classification. For example Mammalia.
Sub-property of: | biol:rank |
---|---|
Domain: | biol:Taxonomy |
Range: | rdfs:Literal |
The fourth highest level of classification. For example "Primates".
Sub-property of: | biol:rank |
---|---|
Domain: | biol:Taxonomy |
Range: | rdfs:Literal |
The fifth highest level of classification. For example Hominidae.
Sub-property of: | biol:rank |
---|---|
Domain: | biol:Taxonomy |
Range: | rdfs:Literal |
The sixth highest level of classification. For example Homo.
Sub-property of: | biol:rank |
---|---|
Domain: | biol:Taxonomy |
Range: | rdfs:Literal |
The lowest level of classification supported by this vocabulary. For example Sapiens. To include information more specific than species, use biol:rank or a more specialist vocabulary.
Sub-property of: | rdfs:seeAlso |
---|---|
Domain: | biol:Taxonomy |
Range: | rdfs:Resource |
A link to another resource further describing this form of life.
Sub-property of: | the inverse of rdfs:subClassOf |
---|---|
Domain: | biol:Taxonomy |
Range: | biol:Taxonomy |
Connects a taxonomy to a more precise taxonomy. For example, the taxonomy "Mammal" might have a "more precise" property linking to "Primate". A more complete example.
A very basic example:
<rdf:RDF xml:lang="en-GB" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:biol="http://purl.org/NET/biol/ns#"> <foaf:Person rdf:about="http://tobyinkster.co.uk/#i"> <foaf:name>Toby Inkster</foaf:name> <biol:hasTaxonomy rdf:parseType="Resource"> <biol:name>Homo sapiens sapiens</biol:name> <biol:commonName>human</biol:commonName> </biol:hasTaxonomy> </foaf:Person> </rdf:RDF>
A more complicated example, using most of the properties:
<rdf:RDF xml:lang="en-GB" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/terms/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:biol="http://purl.org/NET/biol/ns#"> <foaf:Person rdf:about="http://tobyinkster.co.uk/#i"> <foaf:name>Toby Inkster</foaf:name> <biol:hasTaxonomy> <biol:Taxonomy> <!-- Scientific (binomial or trinomial) name --> <biol:name>Homo sapiens sapiens</biol:name> <!-- Common name, in whatever language you like --> <biol:commonName>human</biol:commonName> <biol:commonName xml:lang="la">homo</biol:commonName> <biol:commonName xml:lang="eu">Gizakia</biol:commonName> <!-- Detailed classification --> <biol:kingdom>Animalia</biol:kingdom> <biol:phylum>Chordata</biol:phylum> <biol:class>Mammalia</biol:class> <biol:order>Primates</biol:order> <biol:family>Hominidae</biol:family> <biol:genus>Homo</biol:genus> <biol:species>Sapiens</biol:species> <!-- Further information on this classification --> <biol:seeAlso rdf:resource="http://species.wikimedia.org/wiki/Homo_sapiens" /> <!-- The classifier --> <biol:authority>Linnaeus, 1758</biol:authority> <!-- A date when this taxonomy was thought to be correct. --> <dc:date>2008-05-01</dc:date> </biol:Taxonomy> </biol:hasTaxonomy> </foaf:Person> </rdf:RDF>
Here is an RDF description for a document that discusses the biological classification of cats. This should be contrasted against the next example, of a description for a document that discusses cats (i.e. the creatures, not the classification of them).
<rdf:RDF xml:lang="en-GB" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/terms/" xmlns:biol="http://purl.org/NET/biol/ns#"> <foaf:Document rdf:about="http://example.org/taxonomy/cats"> <dc:title>The Taxonomy of Domestic Cats</dc:title> <dc:subject> <biol:Taxonomy> <biol:name>Felis silvestris catus</biol:name> <biol:commonName>domestic shorthair</biol:commonName> </biol:Taxonomy> </dc:subject> <dc:abstract>Should domestic cats be classified as a subspecies of the European wildcat, or as a separate species?</dc:abstract> </foaf:Document> </rdf:RDF>
Here is an RDF description for a document that discusses cats.
<rdf:RDF xml:lang="en-GB" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/terms/" xmlns:biol="http://purl.org/NET/biol/ns#"> <foaf:Document rdf:about="http://example.org/animals/cats"> <dc:title>The Behaviour of Domestic Cats</dc:title> <dc:subject rdf:parseType="Resource"> <biol:hasTaxonomy> <biol:Taxonomy> <biol:name>Felis silvestris catus</biol:name> <biol:commonName>domestic shorthair</biol:commonName> </biol:Taxonomy> </biol:hasTaxonomy> </dc:subject> <dc:abstract>The cat is a small carnivorous species of crepuscular mammal that is often valued by humans for its companionship and its ability to hunt vermin.</dc:abstract> </foaf:Document> </rdf:RDF>
Here is a simple example in RDFa using the vocabulary to describe a relationship with a pet cat.
<p typeof="foaf:Person" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:biol="http://purl.org/NET/biol/ns#"> <span property="foaf:name">Toby Inkster</span> has a <span rel="foaf:knows"> <span rel="biol:hasTaxonomy"> <span property="biol:commonName">cat</span> </span> called <span property="foaf:name">Mr d'Silva</span> </span>. </p>
Well-known URIs may be used to represent taxonomies. The following Turtle provides similar information to the example above but uses URIs.
_:tobyink foaf:name "Toby Inkster" ; biol:hasTaxonomy <http://dbpedia.org/resource/Human> ; foaf:knows _:mrdsilva . _:mrdsilva foaf:name "Mr d'Silva" ; biol:hasTaxonomy <http://dbpedia.org/resource/Cat> .
Taxonomies may be used as RDF classes.
_:tobyink a ex:HumanBeing; foaf:name "Toby Inkster" . ex:HumanBeing a biol:Taxonomy ; biol:name "Homo sapiens" .
Similarly, using an anonymous blank node:
_:tobyink foaf:name "Toby Inkster" ; a [ biol:name "Homo sapiens" ] .
Hierarchies of taxonomies can be easily established using the biol:morePrecise predicate.
<rdf:RDF xml:lang="zxx" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:biol="http://purl.org/NET/biol/ns#" xml:base="http://example.org/apes"> <biol:Taxonomy rdf:about="#Hominidae"> <biol:commonName xml:lang="en">Great Ape</biol:commonName> <biol:kingdom>Animalia</biol:kingdom> <biol:phylum>Chordata</biol:phylum> <biol:class>Mammalia</biol:class> <biol:order>Primates</biol:order> <biol:family>Hominidae</biol:family> <biol:morePrecise> <biol:Taxonomy rdf:about="#Orangutan"> <biol:commonName xml:lang="en">Orangutan</biol:commonName> <biol:genus>Pongo</biol:genus> <biol:morePrecise> <biol:Taxonomy rdf:about="#BorneanOrangutan"> <biol:commonName xml:lang="en">Bornean orangutan</biol:commonName> <biol:name>Pongo pygmaeus</biol:name> </biol:Taxonomy> </biol:morePrecise> <biol:morePrecise> <biol:Taxonomy rdf:about="#SumatranOrangutan"> <biol:commonName xml:lang="en">Sumatran orangutan</biol:commonName> <biol:name>Pongo abelii</biol:name> </biol:Taxonomy> </biol:morePrecise> </biol:Taxonomy> </biol:morePrecise> <biol:morePrecise> <biol:Taxonomy rdf:about="#Gorilla"> <biol:commonName xml:lang="en">Gorilla</biol:commonName> <biol:genus>Gorilla</biol:genus> <biol:morePrecise> <biol:Taxonomy rdf:about="#GorillaGorilla"> <biol:commonName xml:lang="en">Western gorilla</biol:commonName> <biol:name>Gorilla gorilla</biol:name> </biol:Taxonomy> </biol:morePrecise> <biol:morePrecise> <biol:Taxonomy rdf:about="#GorillaGraueri"> <biol:commonName xml:lang="en">Eastern gorilla</biol:commonName> <biol:name>Gorilla graueri</biol:name> </biol:Taxonomy> </biol:morePrecise> </biol:Taxonomy> </biol:morePrecise> <biol:morePrecise> <biol:Taxonomy rdf:about="#Chimpanzee"> <biol:commonName xml:lang="en">Chimpanzee</biol:commonName> <biol:genus>Pan</biol:genus> <biol:morePrecise> <biol:Taxonomy rdf:about="#Chimp"> <biol:commonName xml:lang="en">Common chimpanzee</biol:commonName> <biol:name>Pan troglodytes</biol:name> </biol:Taxonomy> </biol:morePrecise> <biol:morePrecise> <biol:Taxonomy rdf:about="#Bonobo"> <biol:commonName xml:lang="en">Bonobo</biol:commonName> <biol:name>Pan paniscus</biol:name> </biol:Taxonomy> </biol:morePrecise> </biol:Taxonomy> </biol:morePrecise> <biol:morePrecise> <biol:Taxonomy rdf:about="#Human"> <biol:commonName xml:lang="en">Human</biol:commonName> <biol:name>Homo sapiens</biol:name> </biol:Taxonomy> </biol:morePrecise> </biol:Taxonomy> </rdf:RDF>
These might then be used as:
<rdf:RDF xml:lang="en" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:biol="http://purl.org/NET/biol/ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:ape="http://example.org/apes#"> <ape:Human> <foaf:name>Alice Jones</foaf:name> </ape:Human> <foaf:Person> <foaf:name>Bob Smith</foaf:name> <biol:hasTaxonomy rdf:resource="http://example.org/apes#Human" /> </foaf:Person> <ape:Bonobo> <foaf:name>Bobo</foaf:name> </ape:Bonobo> </rdf:RDF>
Thanks to the members of W3C Semantic Web Interest Group and RDF in XHTML Taskforce for their feedback and suggestions, especially to Richard Cyganiak.
![]() |