 |  |  | map-instances-on-space-instances |  |
map-instances-on-space-instances | | function
unit-classes-specifier
space-instances
&key pattern
filter-before
filter-after
use-marking
verbose | [Function]
|
Purpose
Apply a function once to each unit instance on
space instances, optionally selected by a
retrieval pattern.
Package :gbbopen
Module :gbbopen-core
Arguments and values
Detailed syntax
unit-classes-specifier ::= | t |
single-unit-class-specifier
| ( single-unit-class-specifier+) |
|
single-unit-class-specifier ::=
| atomic-unit-class |
( atomic-unit-class subclassing-specifier) |
|
atomic-unit-class ::= | unit-class |
unit-class-name |
|
subclassing-specifier ::=
| :plus-subclasses | :no-subclasses |
+ | = |
|
The shorthand +
subclasses specifier is equivalent to
:plus-subclasses
and =
to :no-subclasses
.
pattern ::=
| subpattern | t | :all |
|
subpattern ::=
| pattern-element | |
| (not subpattern) | |
| (and subpattern*) | |
| (or subpattern*) |
|
pattern-element ::= | ( pattern-op dimension-names
pattern-values option*) | |
| ( boolean-dimension-unary-pattern-op dimension-names
option*) |
|
pattern-op ::= | ordered-dimension-pattern-op | |
| enumerated-dimension-pattern-op | |
| boolean-dimension-binary-pattern-op |
|
ordered-dimension-pattern-op ::=
| ordered-dimension-any-numeric-value-pattern-op | |
| ordered-dimension-explicit-type-pattern-op |
|
ordered-dimension-explicit-type-pattern-op ::=
| ordered-dimension-fixnum-pattern-op | |
| ordered-dimension-short-float-pattern-op | |
| ordered-dimension-single-float-pattern-op | |
| ordered-dimension-double-float-pattern-op | |
| ordered-dimension-long-float-pattern-op | |
| ordered-dimension-pseudo-probability-pattern-op |
|
ordered-dimension-any-numeric-value-pattern-op ::=
| < | <= |
>= | > |
= | /= | |
| within | covers |
overlaps | |
| abuts |
starts | ends |
|
ordered-dimension-fixnum-pattern-op ::=
| <& | <=& |
>=& | >& |
=& | /=& | |
| within& | covers& |
overlaps& | |
| abuts& |
starts& | ends& |
|
ordered-dimension-short-float-pattern-op ::=
| <$& | <=$& |
>=$& | >$& |
=$& | /=$& | |
| within$& | covers$& |
overlaps$& | |
| abuts$& |
starts$& | ends$& |
|
ordered-dimension-single-float-pattern-op ::=
| <$ | <=$ |
>=$ | >$ |
=$ | /=$ | |
| within$ | covers$ |
overlaps$ | |
| abuts$ |
starts$ | ends$ |
|
ordered-dimension-double-float-pattern-op ::=
| <$$ | <=$$ |
>=$$ | >$$
| =$$ | /=$$ | |
| within$$ | covers$$ |
overlaps$$ | |
| abuts$$ |
starts$$ | ends$$ |
|
ordered-dimension-long-float-pattern-op ::=
| <$$$ | <=$$$ |
>=$$$ | >$$$ |
=$$$ | /=$$$ | |
| within$$$ | covers$$$ |
overlaps$$$ | |
| abuts$$$ |
starts$$$ | ends$$$ |
|
ordered-dimension-pseudo-probability-pattern-op ::=
| <% | <=% |
>=% | >% |
=% | /=% | |
| within% | covers% |
overlaps% | |
| abuts% | starts% | ends% |
|
enumerated-dimension-pattern-op ::=
| is | enumerated-dimension-explicit-test-pattern-op |
|
enumerated-dimension-explicit-test-pattern-op ::=
| is-eq | is-eql | is-equal |
is-equalp |
|
boolean-dimension-binary-pattern-op ::=
| eqv |
|
boolean-dimension-unary-pattern-op ::=
| true | false |
|
dimension-names ::= | dimension-name |
( dimension-name+) |
|
pattern-values ::=
| pattern-value | |
| ( pattern-value+) | |
| ( pattern-value+ .
pattern-value) | |
| #( pattern-value+) |
|
pattern-value ::=
| point | interval |
element | set |
|
interval ::= | ( start end) |
( start . end) |
#( start end) |
|
Terms
point
| | A number, infinity , or -infinity |
start | | A number or -infinity |
end | | A number or infinity |
element | | An object |
|
Description
The function will be applied only once to each
unit instance, even if the unit instance resides on
multiple space instances.
The pattern t
matches all unit instances whose
dimension values overlap the dimensional extent of at least
one space instance in space-instances. The
pattern :all
matches every unit instance on a
space instance in space-instances, regardless of
dimensional overlap.
Declared numeric and pseudo
probability pattern operators are also supported, for example:
=&
, =$&
, =$
, =$$
, =$$$
, and
=%
and within&
, within$&
,
within$
, within$$
, within$$$
,
and within%
.
See also
*find-verbose*
*use-marking*
*warn-about-unusual-requests*
do-instances-of-class
do-instances-on-space-instances
find-instances
find-instances-of-class
make-instances-of-class-vector
map-instances-of-class
map-sorted-instances-of-class
with-find-stats
Declared numerics
Examples
Remove all the hyp
unit instances that reside on the
(bb probable-hyps)
space instance, deleting those
unit instances that do not reside on any other space instance:
(let ((space-instance
(find-space-instance-by-path '(bb probable-hyps))))
(map-instances-on-space-instances
#'(lambda (instance)
(if (>= (length (space-instances-of instance) 1))
(remove-instance-from-space-instance instance space-instance)
(delete-instance instance)))
'hyp
space-instance))
Delete hyp
unit instances that reside on the (bb
probable-hyps)
space instance that have a belief value less
than 0.5:
(map-instances-on-space-instances
#'delete-instance
'hyp '(bb probable-hyps) :pattern '(< belief .5))
Note
Fixnum overlaps
comparisons can result in bignum computations if the
combined intervals of the pattern and a candidate unit instance
exceeds most-positive-fixnum
.
The GBBopen Project
 |  |  | map-instances-on-space-instances |  |