Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

When creating your own Blueriq own Blueriq as a Service (BaaS), it is possible to include a justification tree in your response to the caller of the webservice. This tree explains how a certain attribute was derived by the inference engine and provides the justification texts.

To do this, you need

...

the Custom Schema Element: AQ_

...

JustificationTreeV2, which is part of the BlueriqBasicModelling Library. Justification trees can be added to SOAP responses and REST responses. 


Adding a justification tree to the response of a REST webservice

Adding a justification tree to a REST message is straightforward: just add a custom schema element of type AQ_JustificationTreeV2 to the domain schema. 

The message in the response of the Blueriq webservice could look like this:

Code Block
javascript
javascript
{
    "Costs": 3000.0,
    "AQ_JustificationTreeV2": {
        "key": "Tax.AnnualAmount",
        "values": [
            {
                "type": "number",
                "value": 3000.0
            }
        ],
        "justification": [
            {
                "key": "AdditionalText",
                "value": "Additional Justification tax statement."
            },
            {
                "key": "Text",
                "value": "A car that is over 60k has a high annual tax."
            }
        ],
        "used_values": [
            {
                "key": "Car.ModelYear",
                "values": [
                    {
                        "type": "integer",
                        "value": 1993
                    }
                ],
                "justification": null
            },
            {
                "key": "Car.Value",
                "values": [
                    {
                        "type": "number",
                        "value": 70000.0
                    }
                ],
                "justification": null
            }
        ]
    }
}

Adding a justification tree to the response of a SOAP webservice

the AquimaLibrary. If you open this schema element, you find under the 'XSD' tab the following XSD:

Code Block
languagehtml/xml
titleXSD of AQ_JustificationTreeV2
collapsetrue
<?xml version="1.0" encoding="utf-8"?>
  <xs:schema
     targetNamespace="http://aquima.com/schemas/justificationTreejustification/12.0"
     xmlns="http://aquima.com/schemas/justificationTree/1.0"
     xmlns:xs="http://www.w3.org/2001/XMLSchema">
  
     <xs:element name="justificationTree">
         <xs:complexType>
            <xs:sequence>
               <xs:element ref="attribute" minOccurs="1" maxOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:sequence>element>
  <xs:element name="attribute" type="attributeType">
    <xs:attribute  </xs:complexType>  
   name="name" type="xs:string"/>
  </xs:element>
  <xs:complexType name="attributeType">
    <xs:sequence>
      <xs:element name="value" minOccurs="0" maxOccurs="attributeunbounded" type="attributeTypevalueType"/>
      <xs:element name="justifications" minOccurs="1" maxOccurs="1" type="justificationsType"/>
      <xs:complexType name="attributeType"element ref="attribute" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:sequence>complexType name="valueType">
    <xs:sequence>
      <xs:element name="valuetype" minOccurs="01" maxOccurs="unbounded1" type="xs:string"/>
          <xs:element name="justificationvalue" minOccurs="01" maxOccurs="1" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="justificationType">
    <xs:sequence>
      <xs:element refname="attributejustification" minOccurs="0" maxOccurs="unbounded" type="xs:string">
        <xs:attribute name="type" type="xs:string"/>
      </xs:element>
    </xs:sequence>
    </xs:complexType>
 </xs:schema>

You need to make this XSD part this XSD part of the response of your BaaSwebservice. The easiest way is to save the justification XSD in justification XSD in a separate file and use the <import> statement in your own XSDown XSD. After importing your WSDL/XSD with XSD with the justification tree in it, go to the Schema Set Editor corresponding Schema set and open the justification tree element.

Note

You have to make the justification XSD really part of your own WSDL/XSD. This means referring to it with an <import> statement and supplying this file together with your own WSDL during the import.

You will see the following window:

Image Removed
  1. Choose AQ_JustificationTree. If it is not in the list, there is probably something wrong with the namespaces in your XSD.
  2. Choose the name of the entity of which you want to justify an attribute
  3. The attribute you want to justify.
  4. If you want to use a different asset format, you can specify this here. The default is 'Text'.
Note

The context of the justification is the WSDL module. This means that no justification is given when using a data-mapping, as the value is not derived with logic, but the value is set by the mapping. To solve this, you can (1) work with only 1 module without datamapping; this can get messy with complicated WSDLs/applications; or (2) duplicate the logic in your WSDL module; by placing the logic in a parent module both modules can inherit from it.