## What is Graph Structure?

Before jumping into graph data models, an important concept to understand is the graph data structure. A graph structure is a mathematical representation of a network consisting of nodes or vertices and edges that connect them. Graph structures can model complex systems and relationships between entities, making them a fundamental tool in computer science, mathematics, and many other fields.

In a graph structure, each node represents a discrete entity or object, and each edge represents a relationship or connection between the nodes. For example, in a social network graph, a node would represent each person, and an edge would represent each connection or friendship between them.

Graph structures can be directed or undirected, depending on whether or not the edges have a specific direction. In a directed graph, the edges have a specific direction, which means there is a distinction between each edge's start and end points. In contrast, undirected graphs do not have a specific direction for their edges, meaning that each edge is bidirectional and can be traversed in either direction.

Another important concept in graph structures is the concept of weights or costs, which can be assigned to edges to represent the strength of the relationship or the cost of traversing the edge. For example, in a transportation network graph, the weight of an edge could represent the time it takes to travel along that edge.

There are many types of graph structures, including tree structures, bipartite graphs, and planar graphs. Each type of graph structure has unique properties and use cases, making them useful for various applications.

In computer science, graph structures are commonly used in algorithms for tasks such as searching, sorting, and pathfinding. For example, the shortest path algorithm is used to find the shortest path between two nodes in a graph, while the depth-first search algorithm is used to traverse a graph and visit all its nodes.

## What is Graph Model?

A graph model is a way of representing complex relationships between entities visually and intuitively. It is similar to a graph structure in that it uses nodes and edges to represent objects and their connections, but a graph model takes this idea a step further by adding attributes and labels to the nodes and edges.

In a graph model, nodes represent entities, such as people or objects. Edges represent relationships or connections between the nodes. These relationships can be of many types, such as friendships, transactions, or dependencies.

In addition to nodes and edges, graph models include attributes and labels. Attributes are properties that describe the nodes and edges, such as a person's age or a product's price. Labels are descriptive names assigned to the nodes and edges, making understanding the graph's structure easier.

Graph models are used in many fields, such as social networks, finance, and biology. For example, a graph model could be used in a social network to analyse the connections between users and identify influencers or communities. In finance, A graph model could represent account transactions and detect fraud or money laundering.

One of the advantages of graph models is that they can be easily visualised and understood. By representing complex relationships simply and intuitively, graph models can help identify patterns and insights that may be difficult to see using other methods.

In computer science, graph models are often used in database management systems and data analysis tools. Graph databases are designed to store and manage large amounts of data using graph models, meaning that querying and analysing relationships between entities can be done efficiently.

Another important concept relating to graph models is that of ontology. An ontology is like a vocabulary or a set of rules that provides a common understanding of a specific subject area and enables sharing and reusing of knowledge. Ontologies are explained in more detail on this page.

## The Difference Between a Graph Model and a Relational Model

The relational and graph models are two different ways of organising and representing data. While both models are used to manage and analyse data, they differ in structure, organisation, and functionality.

The relational model is a data model that organises data into tables or relations. Each table consists of a set of columns, each representing a different attribute or characteristic of the data, and a set of rows, each representing a different instance of the data. The relationships between the tables are defined through primary and foreign keys, which link related data across tables. The relational model is widely used in database management systems, such as MySQL, Oracle, and Microsoft SQL Server.

On the other hand, the graph model is a data model that organises data into nodes and edges. Nodes represent entities, whilst edges represent relationships between entities. The relationships between the nodes and edges are defined by their properties and labels, which describe the characteristics of the entities and relationships. The graph model is widely used in graph databases, such as Neo4j, Amazon Neptune, and Microsoft Azure Cosmos DB.

One of the main differences between the two models is their structure. The relational model is a tabular model, while the graph model is a network model. The relational model represents data as a set of tables with columns and rows. In contrast, the graph model represents data as a network of nodes and edges. This difference in structure affects the way that data is organised and queried. In a relational model, data is organised in tables, and queries are typically performed using SQL, which involves selecting and joining data from different tables. In a graph model, data is organised as nodes and edges, and queries are typically performed using a query language designed specifically for graph databases such as Cypher.

Another difference between the two models is their functionality. The relational model is well-suited for structured data with well-defined relationships between entities. In contrast, the graph model is well-suited for unstructured and semi-structured data with complex and dynamic relationships between entities. The graph model can represent complex relationships and dependencies that are difficult to model in a relational model, such as social networks, recommendation engines, and supply chains.

