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 30. It is not the current version, and thus it cannot be edited.
[Back to current version]   [Restore this version]


Current Tasks

Research

Development

  • 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 "==>" 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

    1. Need to define the scope of of variables within an annotation group
    2. Need to determine what having the same variable on the right and left sides means.

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 15-Feb-2005 12:51:15 PST by SDSC.bowers.