EES Features
Features are properties of Text Graph elements (nodes and links). They are constants which are attached to the graph elements.

Features in matching patterns
Features can be accessed within Pattern Element Conditions as shown here:
Syntax:
pattern_element<expression(feature) operation constant>
where operation is "=" or "!=".
If functions are used to create expressions, richer conditions are possible:
pattern_element<expression1_referring_to_feature(s) operation expression2_referring_to_feature(s)>

Assigning features in output phrases
In both Pattern Matching Conditions and Output Phrases it is useful to be able to access features of parts of the Matching Pattern. This is done by labeling the pattern element or segment and using the dot notation to access the labelled regions features.
$label.feature
Example:
Token{2} = $person
Token.punctuation.comma
Token = $location
>Person_Location<name = $person.text(), origin = $location.string>

Wildcard feature transfer to output links
To copy all of the features from one or more elements in the matching pattern to all the output links, insert "[*]" after those elements:
input_link[*]
> output_link
Restrictions are placed before the wildcard:
input_link<costarts(other_link)=>[*]
>output_link
If there is more than one element marked with "[*]", then the features of each element are copied to the output links in sequence from the first to the last in the matching pattern, writing over any features with the same name.
The EES system can see and refer to features that are present at that stage of the Sintelix workflow. If the features are produced later, it cannot see them! So if the features you expect to be able to copy aren't being copied, or more subtly, if some of your rules that have features in their conditions aren't firing - this could be the reason.
To check, run the workflow in the Text Graph analyser up to the point of your EES (early or late) and observe which features are available at that point.

Feature output link exceptions
Features added to the output annotations are copied to the output, eventually becoming Entity features. However, the following exceptions apply:
- if a link feature starts with "@" symbol, it's never copied to the document model. Such features are only available in the graph.
- if a link feature starts with "#" symbol, it remains a text reference feature and not an Entity feature. An example of this is "#adjectival" feature of Location text references which indicates whether the text reference is in adjectival form.
- if a link feature starts with "$" symbol, it becomes an entity feature but does not get copied to the network. It signifies a feature that is true only in the context of one document. An example of this is feature "#email-role" of Person entities in an email, which specifies whether the person is a sender or recipient of this email.

Node and token features
Like other graph elements, nodes and tokens also have features. These are key-value pairs that contain more information about the element's state and position.
Node features
Node features:
- isBlank (true/false)
- isBreak (true/false)
- isWhitespace (true/false)
- kind ("whitespace", "blank", "break")
- length (integer)
Token features
Token features:
- common% (probability that the word is a common word as opposed to being [part of] a proper noun)
- isEmphasisedWord (true/false)
- kind (see below)
- subkind (see below)
- length (integer)
- pos.XXX (probability of part of speech tag XXX)
- string (string)
- string.lower (string)
- typography
Token features: kinds and subkinds
Tokens have the features "kind" and "subkind" that can also be used to name tokens in EES rules. The naming scheme is "Token".<kind>.<subkind>, with examples shown below:
- Token.number.1-digit
- Token.number.2-digit
- Token.number.3-digit
- Token.number.4-digit
- Token.punctuation.bracket.close
- Token.punctuation.bracket.open
- Token.punctuation.comma
- Token.punctuation.dash
- Token.punctuation.period
- Token.punctuation.semicolon
- Token.punctuation.slash
- Token.symbol.misc
- Token.word.letter
- Token.word.non-letter
A good way to find out the kind and subkind descriptors available is to put some text relevant to your project into the graph analyser UI, and see what is listed. In the example below, the cursor is hovering over "Term.symbolic" and the instances are shown highlighted on the text graph above.