Relationship Open Service Interface Definitions relationship version 3.0.0

The Relationship OSID provides the ability to relate and manage data between OsidObjects.

Relationships

The Relationship OSID defines a Relationship that can be used to explicitly identify a relationship between two OSID Ids and manage information specific to the relationship.

The Relationship OSID is a building block on which relationships defined in the context of other OSIDs can be built. Examples of relationships include the enrollment record of a student in a Course or the commitment or a person to an Event.

The Relationship OSID depends on the relationship Type to indicate the nature of the relationship including its natural ordering between the source and destination Ids. A relationship of type “friend” may place the peers in either order and be queryable in either order. A relationship of type “parent” is between a father peer and a son peer, but not the other way around. Queries of the son peer based on the “parent” type is not equiavelent to queries of the father peer based on the “parent” type.

Such directional relationships may be accompanied by two types. An additional relationship type of “child” can be used with the son peer to determine the father peer. The directionality and the inverse among the types are part of the type definition.

Family Cataloging

Relationships may be cataloged using the Family interface.

Sub Packages

The Relationship OSID includes a Relationship Rules OSID for controlling the enable status of Relationships.

Service Managers

Relationship Profile

class dlkit.services.relationship.RelationshipProfile

Bases: dlkit.osid.managers.OsidProfile

The relationship profile describes the interoperability among relationship services.

supports_relationship_lookup()

Tests if looking up relationships is supported.

Returns:true if relationship lookup is supported, false otherwise
Return type:boolean

compliance: mandatory – This method must be implemented.

supports_relationship_query()

Tests if querying relationships is supported.

Returns:true if relationship query is supported, false otherwise
Return type:boolean

compliance: mandatory – This method must be implemented.

supports_relationship_admin()

Tests if relationship administrative service is supported.

Returns:true if relationship administration is supported, false otherwise
Return type:boolean

compliance: mandatory – This method must be implemented.

supports_family_lookup()

Tests if looking up families is supported.

Returns:true if family lookup is supported, false otherwise
Return type:boolean

compliance: mandatory – This method must be implemented.

supports_family_admin()

Tests if familyadministrative service is supported.

Returns:true if family administration is supported, false otherwise
Return type:boolean

compliance: mandatory – This method must be implemented.

supports_family_hierarchy()

Tests for the availability of a family hierarchy traversal service.

Returns:true if family hierarchy traversal is available, false otherwise
Return type:boolean

compliance: mandatory – This method must be implemented in all providers.

supports_family_hierarchy_design()

Tests for the availability of a family hierarchy design service.

Returns:true if family hierarchy design is available, false otherwise
Return type:boolean

compliance: mandatory – This method must be implemented.

relationship_record_types

Gets the supported Relationship record types.

Returns:a list containing the supported Relationship record types
Return type:osid.type.TypeList

compliance: mandatory – This method must be implemented.

relationship_search_record_types

Gets the supported Relationship search record types.

Returns:a list containing the supported Relationship search record types
Return type:osid.type.TypeList

compliance: mandatory – This method must be implemented.

family_record_types

Gets the supported Family record types.

Returns:a list containing the supported Family types
Return type:osid.type.TypeList

compliance: mandatory – This method must be implemented.

family_search_record_types

Gets the supported Family search record types.

Returns:a list containing the supported Family search record types
Return type:osid.type.TypeList

compliance: mandatory – This method must be implemented.

Relationship Manager

class dlkit.services.relationship.RelationshipManager(proxy=None)

Bases: dlkit.osid.managers.OsidManager, dlkit.osid.sessions.OsidSession, dlkit.services.relationship.RelationshipProfile

The relationship manager provides access to relationship sessions and provides interoperability tests for various aspects of this service.

