Learning Object Metadata Crowd Tagging is a method for tagging and reviewing digital learning resources such as videos, courses, and documents using a crowd of individuals. The goal is to make these resources more discoverable and searchable by adding relevant keywords, descriptions, reviews and other useful metadata. This process is carried out via the combination of a browser (Chrome) extension and a Learning Record Store (LRS) that allows multiple users to submit review and metadata edit proposal of learning resources. All the reviews and metadata edit proposals are sent in xAPI format and stored in a LRS.
The LOMCT is a data service (browser extension) which facilitates the collection of feedback from teachers about LO (metadata, reviews). The LO index is a data source (LRS) for organizations which want to store metadata and reviews of LO submitted by their teachers or course designers.
Please note that the following visuals are intended as projections only. UX/UI work will be carried out later in the process.
Key functionalities:
Submit metadata edit proposal for a Learning object (LO) by an individual
Write a review for a LO by an individual
Visualize all metadata edit proposals and reviews associated to a LO
Value-added:
highlight good learning objects
better metadata quality of learning objects
ability to freely review learning object
Features:
Submit metadata edit proposal of a Learning object (LO) by an individual
Each Learning Object (video, article, podcast, …) is described by metadata: title, description, category, type, level, etc. Sometimes the metadata is wrong or missing. With LOMCT, each user can submit a metadata edit proposal.
Path:
- "The individual is confronted with a resource that has few or incorrect metadata"
- "The individual opens the LOMCT"
- "LOMCT asks for the username and bio (job/area of expertise) of the individual"
- "Individual enters the url of the LO to edit"
- "The individual submits his metadata edit proposal"
- "LOMCT send the metadata edit proposal to the LO index (LRS), formatted as xAPI statement"
Write a review of a LO by an individual
The same Learning Object can be seen as relevant or not depending on the teacher point of view, his targeted learning outcome, his habits, etc. With LOMCT, each user can write his own review of the LO and explain why he finds it relevant or not for his needs.
Path:
- "The individual is confronted with a resource that he wants to add a review"
- "The individual opens the LOMCT"
- "LOMCT asks for the username and bio (job/area of expertise) of the individual"
- "Individual enters the url of the LO to add a review"
- "The individual submits his review"
- "LOMCT send the review to the LO index (LRS), formatted as xAPI statement"
Visualize all metadata edit proposals and reviews associated to a LO
Thanks to LOMCT, many metadata edit proposals and reviews will be collected for each LO. All these data are stored as xAPI statements in a LRS. With LOMCT, each user can see all the metadata edit proposals and reviews associated with a LO, made by all others users connected to the same LRS.
Path:
- "Individual enters the url of the LO to edit"
- "LOMCT send request to LO index (LRS)"
- "LOMCT also shows metadata edit proposals and reviews linked to this LO"
- "Authors of the metadata edit proposals and reviews are shown with username and bio (job/area of expertise)"
Here is an example of how LOMCT is used by an university professor:
A university professor is preparing a course on the history of medieval Europe. They have created a number of digital learning resources, including video and documents, to support the course.
The professor wants to make these resources more discoverable and searchable for students, so they decide to use LOMCT to add them to the university LO index (LRS) with relevant metadata.
The professor uses an LMS that allows multiple users to contribute and edit a given course.
Others course contributors use the LOMCT to write reviews about some of the learning objects used in this courses
The university LO index is connected to a service that uses machine learning algorithms to automatically improve metadata quality of the LO and compute quality indicators for each LO based on the reviews provided by the contributors.
If the university is connected to other partner universities through the data space of education and skills, the professor can make the metadata of its LO available to other users in the partner universities. This will allow other organizations and individuals to discover and access the learning objects using the relevant keywords and descriptions provided.
Here is an example of how LOMCT is used by an employee of company:
An employee of a pharmaceutical company would like to consolidate his knowledge of natural medicines.
The employee searches YouTube for a video on the subject.
He finds a video interesting and would like to hear what other people think.
He opens LOMCT, looks at the comments and realizes that the resource is rated 4 out of 5 stars with 42 reviews. The overall opinion is that the resource is for beginners.
Then he goes to the information tab in the LOMCT where he sees that the resource is rated as "expert".
He proposes changing this metadata to "novice". This way, people looking for an easy resource will find this video.
Requirement ID | Short description | BB input format | BB output format | Any other constraints | Verified by scenario | Requirement type |
---|---|---|---|---|---|---|
BB-REQ_ID__1 | LOMCT must request building block consent via the Prometheus-X Dataspace Connector | API call | API response | |||
BB-REQ_ID__1.1 | Individuals must consent to the use of their data in LOMCT | API call | API response | If the answer is no, the user has no access to the extension | BB-SC-LOMCT-01 | DEP |
BB-REQ_ID__1.2 | Consent must be asked and verified in less than 30s | API call | API response | BB-SC-LOMCT-02 | PERF | |
BB-REQ_ID__2 | LOMCT must request contracts from the building block consent via the Prometheus-X Dataspace Connector | API call | API response | |||
BB-REQ_ID__2.1 | The LOMCT must check with the contract manager through the Dataspace connector if a contract for the corresponding organization exists | API call | API response | BB-SC-LOMCT-03 | DEP | |
BB-REQ_ID__2.2 | Contract must be asked and verified in less than 30s | API call | API response | BB-SC-LOMCT-04 | PERF | |
BB-REQ_ID__3 | LOMCT must connect with BB Consent/contracts negotiating agent (EDGE-Skill) | |||||
BB-REQ_ID__3.1 | BB must send the individual's consent profile when the LOMCT asks to adjust what and when they are tracked: all-time connection, only on weekends, certain keywords, etc. | API call | consent profile | Request consent 1 time, then update if the profile is modified in the corresponding building bloc. Could be asynchronous | BB-SC-LOMCT-05 | DEP |
BB-REQ_ID__3.2 | BB must update the individual's consent profile to LOMCT when there are changes | consent profile | / | update if the profile is modified in the corresponding building bloc. Could be asynchronous | BB-SC-LOMCT-06 | DEP |
BB-REQ_ID__4 | LOMCT should connect with BB Data veracity assurance (EDGE-Skill) | API call | API response | |||
BB-REQ_ID__4.1 | BB Data veracity assurance should check dataset is decent | xAPI (DASES) dataset | response | BB-SC-LOMCT-06 | FUN | |
BB-REQ_ID__5 | LOMCT should connect with BB EDGE translator (EDGE-Skill) | |||||
BB-REQ_ID__5.1 | expand the keywords of LOs | call API | xAPI | BB-SC-LOMCT-07 | FUN | |
BB-REQ_ID__5.2 | Exchange must be under 30s | API call | API response | BB-SC-LOMCT-08 | PERF |
Interact with Edge translators
How?
called to identify keyword terminology
asynchronous
xAPI format
Why?
Interact with consent/contract
Why?
Identify data import period (date, time, week)
Identify keywords where LOMCT operator can import
Identify sites where LOMCT operator can import
Interact with Edge computing - AI training
How?
Why?
Interact with Data veracity assurance
How?
Why?
to ensure that data exploitation is feasible
ensure data consistency
ensure data is decent
Connection with connector
Why?
Connection with contract
Why?
What?
Obtain the organization's agreement to export user metadata to the LRS.
Identify the number of metadata authorized for updating.
Identify the authorized date range for sending metadata to LRS.
Agree on data format (xAPI).
Connection with consent
Why?
What?
Obtain user consent to export metadata modified/added by him
Obtain the user's consent to share the metadata with the selected organization
Obtain consent to share/display metadata with other users
Connection with identity
Why?
What?
Use the user's first and last name
Use the user's professional background
Use the user's educational background
Data format:
the data produced and/or consumed are learning records. These are logs of learning activity done by a user.
There are several standard formats for learning records (SCORM, xAPI, cmi5, IMS caliper).
The consensus among experts is that xAPI is the most promising standard for describing learning records.
Inokufu have published on Prometheus-X's github a state of the art study about learning records interoperability in 2023 (see here). This study describes the various formats and explains why “we" have selected xAPI as the defacto format for learning records for DASES (Dataspace of Education & Skills).
In xAPI, each learning record is a json statement. This json contains several parts: actor, verb, object, result, context, timestamp.
The most critical personal data are in general in the actor part. According to xAPI, one can use first name, last name or email as the actor identifier. However, in our case we always recommend using uuid to identify actors. This way our learning records are pseudonymized by default. As this won’t always be the case with other organizations connected to the dataspace.
If shared datasets are not in xAPI format, LRC must be used to convert them to the correct format.
block-beta
columns 6
LearningObject:1 LOMCT:1 LRS:1 LRS_PDC:1
block:group1
columns 1
CC_PDC DVA_PDC ET_PDC EC_PDC
end
block:group2
columns 1
ConsentContracts DataVeracityAssurance EdgeTranslators EdgeComputing
end
classDef colorA fill:#D22FF7,color:#fff
classDef colorEx fill:#01D1D1,color:#fff
classDef colorED fill:#6E7176,color:#fff
class LearningObject colorEx
class LRS colorEx
class LOMCT colorED
class EdgeComputing colorED
class ConsentContracts colorED
class DataVeracityAssurance colorED
class EdgeTranslators colorED
class LRS_PDC colorA
class EC_PDC colorA
class CC_PDC colorA
class ET_PDC colorA
class DVA_PDC colorA
PDC : Prometheus-X Dataspace Connector
Input and output data are in the same format: xAPI.
Example 1: Review
A user want to write a review about this video:
https://www.youtube.com/watch?v=hLE-5ElGlPM
His review is:
he rates this video 5/5
he writes the following comment: “Fantastic video for every history student in the Bachelor of Medieval History.”
Here is the corresponding xAPI statement:
{
"statement": {
"authority": {
"objectType": "Agent",
"name": "University A LOMCT",
"mbox": "mailto:contact@universitya.com"
},
"stored": "2024-03-11T14:17:43.686Z",
"context": {
"contextActivities": {
"parent": [
{
"id": "https://universitya.com/home",
"objectType": "Activity"
}
],
"category": [
{
"id": "https://w3id.org/xapi/dod-isd/verbs/categories/history",
"objectType": "Activity"
}
]
},
"language": "en"
},
"actor": {
"account": {
"homePage": "https://universitya.com/users",
"name": "123456789"
},
"objectType": "Agent"
},
"timestamp": "2024-03-11T14:17:32.814Z",
"version": "1.0.0",
"id": "8f5e30f6-312e-4ec6-bc60-a37bcb1811ec",
"verb": {
"id": "http://id.tincanapi.com/verb/reviewed",
"display": {
"en-US": "reviewed"
}
},
"object": {
"id": "https://www.youtube.com/watch?v=hLE-5ElGlPM",
"definition": {
"name": {
"en": "What is History for?"
},
"description": {
"en": "The fundamentals about History and why we need it."
},
"type": "http://activitystrea.ms/schema/1.0/video"
},
"objectType": "Activity"
},
"result": {
"score": {
"scaled": 1.0, // Representing a 5/5 score
"raw": 5,
"min": 0,
"max": 5
},
"response": "Fantastic video for every history student in the Bachelor of Medieval History."
}
}
}
Example 2: Metadata Edit Proposal
A user want to propose metadata edit about this video:
https://www.youtube.com/watch?v=hLE-5ElGlPM
His proposals are:
this video is associated to the verb discover according to bloom taxonomy
the provider of this video is Youtube
Here is the corresponding xAPI statement:
{
"statement": {
"authority": {
"objectType": "Agent",
"name": "University A LOMCT",
"mbox": "mailto:contact@universitya.com"
},
"stored": "2024-03-11T14:17:43.686Z",
"context": {
"extensions": {
"http://id.tincanapi.com/extension/bloom": "discover",
"http://id.tincanapi.com/extension/provider": "YouTube"
},
"contextActivities": {
"parent": [
{
"id": "https://universitya.com/home",
"objectType": "Activity"
}
],
"category": [
{
"id": "https://w3id.org/xapi/dod-isd/verbs/categories/history",
"objectType": "Activity"
}
]
},
"language": "en"
},
"actor": {
"account": {
"homePage": "https://universitya.com/users",
"name": "123456789"
},
"objectType": "Agent"
},
"timestamp": "2024-03-11T14:17:32.814Z",
"version": "1.0.0",
"id": "8f5e30f6-312e-4ec6-bc60-a37bcb1811ec",
"verb": {
"id": "https://w3id.org/xapi/dod-isd/verbs/proposed",
"display": {
"en-US": "proposed"
}
},
"object": {
"id": "https://www.youtube.com/watch?v=hLE-5ElGlPM",
"definition": {
"name": {
"en": "What is History for?"
},
"description": {
"en": "The fundamentals about History and why we need it."
},
"type": "http://activitystrea.ms/schema/1.0/video"
},
"objectType": "Activity"
}
}
}
classDiagram
LOMCT <|-- LRS
LRS <|-- LRS_PDC
LRS_PDC <|-- LRS
LRS_PDC <|-- CC_PDC
CC_PDC <|-- LRS_PDC
CC_PDC <|-- Consent_Contracts
Consent_Contracts <|-- CC_PDC
LRS_PDC <|-- DVA_PDC
DVA_PDC <|-- LRS_PDC
DVA_PDC <|-- Data_veracity_assurance
Data_veracity_assurance <|-- DVA_PDC
LRS_PDC <|-- ET_PDC
ET_PDC <|-- LRS_PDC
ET_PDC <|-- EDGE_translator
EDGE_translator <|-- ET_PDC
class LRS_PDC{
identity()
catalog()
contract()
consent()
}
class CC_PDC{
identity()
catalog()
contract()
consent()
}
class DVA_PDC{
identity()
catalog()
contract()
consent()
}
class ET_PDC{
identity()
catalog()
contract()
consent()
}
class Consent_Contracts{
bool week[7]
int begin[7]
int end[7]
string trigger_keywords[]
add_trigger_keyword(string)
change_track()
}
class Data_veracity_assurance{
bool decent
metadata_decent()
}
class EDGE_translator{
String lo_keywords[]
add_lo_keyword()
}
PDC : Prometheus-X Dataspace Connector
Dynamic Behaviour Behavior to display a resource :
sequenceDiagram
actor User as User
User->>LOMCT: Open LOMCT extension
LOMCT->>LRS: Request LO metadata
LRS->>LOMCT: Send LO metadata
LOMCT->>User: Display the extension with metadata
PDC : Prometheus-X Dataspace Connector
Behavior to edit the metadata of a resource (the identification, consent and contract steps have already been completed when the extension is displayed) :
sequenceDiagram
actor User as User
User->>LOMCT: Select modification of resource metadata
LOMCT->>User: Display editing form
User->>LOMCT: Return the edition form
LOMCT->>LOMCT: Convert edition form into xAPI
LOMCT->>LRS: Send trace
Deployment and installation:
install a LRS
install LOMCT browser extension (available on Chrome first)
Configuration
The idea of the risk table is to define the probable causes of failure in order to estimate the probability of encountering this failure, to evaluate its secondary effects and therefore to plan preventive or corrective actions.
We will assign 3 scores on a scale of 1 to 10 to potential failures:
Criticality is calculated as follows:
criticality = detection x occurrence x severity
If criticality is greater than 10, then preventive action must be taken. If not, no.
ID | Function involved | Description of risk | Effect of failure | Cause of failure | Evaluation - Detection | Evaluation - Occurrence | Evaluation - Severity | Evaluation - Criticality | Preventive actions |
---|---|---|---|---|---|---|---|---|---|
1 | Submit metadata edit proposal and write a review of a Learning object (LO) by an individual | Data may be lost during migration | The organization doesn't receive the complete statements about the reviews or the metadata edit proposals. | Incorrect connection between LOMCT and LRS | 2 | 2 | 7 | 28 | Set up recurring connection tests |
3 | Data could be transmitted to other non-targeted LRSs | Exported data may be accessible to unauthorized persons | They are not properly secured | 6 | 1 | 9 | 54 | Set up recurring connection tests Test the cloud service's scalability |
|
4 | The LRS doesn't have enough storage space for all statements | No more statement import | Too little storage | 1 | 3 | 9 | 24 | Test the cloud service's scalability Can be connected to BB Data veracity assurance (EDGE-Skill) |
|
5 | The system may require downtime for large imports/exports | Disrupting normal operations | Low-performance servers | 1 | 3 | 4 | 12 | Test the cloud service's scalability Send statement to various LRS |
|
6 | User posts vulgar or insulting words | Unnecessary comment | Space for expression | 1 | 2 | 6 | 12 | Can be connected to BB Data veracity assurance (EDGE-Skill) | |
7 | The user is linked to several schools | Connection required with several LRS | Implementation | 3 | 5 | 2 | 10 | Send statement to various LRS | |
8 | Personal information is sent to LRS | Non-compliance with RGPD | Implementation | 4 | 2 | 9 | 54 | All these data are stored locally in the user browser/desktop. | |
9 | Visualize all metadata edit proposals and reviews associated to a LO | The user proposes a false edition | False metadata | Space for expression | 1 | 3 | 7 | 84 | A unique user id is used to distinguish users contributions from the admin statements, seen as the truth. |
10 | Metadatas don't update | Poor visualization of the metadata | Slow update due to servers | 4 | 3 | 8 | 16 | The data proposed by the user is not posted as truthful but in a space that states that it is an editing proposal | |
11 | Inadequate user interface | No use of the platform | UI design is misleading | 4 | 9 | 8 | 96 | Optimize extension | |
12 | Wrong design choices: colors, shapes, ... | No use of the platform | Visual choices such as colors and graphics can subliminally influence the perception of data. Graphs are non-inclusive | 1 | 7 | 5 | 96 | Conduct pre-development workshops to ascertain user requirements | |
13 | Identical statements in the same or several LRS | Duplicated information | Several sources of LRS | 1 | 7 | 5 | 45 | Conduct pre-development workshops to ascertain user requirements and use accessibility tools | |
14 | The user is linked to several organizations | Too much information on the front page, information conflict | Implementation | 1 | 7 | 5 | 35 | Only the most recent statement from the primary LRS is visible. | |
15 | Several reviews from the same author are detected | Obsolete reviews visible | Implementation | 2 | 7 | 6 | 35 | All statements are displayed chronologically | |
16 | Several metadata edit proposal from the same author are detected (simple user) | Metadata in several statements | Implementation | 2 | 7 | 6 | 84 | Display the organization's most recent statement and ignore the others | |
17 | Submit metadata edit proposal and write a review of a Learning object (LO) by the organization | The organization may decide to change its LRS | Complication in determining the source of truth | Change of LRS | 1 | 2 | 1 | 2 | |
18 | The organization's statements are not differentiated from others | Reconnecting the LOMCT and the new LRS | Implementation | 5 | 5 | 5 | 125 | Detect when username = authority.name it is organization. | |
19 | Other | Content Fragmentation | No valorization of the organization's statements | The same LO is available on multiple sites and platforms with different URLs. | 1 | 7 | 5 | 35 | Assign a Global Unique Identifier (GUID) to each LO. |
External components and licenses:
In the future: link your OpenAPI spec here.
openapi: 3.0.0 \
info: \
version: 0.0.1 \
title: Learning object metadata crowd tagging \
description: Learning Object Metadata Crowd Tagging is a service to easily review or tag digital learning resources such as videos, presentations, and documents by a crowd of individuals. The goal is to make these resources more discoverable and searchable by adding/changing relevant keywords, descriptions, and other metadata or by attaching them a review. Users interacts with this service using a browser extension. \
paths: \
/list: \
get: \
description: Returns a list of stuff \
responses: \
'200': \
description: Successful response
To get a functional understanding of this mockup and see some sample traces, go here : https://github.com/Prometheus-X-association/lomct/blob/main/docs/Images/LOMCT%20-%20Mock%20up%20.pdf
To have a write access to the traces make a request on this mockup document : https://docs.google.com/document/d/15sV1DR43r0GAP8EV8HmT0b-k0m4glPzQUwgn95XYrSQ/edit To have a read access to the traces make a request on this mockup document: https://docs.google.com/document/d/1qqDXDdfBkC5TJS1AgR7Wh72-h3mchLmyboX0hOquAZM/edit To have all access to the traces make a request on this mockup document : https://docs.google.com/document/d/1Yp6LGh18bzp5Vbj4KiwYLZnBhedBAevjNxp07ao-HM8/edit
The LOMCT code does not include any APIs. In fact, data exchange is generated by the user's action (sending a review/proposal and get metadata). This data is stored in a third-party LRS, which itself has an API. In our case, we are using the LRS learning locker. API calls are generic to all LRS.
description: Store a single statement as a single member of a set.
description: "Store a set of statements (or a single statement as a single member of a set).
description: Read a single xAPI Statement or multiple xAPI Statements.
The Learning Object Metadata Crowd Tagging tests ensure that:
The LOMCT testing strategy will focus on ensuring the accuracy, reliability, and performance of its functionality. We will use a combination of unit testing, integration testing, and user interface testing. The test environment will reproduce conditions similar to those in production in order to accurately validate BB behavior. Acceptance criteria will be defined based on user stories, functional requirements, and performance criteria.
We will run manual tests.
Using the personas, user stories, user flow, and data flow from the Wiki LOM use case, we established several test scenarios.
First time install with 1 LRS
Validation:
First time install with 2 LRSs
Validation:
First install of authority
Validation:
mmegauss (persona 1) writes a review:
Validation:
mmegauss (persona 1) writes a review:
Validation:
mcgonagall (persona 2) writes a review:
Validation:
mmegauss (persona 1) submits a metadata edit proposal:
Validation:
mmegauss (persona 1) submits a metadata edit proposal:
Validation:
mcgonagall (persona 2) submits a metadata proposal:
Validation:
The authority (Persona 3) submits metadata edit proposals:
Type: Podcast
Type: Video
Validation:
mmegauss (persona 1) writes a review on a previously reviewed learning object:
Validation:
mcgonagall (persona 2) writes a review on a previously reviewed learning object:
Validation:
mmegauss (persona 1) submits several metadata edit proposals:
Change type to podcast.
Type: article
Validation:
Please note that the following visuals are intended as projections only. UX/UI work will be carried out later in the process.
Inokufu (BB leader):
The LOMCT will be used as a potential source of data for a LRS and thus be part of the service chains:
PDC : Prometheus-X Dataspace Connector