[seek-dev] Re: [kepler-dev] seek/kepler conference call notes

Ferdinando Villa ferdinando.villa at uvm.edu
Wed Aug 25 11:57:40 PDT 2004


Matt,

I'm not sure I'm not reinventing something that's obvious to the
Keplerites, but shouldn't WSDL, EML and R be seen as actor definition
languages (as opposed to  configuration) in kepler? Is a mechanism where
a user query for data or the loading of a script creates an actor
definition (instance of an abstract EML/WDSL/R actor that provides the
generalized methods for it to do its work) conceivable in the current
implementation? That would clean the design up quite a bit.

ferdinando

On Wed, 2004-08-25 at 14:31, Matt Jones wrote:
> Well, two more issues I can see cropping up.
> 
> 1) We need to make semantic annotations for individual actors, as well 
> as models.  As far as I know there is not a MoML provided for individual 
> actors independently of a model?  How do we annotate, for example, the 
> GarpAlgorithm actor outside of a MoML model so that we can use these 
> annotations in the discovery service?  Should we be providing a 
> standalone MoML for every actor that contains only the actor and its 
> port descriptions, and then attach the 'configure' annotations to that?
> 
> 2) Some of our actors have a set of ports that are defined and loaded at 
> design time rather than compile time, and are determined by an external 
> source.  For example, the EMLDataSource actor gets its port definitions 
> by reading the metadata about a data source, and the WebService actor 
> gets its port definitions by reading the WSDL document for the service. 
> I had thought that having external annotations would be good because 
> they could be associated with the WSDL or EML rather than the actor 
> itself.  We'll need a way to annotate these dynamically created ports as 
> well as those that are statically defined within an actor.  I envision 
> this to be common.  Another example is instantiating a hypothetical R 
> actor with the ports needed for data flow into and out of a specific R 
> script, rather than using the CommandLine as we currently do (which 
> bypasses all of our typing mechanisms).
> 
> Matt
> 
> Shawn Bowers wrote:
> > 
> > Edward,
> > 
> > This is great, Thanks!
> > 
> > Basically, the configure() is a hook that we can use to, like you say, 
> > do indexing, notify EcoGrid, update a P2P catalog, etc.
> > 
> > 
> > Thanks,
> > Shawn
> > 
> > 
> > Edward A Lee wrote:
> > 
> >>
> >> Shawn:
> >>
> >> Thanks for your reply... I think I'm getting a clearer understanding of
> >> the issues, so I can be more concrete in my ideas. Following the
> >> thread:
> >>
> >> At 03:29 PM 8/23/2004 -0700, Shawn Bowers wrote:
> >>
> >>> ...
> >>>
> >>>> Second, the parsing could be greatly speeded up if, for example,
> >>>> you first searched the MoML file for a full class name that matched
> >>>> the class used to specify the semantic markup.
> >>>
> >>>
> >>>
> >>> In general, a semantic annotation isn't a class name, and could be as 
> >>> complex as a query.
> >>
> >>
> >>
> >> Yes, I realize this, but in Ptolemy II, the semantic annotation
> >> could be stored with the model as an attribute.  I.e., you include
> >> in the library a kepler.misc.SemanticAnnotation attribute, which a
> >> user drags into a model and double clicks to add the annotation.
> >> A custom editor comes up to create the annotation.  When you save
> >> to MoML, you get:
> >>
> >>    <entity name="myModel" class="...">
> >>      <property name="semanticAnnotation"
> >>                class="kepler.misc.SemanticAnnotation">
> >>        <configure>
> >>           ... semantic annotation in any (textual) language ...
> >>        </configure>
> >>      </property>
> >>    </entity>
> >>
> >> Now a (fast) browser would search MoML files for the string
> >> "kepler.misc.SemanticAnnotation" and then extract only the
> >> pertinent parts of the XML to parse.
> >>
> >> But more interestingly would be to include in the configure()
> >> method for the SemanticAnnotation class networking P2P code
> >> that updates an index with the semantic annotation.
> >>
> >>
> >>> ...
> >>>
> >>>>
> >>>> I don't see why you would need to extend the parser for MoML (?).
> >>>> Can you give me an example of what it might look like?  I'll show
> >>>> then how it can be done in MoML with no changes to the parser 
> >>>> (hopefully)...
> >>>
> >>>
> >>>
> >>> I guess I was thinking that you would have to at least extend the 
> >>> parser to extract the semantic annotation part and forward it to some 
> >>> other service to start up annotation-handler code.
> >>>
> >>> There are two types of annotations for an actor. The simplest form is 
> >>> to just say that an actor represents some instance of a particular 
> >>> ontology class (e.g., EcoNicheModel). This type of annotation could 
> >>> also be made more specific, e.g., by giving more details on how it 
> >>> instantiates a class (which by the way, essentially creates a new 
> >>> class "on-the-fly"). For example, we might say it is an instance of 
> >>> an EcoNicheModel that uses a specific type of 
> >>> LogisticRegressionModel, etc.  An actor might also be an instance of 
> >>> multiple ontological concepts (its an instance of an EcoNicheModel 
> >>> and something else ... which doesn't really fit this example, but 
> >>> anyway).
> >>>
> >>> For input/output types, semantic annotations are similar to the unit 
> >>> stuff, but generally resemble views (queries). Mainly because we need 
> >>> finer levels of detail. For example, an actor might take as input a 
> >>> list of records:
> >>>
> >>> [{lt1=double, lt2=double, ln1=double, ln2=double, s=int, n=int}]
> >>>
> >>> and the input annotation might be (where here record attributes 
> >>> denote values from the same tuple in the list):
> >>>
> >>> Community(C), LatLonPt(NW), lat(NW, lt1), lon(NW, ln1), LatLonPt(SE), 
> >>> lat(SE, lt2), lon(SE, ln2), BBox(B), nwCorner(B, NW), seCorner(B, 
> >>> SE), communityLocation(C, B), communitySpeciesCount(C, s), 
> >>> communityPopulation(C, n)
> >>
> >>
> >>
> >> So, for example, you might have:
> >>
> >>    <entity name="myActor" class="...">
> >>      <port name="input" class="...">
> >>        <property name="semanticAnnotation"
> >>                  class="kepler.misc.SemanticAnnotation">
> >>          <configure>
> >> Community(C), LatLonPt(NW), lat(NW, lt1), lon(NW, ln1), LatLonPt(SE), 
> >> lat(SE, lt2), lon(SE, ln2), BBox(B), nwCorner(B, NW), seCorner(B, SE), 
> >> communityLocation(C, B), communitySpeciesCount(C, s), 
> >> communityPopulation(C, n)
> >>        </property>
> >>       </port>
> >>    </entity>
> >>
> >> In this case, the parser for the semantic annotation would
> >> be part of the SemanticAnnotation class... No extension to the
> >> MoMLParser is needed.
> >>
> >> Edward
> >>
> >>
> >> ------------
> >> Edward A. Lee, Professor
> >> 518 Cory Hall, UC Berkeley, Berkeley, CA 94720
> >> phone: 510-642-0455, fax: 510-642-2739
> >> eal at eecs.Berkeley.EDU, http://ptolemy.eecs.berkeley.edu/~eal
-- 
Ferdinando Villa, Ph.D., Associate Research Professor, Ecoinformatics
Gund Institute for Ecological Economics and Dept of Botany, Univ. of Vermont
http://ecoinformatics.uvm.edu




More information about the Seek-dev mailing list