BHoM / RDF_Prototypes

Research project of the Cluster of Excellence "Integrative Computational Design and Construction for Architecture" (IntCDC) https://www.intcdc.uni-stuttgart.de/ **Project Name**: Knowledge Representation for Multi-Disciplinary Co-Design of Buildings. https://www.intcdc.uni-stuttgart.de/research/research-projects/rp-20/
GNU Lesser General Public License v3.0
9 stars 4 forks source link

Lists in TTL format #17

Closed DiellzaElshani closed 2 years ago

DiellzaElshani commented 2 years ago

Description:

Here I put a short ttl example how a list of control points of a BH.oM.Geometry.NurbsCurve looks like:

bhom:NurbsCurve1 rdf:type owl:NamedIndividual;
             rdf:type bhom:BH.oM.Geometry.NurbsCurve;
         bhom:controlPoints (bhom:Point1 bhom:Point2 bhom:Point3).

bhom:Point1    rdf:type owl:NamedIndividual,
                       bhom:BH.oM.Geometry.Point;
bhom:Point1    bhom:Xcoordinate “29.32276657060” ^^xsd:double;
           bhom:Ycoordinate “00.32276657060” ^^xsd:double;
           bhom:Zcoordinate “10.32276657060” ^^xsd:double.

bhom:Point2    rdf:type owl:NamedIndividual,
                       bhom:BH.oM.Geometry.Point;
bhom:Point2    bhom:Xcoordinate “29.32276657060” ^^xsd:double;
           bhom:Ycoordinate “00.32276657060” ^^xsd:double;
           bhom:Zcoordinate “10.32276657060” ^^xsd:double.

bhom:Point3    rdf:type owl:NamedIndividual,
                       bhom:BH.oM.Geometry.Point;
bhom:Point3    bhom:Xcoordinate “29.32276657060” ^^xsd:double;
           bhom:Ycoordinate “00.32276657060” ^^xsd:double;
           bhom:Zcoordinate “10.32276657060” ^^xsd:double.
alelom commented 2 years ago

@DiellzaElshani Questions we need to answer in order to make this feature possible:

Could you attach a TTL export of how an entire export should look like? For example, the TTL of an object that has a simple list property, like Room with the IPerimeter set to a Polyline object with 3 points.

alelom commented 2 years ago

@DiellzaElshani as soon as you add examples I will work on this.

DiellzaElshani commented 2 years ago

In response to your points: Control Points should be an Object property. Because we add the Points as objects (as Points) (not as literals). :NurbsCurve1 :controlPoints ( :Point1 :Point2 :Point3). Currently I am not sure about its naming though. Should it be NurbsCurve.ControlPoints or just controlPoints (I assume you know it better from BHoM’s convetions); regardless we define it as an object property.

But, while reading your question, I understand the issue here. I just double checked how ifcOwl handles this. 1) Basically we need a new owl:class named something like controlPointsList 2) A new object property NurbsCurve.ControlPoints

Here is the TTL format:


#################################################################
#    Classes
#################################################################
### https://github.com/BHoM/ControlPointsList.cs# //( I don’t know this)
:BH.oM. controlPointsList  rdf:type owl:Class;
              rdfs:label"Room"@en .
#################################################################
#    Object Properties
#################################################################### 
### https://github.com/BHoM/BHoM/blob/04aa075fba10d670a0161a1badbac43e6b993595/Geometry_oM/Curve/ICurve.cs  //( I don’t know this)

:BH.oM. NurbsCurve.ControlPoints  rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Geometry.ICurve ;
rdfs:range :BH.oM. controlPointsList  ;
rdfs:label "ControlPoints (BH.oM. NurbsCurve.ControlPoints)"@en .
DiellzaElshani commented 2 years ago

followingly here is an example of a room, that its perimeter is constructed from three Points, as a list within a Polyline.

We use the Object Property named ":BH.oM.NurbsCurve.ControlPoints" to connect the subject (the polyline) "39830659" with the list of points. The triple where this happens is this:

