As I understand a property with a reference
can have additional filters in the form of where
rules, for example:
'Blue EV passenger car': text -> .'Vehicles'[]
where '4 Wheels' ~> .'Vehicles'[] .'Number of wheels'?'Four'
where 'At least 4 seats' ~> .'Vehicles'[] .'Number of seats'?'Four or more'
where 'Blue' ~> .'Vehicles'[] .'Color'?'Blue'
where 'EV' ~> .'Vehicles'[] .'Kind of propulsion'?'Electric'
My question is on how these where
rules form the resulting data set. It seems the intersection of the data resulting from each rule determines the final data set, rather than the union. Is this correct?
If this is the case, then this would result in an empty set:
'Blue and red passenger cars': text -> .'Vehicles'[]
where '4 Wheels' ~> .'Vehicles'[] .'Number of wheels'?'Four'
where 'At least 4 seats' ~> .'Vehicles'[] .'Number of seats'?'Four or more'
where 'Blue' ~> .'Vehicles'[] .'Color'?'Blue'
where 'Red' ~> .'Vehicles'[] .'Color'?'Red'
… because a vehicle cannot be blue and red at the same time (at least, in this model; this would need a state 'Blue or red'
in stategroup 'Color'
)