Gruff: A Grapher-Based Triple-Store Browser for AllegroGraph

"I am continually showing the wonderful way in which Gruff allows us to analyze our data. Every time I demonstrate your product, people are immensely impressed by what it can do and the insight we gain from it. My analysts tell me they have discovered millions of Euros in fraud by using Gruff. Thanks!" - A Semantic Architect

"Congrats to Franz again on GRUFF! I don't know whether to weep with joy or cheer over the perfection of the reification display!" - Eric Peterson

"Thanks for writing Gruff - I had just about made the decision to write my own RDF browser and then I found out about Gruff! Gruff is far better and easier to use than anything out there." - M.H., a commercial user


The free-form nature of triple-stores offers a lot of flexibility for constructing databases, but that freedom can also make it less obvious how to find arbitrary data for retrieval, error-checking, or general browsing. Gruff is a freely downloadable graphical triple-store browser that attempts to make data retrieval more pleasant and powerful with a variety of tools for laying out cyclical graphs, displaying tables of properties, managing queries, and building queries as visual diagrams.

Use gruff to display visual graphs of subsets of a store's resources and their links. By selecting particular resources and predicates, you can build a visual graph that displays a variety of the relationships in a triple-store. Gruff can also display tables of all properties of selected resources or generate tables with SPARQL queries, and resources in the tables can be added to the visual graph.

New Gruff Features

The paragraphs below describe select features of the latest versions of Gruff. For a complete listing of the new features, see the Release History

New in Version 5.9 - A Horizontal View screen layout

Gruff's new command "Layout | Do Tree Layout from Selected Node" creates a traditional tree layout from the nodes and links that are currently displayed, using the selected node as the arbitrary root node of the tree. The tree is then laid out using the shortest path to each connected node, with cycles in the graph displayed as links to additional parents in the tree. Heuristics similar to kerning are used to reduce the overall breadth of the graph, to reduce the amount of scrolling that's needed.


Figure 1. - Traditional View

Figure 2. - New Horizontal View

New in Version 5.2: SPARQL Endpoint Connections

Gruff now allows users to connect and browse SPARQL Endpoints directly, without using an AllegroGraph database.


The new child menu "Global Options | SPARQL Endpoints" contains options that are specific to SPARQL endpoints, mostly to disable certain capabilities by default that may typically be too slow for an endpoint; in particular, label properties are not displayed by default with endpoints, but they can be. Most Gruff functionality is available with endpoints, though some menu commands that are not available (such as path-finding) will be grayed out and inactive when using an endpoint.

New in Version 5: Spring Layout View

Gruff was originally designed to view and investigate portions of the graph using a constraint-based algorithm which specialized in avoiding any overlapping between nodes and links This makes viewing the graph more usable and clear (to the user) which nodes are linked by each link line.

The constraint-based algorithm while better for clear viewing of the graph requires more RAM when you want to view a very large graph on screen. With Gruff v5 we have added a spring layout algorithm which is used for larger graphs to find a layout much more quickly, though it does not attempt to prevent nodes from overlapping link lines.

The two approaches are configurable via the Gruff commands so the user can define when the layout will switch from a constraint-based algorithm that's used for smaller graphs to a spring algorithm that's used for larger graphs.


New in Version 4: Outline View

There is a new outline view for browsing and editing linked nodes as an indented outline. It is especially useful for viewing hierarchies of nodes such as those using rdfs:subClassOf or skos:narrower predicates, and editing them by shifting nodes around (perhaps while adding new nodes as well). See this tutorial for Building a Hierarchy from Scratch in the Outline View.

Store Editing for Creating and Deleting Triples

See the various commands on the new Edit pull-down menu and on the new right-click pop-up menu in the table view. A property value in the table view can be edited in place or replaced with an existing node that you select in one of several ways. You can create or edit an object "by type", where Gruff will add suggested rows to the table for predicates that other objects of the same type have, and for predicates that define that type as their domain or range. Edits can be undone and redone.

RDFa - Capture From Websites

From Wikipedia: RDFa (or Resource Description Framework - in - attributes) is a W3C Recommendation that adds a set of attribute level extensions to XHTML for embedding rich metadata within Web documents.

New in Gruff is the ability to Load Triples by Extracting Triples from RDFa. With a triple store open, you enter the URI of the web page that holds the triples in RDFa format. You can optionally specify the Named Graph to load the triples into, or use the default graph. You can then display the triples in this version of Gruff.

RDFa Capture Screenshots

Information being extracted from

For a complete listing of the new features in Gruff, see the Release History

Graphical Query View

The View menu has a new Graphical Query View command to switch to the new view (shortcut is E). In this new view you mainly use pop-up menus rather than menu bar commands, by right-clicking the background, nodes, and link lines to see their various context-sensitive menus.

The Graphical Query View allows creating queries as diagrams of nodes and links. A query diagram can include actual objects from the store, which you select as in other views, while other nodes and links represent query variables. Group graph patterns such as UNION and OPTIONAL groups can be laid out as grouper boxes that can be nested to any level, with proper nesting maintained automatically.

Once you've created a query diagram, Gruff will generate either SPARQL or Prolog code for the query. Seeing the generated query text can help you learn to write SPARQL or Prolog queries better. You can also edit the generated text before performing the query. You can save queries either as graphical diagrams or as actual query text, and load them any time later for modification into related queries. You can even generate a visual graph from query results, showing the network of all triples that are comprised of nodes and predicates that are in the query results and the query itself.

Graphical Query View Demonstration

The demonstration video is also available in .wmv format here.


Gruff is an interactive triple-store browser, query manager, and editor that is built on AllegroGraph. Information can be browsed as visual graphs of nodes and link lines that are layed out automatically, and also as tables of properties for particular nodes. Queries can be written textually as SPARQL or Prolog code, or designed graphically as diagrams of nodes and link lines. Data can be created and edited by filling in tables of property values. The various views and tools are tightly integrated to facility rapid browsing, querying, and editing.

The graph view displays a "visual graph" of a subset of the nodes and links that are in the store that you are currently browsing. The nodes are automatically arranged (or "layed out") to make the relationships readable. The layout algorithm specializes in cyclic graphs that are common in triple-stores, which often express many relationships between various objects. The algorithm avoids link lines that pass through unrelated nodes, so that it is easy to spot all of the nodes that are linked with any other node. A node in the graph view is a labeled box that represents a resource or literal in the store. A link is a straight line segment between two nodes that represents one or more of the triples that link those nodes.

The table view displays a table of all of the properties of a single node, which is known as "the displayed node". You can browse from that node to linked nodes in the usual hyperlink way, and edit the property values. Each row of the table represents a single triple that's in the store.

The query view displays a view where you can do a SPARQL or Prolog query and see the results in a table. Nodes in the results table can then be viewed in detail in the table view, or added as nodes to the graph view. To do a query, first decide whether you want to do a SPARQL query or a Prolog query, and select the corresponding radio button at the upper left.

The graphical query view allows devising a query "visually" as a diagram. This is done by arranging node boxes and link lines that represent triple patterns in the query, where the triples patterns can contain variables as well as actual objects that are in the store. A hierarchy of group graph patterns can also be specified be wrapping nested grouper boxes around sets of nodes. General and specialized filters can be specified as well. A SPARQL or Prolog query can then be automatically generated from the diagram and executed as usual in the query view.

Gruff can also be used programmatically, and can be built into a standalone application. This allows calling Gruff functions to build a visual graph with more complete programmatic control.

Additional Resources

Copyright © 2019 Franz Inc., All Rights Reserved | Privacy Statement Twitter Google+