Abstract sets of items
July 22nd, 2005 by Andi VajdaA new type of value was added to the data model that combines sets of items using set arithmetic. Abstract sets of items do not store any item references but evaluate their operator against the sets or collections they wrap to implement appartenance tests and iteration. In addition, abstract sets notify their owner item whenever an item is added or removed from a backing collection.
Because it doesn’t actually store any items, an abstract set is considered to be a regular ‘literal’ value owned by an attribute on an item, expressed by the set owner tuple
(item, attribute).
An abstract set is constructed around other sets and ultimately around concrete item sets, that is, ref collections. An abstract set can be nested in another set by value (same set owners) or by reference (different set owners).For example, the Chandler content model item collection is defined as the combination of three ref collections: results, inclusions and exclusions. Let
ic be an ItemCollection item, a functionally equivalent set can be constructed as follows:
Difference(Union((ic, 'results'), (ic, 'inclusions')), (ic, 'exclusions'))
The outer set – the difference – wraps the inner set – the union – by value and the ‘exclusions’ ref collection by reference. The inner set wraps the ‘results’ and ‘inclusions’ ref collections by reference as well.
The outer set can then be stored in an attribute on an item, which becomes its owner. From that point on, whenever an item is added to or removed from any of the concrete collections backing the set, a notification is sent to its owner item by invoking its collectionChanged() method. As a notification travels up the set tree from its source, it is evaluated against the node’s operator and is either discarded, inverted or passed on.For example, in the above set, if an item is added to
ic.results and it already belongs to ic.inclusions, the corresponding ‘add’ notification is discarded. Similarly, if an item is added to ic.exclusions and it belongs to the union, the corresponding ‘add’ notification is changed into a ‘remove’ notification.
As with ref collections, one or more indexes can be added to abstract sets so that they can be iterated over in a particular order or so that item references can be retrieved by a numeric location.
All abstract set implementations are located in therepository.item.Sets module:
- Union, wraps two sets or collections and represents the set of items that belong to one or the other, inclusively.
- Intersection, wraps two sets or collections and represents the set of items that belong to both.
- Difference, wraps two sets or collections and represents the set of items that belong to the first but not to the second.
- KindSet, wraps no set or collection but represents the set of all items of a given kind, exactly or recursively. Whenever an item is created, deleted or stamped to that kind, the corresponding ‘add’ or ‘remove’ notification is sent to the owner item’s collectionChanged() method.
- FilterSet, wraps another set or collection and represents the set of all the items of that set that pass the filter test.
free viagra
buy viagra online
generic viagra
how does viagra work
cheap viagra
buy viagra
buy viagra online inurl
viagra 6 free samples
viagra online
viagra for women
viagra side effects
female viagra
natural viagra
online viagra
cheapest viagra prices
herbal viagra
alternative to viagra
buy generic viagra
purchase viagra online
free viagra without prescription
viagra attorneys
free viagra samples before buying
buy generic viagra cheap
viagra uk
generic viagra online
try viagra for free
generic viagra from india
fda approves viagra
free viagra sample
what is better viagra or levitra
discount generic viagra online
viagra cialis levitra
viagra dosage
viagra cheap
viagra on line
best price for viagra
free sample pack of viagra
viagra generic
viagra without prescription
discount viagra
gay viagra
mail order viagra
viagra inurl
generic viagra online paypal
generic viagra overnight
generic viagra online pharmacy
generic viagra uk
buy cheap viagra online uk
suppliers of viagra
how long does viagra last
viagra sex
generic viagra soft tabs
generic viagra 100mg
buy viagra onli
generic viagra online without prescription
viagra energy drink
cheapest uk supplier viagra
viagra cialis
generic viagra safe
viagra professional
viagra sales
viagra free trial pack
viagra lawyers
over the counter viagra
best price for generic viagra
viagra jokes
buying viagra
viagra samples
viagra sample
cialis
generic cialis
cheapest cialis
buy cialis online
buying generic cialis
cialis for order
what are the side effects of cialis
buy generic cialis
what is the generic name for cialis
cheap cialis
cialis online
buy cialis
cialis side effects
how long does cialis last
cialis forum
cialis lawyer ohio
cialis attorneys
cialis attorney columbus
cialis injury lawyer ohio
cialis injury attorney ohio
cialis injury lawyer columbus
prices cialis
cialis lawyers
viagra cialis levitra
cialis lawyer columbus
online generic cialis
daily cialis
cialis injury attorney columbus
cialis attorney ohio
cialis cost
cialis professional
cialis super active
how does cialis work
what does cialis look like
cialis drug
viagra cialis
cialis to buy new zealand
cialis without prescription
free cialis
cialis soft tabs
discount cialis
cialis generic
generic cialis from india
cheap cialis sale online
cialis daily
cialis reviews
cialis generico
how can i take cialis
cheap cialis si
cialis vs viagra
levitra
generic levitra
levitra attorneys
what is better viagra or levitra
viagra cialis levitra
levitra side effects
buy levitra
levitra online
levitra dangers
how does levitra work
levitra lawyers
what is the difference between levitra and viagra
levitra versus viagra
which works better viagra or levitra
buy levitra and overnight shipping
levitra vs viagra
canidan pharmacies levitra
how long does levitra last
viagra cialis levitra
levitra acheter
comprare levitra
levitra ohne rezept
levitra 20mg
levitra senza ricetta
cheapest generic levitra
levitra compra
cheap levitra
levitra overnight
levitra generika
levitra kaufen
