OSID Logo
OSID Specifications
osid package
Version 3.1.0
Interfaceosid.OsidRelationship
Implementsosid.OsidObject
osid.Temporal
Implemented Byosid.course.CourseOffering
osid.course.Activity
osid.ordering.Item
osid.topology.Edge
osid.relationship.Relationship
osid.contact.Contact
osid.provisioning.Provision
osid.provisioning.Request
osid.provisioning.RequestTransaction
osid.provisioning.Provisionable
osid.hold.Hold
osid.subscription.Subscription
osid.authorization.Authorization
osid.learning.Proficiency
osid.recognition.Conferral
osid.grading.GradeEntry
osid.room.squatting.Lease
osid.room.squatting.Deed
osid.resourcing.Availability
osid.resourcing.Commission
osid.resourcing.Effort
osid.financials.budgeting.Budget
osid.financials.budgeting.BudgetEntry
osid.rules.check.Instruction
osid.course.plan.Plan
osid.course.plan.Lesson
osid.bidding.Bid
osid.profile.ProfileEntry
osid.course.registration.Registration
osid.course.registration.CourseRegistration
osid.course.registration.ActivityRegistration
osid.tracking.Issue
osid.mapping.route.Route
osid.offering.Offering
osid.offering.Participant
osid.voting.Vote
osid.voting.Candidate
osid.calendaring.Commitment
osid.commenting.Comment
osid.resource.ResourceRelationship
osid.personnel.Appointment
osid.course.program.ProgramOffering
osid.course.program.Enrollment
osid.billing.Entry
osid.inquiry.Response
osid.course.chronicle.ProgramEntry
osid.course.chronicle.CourseEntry
osid.course.chronicle.CredentialEntry
osid.course.chronicle.AssessmentEntry
osid.course.chronicle.AwardEntry
osid.acknowledgement.Credit
osid.topology.path.Path
osid.course.syllabus.Docet
osid.ontology.Relevancy
osid.control.Input
Description

A Relationship associates two OSID objects. Relationships are transient. They define a date range for which they are in effect.

Unlike other OsidObjects that rely on the auxiliary Journaling OSID to track variance over time, OsidRelationships introduce a different concept of time independent from journaling. For example, in the present, a student was registered in a course and dropped it. The relationship between the student and the course remains pertinent, independent of any journaled changes that may have occurred to either the student or the course.

Once the student has dropped the course, the relationship has expired such that isEffective() becomes false. It can be inferred that during the period of the effective dates, the student was actively registered in the course. Here is an example:

  • T1. September 1: Student registers for course for grades
  • T2. September 10: Student drops course
  • T3. September 15: Student re-registers for course pass/fail

The relationships are:

T1. R1 {effective,   September 1  -> end of term,  data=grades}
T2. R1 {ineffective, September 1  -> September 10, data=grades}
T3. R1 {ineffective, September 1  -> September 10, data=grades}
    R2 {effective,   September 10 -> end of term,  data=p/f}
                

An OSID Provider may also permit dates to be set in the future in which case the relationship can become automatically become effective at a future time and later expire. More complex effectiveness management can be done through other rule-based services.

OSID Consumer lookups and queries of relationships need to consider that it may be only effective relationshps are of interest.

MethodhasEndReason
Description

Tests if a reason this relationship came to an end is known.

Returnboolean true if an end reason is available, false otherwise
ErrorsILLEGAL_STATE isEffective() is true
Compliancemandatory This method must be implemented.
MethodgetEndReasonId
Description

Gets a state Id indicating why this relationship has ended.

Returnosid.id.Id a state Id
ErrorsILLEGAL_STATE hasEndReason() is false
Compliancemandatory This method must be implemented.
MethodgetEndReason
Description

Gets a state indicating why this relationship has ended.

Returnosid.process.State a state
ErrorsILLEGAL_STATE hasEndReason() is false
OPERATION_FAILED unable to complete request
Compliancemandatory This method must be implemented.