def _read_module_definitions(self, graph):
        """
        Read graph and add module defintions to document
        """
        for e in self._get_elements(graph, SBOL.ModuleDefinition):
            identity = e[0]
            m = self._get_rdf_identified(graph, identity)
            m['roles'] = self._get_triplet_value_list(graph, identity, SBOL.role)
            functional_components = {}
            for func_comp in graph.triples((identity, SBOL.functionalComponent, None)):
                func_identity = func_comp[2]
                fc = self._get_rdf_identified(graph, func_identity)
                definition = self._get_triplet_value(graph, func_identity, SBOL.definition)
                fc['definition'] = self._components[definition]
                fc['access'] = self._get_triplet_value(graph, func_identity, SBOL.access)
                fc['direction'] = self._get_triplet_value(graph, func_identity, SBOL.direction)
                functional_components[func_identity.toPython()] = FunctionalComponent(**fc)
                self._functional_component_store[func_identity.toPython()] = \
                        functional_components[func_identity.toPython()]
            interactions = []
            for inter in graph.triples((identity, SBOL.interaction, None)):
                inter_identity = inter[2]
                it = self._get_rdf_identified(graph, inter_identity)
                it['types'] = self._get_triplet_value_list(graph, inter_identity, SBOL.types)
                participations = []
                for p in graph.triples((inter_identity, SBOL.participation, None)):
                    pc = self._get_rdf_identified(graph, p[2])
                    roles = self._get_triplet_value_list(graph, p[2], SBOL.role)
                    # Need to use one of the functional component created above
                    participant_id = self._get_triplet_value(graph, p[2], SBOL.participant)
                    participant = functional_components[participant_id]
                    participations.append(Participation(roles=roles, participant=participant, **pc))
                interactions.append(Interaction(participations=participations, **it))
            obj = ModuleDefinition(functional_components=functional_components.values(),
                                   interactions=interactions,
                                   **m)
            self._modules[identity.toPython()] = obj
            self._collection_store[identity.toPython()] = obj
Read graph and add module defintions to document