MultiMaps > Data collection >
Data Collection Macro language
PreviousNext

Attention! The Macro language syntax changed since MultiMaps v6.1!

In previous versions, MultiMaps used a colon (:), to separate both operators and parameters. This syntax limited the development of the macro language, so now we separate operators with a line feed (>>) and parameters with a colon.

Previously: week:0:complete:100:resource:Coleman

Now: week:0 >> complete:100 >> resource:Coleman

We also changed the syntax for some operators. For example:

previously: requirestartdate

now: require:startdate

In the table below, we mark Operators with modified syntax in red. Most of the old Operators should continue to work, but we deprecate them as we develop MultiMaps.

If your maps use keywords with macro language operators, be sure to check them against the new sintax!

There are quite a few new operators.

The Data Collection Engine has unique programming language (Data Collection Macro Language) to describe what to collect from source maps and what to copy to collection maps. The user places these commands in the Keywords notes in the Configuration Map or on topic notes in the Data Collection keywords branch.

By default, Data Collection Configuration map location is:

..\Documents\Palmaross\MultiMaps\Resources\Data collection\dashboards_config.mmap

The structure of Data Collection Configuration Map is discussed here.

The Data Collection Macro Language consists of operators and their parameters.

You may use any number of operators, defining a cascade of filters. MultiMaps will colldect a topic if ALL the operators match the given topic in the source map(s).

With this macro language, you can flexibly customize the collection criteria.

Operators are separated by a line feed (each operator is on a new line) or by >> characters. Users separate Parameters with a colon.

When preparing a Template to collect data into it (and processing the Configuration Map), the Data Collection Engine scans all topics and their notes. When it finds operators, it tries to parse them until the end, or until it finds a:

; (semicolon) or

a comment word

Here is a typical example of programming the keyword using notes:

day:1
;
collects tasks that are active today

or:

week:0
complete:100
resource:Coleman

comment: collects completed tasks from this week with resource Coleman.

The previous block also can be written like:

week:0 >> complete:100
resource:Coleman
;
The tasks were completed during this week with the resource: Coleman.
(operators are separated by ">>" symbols here)

More examples can be found in the Data Collection Cofiguration Map.

The Data Collection Engine is described here.

To understand how operators work, you need to understand the difference between the standard map topic and the task topic.

A task is a topic that has at least one of the following attributes: progress (0 - 100%), start date, due date, effort, or resources. If none of these attributes are present on the topic it is not a task.

Data Collection Macro Language operators

Operator Description
Date ranges ! All operators in this section are mutually exclusive. If more than one is specified, the last one "wins".
day:N sets a Day. N is an offset from current (0) day. So day:0 = today, day:1 = tomorrow, day:-1 = yesterday and so on.

Result: filters tasks that are active on a given day.

Example: keyword Today (day:0)
days:N sets the range of days from current (0). So days:2 = next 3 days (0,1,2), days:6 = nearest 6 days, days:-3 = past 3 days.

Result: filters tasks that are active in a given range of days.

Example: keyword Next 3 days (days:2)
week:N the same for weeks
weeks:N  
month:N the same for months
months:N  
today synonim for day:0
tomorrow synonim for day:1
yesterday synonim for day:-1
Tasks Tasks are topics that have at least one of the task attributes: progress, start date, due date, effort, or resources.

task

task:nodates

collects tasks

task:nodates - collects tasks, that don't have both dates (start date and due date)
nodates depecated! do not apply! Use task:nodates

requiere:progress

require:priority

require:startdate

require:duedate

require:bothdates

require:anydate

You can require that on the tasks must be present:

progress : any Progress icon
priority: any Priority icon (can be applied not only to tasks)

! All operators below are mutually exclusive. If more than one is specified, the last one "wins".

startdate: start date
duedate: due date
bothdates: both dates
anydate: one of dates
requirestartdate
requireduedate
depecated! do not apply! Use require:startdate and require:duedate

match:startdate

match:duedate

match:bothdates

match:anydate

! All operators hare are mutually exclusive. If more than one is specified, the last one "wins".

collects tasks that have the specified dates in the range. For example, the keyword is This week, and this operator in it's notes. In this case, MultiMaps will collect tasks as follows:

startdate: start this week
duedate: end this week
bothdates: start AND end this week
anydate: either start or end this week. MultiMaps uses this as the default parameter if there is no match operator in the topic notes.
startdate, duedate
bothdates, anydate
depecated! do not apply! Use the above syntax

