Add custom relationships between resources (MDP)
As you add resources in the system, it is important to establish how they are related to each other to make the data more usable. The system allows out-of-the-box relationships between certain resources and also allows you to extend and build these relationships using the MDP.
Why would I do this?
Use the MDP to add custom relationships between resources that are not related out-of-the-box. Use the following guidelines to plan custom relationships between the resources.
Identify the resources you want to relate.
Identify if the relationship is bi-directional.
Identify the title of the section for displaying the relationship.
Identify if you need custom relationship type.
After completing Steps 1-6 in this section, you will see following options on the UI:
Establish a custom relationship type for the two resources.
Note
The tasks in this section assume that you have already added the following custom business glossary subtypes in your organization - Metrics, Acronym, Reference codes, and Data attributes.
STEP 1: Add the relationship section
Use the following syntax to specify the relationship section on the resource page.
:RelationshipSection rdf:type dwec:RelationshipSection ; rdfs:label "Relationship Section" ; dwec:inMetadataProfile :MetadataProfileDefault ; .
STEP 2: Define the relationship presentation to display in the section
Use the following syntax to define which two resource are you defining the relationship for. In this case we are defining a relationship between the two glossary sub types - Acronym and Metric and we are saying that Acronym is related to Metrics.
To make this relationship available as a Facet on search pages, make sure to set a label for the relationship (rdfs:label) and make the relationship facetable using rdf:type dwec:Facetable.
:AcronymToMetric rdf:type dwec:RelationshipPresentation ; dwec:inRelationshipSection :RelationshipSection ; # To enable faceting for search: rdfs:label "Metrics" ; rdf:type dwec:Facetable ; . :AcronymToMetric dwec:forType :Acronym ; . :AcronymToMetric dwec:forTargetType :Metric ; . :AcronymToMetric dwec:forRelationshipType dwec:related ; .
STEP 3: Customize the header for the relationship section
Customize the title of the relationship section. In this particular example, we are defining Acronym is referenced by Metric.
:AcronymToMetric dwec:relationshipTerm [ rdf:type dwec:RelationshipTerm ; rdfs:label "is referenced by" ; label:plural "are referenced by" ; ] ; dwec:resourceTerm [ rdf:type dwec:ResourceTerm ; rdfs:label "Metric" ; label:plural "Metrics" ; ] ; . # ---
STEP 5: Make the relationship bi-directional
Use the following syntax to make it a bi-directional relationship. Here we are defining that the Acronym can be referenced by the Metric.
Important
Note that inverse relationships (dwec:inversePath) cannot be made available as Facets on search pages. Only a forward relationship can be facetable.
:MetricToAcronym rdf:type dwec:RelationshipPresentation ; dwec:inRelationshipSection :RelationshipSection ; dwec:forType :Metric ; dwec:forTargetType :Acronym ; #Note this in inverse relationship (dwec:inversePath) and cannot be set as a Facet on search page. dwec:forRelationshipType [ dwec:inversePath dwec:related ] ; dwec:relationshipTerm [ rdf:type dwec:RelationshipTerm ; rdfs:label "references" ; label:plural "reference" ; ] ; dwec:resourceTerm [ rdf:type dwec:ResourceTerm ; rdfs:label "Acronym" ; label:plural "Acronyms" ; ] ; .
STEP 6: Use the following syntax to add a custom relationship type
This is how it shows in the UI.
:MetricToAcronymCustom rdf:type dwec:RelationshipPresentation ; dwec:inRelationshipSection :RelationshipSection ; dwec:forType :Metric ; dwec:forTargetType :Acronym ; dwec:forRelationshipType :custom ; dwec:relationshipTerm [ rdf:type dwec:RelationshipTerm ; rdfs:label "custom relates" ; label:plural "custom relate" ; ] ; dwec:resourceTerm [ rdf:type dwec:ResourceTerm ; rdfs:label "Acronym" ; label:plural "Acronyms" ; ] ; . :custom a owl:ObjectProperty .
Sample syntax for adding second relationship
Use the following syntax to build a relationship between two more glossary sub types - Reference codes and Data attributes
We will make this a single direction relation only. ie. from Data attribute page you will be able to relate to Reference codes, but from Reference code page you will not be able to relate to Data attributes.
:DataAttributeToReferenceCode rdf:type dwec:RelationshipPresentation ; dwec:inRelationshipSection :RelationshipSection ; . :DataAttributeToReferenceCode dwec:forType :DataAttribute ; . :DataAttributeToReferenceCode dwec:forTargetType :ReferenceCode ; . :DataAttributeToReferenceCode dwec:forRelationshipType dwec:related ; . :DataAttributeToReferenceCode dwec:relationshipTerm [ rdf:type dwec:RelationshipTerm ; rdfs:label "is referenced by" ; label:plural "are referenced by" ; ] ; dwec:resourceTerm [ rdf:type dwec:ResourceTerm ; rdfs:label "Reference Code" ; label:plural "Reference Codes" ; ] ; .
Sample syntax for relating Metrics and Reference codes.
# And now specify a new `dwec:RelationshipPresentation` in that section. :MetricToReferenceCode rdf:type dwec:RelationshipPresentation ; dwec:inRelationshipSection :RelationshipSection ; . :MetricToReferenceCode dwec:forType :Metric ; . :MetricToReferenceCode dwec:forTargetType :ReferenceCode ; . :MetricToReferenceCode dwec:forRelationshipType dwec:related ; . :MetricToReferenceCode dwec:relationshipTerm [ rdf:type dwec:RelationshipTerm ; rdfs:label "is so referenced by" ; label:plural "are so referenced by" ; ] ; dwec:resourceTerm [ rdf:type dwec:ResourceTerm ; rdfs:label "Reference Code" ; label:plural "Reference Codes" ; ] ; .
Complete syntax for both relationships
The following is the complete syntax for adding both custom relationship sections.
# Sample sytax for first relationship :RelationshipSection rdf:type dwec:RelationshipSection ; rdfs:label "Relationship Section" ; dwec:inMetadataProfile :MetadataProfileDefault ; . :AcronymToMetric rdf:type dwec:RelationshipPresentation ; dwec:inRelationshipSection :RelationshipSection ; # To enable faceting for search: rdfs:label "Metrics" ; rdf:type dwec:Facetable ; . :AcronymToMetric dwec:forType :Acronym ; . :AcronymToMetric dwec:forTargetType :Metric ; . :AcronymToMetric dwec:forRelationshipType dwec:related ; . :AcronymToMetric dwec:relationshipTerm [ rdf:type dwec:RelationshipTerm ; rdfs:label "is referenced by" ; label:plural "are referenced by" ; ] ; dwec:resourceTerm [ rdf:type dwec:ResourceTerm ; rdfs:label "Metric" ; label:plural "Metrics" ; ] ; . :MetricToAcronym rdf:type dwec:RelationshipPresentation ; dwec:inRelationshipSection :RelationshipSection ; dwec:forType :Metric ; dwec:forTargetType :Acronym ; dwec:forRelationshipType [ dwec:inversePath dwec:related ] ; dwec:relationshipTerm [ rdf:type dwec:RelationshipTerm ; rdfs:label "references" ; label:plural "reference" ; ] ; dwec:resourceTerm [ rdf:type dwec:ResourceTerm ; rdfs:label "Acronym" ; label:plural "Acronyms" ; ] ; . :custom a owl:ObjectProperty . :MetricToAcronymCustom rdf:type dwec:RelationshipPresentation ; dwec:inRelationshipSection :RelationshipSection ; dwec:forType :Metric ; dwec:forTargetType :Acronym ; dwec:forRelationshipType :custom ; dwec:relationshipTerm [ rdf:type dwec:RelationshipTerm ; rdfs:label "custom relates" ; label:plural "custom relate" ; ] ; dwec:resourceTerm [ rdf:type dwec:ResourceTerm ; rdfs:label "Acronym" ; label:plural "Acronyms" ; ] ; . # Sample syntax for second relationship. :DataAttributeToReferenceCode rdf:type dwec:RelationshipPresentation ; dwec:inRelationshipSection :RelationshipSection ; . :DataAttributeToReferenceCode dwec:forType :DataAttribute ; . :DataAttributeToReferenceCode dwec:forTargetType :ReferenceCode ; . :DataAttributeToReferenceCode dwec:forRelationshipType dwec:related ; . :DataAttributeToReferenceCode dwec:relationshipTerm [ rdf:type dwec:RelationshipTerm ; rdfs:label "is referenced by" ; label:plural "are referenced by" ; ] ; dwec:resourceTerm [ rdf:type dwec:ResourceTerm ; rdfs:label "Reference Code" ; label:plural "Reference Codes" ; ] ; .
Sample syntax for relating custom resources with a glossary subtype
Use the following syntax to establish a relationship between the custom resource - Bank accounts you added earlier with the glossary subtype - Reference codes.
:BankAccountsToReferenceCode rdf:type dwec:RelationshipPresentation ; dwec:inRelationshipSection :RelationshipSection ; . :BankAccountsToReferenceCode dwec:forType :BankAccounts ; . :BankAccountsToReferenceCode dwec:forTargetType :ReferenceCode ; . :BankAccountsToReferenceCode dwec:forRelationshipType dwec:related ; . :BankAccountsToReferenceCode dwec:relationshipTerm [ rdf:type dwec:RelationshipTerm ; rdfs:label "is referenced by" ; label:plural "are referenced by" ; ] ; dwec:resourceTerm [ rdf:type dwec:ResourceTerm ; rdfs:label "Reference Code" ; label:plural "Reference Codes" ; ] ; .