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 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 an entrance 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 for having all the required information of a unit of learning imsld_id - identifier version - version number uri - uri of the imsld level - A, B or C. It is the level of the IMS-LD file that arrive sequence_p - sequence used, true or false. True means simple sequencing is being used. Defaults to false learning_objective_id - references imsld_learning_objectives title method_id - references imsld_methods prerequisite_id - references imsld_itemmodel component_id - references imsld_components complete_unit_of_learning_id - references complete_unit_of_learning imsld_complete_unit_of_learning. This tables describes the actions to do when a unit of learning is completed complete_unit_of_learning_id when_property_value_is_set_id ** - references imsld_when_property_value_is_set imsld_prerequisites. It has all the prerequisites of a unit of learning. These are the previous knolowdges that are required for doing the unit of learning prerequisite_id prerequisite_item - references imsld_items imsld_components: Used to store all the components of the IMS-LD component_id role_id - references imsld_roles activity_id - references imsld_activities 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_types - references role_types_id create_new_p - multopleoccurrences of this role may be created during runtime? match_n_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_id - references imsld_items role_parent_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_activities. This table defines the three types of activities in IMS-LD: learning activities, support activities and structure activities. These three tables references to this table activity_id activity_structure_id - references imsld_activity_structures imsld_learning_activities. This table stores all the learning activities of IMS-LD learning_activity_id - references imsld_activities title isvisible_p - initial visibility attribute. Initial value: true learning_objective_id - references imsld_learning_objectives prerequisite_id - references imsld_itemmodel parameter_id - references imsld_parameters activity_description_id - references imsld_items complete_activity_id - references complete_activities on_completion_id ** - references imsld_on_completions imsld_complete_activities. This is a table where for each entry is specified when an activity is considered completed complete_activity_id user_choice - the user specifies that this activity is completed time_limit - references imsld_time_limits. The activity is completed when the time is completed when_property_value_is_set_id ** - references imsld_when_property_value_is_set imsld_learning_activity_environments_map This table maps learning activities with environments learning_activity_id - references imsld_learning_activities environment_id - references imsld_environments 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 activity_description_id - references imsld_items complete_activity_id - references imsld_complete_activities on_completion_id - references imsld_on_completions imsld_support_activity_roles_map. This table maps a support role to an activity support_activity_id - references imsld_support_activities role_id - references imsld_roles imsld_support_activity_environments_map. This table maps support activities with environments support_activity_id - references imsld_support_activities environment_id - references imsld_environments 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 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_id - references imsld_items imsld_activity_structure_choices choice_id learning_activity_id - references imsld_learning_activities support_activity_id - references imsld_support_atcivities unit_of_learning_id - references imsld_imslds activity_structure_id - references imsld_activity_structures imsld_activity_structure_choices_map activity_structure_id - references imsld_activity_structures choice_id - references imsld_activity_structure_choices imsld_activity_structure_environments_map activity_structure_id - references imsld_activity_structures environment_id - references imsld_environments imsld_environments environment_id imsld_environmnent_instances environment_id - references imsld_environments environmen_instance_id title imsld_environment_instance_choices choice_id learning_object_id - references imsld_learning_objects service_id - references imsld_services environment_id - references imsld_environments imsld_environment_instances_environment_instance_choices_map choice_id - references imsld_environment_instance_choices environment_instance_id - references imsld_environmnent_instances imsld_learning_objects learning_object_id class isvisible_p - the user decides when the activity is completed? parameter_id - references imsld_parameters type - knowledge-object, tool-object, test-object, etc. (learning resource type from the IEEE LTSC LOM) item_sequence_id - references ims_leanring_object_item_sequences schema_sequence_id - references ims_learning_object_schema_sequences item_id - references imsld_items environment_id - references imsld_environments imsld_learning_object_item_sequences: First sequence of the learning objects sequence_id title ims_learning_object_schema_sequences: Second sequence of the learning objects sequence_id schema schemaversion imsld_learning_object_item_sequence_items_map sequence_id - references imsld_learning_object_item_sequences item_id - references imsld_items imsld_parameters: Table for holding the parameter values. This table will possible dissapear, depending if in the development phase there is the need of storing more information about the parameters parameter_id parameter_value imsld_services. It contains all the services service_id class identifier isvisible_p parameter_id email_service - (send_mail) references imsld_email_services conference_service_id - references imsld_conference_services index_search_id - refernces imsld_index_search_services imsld_email_services. It describes all the email services email_id - references imsld_services select - all-persons-in-role, persons-in-role title imsld_email_data email_data_id role_id - references imsld_roles email_property_id - references imsld_properties ** username_property_id - references imsld_properties ** imsld_email_service_email_data_map email_id - references imsld_email_services email_data_id - references imsld_email_data imsld_conference_services conference_id conference_type - synchronous, asynchronous or announcement title conference_manager_id - references imsld_roles moderator_id - references imsld_roles item_id - references imsld_items imsld_conference_participants_or_observers_map conference_id - references imsld_conference_services role_id - references imsld_roles imsld_index_search_services search_service_id title index_class - this element selects the calss 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 - how a user can access the indexed entities search_type - type of search facility that is expected at runtime: free-text-search, index-with-reference, index-without-reference imsld_learning_objectives. This table contains all the different objectives of the different unit of learning and activities. Each entry of this table is a set of objectives. A set of objectives is symbolized by an itemmodel_id learning_objective_id itemmodel_id - references imsld_itemmodels 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_to_complete_method. It contains all the plays that has a method. Each play can be selected in parallel by an user during the delivering of a unit of learning method_id play_id imsld_plays play_id isvisible_p - the user decides when the activity is completed? title complete_play_id - references imsld_complete_play on_completion_id - references imsld_on_completions imsld_complete_play complete_play_id when_last_act_completed - references imsld_acts. The play is completed when this act is completed time_limit_id - references imsld_time_limits. The play is completed when this time is completed when_property_value_is_set_id * - references imsld_when_property_value_is_set imsld_method_plays_map method_id - references imsld_methods play_id - references imsld_plays imsld_play_acts_map play_id - references imsld_plays act_id - references imsld_acts imsld_acts act_id title complete_act_id - references imsld_complete_acts on_completion_id - references on_completion when_condition_true ** - references imsld_when_condition_true imsld_complete_acts complete_act_id time_limit_id - references imsld_complete_acts. When not null, the act is completed when this time has been completed, otherwise, the act is completed until all role parts mapped to this complete_act_id trhoug the imsld_act_role_parts are completed when_property_value_is_set_id ** - references imsld_when_property_value_is_set imsld_act_role_parts complete_act_id - references imsld_acts role_part_id - references imsld_part_id imsld_act_role_parts_map role_part_id - references imsld_role_parts act_id - references imsld_acts imsld_role_part_choices choice_id learning_activity_id - references imsld_learning_activities support_activity_id - references imsld_support_activities unit_of_learning_id - references imsld_imslds activity_structure_id - references imsld_activity_structures environment_id - references imsld_environments imsld_role_parts - mapping table between acts and roles role_part_id title role_id - references imsld_roles choice_id - references imsld_role_part_choices 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_itemmodel_items_map item_id - references imsld_items itemmodel_id - references imsld_itemmodels 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 identifierref. It references the IMS CP isvisible_p. parameter_id title: A text that can represent a prerequisite, an objective, the name of a file, etc. parent_item - references imsld_items. An item can reference to another item, which is a sub-item or child of the one referencing it. imsld_time_limits time_limit_id time_limit - amount of time in a specific format property_id ** - references imsld_properties Next, the tables necessary for Level A are draw in the form of an E-R diagram
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