### http://www.uni-stuttgart.de/39830659
<http://www.uni-stuttgart.de/39830659> rdf:type owl:NamedIndividual ,
        :BH.oM.Geometry.Polyline ;
        :BH.oM.NurbsCurve.ControlPoints  (<http://www.uni-stuttgart.de/494086135>  <http://www.uni-stuttgart.de/494086136> <http://www.uni-stuttgart.de/494086137> ).

I need to say that also printing it like this, we directly use RDF lists (with the rdf first and rest structure); but at the moment I don't see any problem with it. Basically because we just print the string. I think we need to query the graph in future to see if the order is correct.

Here is the full room example with the IPerimeter set to a Polyline object with 3 points.


#################################################################
#    Individuals
#################################################################

### http://www.uni-stuttgart.de/b54c7876-ba65-47e2-aedd-0d0598270f8c
<http://www.uni-stuttgart.de/b54c7876-ba65-47e2-aedd-0d0598270f8c> rdf:type owl:NamedIndividual ,
        :BH.oM.Architecture.Elements.Room ;
        :BH.oM.Architecture.Elements.Room.Perimeter <http://www.uni-stuttgart.de/39830659> ;
        :BH.oM.Base.BHoMObject.BHoM_Guid "b54c7876-ba65-47e2-aedd-0d0598270f8c"^^xsd:string.

### http://www.uni-stuttgart.de/39830659
<http://www.uni-stuttgart.de/39830659> rdf:type owl:NamedIndividual ,
        :BH.oM.Geometry.Polyline ;
        :BH.oM.NurbsCurve.ControlPoints  (<http://www.uni-stuttgart.de/494086135>  <http://www.uni-stuttgart.de/494086136> <http://www.uni-stuttgart.de/494086137> ).

### http://www.uni-stuttgart.de/494086135
<http://www.uni-stuttgart.de/494086135> rdf:type owl:NamedIndividual ,
        :BH.oM.Geometry.Point ;
        :BH.oM.Geometry.Point.X "0"^^xsd:double;
        :BH.oM.Geometry.Point.Y "0"^^xsd:double;
        :BH.oM.Geometry.Point.Z "0"^^xsd:double.

### http://www.uni-stuttgart.de/494086136
<http://www.uni-stuttgart.de/494086136> rdf:type owl:NamedIndividual ,
        :BH.oM.Geometry.Point ;
        :BH.oM.Geometry.Point.X "1"^^xsd:double;
        :BH.oM.Geometry.Point.Y "1"^^xsd:double;
        :BH.oM.Geometry.Point.Z "1"^^xsd:double.

### http://www.uni-stuttgart.de/494086136
<http://www.uni-stuttgart.de/494086136> rdf:type owl:NamedIndividual ,
        :BH.oM.Geometry.Point ;
        :BH.oM.Geometry.Point.X "2"^^xsd:double;
        :BH.oM.Geometry.Point.Y "2"^^xsd:double;
        :BH.oM.Geometry.Point.Z "2"^^xsd:double.
DiellzaElshani commented 2 years ago

Out of this topic, but a related note: ifcOWL has introduced a new datatype for points, named ifcowl4:wktPoint. And they print points like: PointZ (0.5 0.5 35.0)^^ifcowl4:wktPoint

image

alelom commented 2 years ago

Given that you say:

Control Points should be an Object property. Because we add the Points as objects (as Points) (not as literals).

what is the answer to my second bullet point question here?

In other words, if we had a list of numbers instead of points, would the property be a Data property?

DiellzaElshani commented 2 years ago

While I find a way to treat BHoM lists, I want to documents ifcOWL approaches here.

image image

DiellzaElshani commented 2 years ago

Diellza, TO DO: Full TTL with lists of integers and list of objects

alelom commented 2 years ago

Diellza, TO DO: Full TTL with lists of integers and list of objects

@DiellzaElshani as soon as you do this I will start working on this issue.

alelom commented 2 years ago

I started working on this anyway, but it is a very big change. Not sure how long it will take. Probably safer not to promise this for the workshop.

DiellzaElshani commented 2 years ago

Screenshot 2022-06-17 152354 Daniel suggests to use owl:objectProperty in any case, and the List node should be rdf type rdf:List

Furthermore, quoting Daniel: In OOP, one reason to create classes is to reduce user errors. If hasControlPoints has as range a class that contains points, then you cannot use a class that contains another type of object. In RDF classes are not mainly used to prevent errors. Now, errors can be caught with SCHAL.

DiellzaElshani commented 2 years ago

To define that Control Points is a List entry we can define it like this in the ttl format:

bhom:ControlPoints rdf:type owl:class; bhom:ControlPoints owl:subClassOf rdf:list.

bhom:hasControlPoints rdf:type owl:ObjectProperty. bhom:hasControlPoints rdf:domain bhom:NurbsCurve. bhom:hasControlPoints rdf:range bhom:ControlPoints.

DiellzaElshani commented 2 years ago

image image

DiellzaElshani commented 2 years ago

A gh definition of a room object and its ttl format including list of control points (following RDF lists).

In the ttl file I added manually 1) an owl:class, rdf:subClassOf rdf:list - that is the List of the control points (similarly with the screenshot I commented before; 2) an owl:ObjectProperty that defines the relation between this list and the room object; and 3) I wrote the list of objects manually at the individuals part (removed the serialized JSON).

image