The sessions included in this manager are:

  • RelationshipLookupSession: a session to retrieve and examine relationships
  • RelationshipQuerySession: a session to query relationships
  • RelationshipSearchSession: a session to search for relationships
  • RelationshipAdminSession: a session to manage relationships
  • RelationshipNotificationSession: a session to receive notifications pertaining to relationship changes
  • RelationshipFamilySession: a session to look up relationship to family mappings
  • RelationshipFamilyAssignmentSession: a session to manage relationship to family catalog mappings
  • RelationshipSmartFamilySession: a session to manage dynamic relationship families
  • FamilyLookupSession: a session to retrieve families
  • FamilyQuerySession: a session to query families
  • FamilySearchSession: a session to search for families
  • FamilyAdminSession: a session to create and delete families
  • FamilyNotificationSession: a session to receive notifications pertaining to family changes
  • FamilyHierarchySession: a session to traverse a hierarchy of families
  • FamilyHierarchyDesignSession: a session to manage a family hierarchy
relationship_batch_manager

Gets the relationship batch manager.

Returns:a RelationshipBatchManager
Return type:osid.relationship.batch.RelationshipBatchManager
Raise:OperationFailed – unable to complete request
Raise:Unimplementedsupports_relationship_batch() is false

compliance: optional – This method must be implemented if ``supports_relationship_batch()`` is ``true``.

relationship_rules_manager

Gets the relationship rules manager.

Returns:a RelationshipRulesManager
Return type:osid.relationship.rules.RelationshipRulesManager
Raise:OperationFailed – unable to complete request
Raise:Unimplementedsupports_relationship_rules() is false

compliance: optional – This method must be implemented if ``supports_relationship_rules()`` is ``true``.

Family Lookup Methods

RelationshipManager.can_lookup_families()

Tests if this user can perform Family lookups.

A return of true does not guarantee successful authorization. A return of false indicates that it is known all methods in this session will result in a PermissionDenied. This is intended as a hint to an application that may not offer lookup operations to unauthorized users.

Returns:false if lookup methods are not authorized, true otherwise
Return type:boolean

compliance: mandatory – This method must be implemented.

RelationshipManager.use_comparative_family_view()

The returns from the family methods may omit or translate elements based on this session, such as authorization, and not result in an error.

This view is used when greater interoperability is desired at the expense of precision.

compliance: mandatory – This method is must be implemented.

RelationshipManager.use_plenary_family_view()

A complete view of the Family returns is desired.

Methods will return what is requested or result in an error. This view is used when greater precision is desired at the expense of interoperability.

compliance: mandatory – This method is must be implemented.

RelationshipManager.get_family(family_id)

Gets the Family specified by its Id.

In plenary mode, the exact Id is found or a NotFound results. Otherwise, the returned Family may have a different Id than requested, such as the case where a duplicate Id was assigned to a Family and retained for compatibil

Parameters:family_id (osid.id.Id) – Id of the Family
Returns:the family
Return type:osid.relationship.Family
Raise:NotFoundfamily_id not found
Raise:NullArgumentfamily_id is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method is must be implemented.

RelationshipManager.get_families_by_ids(family_ids)

Gets a FamilyList corresponding to the given IdList.

In plenary mode, the returned list contains all of the families specified in the Id list, in the order of the list, including duplicates, or an error results if an Id in the supplied list is not found or inaccessible. Otherwise, inaccessible families may be omitted from the list and may present the elements in any order including returning a unique set.

Parameters:family_ids (osid.id.IdList) – the list of Ids to retrieve
Returns:the returned Family list
Return type:osid.relationship.FamilyList
Raise:NotFound – an Id was not found
Raise:NullArgumentfamily_ids is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.get_families_by_genus_type(family_genus_type)

Gets a FamilyList corresponding to the given family genus Type which does not include families of genus types derived from the specified Type.

In plenary mode, the returned list contains all known families or an error results. Otherwise, the returned list may contain only those families that are accessible through this session.

Parameters:family_genus_type (osid.type.Type) – a family genus type
Returns:the returned Family list
Return type:osid.relationship.FamilyList
Raise:NullArgumentfamily_genus_type is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.get_families_by_parent_genus_type(family_genus_type)

