— the global portal for all things SBML

meta annotations


Annotations about annotations

We refer to annotations about annotations as meta-annotations in the following document.

Where do we need meta-annotations?

  • Annotating the <annotation> element (current or new one, depending on our decision)
  • Annotating the <bqbiol> element
  • annotating the rdf:bag / rdf:list

person's meta-annotations

If <annotation> is an annotation on a model, then the <dc:creator> is either the model encoder/creator or the person who provided the particular model annotation.

If <annotation> is an annotation on any other element then it says who provided the particular element annotation.

If no dc:creator is defined for an element annotation then it is assumed that the model annotation creator is also the creator of that particular element

How can we be specific about whether the creator is the creator of the model element itself or of the annotation?


The proposed solution is to state in the specification that we can annotate anything that has an rdf:ID assigned. We will use the rdf:about construct to refer to that rdf:ID and define the annotation.

As such, there would be no technical difference between an "annotation" and a "meta-annotation". In the case above, annotating the model with <dc:creator> would imply that the person named created the model. If the model is annotated with "Kinase pathway" annotation, and a meta-annotation refers to the "Kinase pathway" annotation with <dc:creator>, that person created the annotation.

Using the rdf:id for RDF annotations

The remaining question is whether the rdf:Description blocks will be nested or parallel. In all cases we will use the rdf:about inside the rdf:description (although it is optional in some cases, regarding to RDF spec).

Neil (again): is this a similar version of the above that draws more on RDF?

Example 1:

<model metaid="m">
 <rdf:Description rdf:about="#m">
  <bqbiol:is rdf:ID="a" >
    <rdf:bag ... URN />
 <rdf:Description about="#a">
  <rdf:bag ... URN />

Neil: See this in the RDF Primer. Would this be appropriate?

Stefan: I agree with Neil. The reification is the proper solution to make statements about other statements (triplets). The syntax below is on possible way to express this. However I must say that we should not stick with syntax we should talk about the content, i.e., any valid way to express reification should be accepted.

An example taken from the primer for rdf:ID is (ex. 20):

<rdf:Description rdf:ID="item10245">
    <exterms:weight rdf:ID="triple12345" rdf:datatype="&xsd;decimal">2.4
 <rdf:Description rdf:about="#triple12345">
    <dc:creator rdf:resource=""/>

Rostockers: We still see a problem. In Example 1, it is impossible to annotate the element

 <rdf:Description rdf:about="#m">

because this would require the element to have an "rdf:ID" attribute and an "rdf:about" attribute at the same time (which is not allowed by rdf).

A workaround in this specific case would be to annotate the enclosing <annotation> element instead (which could, for this purpose, carry a "meta_id" attribute).

We think that this problem is in general due to the fact that we are using the rdf:ID attribute for something that is was not meant for and that with this mechanism, many annotations cannot have meta-annotations.


We want to add to the proposal that it is the responsibility of the author to ensure that there are no loops in the meta-annotation.

Retrieved from ""

This page was last modified 15:52, 2 June 2010.

Please use our issue tracking system for any questions or suggestions about this website. This page was last modified 15:52, 2 June 2010.