[glue-wg] Capacity representation
Paul Millar
paul.millar at desy.de
Thu Apr 10 05:32:28 CDT 2008
Hi Stephen,
On Thursday 10 April 2008 00:32:47 Burke, S (Stephen) wrote:
> Paul Millar [mailto:paul.millar at desy.de] said:
> > As a counter-example, the same is true for the CE-SE-Bind (in
> > whatever form it might take). This leads no independent existence from
> > the CE and SE it connects, yet is represented as an object.
>
> I'll reply to the rest tomorrow, but just on this since I thought of
> another example: consider a coffee mug. That has a handle, and in
> principle I could consider it as a separate object (I could break it
> off), although for any practical purpose it's only useful when attached
> to the mug. Now consider that the mug has a capacity (I can put 300 ml
> of coffee in it). In that case it clearly makes no sense to consider the
> capacity as having an independent existence of any kind, there's no way
> to detach it from the mug. ("I've often seen a cat without a grin,"
> thought Alice; "but a grin without a cat! It's the most curious thing I
> ever saw in all my life!")
I think this illustrates our different points of view. If I may summarise
your position (please correct me if I'm wrong), you see object classes as
necessarily being something concrete---something you can (in principle) hold
in your hand (e.g. a cup), or that you could separate and similarly hold in
your hand. From your point-of-view, a smile cannot be held in a hand, so
necessarily cannot be an object.
If so, I see I have a different point-of-view. For me, an object class is any
well-defined logical concept defined only by its relationships with other
object classes and the attributes it may have (there are probably some
stronger statements one can make).
An object class may (or might not) have an independent life from other
logically defined concepts. For example, a smile, whilst having no
independent life from the mouth it describes, is still a pretty well defined
concept in most peoples heads. For example:
http://images.google.co.uk/images?um=1&hl=en&q=smile&btnG=Search+Images
or, perhaps better results with ESP:
http://www.captcha.net/esp-search.html
In a "hand wavy" way, the fact that Google or ESP can find a bunch of images
that people can identify something that's the same ("yep, they're all
smiling") suggests that there is some common concept that they all have.
There are then two questions:
a. do we want to model this common feature?
b. how do we best model this feature?
If the answer to a. is "yes", then the question is how best to model it. If
there is no metadata associated with the concept (someone is either smiling
or they're not), then it could be as an attribute or an attribute value in an
enumeration. For example:
Face:
smiling <boolean> := true {or false}
or
Face:
mouth-posture <open enumeration> := smiling {or shocked, upset, ...}
If there is metadata to be recorded and we want to keep this as an attribute,
then this metadata must either be encoded within the attribute value
(embedding the metadata within the name) or be encoded as associated
attributes; either:
Face:
mouth-posture <open enumeration> := smiling-smirk, smiling-broad,
smiling-faint, ...
or
Face:
mouth-posture <open enumeration> := smiling
smiling-type <open enumeration> := smirk {or broad, faint, ...}
respectively. (There may be other ways of recording the information as
attributes, but I can't think of them just now.)
Neither of these solutions is very satisfactory, as it requires the client to
understand the additional semantics; e.g., if you see "smiling-", split at
the "-" and treat the second part as a type value; or, if you see "smiling"
look for the smiling-type attribute, ignore it otherwise.
I would say that the natural solution is to express the information as a new
object class, subclassing from a generic type, with the attributes you need
to record.
Face:
mouth-posture <mouthPostureType> := smileMouth
smileMouth extends mouthPostureType:
smiling-type <open enumeration> := smirk {or broad, faint, ...}
The same information is recorded, but here the structure is made explicit.
One of the goals of modelling is to make community knowledge explicit, so
writing clients that consume this information is easy. This is how I see the
transition from Glue-1.3 to Glue-2.0: GLUE-2.0 should (if feasible) make
explicit what was previously implicit knowledge (such as, custodial-online,
means D1T1, means guaranteed to be stored on disk and tape).
> Similarly with the MappingPolicy: if the mug belongs to me that's an
> access rule, and although other things may belong to me the specific
> "instance" of belonging that applies to the mug is not transferrable or
> shareable
OK, counter example. When you buy the mug at the shop, they give you a till
receipt (typically). That receipt proves that you've bought the mug in the
store. If you are challenged whilst leaving the shop, you can produce the
receipt, proving you've bought that mug. So the receipt is a concrete object
that represents your ownership of that mug.
Your ownership is transferable (you give the receipt and mug to someone else
whilst in the shop, they walk out with the mug) and sharable (a group of
people all club together to pay for the mug, they sign a document saying they
have part-share of the ownership, the two documents are stabled together).
> if I own two mugs and give one away it doesn't affect the
> other one
True, no one suggests that it is should affect the other.
> (rules and capacities may be equal but that doesn't make them
> identical).
True, again no one is suggesting that two objects with equal properties are
the same thing.
> In the case of the CESEBind there is something real underneath, some
> kind of network connection and/or firewall rules and/or policies about
> which protocols are allowed where.
(I fear you're grasping at straws here ;-) Network infrastructure (networks,
routers, firewalls, etc...) connects everything together, this isn't special
about CEs and SEs that they require network connectivity.
> It might well be pointless to publish
> [network/firewall/policies] without relating it to a CE and an SE, but not
> nonsensical (indeed in principle it's interesting to know it for a UI).
Yes, indeed. In effect the CE-SE bind is some summary information, giving a
brief describion of the "connectivity" between a CE and an SE. It summaries
the network topology, configuration and policies that would be (potentially)
too complex to represent explicitly.
But, going back to your original point: I can't hold a CE-SE bind in my hand,
but I can hold a network cable in my hand, likewise a switch, router (if not
too heavy). If I followed your argument to its logical conclusion (and if I
understand it correctly), I should replace CE-SE bind objects with a
description of the networking (routers, switches, cabling) and allow jobs to
deduce which SE they should use.
> For that matter you could say the same about e.g. the AccessProtocol:
> we wouldn't publish one independently of an SE, and indeed we can't
> because it only has a LocalID. Nevertheless it does deserve to be an
> object and not just an attribute of something else because it describes
> a discrete part of the SE, much like the handle of a mug.
OK, I accept the analogy: comparing an AccessProtocol to a handle of a mug
(more or less) works, although there's a few questions about the similarity
of snapping off the handle vs. "detaching" an AccessProtocol.
But, this then leads to the question: what is it about the handle of a mug
that means you're happy describing it with an object?
Sorry for the noise, but I don't understand!
Cheers,
Paul.
More information about the glue-wg
mailing list