Gets a FamilyList corresponding to the given family genus Type and include any additional families with genus types derived from the specified Type.

In plenary mode, the returned list contains all known families or an error results. Otherwise, the returned list may contain only those families that are accessible through this session.

Parameters:family_genus_type (osid.type.Type) – a family genus type
Returns:the returned Family list
Return type:osid.relationship.FamilyList
Raise:NullArgumentfamily_genus_type is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.get_families_by_record_type(family_record_type)

Gets a FamilyList containing the given family record Type.

In plenary mode, the returned list contains all known families or an error results. Otherwise, the returned list may contain only those families that are accessible through this session.

Parameters:family_record_type (osid.type.Type) – a family record type
Returns:the returned Family list
Return type:osid.relationship.FamilyList
Raise:NullArgumentfamily_record_type is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.get_families_by_provider(resource_id)

Gets a FamilyList from the given provider.

In plenary mode, the returned list contains all known families or an error results. Otherwise, the returned list may contain only those families that are accessible through this session.

Parameters:resource_id (osid.id.Id) – a resource Id
Returns:the returned Family list
Return type:osid.relationship.FamilyList
Raise:NullArgumentresource_id is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.families

Gets all families.

In plenary mode, the returned list contains all known families or an error results. Otherwise, the returned list may contain only those families that are accessible through this session.

Returns:a list of families
Return type:osid.relationship.FamilyList
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

Family Admin Methods

RelationshipManager.can_create_families()

Tests if this user can create families.

A return of true does not guarantee successful authorization. A return of false indicates that it is known creating a Family will result in a PermissionDenied. This is intended as a hint to an application that may not wish to offer create operations to unauthorized users.

Returns:false if Family creation is not authorized, true otherwise
Return type:boolean

compliance: mandatory – This method must be implemented.

RelationshipManager.can_create_family_with_record_types(family_record_types)

Tests if this user can create a single Family using the desired record types.

While RelationshipManager.getFamilyRecordTypes() can be used to examine which records are supported, this method tests which record(s) are required for creating a specific Family. Providing an empty array tests if a Family can be created with no records.

Parameters:family_record_types (osid.type.Type[]) – array of family record types
Returns:true if Family creation using the specified record Types is supported, false otherwise
Return type:boolean
Raise:NullArgumentfamily_record_types is null

compliance: mandatory – This method must be implemented.

RelationshipManager.get_family_form_for_create(family_record_types)

Gets the family form for creating new families.

A new form should be requested for each create transaction.

Parameters:family_record_types (osid.type.Type[]) – array of family record types
Returns:the family form
Return type:osid.relationship.FamilyForm
Raise:NullArgumentfamily_record_types is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure
Raise:Unsupported – unable to get form for requested record types

compliance: mandatory – This method must be implemented.

RelationshipManager.create_family(family_form)

Creates a new Family.

Parameters:family_form (osid.relationship.FamilyForm) – the form for this Family.
Returns:the new Family
Return type:osid.relationship.Family
Raise:IllegalStatefamily_form already used in a create transaction
Raise:InvalidArgument – one or more of the form elements is invalid
Raise:NullArgumentfamily_form is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure
Raise:Unsupportedfamily_form did not originate from get_family_form_for_create()

compliance: mandatory – This method must be implemented.

RelationshipManager.can_update_families()

Tests if this user can update families.

A return of true does not guarantee successful authorization. A return of false indicates that it is known updating a Family will result in a PermissionDenied. This is intended as a hint to an application that may not wish to offer update operations to unauthorized users.

Returns:false if Family modification is not authorized, true otherwise
Return type:boolean

compliance: mandatory – This method must be implemented.

RelationshipManager.get_family_form_for_update(family_id)

Gets the family form for updating an existing family.

A new family form should be requested for each update transaction.

