Tabulator To-Do
There are plenty of things to improve or fix about the
tabulator!
Patches gratefully received. This project is open source.
Note that the
Tabulator Issues List is a more up-to-date and rather more short term
live list. It may be added to by users who register.
To Do
- User Interface generic
- Select a set of objects. This defines a new ad-hoc class.
For example, in map or valendar view, just use multiple select
(mouse and control keys, select extend, toggle, etc) or lassoo
paradigm. Also in column of table view could do mutiple selects.
What could we do with such sets? Restrict a view to only
things in that set. Start a new outline view with that set.
- Bookmarking. Can use same bookmark system as the main
browser? Bookmark items. Bookmark views? URI for a view of data (sounds very long).
- How to make the tabulator run whenever user encounters RDF data
in the course of browsing. (Firefox extension? Like piggybank)
- Fix "clear log" so it doesn't take forever -- sheets
- Take care of handling collections in views
- Outline view
- Document content view for N3 documents. Not
actually not simple: It requires basically the cwm pretty-printing
algorithm to mimimize the number of top level noes and bndoes which
show up with names.
- Large numbers of items: deal with it as a scrollable space,
and/or fold the property up by default. May be similar to user
interface for lists.
- Suppress back-pointers to the subject within which the
property list is nested, as they are obvious.
- Class-specific or property-specific views. Or views which apply to any thing iff
a given function is true. Extensible software architecture for this, to
allow view contributions.
- Ouline mode: should sort predicate/inverse by predicate
first so forward and backward links appear together.
- Fresnel view language for ordering, selecting and styling the property-list view.
- Nested-Tabbed format? Variation of outliner operation in which
one
property/object statement is selected and on the right the whole
vertical extent of the property list is used for the expansion of the
object. Right-click on property cell with multiple
objects.->
tabs? Actually, a property cell with multiple objects has lots of
space.. room for more icons.
- Table view -- all the normal things one expects of a table
browser:
- Selecting a value field (or property table head field for
the expanded node) constrains values to that selected
- Drag and drop or other to rearrange columns
- Rename columns, delete.
- Add new columns from browser rule
- Rename columns when corresponding ouline view is
re-rooted.
- Statistical: totals, means, correlate, chart in many ways.
- Saving table view as CSV file, etc.
- Data manipulation
- Add numerically derived extra columns. This
actually creates a rule. Example: distance is ((x1-x2)^2+(y1-y2)^2)^0.5
- Add graph-derived properties. Example: assistant
phone -> assistantPhone. (UI?) Given that outlinew view
can display a graph, maybe do it by example - like a query. Indeed,
rule antecedent is just like a query. Do it by renaming a
column: this actually creates a new bit of ontology and a bit of rule
(or owl?) to define it.
- Aggregation: Sum, Mean, Standard deviation. Union and intersection and intersection of calendar events?
- Value summary browser (mSpace, iTunes like)
- Click on eye icon in table colum header (or outline view)
to add a column value to the value browser
- Each value column shows the set of values that field can
take, with no duplicates, in itrs own order.
- Clicking on one value in the value browser constrains
main matrix to lines with that value.
- Can have columns in value browser and not in matrix, and
vice-versa. Keep synch with outline mode.
- Map view
- Add "Map" button next to "Tabulate" enabled iff the query has some form of location.
- Display points, and information boxes with a compact version of the data from the rest of the variables.
- Business card (name, phone number,...)
- May be able to do this with Fresnel.
- Calendar (date)
- Normal calendar views (day, month, year) and also timeline. (log scale timeline for historical events?)
- Handle point events (datetimes), dates, and periods (start & end datetimes)
- Represent events using small views and medium views generally shared with map.
- Map (location, lat, long)
- Small views of things shared with calendar
- Pluggable view systems.
- Metadata in or linked from the ontology defines view by class, property, subgraph match, etc.
- View languages:
- Fresenel, the RDF view langauge
- Views implemented by javascript loaded in real time: define API.
- A view requires a routine to return the representation of an
object
in a DOM tree; an icon with which to represent the option of view to be
clicked on to get the view, and a filter for what things (by class?
properties?) can be so displayed.
- Views metadat gives have icons for the buttons to bring view.
- Organizational chart (low priority)
- This is a form of tree view which is possible when you know
that a given property is acyclic (gving a Directed Acyclig Graph "DAG",
like "parent" giving a genealogical misnamed 'family tree' graph), or
perhaps acyclic and functional (giving a tree, like "boss" giving an
organizational tree).
- Photo album (anything whose range is Image).
- Two-dimensional array of objects.
- Thumbnail view is one of the set of small views.
- View suggested when the
- Slide show
- One element takes up all the available space in the view
- Not just of pictures but of any set of
objects or list, or multi-valued property.
- Little controls allow one to step backward, forward, jump to ends.
- Editing. The web should be a two-way thing between person
and the community spaces
- Allow new data to be added, sending the result as some
kind of form I guess - posting RDF.. Needs RDF or N3 serializer.
NTriples serialiser exists.
- Allow existing data to be changed, sending diffs [qv] to a
server.
- Storage: HTML form like server POST, or annotation
server protocol maybe.
- Add a new statement with same s and p or same s. Or
make new one. Select p from list. Include "new..." in the list which in
fact then goes to a form for a new property in a new or existing
ontology.
- Make links betwen S and O by: Select S; "Mark"; select
O; "Link to marked"; select P from popup. (like enquire)
- Make sure you get from the user the access policy which
the new information will be subject to.
- Protocol for posting new data: Just post new data? Post
N3
diff? Post SPARQL expanded to have DELETe ...INSERT ... WHERE
....
- Web access
- Get over the problem that the script is only allowed to
access content on the same server. One or more techniques
- Have the user set the Firefox browser to do codebase
principals. This works. It is not ideal. [done,
See Help file.]
- Hack around the problem using alternative HTTP access
code. This would normally rely on some less secure Firefox extension.
- Establish a local gateway on the user's machine. This
would not be easy to do portably, but an Apache config file would be a
start
- Establish a general gateway for all users, at
something.w3.org. This would make sense only if it could be used for
other purposes, such as caching, (Ontaria connecetion? Swoogle service)
- Better HTTP error handing: make all information including
403
and 404 messages available from "sources" list. Handle 301, 302 (not
handled by Safari automatically, but done by Firefox) and 303 handling
as per TAG finding HTTPRange-14
- Local cache of remote files.
- Using query
servers. Use SPARQL. Pick up metadata about what servers can answer what questions. Eg: Request for file returns HTTP code 303
redirecting to RDF information about the documents saying that it is
big and where the SPAQL interface is. The RDF mapping of WSDL might be
handy if a SOAP interface is exported.
- Add N3 parser. (Eulermoz? Generate a parser from the N3
gammar work? Sean Palmer's n3p?)
- Parser: Track the provenence [done] or inference which led
to a statment, to allow 'of yeah' button, and retraction.
- GRDDL. This is a technique for extracting the RDF data from
XML pages which have not been marked up as RDF. Needs access to the
host browsers's XSLT system, which I understand exists in
Firefox. Partly done: works using web service to do eth
transform. Convert to using internal browser XSLT engine where
available. Cache XSLT transform file DOMs in memory, as we expect them
to be used by many pages.
- The Query engine and Store
- Lists as lists. RDF Collections (N3 lists) handled as internal datatype,
maybe subclass of javascript array, or just javascript array? Compare cwm.
- List object in terms
- RDF parser creates lists
- Property list view displays lists much as it does sets of many values of same property.
- Parser
- Change all for..in array-iterating constructs to just for
- Finish compliance work for official positive rdf parser test-cases
- Bring parser into compliance for negative rdf parser
test-cases
- Test parser on a moderately large corpus of real-world
test-cases
- Benchmark parser
- Comment parser to correspond to spec
Done
- Saving the HTML view as HTML. Can one ever save the DOM state as an HTML
file? If so, it would be useful to be able to save the state in such a
way that it could be emailed as a report, for example, which would be
live for the person reading it.
- Alternative UI architecture for buttons: Unicode symbols
with style sheet swicthing to change color of symbols for each
different source?
- Visit web pages - option to open a new web page in
another or the same window?
- Mouseover help. Toolbar tips.
- "Printable version" or "Link to this page" which generates
a URI
which will deref to the whole view. Especially (only?) for table view.
URI could be encoded SPARQL or N3QL of the view.
- When a cell is single-clicked, highlight source view for the revant source file.
- Automatically find ontological closure of data added (look
up all predicates and types)
- Smush together nodes using [inverse] functional properties,
and owl:sameAs
- List classes mentioned in a document: currently one gets
document metadata but not contents.
- Document content view: distinguish between loading a
document and looking at its contents, and just looking.
- Add why parameter to parser, put into each
statement,currently the RDFSymbol for the source document.
- Query generation by example: Select cells in the table,
select property cell meaning "for all of these", generat e a query for
a table, for a rectangular tabe view.
- URI of the object in question - click on a cell and it is
put in the URI bar.
- In sources list, allow retract. Can still look at content
of document, but it is not considered part of the kb.
- In sources list, allow retry for failed fetches, and maybe
even refresh for successful ones.
- Parser: clean up URIs
- Table view: Ordering by clicking on column titles. Up or down, use
arrows like mac mail etc etc. (done)
- Visit web pages - option to open a web page in the same window in an iframe.