Forum OpenACS Development: Response to Some 4.X questions, and comments, including adding wizards to the package spec and complaints about subsites

"Using Michael's example of students in a class modeled as an acs group, you might create a new relationship type 'learning' for students and another type 'teaching' for professors. Both students and professors are now members of the group, and you can treat them as a whole for purposes of permissions, spam etc."

But this has nothing to do with relational segments. You're just talking about relations. If you wanted, for example, to spam all of the members of a group that had a 'learning' relation with the group, you wouldn't need to use relational segments.

" It is also useful to treat the students and professors as seperate groups, for example to assign professors some extra privilege such as bboard admin. You could create a new group and add the professors, making sure to keep membership in both groups in sync, or you can use relational segments."

Again this sounds like something that you could do with relations, maybe you could elaborate on how relational segments would be used in this case.

" Relational segemnts define the members of a group based on some existing relationship they have to another group."

I think that you can assign that meaning to a relational segment, but as I said before, relational segments only define relations to groups. Look at the data-model for relational segments:

create table rel_segments (
        segment_id      integer not null
                        constraint rel_segments_segment_id_fk
                        references parties (party_id)
                        constraint rel_segments_pk primary key,
        segment_name    varchar(230) not null,
        group_id        integer not null
                        constraint rel_segments_group_id_fk
                        references groups (group_id),
        rel_type        varchar(100) not null
                        constraint rel_segments_rel_type_fk
                        references acs_rel_types (rel_type),
        constraint rel_segments_grp_rel_type_uq unique(group_id, rel_type)
);

The essence of a relational segment is a (group_id,rel_type) pair, and the parties/relations data-models stand-alone without the use of relational segments. Defining members of groups based on some existing relationship is accomplished with the use of Relations - Not relational segments.