|
|||
|
Current Tasks
Research
Development
A Syntax for Semantic AnnotationsHere 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
A Simple XML Encoding/Wrapping for Semantic Annotations
<!-- 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>
|
This material is based upon work supported by the National Science Foundation under award 0225676. Any opinions, findings and conclusions or recomendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation (NSF). Copyright 2004 Partnership for Biodiversity Informatics, University of New Mexico, The Regents of the University of California, and University of Kansas |