Merging Brick Models

Tip

To use this feature, install brickschema with the “merge” feature: pip install brickschema[merge] or pip install brickschema[all]

This module implements techniques for merging multiple Brick models into a single cohesive graph using techniques from a BuildSys 2020 paper. Eventually, other implementations may make their way into this module.

The module defines a merge_type_cluster function which interactively merges two Brick graphs together. This function finds instances in both graphs which are of the same type

Example

import brickschema
from brickschema.merge import merge_type_cluster
from rdflib import Namespace

# both graphs must have the same namespace
# AND must have RDFS.label for all entities
BLDG = Namespace("http://example.org/building/")

def validate(g):
    valid, _, report = g.validate()
    if not valid:
        raise Exception(report)

g1 = brickschema.Graph().load_file("bldg1")
#validate(g1)

g2 = brickschema.Graph().load_file("bldg2")
#validate(g2)

G = merge_type_cluster(g1, g2, BLDG, similarity_threshold=0.1)
validate(G)
G.serialize("merged.ttl", format="ttl")