overdue

Progress is less than 100% (or no Progress at all), AND Due date is earlier than today.

Example: keyword Overdue in the config map.

duration:min:N

duration:hours:N

duration:days:N

duration:months:N

collects tasks that have specified task duration.
N - number of time units (or time range).

duration:hours:4 - collects tasks whose duration is 15 minutes
duration:days:1 - collects tasks whose duration is 1 work day
duration:days:1-3 - collects tasks whose duration is from 1 to 3 days

effort:min:N

effort:hours:N

effort:days:N

effort:months:N

collects tasks that have specified task effort.
N - number of time units (or time range).

Examples:
effort:min:15 - collects tasks whose effort is precisely 15 minutes.
effort:min:15-30 - collects tasks whose effort is from 15 to 30 minutes
effort:hours:1-4 - collects tasks whose effort is from 1 to 4 hours
effort:days:1 - collects tasks whose effort is precisely 1 day
complete:N

complete:N-M
collects topics with specified Progress.

Examples:
complete:50 --- collects topics with Progress 50%.
complete:0-50 --- collects topics with Progress from 0 to 50%
complete:0-99 --- collects topics with Progress 100%
deadline collects tasks that have a due date AND a deadline icon.

The collection topic must have a deadline icon, this is usually an icon with an exclamation mark.

See keyword Deadlines in the config map.
rollup collects topics when the user enables the Roll-up task info checkbox (in the Task Info pane).
asap
(as soon as possible)
collects tasks with only one date or no dates.

These tasks arecalled Possibles. The target dates is not precisely defined (since one date or no dates). Therefore, they should be performed either from the start date or before the end date, at any suitable time.

Example: collection topic has a period This week, and topic notes have this operator.

While collecting:
1) a user may have completed the task with only a start date earlier than or within this week. In this case, Multimaps will collect the task;
(2) if a task only has a due date and is later or within the current week, it might need to be collected. Multimaps will collect the task;
(3) if the task has no dates, Multimaps will also collect this task.

The Configuration Map contains the keyword Possible with this operator.
advance collects topics (together with their subtopics) with the icons  and . If you use icon for something else, open Data Collection Configuration Map, locate the  Advance keyword, and replace this icon with any icon you want.

This operator collects all tasks that starts before given date range or with no dates. It also requires both icons above to be set.

Other operators

 

nocheckdates

ignore date filters

Example: You want to collect topics that have a question icon, regardless of whether or not they fall under the filter set by the previous keyword (for example, This week). This operator will do it.

It is used in the configuration map in many keywords with icons.

inherit

collects topics matched by previous filters

formula

collects topics with formulas

topicname

matches topics whose text is the same as the text on the collection topic.

Example: keyword In-Tray (Inbox) in the config map

topictext:contains

topictext:startswith

topictext:endswith

topictext:equals

TEXT - collection topic name.

This operator collects topics, which text:

contains - contains TEXT
startswith - starts with TEXT
endswith - ends with TEXT
equals - equals TEXT

