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.