At line 0 added 1 line. |
+ !!Current Tasks |
Line 2 was replaced by line 3 |
- __Current Development Tasks __ |
+ !Research |
Line 4 was replaced by lines 5-140 |
- * bugzilla summary here ... |
+ * 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__ |
+ |
+ |
+ ## Need to define the scope of of variables within an annotation group |
+ ## 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> |
+ }}} |
Removed lines 7-29 |
- __A grammar for semantic annotations__ |
- |
- Note that parenthesis ''( )''are part of the grammar language, e.g., ''('' ... '')*'' means zero or more, ''('' ... '')+'' means one or more, and ''('' ... '')?'' means zero or on. |
- |
- |
- AnnotGroup ::= ( Annot )+ |
- |
- Annot ::= ItemExp '==>' OntExp |
- |
- ItemExp ::= '/' ItemPath |
- |
- ItemPath ::= ElemName ( '[' ItemCntxtExp ']' )* ( Var )? | ItemPath '/' ItemPath | '*' | '.' |
- |
- Var ::= '{' '$' VarName '}' |
- |
- ItemCntxtExp ::= ItemPath | ItemPath Op ItemValue |
- |
- Op ::= '=' | '<' | '>' | ... |
- |
- OntExp ::= ConceptName ( Var )? ( OntPath )? |
- |
- OntPath ::= '.' RoleName ( '#' ConceptName )? ( Var )? ( OntPath )? |
- |