`
@prefix : <http://www.bhom.org/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@base   <http://www.bhom.org> .

<www.bhom.org> rdf:type owl:Ontology;
                          dc:title "buidling ontology"@en;
                          dc:description " bhom ontology"@en.

#################################################################
#    Annotation Properties
#################################################################

###  http://purl.org/dc/elements/1.1/#description
<http://purl.org/dc/elements/1.1/#description> rdf:type owl:AnnotationProperty .
###  http://purl.org/dc/elements/1.1/#title
<http://purl.org/dc/elements/1.1/#title> rdf:type owl:AnnotationProperty .

#################################################################
#    Datatypes
#################################################################

### https://github.com/BHoM/RDF_Prototypes/commit/ff8ccb68dbba5aeadb4a9a284f141eb1515e169a
:BH.oM.RDF.Base64JsonSerialized rdf:type rdfs:Datatype ;
rdfs:label "Base64JsonSerialized"@en ;
owl:equivalentClass xsd:string .

#################################################################
#    Classes
#################################################################

### https://github.com/BHoM/BHoM/blob/main/Architecture_oM/Elements/Room.cs
:BH.oM.Architecture.Elements.Room rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Analytical.Elements.IRegion;
        rdfs:subClassOf :BH.oM.Base.BHoMObject;
        rdfs:label"Room"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/Interface/IBHoMObject.cs
:BH.oM.Base.IBHoMObject rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Base.IObject;
        rdfs:label"IBHoMObject"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/Interface/IObject.cs
:BH.oM.Base.IObject rdf:type owl:Class;
        rdfs:label"IObject"@en .

### https://github.com/BHoM/BHoM/blob/main/Analytical_oM/Elements/IRegion.cs
:BH.oM.Analytical.Elements.IRegion rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Base.IBHoMObject;
        rdfs:subClassOf :BH.oM.Dimensional.IElement2D;
        rdfs:label"IRegion"@en .

### https://github.com/BHoM/BHoM/blob/main/Dimensional_oM/IElement2D.cs
:BH.oM.Dimensional.IElement2D rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Dimensional.IElement;
        rdfs:label"IElement2D"@en .

### https://github.com/BHoM/BHoM/blob/main/Dimensional_oM/IElement.cs
:BH.oM.Dimensional.IElement rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Base.IObject;
        rdfs:label"IElement"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/BHoMObject.cs
:BH.oM.Base.BHoMObject rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Base.IBHoMObject;
        rdfs:label"BHoMObject"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Curve/ICurve.cs
:BH.oM.Geometry.ICurve rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Geometry.IGeometry;
        rdfs:subClassOf :BH.oM.Dimensional.IElement1D;
        rdfs:label"ICurve"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Interface/IGeometry.cs
:BH.oM.Geometry.IGeometry rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Base.IObject;
        rdfs:label"IGeometry"@en .

### https://github.com/BHoM/BHoM/blob/main/Dimensional_oM/IElement1D.cs
:BH.oM.Dimensional.IElement1D rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Dimensional.IElement;
        rdfs:label"IElement1D"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Curve/Polyline.cs
:BH.oM.Geometry.Polyline rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Geometry.ICurve;
        rdfs:label"Polyline"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Curve/Polyline.cs#L38
:BH.oM.ControlPointsList rdf:type owl:Class;
        rdfs:subClassOf rdf:list;
        rdfs:label"ControlPointsList "@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Vector/Point.cs
:BH.oM.Geometry.Point rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Geometry.IGeometry;
        rdfs:subClassOf :BH.oM.Dimensional.IElement0D;
        rdfs:label"Point"@en .

### https://github.com/BHoM/BHoM/blob/main/Dimensional_oM/IElement0D.cs
:BH.oM.Dimensional.IElement0D rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Dimensional.IElement;
        rdfs:label"IElement0D"@en .

#################################################################
#    Object Properties
#################################################################

### https://github.com/BHoM/BHoM/blob/main/Architecture_oM/Elements/Room.cs#L36
:BH.oM.Architecture.Elements.Room.Perimeter rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Architecture.Elements.Room ;
rdfs:range :BH.oM.Geometry.ICurve ;
rdfs:label "Perimeter (BH.oM.Architecture.Elements.Room.Perimeter)"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Curve/Polyline.cs#L47
:BH.oM.ControlPoints rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Architecture.Elements.Room ;
rdfs:range :BH.oM.ControlPointsList ;
rdfs:label "Perimeter (BH.oM.ControlPoints)"@en .

### https://github.com/BHoM/BHoM/blob/main/Architecture_oM/Elements/Room.cs#L37
:BH.oM.Architecture.Elements.Room.Location rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Architecture.Elements.Room ;
rdfs:range :BH.oM.Geometry.Point ;
rdfs:label "Location (BH.oM.Architecture.Elements.Room.Location)"@en .

### https://github.com/BHoM/BHoM/blob/main/Architecture_oM/Elements/Room.cs#L37
:BH.oM.Architecture.Elements.Room.Location rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Architecture.Elements.Room ;
rdfs:range :BH.oM.Geometry.Point ;
rdfs:label "Location (BH.oM.Architecture.Elements.Room.Location)"@en .

#################################################################
#    Data properties
#################################################################

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Curve/Polyline.cs#L38
:BH.oM.Geometry.Polyline.ControlPoints rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Geometry.Polyline ;
rdfs:range :BH.oM.RDF.Base64JsonSerialized ;
rdfs:label "ControlPoints (BH.oM.Geometry.Polyline.ControlPoints)"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Vector/Point.cs#L37
:BH.oM.Geometry.Point.X rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Geometry.Point ;
rdfs:range xsd:double ;
rdfs:label "X (BH.oM.Geometry.Point.X)"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Vector/Point.cs#L40
:BH.oM.Geometry.Point.Y rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Geometry.Point ;
rdfs:range xsd:double ;
rdfs:label "Y (BH.oM.Geometry.Point.Y)"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Vector/Point.cs#L43
:BH.oM.Geometry.Point.Z rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Geometry.Point ;
rdfs:range xsd:double ;
rdfs:label "Z (BH.oM.Geometry.Point.Z)"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/BHoMObject.cs#L34
:BH.oM.Base.BHoMObject.BHoM_Guid rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Base.BHoMObject ;
rdfs:range xsd:string ;
rdfs:label "BHoM_Guid (BH.oM.Base.BHoMObject.BHoM_Guid)"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/BHoMObject.cs#L36
:BH.oM.Base.BHoMObject.Name rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Base.BHoMObject ;
rdfs:range xsd:string ;
rdfs:label "Name (BH.oM.Base.BHoMObject.Name)"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/BHoMObject.cs#L38
:BH.oM.Base.BHoMObject.Fragments rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Base.BHoMObject ;
rdfs:range :BH.oM.RDF.Base64JsonSerialized ;
rdfs:label "Fragments (BH.oM.Base.BHoMObject.Fragments)"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/BHoMObject.cs#L40
:BH.oM.Base.BHoMObject.Tags rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Base.BHoMObject ;
rdfs:range :BH.oM.RDF.Base64JsonSerialized ;
rdfs:label "Tags (BH.oM.Base.BHoMObject.Tags)"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/BHoMObject.cs#L42
:BH.oM.Base.BHoMObject.CustomData rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Base.BHoMObject ;
rdfs:range :BH.oM.RDF.Base64JsonSerialized ;
rdfs:label "CustomData (BH.oM.Base.BHoMObject.CustomData)"@en .

#################################################################
#    Individuals
#################################################################

### http://www.uni-stuttgart.de/7c650451-9471-4696-9c42-97ac267b9264
<http://www.uni-stuttgart.de/7c650451-9471-4696-9c42-97ac267b9264> rdf:type owl:NamedIndividual ,
        :BH.oM.Architecture.Elements.Room ;
        :BH.oM.Architecture.Elements.Room.Perimeter <http://www.uni-stuttgart.de/63744423> ;
        :BH.oM.Base.BHoMObject.BHoM_Guid "7c650451-9471-4696-9c42-97ac267b9264"^^xsd:string.

### http://www.uni-stuttgart.de/63744423
<http://www.uni-stuttgart.de/63744423> rdf:type owl:NamedIndividual ,
        :BH.oM.Geometry.Polyline ;
        :BH.oM.Geometry.Polyline.ControlPoints (<http://www.uni-stuttgart.de/494086135> <http://www.uni-stuttgart.de/49408613510> <http://www.uni-stuttgart.de/49408613510>).

### http://www.uni-stuttgart.de/49408613501
<http://www.uni-stuttgart.de/494086135> rdf:type owl:NamedIndividual ,
        :BH.oM.Geometry.Point ;
        :BH.oM.Geometry.Point.X "1"^^xsd:double;
        :BH.oM.Geometry.Point.Y "1"^^xsd:double;
        :BH.oM.Geometry.Point.Z "1"^^xsd:double.

### http://www.uni-stuttgart.de/49408613510
<http://www.uni-stuttgart.de/49408613510> rdf:type owl:NamedIndividual ,
        :BH.oM.Geometry.Point ;
        :BH.oM.Geometry.Point.X "10"^^xsd:double;
        :BH.oM.Geometry.Point.Y "10"^^xsd:double;
        :BH.oM.Geometry.Point.Z "10"^^xsd:double.

### http://www.uni-stuttgart.de/49408613520
<http://www.uni-stuttgart.de/49408613510> rdf:type owl:NamedIndividual ,
        :BH.oM.Geometry.Point ;
        :BH.oM.Geometry.Point.X "20"^^xsd:double;
        :BH.oM.Geometry.Point.Y "20"^^xsd:double;
        :BH.oM.Geometry.Point.Z "20"^^xsd:double.

`
DiellzaElshani commented 2 years ago

