This series of articles presents stories that promote “tactical graphs”, the use of Syndeia Digital Thread, to make better business decisions.
Each article: presents a business scenario, offers a Gremlin-language graph query, states how to execute the query, and then dissects that query. Reading these stories, you may learn how to tailor these queries for your own business.
Syndeia is the digital thread platform for model-based engineering. It provides services to author, query, visualize, and curate open digital threads. All of Syndeia’s functionality is accessible via its user interfaces – Syndeia Cloud Web Dashboard and Syndeia local client Dashboards (SysML tool plugins and Syndeia Standalone) — and via its application programming interface (read more at this post).
This is the first part in our series, “Syndeia Digital Thread Graphs, Using Syndeia to do Business” which present short stories on how to use Syndeia’s Graph Service to accomplish real business.
If you are new to Syndeia and the concept of a Digital Thread, we recommend these posts and the short videos linked in the posts.
- Introduction to Syndeia, the Digital Thread Platform for Model-Based Engineering
- Exploring the Digital Thread
- Syndeia API for Open Digital Thread
Your organization has acquired and deployed Syndeia, the digital thread platform for model-based engineering.
You have been tasked to familiarize yourself with its Graph services.
What is Presented
Syndeia is the digital thread platform for model-based engineering.
Although the phrase sounds trendy, properly understood it expresses the value of Syndeia. Therefore, let’s analyze this phrase and synthesize its meaning.
The phrase has the terms: “model-based engineering”, “digital thread”, and a “platform”. Let’s define each.
“Model-based engineering” is the practice of the specification, implementation, acquisition, maintenance, and disposal of technology where that practice involves multiple teams of discipline-specific expertise whose members share information primarily with models. Model-based engineering is intended to be contrasted with document-based engineering. Traditionally, the participants in multi-disciplinary engineering shared information primarily with documents and rhetoric.
What is a Digital Thread? A “digital thread” is a graph whose nodes are elements in various enterprise repositories, tools, and version control systems, and whose edges are intra-model relationships within each tool and are inter-model relationships.
A “digital thread” graph might include digital engineering artifacts (such as a requirement “SHALL statement” stored in an electronic repository), usually of different kinds and usually tailored to specific disciplines, which have been related, by a curator or by the authoring service, with each other – according to an arrangement that is useful for business purpose.
For example, many businesses believe that capabilities drive requirements which constrain system specifications that allocate functions to systems which are verified by test cases. Here, a thread is implied that relates instances of kinds of engineering artifacts in the partial order of Capabilities > Requirements > Specifications > Functions and Systems > Software and Products > Test Cases. When the artifacts in the chains of related elements are digital and when the chain itself is stored electronically, then that chain is a digital thread.
A “platform” is a foundation that supports perspectives and pursuits. From a platform, one can visualize surroundings and launch endeavors. A platform is not a solution but it enables solutions.
A “digital thread platform” is a platform that acts as a platform by virtue of its use and management of digital threads.
Syndeia is a digital thread platform for model-based engineering – that offers a Graph service for doing real business.
What is a Graph?
A graph is a set whose members are Vertices and Edges.
These graphs are not charts of data. Charts are a different kind of “graph”.
In this series, we will deal with three specific subsets of Graphs.:
- In a Property Graph, vertices and edges of a graph may have key-value Properties
- In a Typed Graph, vertices and edges have distinct Types
- In a Typed Property Graph, vertices and edges have both Types and Properties.
The simple concepts of a Typed Property Graph: Vertices related by Edges, each with Properties and a Type
Additionally, edges may have directionality. Directed edges originate in a source vertex and terminate in a target vertex. In some graph variants, edges might be undirected. There, edges only indicate a relationship exists but do not express order between the related vertices.
Graphs can be: stored, queried using pattern matching, traversed, generated and transformed, and analyzed. The ability to support analysis is especially important for getting business done.
For an introduction to graphs, especially to the two primary forms of Property Graph and Knowledge Graph, check this. Note that Property Graphs are a subset of Knowledge Graphs.
Digital Thread as a Graph managed by Syndeia
A “digital thread” is a graph whose nodes are elements in various enterprise repositories, tools, and version control systems, and whose edges are intra-model relationships within each tool and inter-model relationships across elements in different tools.
Illustration of a Syndeia Digital Thread Graph as it relates digital engineering Artifacts across federated Repositories
The Digital Thread graph managed by Syndeia is a Directed Typed Property Graph. It holds Vertices and Edges, each of which has one or more Properties and a Type. They are implemented as Labels in the graph. Syndeia’s Types of Vertices include Repositories, Containers, Artifacts, Repository Type, Container Type, Artifact Type, and Relation Type.
Syndeia’s Digital Thread Concepts allocated to Directed Typed Property Graph Concepts
Edges within Syndeia’s graph relate pairs of Vertices (and, in self-referential cases, a single Vertex with itself) to represent the common relationships between Artifacts and Containers. For example, Edges that assert that one Artifact is owned by a Container are labeled, “ownedBy”.
Syndeia’s Graph stores an organization’s several digital threads — and each such digital thread is contained within a specific Syndeia Project.
Syndeia’s Graph service offers visualization, analytical, and transactional capabilities, enabling stakeholders to access their digital threads and gain decision-making, business value from the threads.
Why a Digital Thread Platform Matters
Enterprise analysts claim that document-based engineering is inadequate for modern, enterprise-scale engineering. Systems engineers claim that model-based engineering is the remedy for the shortcomings of document-based engineering.
If an organization wants to succeed at engineering, with model-based engineering, at enterprise scale, with collaboration across disciplines, and with economic efficiency and accuracy then that organization needs to digitally thread their digital engineering artifacts.
Organizations therefore benefit from deploying Syndeia as the digital thread platform for their model-based engineering.
For references on the economic Return on Investment in model-based Systems Engineering, refer this page.
Syndeia’s Graph Service uses Apache Tinkerpop, a graph computing framework, and Gremlin, a language for property graph Online Transaction Processing (OLTP) and Online Analytics Processing (OLAP), to offer an implementation-neutral service.
“The most common and perhaps widely-used graph query language is Gremlin. This is the query language of Apache TinkerPop graph computing framework (which a community project written in Groovy). Gremlin is widely adopted and supported by nearly all graph databases supporting Property Graphs (PG). A close second in Cypher from Neo4j. Cypher, PGQL and G-CORE are being fused into GQL a single unified Path Property Graph (PPG) query language.” — https://leapgraph.com/graph-query-languages/, 2018
Using Gremlin, a user does not need to learn both a database query language and a domain-specific BigData analytics language such as Spark DSL, MapReduce, or others. Gremlin is all that is required to build a graph-based application because the Gremlin traversal machine handles both demands for queries and for analytics.
Gremlin: learn one language for both OLTP and OLAP business needs
A basic example Gremlin query to obtain the names of the friends of the friends of Gremlin might look like:
g.V() .has( "name", "Gremlin" ) .out( "knows" ) .out( "knows" ) .values( "name" )
With Syndeia, analysts can interact with the Syndeia Digital Thread graph through the Syndeia Web Dashboard and through the Syndeia API’s /graph/query/raw endpoint.
This blog series will present examples of using both tactics.
Here, we see two screens from Syndeia Web Dashboard that show the Gremlin Query Builder for the Syndeia Digital Thread.
Syndeia Web Dashboard offers a Gremlin statement editor for Syndeia Graph Gremlin queries
Syndeia Web Dashboard offers a form-based Query Builder for Syndeia Graph Gremlin queries
The following screen, taken from the online Syndeia REST API, illustrates the availability of the Syndeia Digital Thread’s Graph REST API endpoint.
Syndeia’s API offers a service endpoint for Syndeia Graph Gremlin queries
Syndeia and its Digital Thread Graph, accessed with Gremlin, allows business stakeholders to manage the information within their engineering repositories, to visualize the information connected by their digital threads, to perform analytical queries and computations over connected information, and to simply use their engineering information to make better decision more effectively using empirical data.
Articles in this blog series will explore both the web and the API use of the Syndeia Digital Thread Graph.
This article has introduced you to Syndeia’s Digital Thread Graph Service.
In real life, you might need this knowledge to be able to formulate your own queries for the Syndeia Graph to help you propose persuasive arguments for technology acquisition or to advise stakeholders of earned value towards business or mission goals.
We intend to continue this series of posts with these topics:
- Finding all kinds of Repositories which are contributing information to the Syndeia Digital Thread
- Finding all Repository Instances which are contributing information to the Syndeia Digital Thread
- Finding GitHub Commits that lack a Jira Story
- Finding Jira Stories that don’t yet have a GitHub Commit
- Tuning Gremlin Queries