Main Content


Create query to select architectural elements with interface on port based on specified subconstraint

Since R2019b



    query = HasInterface(subconstraint) creates a query query that the find and createView functions use to select architectural elements with an interface that satisfies the given subconstraint subconstraint.


    collapse all

    Import the package that contains all of the System Composer™ queries.

    import systemcomposer.query.*

    Open the Simulink® project file for the keyless entry system.


    Load the architecture model.

    model = systemcomposer.loadModel("KeylessEntryArchitecture");

    Create a query for all the interfaces in a port with KeyFOBPosition in the Name and run the query.

    constraint = HasPort(HasInterface(contains(Property("Name"),"KeyFOBPosition")));
    portInterfaces = find(model,constraint,Recurse=true,IncludeReferenceModels=true)
    portInterfaces = 9x1 cell
        {'KeylessEntryArchitecture/Engine Control System'                         }
        {'KeylessEntryArchitecture/Lighting System/Lighting Controller'           }
        {'KeylessEntryArchitecture/FOB Locater System'                            }
        {'KeylessEntryArchitecture/Sound System'                                  }
        {'KeylessEntryArchitecture/Sound System/Sound Controller'                 }
        {'KeylessEntryArchitecture/FOB Locater System/FOB Locater Module'         }
        {'KeylessEntryArchitecture/Engine Control System/Keyless Start Controller'}
        {'KeylessEntryArchitecture/Door Lock//Unlock System/Door Lock Controller' }
        {'KeylessEntryArchitecture/Door Lock//Unlock System'                      }

    Input Arguments

    collapse all

    Condition restricting the query, specified as a systemcomposer.query.Constraint object.

    Output Arguments

    collapse all

    Query, returned as a systemcomposer.query.Constraint object.

    More About

    collapse all


    TermDefinitionApplicationMore Information

    A view shows a customizable subset of elements in a model. Views can be filtered based on stereotypes or names of components, ports, and interfaces, along with the name, type, or units of an interface element. Create views by adding elements manually. Views create a simplified way to work with complex architectures by focusing on certain parts of the architectural design.

    You can use different types of views to represent the system. Switch between a component diagram, component hierarchy, or architecture hierarchy. For software architectures, you can switch to a class diagram view. A viewpoint represents a stakeholder perspective that specifies the contents of the view.

    element group

    An element group is a grouping of components in a view.

    Use element groups to programmatically populate a view.


    A query is a specification that describes certain constraints or criteria to be satisfied by model elements.

    Use queries to search elements with constraint criteria and to filter views.

    Find Elements in Model Using Queries
    component diagram

    A component diagram represents a view with components, ports, and connectors based on how the model is structured.

    Component diagrams allow you to programmatically or manually add and remove components from the view.

    Inspect Components in Custom Architecture Views
    hierarchy diagram

    You can visualize a hierarchy diagram as a view with components, ports, reference types, component stereotypes, and stereotype properties.

    There are two types of hierarchy diagrams:

    • Component hierarchy diagrams display components in tree form with parents above children. In a component hierarchy view, each referenced model is represented as many times as it is used.

    • Architecture hierarchy diagrams display unique component architecture types and their relationships using composition connections. In an architecture hierarchy view, each referenced model is represented only once.

    Display Component Hierarchy and Architecture Hierarchy Using Views

    Version History

    Introduced in R2019b