Files
ifc-weather-mapping-mechanism/ifcParser/ifcGeometricContext.py
2024-10-10 22:59:05 +00:00

50 lines
2.5 KiB
Python

from rdflib import Graph, Namespace, URIRef, Literal, RDF, RDFS, XSD
class geometric():
def __init__(self, IfcGeometricRepresentationSubContext, g, ontology, resource):
self.IfcGeometricRepresentationSubContext = IfcGeometricRepresentationSubContext
self.g = g
self.ontology = ontology
self.resource = resource
def ifcGeometricRepresentationSubContextFunction(self):
for context in self.IfcGeometricRepresentationSubContext:
contextID = context['globalId']
#basic information
self.g.add((self.resource[contextID], RDF.type, self.ontology.Context))
try: # contextIdentifier is not always there
contextIdentifier = context['contextIdentifier']
self.g.add((self.resource[contextID], self.ontology.identifier, Literal(contextIdentifier)))
except Exception:
pass
try: # contextType is not always there
contextType = context['contextType']
self.g.add((self.resource[contextID], self.ontology.contextType, Literal(contextType)))
except Exception:
pass
try: # targetView is not always there
contextTargetView = context['targetView']
self.g.add((self.resource[contextID], self.ontology.targetView, Literal(contextTargetView)))
except Exception:
pass
try: # contextType is not always there
parentContext = context['parentContext']['ref']
self.g.add((self.resource[parentContext], RDF.type, self.ontology.Context))
self.g.add((self.resource[contextID], self.ontology.hasParentContext, self.resource[parentContext]))
except Exception:
pass
try: # contextType is not always there
for element in context['representationsInContext']:
if "ref" in list(element.keys()):
self.g.add((self.resource[element['ref']], RDF.type, self.ontology.Context))
self.g.add((self.resource[contextID], self.ontology.hasRelatedContext, self.resource[element['ref']]))
except Exception:
pass
# Create RDF triples
# Serialize and save the RDF graph to a TTL file
file_path = "output.ttl"
self.g.serialize(destination=file_path, format="turtle")