## Types of Graph Models

There are many types of graph models, each designed to represent a specific type of graph-like data structure,  having its own specific rules and constraints that define how nodes and edges are connected and manipulated.

### Conceptual Graph Model

In a conceptual graph model, nodes represent concepts or entities, and edges represent relationships between those concepts. However, unlike semantic networks (covered in this section), conceptual graphs are designed to be human-readable, using a graphical notation that allows complex relationships to be represented visually.

### Directed Acyclic Graphs (DAGs)

A DAG is a graph model characterised by its directed edges and the absence of cycles. In a DAG, edges have a direction representing the flow of information or control, and cycles are not allowed, preventing infinite loops or circular dependencies. DAGs are used in many applications, including task scheduling, data processing, and version control systems.

### Hypergraphs

A hypergraph is a graph model that generalises the concept of a graph by allowing edges to connect more than two nodes. In a hypergraph, an edge can connect any number of nodes, and each edge is represented as a set of nodes. This model allows for more complex relationships to be represented. Hypergraphs are commonly used to represent complex data relationships, such as those found in social networks, recommendation engines, and bioinformatics. They are used in many applications, including social network analysis and machine learning.

### Knowledge Graphs

A knowledge graph model captures knowledge as a network of interconnected entities and their relationships. It provides a way to organise and structure information, allowing for more efficient querying, reasoning, and inference. In this model, each entity is represented as a node or vertex, and the relationships between entities are represented as edges or links. These entities can include people, places, concepts, events, and more. The relationships between these entities can be many different types, such as "is a," "part of," "causes," "located in," and so on.

Knowledge graph models are used for a broad range of applications, including search engines, recommendation systems, chatbots, question-answering systems, and more. They are particularly useful for applications that require a deep understanding of the relationships and context between entities.

Because of how they are defined, knowledge graph models can be represented by several different types of graph models, including RDF graph, property graph, conceptual graph, or semantic network models, all described on this page.

### Network Graphs

A network graph model is used to represent potentially complex networks, allowing users to analyse their structures and properties. Network graph models can be used to study various types of networks, including social networks, transportation networks, biological networks, and communication networks. They are particularly useful in analysing large-scale networks with complex patterns and can provide insights into the structure and behaviour of these networks.
There are several different types of network graph models, including random graph models, small-world models, scale-free models, and community detection models. They are widely used in various fields, including computer science, social sciences, physics, and biology. They have applications in areas such as predicting network behaviour, identifying key nodes or entities, and optimising network performance.

### Property Graphs

Property graphs are possibly the most common types of graph model used in graph databases. In a property graph model, nodes and edges can have arbitrary key-value properties associated with them, allowing for flexible data modelling. Property graphs are commonly used to represent complex data relationships. They are often used for social network analysis, recommendation engines, and fraud detection.

### RDF Graphs

RDF (Resource Description Framework) is a standardised format for representing metadata and ontologies on the web. In an RDF graph model, nodes represent resources or concepts, and edges represent relationships between those resources. A unique URI (Uniform Resource Identifier) identifies each node and edge. RDF graphs are commonly used to represent semantic data, such as metadata. They are often used for knowledge management, scientific research, and data integration. In an RDF graph database, data is represented using RDF triples, which consist of a subject, predicate, and object.

### Semantic Networks (Semantic Graphs)

A semantic network, also generally referred to as a semantic graph, is a graph model designed to represent knowledge in a way that can be easily reasoned about. It is characterised by using nodes to represent concepts and edges (or arcs) to represent relationships between those concepts. The edges in a semantic network are typically labelled with a predicate or relationship type (marked up using metadata), allowing for more complex reasoning and inference. Semantic networks are commonly used to represent knowledge. They are often used for knowledge management, decision support systems, and natural language processing (NLP). This model type is often used in artificial intelligence applications for representing knowledge.

### Spatial Graphs

Spatial graphs are a type of graph model used to represent spatial networks. In this model, nodes or vertices represent spatial locations, while edges or links represent the spatial relationships or interactions between them. Spatial graph models can be used to study various types of networks, including transportation networks, social networks, and biological networks. They are particularly useful in analysing large-scale networks with complex spatial patterns and can provide insights into the structure and behaviour of these networks. They are commonly used to represent geographic data, such as maps, and are often used for location-based services, logistics, and transportation planning.

