As your data grows and becomes more connected, you will often find yourself looking to highlight a sub-set of your data to tell more meaningful stories. In order to harness the power of the graph in Ardoq's dynamic views, you can now use plain and parameterized graph queries to identify: Value Streams, Data Flows, User Flows, Contextualized Architectures, and much more.
The powers of graph filters let you highlight only a selection of components and references in your visualization. The filters are highly flexible and with the option to enhance them with a changeable selection component.
Graph filters are global for all users in the organization and configured by the Ardoq organization administrator.
The Graph Filters are based on results from Gremlin graph queries. It helps to have some basic knowledge of Gremlin before starting with graph filters. Here is an introduction to get you going with the Gremlin graph search. The graph filters are based on the results from a Gremlin graph query.
Table of Contents:
Types of Graph Filters
Plain Graph Filters
The simplest graph filter is a Plain Graph Filter. The user can toggle it on and off. The filter will work together with all other filters and perspectives.
Parametrized Graph Filters
These filters let you select where the graph filter will start its traversal of the graph. For example, if you have a graph filter that narrows down what you see based on the business unit you're in, you can populate the drop-down with all your business units, and create a filter that only shows what's relevant for that business unit. Currently, Ardoq only supports taking components as parameters.
Creating Plain Graph Filters
Go to Preferences > Organization Settings > Graph filters.
Click the CREATE NEW button and choose the 'Plain graph filter' (we will explain the parameterized graph filter further down). It will open the graph filter editor, which works very similar to the Gremlin graph search.
Give a fitting name to your new graph filter and type in your gremlin query. You can copy and paste this simple one:
g.V().has("fun_task", "true")
to get started. In my case, I have a workspace with daily tasks that have a field called “fun_task” that is either checked true or false.Go ahead and modify the query with a field and value that fits your data, and when ready, press the blue button TEST FILTER.
You'll now see a table with the results returned by the graph filter, and the same results are applied to the graph filter. When you are satisfied with the results, remember to click the save button! ✅
Now you are ready to apply the graph filter you just made. It will be further explained in the next section below. The graph filters are available in quick perspectives for all users. The query only returns the IDs of the affected components for filtering, so users need to have read access to the relevant workspaces for this to work.
If you get no results or errors with your graph filter query, we are more than happy to help you with debugging. Start a chat in-app or via our website, and one of our Gremlin experts can ease the path for you into the Gremlin world.
Applying Graph Filters
You find the graph filters both in quick Perspectives and in the manage Perspectives dialog. When activating the filter, you will see only components and references from the result of the query, in the Ardoq views.
When applying a filter, you may notice that the checkbox shows up yellow or red. Yellow implies that the query returned empty and hide everything. A red checkbox means that the query returned with an error, which needs to be fixed for the graph filter to work.
Creating Parameterized Graph Filters
The parameterized graph filters differ from a plain graph filter in that it includes a parameter. The graph filter can then return results depending on which parameter it is provided with. This functionality gives users the flexibility to change the graph filter results for their usage without having to modify the query.
Here is how to create a parameterized graph filter:
Go to Preferences > Organization Settings > Graph filters.
Click the CREATE NEW button and select 'Parameterized graph filter'. It will open the same editor as when creating a plain graph filter, except this time, you create one parameter query, and one graph filter using the parameter. The parameter query provides the options to use when applying the graph filter.
First, edit the parameter query
g.V().has("fun_task", "true")
with the same example as above, and click RUN PARAMETER QUERY. This runs the query and returns the results in the form of a selection box. These are the options you will be provided when applying the filter later on. The selected options within the editor's view do not affect the graph filter and are only provided here to make it easier to test your graph filter queries.Now you have a few parameters to select from. Create the parameterized graph filter by using the selected value, which has the fixed-parameter name
selectedId
. You will see this value change if you select a different test parameter.Now you can create the second query, using this parameter. You will be provided with a skeleton query,
g.V(selectedId)
, This query finds the component with the id of the parameter you have selected. If you want to see this component and related components one step in and out, try this query:g.V(selectedId).bothE().bothV().path()
Here is how the parameterised graph filter looks like in the Quick perspectives:
Editing a Graph Filter
Follow the steps below to change a filter to accomplish a new task.
Find the graph filter you wish to edit in Preferences > Organization Settings > Graph filters and click on its name.
Get to the view that you can utilize to test the graph filter. If you want to edit the actual query, click the Edit button.
You can then modify the queries the graph filter is based on.
Remember to save everything when you are satisfied with the results.
Example Queries
Here some example queries that might be applicable in your visualization.
Create a graph filter that only shows applications that do not realize a capability
g.V(). hasLabel('Application'). not( out('Realizes'). hasLabel('Capability'))
Query for components
g.V().has("some_field","some_value")
Query for a path
g.V().hasLabel("Application").inE().outV().path()
When creating a query that returns a path, it is important to include edge and vertex specific traversal steps. In the above example, inE() is an edge specific traversal step, due to the uppercase 'E'. Without this, the reference itself will not be returned in the path. Therefore, the reference will not be included in your view after applying the filter.
If you still have questions about this, reach out to us! You can do so via our website or by using the in-app chat. We're happy to help.