mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-09 21:53:40 +00:00
Second level query for Brick equipment+point roots
This commit is contained in:
@@ -310,6 +310,7 @@ class Brick(blenderbim.core.tool.Brick):
|
|||||||
cs.load_file(filepath)
|
cs.load_file(filepath)
|
||||||
BrickStore.path = filepath
|
BrickStore.path = filepath
|
||||||
cls.set_last_saved()
|
cls.set_last_saved()
|
||||||
|
BrickStore.load_sub_roots()
|
||||||
BrickStore.load_namespaces()
|
BrickStore.load_namespaces()
|
||||||
BrickStore.load_entity_classes()
|
BrickStore.load_entity_classes()
|
||||||
BrickStore.load_relationships()
|
BrickStore.load_relationships()
|
||||||
@@ -323,6 +324,7 @@ class Brick(blenderbim.core.tool.Brick):
|
|||||||
with BrickStore.graph.new_changeset("SCHEMA") as cs:
|
with BrickStore.graph.new_changeset("SCHEMA") as cs:
|
||||||
cs.load_file(BrickStore.schema)
|
cs.load_file(BrickStore.schema)
|
||||||
BrickStore.graph.bind("digitaltwin", Namespace("https://example.org/digitaltwin#"))
|
BrickStore.graph.bind("digitaltwin", Namespace("https://example.org/digitaltwin#"))
|
||||||
|
BrickStore.load_sub_roots()
|
||||||
BrickStore.load_namespaces()
|
BrickStore.load_namespaces()
|
||||||
BrickStore.load_entity_classes()
|
BrickStore.load_entity_classes()
|
||||||
BrickStore.load_relationships()
|
BrickStore.load_relationships()
|
||||||
@@ -411,12 +413,7 @@ class BrickStore:
|
|||||||
current_changesets = 0
|
current_changesets = 0
|
||||||
history_size = 64
|
history_size = 64
|
||||||
namespaces = []
|
namespaces = []
|
||||||
root_classes = ["Equipment",
|
root_classes = ["Equipment", "Location", "System", "Point"]
|
||||||
"Electrical_Equipment", "Fire_Safety_Equipment", "HVAC_Equipment", "Lighting_Equipment", "Meter",
|
|
||||||
"Location",
|
|
||||||
"System",
|
|
||||||
"Point",
|
|
||||||
"Alarm", "Command", "Parameter", "Sensor", "Setpoint", "Status"]
|
|
||||||
entity_classes = {}
|
entity_classes = {}
|
||||||
relationships = []
|
relationships = []
|
||||||
|
|
||||||
@@ -427,6 +424,7 @@ class BrickStore:
|
|||||||
BrickStore.path = None
|
BrickStore.path = None
|
||||||
BrickStore.last_saved = None
|
BrickStore.last_saved = None
|
||||||
BrickStore.namespaces = []
|
BrickStore.namespaces = []
|
||||||
|
BrickStore.root_classes = ["Equipment", "Location", "System", "Point"]
|
||||||
BrickStore.entity_classes = {}
|
BrickStore.entity_classes = {}
|
||||||
BrickStore.relationships = []
|
BrickStore.relationships = []
|
||||||
|
|
||||||
@@ -434,6 +432,32 @@ class BrickStore:
|
|||||||
def get_project(cls):
|
def get_project(cls):
|
||||||
return BrickStore.graph.graph_at(graph="PROJECT")
|
return BrickStore.graph.graph_at(graph="PROJECT")
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def load_sub_roots(cls):
|
||||||
|
query = BrickStore.graph.query(
|
||||||
|
"""
|
||||||
|
PREFIX brick: <https://brickschema.org/schema/Brick#>
|
||||||
|
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
|
||||||
|
SELECT ?subRoot ?subClasses WHERE {
|
||||||
|
{
|
||||||
|
SELECT ?subRoot (COUNT(?subClass) as ?subClasses) WHERE {
|
||||||
|
{
|
||||||
|
?subRoot rdfs:subClassOf brick:Equipment .
|
||||||
|
} UNION {
|
||||||
|
?subRoot rdfs:subClassOf brick:Point .
|
||||||
|
}
|
||||||
|
?subClass rdfs:subClassOf* ?subRoot .
|
||||||
|
}
|
||||||
|
GROUP BY ?subRoot
|
||||||
|
}
|
||||||
|
FILTER(?subClasses > 3)
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
for row in query:
|
||||||
|
sub_root = row.get("subRoot").toPython().split("#")[-1]
|
||||||
|
BrickStore.root_classes.append(sub_root)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def load_namespaces(cls):
|
def load_namespaces(cls):
|
||||||
BrickStore.namespaces = []
|
BrickStore.namespaces = []
|
||||||
|
|||||||
Reference in New Issue
Block a user