Wish List - Data Structures

Considering types of input in terms of their fundamental data structures (e.g., graph, list, table, tree) lets us ignore representational details and concentrate on common problems of presentation, navigation, etc.

For example, each row in the Summary Table links to a "leaf node" in the Discussion section. Each leaf node links back to the Summary Table section, resulting in a cyclic directed graph. The Summary Table (like each of the breakout tables in the leaf nodes) is sortable (in either direction) by a specified column.

Graph

In mathematics, and more specifically in graph theory, a graph is a structure amounting to a set of objects in which some pairs of the objects are in some sense "related." The objects correspond to mathematical abstractions called vertices (also called nodes or points) and each of the related pairs of vertices is called an edge (also called an arc or line). (WP)

There are various sources of graph-based data, including diagram generation tools such as Microsoft Excel and OmniGraffle and query languages such as Cypher, Gremlin, GraphQL, and SPARQL. Indeed, any connected set of web pages can be treated as a graph. However, presenting this data in a blind-accessible fashion is challenging.

We have been experimenting with HTML tables, using variations on adjacency lists and adjacency matrixes. Although the early results seem promising, static tables will become unwieldy as graphs grow in complexity and size. So, an interactive graph browser will almost certainly be needed.

Input Output Brief Description of Feature ED SI SU WIP Activities
Graph data (eg, Cypher, JSON) HTML present with accessible navigation 2 7 7 AUR, MUI
Back to Summary Table

See Also

List

In computer science, a list or sequence is an abstract data type that represents an ordered sequence of values, where the same value may occur more than once. (WP)

Obviously, we want to be able to present accessible versions of sequential data structures (aka lists), as well as lists of lists (aka trees), etc. See the Table and Tree sections for variations on this theme.

Table

A table is a means of arranging data in rows and columns. The use of tables is pervasive throughout all communication, research and data analysis. Tables appear in print media, handwritten notes, computer software, architectural ornamentation, traffic signs, and many other places. (WP)

In computer software, rectangular tables are a critical part of many file formats (eg, CSV, JSON). They are also fundamental to the conceptual models of relational databases and spreadsheets. Tables are also commonly used to display information in documents. Finally, many infographics (e.g., histograms, pie charts) can be represented more accessibly in a tabular format.

Using HTML and some WAI-ARIA attributes, it isn't particularly challenging to generate table structures that can be navigated by popular web browsers and screen readers. A bit of JavaScript can be used to allow manipulation of the table's content (e.g., moving columns, sorting). So, we can make rectangular data structures accessible, support extraction of headings and values, etc.

Input Output Brief Description of Feature ED SI SU WIP Activities
Table (eg, CSV, TSV) HTML present with accessible navigation 2 7 7 AUR, DGA, POC
Table (eg, CSV, JSON) HTML present with accessible navigation 2 7 7 AUR
Table (eg, HTML) CSV, JSON extract headings and values 2 7 5 AUR, DGA
Back to Summary Table

Tree

In computer science, a tree is a widely used abstract data type (ADT) - or data structure implementing this ADT - that simulates a hierarchical tree structure, with a root value and subtrees of children with a parent node, represented as a set of linked nodes. (WP)

In computer software, trees (aka lists of lists) are a critical part of many file formats (eg, HTML, JSON, XML). They are also fundamental to the conceptual models of Lisp and related programming languages. Trees (e.g., outlines, section headings) are also commonly used to organize information in documents. Finally, many infographics (e.g., organizational charts) can be represented accessibly as a tree structure.

Using HTML and some WAI-ARIA attributes, it isn't particularly challenging to generate table structures that can be navigated by popular web browsers and screen readers. A bit of JavaScript can be used to allow manipulation of the tree's content (e.g., hiding or reordering subtrees). So, we can make hierarchical data structures accessible, support extraction of headings, levels, and values, etc.

Input Output Brief Description of Feature ED SI SU WIP Activities
Tree (eg, HTML) JSON extract headings, levels, and values 2 7 5 AUR, DGA
Tree (eg, JSON, XML) HTML present with accessible navigation 2 7 7 AUR
Back to Summary Table

See Also

  • Trees - presentation and recognition of hierarchies


This wiki page is maintained by Rich Morin, an independent consultant specializing in software design, development, and documentation. Please feel free to email comments, inquiries, suggestions, etc!

Topic revision: r5 - 28 Nov 2016, RichMorin
This site is powered by Foswiki Copyright © by the contributing authors. All material on this wiki is the property of the contributing authors.
Foswiki version v2.1.6, Release Foswiki-2.1.6, Plugin API version 2.4
Ideas, requests, problems regarding CFCL Wiki? Send us email