The XML format for defining annotations and their display
properties in the task files (see "Creating
a New Task") is described in this document. Use cases can be
found here. Click here for a split-screen view.
There are two methods for defining annotations and their display
elements. The legacy method consists of the <annotation_set_descriptor>
element and its children, along with the <annotation_display>
element and (most of) its children. The new method, more concise
and differently organized, is represented by the <annotations> element. For
a comparison of the two mechanisms, see the use cases here.
It's possible to combine the two methods. In that case, the processing order is first <annotation_set_descriptors>, then <annotations>, then <annotation_display>.
<annotation_set_descriptor>
<annotation>
<attribute>
<range>
<choice>
<label_restriction>
<attributes>
<annotation_display>
<label>
<gesture>
<attribute>
<choice>
<label_group>
<gesture>
<annotations>
<annotation_set>
<span>
<effective_labels>
<label>
<d_gesture>
<display_group>
<int>
<choice>
<int_set>
<int_list>
<string>
<choice>
<string_set>
<string_list>
<float>
<float_set>
<float_list>
<boolean>
<positive>
<negative>
<filler>
<filler_type>
<filler_set>
<filler_list>
<d_gesture>
<spanless>
<int>, <int_set>, <int_list>, <float>, <float_set>, <float_list>,
<effective_labels>, <string>, <string_set>, <string_list>,
<boolean>, <filler>, <filler_set>, <filler_list>,
<d_gesture>
<display_group>
<span>, <spanless>, <display_group>
The toplevel element. Each annotation set descriptor corresponds
to a subset of the annotations used in your task.
For simple tasks, there's no reason to define more than one set
of content annotations. If your task is more complex - e.g., if
you have both mentions and relations between them, for instance -
you may choose to have multiple content annotation sets; you can
specify that particular steps in your workflow modify or add
different sets, and you can do mixed-initiative
annotation for each set separately, if you have different
trainable engines for the different sets. You can even have sets
which contain attributes of annotations which were introduced in a
different set, so you can edit these attributes in their own step.
XML attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
name | a string |
yes | The name of the annotation
set descriptor. By convention, for tasks with a single set
of content annotations, this is "content". There are no
restrictions on the name. |
Element |
Obligatory? |
Repeatable? |
Description |
---|---|---|---|
<annotation> | no | yes | A possible annotation in the
descriptor. |
<attribute> | no | yes | An attribute for some
annotation(s) in the descriptor. |
Each annotation type in the set descriptor is defined by one of
these elements. Note that the attributes for the annotation are
defined as sister elements, not children, to make it possible for
attributes to be defined in separate sets from their annotations.
XML attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
label | a string |
yes | The label for the annotation
type. |
all_attributes_known | "yes" |
no | Under normal circumstances,
MAT does not object to finding "undeclared" attributes of
annotations in the documents it reads. If this XML
attribute/value pair is present, the annotation type is
"locked"; in other words, when MAT reads in a document in
the context of a task corresponding to this annotation set
descriptor, it will object to any "stray" attributes which
appear on annotations of this type. |
span | "no" |
no | By default, annotation types
define spanned annotations. If this XML attribute/value pair
is present, this type will be spanless. |
processable |
"no" |
no |
By default, all annotation types can be used
as training input, if you train a model on the annotation
step that adds the set they're a member of. In some cases,
however, the annotator might want an annotation available
during hand annotation for a step, but intended intended as
a memo for hand annotation only, rather than input to a
training algorithm (e.g., "LookAtThisAgain", "WhatIsThis").
You can designate such an annotation by adding
processable="no" to its declaration. Both the model trainer
and the scorer will ignore labels marked in this way. |
Attributes are defined separately from the annotations that bear
them. The reason for this is to enable annotation sets, and steps
which edit them, which only add an attribute to an existing
annotation (e.g., part-of-speech tagging implemented as adding a
"POS" attribute to the "lex" tag).
The default value of every attribute is null unless otherwise
specified.
XML attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
name | a string |
yes | The name of the attribute. |
of_annotation | a comma-separated sequence of
strings |
yes | The annotation label or
labels which bear this attribute. |
type | one of "string", "int",
"float", "boolean", "annotation" |
no | The type of the attribute
value. Default is "string". |
aggregation | one of "set", "list" |
no | By default, the values of
attributes are singletons. If you want the value to be a set
or list of the objects of the specified type, indicate it
with this XML attribute. |
default | various |
no | If present, a default value for this attribute. The value must be of the appropriate type. For "boolean" attributes, use "yes" or "no". Defaults are not available for "annotation" attributes. This attribute can't be defined alongside the "default_is_text_span" attribute. |
default_is_text_span | "yes" |
no | If present, the default value
for this attribute is digested from the span of the
annotation (so this option is only available for attributes
of spanned annotations). If the span can't be digested into
a value of the appropriate type, no default will be set.
This attribute can't be defined alongside the "default"
attribute. This attribute is available for "int", "string", and "float" attributes. |
Element |
Obligatory? |
Repeatable? |
Description |
---|---|---|---|
<range> | no | no | For "int" and "float"
attributes, the range of permitted values. |
<choice> | no | yes | For "string" and "int"
attributes, one of the possible choices for values. If the
attribute has at least one <choice> child, the choices
listed are the only permitted values. This element has no element children; its value is the text it delimits. |
<label_restriction> | no | yes | For "annotation" attributes,
a restriction on attribute value. For any "annotation"
attribute, there must be at least one label restriction.
Every value must satisfy at least one of the restrictions. |
For "int" and "float" attributes, you can define a range for the
possible attribute values. You can define both endpoints of the
range, or only one.
For "int" attributes, <choice> and <range> cannot cooccur.
XML attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
from |
an int or float |
no | The minimum (inclusive)
endpoint of the range. The required type of the value
depends on the type of the attribute that bears it. |
to | an int or float |
no | The maximum (inclusive) endpoint of the range. The required type of the value depends on the type of the attribute that bears it. |
For "string" and "int" attributes, you may provide a list of explicit choices. If the attribute has at least one <choice> child, the choices listed are the only permitted values. The <choice> element enclosed text is the choice itself.
You can further specify choices as "effective labels", which are notional labels which are actually implemented as a label + attribute/value pair, e.g., "PERSON" implemented as "ENAMEX" + "type" = "PER". You can refer to these effective labels in various places in the task and annotation set descriptor specifications, as marked.
If one <choice> element has an effective label, they all
must; and no more than one attribute for a given annotation type
may define effective labels. The effective label must be distinct
from all other effective labels in the set, and all other
annotation labels.
For "int" attributes, <choice> and <range> cannot
cooccur.
XML attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
effective_label | a string |
no | If present, the effective
label corresponding to the combination of this annotation
with this attribute value. |
For "annotation" attributes, you must define at least one label
restriction. Every value of the attribute must satisfy at least
one of the restrictions. The restrictions can be a simple label or
effective label, or they can also bear attribute/value
restrictions.
XML attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
label | a string |
yes | A label or effective label which the attribute value must match in order to satisfy this restriction. If no attribute-value pairs are specified, you may specify all the labels in an annotation set by using "set:" + the set name as the value of this attribute, e.g., "set:content". |
Element |
Obligatory? |
Repeatable? |
Description |
---|---|---|---|
<attributes> | no | no | Arbitrary attribute/value
pairs which must also be satisfied. |
Label restrictions may also bear attribute/value pairs which must
be satisfied in order to satisfy the restriction.
XML attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
<attr> | a string | no | the <attributes>
element supports arbitrary XML attribute-value pairs. Each
<attr> must be defined for the label restriction
label, and must be a choice attribute (i.e., either a string
or int attribute which has choices associated with it). |
This element defines all the display-related properties in the
MAT UI of the elements defined in an
<annotation_set_descriptor> element. Most of what you can do
here is define the display-related properties of labels, although
you can also define some of the properties of attributes, and also
define groups for hierarchical annotation displays.
Note that the order in which the elements in
<annotation_display> are defined is the order in which the
CSS display rules are defined; so the styling of <label> and
<label_group> elements takes precedence of the styling of
previous <label> and <label_group> elements.
The <annotation_display> element and (most of) its
children, along with the <annotation_set_descriptors>
element and its children, constitute the legacy method for
defining annotations and their display elements. For a more
concise and differently organized mechanism, see the <annotations> element. For
a comparison of the two mechanisms, see the use cases here. Note that the
<gesture> element on spans is only definable in the
legacy <annotation_display> subsystem.
It's possible to combine the two methods. In that case, the processing order is first, <annotation_set_descriptors>, then <annotations>, then <annotation_display>.
Element |
Obligatory? |
Repeatable? |
Description |
---|---|---|---|
<label> | no | yes | Defines the display-related
properties for a true or effective label |
<attribute> | no | yes | Defines the display-related
properties for an attribute of a particular label |
<label_group> | no | yes | Defines groups for
hierarchical annotation displays |
<gesture> |
no |
yes |
Defines arbitrary menu gestures on spans for
the annotation popup menu |
This element defines the display-related properties of true or
effective labels.
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
name | a string |
yes | The true or effective label
to which this definition applies. |
accelerator | a single-character string |
no | If specified, this
accelerator will be available in the annotation selection
menu in the Web UI; if the user presses this key, this
annotation will be selected for the span, just as if the
element in the menu had been chosen. If the same accelerator
is used in more than one place, and only one of the uses is
visible (if, e.g., you have set up label groups to create a
hierarchical menu), the visible one will be used. Otherwise,
in the case of unresolved ambiguity, nothing will happen
when you press the key. |
edit_immediately | "yes" |
no | If a label has attributes, or
if it can be the value of an annotation-valued attribute, it
is possible to edit the annotation in the UI, either in a
popup dialog or in a detail tab. If the annotation is
spanless, this editor will appear automatically when the
annotation is created; if it is spanned, it will not. If you
provide this attribute-value pair, the editor will appear
automatically when the annotation is created, whether or not
it's spanned. |
presented_name | a format string |
no | In the UI, there are many
places (e.g., in the annotation tables) where the annotation
can be described, and by default, the description for
spanned annotations is the covered text, while the
description for spanless annotations is the annotation ID.
Sometimes, this name isn't what you would prefer it to be,
and you can use this attribute to define the name you
prefer. The syntax for the value of this string is described
immediately below. |
css | a string of legal CSS |
no | If the label is a spanned label, the UI will apply this CSS on a token-by-token basis to any span labeled by this annotation. If the label is a spanless label, the CSS will be applied to its icon in the spanless sidebar. Because there's no text in the spanless sidebar, and because annotations can overlap and be displayed in an exploded, stacked representation in spanned hand annotation and in comparison, it's probably best to ensure that the primary aspect of this CSS is background styling. |
rendering_style |
"normal", "background_span" |
no |
In some cases, you might want a spanned
annotation to be rendered behind the text, always, because
it's "background" material (e.g., paragraph or sentence
annotations). If you set the value of the rendering_style
attribute to "background_span", you can accomplish this. In
addition, these annotations will never be displayed in front
of annotations that don't have this rendering style; they
will not be displayed in the hover line when you hover over
non-background annotations which overlap with them; they are
not selectable if there's a selectable non-background
annotation which could be selected instead; and unlike
normal spanned content annotations, they do not block
autotagging. These annotations are otherwise completely
normal; you can modify them by hand, add attributes to them,
etc. This attribute will only be recognized on spanned content annotations. |
overlap_rank |
an integer |
no |
By default, the overlap order of spanned
annotations in a task is the order in which they're defined.
However, you can modify this overlap order by specifying
overlap_rank on some or all of your labels. If at least one
overlap_rank is specified, all labels lacking the
specification will be ordered (in the order they're defined)
behind the labels bearing a specification, and all those
labels bearing a specification will be ordered in front of
those other labels, in the order of their overlap_rank
value. If the task has a parent task, all labels not defined
locally will be ordered behind the locally defined labels. |
Element |
Obligatory? |
Repeatable? |
Description |
---|---|---|---|
<gesture> |
no |
yes |
Defines special menu gesture on annotations
for the annotation popup menu for this label |
The presented_name attribute is a simple string, with format
directive of the form $(...). The values within the parentheses
can be any of the attributes of the label (in which case the
format directive will be replaced by the attribute value), or one
of the special values listed below. The format directive can also
contain key-value pairs, as in $(val:a=b,c=d). We describe the
possible key-value pairs below as well.
special value |
interpretation |
---|---|
_start |
The start index of the spanned annotation |
_end |
The end index of the spanned annotation |
_parent |
The parent annotation(s) (i.e., the
annotation(s) which have this annotation as a value of an
annotation-valued attribute) |
_label |
The true or effective label of the annotation |
_text |
The spanned text of the spanned annotation |
key |
available for |
possible value |
interpretation |
---|---|---|---|
truncate |
_text |
integer |
If specified, the UI will ensure that the
spanned text is no longer than n characters long. This
value cannot be less than 5. The UI will show the
beginning and end of the text, and show the truncated
medial text with ellipses (...). |
truncate |
_parent |
integer |
If specified, the UI will limit the number
of parent annotations listed, and indicate the remainder
of the list with ellipses (...). |
showLabel |
_parent, any annotation-valued attribute |
"no" |
By default, when the UI displays an
annotation attribute value as part of the name of an
annotation, it contains the label of the annotation value.
If you don't want the label displayed, provide this
key-value pair. |
showIndices |
_parent, any annotation-valued attribute | "yes" |
By default, when the UI displays an
annotation attribute value as part of the name of an
annotation,it does not display its start and end indices.
If you want these indices displayed, provide this
key-value pair. |
showFormattedName |
_parent, any annotation-valued attribute | "yes" |
By default, when the UI displays an
annotation attribute value as part of the name of an
annotation, it does not display the value's formatted
name. If you want the formatted name displayed, provide
this key-value pair. |
showFeatures |
_parent, any annotation-valued attribute | "yes" |
By default, when the UI displays an
annotation attribute value as part of the name of an
annotation, it does not display the values attribute-value
pairs. If you want these pairs displayed, provide this
key-value pair. |
So, for example, if you want the presented name of your
annotation to contain the text truncated to 20 characters, your
value for presented_name would be "$(_text:truncate=20)".
In some cases, you may want to customize the annotation menu
actions for an existing annotation. These actions will appear in
the annotation popup menu when you select an existing annotation,
not when you create a new one. You'll need to be able to do some
programming to implement the action. If this gesture is defined in
the scope of a true label which corresponds to effective labels,
the gesture will be made available to all the effective labels.
See also the for_label attribute of the <gesture>
subelement of <annotation_display>.
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
label | a string |
yes | The label that will appear in
the annotation popup menu. |
function | a string |
yes |
This Javascript function will
be invoked on the existing annotation and the document
display. You can define your function in your task directory
in your Javascript
customization file. Unfortunately, we don't really
have the resources to document the API this function has to
conform to; either dig through the source code yourself, or
ask us for help. |
writeable_only |
"yes" |
no |
If present, the gesture is only presented
when the label is writeable. |
attribute_writeable_only |
a string |
no |
If present, a comma-separated list of
attributes which must be writeable in order for the gesture
to be presented. |
This element defines the display-related properties for specific
annotation attributes.
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
name | a string |
yes | The name of a known attribute |
of_annotation | a string |
yes | The name of a known true or
effective label |
editor_style | "long_string" |
no | There are two ways of
providing attribute values for non-choice string attributes
in the UI: via a short typein window or via a multi-line
typein window. By default, a short typein window will be
used. If you provide this attribute-value pair, a long
typein window will be used. Ignored if the attribute is not
a string attribute, or if it's a choice attribute. |
max_choice_size |
an integer |
no |
For set-valued string and int attributes with
choices, this attribute provides a way of limiting the size
of the presented multi-select in the UI. By default, the
maximum size is 5. For choice sets above this size, the
multi-select will scroll. |
read_only |
"yes" |
no |
Attributes are typically editable. If for
some reason you don't want to be able to edit an attribute
directly in the annotation editor (e.g., the attribute value
is automatically populated by a custom editor, as described
below), use this setting. |
custom_editor | a string |
no | You may have a string attribute which is actually a date, which you want to use a calendar widget to populate; or you might want to look up the annotation text in a database, and use the results to populate the attribute value. If you're willing to do some programming, you can use this attribute to specify an arbitrary JavaScript function for a string, int, or float attribute, to use as its editor. You can define your function in your task directory in your Javascript customization file. Unfortunately, we don't really have the resources to document the API this function has to conform to; either dig through the source code yourself, or ask us for help. |
custom_editor_is_multiattribute | "yes" |
no | If you've associated a
custom_editor with this attribute, this attribute-value pair
tells the UI that the editor will fill multiple attributes.
Deprecated in favor of custom_editor_multiattributes. |
custom_editor_multiattributes |
a string |
no |
If you've associated a custom_editor with
this attribute, this attribute-value pair tells the UI that
the editor will fill multiple attributes, and which
attributes it fills. The value is a comma-separated list of
attribute names. This is preferred to
custom_editor_is_multiattribute, because the latter doesn't
provide enough information to unset this attribute (since,
really, all the attributes that were filled should be
cleared). Note that the names of the attributes in this list
are not currently checked against the list of attributes for
the annotation. |
custom_editor_button_label |
a string |
no |
If you have a custom editor, but you want the
label to be something other than "Edit" (let's say the value
is automatically calculated when you press the button), use
this. |
url_link |
a string |
no |
When the annotation attribute is displayed in
the annotation editor or the annotation table, the
annotation will be used to construct a URL link. The syntax
is identical to that of presented_name above, except that
of the special values, only _text is recognized, and no
key-value pairs are recognized within each directive. So,
e.g., if you want the link on an annotation attribute to
search for the spanned text in Google, the value of url_link
would be http://www.google.com/search?q=$(_text) |
annotation_table_sort_fn |
a string |
no |
If present, the name of a Javascript sort
function to use when sorting the corresponding annotation
table column. This option is only recognized for string
attributes. |
Element |
Obligatory? |
Repeatable? |
Description |
---|---|---|---|
<choice> | no | yes | Container for accelerators
for choice attributes |
When you select an existing annotation in the UI, you have the
option of modifying choice attributes of that annotation via the
annotation popup menu. The purpose of the <choice> element
in the annotation display is to specify a keyboard accelerator you
can use to select a particular choice attribute. The value of the
choice attribute is the text it delimits, and that text must match
precisely the value defined in the corresponding <choice>
element in the annotation set descriptor. If this task has a
parent task, and an accelerator for this annotation, attribute and
choice is defined, it will be inherited unless overridden locally.
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
accelerator | a single-character string |
yes | This accelerator will be available in the annotation popup submenu in the Web UI which corresponds to the attribute which bears this choice; if the user presses this key, this choice will be selected for the attribute, just as if the element in the menu had been chosen. |
Under some circumstances, you might want to create cascaded
annotation menus in the MAT UI, perhaps in order to group together
similar annotations, or provide options for more or less general
annotations, or to compress the screen real estate taken up by the
annotation popup menu. You can use the <label_group> element
to accomplish this.
Each label group has a name. This might correspond to a known
true or effective label (in which case it refers to that
annotation), or it might be a previously unknown name, in which
case it serves merely as a group. The children of each label group
can be actual annotation names, or other known label groups. The
annotations the label group refers to must be content annotations.
If the label group is not otherwise known, it has the option of
declaring CSS styling for the menu entry.
Any known label referenced here must be styled. The whole point of <label_group> is to create cascades for annotation menus, and if the label isn't styled, it doesn't appear in the annotation menu at all. As a result, it's an error for a reference label of <label_group> not to be styled.
Label groups are inherited from an available parent task; this group information is filtered by the locally defined annotations. Local label groups override parent label groups.Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
name | a string |
yes | The name of the label group, either a new name or the name of a true or effective content annotation |
children | a string |
yes | A comma-delimited sequence of names, either names of existing content annotations or of known label groups |
css | a string |
no | Like the css attribute on the <label> element above. Used to assign styling to otherwise unknown label groups. |
This element defines arbitrary menu gestures for the annotation
popup menu. Its functionality is similar to the custom_editor and
url_link attributes of the <attribute> element. When
for_label is not present, this gesture is a gesture on a swiped
text span, and will only be available in the spanned annotation
pane. When for_label is present, this gesture is applied to
annotations and duplicates the functionality of the
<gesture> subelement of the <label> element in
<annotation_display>.
Attribute |
Value |
Obligatory? |
Description (without
for_label) |
Description (with for_label) |
---|---|---|---|---|
label | a string |
yes | The
label that will appear in the annotation popup menu. |
|
function | a string |
no | You might wish to invoke a
Javascript function on the text, start index and end index
of your mouse selection (either a swipe, or a selected
annotation). If you're willing to do some programming, you
can use this attribute to specify an arbitrary JavaScript
function to call. You can define your function in your task
directory in your Javascript
customization file. Unfortunately, we don't really
have the resources to document the API this function has to
conform to; either dig through the source code yourself, or
ask us for help. Either this or the url_link attribute must be specified. |
If for_label is specified, this value instead operates as the function associated with the <gesture> subelement of the <label> element in <annotation_display>. |
url_link |
a string |
no |
The text, start index and end index are used
to create a URL, which will be presented in new browser
window. The syntax is identical to that of presented_name above, except that
only _text, _start and _end are recognized, and no key-value
pairs are recognized within each directive. So, e.g., if you
want this gesture to search for the spanned text in Google,
the value of url_link would be http://www.google.com/search?q=$(_text) Either this or the function attribute must be specified. |
N/A |
for_label |
a string |
no |
N/A |
If present, this element duplicates the functionality of the <gesture> subelement of the <label> element in <annotation_display>. The value should be the true or effective label for which this gesture applies, and function must be specified, and url_link must not be. The primary value of this attribute is to ensure that label-specific gestures can be conveniently declared when using the new <annotations> element. |
writeable_only |
"yes" |
no |
N/A |
See the <gesture>
subelement of the <label> element in
<annotation_display>. |
attribute_writeable_only |
a string |
no |
N/A |
See the <gesture> subelement of the <label> element in <annotation_display>. |
The <annotations> element, introduced in MAT 3.1, provides
a more concise and differently organized mechanism for defining
annotations and their display elements, in comparison with the
legacy <annotation_set_descriptors> element and its
children, along with the <annotation_display>
element and (most of) its children. For a comparison of the two
mechanisms, see the use cases here.
It's possible to combine the two methods. In that case, the
processing order is first, <annotation_set_descriptors>,
then <annotations>, then <annotation_display>.
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
all_annotations_known | "yes" | no | By default, the task leaves its annotation sets "open"; i.e., if the task encounters an unknown annotation label, it won't raise an error. If you provide the value "yes" for this attribute, an error will be raised if the task encounters an unknown annotation. |
inherit | a comma-separated list of labels to inherit | no | You can inherit annotations
from other tasks, either by true label, by set (see the
"of_set" attribute of the child elements) or by category
(see the "of_category" attribute of the child elements). To
inherit an annotation by label, simply list it; to inherit a
category or set, list "category:" or "set:" + the category
or set name. Individual true labels will be inherited with
all of their attributes, even those defined in other sets.
You can augment inherited sets, categories or true labels in
the child task. A typical value for this attribute is "category:zone,category:token", which inherits the annotations for the zone and token categories from the parent (usually root) task. |
Element |
Obligatory? |
Repeatable? |
Description |
---|---|---|---|
<annotation_set> |
no |
yes |
A declaration of a specific annotation set. |
<span> | no | yes | A spanned annotation label. |
<spanless> | no | yes | A spanless annotation label. |
<display_group> | no | yes | A grouping of labels for
hierarchical label display. |
The <annotation_set> element, introduced in MAT 3.3, allows
the user to define annotation
sets before they're referenced. This has two uses:
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
category | a string |
no | The category of the
annotation set. These values are user-definable (aside from
a few predetermined values like "zone" and "token"). The
default category is "content". |
name |
a string |
yes |
The name of the annotation set. The names are
user-definable, and you can have a many-to-one mapping from
names to categories, to facilitate set grouping. |
managed |
"no" |
no |
By default, annotation sets are managed, which means that SEGMENT annotations are established to track the annotation progress for this set. If, for some reason, you don't want your sets to be managed, set this attribute to "no". We don't recommend doing this, except in one specific circumstance, described immediately below. |
Virtually all annotation sets are managed. The one circumstance in which you might want to define an unmanaged set is if you have an automated engine which adds tokens simultaneously with another type of annotation (e.g., sentences). In this case, you'd have to define the set which contains the sentence annotation as unmanaged, because the step you'll declare will add both annotation sets, and you can't define a step which adds both managed and unmanaged annotation sets simultaneously. Since tokens are unmanaged, and the engine adds them and sentences at the same time, sentences must also be unmanaged.
This element defines a spanned annotation type.
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
label | a string |
yes | The label for the annotation type. |
all_attributes_known | "yes" |
no | Under normal circumstances, MAT does not object to finding "undeclared" attributes of annotations in the documents it reads. If this XML attribute/value pair is present, the annotation type is "locked"; in other words, when MAT reads in a document in the context of a task corresponding to this annotation set descriptor, it will object to any "stray" attributes which appear on annotations of this type. |
of_set |
a string |
no |
The annotation set descriptor to which this
annotation type belongs. If not specified, the value is
"content". The names are user-definable, and you can have a
many-to-one mapping from names to categories, to facilitate
set grouping. If the annotation set name has not previously
appeared in the task, a new annotation set will be defined.
See here for an
overview. |
of_category |
a string |
no |
The category to which the annotation set descriptor for this annotation type belongs. If the annotation set name has not previously appeared in the task, the category of the newly-defined annotation set will be the value of this attribute, or "content" if this attribute is not specified. If the annotation set was defined elsewhere, the value of this attribute, if present, must match the category of the existing set. See here for an overview. |
processable | "no" |
no | By default, all annotation types can be used as training input, if you train a model on the annotation step that adds the set they're a member of. In some cases, however, the annotator might want an annotation available during hand annotation for a step, but intended intended as a memo for hand annotation only, rather than input to a training algorithm (e.g., "LookAtThisAgain", "WhatIsThis"). You can designate such an annotation by adding processable="no" to its declaration. Both the model trainer and the scorer will ignore labels marked in this way. |
All attributes related to the display of this annotation in the MAT UI begin with "d_".
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
d_css | a string of legal CSS | no | The UI will apply this CSS on a token-by-token basis to any span labeled by this annotation. |
d_presented_name | a format string | no | In the UI, there are many places (e.g., in the annotation tables) where the annotation can be described, and by default, the description for spanned annotations is the covered text. Sometimes, this name isn't what you would prefer it to be, and you can use this attribute to define the name you prefer. The syntax for the value of this string is described here. |
d_accelerator | a single-character string | no | If specified, this accelerator will be available in the annotation selection menu in the Web UI; if the user presses this key, this annotation will be selected for the span, just as if the element in the menu had been chosen. If the same accelerator is used in more than one place, and only one of the uses is visible (if, e.g., you have set up label groups to create a hierarchical menu), the visible one will be used. Otherwise, in the case of unresolved ambiguity, nothing will happen when you press the key. |
d_edit_immediately | "yes" | no | If a label has attributes, or if it can be the value of an annotation-valued attribute, it is possible to edit the annotation in the UI, either in a popup dialog or in a detail tab. If you provide this attribute-value pair, the editor will appear automatically when the annotation is created. |
d_overlap_rank |
an integer |
no |
By default, the overlap order of spanned annotations in a task is the order in which they're defined. However, you can modify this overlap order by specifying overlap_rank on some or all of your labels. If at least one overlap_rank is specified, all labels lacking the specification will be ordered (in the order they're defined) behind the labels bearing a specification, and all those labels bearing a specification will be ordered in front of those other labels, in the order of their overlap_rank value. If the task has a parent task, all labels not defined locally will be ordered behind the locally defined labels. |
d_rendering_style |
"normal", "background_span" |
no |
In some cases, you might want a spanned
annotation to be rendered behind the text, always, because
it's "background" material (e.g., paragraph or sentence
annotations). If you set the value of the rendering_style
attribute to "background_span", you can accomplish this. In
addition, these annotations will never be displayed in front
of annotations that don't have this rendering style; they
will not be displayed in the hover line when you hover over
non-background annotations which overlap with them; they are
not selectable if there's a selectable non-background
annotation which could be selected instead; and unlike
normal spanned content annotations, they do not block
autotagging. These annotations are otherwise completely
normal; you can modify them by hand, add attributes to them,
etc. |
Element |
Obligatory? |
Repeatable? |
Description |
---|---|---|---|
<effective_labels> | no | no | A string attribute which
defines an effective label. |
<int> | no | yes | An integer attribute. |
<int_set> | no | yes | A set-valued integer attribute. |
<int_list> | no | yes | A list-valued integer attribute. |
<string> | no | yes | A string attribute. |
<string_set> | no | yes | A set-valued string attribute. |
<string_list> | no | yes | A list-valued string attribute. |
<float> | no | yes | A float attribute. |
<float_set> | no | yes | A set-valued float attribute. |
<float_list> | no | yes | A list-valued float attribute. |
<boolean> | no | yes | A boolean attribute. |
<filler> | no | yes | An annotation attribute |
<filler_set> | no | yes | A set-valued annotation attribute. |
<filler_list> | no | yes | A list-valued annotation attribute. |
<d_gesture> |
no |
yes |
A menu gesture for this label. |
An <effective_labels> attribute is a special type of string
attribute. String (and integer) attributes can have explicit lists
of choices as possible values for the attribute. An "effective
label" is a notional label which are actually implemented as a
label + attribute/value pair, e.g., "PERSON" implemented as
"ENAMEX" + "type" = "PER". You can refer to these effective labels
in various places in the task and annotation set descriptor
specifications, as marked. Because these string choices can be
given notional names and their own display properties, we've
chosen to break out these string attributes in their own
definition.
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
name | a string |
yes | The name of the attribute. |
of_set | a string |
no | The annotation set descriptor to which this attribute belongs. If not specified, the value is "content". The names are user-definable, and you can have a many-to-one mapping from names to categories, to facilitate set grouping. See here for an overview. Attributes can be defined in separate sets from the annotations that bear them, to facilitate distinct automated and human processing of the attributes. |
of_category | a string |
no | The category to which the annotation set descriptor for this attribute belongs. If not specified, the value is "content". See here for an overview. |
default |
a string |
no |
If present, a default value for the effective
label attribute. |
Element |
Obligatory? |
Repeatable? |
Description |
---|---|---|---|
<label> | yes | yes | An effective label
alternative. |
<display_group> | no | no | The presence of this element
indicates that these effective labels ought to be
hierarchically organized as a group for display |
Each <effective_labels> element can have multiple
<label> children, each of which has a value and an optional
label (which defaults to the value). The label attribute defines
what the user sees; e.g., if an ENAMEX annotation type has a
"type" <effective_labels> attribute which a <label>
whose value is "PER" and whose label is "PERSON", an ENAMEX
annotation with a "PER" value for the "type" attribute will see
the label "PERSON" in the UI.
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
value | a string |
yes | One of the permitted values
for the attribute. |
label | a string |
no | If present, the label the
user sees in the UI when this attribute is set. Defaults to
the value of the value attribute. |
Because these labels are essentially the same as true toplevel
labels from the point of view of the UI, the display attributes
here are identical to those for the <span> and
<spanless> elements.
All attributes related to the display of this attribute in the MAT UI begin with "d_".
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
d_css | a string of legal CSS | no | If the label is a spanned label, the UI will apply this CSS on a token-by-token basis to any span labeled by this annotation. If the label is a spanless label, the CSS will be applied to its icon in the spanless sidebar. Because there's no text in the spanless sidebar, and because annotations can overlap and be displayed in an exploded, stacked representation in spanned hand annotation and in comparison, it's probably best to ensure that the primary aspect of this CSS is background styling. |
d_presented_name | a format string | no | In the UI, there are many places (e.g., in the annotation tables) where the annotation can be described, and by default, the description for spanned annotations is the covered text, while the description for spanless annotations is the annotation ID. Sometimes, this name isn't what you would prefer it to be, and you can use this attribute to define the name you prefer. The syntax for the value of this string is described here. |
d_edit_imediately | "yes" |
no | If a label has attributes, or if it can be the value of an annotation-valued attribute, it is possible to edit the annotation in the UI, either in a popup dialog or in a detail tab. For effective labels of <spanless> elements, this editor will appear automatically when the annotation is created; for effective labels of <span> elements, it will not. If you provide this attribute-value pair, the editor will appear automatically when the annotation is created, whether or not it's spanned. |
d_accelerator | a single-character string | no | If specified, this accelerator will be available in the annotation selection menu in the Web UI; if the user presses this key, this annotation will be selected for the span, just as if the element in the menu had been chosen. If the same accelerator is used in more than one place, and only one of the uses is visible (if, e.g., you have set up label groups to create a hierarchical menu), the visible one will be used. Otherwise, in the case of unresolved ambiguity, nothing will happen when you press the key. |
d_overlap_rank |
an integer |
no |
By default, the overlap order of spanned annotations in a task is the order in which they're defined. However, you can modify this overlap order by specifying overlap_rank on some or all of your labels. If at least one overlap_rank is specified, all labels lacking the specification will be ordered (in the order they're defined) behind the labels bearing a specification, and all those labels bearing a specification will be ordered in front of those other labels, in the order of their overlap_rank value. If the task has a parent task, all labels not defined locally will be ordered behind the locally defined labels. |
d_rendering_style |
"normal", "background_span" |
no |
In some cases, you might want a spanned annotation to be
rendered behind the text, always, because it's "background"
material (e.g., paragraph or sentence annotations). If you
set the value of the rendering_style attribute to
"background_span", you can accomplish this. In addition,
these annotations will never be displayed in front of
annotations that don't have this rendering style; they will
not be displayed in the hover line when you hover over
non-background annotations which overlap with them; they are
not selectable if there's a selectable non-background
annotation which could be selected instead; and unlike
normal spanned content annotations, they do not block
autotagging. These annotations are otherwise completely
normal; you can modify them by hand, add attributes to them,
etc. |
Element |
Obligatory? |
Repeatable? |
Description |
---|---|---|---|
<d_gesture> | no |
yes | A manu gesture for this
effective label. |
This child of <label> is identical to the <gesture> element of the
<label> element of the legacy <annotation_display>
element.
This child of <effective_labels> defines a display group
whose parent name is, by default, the name of the annotation which
bears the <effective_labels> attribute, and whose children
are the effective labels. See the definition of <display_group>
below (note that unlike that definition, this one has no children;
it modifies the behavior of its sister <label> elements). If
you want a different name (and, optionally, style) for the parent
of this group, specify the name and css attributes here.
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
name | a string |
no | The name of the display
group, which must not be the true or effective label of a
known annotation type. If this attribute is not present, the
name of the annotation which contains the
<effective_labels> element is used. |
css | a string of legal CSS |
no | Like the d_css attribute on the <span> and <spanless> elements above. Used to assign styling when a name is present. |
This element defines an integer-valued attribute.
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
name | a string |
yes | The name of the attribute. |
default | an integer |
no | If present, a default value for this attribute. This attribute can't be defined alongside the "default_is_text_span" attribute. |
of_set | a string |
no | See <effective_labels>. |
of_category | a string |
no | See <effective_labels>. |
default_is_text_span | "yes" |
no | If present, the default value for this attribute is digested from the span of the annotation (so this option is only available for attributes of spanned annotations). If the span can't be digested into a value of the appropriate type, no default will be set. This attribute can't be defined alongside the "default" attribute. |
range_from | an integer |
no | If present, the minimum (inclusive) endpoint of the range. Range declarations cannot cooccur with choices. |
range_to | an integer |
no | If present, the maximum (inclusive) endpoint of the range. Range declarations cannot cooccur with choices. |
choices | a comma- or space-separated
sequence of integers |
no | If present, the possible
values for this attribute. You can also use the
<choice> child element to specify choices, and you can
use both of these alternatives at once. Choices cannot
cooccur with range_from and range_to. |
aggregation | one of "set", "list" |
no | By default, the values of attributes are singletons. If you want the value to be a set or list of the objects of the specified type, indicate it with this XML attribute. See also <int_set> and <int_list>. |
All attributes related to the display of this attribute in the MAT UI begin with "d_".
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
d_url_link | a string |
no | When the annotation attribute
is displayed in the annotation editor or the annotation
table, the annotation will be used to construct a URL link.
The syntax is identical to that of presented_name above, except
that of the special values, only _text is recognized, and no
key-value pairs are recognized within each directive. So,
e.g., if you want the link on an annotation attribute to
search for the spanned text in Google, the value of url_link
would be http://www.google.com/search?q=$(_text) |
d_custom_editor | a string |
no | You may have a string attribute which is actually a date, which you want to use a calendar widget to populate; or you might want to look up the annotation text in a database, and use the results to populate the attribute value. If you're willing to do some programming, you can use this attribute to specify an arbitrary JavaScript function for a string, int, or float attribute, to use as its editor. You can define your function in your task directory in your Javascript customization file. Unfortunately, we don't really have the resources to document the API this function has to conform to; either dig through the source code yourself, or ask us for help. |
d_custom_editor_button_label | a string |
no | If you have a custom editor, but you want the label to be something other than "Edit" (let's say the value is automatically calculated when you press the button), use this. |
d_custom_editor_is_multiattribute | "yes" |
no |
If you've associated a custom_editor with
this attribute, this attribute-value pair tells the UI that
the editor will fill multiple attributes. Deprecated
in favor of d_custom_editor_multiattributes. |
d_custom_editor_multiattributes |
a string |
no |
If you've associated a custom_editor with this attribute, this attribute-value pair tells the UI that the editor will fill multiple attributes, and which attributes it fills. The value is a comma-separated list of attribute names. This is preferred to d_custom_editor_is_multiattribute, because the latter doesn't provide enough information to unset this attribute (since, really, all the attributes that were filled should be cleared). Note that the names of the attributes in this list are not currently checked against the list of attributes for the annotation. |
d_max_choice_size | an integer |
no | For set-valued attributes with choices, this attribute provides a way of limiting the size of the presented multi-select in the UI. By default, the maximum size is 5. For choice sets above this size, the multi-select will scroll. |
d_read_only | "yes" |
no | Attributes are typically editable. If for some reason you don't want to be able to edit an attribute directly in the annotation editor (e.g., the attribute value is automatically populated by a custom editor, as described below), use this setting. |
Element |
Obligatory? |
Repeatable? |
Description |
---|---|---|---|
<choice> | no | yes | A possible value for this
attribute. |
The <choice> element can be used to declare a possible
value for this integer-valued attribute. It can cooccur with the
choices attribute described above. One situation where you might
want to use the element instead of the attribute is when you want
to define a keyboard accelerator.
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
value | an integer |
yes | The possible value. |
d_accelerator | a single-character string | no | This accelerator will be available in the annotation popup submenu in the Web UI which corresponds to the attribute which bears this choice; if the user presses this key, this choice will be selected for the attribute, just as if the element in the menu had been chosen. |
d_css |
a string of legal CSS |
no |
If the label that bears this attribute value
is a spanned label, the UI will apply this CSS on a
token-by-token basis to any span labeled by this annotation.
If the label that bears this attribute value is a spanless
label, the CSS will be applied to its icon in the spanless
sidebar. Because there's no text in the spanless sidebar,
and because annotations can overlap and be displayed in an
exploded, stacked representation in spanned hand annotation
and in comparison, it's probably best to ensure that the
primary aspect of this CSS is background styling. This CSS rule takes precedence over the CSS rule of the label that bears this attribute value, for CSS attributes where they differ. The purpose of this attribute is to allow the annotator to distinguish among choice values by CSS style even in the case where the choices are not effective labels. This is particularly useful in classification tasks. |
Equivalent to specifying an <int>
element with aggregation="set".
Equivalent to specifying an <int> element with aggregation="list".
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
name | a string |
yes | The name of the attribute. |
default | a string |
no | If present, a default value for this attribute. This attribute can't be defined alongside the "default_is_text_span" attribute. |
of_set | a string |
no | See <effective_labels>. |
of_category | a string |
no | See <effective_labels>. |
default_is_text_span | "yes" |
no | If present, the default value for this attribute is digested from the span of the annotation (so this option is only available for attributes of spanned annotations). If the span can't be digested into a value of the appropriate type, no default will be set. This attribute can't be defined alongside the "default" attribute. |
choices | a comma- or space-separated sequence of strings | no | If present, possible values for this attribute. If commas are present in the XML attribute value, it will be split at commas; otherwise, it will be split at whitespace. You can also use the <choice> child element to specify choices, and you can use both of these alternatives at once. |
aggregation | one of "set", "list" | no | By default, the values of attributes are singletons. If you want the value to be a set or list of the objects of the specified type, indicate it with this XML attribute. See also <string_set> and <string_list>. |
All attributes related to the display of this attribute in the MAT UI begin with "d_".
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
d_editor_style | "long_string" | no | There are two ways of providing attribute values for non-choice string attributes in the UI: via a short typein window or via a multi-line typein window. By default, a short typein window will be used. If you provide this attribute-value pair, a long typein window will be used. Ignored if the attribute has choices. |
d_url_link | a string |
no | See <int>. |
d_custom_editor | a string |
no | See <int>. |
d_custom_editor_button_label | a string |
no | See <int>. |
d_custom_editor_is_multiattribute | "yes" |
no |
See <int>. |
d_custom_editor_multiattributes |
a string |
no |
See <int>. |
d_max_choice_size | an integer |
no | See <int>. |
d_read_only | "yes" |
no | See <int>. |
d_annotation_table_sort_fn |
a string |
no |
If present, the name of a Javascript sort
function to use when sorting the corresponding annotation
table column. |
Element |
Obligatory? |
Repeatable? |
Description |
---|---|---|---|
<choice> | no | yes | A possible value for this
attribute. |
The <choice> element can be used to declare a possible
value for this string-valued attribute. It can cooccur with the
choices attribute described above. One situation where you might
want to use the element instead of the attribute is when you want
to define a keyboard accelerator; another might be where your
possible value contains both commas and whitespace.
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
value | a string |
yes | The possible value. |
d_accelerator | a single-character string | no | This accelerator will be available in the annotation popup submenu in the Web UI which corresponds to the attribute which bears this choice; if the user presses this key, this choice will be selected for the attribute, just as if the element in the menu had been chosen. |
d_css |
a string of legal CSS |
no |
If the label that bears this attribute value
is a spanned label, the UI will apply this CSS on a
token-by-token basis to any span labeled by this annotation.
If the label that bears this attribute value is a spanless
label, the CSS will be applied to its icon in the spanless
sidebar. Because there's no text in the spanless sidebar,
and because annotations can overlap and be displayed in an
exploded, stacked representation in spanned hand annotation
and in comparison, it's probably best to ensure that the
primary aspect of this CSS is background styling. This CSS rule takes precedence over the CSS rule of the label that bears this attribute value, for CSS attributes where they differ. The purpose of this attribute is to allow the annotator to distinguish among choice values by CSS style even in the case where the choices are not effective labels. This is particularly useful in classification tasks. |
Equivalent to specifying an <string> element with aggregation="set".
Equivalent to specifying an <string> element with aggregation="list".
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
name | a string |
yes | The name of the attribute. |
default | a float |
no | If present, a default value for this attribute. This attribute can't be defined alongside the "default_is_text_span" attribute. |
of_set | a string |
no | See <effective_labels>. |
of_category | a string |
no | See <effective_labels>. |
default_is_text_span | "yes" |
no | If present, the default value for this attribute is digested from the span of the annotation (so this option is only available for attributes of spanned annotations). If the span can't be digested into a value of the appropriate type, no default will be set. This attribute can't be defined alongside the "default" attribute. |
range_from |
a float |
no | If present, the minimum (inclusive) endpoint of the range. |
range_to | a float |
no | If present, the maximum (inclusive) endpoint of the range. |
aggregation | one of "set", "list" | no | By default, the values of attributes are singletons. If you want the value to be a set or list of the objects of the specified type, indicate it with this XML attribute. See also <float_set> and <float_list>. |
All attributes related to the display of this attribute in the MAT UI begin with "d_".
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
d_url_link | a string |
no | See <int>. |
d_custom_editor | a string |
no | See <int>. |
d_custom_editor_button_label | a string |
no | See <int>. |
d_custom_editor_is_multiattribute | "yes" |
no |
See <int>. |
d_custom_editor_multiattributes |
a string |
no |
See <int>. |
d_read_only | "yes" |
no | See <int>. |
Equivalent to specifying an <float> element with aggregation="set".
Equivalent to specifying an <float> element with aggregation="list".
This element defines a boolean-valued attribute.
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
name | a string |
yes | The name of the attribute. |
default | "yes" or "no" |
no | If present, a default value for this attribute. Use "yes" or "no". |
of_set | a string |
no | See <effective_labels>. |
of_category | a string |
no | See <effective_labels>. |
aggregation |
one of "set", "list" | no |
By default, the values of attributes are
singletons. If you want the value to be a set or list of the
objects of the specified type, indicate it with this XML
attribute. |
All attributes related to the display of this attribute in the MAT UI begin with "d_".
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
d_custom_editor | a string |
no | See <int>. |
d_custom_editor_button_label | a string |
no | See <int>. |
d_custom_editor_is_multiattribute | "yes" |
no | See <int>. |
d_custom_editor_multiattributes |
a string |
no |
See <int>. |
d_read_only | "yes" |
no | See <int>. |
d_url_link | a string |
no | See <int>. |
Element |
Obligatory? |
Repeatable? |
Description |
---|---|---|---|
<positive> | no | no | UI attributes for the
positive setting for this attribute |
<negative> |
no |
no |
UI attributes for the negative setting for
this attribute |
This element allows the user to specify UI properties for the
positive setting of the parent boolean attribute. This control is
not available in the legacy annotation set description method.
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
d_accelerator | a single-character string | no | This accelerator will be available in the annotation popup submenu in the Web UI which corresponds to the attribute which bears this choice; if the user presses this key, the positive value will be selected for the attribute, just as if the element in the menu had been chosen. |
d_css |
a string of legal CSS |
no |
If the label that bears this attribute value
is a spanned label, the UI will apply this CSS on a
token-by-token basis to any span labeled by this annotation.
If the label that bears this attribute value is a spanless
label, the CSS will be applied to its icon in the spanless
sidebar. Because there's no text in the spanless sidebar,
and because annotations can overlap and be displayed in an
exploded, stacked representation in spanned hand annotation
and in comparison, it's probably best to ensure that the
primary aspect of this CSS is background styling. This CSS rule takes precedence over the CSS rule of the label that bears this attribute value, for CSS attributes where they differ. The purpose of this attribute is to allow the annotator to distinguish among choice values by CSS style even in the case where the choices are not effective labels. This is particularly useful in classification tasks. |
This element allows the user to specify UI properties for the
negative setting of the parent boolean attribute. This control is
not available in the legacy annotation set description method.
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
d_accelerator | a single-character string | no | This accelerator will be available in the annotation popup submenu in the Web UI which corresponds to the attribute which bears this choice; if the user presses this key, the negative will be selected for the attribute, just as if the element in the menu had been chosen. |
d_css |
a string of legal CSS |
no |
If the label that bears this attribute value
is a spanned label, the UI will apply this CSS on a
token-by-token basis to any span labeled by this annotation.
If the label that bears this attribute value is a spanless
label, the CSS will be applied to its icon in the spanless
sidebar. Because there's no text in the spanless sidebar,
and because annotations can overlap and be displayed in an
exploded, stacked representation in spanned hand annotation
and in comparison, it's probably best to ensure that the
primary aspect of this CSS is background styling. This CSS rule takes precedence over the CSS rule of the label that bears this attribute value, for CSS attributes where they differ. The purpose of this attribute is to allow the annotator to distinguish among choice values by CSS style even in the case where the choices are not effective labels. This is particularly useful in classification tasks. |
This element defines an annotation-valued attribute. For each <filler> element, you must define at least one filler type. Every value of the attribute must satisfy at least one of the types. The types can be a simple label or effective label, or they can also bear attribute/value restrictions.
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
name | a string |
yes | The name of the attribute. |
of_set | a string |
no | See <effective_labels>. |
of_category | a string |
no | See <effective_labels>. |
filler_types | a comma- or space-separated
sequence of labels |
no | If present, a sequence of
labels or effective labels which the annotation filler can
match. If commas are present in the XML attribute value, it
will be split at commas; otherwise, it will be split at
whitespace. You may specify all the labels in an annotation
set by listing "set:" + the set name as one of the elements
in the value, e.g., "set:content". You can also use the
<filler_types> child element to specify filler types,
and you can use both of these alternatives at once. |
aggregation | one of "set", "list" | no |
By default, the values of attributes are singletons. If you want the value to be a set or list of the objects of the specified type, indicate it with this XML attribute. See also <filler_set> and <filler_list>. |
All attributes related to the display of this attribute in the MAT UI begin with "d_".
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
d_custom_editor | a string |
no | See <int>. |
d_custom_editor_button_label | a string |
no | See <int>. |
d_custom_editor_is_multiattribute | "yes" |
no | See <int>. |
d_custom_editor_multiattributes |
a string |
no |
See <int>. |
d_read_only | "yes" |
no | See <int>. |
d_url_link | a string |
no | See <int>. |
Element |
Obligatory? |
Repeatable? |
Description |
---|---|---|---|
<filler_type> | no | yes | A label or effective label,
possibly including attribute/value pairs, which the
annotation filler can match. |
This element defines a filler type which the annotation filler
can match. You can use this element in conjunction with the
filler_types attribute above. One situation in which you might
want to use this element is if you want to define further
attribute/value pairs which the filler must match, or if the label
contains whitespace and commas.
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
label | a string |
yes | A true or effective annotation label which the annotation filler can match. If no attribute-value pairs are specified, you may specify all the labels in an annotation set by listing "set:" + the set name as the value, e.g., "set:content". |
<attr> | a string | no | The <filler_type>
element supports arbitrary XML attribute-value pairs. Each
<attr> must be a choice attribute defined for the
label (i.e., either a string or int attribute which has
choices associated with it). To satisfy this filler type,
the filler must bear all the specified attribute/value
pairs. |
Equivalent to specifying an <filler> element with aggregation="set".
Equivalent to specifying an <filler>
element with aggregation="list".
Equivalent to the <d_gesture> element found in
<effective_labels>, but for true labels rather than
effective labels. See the <gesture>
element of the <label> element of the legacy
<annotation_display> element.
This element defines a spanless annotation type. The child
elements which define the annotation attributes are identical to
those for the <span>
element.
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
label | a string |
yes | The label for the annotation type. |
all_attributes_known | "yes" |
no | Under normal circumstances, MAT does not object to finding "undeclared" attributes of annotations in the documents it reads. If this XML attribute/value pair is present, the annotation type is "locked"; in other words, when MAT reads in a document in the context of a task corresponding to this annotation set descriptor, it will object to any "stray" attributes which appear on annotations of this type. |
of_set |
a string |
no |
The annotation set descriptor to which this
annotation type belongs. If not specified, the value is
"content". The names are user-definable, and you can have a
many-to-one mapping from names to categories, to facilitate
set grouping. If the annotation set name has not previously
appeared in the task, a new annotation set will be defined.
See here for an
overview. |
of_category |
a string |
no |
The category to which the annotation set descriptor for this annotation type belongs. If the annotation set name has not previously appeared in the task, the category of the newly-defined annotation set will be the value of this attribute, or "content" if this attribute is not specified. If the annotation set was defined elsewhere, the value of this attribute, if present, must match the category of the existing set. See here for an overview. |
All attributes related to the display of this annotation in the MAT UI begin with "d_".
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
d_css | a string of legal CSS | no | The UI will apply this CSS to the annotation's icon in the spanless sidebar. Because there's no text in the spanless sidebar, and because annotations can overlap and be displayed in an exploded, stacked representation in spanned hand annotation and in comparison, it's probably best to ensure that the primary aspect of this CSS is background styling. |
d_presented_name | a format string | no | In the UI, there are many places (e.g., in the annotation tables) where the annotation can be described, and by default, the description for spanless annotations is the annotation ID. Sometimes, this name isn't what you would prefer it to be, and you can use this attribute to define the name you prefer. The syntax for the value of this string is described here. |
d_accelerator | a single-character string | no | If specified, this accelerator will be available in the annotation selection menu in the Web UI; if the user presses this key, this annotation will be selected for the span, just as if the element in the menu had been chosen. If the same accelerator is used in more than one place, and only one of the uses is visible (if, e.g., you have set up label groups to create a hierarchical menu), the visible one will be used. Otherwise, in the case of unresolved ambiguity, nothing will happen when you press the key. |
d_edit_immediately | "yes" | no | If a label has attributes, or
if it can be the value of an annotation-valued attribute, it
is possible to edit the annotation in the UI, either in a
popup dialog or in a detail tab. If the annotation is
spanless, this editor will appear automatically when the
annotation is created, so this attribute has no effect; it's
here for consistency. |
Element |
Obligatory? |
Repeatable? |
Description |
---|---|---|---|
<int> | no | yes | See previous description. |
<int_set> | no | yes | See previous description. |
<int_list> | no | yes | See previous description. |
<float> | no | yes | See previous description. |
<float_set> | no | yes | See previous description. |
<float_list> | no | yes | See previous description. |
<effective_labels> | no | yes | See previous description. |
<string> | no | yes | See previous description. |
<string_set> | no | yes | See previous description. |
<string_list> | no | yes | See previous description. |
<boolean> | no | yes | See previous description. |
<filler> | no | yes | See previous description. |
<filler_set> | no | yes | See previous description. |
<filler_list> | no | yes | See previous description. |
<d_gesture> |
no |
yes |
See previous
description. |
Under some circumstances, you might want to create cascaded
annotation menus in the MAT UI, perhaps in order to group together
similar annotations, or provide options for more or less general
annotations, or to compress the screen real estate taken up by the
annotation popup menu. You can use the <display_group>
element to accomplish this.
If the display group does not have a name, its first child must
be either a <span> element or a <spanless> element,
and that element will be chosen as the parent of the group. If the
group does have a name, it must be otherwise unknown, and that
name serves as the parent of the group. In this latter case, you
can style the name via the d_css attribute.
Any <span> or <spanless> children must be styled.
The whole point of <display_group> is to create cascades for
annotation menus, and if the label isn't styled, it doesn't appear
in the annotation menu at all. As a result, it's an error for a
child of <display_group> not to be styled.
Attribute |
Value |
Obligatory? |
Description |
---|---|---|---|
name | a string |
no | The name of the display group, which must not be the true or effective label of a known annotation type. If this attribute is not present, the first child of the display group is treated as the parent. |
css | a string of legal CSS |
no | Like the d_css attribute on the <span> and <spanless> elements above. Used to assign styling when a name is present. |
Element |
Obligatory? |
Repeatable? |
Description |
---|---|---|---|
<span> | no | yes | See previous description. |
<spanless> | no | yes | See previous description. |
<display_group> | no | yes | See previous description. |