Parameters:family_id (osid.id.Id) – the Id of the Family
Returns:the family form
Return type:osid.relationship.FamilyForm
Raise:NotFoundfamily_id is not found
Raise:NullArgumentfamily_id is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.update_family(family_form)

Updates an existing family.

Parameters:family_form (osid.relationship.FamilyForm) – the form containing the elements to be updated
Raise:IllegalStatefamily_form already used in an update transaction
Raise:InvalidArgument – the form contains an invalid value
Raise:NullArgumentfamily_id or family_form is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure
Raise:Unsupportedfamily_form did not originate from get_family_form_for_update()

compliance: mandatory – This method must be implemented.

RelationshipManager.can_delete_families()

Tests if this user can delete families.

A return of true does not guarantee successful authorization. A return of false indicates that it is known deleting a Family will result in a PermissionDenied. This is intended as a hint to an application that may not wish to offer delete operations to unauthorized users.

Returns:false if Family deletion is not authorized, true otherwise
Return type:boolean

compliance: mandatory – This method must be implemented.

RelationshipManager.delete_family(family_id)

Deletes a Family.

Parameters:family_id (osid.id.Id) – the Id of the Family to remove
Raise:NotFoundfamily_id not found
Raise:NullArgumentfamily_id is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.can_manage_family_aliases()

Tests if this user can manage Id aliases for families.

A return of true does not guarantee successful authorization. A return of false indicates that it is known changing an alias will result in a PermissionDenied. This is intended as a hint to an application that may opt not to offer alias operations to an unauthorized user.

Returns:false if Family aliasing is not authorized, true otherwise
Return type:boolean

compliance: mandatory – This method must be implemented.

RelationshipManager.alias_family(family_id, alias_id)

Adds an Id to a Family for the purpose of creating compatibility.

The primary Id of the Family is determined by the provider. The new Id performs as an alias to the primary Id. If the alias is a pointer to another family, it is reassigned to the given family Id.

Parameters:
  • family_id (osid.id.Id) – the Id of a Family
  • alias_id (osid.id.Id) – the alias Id
Raise:

AlreadyExistsalias_id is already assigned

Raise:

NotFoundfamily_id not found

Raise:

NullArgumentfamily_id or alias_id is null

Raise:

OperationFailed – unable to complete request

Raise:

PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

Family Hierarchy Methods

RelationshipManager.family_hierarchy_id

Gets the hierarchy Id associated with this session.

Returns:the hierarchy Id associated with this session
Return type:osid.id.Id

compliance: mandatory – This method must be implemented.

RelationshipManager.family_hierarchy

Gets the hierarchy associated with this session.

Returns:the hierarchy associated with this session
Return type:osid.hierarchy.Hierarchy
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.can_access_family_hierarchy()

Tests if this user can perform hierarchy queries.

A return of true does not guarantee successful authorization. A return of false indicates that it is known all methods in this session will result in a PermissionDenied. This is intended as a hint to an an application that may not offer hierrachy traversal operations to unauthorized users.

Returns:false if hierarchy traversal methods are not authorized, true otherwise
Return type:boolean

compliance: mandatory – This method must be implemented.

RelationshipManager.use_comparative_family_view()

The returns from the family methods may omit or translate elements based on this session, such as authorization, and not result in an error.

This view is used when greater interoperability is desired at the expense of precision.

compliance: mandatory – This method is must be implemented.

RelationshipManager.use_plenary_family_view()

A complete view of the Family returns is desired.

Methods will return what is requested or result in an error. This view is used when greater precision is desired at the expense of interoperability.

compliance: mandatory – This method is must be implemented.

RelationshipManager.root_family_ids

Gets the root family Ids in this hierarchy.

Returns:the root family Ids
Return type:osid.id.IdList
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.root_families

Gets the root families in the family hierarchy.

A node with no parents is an orphan. While all family Ids are known to the hierarchy, an orphan does not appear in the hierarchy unless explicitly added as a root node or child of another node.

