その(1)の続きです。
次に、Coreに関する内容を見ていきます。Coreは、Rootで定義されているElementやRelationshipを利用して、もう少し具体的な内容を定義します。

Coreで定義されている内容は、TypeとFeatureの2つでほぼ全てです。SysML 1.xで言えば、ブロックはTypeで、そのブロックが持つポートやプロパティはFeatureです。ただ、このKerMLではFeature自身もTypeであるという定義になっていて、このSysML 1.xでの対応付けではしっくりこない面があります。
TypeはFeatureを(複数)持ちますが、その持つ・持たれるの関係がFeatureMembershipです。このFeatureMembershipの属性directionはin, out, inoutであり、SysMLのブロックが持つポートでinやoutを指定することができる点と結びつけて考えると、分かりやすいかもしれません。SysML 1.xではブロックが持つポートはそのブロックにのみ所属する物でしたが、この仕様では、あるポートが、ブロックAでもブロックBでも利用され、ブロックAではin、ブロックBではout、みたいな形が定義できます。(SysML 1.xではこうした場合にはポートの型は共通だが、ポート自体は別々に定義され存在する)
私の理解ではこんな感じです。こういう関係にすることのメリットは、まだよく理解できていません。
多重度MultiplicityがFeatureの特化になっている点も何かのメリットがあると思うのですが、ここもまだよく理解できていません。(FeatureMembershipの属性として多重度を持っても良いと思う)
型Typeの継承であるGeneralizationや、共役を示すConjugationもRelationshipの特化として定義されていますが、ここは難しくないので詳細は割愛します。
Coreはあまり書くことがないので、以上です。その(3)に続きます。