B.3.6 Example 3
The third example provides a more complex Query in which the results are filtered on multiple criteria.
Example 3: Get PersonType.LastName, AnimalType.Name, ScheduleType.Period where a person has a pet and the animal has a feeding schedule and the person has a Zipcode = ‘02138’ and (the Schedule.Period is Daily or Hourly) and Amount to feed is > 10.
Table B.16 describes the NodeTypeDescription parameters used in the example.
| Type Definition Node | Include Subtypes | QueryDataDescription | ||
|---|---|---|---|---|
| RelativePath | Attribute | Index Range | ||
| PersonType | FALSE | “12:LastName” | Value | N/A |
| “<12:HasPet>12:AnimalType. 12:Name” | Value | N/A | ||
| “<12:HasPet>12:AnimalType<12:HasSchedule> 12:FeedingSchedule.Period” | Value | N/A | ||
The corresponding ContentFilter is illustrated in Figure B.7.

Table B.17 describes the elements, operators and operands used in the example.
| Element[] | Operator | Operand[0] | Operand[1] | Operand[2] | Operand[3] |
|---|---|---|---|---|---|
| 0 | And | Element Operand= 1 | ElementOperand = 2 | ||
| 1 | And | ElementOperand = 4 | ElementOperand = 6 | ||
| 2 | And | ElementOperand = 3 | ElementOperand = 9 | ||
| 3 | Or | ElementOperand = 7 | ElementOperand = 8 | ||
| 4 | RelatedTo | AttributeOperand = NodeId: 12:PersonType, BrowsePath “.”, Attribute: NodeId | ElementOperand = 5 | AttributeOperand = NodeId: 12:HasPet, BrowsePath “.”, Attribute: NodeId | LiteralOperand = ‘1’ |
| 5 | RelatedTo | AttributeOperand = Node: 12:AnilmalType, BrowsePath “.”, Attribute: NodeId Alias: AT | AttributeOperand = NodeId: 12:FeedingScheduleType, BrowsePath “.”, Attribute: NodeId Alias: FST | AttributeOperand = NodeId: 12:HasSchedule, BrowsePath “.”, Attribute: NodeId | LiteralOperand = ‘1’ |
| 6 | Equals | AttributeOperand = NodeId: 12:PersonType BrowsePath 12:Zipcode “.”, Attribute: Value | LiteralOperand = ‘02138’ | ||
| 7 | Equals | AttributeOperand = NodeId: 12:PersonType BrowsePath “12:HasPet>12:AnimalType<12:HasSchedule>12: FeedingSchedule/12:Period”, Attribute: Value Alias: FST | LiteralOperand = ‘Daily’ | ||
| 8 | Equals | AttributeOperand = NodeId: 12:PersonType BrowsePath “12:HasPet>12:AnimalType<12:HasSchedule>12: FeedingSchedule/12:Period”, Attribute: Value Alias: FST | LiteralOperand = ‘Hourly’ | ||
| 9 | Greater Than | AttributeOperand = NodeId: 12:PersonType BrowsePath “12:HasPet>12:AnimalType<12:HasSchedule>12: FeedingSchedule/12:Amount”, Attribute: Value Alias: FST | ElementOperand = 10 | ||
| 10 | Cast | LiteralOperand = 10 | AttributeOperand = NodeId: Int32, BrowsePath “.”, Attribute: NodeId |
The results from this query would contain the QueryDataSets shown in Table B.18.
| NodeId | TypeDefinition NodeId | RelativePath | Value |
|---|---|---|---|
| 12:30 (JFamily1) | PersonType | “.12:LastName” | Jones |
| “<12:HasPet>12:PersonType. 12:Name” | Rosemary | ||
| Basil | |||
| “<12:HasPet>12:AnimalType<12:HasSchedule>12:FeedingSchedule. 12:Period” | Hourly | ||
| Daily |