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

Current Tasks

Research

  • Languages
    • Syntax and semantics of semantic annotations
    • Approach for actors
    • Query/Function annotations
  • Algorithms
    • Semantic compatibility checking
    • Semantic propagation algorithms and framework
    • 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   Edit this page   More info...   Attach file...
This page last changed on 15-Feb-2005 13:00:48 PST by SDSC.bowers.