IP Library › Granted Patent US 12,229,171
Granted Patent B2
US 12,229,171 · App. 17/180,498 · Granted Feb 18, 2025

Intelligent annotation of entity-relationship data models

Inventors: Jan Portisch (Bruchsal, DE); Stephan Schub (Oftersheim, DE)
Assignee: SAP SE
G06F16/288G06F16/212G06F16/2264G06F16/24573
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,229,171
App. No.
17/180,498
Granted
Feb 18, 2025
Kind
B2
Abstract

Intelligent annotation of data models can be implemented. In one embodiment, the method can receive a data model including entities and relationships between the entities. An entity can include a set of attributes. The method can annotate the data model by defining a logical entity including one or more of the entities, validate the logical entity, and automatically generate a message structure corresponding to the logical entity. The message structure can include properties mapped to at least some of the attributes of entities contained in the logical entity. The properties can be defined in one or more database tables represented by the logical entity.

Claims (44)

1. A computer-implemented method comprising:

receiving an entity-relationship data model representing a data schema in a graphical form, the entity-relationship model comprising entities and relationships between the entities, wherein an entity comprises a set of attributes;

annotating the entity-relationship data model, wherein the annotating comprises grouping a plurality of entities into a logical entity;

validating the logical entity;

responsive to finding the logical entity is valid, automatically generating a message structure corresponding to the logical entity, wherein the message structure is represented in a data exchange format expressed in property and value pairs, wherein the message structure comprises properties mapped to at least some of the attributes of entities contained in the logical entity, wherein the properties are defined in one or more database tables represented by the logical entity;

generating a message containing the message structure, wherein generating the message comprises extracting values from the one or more database tables, and pairing the extracted values with corresponding properties; and

generating a translation operator code,

wherein the translation operator code is configured to translate messages between the logical entity and the one or more database tables based on the message structure,

wherein automatically generating the message structure comprises creating an object array when a first database table and a second database table represented by the logical entity have a one-to-many cardinality relationship or many-to-many cardinality relationship, wherein the object array comprises an array of objects containing properties defined in the second database table, wherein the array of objects are nested within another object representing a property defined in the first database table.

2. The method of claim 1 , wherein automatically generating the message structure further comprises excluding a property from the object array if the property defined in the second database table is a foreign key linked to a primary key defined in the first database table.

3. The method of claim 1 , further comprising automatically generating an application programming interface document at least partially based on the message structure.

4. The method of claim 1 , wherein annotating the entity-relationship data model further comprises selecting which attributes of the entities contained in the logical entity to be mapped to corresponding properties in the message structure.

5. The method of claim 1 , wherein annotating the entity-relationship data model further comprises defining a root within the logical entity, wherein the root is one of the one or more entities contained in the logical entity.

6. The method of claim 5 , wherein annotating the entity-relationship data model further comprises designating one or more of the relationships between entities as follow relationships.

7. The method of claim 6 , wherein validating the logical entity comprises traversing from the root to another entity contained in the logical entity through one or more of the follow relationships.

8. The method of claim 6 , wherein validating the logical entity comprises detecting an invalid logical entity when the plurality of entities contained in the logical entity can form a loop through some of the follow relationships.

9. A system comprising:

memory;

one or more hardware processors coupled to the memory; and

one or more computer readable storage media storing instructions that, when loaded into the memory, cause the one or more hardware processors to perform operations comprising:

receiving an entity-relationship data model representing a data schema in a graphical form, the entity-relationship model comprising entities and relationships between the entities, wherein an entity comprises a set of attributes;

annotating the entity-relationship data model, wherein the annotating comprises grouping a plurality of entities into a logical entity;

validating the logical entity;

responsive to finding the logical entity is valid, automatically generating a message structure corresponding to the logical entity, wherein the message structure is represented in a data exchange format expressed in property and value pairs, wherein the message structure comprises properties mapped to at least some of the attributes of entities contained in the logical entity, wherein the properties are defined in one or more database tables represented by the logical entity;

generating a message containing the message structure, wherein generating the message comprises extracting values from the one or more database tables, and pairing the extracted values with corresponding properties; and

generating a translation operator code,

wherein the translation operator code is configured to translate messages between the logical entity and the one or more database tables based on the message structure,

wherein automatically generating the message structure comprises creating an object array when a first database table and a second database table represented by the logical entity have a one-to-many cardinality relationship or many-to-many cardinality relationship, wherein the object array comprises an array of objects containing properties defined in the second database table, wherein the array of objects are nested within another object representing a property defined in the first database table.

10. The system of claim 9 , wherein automatically generating the message structure further comprises excluding a property from the object array if the property defined in the second database table is a foreign key linked to a primary key defined in the first database table.

11. The system of claim 9 , wherein the operations further comprise automatically generating an application programming interface document at least partially based on the message structure.

12. The system of claim 9 , wherein annotating the entity-relationship data model further comprises selecting which attributes of the entities contained in the logical entity to be mapped to corresponding properties in the message structure.

13. The system of claim 9 , wherein annotating the entity-relationship data model further comprises defining a root within the logical entity, wherein the root is one of the plurality of entities contained in the logical entity.

14. The system of claim 13 , wherein annotating the entity-relationship data model further comprises designating one or more of the relationships between entities as follow relationships.

15. The system of claim 14 , wherein validating the logical entity comprises detecting an invalid logical entity when the one or more entities contained in the logical entity can form a loop through some of the follow relationships.

16. A computer-implemented method for data model annotation, the method comprising:

receiving an entity-relationship data model representing a data schema in a graphical form, the entity-relationship model comprising entities and relationships between the entities, wherein an entity comprises a set of attributes;

annotating the entity-relationship data model, wherein the annotating comprises grouping a plurality of entities into a logical entity;

