The CALDAV spec has a yes/no option rather than boolean. A CALDAV spec extension to allow AND/OR in filters A type used by a number of filter elements. The CALDAV:allcomp XML element can be used when the client wants all types of components returned by a calendaring REPORT request. The CALDAV:allprop XML element can be used when the client wants all properties of components returned by a calendaring REPORT request. The "name" attribute specifies the name of the calendar property to return (e.g., ATTENDEE). The "novalue" attribute can be used by clients to request that the actual value of the property not be returned (if the "novalue" attribute is set to "yes"). In that case, the server will return just the iCalendar property name and any iCalendar parameters and a trailing ":" without the subsequent value data. The name value is a calendar component name (e.g., VEVENT). The CALDAV:expand XML element specifies that for a given calendaring REPORT request, the server MUST expand the recurrence set into calendar components that define exactly one recurrence instance, and MUST return only those whose scheduled time intersect a specified time range. The "start" attribute specifies the inclusive start of the time range, and the "end" attribute specifies the non-inclusive end of the time range. Both attributes are specified as date with UTC time value. The value of the "end" attribute MUST be greater than the value of the "start" attribute. The server MUST use the same logic as defined for CALDAV:time- range to determine if a recurrence instance intersects the specified time range. Recurring components, other than the initial instance, MUST include a RECURRENCE-ID property indicating which instance they refer to. The returned calendar components MUST NOT use recurrence properties (i.e., EXDATE, EXRULE, RDATE, and RRULE) and MUST NOT have reference to or include VTIMEZONE components. Date and local time with reference to time zone information MUST be converted into date with UTC time. The CALDAV:limit-recurrence-set XML element specifies that for a given calendaring REPORT request, the server MUST return, in addition to the "master component", only the "overridden components" that impact a specified time range. An overridden component impacts a time range if its current start and end times overlap the time range, or if the original start and end times - the ones that would have been used if the instance were not overridden - overlap the time range. The "start" attribute specifies the inclusive start of the time range, and the "end" attribute specifies the non-inclusive end of the time range. Both attributes are specified as date with UTC time value. The value of the "end" attribute MUST be greater than the value of the "start" attribute. The server MUST use the same logic as defined for CALDAV:time- range to determine if the current or original scheduled time of an "overridden" recurrence instance intersects the specified time range. Overridden components that have a RANGE parameter on their RECURRENCE-ID property may specify one or more instances in the recurrence set, and some of those instances may fall within the specified time range or may have originally fallen within the specified time range prior to being overridden. If that is the case, the overridden component MUST be included in the results, as it has a direct impact on the interpretation of instances within the specified time range. The CALDAV:limit-freebusy-set XML element specifies that for a given calendaring REPORT request, the server MUST only return the FREEBUSY property values of a VFREEBUSY component that intersects a specified time range. The "start" attribute specifies the inclusive start of the time range, and the "end" attribute specifies the non-inclusive end of the time range. Both attributes are specified as "date with UTC time" value. The value of the "end" attribute MUST be greater than the value of the "start" attribute. The server MUST use the same logic as defined for CALDAV:time- range to determine if a FREEBUSY property value intersects the specified time range. When nested in the CALDAV:supported-calendar-data property, the CALDAV:calendar-data XML element specifies a media type supported by the CalDAV server for calendar object resources. When used in a calendaring REPORT request, the CALDAV:calendar- data XML element specifies which parts of calendar object resources need to be returned in the response. If the CALDAV: calendar-data XML element doesn't contain any CALDAV:comp element, calendar object resources will be returned in their entirety. Finally, when used in a calendaring REPORT response, the CALDAV: calendar-data XML element specifies the content of a calendar object resource. Given that XML parsers normalize the two- character sequence CRLF (US-ASCII decimal 13 and US-ASCII decimal 10) to a single LF character (US-ASCII decimal 10), the CR character (US-ASCII decimal 13) MAY be omitted in calendar object resources specified in the CALDAV:calendar-data XML element. Furthermore, calendar object resources specified in the CALDAV: calendar-data XML element MAY be invalid per their media type specification if the CALDAV:calendar-data XML element part of the calendaring REPORT request did not specify required properties (e.g., UID, DTSTAMP, etc.), or specified a CALDAV:prop XML element with the "novalue" attribute set to "yes". NOTE: This schema type only applies to calendar-data used in CalDAV calendar-query requests. The response - with String content is not covered here as it requires mixed content. The CALDAV:text-match XML element specifies text used for a substring match against the property or parameter value specified in a calendaring REPORT request. The "collation" attribute is used to select the collation that the server MUST use for character string matching. In the absence of this attribute, the server MUST use the "i;ascii-casemap" collation. The "negate-condition" attribute is used to indicate that this test returns a match if the text matches when the attribute value is set to "no", or return a match if the text does not match, if the attribute value is set to "yes". For example, this can be used to match components with a STATUS property not set to CANCELLED. The CALDAV:is-not-defined XML element specifies that a match occurs if the enclosing component, property, or parameter value specified in a calendaring REPORT request does not exist in the calendar data being tested. The CALDAV:timezone XML element specifies that for a given calendaring REPORT request, the server MUST rely on the specified VTIMEZONE component instead of the CALDAV:calendar- timezone property of the calendar collection, in which the calendar object resource is contained to resolve "date" values and "date with local time" values (i.e., floating time) to "date with UTC time" values. The server will require this information to determine if a calendar component scheduled with "date" values or "date with local time" values intersects a CALDAV:time-range specified in a CALDAV:calendar-query REPORT. Note: The iCalendar data embedded within the CALDAV:timezone XML element MUST follow the standard XML character data encoding rules, including use of <, >, & etc. entity encoding or the use of a construct. In the later case, the iCalendar data cannot contain the character sequence ']' + ']' + '>', which is the end delimiter for the CDATA section. The CALDAV:timezone-id XML element specifies that for a given calendaring REPORT request, the server MUST rely on the specified timezone instead of the CALDAV:calendar-timezone property of the calendar collection, in which the calendar object resource is contained to resolve "date" values and "date with local time" values (i.e., floating time) to "date with UTC time" values. The server will require this information to determine if a calendar component scheduled with "date" values or "date with local time" values intersects a CALDAV:time-range specified in a CALDAV:calendar-query REPORT. The CALDAV:time-range XML element specifies that for a given calendaring REPORT request, the server MUST only return the calendar object resources that, depending on the context, have a component or property whose value intersects a specified time range. The "start" attribute specifies the inclusive start of the time range, and the "end" attribute specifies the non-inclusive end of the time range. Both attributes MUST be specified as "date with UTC time" value. Time ranges open at one end can be specified by including only one attribute; however, at least one attribute MUST always be present in the CALDAV:time-range element. If either the "start" or "end" attribute is not specified in the CALDAV:time- range XML element, assume "-infinity" and "+infinity" as their value, respectively. If both "start" and "end" are present, the value of the "end" attribute MUST be greater than the value of the "start" attribute. The CALDAV:param-filter XML element specifies a query targeted at a specific calendar property parameter (e.g., PARTSTAT) in the scope of the calendar property on which it is defined. A calendar property parameter is said to match a CALDAV: param-filter if: * The CALDAV:param-filter XML element is empty and a parameter of the type specified by the "name" attribute exists on the calendar property being examined; or: * The CALDAV:param-filter XML element contains a CALDAV:is-not- defined XML element and no parameter of the type specified by the "name" attribute exists on the calendar property being examined; The CALDAV:prop-filter XML element specifies a query targeted at a specific calendar property (e.g., CATEGORIES) in the scope of the enclosing calendar component. A calendar property is said to match a CALDAV:prop-filter if: * The CALDAV:prop-filter XML element is empty and a property of the type specified by the "name" attribute exists in the enclosing calendar component; or: * The CALDAV:prop-filter XML element contains a CALDAV:is-not- defined XML element and no property of the type specified by the "name" attribute exists in the enclosing calendar component; or: * The CALDAV:prop-filter XML element contains a CALDAV:time-range XML element and the property value overlaps the specified time range, and all specified CALDAV:param-filter child XML elements also match the targeted property; or: * The CALDAV:prop-filter XML element contains a CALDAV:text-match XML element and the property value matches it, and all specified CALDAV:param-filter child XML elements also match the targeted property; The CALDAV:comp-filter XML element specifies a query targeted at the calendar object (i.e., VCALENDAR) or at a specific calendar component type (e.g., VEVENT). The scope of the CALDAV:comp-filter XML element is the calendar object when used as a child of the CALDAV:filter XML element. The scope of the CALDAV:comp-filter XML element is the enclosing calendar component when used as a child of another CALDAV:comp-filter XML element. A CALDAV:comp-filter is said to match if: * The CALDAV:comp-filter XML element is empty and the calendar object or calendar component type specified by the "name" attribute exists in the current scope; or: * The CALDAV:comp-filter XML element contains a CALDAV:is-not- defined XML element and the calendar object or calendar component type specified by the "name" attribute does not exist in the current scope; or: * The CALDAV:comp-filter XML element contains a CALDAV:time-range XML element and at least one recurrence instance in the targeted calendar component is scheduled to overlap the specified time range, and all specified CALDAV:prop-filter and CALDAV:comp-filter child XML elements also match the targeted calendar component; or: * The CALDAV:comp-filter XML element only contains CALDAV:prop- filter and CALDAV:comp-filter child XML elements that all match the targeted calendar component. The CALDAV:filter XML element specifies the search filter used to limit the calendar components returned by a calendaring REPORT request.