## Can you Combine Graph Model Types?

A graph model can, in some cases, be of more than one type. However, certain types are mutually exclusive. For example, a graph model cannot simultaneously be a hypergraph and a property graph, DAG (Directed Acyclic Graph) or a semantic graph.
Some graph models can have more than one type. For example, a property graph can be augmented with spatial coordinates to become a spatial graph. Similarly, an RDF graph can be augmented with ontological reasoning to become a semantic network. It can, however, be a directed or undirected graph.

As covered on this page, a knowledge graph could be either an RDF graph model, a property graph model, or other types of graph model. It's also possible for a graph model to have properties and features from multiple types of graph models. For instance, a hypergraph can be augmented with property values on both nodes and edges, making it a type of property hypergraph.

Overall, the specific properties and features of a graph model depend on the requirements of the application or domain that it is used for, and different types of graph models may be combined or adapted to suit those requirements.

## The Difference Between a Graph Model and a Graph Database

A graph model and a graph database are two related but distinct concepts. As covered on this page, graph models are used to study the structure and behaviour of networks and to make predictions about how they will evolve over time.
On the other hand, a graph database is a database management system that is specifically designed to store and manage data in the form of graph structures. Graph databases are optimised for storing and querying data that is represented as a graph. They use graph traversal algorithms to efficiently query and analyse the data.

To summarise, the key difference between a graph model and a graph database is that the former is a conceptual framework for representing and analysing networks, while the latter is a software tool for storing and managing data that is represented as a graph. While graph models are used to study the structure and behaviour of networks, graph databases are used to store and query data that is represented as a graph. Whilst property graphs and RDF graphs are examples of graph models, neo4j, SAP HANA, and Amazon AWS Neptune are examples of graph databases.

## Some examples of Graph Database Use Cases

There are many examples of use cases where graph databases can provide significant benefits over traditional relational databases. Just a few are listed here:

• PayPal uses a graph database to analyse financial transactions.
• LinkedIn uses a graph database to model its professional network.
• Google's Knowledge Graph uses a graph database to model its vast knowledge base.
• Bosch uses a graph database to analyse sensor data from its manufacturing processes.

## How do You Decide Which Graph Model to Use?

The decision of which graph model to use for your application is an important one, and the choice of graph model for a specific use case depends on several factors, including those listed below. You need to understand all of the requirements of the model and how it will be used.

With many different ways of modelling a graph, there are ample opportunities to optimise a graph model for your use case. It is important that you take the time to explore your options to choose the most appropriate model type, thereby achieving the end goal of your application.

### Nature of the data

The type of data being represented will determine the most suitable graph model. For instance, RDF graphs are commonly used for representing linked data. In contrast, property graphs are often used for representing social networks and recommendation systems.

### Query requirements

It is important to understand the sorts of questions that the graph model will be required to answer. The type of queries that need to be performed on the data will influence the choice of graph model. For instance, a conceptual graph model may be suitable if complex queries involving logical reasoning are required.

### Performance considerations

The size of the graph and the expected rate of data ingestion and query response time are factors that require consideration when choosing a graph model to use. Some models are better suited for handling large-scale graphs or for efficient querying.

### Graph model tooling and development support

The availability of software tools and libraries that work with a specific graph model may influence the model that is chosen. Whilst a model may be the right choice on paper, if it doesn't make commercial sense to use it, then the choice becomes more difficult. You should consider the development, maintenance and optimisation of the graph implementation in practice.

### Integration with other systems

The integration with other systems or technologies may play a role in the choice of graph model. For example, suppose the application needs to integrate with existing RDF data sources. In that case, an RDF graph model may be the most suitable.

## How to Decide What Data to Use in a Graph Model

Establishing the relevant data is an important step in designing a graph model because it helps designers better understand the data and its relationships. By uncovering and analysing the data, designers can identify the entities within the system and the relationships between them. This, in turn, can help to ensure that the resulting graph model accurately represents the entities and relationships within the system.

Additionally, identifying the data can help designers identify any issues or challenges that need to be addressed in the graph model. For example, the data may contain inconsistencies, missing values, or duplicate entries that must be resolved before creating the graph model. By identifying these issues early on, designers can create a more accurate and reliable graph model that can be used for data analysis and decision-making.

