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


Current Tasks

Research

  • Semantics of semantic annotation
  • Semantic-type checking: "semantic compatiblity"
  • Semantic propagation
  • Merging and Integration

Development

  • APIs
    • Published interface for semantic search and required back-end operations
  • Languages
    • Serialization syntax for semantic annotations (for actors especially)
  • Implementation
    • Implementation for semantic search API for Kepler Object Manager
    • Implement workflow semantic type check
    • Implement search for actor port and dataset annotations
    • Define the needed gui extensions

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:59:01 PST by SDSC.bowers.