An optional wholeword parameter also instructs MultiMaps to search the TEXT for a whole word (the word "text" matchs, but words "contextual", "texture", etc. don't match).

topictext:startswith:wholeword

there may be one more parameter - the search text. In this case, the name of the collection topic can be whichever:

topictext:contains:text - collects topics whose text contains "text" ("text", "contextual", "texture",etc.)
topictext:startswith:wholeword:text - collects topics whose text starts with the whole word "text"

casesensitive:topictext

casesensitive:resources

casesensitive:properties

casesensitive:tags

casesensitive:all

MindManager treats resources, tags, and properties names according to their case. Therefore, resource:Ross and resource:ross represent two different resources. "Done" tag and "done" tag are different tags, etc.

By default, Multimaps does not consider the case when collecting data. If a collection topic contains the resource Ross, then MultiMaps will collect topics with the resource Ross and ross.

This operator makes the following attribute case sensitive:

Topic text (see operators topicname and topictext)
Resources
Topic Properties
Tags

For example, suppose the collection topic defines Ross as a resource. In this case, MultiMaps will collect topics with Ross, and ignore topics with ross.

casesensitive:all - makes case sensitive for all the above criteria.

resource:res1, res2, res3...

-------------------------------

resource:condition:TEXT

-------------------------------

resource:me

collects topics with specified resources

resource:Coleman
collects topics with resource "Coleman"

resource:Coleman, Olivia Smith, J.Harris
collects topics with specified resources


resource:condition:TEXT

Users can set the condition operator as follows:

contains - contains TEXT
startswith - starts with TEXT
endswith - ends with TEXT
equals - equals TEXT

resource:contains:son
collects topics, that have resource: Davidson or Dawson or Atkinson


resource:me

collects topics where you are assigned as a resource. Before using this operator, you must define your name in the Data Collection options (MultiMaps Settings on the Ribbon), in the "resource:me" field.

Construction is allowed :
resource:Coleman, me, Olivia Smith

This operator is used by the My tasks keyword in the configuration map.

resources:all

resources:any

resources:yes

resources:no

all - collects topics that have all the resources present on the collection topic and/or specified by resource operators.

any - collects topics with a resources specified on the collection topic and/or specified by resource operators. Any condition is the default.

yes - collects topics with resources

no - collects tasks without resources
resources depecated! do not apply! Use resources:yes.
resources_me depecated! do not apply! Use resource:me.
 no_resources depecated! do not apply! Use resources:no.

ignoreresource:res1, res2...

ignoreresource:me

MultiMaps will ignore topics with specified resources when collecting data.

ignoreresource:Coleman
MultiMaps will ignore topics with the resource Coleman.

ignoreresource :Coleman, Olivia Smith, J.Harris
MultiMaps will ignore topics with specified resources when collecting data

ignoreresource:me

MultiMaps will ignore topics that have a resource with a name that matches the one you have in MindManager Options (File > Options > User Information > Username).

Note : the  ignoreresource operator does not collect anything by itself! It simply ignores topics with resources specified in it's parameters.

ignoreresorces:all

ignoreresorces:any

all - MULTIMAPS ignores topics with all parameters specified in the ignoreresource operator.

any - topics that have any of the resources specified in in the ignoreresource operator parameters, are ignored. This operator is used by default.

tag:tagGroup:tagName

tag:tagGroup

tag:?:tagName

 

tag:name:condition:TEXT

tag:groupname:condition:
TEXT

collects topics that have the specified tags

tag:Contexts:calls collects topics with tag "Phone" from the "Contexts" tag group.

tag:Contexts collects topics with any of the tags of "Contexts" tag group.

tag:?:done collects topics with tag "done" from any tag group.

To collect topics with several tags:

tag:Contexts:calls
tag:Categories:office
etc...


Operators with condition  collect topics whose tag name (tag:name ) or tag group name (tag:groupname) match condition:

contains - contains TEXT
startswith - starts with TEXT
endswith - ends with TEXT
equals - equals TEXT

tag:name:contains:process - collects topics that have a tag "Processed" or "Processing" or "In process". Tag group (in this case) no matter.

Possible designs:

tag:groupname:equals:TEXT1:name:contains:TEXT2
tag:name:startswith:TEXT1:groupname:equals:TEXT2

in this case must be matched BOTH tag group name
AND tag name .
tags:tagGroup depecated! do not apply! Use tag:tagName

tags:all

tags:any

tags:yes

tags:no

all - collects topics that have all the tags present on the collection topic and/or specified in operators tag.

any - collects topics that have any tag present on the collection topic and/or specified in operators tag. This operator is used by default.

yes - collects topics that have tags.

no - collects topics that have no tags.

ignoretag:tagGroup:Tag

ignoretag:tagGroup

ignoretag:?:Tag

Topics that have the specified tag from the specified tag group will be ignored when collected.

Multiple operators are possible:

ignoretag:Phase:done
ignoretag:Phase:control
...
in this case, topics with tags "done" and "control" from the tag group "Phase" will be ignored.

Operator syntax is the same as the tag operator (see above).

Note: ignoreretag operator does not collect anything by itself! It simply ignores topics with tags specified in it's parameters .

ignoretags:all

ignoretags:any

all - topics that have all tags specified in the ignoretag operator parameters are ignored.
any - topics that have any of the tags specified in in the ignoretag operator parameters, are ignored. This operator is used by default.

icons:all

icons:any

all - collects topics with all icons set to template or keyword topic

any - collects topics with any icon set to template or keyword topic. This is the default.

ignoreIcons:all

ignoreIcons:any

all - topics with all the icons present in the collection topic are ignored.

any - topics with any icon present in the collection topic are ignored.

Important! If ignoreIcons is used, icons on the collection topic are not to collect topics that have these icons, but to ignore topics that have these icons!

property:propertyName:
Value:propertyType

property:propertyName:
propertyValue

property:propertyName

 

 

property:name:
condition:TEXT

property:groupname:
condition:TEXT

collects topics that have the specified properties

Property type can be: text (Text, Multiline Text, List), currrency or cur (Currency), number (Number), integer (Integer).

If value is numeric, it can be either a number or a range of numbers, for example:property:Costs:0-2000:cur , collects topics which have property value from 0 up to 20,000.

property:City:Belfast:text - collects topics that have a Property named "City", the Property value is "Belfast", and have a Property type of "Text" or "Multiline Text" or "List".

Variants:

property:City:Belfast - collects topics that have a Property named "City", the Property value is "Belfast", property type is unimportant.

property:City - collects topics that have a Property named "City", property type and value are unimportant.

property:?:Belfast - collects topics that have a Property value "Belfast", Property any property name and any property type.

property:?:number - collects topics that have a property type - Number. property name and value ;are unimportant.

etc... - a question mark means that this field can be anything.

Multiple operators allowed:

property:Costs:0-10000
property:City:Belfast


Operators with condition collect topics whose property name (property:name) or property value (property:value):

contains - contains TEXT
startswith - starts with TEXT
endswith - ends with TEXT
equals - equals TEXT

These operators work with text Properties only.

property:name:contains:expen - collects topics that have Property named "Expense" or "Expend" or "Expenditure".

Possible designs:

property:name:equals:TEXT1:value:contains:TEXT2
property:value:startswith:TEXT1:
name:equals:TEXT2

in this case must be matched BOTH property name
AND property value .

property:propertyName:
Type:Value
depecated! do not apply! Use format described above.

properties:all

properties:any

properties:yes

properties:no

all - collects topics that have all the properties present on the collection topic and/or specified in operators property.

any - collects topics that have any property present on the collection topic and/or specified in operators property. This operator is used by default.

yes - collects topics that have properties.

no - collects topics that have no properties.

ignoreproperty:
propertyName:
Value:propertyType

Topics that have the specified Property with the specified value and specified Property type will be ignored when collected.

Multiple operators allowed:

ignoreproperty:Costs:0-10000
ignoreproperty:City:Belfast
...
in this case, the collection will ignore topics with the Property "Costs" and a value from 0 to 10000, as well as with Property "City" and value "Belfast".

Operator syntax is the same as the property operator (see above).

Note: ignoreproperty operator does not collect anything by itself! It simply ignores topics with the properties specified in it's parameters!

ignoreproperties:all

ignoreproperties:any

all - topics that have all properties specified in the ignorepropertyoperator parameters are ignored.
any - topics that have any of the properties specified in in the ignoreproperty operator parameters, are ignored. This operator is used by default.

Copy control
branch copies the whole branch of matched topic
subtopicsonly all subtopics of the found topic are copied without the topic itself.
hassubtopics copying branches, if the parent topic has subtopics, this branch is copied to collection map. If there are no subtopics, the branch will not be copied
centraltopictext adds a topic with the text of Central topic of the source map (usually Project name). Added topic gets a hyperlink to Central topic of corresponding map
maintopictext adds a topic with the text from Main topic of the matched topic's branch. Added topic gets a hyperlink to corresponding Main topic.
parenttopictext adds a topic with the text from Parent topic of matched topic. Added topic gets a hyperlink to corresponding parent topic.
filterdoubles_map after the data collection is completed, from the sub-branch of the topic with this operator will be removed all subtopics, which duplicates are present somewhere else in the whole map
fd_map synonim for filterdoubles_map
filterdoubles_branch

this operator will remove all duplicate subtopics from the sub-branch of the topic after the data collection completes. The duplicates are present somewhere above in the branch of this topic (but not in the whole map)

fd_branch synonim for filterdoubles_branch


By combining macro language operators, you can create a new collection criteria.

Create a topic with appropriate keyword/phrase and place the necessary operators in its notes, for example:

Possible keyword/phrase Operators What will be collected
My tasks for today today
resource:me
my tasks (resource:me) for today
Oversee the programmers overdue
recource:Coleman
recource:Smith
recource:Raskin
overdue tasks under the responsibility of Coleman, Smith, and Raskin
My quick tasks day:0
resource:me
effort:min:5-30
I have half an hour, and I want to see my tasks (resource:me) for today (day: 0) which performance takes** from 5 to 30 minutes (effort:min:5-30)


Copyright 2013-2021. PalmaRoss