Moreover, clearly establishing what the relevant data is can help designers identify any patterns or trends within the data. This can help designers create a graph model optimised for the system's specific needs. For example, suppose the data shows that certain entities have more relationships than others. In that case, the graph model can be optimised to handle those entities more efficiently.

### Data Modelling

The process of identifying and determining what data should go into a graph data model is called data modelling. It is an essential process for creating an accurate and effective graph data model. It helps to ensure that the graph model accurately represents the entities and relationships within the system and provides a clear and concise representation of the data that can be used for data analysis and decision-making.

You can think of data modelling as a process of creating a conceptual representation of data and its relationships, which can then be used to design a graph model or a graph database. Data modelling aims to create a clear and concise representation of data that can be easily understood and used by all graph model stakeholders.

In graph modelling, data modelling involves identifying the entities within the system and their attributes, as well as the relationships between them. This can be done through various techniques such as entity-relationship modelling, UML modelling, or graph modelling notations such as RDF or OWL. The data model created through this process is a blueprint for designing the graph model or graph database implementation. In turn, this is likely to significantly impact the selection of graph model design and the choice of graph database vendor.

Data modelling typically involves several steps, including requirements gathering, conceptual modelling, logical modelling, and physical modelling.

During requirements gathering, the data modeller works with stakeholders to identify the business requirements and data sources for the graph data model. During this stage, experts in the relevant field for which the graph model is to be used, known as domain experts, are heavily involved. At this stage, communication, collaboration and maximum engagement are paramount, so using tools that provide visual representations of ideas is highly beneficial.

### Techniques Used to Uncover Data

Numerous methods and techniques can be employed to uncover the data that will be included in the graph model. Following established practices can be very helpful because it helps ensure the data is properly analysed and structured for use in the model. In the context of graph data modelling, using defined methods helps to ensure that the data is properly organised and consistent and that the resulting graph data model accurately reflects the relationships and entities within the system. Some of these techniques are listed here:

Data exploration: This involves visually inspecting the data to identify patterns, trends, and relationships. Data exploration can be done through various techniques, such as scatter plots, histograms, and heat maps.

Data profiling: This involves summarising and analysing the metadata associated with a dataset, such as the number of rows, data types, and null values. Data profiling can help identify data quality issues and potential areas of interest for analysis.

Data mining: This involves identifying patterns and relationships within data using statistical methods and machine learning techniques. Data mining can help uncover hidden insights and make predictions based on the data.

Data wrangling: This involves cleaning, transforming, and reshaping the data to make it more useful for analysis. Data wrangling can involve tasks such as removing duplicates, filling in missing values, and merging data from multiple sources.

Machine learning: This involves using algorithms and models to automatically identify patterns and relationships in the data. Machine learning can be used for tasks such as classification, clustering, and prediction.

Natural language processing: This involves analysing and extracting information from human language data, such as text or speech. Natural language processing (NLP) can be used to identify sentiment, topics, and entities in the data.

Network analysis: This involves analysing the relationships between entities in the data, such as social networks or supply chains. Network analysis can help identify key influencers and patterns of behaviour within the network.

Spatial analysis: This involves analysing data related to geographic locations, such as maps or satellite images. Spatial patterns and relationships within the data can be found through analysis (spatial analysis).

Statistical analysis: This involves applying statistical techniques, such as regression analysis or hypothesis testing, to the data to identify relationships and patterns. Statistical analysis can be used to test hypotheses and make inferences about the data.

Text mining: This involves analysing and extracting information from unstructured text data. Examples of this type of data are emails or social media posts. Text mining can be used to identify sentiment, topics, and trends in the data.

Time series analysis: This involves analysing data that varies over time, such as stock prices or weather data. Time series analysis can be used to identify trends, seasonal patterns, and anomalies in the data.

Visualisation: This involves creating visual representations of the data, such as charts, graphs, and maps. Visualisation can help communicate complex information clearly and intuitively.

### Finalising a Graph Model Design

Once the requirements gathering phase is completed, further phases are needed as part of the graph modelling process. In the conceptual modelling phase, the data modeller creates a high-level representation of the data and its relationships. In the logical modelling phase, the data modeller creates a detailed representation of the data using a specific modelling notation. Finally, in the physical modelling phase, the data modeller specifies the technical details of the graph model or graph database implementation, such as data types, constraints, and indexes.