|
6 | 6 |
|
7 | 7 | A [`Thing`](https://schema.org/Thing) metamodel with admin interface.
|
8 | 8 |
|
9 |
| -The GraphDL (Graph Descriptor Language) framework describes and manipulates data within an Object-Role Model (ORM) graph structure. This framework provides a structured way to represent and interact with complex data relationships. The core components and concepts of GraphDL include: |
| 9 | +The GraphDL (Graph Descriptor Language) application framework provides a comprehensive Object-Role Model (ORM) framework for modeling relationships and processes, making it particularly suitable for developers, business analysts, and AIs creating e-commerce platforms, content management systems, and more. By describing the requirements for an application, then translating the description into simple sentences and abstracting out atomic fact types, the atomic fact types can be added to the GraphDL application as `Graph Schema` objects, which form a knowledge graph that can be relational-mapped into a database that stores `Graph`s in third normal form. The core components and concepts of GraphDL include: |
10 | 10 |
|
11 |
| -**Nouns and Resources:** Represent entities, objects, or values within the system. Nouns can be any subject or direct object of a sentence. They serve as the primary nodes within a Graph Schema, embodying the entities around which relationships are formed. When a Graph Schema is implemented as a Graph, Nouns are stored as Resource nodes in the Graph. A Resource represents a single instance of a Noun, such as a user, product, order, etc. |
| 11 | +**Graph Schemas and Graphs** `Graph Schema`s act as blueprints for how data is structured within a `Graph`. They define the `Reading`s of `Noun`s and `Verb`s. |
12 | 12 |
|
13 |
| -**Verbs, Readings, and Roles:** Define the interactions between nouns. In a graph context, Readings with Roles can be thought of as the edges that connect nodes (Nouns), specifying the type of interaction or relationship that exists between them. This could include actions like "create", "modify", "owns", "relates to", etc. Readings provide the main interface for providing API definitions with verbs. Roles are used to define the directionality of the relationships between all nouns. When a Reading is accessed by an API, the Verb and Resources are stored as a Graph that implements that Reading's Graph Schema. |
| 13 | +**Readings and Roles:** Define the interactions between `Noun`s. `Reading`s with `Role`s can be thought of as the edges that connect nodes (`Noun`s), specifying the type of interaction or relationship that exists between them. `Reading`s provide the main interface for providing API definitions. When a `Reading` is accessed by an API, the `Verb`'s `Action` and the `Noun`s' `Resource`s are stored as a `Graph` that implements that `Reading`'s `Graph Schema`. `Role`s are used to define the part that each `Noun` plays in the `Graph Schema`. The number of `Role`s in a `Graph Schema` determines its arity. `Graph Schema`s can be unary, representing a checkbox or boolean field, binary, representing a value/field or relationship with another entity, or any arity higher than binary to represent a complex fact or table. |
14 | 14 |
|
15 |
| -**Graph Schemas, Contraints, and Graphs:** Graph Schemas act as blueprints for how data is structured within a Graph. They define the readings of nouns and verbs that exist and how they are allowed to interact. Constraints ensure data consistency and govern the rules for how entities map to a relational database schema. |
| 15 | +**Nouns and Resources:** Represent entities, objects, or values within the system. `Noun`s can be any subject or direct object of a sentence. They serve as the primary nodes within a `Graph Schema`, embodying the entities around which relationships are formed. When a `Graph Schema` is implemented as a `Graph`, `Noun`s are stored as `Resource` nodes in the `Graph`. A `Resource` represents a single instance of a `Noun`, such as a user, product, order, etc. |
16 | 16 |
|
17 |
| -**Statuses and Transitions:** Statuses represent the status of an entity at a given time, and transitions define how entities move from one state to another based on certain verbs or events. This is crucial for modeling workflows and processes within a system. |
| 17 | +**Verbs and Actions** A `Verb` represents the relationship between two `Noun`s. It defines the type of interaction or relationship that exists between them. An `Action` is a specific instance of a `Verb` that is used in a `Graph`. This could include actions like "create", "modify", "owns", "relates to", etc. |
18 | 18 |
|
19 |
| -**Events, Actions, and Guards:** These components detail the dynamics within the graph. Events trigger transitions between statuses, Actions are instances of Verbs that are used in a Graph, and Guards define rules or conditions that must be met for certain actions to take place or for transitions between states to occur. |
| 19 | +**Statuses and Transitions:** `Status`es represent the status of an entity at a given time, and `Transition`s define how entities move from one state to another based on certain `Event`s. This is useful for modeling state machines, workflows, and processes within a system. |
20 | 20 |
|
21 |
| -GraphDL provides a comprehensive framework for modeling relationships and processes within a system, making it particularly suitable for applications that deal with complex data structures, such as e-commerce platforms, content management systems, and more. This framework allows developers, business analysts, and AIs to represent, query, and manipulate data in a way that mirrors real-world interactions and relationships. |
| 21 | +**Events and Guards:** These components detail the dynamics within a state machine. `Event`s trigger `Transition`s between `Status`es, and `Guard`s define conditions that must be met for `Transition`s between `Status`es to occur. |
22 | 22 |
|
23 |
| -This repo was created by running `npx create-payload-app@latest` and selecting the "blank" template. |
| 23 | +**Constraints and Constraint Spans:** Uniqueness `Constraint`s govern how entities map to a relational database schema. They span over `Role`s using `Constraint Span`s to specify the multiplicity. The `roleRelationship` field on a Graph Schema defines and interprets the `Constraint Span`s and the `Constraint`s by this pattern: One-to-many (1:\*) uniqueness `Constraint`s are part of a `Constraint Span` over only the first entity, many-to-one (\*:1) over only the last entity, many-to-many (\*:\*) over both roles, and one-to-one (1:1) is represented by two `Constraint Span`s, one for each of the roles in the graph schema. |
| 24 | + |
| 25 | +## Generation |
| 26 | + |
| 27 | +The data types from the fields in the database determine the UI, making it possible to generate software. UI may also be customized per entity or table. Relational database schemas and UIs can be generated using the `Generator` object. |
| 28 | + |
| 29 | +## Visualizations |
| 30 | + |
| 31 | +ORM2 and UML diagrams of GraphDL are included: |
24 | 32 |
|
25 | 33 | 
|
26 | 34 |
|
27 | 35 | 
|
28 | 36 |
|
29 | 37 | Open ORM model using Visual Studio 2022 with [NORMA](https://marketplace.visualstudio.com/items?itemName=ORMSolutions.NORMA2022) or explore online using <https://ormsolutions.com/tools/orm.aspx>
|
30 | 38 |
|
| 39 | +This repo was created by running `npx create-payload-app@latest` and selecting the "blank" template. |
| 40 | + |
31 | 41 | ## Development
|
32 | 42 |
|
33 | 43 | To spin up the project locally, follow these steps:
|
|
0 commit comments