Thomas Russ | 14 Dec 2005 17:55
Picon
Favicon

Re: failure with RANGE-MIN-CARDINALITY


On Dec 13, 2005, at 5:31 PM, Xingzhi Pan wrote:

> Hello,
> My assignment to RANGE-MIN-CARDINALITY is effectless:
> |= (defconcept Person)
>
> |c|PERSON
>
> |= (defrelation rel ((?p1 Person)(?p2 Person)))
>
> |r|REL
>
> |= (retrieve all ?x (RANGE-MIN-CARDINALITY rel Person ?x))
>
> Processing check-types agenda...
> There is 1 solution:
>   #1: ?X=0
>
> |= (assert (RANGE-MIN-CARDINALITY rel Person 1))
>
> |P|(= (RANGE-MIN-CARDINALITY REL PERSON) 1)
>
> |= (retrieve all ?x (RANGE-MIN-CARDINALITY rel Person ?x))
>
> There is 1 solution:
>   #1: ?X=0

This is a bug in the released version of PowerLoom.  It has been fixed
in newer versions, but we haven't yet had the time to put a release  
together.

In the meantime, you can achieve the effect you want by making the
assertion to the relation

   RANGE-CARDINALITY-LOWER-BOUND

instead:

   (assert (range-cardinality-lower-bound rel person 1))

Just to amplify on the modeling a little bit.  RANGE-MIN-CARDINALITY and
RANGE-MAX-CARDINALITY are functions and thus can only have a single  
value.
RANGE-CARDINALITY-LOWER-BOUND and RANGE-CARDINALITY-UPPER-BOUND are  
relations
and can have multiple assertions made about them.   Through inference  
they
influence the value of RANGE-MIN-CARDINALITY and RANGE-MAX-CARDINALITY,
which will take the greatest lower and least upper bound respectively.

By the way, I don't think you are getting the meaning that you
may be expecting from the assertion

   (assert (RANGE-MIN-CARDINALITY rel Person 1))

This says that the CONCEPT Person has at least one REL.  It does NOT
say that instances of Person have at least one REL, and since the
definition REL says it applies to instances of Person instead of
Concept, I don't think this is what you want.  I suspect that you
really want to have a rule like

   (assert (=> (person ?p) (range-cardinality-lower-bound rel ?p 1)))

which says all persons have at least 1 rel.  You can conveniently  
include
this rule in the definition of Person like:

(defconcept person (?p)
    :=>  (range-cardinality-lower-bound rel ?p 1))

>
> But RANGE-MAX-CARDINALITY DID work as I've expected. Anyone has ideas
> about this? Thanks a lot.
>
> --
> Pan Xingzhi
> _______________________________________________
> powerloom-forum mailing list
> powerloom-forum <at> isi.edu
> http://mailman.isi.edu/mailman/listinfo/powerloom-forum

Gmane