Data Model The following data model stores the relevant information that can be in an IMS-LD file. The tables are the ones needed to store the interesting part of the information from IMS-LD specification that we consider is necessary in order to play the unit of learning correctly. At present, the data model does not have into account the interaction with the rest of the .LRN packages, because the tables needed for that interaction will be defined in the development phase. Also, the tables might change during the development phase, because we can find better ways to structure the information, but the final data model, in our opinion, will not be too different from the one presented here. The complete data model is presented in an Entity-Relationship (ER) diagram that is divided in three blocks, each one related to a level of the IMS-LD specification. The tables of the .LRN model for supporting IMS-LD of a level are not independent from the other levels, and the relationships of the three diagrams have been represented. In the tables of the E-R diagrams are presented only the primary keys and foreign keys. This is in order to achieve clarity and simplicity because the diagram is too big. Nevertheless, all the fields of the proposed diagram are presented and explained next, divided by the three levels of IMS-LD. Next, each table of the data model is described divided in the three levels of the IMS-LD specification IMPORTANT NOTE: The present Data Model will be normalize in the near time in order to improve its understanding.
Level A Next, the tables necessary for Level A are draw in the form of an E-R diagram imsld_imslds: This table is used to store all the units of learning. This is the high level in the hierarchy. Each IMS-LD file loaded in .LRN will generate a row in this table. This table contains all the different units of learning. Each unit of learning will contain global information and also references to other tables, in order to represent completely the information represented by the unit of learning. imsld_id - identifier version - version number level - A, B or C. It is the level of the IMS-LD file that arrive sequence_used_p - sequence used, true or false. True means simple sequencing is being used. Defaults to false learning_objective_itemmodel_id - references imsld_itemmodels and contains the objectives of the unit of learning title method_id - references imsld_methods prerequisite_itemmodel_id - references imsld_itemmodels and contains the prerequisites for the unit of learning component_id - references imsld_components when_property_value_is_set** - references imsld_when_property_value_is_set. Treated with more detail in level B imsld_components: Used to store all the components of the IMS-LD (which are: roles, acitivities and environments. The activities references this table) component_id role_id - references imsld_roles environment_id - references imsld_environments property_id ** - references imsld_properties imsld_roles. This table contains all the defined roles role_id - references imsld_roles role_type create_new_p - multopleoccurrences of this role may be created during runtime? match_persons - exclusively-in-roles, not-exclusively max_persons. Maximum number of persons for this role min_persons. Minimum number of persons for this role role_name. The name of the role information_itemmodel_id - references imsld_items parent_role_id. The parent role. This allows a hierarchy of roles. The root of the hierarchy are learner and stuff, which has not a parent role imsld_learning_activities. This table stores all the learning activities of IMS-LD learning_activity_id - references imsld_activities title component_id - references imsld_components isvisible_p - initial visibility attribute. Initial value: true learning_objective_itemmodel_id - references imsld_itemmodels time_limit_id - references imsld_time_limits prerequisite_itemmodel_id - references imsld_itemmodels parameter_value activity_description_itemmodel_id - references imsld_itemmodels on_completion_id - references imsld_on_completions identifier - unique identifier of the activity imsld_support_activities. This table stores all the support activities of IMS-LD support_activity_id - references imsld_activities component_id - references imsld_components isvisible_p - initial visibility attribute. Initial value: true title. The name of the support activity parameter_value activity_description_itemmodel_id - references imsld_itemmodels user_choice - The user decides when the activity is completed time_limit_id - If user_choice is null, the activity will be completed until the time referenced by this id has been expired. on_completion_id - references imsld_on_completions identifier - unique identifier of the acrivity imsld_activity_structures. This table contains all the activity structures of IMS-LD. Each entry is one activity structure. activity_structure_id - references imsld_activities component_id - references imsld_components number_to_select - if not null, the activity structure is completed when the number of activities completed equals the number set sort - possible values: as-is, visibility-order structure_type - sequence or selection title. The name of the activity structure information_itemmodel_id - references imsld_itemmodels identifier imsld_environments. This table contains the environments of the unit of learning. An environment consists of learning objects, services and other environments, and it can be referentiated by some other tables too. environment_id parent_environment_id title imsld_learning_objects learning_object_id class isvisible_p - the user decides when the activity is completed? parameter_value type - knowledge-object, tool-object, test-object, etc. (learning resource type from the IEEE LTSC LOM) environment_id - references imsld_environments schema_version imsld_email_services. It describes all the email services email_service_id select - all-persons-in-role, persons-in-role title is_visible_p imsld_email_data sendmail_service_id - references imsld_email_services role_id - references imsld_roles email_data email_property_id - references imsld_properties ** username_property_id - references imsld_properties ** imsld_conference_services conference_id conference_type - synchronous, asynchronous or announcement title item_id - references imsld_items is_visible_p imsld_index_search_services search_service_id title index_class - this element selects the class to make the index on index_element - this element selects the element to make the index on index_type_of_element - type of element to index on search_type - type of search facility that is expected at runtime: free-text-search, index-with-reference, index-without-reference is_visible_p imsld_methods method_id time_limit_id - references imsld_time_limits. If not null, the method is completed when this time has been completed, otherwise, the method is completed when all the plays mapped to this method through the imsld_plays_to_complete_method are completed on_completion_id - references imsld_on_completions condition_id ** - references imsld_conditions imsld_plays play_id method_id - references imsld_methods is_visible_p - the user decides when the activity is completed? title when_last_act_completed the play is completed until the act referenced by this field is completed time_limit_id - references time_limits. If when_last_act_completed is null, the play is completed when the time indicated here has been completed on_completion_id - references imsld_on_completions imsld_acts act_id play_id - references imsld_plays title time_limit_id - if there are no role_parts mapped to this act throug the mapping table (explained later), the act is completed until the the time indicated here has been completed on_completion_id - references on_completion when_property_value_is_set ** - references imsld_when_property_value_is_set imsld_role_parts role_part_id - references imsld_part_id act_id - references imsld_acts role_id unit_of_learning_id - references imsld_imslds environment_id - references imsld_environments imsld_on_completion on_completion_id feedback_description_id - references imsld_itemmodels change_property_value_id ** - references imsld_change_property_value notification_id - references imsld_notifications *** imsld_itemmodels. This is a table that contains a text and an id. In conjunction with the tables imsld_itemmodel and imsld_itemmodel_items_map allow to associate several items to the same itemmodel. title itemmodel_id imsld_items. Items are used for multiple purposes in other tables. For example it can describe objectives, prerequisites, references to files, etc. item_id identifier. Unique identifier for the IMS-LD is_visible_p title: A text that can represent a prerequisite, an objective, the name of a file, etc. imsld_time_limits time_limit_id time_limit - amount of time in a specific format property_id ** - references imsld_properties imsld_parameters parameter_id parameter_value imsld_imsld_objects_map. This is a very importan table in this data model, because it is used to map almost every imsld_* to every imsld_*. For instance, the activities that are part of a component are mapped by this table, and the acts to complete play are also mapped using this table. This is just a representation of the acs_rels table, because at the implementation phase, acs_rels will be used with different rel_types imsld_object_one_id - references imsld_* (acs_objects) imsld_object_one_type - wich can be: learning_object, imsld_item, imsld_role, support_activity, etc imsld_object_two_id - references imsld_* (acs_objects) imsld_object_two_type - same as imsld_object_one_type IMPORTANT NOTES: The last table will use acs_rels. The rel_types will be completely defined in the implementation phase. By now we can think of: parent_item_rel, role_parts_activites_rel, component_service_rels, service_roles_rel, learning_object_item_rel, plays_to_complete_method_rel and role_parts_to_complete_act. There are some important IMS-LD tags (learning objectives, for instance) that does not have a table for themselves, but this is because such tags consist only of a reference to a itemmodel or another table, so there is no need to create a table just for that. This data model can (and it is 99% sure) change in the implementation phase, but we will base the development on this data model. There are some tables in this data model that will be related to some others of other .LRN packages. For instance, the table imsld_conferences will be used to store the synchronous type (forums) and asynchronous type (chats) of conferences. Also, we will use acs_objects for the imslds, activities, services, learning_objects, components, and for every case we find it useful. We can make use of the cr_items too. But that is something that we will know better in the implementation phase.
Level B Level B extends the table email_data and add: username_property_id and email_property_id (**) Next is shown the E-R diagram for these tables imsld_properties (add a reference to properties from imsld_components and time_limits **) property_id imsld_loc_locpers_locrole_properties: Combined table for the loc, locpers and locrole properties property_id - references imsld_properties title. The name of the property datatype - references imsld_datatypes initial_value imsld_globpers_glob_property: Combined table for the glob and globpers properties property_id - references imsld_properties global_definition_id - references imsld_global_definitions existing imsld_global_definitions property_id - references imsld_properties uri title global_definition datatype_id initial_value imsld_property_groups property_group_id property_id - references imsld_properties title imsld_group_property_choices choice_id property_id - references imsld_properties proerty_group_id - references imsld_property_groups imsld_restrictions restriction_id restriction_type - minExclusive, minInclusive, maxExclusive, maxInclusive, totalDigits, fractionDigits, length, minLength, maxLength, enumeration, whiteSpace, pattern restriction imsld_property_restrictions_map restriction_id - references imsld_restrictions property_id - references imsld_properties imsld_datatypes datatype_id datatype - string, boolean, integer, uri, datetime, file, real, tet, duration, other imsld_when_property_value_is_set (add a reference to this table from the tables: complete_activities, complete_act, complete_play and complete_unit_of_learning **) when_property_value_is_set_id property_id - references imsld_properties property_value_id - references property_values imsld_property_values property_value_id langstring calculate_id - references imsld_calculates property_id - references imsld_properties imsld_change_property_values: A reference to this table must be added from the imsld_on_completion table in level A change_property_value_id property_id - references imsld_properties property_value_id - references property_values imsld_monitors monitor_id service_id - references imsld_services monitor_choice_id - references imsld_monitor_choices imsld_monitor_choices choice_id role_id - references imsld_roles self - references imsld_roles imsld_conditions: A reference to this table must be added from the table imsld_methods in level A condition_id title imsld_sequences sequence_id condition_id - references imsld_conditions sequence_sort - to know how to evaluate the condition if_id - references imsld_ifs imsld_then_model then_model_id show_id - references imsld_show_hide hide_id - references imsld_show_hide change_property_value imsld_ifs if_id expression_id - references imsld_expressions true_thenmodel_id - 'then', evaluated if the expression is true. References imsld_then_model false_thenmodel_id - 'else', evaluated if the expression is false. References imsld_then_model imsld_expressions - table holding the expressions. Instead of making a table for each type of expression, we store the expression_type and according to that value we know what other attributes in the table have to be stored in order to use them expression_id expression_type - is-member-of-role, is, is-not, and, or, sum, subtract, multiply, divide, greater-than, less-than, users-in-role, no-value, time-unit-of-learning-started, datetime-activity-started, current-datetime, complete, not expression_id - references imsld_expressions calculate_id - references imsld_calculates expression_one_id - references imsld_expressions expression_two_id - references imsld_expressions role_id - references imsld_roles property_id - references imsld_properties time_unit_of_learning_started datetime_activity_started current_datetime imsld_calculates calculate_id right_operand - references imsld_operands left_operand - references imsld_operands imsld_operands operand_id property_id - references imsld_properties property_value - references imsld_property_values expression_id - references imsld_expressions imsld_when_condition_true (add a reference from the imsld_complete_acts table **) when_condition_true_id role_id - references imsld_roles expression_id - references imsld_expressions imsld_show_hide show_hide_id class item_id - references imsld_items environment_id - references imsld_environments learning_activity_id - references imsld_learning_activities support_activity_id - references imsld_support_activities activity_structure_id - references imsld_activity_structures play_id - references imsld_plays unit_of_learning_id - references imsld_imslds imsld_global_elements global_element_id view_set_property_id - references view_set_properties imsld_view_set_properties view_set_property_id type - view-property, view-property-group, set-property, set-property-group href property_of - self or supporter-person ref view - value or title-value max_transactions transaction_type notification_id - references imsld_notifications ***
Level C Modify the imsld_email_data (***), add a reference to imsld_notifications table from imsld_on_completion, imsld_thens and imsld_view_set_properties table (***). Next is shown the E-R diagram that adds Level C imsld_notifications notification_id choice_id - references imsld_notifications_choice subject imsld_notification_emails_data_map notification_id - references imsld_notifications email_data_id - references imsld_email_data imsld_notifications_choice choice_id learning_activity_id - references imsld_learning_activities support_activity_id - references imsld_support_activities
Run Tables The previous tables are referred to the IMS-LD specifications level A, B and C. They have all the information necessary to map an XML compliant IMS-LD document to the tables in the .LRN platform. But also, for the ims-ld package to interact with real users, we need additional tables. These new tables are necessary for the execution of the player where the information is sequenced to the student. These tables are described in this Section. Next is shown the E-R diagram for these tables imsld_party_roles_map. This table maps parties of a .LRN course to the roles defined in the IMS-LD document. A party can be either a user or a group. One party can belong to several roles. party_id references parties role_id references imsld_roles imsld_parties_property_values_map. This table maps parties of a .LRN course to the properties defined in the IMS-LD document. One party can have several property values to establish. The properties can be local or global. party_id references parties property_id references imsld_properties property_value. This is the value of the property for the party in a current moment. The value can change during the delivering of the unit of learning imsld_roles_property_values_map. This table maps roles of the IMS-LD document to the properties of the IMS-LD document. One role can have several property values to establish. The properties can only be local. roles_id references imsld_roles property_id references imsld_properties property_value. This is the value of the property for the role in a current moment. The value can change during the delivering of the unit of learning imsld_property_values. This table stores the values of the properties that are common for all the users of the the IMS-LD document. There can be several property values to establish. The properties can be local or global. property_id references imsld_properties property_value. This is the value of the property for the role in a current moment. The value can change during the delivering of the unit of learning imsld_parties_activities_audit. This table stores all the .LRN parties information about the IMS-LD delivering that is of interest. related to activities At present we have defined only a little information, but in the future this information may be expanded. Each entry of the table has an activity that has been realized by a party. party_id references parties activity_id references imsld_activity delivering_order. It represents the order of visualization of the activity in the sequence of activities selected_p. It is true if the party select by himself the activity. It is false if the activity was sequenced to the party start_time. The start time of the activity end_time. The end time of the activity done_p. It is true if the activity is complete act_id references ismld_parties_acts_audit imsld_parties_acts_audit. This table stores all the .LRN parties information about the IMS-LD delivering that is of interest related to acts. At present we have defined only a little information, but in the future this information may be expanded. Each entry of the table has an act that has been realized by a party. party_id references parties act_id references imsld_acts start_time. The start time of the act end_time. The end time of the activity done_p. It is true if the act is complete imsld_parties_plays_audit. This table stores all the .LRN parties information about the IMS-LD delivering that is of interest related to plays. At present we have defined only a little information, but in the future this information may be expanded. Each entry of the table has an act that has been realized by a party. party_id references parties play_id references imsld_plays start_time.The start time of the act end_time. The end time of the activity done_p. It is true if the act is complete