# IFC for relational databases - ifcSQL

**URL:** <https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524>\
**Category:** Serializations\
**Created:** [June 20, 2019, 2:09pm UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524 "2019-06-20T14:09:31Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![bsbock](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/bsbock/32/435_2.png) [@bsbock](https://forums.buildingsmart.org/u/bsbock)\
**Post date:** [June 20, 2019, 2:09pm UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/1 "2019-06-20T14:09:31Z")

</div>

The idea behind storing IFC-data in a database:

 ![%C3%AEfcSQL2_Bock](https://us1.discourse-cdn.com/flex016/uploads/buildingsmart1/original/1X/7a9a81de77d2afebb6d33377a1e64951ad84fec1.png)

What could be a way to store IFC-data in a relational database?

**Strategy no. 1:**  
Store every IFC-File in a binary large object field.  
(-) no advantage over files  
(-) not searchable  
(-) no rule checking

**Strategy no. 2:**  
Store every IFC-STEP-line in a text-field.  
(-) not searchable  
(-) no rule checking

**Strategy no. 3:**  
Store every not abstract Entity-classes (over 600) in its own table. Same with enumerations.  
(+) high recognition value in tablenames  
(-) no rule checking because you can reference only to one other table, not to all inherited tabels  
(-) too much tables (confusing)

**Strategy no. 4:**  
Store every inheritance-step in its own table(782).  
(+) recognition value  
(+) rule checking on base-classes possible  
(-) don’t work with SELECT-Types  
(-) too much tables (more confusing than strategy no. 3)

**Strategy no. 5:**  
Divide between entities and their attributes. One table for entities and one table for attributes  
(+) only 2 tables (totaly not confusing)  
(o) rule checking with triggers  
(-) attribute values not typesave

**Strategy no. 6:**  
Divide between Entities and their attributes. One table for Entities and for each basetype a table for Attributes  
(+) just a few tables (not confusing)  
(o) rule checking with triggers  
(+) typesave attribute values

This is a picture of Strategy no. 6:

 ![ifc_ifcSQL_uml_Bock](https://us1.discourse-cdn.com/flex016/uploads/buildingsmart1/original/1X/a2da2a75f2bc533bfe1d809336d674a05d80b63b.png)

Up to here is only storing and querying data. No rule checking!  
Next time I will talk about rule checking with ifcSQL.ifcSchema, the SQL-representation of the express-schema.

---

<div class="post-metadata">

**Author:** ![ReD\_CoDE](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/red_code/32/226_2.png) [@ReD\_CoDE](https://forums.buildingsmart.org/u/ReD_CoDE)\
**Post date:** [June 20, 2019, 3:09pm UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/2 "2019-06-20T15:09:38Z")

</div>

I think IFC has the potential to be relational based

For instance IfcSite:

[http://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2\_TC1/HTML/schema/ifcproductextension/lexical/ifcsite.htm](http://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2_TC1/HTML/schema/ifcproductextension/lexical/ifcsite.htm)

We can make it as a table:  
GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation, LongName, CompositionType, RefLatitude, RefLongitude, RefElevation, LandTitleNumber, SiteAddress

And also add relationships as columns in this table and also Psets and Qsets, etc

In many cases the number of entities will reduce

For instance, you will have just IfcPerson and IfcOrganisation tables and if IfcActor table when has both ThePerson and TheOrganisation then inside the Actor table system will autocomplete as IfcPersonAndOrganisation  
So we can drop IfcPersonAndOrganisation completely even

IFC SQLite will cause a lite and better structured IFC schema if we all work on it to develop it

**As I know “select” is not any issue in relational detabases like MySQL and for sure in SQLite, we can act with them as “picklists” in Excel**

**1:1 or 1:M or M:M relationships will cause database or IFC schema be unsearchable?**

Then you don’t need to have 130 “Defined Types” you can manage them with “DATA TYPES”  
207 Enumeration Types will become tables  
60 Select Types will reduce and will manage them as “autocomplete”  
776 Entities will reduce and will become tables with relationships, "especially if focus on “END ENTITIES”

> [@IFC Modernization : Relationships](https://forums.buildingsmart.org/t/ifc-modernization-relationships/1462/3):
>
> Is it possible to develop a new IFC based on just end entity? I mean a much shallower tree. For instance, IFC just has end entities like IfcProject IfcProjectLibrary IfcSite IfcBuilding IfcBuildingStory IfcSpace IfcZone IfcActor IfcOccupant So on And drop all behind entities and just end entities (single entities) have types, rules, functions, and “simplified relationships” Kind regards, Ehsan

> [@IfcX and IfcLite projects](https://forums.buildingsmart.org/t/ifcx-and-ifclite-projects/1440/4):
>
> IfcXtreme base concepts come from cross-platform visual programming and develop IFC entities as visual programming components and objects The concept develops based on “end entities” which explained in IfcLite project as a question The preliminary concept developed with Grasshopper + BHoM

> [@IfcX and IfcLite projects](https://forums.buildingsmart.org/t/ifcx-and-ifclite-projects/1440/5):
>
> I developed the idea based that complete tree, but based on end entities, for instance, IfcProject or IfcSite are end entities on the hierarchical approach. What does it mean? It means that I’m going to build a middle-ware which shows an easy to understand end entity like the example IfcActor, which the object on the front-end shows which data and datatype needed? And on the back-end, it converts that object to IFC-SPF or IFC-XML and or any other structured code which is standard I put IfcOcc…

And so on

---

<div class="post-metadata">

**Author:** ![bsbock](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/bsbock/32/435_2.png) [@bsbock](https://forums.buildingsmart.org/u/bsbock)\
**Post date:** [June 20, 2019, 8:48pm UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/3 "2019-06-20T20:48:17Z")

</div>

_What you speak about is_ **Strategy no. 3:**  
Store every non abstract Entity-classes (over 600, _you called “end-entities”_) in its own table. Same with enumerations.  
(+) high recognition value in tablenames  
(-) no rule checking because you can reference only to one other table, not to all inherited tables  
(-) too much tables (confusing)

---

<div class="post-metadata">

**Author:** ![ReD\_CoDE](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/red_code/32/226_2.png) [@ReD\_CoDE](https://forums.buildingsmart.org/u/ReD_CoDE)\
**Post date:** [June 20, 2019, 9:04pm UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/4 "2019-06-20T21:04:05Z")

</div>

The number of entities will reduce

At the moment in EXPRESS (SPF) and XML or RDF (OWL) and all other approaches (formats) we see these huge number of Entities (776), Defined Types (130), Enumeration Types (207), Select Types (60), Functions (47), Rules (2), Property Sets (420), Quantity Sets (93), and Individual Properties (1722)

So in SQLite these will be 60-70% of the existing

I say let’s drop IfcRoot, IfcOwnerHistory, and IfcObjectDefinition, …, and just have the end one  
**For instance an IfcWindow is just an entity → We can with “CLASSIFICATIONS” say that a window is an object, a product, an element, a building element**

And I can’t understand what does this mean?

> you can reference only to one other table, not to all inherited tables

So an SQLite table can’t have a lot of relationships to other tables and columns inside those tables?  
And if has a lot of relationships will cause it to be unsearchable?

Will not work this methodology?

 ![IfcSite_Test_SQLite](https://us1.discourse-cdn.com/flex016/uploads/buildingsmart1/original/1X/5ce4ef66855d2c3f77ca45c7498f9a6496070f17.png)

```
CREATE TABLE IfcSite (
   IfcSite_id integer NOT NULL CONSTRAINT IfcSite_pk PRIMARY KEY,
   IfcSite_GlobalId varchar(128) NOT NULL,
   IfcSite_OwnerHistory integer,
   IfcSite_Name varchar(40),
   IfcSite_Description varchar(255),
   IfcSite_ObjectType integer,
   IfcSite_ObjectPlacement integer,
   IfcSite_Representation integer,
   IfcSite_LongName text,
   IfcSite_CompositionType varchar(40),
   IfcSite_RefLatitude varchar(20),
   IfcSite_RefLongitude varchar(20),
   IfcSite_RefElevation varchar(20),
   IfcSite_LandTitleNumber varchar(15),
   IfcSite_SiteAddress integer,
   ElementCompositionEnum_ElementCompositionEnum_id integer NOT NULL,
   IfcSite_Pset_LandRegistration integer,
   IfcSite_Pset_SiteCommon integer,
   IfcSite_Pset_PropertyAgreement integer,
   IfcSite_Pset_ThermalLoadAggregate integer,
   IfcSite_Pset_ThermalLoadDesignCriteria integer,
   IfcSite_Qto_SiteBaseQuantities integer,
   IfcSite_SpatialComposition integer NOT NULL,
   IfcSite_SpatialDecomposition integer NOT NULL,
   IfcSite_SpatialContainer integer NOT NULL,
   IfcSite_Placement integer NOT NULL,
   IfcSite_FootPrintGeomSetGeometry integer NOT NULL,
   IfcSite_SurveyPointsGeometry integer NOT NULL,
   IfcSite_BodyGeometry integer NOT NULL
);

```

I used Sentence case just be easy to read

---

<div class="post-metadata">

**Author:** ![bsbock](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/bsbock/32/435_2.png) [@bsbock](https://forums.buildingsmart.org/u/bsbock)\
**Post date:** [June 21, 2019, 1:43pm UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/5 "2019-06-21T13:43:40Z")

</div>

> [@ReD\_CoDE](#):
>
> And I can’t understand what does this mean?
> 
> > you can reference only to one other table, not to all inherited tables

One example (here without ifc-prefix) with the entity-type ExtrudedAreaSolid(ProfileDef SweptArea, …

if you have a table “ExtrudedAreaSolid” with a column “SweptArea”. To what foreign table do you want to refer to make sure that your refer only to an allowed entity?

SQL snippet: FOREIGN KEY([SweptArea]) REFERENCES [???]

These are the possible entity-types you can refer to:  
ProfileDef  
.ArbitraryClosedProfileDef  
. .ArbitraryProfileDefWithVoids  
.ArbitraryOpenProfileDef  
. .CenterLineProfileDef  
.CompositeProfileDef  
.DerivedProfileDef  
. .MirroredProfileDef  
.ParameterizedProfileDef (abstract)  
. .TShapeProfileDef  
. .TrapeziumProfileDef  
. .UShapeProfileDef  
. .ZShapeProfileDef  
. .AsymmetricIShapeProfileDef  
. .CShapeProfileDef  
. .CircleProfileDef  
. . .CircleHollowProfileDef  
. .EllipseProfileDef  
. .IShapeProfileDef  
. .LShapeProfileDef  
. .RectangleProfileDef  
. . .RoundedRectangleProfileDef  
. . .RectangleHollowProfileDef

---

<div class="post-metadata">

**Author:** ![ReD\_CoDE](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/red_code/32/226_2.png) [@ReD\_CoDE](https://forums.buildingsmart.org/u/ReD_CoDE)\
**Post date:** [June 21, 2019, 6:15pm UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/6 "2019-06-21T18:15:36Z")

</div>

> [@bsbock](#):
>
> ExtrudedAreaSolid

This is why I believe that a hybrid methodology can help with  
Combination of SQLite and XML or JSON or JavaScript or any other modern technology

**SQLite can refer to all of them? a PK can has many 1:1, 1:M, M:M relationships?**  
**Several number of refers is not issue, because at the moment other methods like EXPRESS-SPF, XML, OWL, JSON, all “have to” handle this huge data, datatypes and relationships**

I’m not programmer and mainly these days have focused on our startup  
But I believe that “if” buildingSMART and some corporations and organizations that control buildingSMART want they can improve IFC or develop a modern one

I think this can help us find our way ( **a hybrid approach is needed** ):

> **[What is the difference between a knowledge graph and a graph database?](https://www.quora.com/What-is-the-difference-between-a-knowledge-graph-and-a-graph-database/answer/Kingsley-Uyi-Idehen)**
>
> Answer (1 of 2): Graph databases are often used to store knowledge graph data and the accompanying description, predicate and rule-based logic.
> 
> Knowledge graph: A knowledge graph is a knowledge base that’s made machine readable with the help of...

---

<div class="post-metadata">

**Author:** ![sergej](https://avatars.discourse-cdn.com/v4/letter/s/bcef8e/32.png) [@sergej](https://forums.buildingsmart.org/u/sergej)\
**Post date:** [June 25, 2019, 12:32pm UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/7 "2019-06-25T12:32:53Z")

</div>

FYI relational database != graph database.

---

<div class="post-metadata">

**Author:** ![ReD\_CoDE](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/red_code/32/226_2.png) [@ReD\_CoDE](https://forums.buildingsmart.org/u/ReD_CoDE)\
**Post date:** [June 25, 2019, 1:05pm UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/8 "2019-06-25T13:05:24Z")

</div>

FYI I said a mixed usage --\> Relational + Graph

I believe that a mixed approach is good (SQL and No-SQL),  
A combination of SQLite, XML and JSON and RDF-OWL  
Mainly JSON for real-time usages like IoT

SQLite can’t solve the whole issues alone, but will solve part of and other technologies and methodologies will solve another parts

So for relational side let’s choose SQLite and for other part use Object-Oriented or Graph (Or even both) to build a schema which is more modern and also more flexible

---

<div class="post-metadata">

**Author:** ![ylcnky](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/ylcnky/32/414_2.png) [@ylcnky](https://forums.buildingsmart.org/u/ylcnky)\
**Post date:** [June 26, 2019, 8:36am UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/9 "2019-06-26T08:36:19Z")

</div>

While Relational + Graph database combination is technically possible, feasibility and practicality of handling two databases at the same time can be a critical issue.  
@bsbock #6 looks like a better approach unless rule checking is a critical requirement. Is there a particular reason for why you want to store in a relational database? Have you reviewed NoSQL alternatives?  
Meanwhile, I came up with this paper.

> **[isprs-archives-XLI-B2-625-2016.pdf](https://www.int-arch-photogramm-remote-sens-spatial-inf-sci.net/XLI-B2/625/2016/isprs-archives-XLI-B2-625-2016.pdf)**
>
> 1733.37 KB

---

<div class="post-metadata">

**Author:** ![ReD\_CoDE](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/red_code/32/226_2.png) [@ReD\_CoDE](https://forums.buildingsmart.org/u/ReD_CoDE)\
**Post date:** [June 26, 2019, 8:45am UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/10 "2019-06-26T08:45:16Z")

</div>

Maybe I’m wrong, but as I know No-SQL doesn’t have a good performance like SQL (but for sure maybe a mixed approach SQL + No-SQL be good, maybe)

It seems that Esri uses a relational approach and this document explains relationships, especially “Relationship Class - Navigation Property” which I think would be useful

[http://resources.esri.com/help/9.3/arcgisengine/dotnet/2e097482-4f99-4224-896e-8027e6ab883e.htm](http://resources.esri.com/help/9.3/arcgisengine/dotnet/2e097482-4f99-4224-896e-8027e6ab883e.htm)

---

<div class="post-metadata">

**Author:** ![bsbock](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/bsbock/32/435_2.png) [@bsbock](https://forums.buildingsmart.org/u/bsbock)\
**Post date:** [June 26, 2019, 6:03pm UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/11 "2019-06-26T18:03:44Z")

</div>

> [@ylcnky](#):
>
> Meanwhile, I came up with this paper.

_What the (very interesting) paper speak about is_ **Strategy no. 4:**  
(+) recognition value  
(+) rule checking on base-classes possible  
(-) don’t work with SELECT-Types _(by use of FOREIGN KEY(…) REFERENCES(…) )_  
(-) too much tables (more confusing than strategy no. 3)

---

<div class="post-metadata">

**Author:** ![bsbock](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/bsbock/32/435_2.png) [@bsbock](https://forums.buildingsmart.org/u/bsbock)\
**Post date:** [June 26, 2019, 6:05pm UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/12 "2019-06-26T18:05:56Z")

</div>

> [@ylcnky](#):
>
> @bsbock #6 looks like a better approach unless rule checking is a critical requirement.

With **Strategy no. 6** rule checking workes fine with triggers. Give me some days for posting an example.

---

<div class="post-metadata">

**Author:** ![bsbock](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/bsbock/32/435_2.png) [@bsbock](https://forums.buildingsmart.org/u/bsbock)\
**Post date:** [June 26, 2019, 6:16pm UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/13 "2019-06-26T18:16:19Z")

</div>

> [@ylcnky](#):
>
> Is there a particular reason for why you want to store in a relational database? Have you reviewed NoSQL alternatives?

My reasons are described here:

> [@IFC SQLite Project](https://forums.buildingsmart.org/t/ifc-sqlite-project/1359/2):
>
> ok, let’s start with IFC for relational databases. First of all: why to do this? For me the benefits of sql based working are well known data-access (like XML too), no parser required integrated referencial integrity (not by a seperate test) typesave in base-types multiuser functionality (many users can work on the same datapool at the same time) The points 3) and 4) are - as far as I know - not capabilities of SQLite. But SQLite could be a possible target for IFC-Data. It is not only a S…

But most of all: Leaving the world of a thousand files. Growing up from Luggage to Wardrobe  
as shown in the picture in [IFC for relational databases - ifcSQL](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524)

---

<div class="post-metadata">

**Author:** ![sergej](https://avatars.discourse-cdn.com/v4/letter/s/bcef8e/32.png) [@sergej](https://forums.buildingsmart.org/u/sergej)\
**Post date:** [June 27, 2019, 10:49am UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/14 "2019-06-27T10:49:28Z")

</div>

I was going from “SQLite and XML or JSON or JavaScript or any other modern technology” which would essentially mean a hybrid of a database, some sort of encoding format and a programming language. Somewhat mixing pears and apples which is happening here also:

“So for relational side let’s choose SQLite and for other part use Object-Oriented or Graph (Or even both) to build a schema which is more modern and also more flexible”

The IFC schema does not forbid encoding in a database format, in fact SQLite is mentioned as a possible format [here](https://technical.buildingsmart.org/standards/ifc/ifc-formats/). The scheme would not be more modern by being “encoded” into a database. The schema is the schema and encoding of the schema is a format of some kind.

It is not as though software vendors do not have and are working on their own versions of databases for buildings and infrastructure in the form of CDEs. Maybe they are not participating here because they do not want to share their secrets. 🙂 But how does a relational database solve the data exchange aspect? Are you proposing that bSI does this?

---

<div class="post-metadata">

**Author:** ![ReD\_CoDE](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/red_code/32/226_2.png) [@ReD\_CoDE](https://forums.buildingsmart.org/u/ReD_CoDE)\
**Post date:** [June 27, 2019, 11:53am UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/15 "2019-06-27T11:53:24Z")

</div>

Thanks Sergej, I know the schema is schema and database is a database

I’m just practicing to find a way to build the schema based on “reducing schema tree layers from 4-11 to 1-4”

“After ISO 19650, IFC, especially IDM needs some improvements, so **“WHAT IF ISO BIM, CLASSIFICATION AND IFC BE MORE CLOSE TO EACH OTHER AND BUILD A BETTER SOLUTION FOR THE INDUSTRY”** ”

**As said before we can reduce IFC schema layers and instead use classifications to say a window is an object, a product, an element, a building element**

**Also, ISO 19650 naming approach can help us develop a better way than just GUID/UUID (in 128-bit approach) for identification**

And mainly I’ve focused on developing a “middleware”

Yes, IFC SQLite mentioned there, but it seems that after Tim Chipman from Arup left, nobody has worked on IfcDoc and IFC related projects, it seems that he was playing a key role inside the bSI

IfcDoc exports schema to SQL but have you checked it?

Converting .ifc file to SQL is an obvious method today in the industry, this is not issue  
But developing IFC and also IFD, and schema based on relational approach like SQLite (as a file) or SQL (as server solution) is important

And yes, maybe some say it’s CDE, but it’s more than, it’s adding automation, control, in general logic to the schema and to its databases/solutions

So, maybe today some have this as secrets, but I want to give it as a gift to all (specially to a country that has started a national degital platform and soon I will be part of them and their movement). It’s better others find another secrets if this is their secret 😁

---

<div class="post-metadata">

**Author:** ![bsbock](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/bsbock/32/435_2.png) [@bsbock](https://forums.buildingsmart.org/u/bsbock)\
**Post date:** [June 27, 2019, 6:03pm UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/16 "2019-06-27T18:03:03Z")

</div>

> [@ReD\_CoDE](#):
>
> IfcDoc exports schema to SQL but have you checked it?

Where can I find the ifcDoc-Schema-Export to SQL? Save as MDB produces no file for me.

---

<div class="post-metadata">

**Author:** ![bsbock](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/bsbock/32/435_2.png) [@bsbock](https://forums.buildingsmart.org/u/bsbock)\
**Post date:** [June 27, 2019, 6:14pm UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/17 "2019-06-27T18:14:07Z")

</div>

> [@sergej](#):
>
> The scheme would not be more modern by being “encoded” into a database. The schema is the schema and encoding of the schema is a format of some kind.

- IFC-STEP is a textfile for one project with a hint to the express-schema which you can test separately
- ifcXML is a wellknown textfile for one project with an explicit link to the XSD-schema which you can test separately
- ifcSQL could be a database, which include data of many projects including the schema and allows only inserts and updates which match to the schema

---

<div class="post-metadata">

**Author:** ![ReD\_CoDE](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/red_code/32/226_2.png) [@ReD\_CoDE](https://forums.buildingsmart.org/u/ReD_CoDE)\
**Post date:** [June 27, 2019, 6:36pm UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/18 "2019-06-27T18:36:30Z")

</div>

In IfcDoc you can export publications to any output you want  
If need help let me know to explain the process

So the output would be HTML documentation plus formats you have chosen

 ![SQLite](https://us1.discourse-cdn.com/flex016/uploads/buildingsmart1/original/1X/5f0e21983cb6f3e75d90d939df4ee9970bf15c61.png)

 ![SQLitee](https://us1.discourse-cdn.com/flex016/uploads/buildingsmart1/original/1X/389784bd3fe08ff0e415c65f74d9ec617e15dc56.png)

Forum doesn’t let upload SQL file, so uploaded it here: [https://gofile.io/?c=6DXMTU](https://gofile.io/?c=6DXMTU)

It seems that bSI has started to focus on UML, I hope UML 2, but again with Object-Oriented approach, so I think O-O is good, but relational approach or Object-Relational approach is better

---

<div class="post-metadata">

**Author:** ![bsbock](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/bsbock/32/435_2.png) [@bsbock](https://forums.buildingsmart.org/u/bsbock)\
**Post date:** [June 27, 2019, 7:07pm UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/19 "2019-06-27T19:07:54Z")

</div>

Thank you for upload, @ReD_CoDE!

The result looks like this:

CREATE TABLE IfcObject (oid INTEGER,  
GlobalId TEXT,  
OwnerHistory INTEGER,  
Name TEXT,  
Description TEXT,  
ObjectType TEXT);  
…  
CREATE TABLE IfcActorRole (oid INTEGER,  
Role VARCHAR,  
UserDefinedRole TEXT,  
Description TEXT);  
…  
IfcObject is abstract and IfcActorRole is derived from IfcObject, which contains only the attributes, that are not contained in IfcObject.  
This is **Strategy no. 4:**  
Store every inheritance-step in its own table(782).  
(+) recognition value  
(+) rule checking on base-classes possible  
(-) don’t work with _(every)_ SELECT-Types  
(-) too much tables (more confusing than strategy no. 3)

---

<div class="post-metadata">

**Author:** ![jwouellette](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/jwouellette/32/2140_2.png) [@jwouellette](https://forums.buildingsmart.org/u/jwouellette)\
**Post date:** [June 27, 2019, 8:23pm UTC](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524/20 "2019-06-27T20:23:27Z")

</div>

1. Has anyone looked at [bimserver.org](http://bimserver.org) and discussed/analyzed how they’ve executed their IFC database & server? Is it effective? At least a beginning? It is one way that IS working currently and meeting the needs of many…

2. What if the IFC schema had its root definition/description in UML and then expressed more specifically as EXPRESS, XSD, OWL, etc… Would this help in establishing flexibility between different implementations, but maintain a central, overall context and semantic cohesiveness? Would it help in then defining different database implementations from a common root?

Please also refer to my reply in another topic:

> [@What would you like to see most in the "modernization" of IFC?](https://forums.buildingsmart.org/t/what-would-you-like-to-see-most-in-the-modernization-of-ifc/1460/30):
>
> For the past few months, there has been discussion within the bSI technical community to look forward at the architecture of IFC. As part of this discussion, it is important to understand that there are different components, such as: Description Method - including the Definition Language (UML vs. EXPRESS, etc.) and Data Formats (STEP, XML, JSON, etc.) Specification - including the structure and content of the schema and possible extensions like Taxonomy and Data Dictionary Implementation M…

[Next page](https://forums.buildingsmart.org/t/ifc-for-relational-databases-ifcsql/1524.md?page=2)
