What I have completed:
- basic system for matching patterns
- Some test cases
Where to go from here?
Possible Next Steps
- regular expression matching:
- when composing a new email, could just type in the email address directly rather than a person's name. Later: 'email addresses I used recently that have no name', 'unnamed email address I used recently', 'sent recently' etc.
- regular expression matching would also be useful for matching against real numbers like 4, 5, 3,000, or 4.56 and similar information.
- match against a part of the database
- %name% where name "... ?person contacts:person 'name' ..." actually produces results
- an %any% type that matches anything
- synonyms
- allow matches like 'every one of %any%'
- what is the match type of this? It is the same as whatever any is ...
- this really shouldn't be %any% ... 'every one of nine' doesn't make a whole lot of sense ...
- datatype groups
- a match type that matches against anything that has a dc:date
- context
- GUI
- actually execute queries
- style sheets for formatting the results
- What does the GUI really look like? having a styled XML page is not enough.
- if you are looking at a page of information, or a specific email, some basic commands should be available: delete, forward, reply, etc How is this decided?
- find all of the rules that could be applied (and have been in the past in this context) and show buttons or other applicable elements for the most common ones.
- what about composing an email? How should that look?
Misc
- actions - queries that manipulate the data
- get 'emails from bob' to work
- queries that don't match
- misspellings, etc
Deal with cases that don't match - For now I think that this should be focused on as a last resort. Why deal with ambiguous cases when there are still plenty of unambiguous cases to deal with?
Also, generic datatypes or datatype groups:
What I have now, requires a new rule to handle each of these cases:
- 5 most recent emails
- 5 most recent(ly viewed) pictures
- 5 most recent(ly visited) websites
- 5 most recently added people to my contact list
How can these be combined so that a new rule isn't always necessary?
%number% most recent %list with date%
Do you want the most recently created pictures, viewed pictures, etc? This default modifier might be different with different list types.
- allow addition of hooks on incoming data. Ex:
- forward all my emails to xyz
- mark all emails from mom blue
- ... later ...
- mark all emails from mom blue
- why didn't you mark my emails from mom blue? (if the previous commands didn't create rules for all future emails)
- need to determine a good way to differentiate 'mark all emails from mom blue' with 'mark all future emails from mom blue' and 'mark all emails past present and future from mom blue'.
- One thing that could help would be a prompt after commands explaining how you could revise your statement if you wanted to...
- 'mark all emails from mom blue' executes and then reminds the user that typing future will mark all future emails from mom blue. And then try to learn when the user means what based on how they modify the commands.