Returns:the root families
Return type:osid.relationship.FamilyList
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method is must be implemented.

RelationshipManager.has_parent_families(family_id)

Tests if the Family has any parents.

Parameters:family_id (osid.id.Id) – the Id of a family
Returns:true if the family has parents, false otherwise
Return type:boolean
Raise:NotFoundfamily_id is not found
Raise:NullArgumentfamily_id is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.is_parent_of_family(id_, family_id)

Tests if an Id is a direct parent of a family.

Parameters:
  • id (osid.id.Id) – an Id
  • family_id (osid.id.Id) – the Id of a family
Returns:

true if this id is a parent of family_id, false otherwise

Return type:

boolean

Raise:

NotFoundfamily_id is not found

Raise:

NullArgumentid or family_id is null

Raise:

OperationFailed – unable to complete request

Raise:

PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented. implementation notes: If id not found return false.

RelationshipManager.get_parent_family_ids(family_id)

Gets the parent Ids of the given family.

Parameters:family_id (osid.id.Id) – the Id of a family
Returns:the parent Ids of the family
Return type:osid.id.IdList
Raise:NotFoundfamily_id is not found
Raise:NullArgumentfamily_id is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.get_parent_families(family_id)

Gets the parent families of the given id.

Parameters:family_id (osid.id.Id) – the Id of the Family to query
Returns:the parent families of the id
Return type:osid.relationship.FamilyList
Raise:NotFound – a Family identified by Id is not found
Raise:NullArgumentfamily_id is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.is_ancestor_of_family(id_, family_id)

Tests if an Id is an ancestor of a family.

Parameters:
  • id (osid.id.Id) – an Id
  • family_id (osid.id.Id) – the Id of a family
Returns:

true if this id is an ancestor of family_id, false otherwise

Return type:

boolean

Raise:

NotFoundfamily_id is not found

Raise:

NullArgumentid or family_id is null

Raise:

OperationFailed – unable to complete request

Raise:

PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented. implementation notes: If id not found return false.

RelationshipManager.has_child_families(family_id)

Tests if a family has any children.

Parameters:family_id (osid.id.Id) – the Id of a family
Returns:true if the family_id has children, false otherwise
Return type:boolean
Raise:NotFoundfamily_id is not found
Raise:NullArgumentfamily_id is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.is_child_of_family(id_, family_id)

Tests if a family is a direct child of another.

Parameters:
  • id (osid.id.Id) – an Id
  • family_id (osid.id.Id) – the Id of a family
Returns:

true if the id is a child of family_id, false otherwise

Return type:

boolean

Raise:

NotFoundfamily_id is not found

Raise:

NullArgumentid or family_id is null

Raise:

OperationFailed – unable to complete request

Raise:

PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented. implementation notes: If id not found return false.

RelationshipManager.get_child_family_ids(family_id)

Gets the child Ids of the given family.

Parameters:family_id (osid.id.Id) – the Id to query
Returns:the children of the family
Return type:osid.id.IdList
Raise:NotFoundfamily_id is not found
Raise:NullArgumentfamily_id is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.get_child_families(family_id)

Gets the child families of the given id.

Parameters:family_id (osid.id.Id) – the Id of the Family to query
Returns:the child families of the id
Return type:osid.relationship.FamilyList
Raise:NotFound – a Family identified by Id is not found
Raise:NullArgumentfamily_id is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.is_descendant_of_family(id_, family_id)

Tests if an Id is a descendant of a family.

Parameters:
  • id (osid.id.Id) – an Id
  • family_id (osid.id.Id) – the Id of a family
Returns:

true if the id is a descendant of the family_id, false otherwise

Return type:

boolean

Raise:

NotFoundfamily_id is not found

Raise:

NullArgumentid or family_id is null

Raise:

OperationFailed – unable to complete request

Raise:

PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented. implementation notes: If id is not found return false.

RelationshipManager.get_family_node_ids(family_id, ancestor_levels, descendant_levels, include_siblings)

