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 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_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