connector-binary-specialization

Available in: KerML, SysML

This checks that nary connectors do not specialize Links::BinaryLink.

Specification

If a Connector has more than two connector_ends, then it must not specialize, directly or indirectly, the Association BinaryLink from the Kernel Semantic Library.

Example

This can be triggered by a nary connector specializing a binary connector as Links::BinaryLink specialization is inserted automatically:

connection a { end a; end b; }
connection c :> a {
    end a;
    end b;
    end c; // error
}

Or by specializing Links::BinaryLink explicitly:

connection d : Links::BinaryLink {
    end a;
    end b;
    end c; // error
}

Fix this by removing extraneous end features:

connection a { end a; end b; }
connection c :> a { end a; end b; } // ok
connection d : Links::BinaryLink { end a; end b; } // ok

Or specializing other nary associations:

connection a { end a; end b; end c; }
connection c :> a { end a; end b; end c; } // ok