Gets a portion of the hierarchy for the given family.

Parameters:
  • family_id (osid.id.Id) – the Id to query
  • ancestor_levels (cardinal) – the maximum number of ancestor levels to include. A value of 0 returns no parents in the node.
  • descendant_levels (cardinal) – the maximum number of descendant levels to include. A value of 0 returns no children in the node.
  • include_siblings (boolean) – true to include the siblings of the given node, false to omit the siblings
Returns:

a family node

Return type:

osid.hierarchy.Node

Raise:

NotFoundfamily_id is not found

Raise:

NullArgumentfamily_id is null

Raise:

OperationFailed – unable to complete request

Raise:

PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.get_family_nodes(family_id, ancestor_levels, descendant_levels, include_siblings)

Gets a portion of the hierarchy for the given family.

Parameters:
  • family_id (osid.id.Id) – the Id to query
  • ancestor_levels (cardinal) – the maximum number of ancestor levels to include. A value of 0 returns no parents in the node.
  • descendant_levels (cardinal) – the maximum number of descendant levels to include. A value of 0 returns no children in the node.
  • include_siblings (boolean) – true to include the siblings of the given node, false to omit the siblings
Returns:

a family node

Return type:

osid.relationship.FamilyNode

Raise:

NotFoundfamily_id is not found

Raise:

NullArgumentfamily_id is null

Raise:

OperationFailed – unable to complete request

Raise:

PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

Family Hierarchy Design Methods

RelationshipManager.family_hierarchy_id

Gets the hierarchy Id associated with this session.

Returns:the hierarchy Id associated with this session
Return type:osid.id.Id

compliance: mandatory – This method must be implemented.

RelationshipManager.family_hierarchy

Gets the hierarchy associated with this session.

Returns:the hierarchy associated with this session
Return type:osid.hierarchy.Hierarchy
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.can_modify_family_hierarchy()

Tests if this user can change the hierarchy.

A return of true does not guarantee successful authorization. A return of false indicates that it is known performing any update will result in a PermissionDenied. This is intended as a hint to an application that may opt not to offer these operations to an unauthorized user.

Returns:false if changing this hierarchy is not authorized, true otherwise
Return type:boolean

compliance: mandatory – This method must be implemented.

RelationshipManager.add_root_family(family_id)

Adds a root family.

Parameters:family_id (osid.id.Id) – the Id of a family
Raise:AlreadyExistsfamily_id is already in hierarchy
Raise:NotFoundfamily_id not found
Raise:NullArgumentfamily_id is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.remove_root_family(family_id)

Removes a root family.

Parameters:family_id (osid.id.Id) – the Id of a family
Raise:NotFoundfamily_id not a root
Raise:NullArgumentfamily_id is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.add_child_family(family_id, child_id)

Adds a child to a family.

Parameters:
  • family_id (osid.id.Id) – the Id of a family
  • child_id (osid.id.Id) – the Id of the new child
Raise:

AlreadyExistsfamily_id is already a parent of child_id

Raise:

NotFoundfamily_id or child_id not found

Raise:

NullArgumentfamily_id or child_id is null

Raise:

OperationFailed – unable to complete request

Raise:

PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.remove_child_family(family_id, child_id)

Removes a child from a family.

Parameters:
  • family_id (osid.id.Id) – the Id of a family
  • child_id (osid.id.Id) – the Id of the new child
Raise:

NotFoundfamily_id not a parent of child_id

Raise:

NullArgumentfamily_id or child_id is null

Raise:

OperationFailed – unable to complete request

Raise:

PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.

RelationshipManager.remove_child_families(family_id)

Removes all children from a family.

Parameters:family_id (osid.id.Id) – the Id of a family
Raise:NotFoundfamily_id not in hierarchy
Raise:NullArgumentfamily_id is null
Raise:OperationFailed – unable to complete request
Raise:PermissionDenied – authorization failure

compliance: mandatory – This method must be implemented.