Science Environment for Ecological Knowledge
Ecoinformatics site parent site of Partnership for Biodiversity Informatics site parent site of SEEK - Home
Science Environment for Ecological Knowledge









 

 

 



SMS Hot Topics

This is version 26. It is not the current version, and thus it cannot be edited.
[Back to current version]   [Restore this version]


Current Development Tasks

  • bugzilla summary here ...

A Syntax for Semantic Annotations

Here is the current grammar for semantic annotation expressions. Note that parenthesis are special symbols used to define the grammar, e.g., ( ... )* means zero or more, ( ... )+ means one or more, and ( ... )? means zero or one.

 [1]   AnnotationGroup  ::=   ( Annotation )+ 

 [2]   Annotation       ::=   ItemExp ( "," ItemExp )* "==>" OntExp

 [3]   ItemExp          ::=   "/" ItemPath | 
                              "name(" ItemPath ")"

 [4]   ItemPath         ::=   ElemName ( "[" ItemCntxtExp "]" )*  ( Var )?  |
                              ItemPath "/" ItemPath  | 
                              "*"  | 
                              "."  

 [5]   Var              ::=   "{" "$" VarName "}"

 [6]   ItemCntxtExp     ::=   ItemPath  | 
                              ItemPath ValueComp ItemValue

 [7]   ValueComp        ::=   "eq" | "ne" | "lt" | "le" | "gt" | "ge"


 [8]   OntExp           ::=   ConceptName ( Var )? ( OntPath )? | 
                              "#" IndividualName ( OntPath )? 


 [9]   OntPath          ::=   "." RoleName ( "#" ConceptName )? ( Var )? ( OntPath )? | 
                              "." RoleName ( "#" IndividualName )? ( OntPath )?

The terminal symbols consist of ConceptName, IndividualName, RoleName, and VarName denoting ontology concept identifiers, ontology individual identifiers, ontology role names, and variable names, respectively.

The Semantics of Semantic Annotations

A Simple XML Encoding/Wrapping for Semantic Annotations

  • Some simple examples of an XML-ified version:

  <!-- a very simple annotation -->
  <sms:AnnotationGroup object="urn:lsid:...">
    <sms:Annotation>  / ==> AConcept  </sms:Annotation>
  </sms:AnnotationGroup>

  <!-- a simple annotation where a new concept is defined -->
  <sms:AnnotationGroup object="urn:lsid:...">
    <sms:Annotation>  / ==> MyConcept  </sms:Annotation>
    <sms:Where>
      <owl:Class rdf:ID="MyConcept">
        ...
      </owl:Class>
    </sms:Where>
  </sms:AnnotationGroup>

  <!-- a minimilistic port/dataset style annotation -->
  <sms:AnnotationGroup object="urn:lsid:...">
    <sms:Annotation>  /r/row/x1 ==> Transect.start.lat  </sms:Annotation>
    <sms:Annotation>  /r/row/x2 ==> Transect.end.lat  </sms:Annotation>
    <sms:Annotation>  /r/row/y1 ==> Transect.start.lon  </sms:Annotation>
    <sms:Annotation>  /r/row/y2 ==> Transect.end.lon  </sms:Annotation>
  </sms:AnnotationGroup>

  <!-- a slightly  more detailed port/dataset style annotation -->
  <sms:AnnotationGroup object="urn:lsid:...">
    <sms:Annotation>  /r/row/x1 ==> Transect{$r}.start{$s}.lat  </sms:Annotation>
    <sms:Annotation>  /r/row/x2 ==> Transect{$r}.end{$t}.lat  </sms:Annotation>
    <sms:Annotation>  /r/row/y1 ==> Transect{$r}.start{$s}.lon  </sms:Annotation>
    <sms:Annotation>  /r/row/y2 ==> Transect{$r}.end{$t}.lon  </sms:Annotation>
  </sms:AnnotationGroup>

  <!-- an unambigious detailed port/dataset style annotation -->
  <sms:AnnotationGroup object="urn:lsid:...">
    <sms:Annotation>  /r/row{$q}/x1 ==> Transect{$r}.start{$s}.lat  </sms:Annotation>
    <sms:Annotation>  /r/row{$q}/x2 ==> Transect{$r}.end{$t}.lat  </sms:Annotation>
    <sms:Annotation>  /r/row{$q}/y1 ==> Transect{$r}.start{$s}.lon  </sms:Annotation>
    <sms:Annotation>  /r/row{$q}/y2 ==> Transect{$r}.end{$t}.lon  </sms:Annotation>
  </sms:AnnotationGroup>

  <!-- an unambigious detailed port/dataset style annotation with inlined concept defs -->
  <sms:AnnotationGroup object="urn:lsid:...">
    <sms:Annotation>  /r/row{$q}/x1 ==> Transect{$r}.start#MyPoint{$s}.lat  </sms:Annotation>
    <sms:Annotation>  /r/row{$q}/x2 ==> Transect{$r}.end#MyPoint{$t}.lat  </sms:Annotation>
    <sms:Annotation>  /r/row{$q}/y1 ==> Transect{$r}.start#MyPoint{$s}.lon  </sms:Annotation>
    <sms:Annotation>  /r/row{$q}/y2 ==> Transect{$r}.end#MyPoint{$t}.lon  </sms:Annotation>
    <sms:Where>
      <owl:Class rdf:ID="MyPoint">
        <rdfs:subClassOf rdf:resource="Point"/>
        ... 
      </owl:Class>
    </sms:Where>
  </sms:AnnotationGroup>



Go to top   More info...   Attach file...
This particular version was published on 24-Jan-2005 21:41:28 PST by SDSC.bowers.