validating the logical entity;

responsive to finding the logical entity is valid, automatically generating a message structure corresponding to the logical entity, wherein the message structure is represented in a data exchange format expressed in property and value pairs, wherein the message structure comprises properties mapped to at least some of the attributes of entities contained in the logical entity, wherein the properties are defined in one or more database tables represented by the logical entity;

generating a message containing the message structure, wherein generating the message comprises extracting values from the one or more database tables, and pairing the extracted values with corresponding properties; and

automatically generating a read adapter and a write adapter;

wherein the read adapter is configured to convert a message template containing the message structure into a completed message, wherein one or more properties in the message template are empty but have corresponding values retrieved from a matching record in the one or more database tables;

wherein the write adapter is configured to receive an input message containing the message structure and comprising at least one property and value pair, and write the value corresponding to the property into the one or more database tables,

wherein automatically generating the message structure comprises creating an object array when a first database table and a second database table represented by the logical entity have a one-to-many cardinality relationship or many-to-many cardinality relationship, wherein the object array comprises an array of objects containing properties defined in the second database table, wherein the array of objects are nested within another object representing a property defined in the first database table.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 1, 2021
From: PORTISCH, JAN; SCHUB, STEPHAN
To: SAP SE
Reel/Frame 055448/0074 →
Continuity (1)
Related Publication 20220269702A1 · Aug 25, 2022
References Cited (36)
US 6052687A · Miura · 2000 [cited by examiner]
US 6061690A · Nori · 2000 [cited by examiner]
US 8260824B2 · Mao · 2012 [cited by examiner]
US 20060195460A1 · Nori · 2006 [cited by examiner]
US 20060293935A1 · Tsyganskiy · 2006 [cited by examiner]
US 20070028221A1 · Ukelson · 2007 [cited by examiner]
US 20070038651A1 · Bernstein · 2007 [cited by examiner]
US 20070271251A1 · Levine · 2007 [cited by examiner]
US 20080301168A1 · Adler · 2008 [cited by examiner]
US 20100010960A1 · Singh · 2010 [cited by examiner]
US 20100217759A1 · Ma · 2010 [cited by examiner]
US 20100250550A1 · Tereposky · 2010 [cited by examiner]
US 20100287208A1 · Mao · 2010 [cited by examiner]
US 20100318943A1 · Gong · 2010 [cited by examiner]
US 20130124466A1 · Naidu · 2013 [cited by examiner]
US 20180068001A1 · Panwar · 2018 [cited by examiner]
US 20200012741A1 · Bracholdt et al. · 2020 [cited by applicant]
US 20210149998A1 · Sturgeon · 2021 [cited by examiner]
US 20210240675A1 · Portisch · 2021 [cited by examiner]
US 20220222253A1 · Jouhier · 2022 [cited by examiner]
“API Testing,” OpenAPI Testing Tool, Swagger Inspector, https://swagger.io/solutions/api-testing/, printed Feb. 3, 2021, 4 pages. [cited by applicant]
Baeldung, “Intro to the Jackson ObjectMapper,” https://www.baeldung.com/jackson-object-mapper-tutorial, printed Jan. 20, 2021, 10 pages. [cited by applicant]
“Cardinality (data modeling),” Wikipedia, https://en.wikipedia.org/wiki/Cardinality_(data_modeling), printed Nov. 13, 2020, 3 pages. [cited by applicant]
“Directed acyclic graph,” Wikipedia, https://en.wikipedia.org/wiki/Directed_acyclic_graph, printed Jan. 25, 2021, 13 pages. [cited by applicant]
“Entity Relationship Diagram (ERD)—What is an ER Diagram,” https://www.smartdraw.com/entity-relationship-diagram/, printed Jan. 25, 2021, 12 pages. [cited by applicant]
“Entity-relationship model,” Wikipedia, https://en.wikipedia.org/wiki/Entity-relationship_model, printed Jan. 28, 2021, 11 pages. [cited by applicant]
Martin Fowler, “Command Query Responsibility Segregation,” https://martinfowler.com/bliki/CQRS.html, Jul. 14, 2011, 6 pages. [cited by applicant]
Martin Fowler, “Event Sourcing,” https://martinfowler.com/eaaDev/EventSourcing.html, Dec. 12, 2005, 21 pages. [cited by applicant]
Jonathan Freeman, “What is JSON? A better format for data exchange,” InfoWorld, Oct. 25, 2019, 8 pages. [cited by applicant]
“JPA Object Relational Mapping,” https://www.javatpoint.com/jpa-object-relational-mapping, printed Jan. 22, 2021, 4 pages. [cited by applicant]
“Object-relational Mapping,” Wikipedia, https://en.wikipedia.org/wiki/object-relational_mapping, printed Nov. 13, 2020, 4 pages. [cited by applicant]
“Post (HTTP),” Wikipedia, https://en.wikipedia.org/wiki/POST_(HTTP), printed Feb. 3, 2021, 4 pages. [cited by applicant]
Anne Marie Smith, Aligning Data Governance and Enterprise Data Modeling, EWSolutions, Data Management University, Jul. 30, 2020, 6 pages. [cited by applicant]
“Swagger (software),” Wikipedia, https://en.wikipedia.org/wiki/Swagger_(software), printed Jan. 25, 2021, 3 pages. [cited by applicant]
“What is a Database Model,” https://www.lucidchart.com/pages/database-diagram/database-models#section_6, printed Jan. 28, 2021, 15 pages. [cited by applicant]
“What is Entity Relationship Diagram (ERD)?” Visual Paradigm, https://www.visual-paradigm.com/guide/data-modeling/what-is-entity-relationship-diagram/ printed Feb. 5, 2021, 17 pages. [cited by applicant]