Relationship context: SELF SOURCE TARGET CAPABILITY Node context: SELF SELF, RELATIONSHIP, <requirement_name>, <index_of_out_rel_within_req> SELF, RELATIONSHIP, <requirement_name>, <index_of_out_rel_within_req>, TARGET SELF, RELATIONSHIP, <requirement_name>, <index_of_out_rel_within_req>, CAPABILITY SELF, CAPABILITY, <capability_name> SELF, CAPABILITY, <capability_name>, RELATIONSHIP, <index_of_inc_rel> SELF, CAPABILITY, <capability_name>, RELATIONSHIP, <index_of_inc_rel>, SOURCE If <idx> is a non-negative integer we traverse that particular idx. 0 is the first idx. If <idx> is * then we return the result for all possible indices, that is a list. Examples: nodex1, REQUIREMENT, req1, 0, TARGET, CAPABILITY, RELATIONSHIP, 0, SOURCE REQUIREMENT, req1, RELATIONSHIP, *, attr1 CAPABILITY, cap1, RELATIONSHIP, 1, attr1 In relationship types definitions: valid_capability_types replaces valid_target_types valid_target_node_types - new keyname valid_source_node_types - new keyname In capability definition: valid_source_types - keep valid_relationship_types - new Note: We do we allow several indirection levels in get_property / get_attribute