W3C home > Mailing lists > Public > w3c-rdfcore-wg@w3.org > February 2002

Re: a theory of rdf:Bags

From: Pat Hayes <phayes@ai.uwf.edu>
Date: Mon, 18 Feb 2002 12:20:44 -0600
Message-Id: <p05101409b896f58154e6@[65.212.118.219]>
To: Dan Connolly <connolly@w3.org>
Cc: w3c-rdfcore-wg@w3.org
>The traditional meaning of 'bag' is:
>
>If
>	Bag(?x) and Bag(?y)
>and
>	forall ?z, count(?x, ?z) = count(?y, ?z)
>then
>	?x = ?y.
>
>We can't apply this directly to memebers
>of class rdf:Bag, because we would end up with
>the corrollary:
>
>	rdf:_1(?x) = rdf:_1(?y)
>	rdf:_2(?x) = rdf:_2(?y)
>	rdf:_3(?x) = rdf:_3(?y)
>
>and so on; this doesn't work out; for example,
>consider
>	?x = <Fred, Fred, Bob>
>	?y = <Bob, Fred, Fred>
>
>we'd end up with Fred = Bob, which isn't
>what we want.
>
>But consider an asRealBag property that relates
>rdf:Bag's to RealBag's; we start with an
>axiom that says there's exactly one for every
>rdf:Bag:
>
>	for all ?b, if type(?b, rdf:Bag)
>	then there exists ?b' where
>	asRealBag(?b, ?b') and type(?b', RealBag) and
>	forall ?x, if asRealBag(?b, ?x) then ?x = ?b'.
>
>in DAML+OIL terms, asRealBag has cardinality
>1 on class rdf:Bag.
>
>Then we define the membership of the real bag
>straightforwardly:
>
>	if bagMember(?b, ?b') then
>	forall ?x,
>	bagMember(?b', ?x) iff
>	exists ?cmp with
>	type(?cmp, rdfs:ContainterMembershipProperty)
>	and ?cmp(?b, ?x)
>
>Hmm... this is of limited utility, due
>to the "and that's all!" problem with
>rdf container syntax (i.e.
>rdfms-seq-representation). There's no
>way to tell that something is *not*
>in a bag. But maybe we'll fix that someday.

Or we could hack it in RDF now by saying that the RealBag ends where 
the special end marker is in the ordinary bag, and the rest is just, 
er, baggage.

>
>Anyway... then we'd say that for RealBags,
>
>If
>	RealBag(?x) and RealBag(?y)
>and
>	forall ?z, count(?x, ?z) = count(?y, ?z)
>then
>	?x = ?y.
>
>Now the RealBags can be in the universe
>of discourse (my preference)

Mine too.

>, or they can
>just be artifacts
>in the model theory (replace
>the asRealBag property with
>a BagEXT ala IEXT and CEXT).
>
>Anyway... that's my idea. I meant to write
>it down in RDF/n3, but I haven't gotten
>around to it. Maybe Jos will beat me to it. ;-)
>
>Is there code out there that behaves this
>way, does anybody know? would it be useful
>to specify it sorta like this? Or should
>we leave rdf:Bag as just a hint,
>ala rdf:Alt?

I think thats what we (ie the WG) should do. It leaves this (and 
other doors) open, but we don't have time to check that this is the 
One Best Way.

Pat
-- 
---------------------------------------------------------------------
IHMC					(850)434 8903   home
40 South Alcaniz St.			(850)202 4416   office
Pensacola,  FL 32501			(850)202 4440   fax
phayes@ai.uwf.edu 
http://www.coginst.uwf.edu/~phayes
Received on Monday, 18 February 2002 13:20:35 EST

This archive was generated by hypermail pre-2.1.9 : Wednesday, 3 September 2003 09:45:15 EDT