In the vast sea of public domain software, multitudes of packages exist for any given purpose. There are dozens of visualization toolkits and databases. The geographic capabilities of Google Maps, ESRI and other commercial utilities are quite sophisticated. So what are the advantages which Prajna offers?
Many visualization toolkits which have compelling visual displays are designed to work with specific types of data. Academic toolkits may be limited in their scope, working only with a specific data set. Adapting the visualization tool to other purposes requires a significant amount of re-engineering.
Another common limitation of many visualization tools is that the internal design of the visual display takes advantage of implicit knowledge of the objects being visualized. For example, a graph visualization may implicitly know which field of the data should be used to render nodes based upon a particular classification, or the graph arrangement techniques knows which field represents the weights of the edges. Unfortunately, this approach requires a developer to conform to a particular toolkit's design even when it may not be appropriate - a graph may not have weighted edges, for instance.
Prajna approaches the design of the visualization components by separating the data objects, the graph and tree arrangements, and the rendering of individual components. By using Java generics, a developer can still use a strongly-typed graph or tree. The algorithms used to arrange the nodes of a graph or tree are not affected by the type of data displayed, nor are they affected by how a particular node is rendered. This separation of design follows the object-oriented principles of encapsulation and the Model-View-Controller framework.
The Prajna toolkit includes some basic ontology and reasoning capability. While many visualization applications simply display whatever data is retrieved, Prajna enables a developer to add auxiliary information about particular data sources. By augmenting data prior to visualizing it, a developer can create compelling, information-rich visualizations. Furthermore, the visualizations can take advantage of the augmented knowledge.
Similarly, many semantic tools which use ontologies or build object graphs from RDF simply represent the data as a graph. Frequently, the visualizations of these semantic objects do not include any deep querying or filtering. A developer usually has a particular limited set of questions or goals, and design a tool which enables a user to meet those goals. Prajna provides this capability by allowing a developer to apply advanced visualization techniques to semantic knowledge bases
Most data access components simply retrieve records. Visualization tools and semantic query engines frequently query a data repository, and retrieve one or more records. These records may include data which should be displayed as a graph, grid, or tree. However, the data is specific to that particular repository. A typical visualization application relies upon implicit knowledge, such as the fields which represent the edges of a graph or the parent-child relationship in a tree. It uses this implicit knowledge to construct the graphs or trees in a application-specific way.
Different repositories have different schemas, designs, etc. Developers must wrestle with differing access mechanisms, different data designs, and different user expectations. By using a common DataAccessor structure, Prajna supports querying a variety of data sources and composing a variety of data structures from the resulting data. This process is designed to be independent of data source and data schema, so a developer could easily use an accessor to derive a set of hierarchical or networked data structures.