Current development: (As Alessio and Diellza discussed also while writing the LDAC paper, ordered lists can be rdf:seq, Daniel also confirms and we tested some files manually)

Steps:

1) introduce an owl:class, rdf:subClassOf rdf:Seq which will be the placeholder of the elements.


### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Curve/Polyline.cs#L38
 :BH.oM.ControlPointsList rdf:type owl:Class;
 rdfs:subClassOf rdf:Seq;
 rdfs:label"ControlPointsList "@en .

2) introduce an owl:ObjectProperty:

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Curve/Polyline.cs#L47
 :BH.oM.ControlPoints rdf:type owl:ObjectProperty ;
 rdfs:domain :BH.oM.Architecture.Elements.Room ;
 rdfs:range :BH.oM.ControlPointsList ;
 rdfs:label "Perimeter (BH.oM.ControlPoints)"@en .

3) Edit the output at the individuals part:

### http://www.uni-stuttgart.de/6374442399
<http://www.uni-stuttgart.de/6374442399> rdf:type owl:NamedIndividual,      
 :BH.oM.ControlPointsList;  
 rdf:_0 <http://www.uni-stuttgart.de/494086135> ;
 rdf:_1 <http://www.uni-stuttgart.de/49408613510> ;
 rdf:_2 <http://www.uni-stuttgart.de/49408613520>.
DiellzaElshani commented 2 years ago
@prefix : <http://www.bhom.org/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@base   <http://www.bhom.org> .

<www.bhom.org> rdf:type owl:Ontology;
                          dc:title "buidling ontology"@en;
                          dc:description " bhom ontology"@en.

#################################################################
#    Annotation Properties
#################################################################

###  http://purl.org/dc/elements/1.1/#description
<http://purl.org/dc/elements/1.1/#description> rdf:type owl:AnnotationProperty .
###  http://purl.org/dc/elements/1.1/#title
<http://purl.org/dc/elements/1.1/#title> rdf:type owl:AnnotationProperty .

#################################################################
#    Datatypes
#################################################################

### https://github.com/BHoM/RDF_Prototypes/commit/ff8ccb68dbba5aeadb4a9a284f141eb1515e169a
:BH.oM.RDF.Base64JsonSerialized rdf:type rdfs:Datatype ;
rdfs:label "Base64JsonSerialized"@en ;
owl:equivalentClass xsd:string .

#################################################################
#    Classes
#################################################################

### https://github.com/BHoM/BHoM/blob/main/Architecture_oM/Elements/Room.cs
:BH.oM.Architecture.Elements.Room rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Analytical.Elements.IRegion;
        rdfs:subClassOf :BH.oM.Base.BHoMObject;
        rdfs:label"Room"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/Interface/IBHoMObject.cs
:BH.oM.Base.IBHoMObject rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Base.IObject;
        rdfs:label"IBHoMObject"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/Interface/IObject.cs
:BH.oM.Base.IObject rdf:type owl:Class;
        rdfs:label"IObject"@en .

### https://github.com/BHoM/BHoM/blob/main/Analytical_oM/Elements/IRegion.cs
:BH.oM.Analytical.Elements.IRegion rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Base.IBHoMObject;
        rdfs:subClassOf :BH.oM.Dimensional.IElement2D;
        rdfs:label"IRegion"@en .

### https://github.com/BHoM/BHoM/blob/main/Dimensional_oM/IElement2D.cs
:BH.oM.Dimensional.IElement2D rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Dimensional.IElement;
        rdfs:label"IElement2D"@en .

### https://github.com/BHoM/BHoM/blob/main/Dimensional_oM/IElement.cs
:BH.oM.Dimensional.IElement rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Base.IObject;
        rdfs:label"IElement"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/BHoMObject.cs
:BH.oM.Base.BHoMObject rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Base.IBHoMObject;
        rdfs:label"BHoMObject"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Curve/ICurve.cs
:BH.oM.Geometry.ICurve rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Geometry.IGeometry;
        rdfs:subClassOf :BH.oM.Dimensional.IElement1D;
        rdfs:label"ICurve"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Interface/IGeometry.cs
