Syndeia API for Open Digital Thread, Part 4 – Syndeia Cloud 3.5 Analytics Notebook

One of the principal benefits of a digital thread platform such as Syndeia is that it gives project leaders a holistic real-time view of the entire modeling effort. By combining Syndeia data requests with data science analytics, users can monitor and document progress quantitatively. In Part 4 of this series, we review a new Jupyter notebook, Syndeia_Cloud_3.5_Analytics, illustrating this idea.

One new feature in Syndeia release 3.5 is the ability to include and interpret time data in Gremlin graph queries. We use this to create and display timelines as part of our analytics.

In Part 4, we will just be using Queries to the Syndeia Cloud Database, both simple and graph (Gremlin-based), but a similar approach could be used for each of the federated repositories. We will also be making most of our queries against the entire Syndeia Cloud database. In the final section, we will show how similar queries can be made against specific Syndeia Projects, i.e. individual digital threads.

For each section, we will identify the question being asked and what the results look like. The API call/Python code patterns used to make these queries are described in the accompanying TechNotes.

Getting Started

This Jupyter notebook is available as part of the Syndeia Cloud API Cookbook, which may be downloaded with the Syndeia 3.5 release software and the Syndeia Cloud Python Client by regular and evaluation license holders. Click here for more information.

All Syndeia documentation can be accessed most easily through the Help icon on the Syndeia Web Dashboard once Syndeia Cloud has been installed. In terms of thinking about these queries, it may be especially helpful to review the Syndeia data model under API – Overview. Intercax periodically offers on-line live training classes that provide a comprehensive review of all things Syndeia functionalities. Check out the Syndeia Training Program for more details.

Getting Repositories and Repository Types

A starting point in analyzing the Syndeia Cloud database contents is to identify what repository types and which repositories of each type are being managed by Syndeia.

Figure 1 Repository Types in Syndeia Cloud (partial)

Step 3a uses the RepositoryTypeAPI class get_repository_types() endpoint. The entries returned represent the array of different modeling tools that Syndeia currently provides integrations for. The initial table entries appear as in Figure 1.

The cell labelled Step 3b asks, “What repositories of each type are managed by this instance of Syndeia Cloud?” The results are tabulated as in Figure 2, where several repository URIs have been masked out. For this, we used the RepositoryAPI class with the get_repositories() method. Some repository types may be represented by more than one repository, especially in the File System and RESTful types. In the Syndeia Cloud instance in our example, there were 105 repositories of 22 repository types.

Figure 2 Repositories in Syndeia Cloud listed by repository type (partial)

For more information on the Syndeia-related Python code in this section, see the TechNote, “Queries to Syndeia Cloud Database”.

Get Syndeia containers (Digital Thread projects)

Figure 3 Syndeia Digital Thread Projects (partial)

The first request in Step 4 is a simple query, get_containers(), formulated to return a list of the Syndeia Projects, which are Containers in the Syndeia data model. Typically, each project will represent a single digital thread. A list of container names and keys is returned, but only the number of projects is printed out.

In Step 4b, that list is used to generate a series of graph queries to count the number of current inter-model relations in each Syndeia project. The results are tabulated in Figure 3, showing a real-time record of the number of inter-model links, by project, at a particular point in time.

Get total number of Items and Types across all Syndeia Projects

In a similar fashion, Step 5 loops through a list of Gremlin graph queries to count the number of Items of each type (repositories, containers, artifacts and relations) and the number of item types in each of those categories for the Syndeia Cloud database as a whole (all digital threads). Figure 4 shows, for example, that Syndeia has 26087 artifacts of 425 artifact types as participating in at least one digital thread. In the last section of this notebook, we will show how one of these queries is modified to show results for a single digital thread/Syndeia project.

Figure 4 Total Items and Item Types managed by Syndeia

For more information on the Syndeia-related Python code in this section, see the TechNote, “Analytics and Timelines”.

Get timeline of Syndeia data

The previous questions in this notebook asked about Syndeia data at the current time. With Syndeia 3.5, we can also retrieve and display historical data of the same types. Gremlin queries now include the ability to include and interpret time data. For more information on the Syndeia-related Python code in these sections, see the TechNote, “Analytics and Timelines”.

Get timeline of Syndeia containers (Digital Thread projects) created

In Figure 5, we display the number of Syndeia Projects created by month between January 2020 and December 2022. The Gremlin query uses the createdData value Syndeia holds for each container item and loops through each time period searching for the number of containers with that createdDate. Note that any projects created and deleted before the notebook is run will not appear in the query results.

The graph uses the Python plotly.graph_objects library imported at the beginning of the notebook.

Figure 5 Timeline, Syndeia Containers creation

Get timeline of inter-model relations created across all Syndeia projects

In Figure 6, we display the number of Syndeia inter-model relations created by month between January 2020 and December 2022 for all Syndeia containers (digital thread projects).

Figure 6 Timeline, Syndeia Relations creation

Get cumulative timeline of inter-model relations created across all Syndeia projects

In Figure 7, we display the same data as in Figure 6, but plotted cumulatively.

Figure 7 Timeline, Syndeia Relations creation (cumulative)

Get cumulative timeline of inter-model relations created across all Syndeia projects

In Figure 8, we display the same type of data as in Figure 6, but confined to a specific Syndeia Project. We specified the Container internal key (“MBSB01” in this example) and added it as a filter condition to the Gremlin query.

Figure 8 Timeline, Syndeia Relations creation for a single Syndeia Project/Digital Thread


In this Jupyter notebook, we have shown multiple examples of queries for analytical information about how many projects, artifacts and relations have been incorporated into the digital thread, giving project managers real-time insight into the status and progress of the modeling effort. In subsequent posts, we will examine retrieving data from specific federated repositories such as Jama Connect and TeamworkCloud.

Download TechNotes

Click here to download our Technotes.

Next in this series

The next set of posts in this series will use Jupyter notebooks as the primary means for demonstrating the Syndeia API and will focus on the following topics.

Additional posts are in development and the content list will be revised on a regular basis.

Contributions by

The notebook was created by Dr. Manas Bajaj, Chief Systems Officer at Intercax, who leads product research and development, including the Syndeia platform. He focuses on new tools and technologies to support digital thread, digital engineering, and MBSE/MBSE. He was a contributor to the SysML (Systems Modeling Language) 1.0 open standard and leads the SysML v2 API and Services standards development as part of the SysML v2 Submission Team (SST).

Dirk Zwemer

Dr. Dirk Zwemer ( is President of Intercax LLC (Atlanta, GA), a supplier of MBE engineering software platforms like Syndeia and ParaMagic. He is an active teacher and consultant in the field and holds Level 4 Model Builder-Advanced certification as an OMG System Modeling Professional.