AAI Edge Rule Enumerator Values
References
https://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html#valueOf(java.lang.String)
Source code: aai/aai-common/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums
Source code: aai/aai-common/aai-core/src/main/java/org/onap/aai/serialization/db
Example from documentation
Example | Equivalent Example |
---|---|
Example Edge Rule{
“from”: “tenant”,
“to”: “vserver”,
“label”: “owns”,
“direction”: “OUT”,
“multiplicity”: “One2Many”,
“contains-other-v”: “${direction}”,
“delete-other-v”: “NONE”,
“SVC-INFRA”: “!${direction}”,
“prevent-delete”: “${direction}”
} | Equivalent Edge Rule{
“from”: “vserver”,
“to”: “tenant”,
“label”: “owns”,
“direction”: “IN”,
“multiplicity”: “One2Many”,
“contains-other-v”: “!${direction}”,
“delete-other-v”: “NONE”,
“SVC-INFRA”: “${direction}”,
“prevent-delete”: “!${direction}”
} |
How to read in/out/directionHow to read "from"/"to" and "direction" in this case:
- the "in" node is "vserver"
- the "out" node is "tenant"
How to read the labelHow to read the "label" in this case:
- ("out" node) "label" ("in" node)
i.e. tenant "owns" vserver
How to read multiplicityHow to read "multiplicity" in this case:
- ("in" node) cardinality is "one"
- ("out" node) cardinality is "many"
i.e.
Each "tenant" has one "vserver"
Each "vserver" has many "tenants"
How to read contains-other-vHow to read "contains-other-v" in this case:
- fetching data for ("out" node) includes data for ("in" node)
i.e. fetching data for "tenant" includes data for "vserver"
How to read delete-other-vHow to read "delete-other-v" in this case:
- delete of ("out" node) includes does nothing to ("in" node)
i.e. delete of "tenant" includes does nothing to "vserver"
How to read SVC-INFRAHow to read "SVC-INFRA" in this case:
- when running edge-tag-query on ("in" node) traverse to ("out" node) and continue
i.e.
when running edge-tag-query on "vserver" traverse to "tenant" and continue
How to read prevent-deleteHow to read "prevent-delete" in this case:
- prevent delete of ("out" node) when related to ("in" node), allow delete of ("in" node)
i.e.
prevent delete of "tenant" when related to "vserver", allow delete of "vserver"
|
General Applicability
EdgeRules only apply to "relationship-list" relations in the schema, since the referenced object could be anything
EdgeRules do not apply to sub-component relations in the schema, since this is implicit and hard-coded behaviour
Field | Values | Notes |
---|---|---|
from | (literal string as entered in EdgeRule file) | Expected to match the "name" value of "xml-root-element" in OXM file. Note that the "from|to" pair is normalised in the code according to alphabetical order, so that "cousin pairs" with the "to|from" ordering in the EdgeRule are also grouped together, e.g.
Also note that the hyphens "-" are removed from the names before comparison, so the following would be equivalent:
|
to | (literal string as entered in EdgeRule file) | Expected to match the "name" value of "xml-root-element" in OXM file. Note that the "from|to" pair is normalised in the code according to alphabetical order, so that "cousin pairs" with the "to|from" ordering in the EdgeRule are also grouped together, e.g.
Also note that the hyphens "-" are removed from the names before comparison, so the following would be equivalent:
|
label | (literal string as entered in EdgeRule file) | By convention, appears to be one of:
|
direction |
| Based on and extended from https://tinkerpop.apache.org/javadocs/3.3.2/core/org/apache/tinkerpop/gremlin/structure/Direction.html Comparison is case-sensitive |
multiplicity |
| Comparison ignores case |
contains-other-v |
| This is an "edge property" that applies for traversal to the other vertex. Comparison is case-sensitive Note that "opposite" means:
|
delete-other-v |
| This is an "edge property" that applies for traversal to the other vertex. Comparison is case-sensitive Note that "opposite" means:
|
SVC-INFRA |
| This is an "edge property" that applies for traversal to the other vertex. Comparison is case-sensitive Note that "opposite" means:
|
prevent-delete |
| This is an "edge property" that applies for traversal to the other vertex. Comparison is case-sensitive Note that "opposite" means:
|
default |
| Default EdgeRule will apply when no other more specific rule applies ? Based on https://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html#valueOf(java.lang.String) Comparison ignores case |
description | (literal string as entered in EdgeRule file) | Optional for backwards compatibility with v12 and earlier (default value is empty string) The EdgeRule JSON format does not permit comments (presence of comments appears to make the parser skip entries in the file). |
Questions
Is there a way to find/remove the unused/redundant EdgeRules from the json file?
Is there any plan to simplify EdgeRules into an unambiguous canonical form (might be easier to read and write correctly)?
How does the "default" property actually work? In v13, there are 226 EdgeRules with 224 having default "true" and 2 having default "false".