:BH.oM.Geometry.IGeometry rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Base.IObject;
        rdfs:label"IGeometry"@en .

### https://github.com/BHoM/BHoM/blob/main/Dimensional_oM/IElement1D.cs
:BH.oM.Dimensional.IElement1D rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Dimensional.IElement;
        rdfs:label"IElement1D"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Curve/Polyline.cs
:BH.oM.Geometry.Polyline rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Geometry.ICurve;
        rdfs:label"Polyline"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Curve/Polyline.cs#L38
:BH.oM.ControlPointsList rdf:type owl:Class;
        rdfs:subClassOf rdf:seq;
        rdfs:label"ControlPointsList "@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Vector/Point.cs
:BH.oM.Geometry.Point rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Geometry.IGeometry;
        rdfs:subClassOf :BH.oM.Dimensional.IElement0D;
        rdfs:label"Point"@en .

### https://github.com/BHoM/BHoM/blob/main/Dimensional_oM/IElement0D.cs
:BH.oM.Dimensional.IElement0D rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Dimensional.IElement;
        rdfs:label"IElement0D"@en .

#################################################################
#    Object Properties
#################################################################

### https://github.com/BHoM/BHoM/blob/main/Architecture_oM/Elements/Room.cs#L36
:BH.oM.Architecture.Elements.Room.Perimeter rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Architecture.Elements.Room ;
rdfs:range :BH.oM.Geometry.ICurve ;
rdfs:label "Perimeter (BH.oM.Architecture.Elements.Room.Perimeter)"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Curve/Polyline.cs#L47
:BH.oM.ControlPoints rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Architecture.Elements.Room ;
rdfs:range :BH.oM.ControlPointsList ;
rdfs:label "Perimeter (BH.oM.ControlPoints)"@en .

### https://github.com/BHoM/BHoM/blob/main/Architecture_oM/Elements/Room.cs#L37
:BH.oM.Architecture.Elements.Room.Location rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Architecture.Elements.Room ;
rdfs:range :BH.oM.Geometry.Point ;
rdfs:label "Location (BH.oM.Architecture.Elements.Room.Location)"@en .

### https://github.com/BHoM/BHoM/blob/main/Architecture_oM/Elements/Room.cs#L37
:BH.oM.Architecture.Elements.Room.Location rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Architecture.Elements.Room ;
rdfs:range :BH.oM.Geometry.Point ;
rdfs:label "Location (BH.oM.Architecture.Elements.Room.Location)"@en .

#################################################################
#    Data properties
#################################################################

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Curve/Polyline.cs#L38
:BH.oM.Geometry.Polyline.ControlPoints rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Geometry.Polyline ;
rdfs:range :BH.oM.RDF.Base64JsonSerialized ;
rdfs:label "ControlPoints (BH.oM.Geometry.Polyline.ControlPoints)"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Vector/Point.cs#L37
:BH.oM.Geometry.Point.X rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Geometry.Point ;
rdfs:range xsd:double ;
rdfs:label "X (BH.oM.Geometry.Point.X)"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Vector/Point.cs#L40
:BH.oM.Geometry.Point.Y rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Geometry.Point ;
rdfs:range xsd:double ;
rdfs:label "Y (BH.oM.Geometry.Point.Y)"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Vector/Point.cs#L43
:BH.oM.Geometry.Point.Z rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Geometry.Point ;
rdfs:range xsd:double ;
rdfs:label "Z (BH.oM.Geometry.Point.Z)"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/BHoMObject.cs#L34
:BH.oM.Base.BHoMObject.BHoM_Guid rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Base.BHoMObject ;
rdfs:range xsd:string ;
rdfs:label "BHoM_Guid (BH.oM.Base.BHoMObject.BHoM_Guid)"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/BHoMObject.cs#L36
:BH.oM.Base.BHoMObject.Name rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Base.BHoMObject ;
rdfs:range xsd:string ;
rdfs:label "Name (BH.oM.Base.BHoMObject.Name)"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/BHoMObject.cs#L38
:BH.oM.Base.BHoMObject.Fragments rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Base.BHoMObject ;
rdfs:range :BH.oM.RDF.Base64JsonSerialized ;
rdfs:label "Fragments (BH.oM.Base.BHoMObject.Fragments)"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/BHoMObject.cs#L40
:BH.oM.Base.BHoMObject.Tags rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Base.BHoMObject ;
rdfs:range :BH.oM.RDF.Base64JsonSerialized ;
rdfs:label "Tags (BH.oM.Base.BHoMObject.Tags)"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/BHoMObject.cs#L42
:BH.oM.Base.BHoMObject.CustomData rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Base.BHoMObject ;
rdfs:range :BH.oM.RDF.Base64JsonSerialized ;
rdfs:label "CustomData (BH.oM.Base.BHoMObject.CustomData)"@en .

#################################################################
#    Individuals
#################################################################

### http://www.uni-stuttgart.de/7c650451-9471-4696-9c42-97ac267b9264
<http://www.uni-stuttgart.de/7c650451-9471-4696-9c42-97ac267b9264> rdf:type owl:NamedIndividual ,
        :BH.oM.Architecture.Elements.Room ;
        :BH.oM.Architecture.Elements.Room.Perimeter <http://www.uni-stuttgart.de/63744423> ;
        :BH.oM.Base.BHoMObject.BHoM_Guid "7c650451-9471-4696-9c42-97ac267b9264"^^xsd:string.

### http://www.uni-stuttgart.de/63744423
<http://www.uni-stuttgart.de/63744423> rdf:type owl:NamedIndividual ,
        :BH.oM.Geometry.Polyline ;
        :BH.oM.Geometry.Polyline.ControlPoints <http://www.uni-stuttgart.de/6374442399>.

