Package de.lmu.ifi.pms.spex.engine.annotations

This package contains implementations for Spex annotations.

See:
          Description

Interface Summary
AnnotationStack This interface represents a stack of annotations.
 

Class Summary
Annotation This class represents normal Spex annotations as described in the package description.
AnnotationFactory Factory class for generating annotations.
AnnotationHashMap This class represents a set of Annotation objects organized in a hashmap.
AnnotationMapping This class represents a mapping from one annotation to another one.
AnnotationMappingStack This class represents a stack of AnnotationMapping objects.
AnnotationStackImpl Default implementation for the AnnotationStackinterface.
AnnotationStackImproved Default implementation for the AnnotationStackinterface.
BitSetAnnotation A BitSet implementation of the Annotation interface.
EmptyAnnotation This implementation of the Annotation interface is considered to be an empty annotation, so the isEmpty() method will always return true.
HeadAnnotation HeadAnnotations are somelike different to normal Annotations.
IntervalAnnotation An interval implementation of the Annotation interface.
SatisfiedAnnotation This implementation of the Annotation interface is considered to be a satisfied annotation.
 

Package de.lmu.ifi.pms.spex.engine.annotations Description

This package contains implementations for Spex annotations. Spex annotations are considered to annotate Spex messages. There are basically two different kinds of annotations: the normal annotations and the head annotations (which will be explained later).

The normal annotations can be in three different states, which is satisfied, empty and undetermined. Udetermined annotations are holding a finite set of so called condition numbers (which effectively are non-zero positive integers). You can think of undetermined annotations as annotations, which are satisfied if one of their conditions get satisfied. Empty annotations are unsatisfied and never can get satisfied during Spex processing.

During Spex processing some transducers will decide what to do with an incoming message by examining its annotation state (and the state of the topmost annotation on their stack, if they have a stack). For example they may re-annotate a message with a new annotation, or just forward it unchanged. Most of the transducers will keep track of incoming message-annotations with an annotation-stack.

Sometimes annotations will have a scope, which is the scope begin transducer which created them. In fact, every undetermined annotation will always have a scope, because they are only created by scope begin transducers. There will only be one satisfied annotation, and that one will not been created by a scope begin transducer and will therefore not have a scope.

Some messages can get annotated with head annotations by the so called head transducers. Head transducers are considered to be the last location step transducers in a transducer network and have the function to decide if a message is a Spex result, a possible Spex result, or not a Spex result. This information will be stored in the head annotation of that message. Head annotations are a set of normal annotations of different scopes. The same normal annotation can be contained by a head annotation several times, if each occurence of that normal annotation has a different scope. If the head annotation of a message m contains the normal satisfied annotation, then that message m is a Spex result. If the head annotation of a message m only contains the normal empty annotation, then that message m is not a Spex result. If the head annotation of a message m only contains normal annotations with undetermined state then the result-state of that message m is undetermined too. In this case the normal annotations contained by the head annotations will in some time during processing be mapped to another normal annotations. This way, they can either be mapped to the satisfied annotation, the empty annotation, or to other undetermined annotations, which will perhaps change the result-state of the message.

Copyright Notice

Code Authors: Fatih Coskun
Design Authors: Fatih Coskun, Dan Olteanu


This SPEX version is based on previous versions developped by Dan Olteanu
and on research articles that can be found at
http://www.pms.informatik.uni-muenchen.de/publikationen/


The material distributed here have been provided by the contributing authors
as a means to ensure timely dissemination of technical and scholarly work on
a noncommercial basis.


Copyright and all rights therein are maintained by the authors.


It is understood that all persons copying material distributed here will
adhere to the terms and constraints implied by the applicable copyrights.
The code distributed here may not be redistributed -- in particular may not
be electronically reposted -- without the explicit permission of the
copyright holders.


The material made available here is exclusively for private use. No part of
it may be distributed in classes or in publications, reproduced, stored in a
retrieval system, or published, in any form or by means electronic,
mechanical, photocopying, or otherwise, without prior written permission of
the authors and of the copyright holders.