### http://www.uni-stuttgart.de/6374442399
<http://www.uni-stuttgart.de/6374442399> rdf:type owl:NamedIndividual,      
                                                :BH.oM.ControlPointsList;   
                                         rdf:_0 <http://www.uni-stuttgart.de/494086135> ;
                                         rdf:_1 <http://www.uni-stuttgart.de/49408613510> ;
                                         rdf:_2 <http://www.uni-stuttgart.de/49408613520>.

### http://www.uni-stuttgart.de/49408613501
<http://www.uni-stuttgart.de/494086135> rdf:type owl:NamedIndividual ,
        :BH.oM.Geometry.Point ;
        :BH.oM.Geometry.Point.X "1"^^xsd:double;
        :BH.oM.Geometry.Point.Y "1"^^xsd:double;
        :BH.oM.Geometry.Point.Z "1"^^xsd:double.

### http://www.uni-stuttgart.de/49408613510
<http://www.uni-stuttgart.de/49408613510> rdf:type owl:NamedIndividual ,
        :BH.oM.Geometry.Point ;
        :BH.oM.Geometry.Point.X "10"^^xsd:double;
        :BH.oM.Geometry.Point.Y "10"^^xsd:double;
        :BH.oM.Geometry.Point.Z "10"^^xsd:double.

### http://www.uni-stuttgart.de/49408613520
<http://www.uni-stuttgart.de/49408613510> rdf:type owl:NamedIndividual ,
        :BH.oM.Geometry.Point ;
        :BH.oM.Geometry.Point.X "20"^^xsd:double;
        :BH.oM.Geometry.Point.Y "20"^^xsd:double;
        :BH.oM.Geometry.Point.Z "20"^^xsd:double.
DiellzaElshani commented 2 years ago

Current development: (As Alessio and Diellza discussed also while writing the LDAC paper, ordered lists can be rdf:seq, Daniel also confirms and we tested some files manually)

Steps:

  1. introduce an owl:class, rdf:subClassOf rdf:Seq which will be the placeholder of the elements.

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Curve/Polyline.cs#L38
 :BH.oM.ControlPointsList rdf:type owl:Class;
 rdfs:subClassOf rdf:Seq;
 rdfs:label"ControlPointsList "@en .
  1. introduce an owl:ObjectProperty:
### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Curve/Polyline.cs#L47
 :BH.oM.ControlPoints rdf:type owl:ObjectProperty ;
 rdfs:domain :BH.oM.Architecture.Elements.Room ;
 rdfs:range :BH.oM.ControlPointsList ;
 rdfs:label "Perimeter (BH.oM.ControlPoints)"@en .
  1. Edit the output at the individuals part:
### http://www.uni-stuttgart.de/6374442399
<http://www.uni-stuttgart.de/6374442399> rdf:type owl:NamedIndividual,        
 :BH.oM.ControlPointsList;    
 rdf:_0 <http://www.uni-stuttgart.de/494086135> ;
 rdf:_1 <http://www.uni-stuttgart.de/49408613510> ;
 rdf:_2 <http://www.uni-stuttgart.de/49408613520>.

the current solution.

alelom commented 2 years ago

Hey @DiellzaElshani , I get the solution, except step 1:

  1. introduce an owl:class, rdf:subClassOf rdf:Seq which will be the placeholder of the elements.

do we actually need this? Couldn't we just do step 2 and 3, as:

  1. introduce an owl:ObjectProperty:

    ### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Curve/Polyline.cs#L47
    :BH.oM.ControlPoints rdf:type owl:ObjectProperty ;
    rdfs:domain :BH.oM.Architecture.Elements.Room ;
    rdfs:range :rdf:Seq ;
    rdfs:label "Perimeter (BH.oM.ControlPoints)"@en .
  2. Edit the output at the individuals part:

### http://www.uni-stuttgart.de/6374442399
<http://www.uni-stuttgart.de/6374442399> rdf:type owl:NamedIndividual,      
 :rdf:Seq;  
 rdf:_0 <http://www.uni-stuttgart.de/494086135> ;
 rdf:_1 <http://www.uni-stuttgart.de/49408613510> ;
 rdf:_2 <http://www.uni-stuttgart.de/49408613520>.

I just don't see the point of adding the extra owl class :BH.oM.ControlPointsList. See this example.

DiellzaElshani commented 2 years ago

Hi @alelom, it looks greaat already. And nice catch. I am not sure either. But following the structure we have so far we name objects using bhom names (a bhom bar is an owl class for example, therefore I thought we should also have named "lists" using bhom vocabulary),

If we have many lists and we want to query all lists it might be more smoother if those lists are categorized. Maybe (?) IDK.

That said, your solution also works. And it is perfect for the workshop. I just tested it on a Turtle Validator http://ttl.summerofcode.be/ , everything seems fine so far.

I am not sure we need this line though: image

maybe @danielhz can also comment (I am adding a resulting ttl after this comment so @danielhz can check).

DiellzaElshani commented 2 years ago
@prefix : <www.bhom.org/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dc: <http://www.w3.org/2000/01/rdf-schema#> .
@base   <www.bhom.org> .

<www.bhom.org> rdf:type owl:Ontology;
                          dc:title "buidling ontology"@en;
                          dc:description " bhom ontology"@en.

#################################################################
#    Annotation Properties
#################################################################

###  http://purl.org/dc/elements/1.1/#description
<http://purl.org/dc/elements/1.1/#description> rdf:type owl:AnnotationProperty .
###  http://purl.org/dc/elements/1.1/#title
<http://purl.org/dc/elements/1.1/#title> rdf:type owl:AnnotationProperty .

#################################################################
#    Datatypes
#################################################################

### https://github.com/BHoM/RDF_Prototypes/commit/ff8ccb68dbba5aeadb4a9a284f141eb1515e169a
:BH.oM.RDF.Base64JsonSerialized rdf:type rdfs:Datatype ;
rdfs:label "Base64JsonSerialized"@en ;
owl:equivalentClass xsd:string .

#################################################################
#    Classes
#################################################################

### https://github.com/BHoM/BHoM/blob/main/Architecture_oM/Elements/Room.cs
:BH.oM.Architecture.Elements.Room rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Analytical.Elements.IRegion;
        rdfs:subClassOf :BH.oM.Base.BHoMObject;
        rdfs:label "Room"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/Interface/IBHoMObject.cs
:BH.oM.Base.IBHoMObject rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Base.IObject;
        rdfs:label "IBHoMObject"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/Interface/IObject.cs
:BH.oM.Base.IObject rdf:type owl:Class;
        rdfs:label "IObject"@en .

### https://github.com/BHoM/BHoM/blob/main/Analytical_oM/Elements/IRegion.cs
:BH.oM.Analytical.Elements.IRegion rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Base.IBHoMObject;
        rdfs:subClassOf :BH.oM.Dimensional.IElement2D;
        rdfs:label "IRegion"@en .

### https://github.com/BHoM/BHoM/blob/main/Dimensional_oM/IElement2D.cs
:BH.oM.Dimensional.IElement2D rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Dimensional.IElement;
        rdfs:label "IElement2D"@en .

### https://github.com/BHoM/BHoM/blob/main/Dimensional_oM/IElement.cs
:BH.oM.Dimensional.IElement rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Base.IObject;
        rdfs:label "IElement"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/BHoMObject.cs
:BH.oM.Base.BHoMObject rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Base.IBHoMObject;
        rdfs:label "BHoMObject"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Curve/ICurve.cs
:BH.oM.Geometry.ICurve rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Geometry.IGeometry;
        rdfs:subClassOf :BH.oM.Dimensional.IElement1D;
        rdfs:label "ICurve"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Interface/IGeometry.cs
:BH.oM.Geometry.IGeometry rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Base.IObject;
        rdfs:label "IGeometry"@en .

### https://github.com/BHoM/BHoM/blob/main/Dimensional_oM/IElement1D.cs
:BH.oM.Dimensional.IElement1D rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Dimensional.IElement;
        rdfs:label "IElement1D"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Curve/Polyline.cs
:BH.oM.Geometry.Polyline rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Geometry.ICurve;
        rdfs:label "Polyline"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Vector/Point.cs
:BH.oM.Geometry.Point rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Geometry.IGeometry;
        rdfs:subClassOf :BH.oM.Dimensional.IElement0D;
        rdfs:label "Point"@en .

### https://github.com/BHoM/BHoM/blob/main/Dimensional_oM/IElement0D.cs
:BH.oM.Dimensional.IElement0D rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Dimensional.IElement;
        rdfs:label "IElement0D"@en .

### https://github.com/BHoM/BHoM/blob/main//rdfseq.cs
:rdf:seq rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Base.CustomObject;
        rdfs:label "rdfseq"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/CustomObject.cs
:BH.oM.Base.CustomObject rdf:type owl:Class;
        rdfs:subClassOf :BH.oM.Base.BHoMObject;
        rdfs:label "CustomObject"@en .

#################################################################
#    Object Properties
#################################################################

### https://github.com/BHoM/BHoM/blob/main/Architecture_oM/Elements/Room.cs#L36
:BH.oM.Architecture.Elements.Room.Perimeter rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Architecture.Elements.Room ;
rdfs:range :BH.oM.Geometry.ICurve ;
rdfs:label "Perimeter (BH.oM.Architecture.Elements.Room.Perimeter)"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Curve/Polyline.cs#L38
:BH.oM.Geometry.Polyline.ControlPoints rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Geometry.Polyline ;
rdfs:range :rdf:seq ;
rdfs:label "ControlPoints (BH.oM.Geometry.Polyline.ControlPoints)"@en .

### https://github.com/BHoM/BHoM/blob/main/Architecture_oM/Elements/Room.cs#L37
:BH.oM.Architecture.Elements.Room.Location rdf:type owl:ObjectProperty ;
rdfs:domain :BH.oM.Architecture.Elements.Room ;
rdfs:range :BH.oM.Geometry.Point ;
rdfs:label "Location (BH.oM.Architecture.Elements.Room.Location)"@en .

#################################################################
#    Data properties
#################################################################

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Vector/Point.cs#L37
:BH.oM.Geometry.Point.X rdf:type owl:DatatypeProperty ;
rdfs:domain :BH.oM.Geometry.Point ;
rdfs:range xsd:double ;
rdfs:label "X (BH.oM.Geometry.Point.X)"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Vector/Point.cs#L40
:BH.oM.Geometry.Point.Y rdf:type owl:DatatypeProperty ;
rdfs:domain :BH.oM.Geometry.Point ;
rdfs:range xsd:double ;
rdfs:label "Y (BH.oM.Geometry.Point.Y)"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Vector/Point.cs#L43
:BH.oM.Geometry.Point.Z rdf:type owl:DatatypeProperty ;
rdfs:domain :BH.oM.Geometry.Point ;
rdfs:range xsd:double ;
rdfs:label "Z (BH.oM.Geometry.Point.Z)"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Vector/Point.cs#L37
:BH.oM.Geometry.Point.X rdf:type owl:DatatypeProperty ;
rdfs:domain :BH.oM.Geometry.Point ;
rdfs:range xsd:double ;
rdfs:label "X (BH.oM.Geometry.Point.X)"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Vector/Point.cs#L40
:BH.oM.Geometry.Point.Y rdf:type owl:DatatypeProperty ;
rdfs:domain :BH.oM.Geometry.Point ;
rdfs:range xsd:double ;
rdfs:label "Y (BH.oM.Geometry.Point.Y)"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Vector/Point.cs#L43
:BH.oM.Geometry.Point.Z rdf:type owl:DatatypeProperty ;
rdfs:domain :BH.oM.Geometry.Point ;
rdfs:range xsd:double ;
rdfs:label "Z (BH.oM.Geometry.Point.Z)"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Vector/Point.cs#L37
:BH.oM.Geometry.Point.X rdf:type owl:DatatypeProperty ;
rdfs:domain :BH.oM.Geometry.Point ;
rdfs:range xsd:double ;
rdfs:label "X (BH.oM.Geometry.Point.X)"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Vector/Point.cs#L40
:BH.oM.Geometry.Point.Y rdf:type owl:DatatypeProperty ;
rdfs:domain :BH.oM.Geometry.Point ;
rdfs:range xsd:double ;
rdfs:label "Y (BH.oM.Geometry.Point.Y)"@en .

### https://github.com/BHoM/BHoM/blob/main/Geometry_oM/Vector/Point.cs#L43
:BH.oM.Geometry.Point.Z rdf:type owl:DatatypeProperty ;
rdfs:domain :BH.oM.Geometry.Point ;
rdfs:range xsd:double ;
rdfs:label "Z (BH.oM.Geometry.Point.Z)"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/BHoMObject.cs#L34
:BH.oM.Base.BHoMObject.BHoM_Guid rdf:type owl:DatatypeProperty ;
rdfs:domain :BH.oM.Base.BHoMObject ;
rdfs:range xsd:string ;
rdfs:label "BHoM_Guid (BH.oM.Base.BHoMObject.BHoM_Guid)"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/BHoMObject.cs#L36
:BH.oM.Base.BHoMObject.Name rdf:type owl:DatatypeProperty ;
rdfs:domain :BH.oM.Base.BHoMObject ;
rdfs:range xsd:string ;
rdfs:label "Name (BH.oM.Base.BHoMObject.Name)"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/BHoMObject.cs#L38
:BH.oM.Base.BHoMObject.Fragments rdf:type owl:DatatypeProperty ;
rdfs:domain :BH.oM.Base.BHoMObject ;
rdfs:range :BH.oM.RDF.Base64JsonSerialized ;
rdfs:label "Fragments (BH.oM.Base.BHoMObject.Fragments)"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/BHoMObject.cs#L40
:BH.oM.Base.BHoMObject.Tags rdf:type owl:DatatypeProperty ;
rdfs:domain :BH.oM.Base.BHoMObject ;
rdfs:range :BH.oM.RDF.Base64JsonSerialized ;
rdfs:label "Tags (BH.oM.Base.BHoMObject.Tags)"@en .

### https://github.com/BHoM/BHoM/blob/main/BHoM/BHoMObject.cs#L42
:BH.oM.Base.BHoMObject.CustomData rdf:type owl:DatatypeProperty ;
rdfs:domain :BH.oM.Base.BHoMObject ;
rdfs:range :BH.oM.RDF.Base64JsonSerialized ;
rdfs:label "CustomData (BH.oM.Base.BHoMObject.CustomData)"@en .

#################################################################
#    Individuals
#################################################################

### http://www.uni-stuttgart.de/281d50e3-96a5-4c8b-88d0-195e01dbf0e0
<http://www.uni-stuttgart.de/281d50e3-96a5-4c8b-88d0-195e01dbf0e0> rdf:type owl:NamedIndividual ,
        :BH.oM.Architecture.Elements.Room ;
        :BH.oM.Architecture.Elements.Room.Perimeter <http://www.uni-stuttgart.de/21699988> ;
        :BH.oM.Base.BHoMObject.BHoM_Guid "281d50e3-96a5-4c8b-88d0-195e01dbf0e0"^^xsd:string.

### http://www.uni-stuttgart.de/21699988
<http://www.uni-stuttgart.de/21699988> rdf:type owl:NamedIndividual ,
        :BH.oM.Geometry.Polyline ;
        :BH.oM.Geometry.Polyline.ControlPoints rdf:seq ;
        rdf:_0 <http://www.uni-stuttgart.de/494086135> ;
        rdf:_1 <http://www.uni-stuttgart.de/-1916327945> ;
        rdf:_2 <http://www.uni-stuttgart.de/-1336465417> .

### http://www.uni-stuttgart.de/494086135
<http://www.uni-stuttgart.de/494086135> rdf:type owl:NamedIndividual ,
        :BH.oM.Geometry.Point ;
        :BH.oM.Geometry.Point.X "1"^^xsd:double;
        :BH.oM.Geometry.Point.Y "1"^^xsd:double;
        :BH.oM.Geometry.Point.Z "1"^^xsd:double.

### http://www.uni-stuttgart.de/-1916327945
<http://www.uni-stuttgart.de/-1916327945> rdf:type owl:NamedIndividual ,
        :BH.oM.Geometry.Point ;
        :BH.oM.Geometry.Point.X "10"^^xsd:double;
        :BH.oM.Geometry.Point.Y "10"^^xsd:double;
        :BH.oM.Geometry.Point.Z "10"^^xsd:double.

### http://www.uni-stuttgart.de/-1336465417
<http://www.uni-stuttgart.de/-1336465417> rdf:type owl:NamedIndividual ,
        :BH.oM.Geometry.Point ;
        :BH.oM.Geometry.Point.X "20"^^xsd:double;
        :BH.oM.Geometry.Point.Y "20"^^xsd:double;
        :BH.oM.Geometry.Point.Z "20"^^xsd:double.
alelom commented 2 years ago

@DiellzaElshani in order to remove the warning that you noticed: image

I am about to push a commit that brings some refactoring. This requires another in-depth look to make sure everything is fine because I had to do some noticeable changes. Please test and let me know if things work well as before. I tested on my end and it seems fine.

alelom commented 2 years ago

Closed with https://github.com/BHoM/RDF_Prototypes/commit/22f24387a002c8cf9a551bebd45bb7a85a2976c8 and previous commits.