Personal Learning Record Store (PLRS) BB – Design Document – Prometheus-X Components & Services

Personal Learning Record Store (PLRS) BB – Design Document

Personal Learning Record Store (PLRS) service is a type of cloud-based service that allows individuals to store and manage their own learning records in a central location. A PLRS will allow individuals to easily access, download, and reuse their personal learning data, which is a key aspect of data portability under the GDPR. It also helps the data controller to comply with GDPR regulation. PLRS will allow individuals to keep track of their learning activities, achievements, and progress, and to share this information with others if, or when, they choose to.

While a typical Learning Record Store (LRS) is owned by the organizations providing the training to the learner, a PLRS is owned directly by the learner itself.

A personal LRS can be considered as a "personal cloud" service, as it allows individuals to store and access their learning records from any device with internet access. It also provides a level of control, security and privacy as the data is owned and controlled by the individual. Personal LRS can also allow for greater interoperability with other systems or applications by providing a standardized way of storing and sharing learning records.

Please note that the following visuals are intended as projections only. UX/UI work will be carried out later in the process.

Cozy store

Cosy store - PLRS

PLRS

Technical usage scenarios & Features

Key functionalities:

Value-added:

Features/main functionalities

Features:

Technical usage scenarios

A student can use their Personal Learning Record Store (PLRS) in a variety of ways to track their learning activities and progress. Here is an example of how a student might use their PLRS:

  1. Tracking learning activities: The student can use their PLRS to log their learning activities, such as classes, workshops, and self-study sessions. They can also include information about the topics covered and the resources used.

  2. Recording achievements: The student can use their PLRS to record achievements such as completing a course, passing an exam, or receiving a certification. This information can be used to demonstrate their learning progress to others.

  3. Sharing with others: If desired, the student can share the learning data in their PLRS with others, such as potential employers, educational institutions, or learning coaches. This allows them to demonstrate their learning progress and achievements to others.

  4. Keeping a record of the learning journey: The student can use the PLRS to keep a record of their learning journey, which can be useful for planning future learning and career goals.

  5. Providing evidence for micro-credentials or badges earned: The student can use the PLRS to store and provide evidence for any micro-credentials or badges earned.

  6. Providing data for analytics: The student can use their PLRS to provide data for analytics, such as identifying areas where they need improvement, tracking their progress over time, and measuring the impact of different learning activities.

The PLRS is beneficial for training organizations:

  1. Ensure training progress: The student can share his or her credentials and progress on a permanent basis.

  2. Detecting trouble spots: Thanks to sharing, the organization will have more learning traces, making it possible to detect learner difficulties, especially those recorded before the student joined the current training organization.

The PLRS is beneficial for future employers:

  1. Check skills held: Locally shared traces enable the future employer to ascertain the skills of the individual. This can have a positive impact on the person's employment, as their skills are verified and not just a line on their CV.

  2. Don't waste time on profiles that don't match: The future employer can easily detect whether the person's skills are in line with those required for a job. This way, the employer and the individual don't waste time when there's no match.

Requirements

Requirement ID Short description BB input format BB output format Any other constraints Verified by scenario Requirement type
BB-REQ_ID__1 PLRS 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 export, import, and use of their data in PLRS. API call API response If the answer is no, the data cannot be used, nor transferred into or from the PLRS. If the answer is yer, the data can be used, and transferred into or from the PLRS. BB-SC-PLRS-01 FUN
BB-REQ_ID__1.2 Consent must be asked and verified in less than 30s API call API response BB-SC-PLRS-02 PERF
BB-REQ_ID__2 PLRS must request contracts from the building block contract via the Prometheus-X Dataspace Connector API call API response
BB-REQ_ID__2.1 The PLRS must check with the contract manager through the Dataspace connector if a contract for the data provider or the data consumer (The LMS for functionality 1 and 2) API call API response If the answer is no, the data cannot be accessed, nor transferred into or from the PLRS. If the answer is yer, the data can be accessed, and transferred into or from the PLRS. BB-SC-PLRS-03 DEP
BB-REQ_ID__2.2 Contract must be asked and verified in less than 30s API call API response BB-SC-PLRS-04 PERF
BB-REQ_ID__3 PLRS should connect with BB Decentralized AI training (EDGE-Skill)
BB-REQ_ID__3.1 PLRS should be able to run algorithm shared by BB Decentralized AI training, locally on the data in the PLRS API interaction API interaction Data transfer via xAPI. Could be asynchronous BB-SC-PLRS-05 FUN
BB-REQ_ID__3.2 Running the algorithm must be done in less than 2 min (times TBD) API call API response BB-SC-PLRS-06 PERF

Integrations

Direct Integrations with Other BBs

Category Why? How?
Interact with Decentralized AI training (future functionality) train AI model send anonymized (or not) data to train AI models
Interact with LRC (future functionality) Harmonize data in the PLRS in xAPI Convert any dataset to xAPI format

Integrations via Connector

Category Why? What?
Connection with connector Simplify communication between the PLRS and PTX CCs
Connection with contract Contract between PLRS and the LMS authorizing export of user data Obtain the organization's agreement to export user data.
Identify the data standard to be transferred.
Connection with consent User consent to export/import his data Obtain the user's consent to export data.
Obtain consent to import data.
Obtain person's agreement to share data with selected organizations/persons.
Obtain the person's agreement to use his data to improve AI.
Obtain consent to analyze data.
Connection with identity Enable PLRS to use users' identities to display metadata with others Use the user's first and last name.
Use the user's professional background.
Use the user's educational background.

Relevant Standards

Data Format Standards

Data format

Mapping to Data Space Reference Architecture Models


block-beta

columns 3

block:group1
columns 3
LMS_orga1 LRS_orga1 LRS_PDC1 space space space LMS_orga2 LRS_orga2 LRS_PDC2 space space space LMS_orga3 LRS_orga3 LRS_PDC3
end

PLRS_PDC

block:group2
columns 1
PLRS_user1 PLRS_user2 PLRS_user3 PLRS_user4
end


classDef colorA fill:#D22FF7,color:#fff
classDef colorEx fill:#01D1D1,color:#fff
classDef colorMP fill:#e69138,color:#fff
class LMS_orga1 colorEx
class LMS_orga2 colorEx
class LMS_orga3 colorEx
class LRS_orga1 colorEx
class LRS_orga2 colorEx
class LRS_orga3 colorEx
class PLRS_PDC colorA
class LRS_PDC1 colorA
class LRS_PDC2 colorA
class LRS_PDC3 colorA
class PLRS_user1 colorMP
class PLRS_user2 colorMP
class PLRS_user3 colorMP
class PLRS_user4 colorMP

The blocks depicted in the architecture graphic represent hypothetical functions, as their development has not yet been completed. By prioritizing user control and consent, we aim to build trust and adhere to privacy regulations, ensuring users have a clear understanding and authority over their tracking preferences.

PDC : Prometheus-X Dataspace Connector

Input / Output Data

In a Personal Learning Record Store (PLRS), the input and output processes revolve around the handling of xAPI statements, which are formatted as JSON files. The LRS serves as a repository for learning experiences and activities, capturing detailed data through these xAPI statements. These statements typically include information about the actor (learner), verb (action), and object (activity or resource), providing a standardized way to record and track learning interactions.

The Personal Learning Record Store is designed to accommodate a wide range of learning traces, with the fundamental requirement being that they adhere to the xAPI format. Unlike systems that may require specific types of traces, our approach is more flexible, accepting any learning-related data as long as it is structured according to the xAPI specification. This inclusivity ensures that we capture a diverse array of learning activities, providing a comprehensive view of learner interactions and experiences. However, it's important to note that currently we do not have mechanisms in place to verify the authenticity of whether a trace is indeed in the xAPI format. This means that while we are open to receiving various types of learning data, ensuring its proper format relies on the accurate implementation of xAPI by data providers. The data sent can be a rating for an evaluation, a search, access to a page, etc. Each piece of information, no matter how small, is an indication of learning.

More details on xAPI statement implementation

Example of JSON file

Example of Becomino learning traces for an access :

{
  "stored": "2024-03-11T14:17:43.686Z",
  "priority": "MEDIUM",
  "active": true,
  "completedForwardingQueue": [],
  "failedForwardingLog": [],
  "client": "626a34fe1deb08f53ac12609",
  "lrs_id": "626a34fe1deb08d43dc12608",
  "completedQueues": [
    "STATEMENT_QUERYBUILDERCACHE_QUEUE",
    "STATEMENT_PERSON_QUEUE",
    "STATEMENT_FORWARDING_QUEUE"
  ],
  "activities": [
    "https://becomino.com/category/competences-bureautiques"
  ],
  "hash": "2b898680c9870ee54d8d260b75eb45d38fbb6c24",
  "agents": [
    "https://becomino.com/users|1710166580617x845375926584167200"
  ],
  "statement": {
    "authority": {
      "objectType": "Agent",
      "name": "Becomino",
      "mbox": "mailto:contact@becomino.com"
    },
    "stored": "2024-03-11T14:17:43.686Z",
    "context": {
      "contextActivities": {
        "parent": [
          {
            "id": "https://becomino.com/home",
            "objectType": "Activity"
          }
        ],
        "category": [
          {
            "id": "https://becomino.com/category/404",
            "objectType": "Activity"
          }
        ],
        "grouping": [
          {
            "id": "https://becomino.com/board/404",
            "objectType": "Activity"
          }
        ]
      },
      "language": "fr"
    },
    "actor": {
      "account": {
        "homePage": "https://becomino.com/users",
        "name": "1710166580617x845375926584167200"
      },
      "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/netc/verbs/accessed",
      "display": {
        "en-US": "accessed"
      }
    },
    "object": {
      "id": "https://becomino.com/category/competences-bureautiques",
      "definition": {
        "name": {
          "fr": "Compétences bureautiques"
        },
        "description": {
          "fr": ""
        },
        "type": "http://adlnet.gov/expapi/activities/link"
      },
      "objectType": "Activity"
    }
  },
  "hasGeneratedId": true,
  "deadForwardingQueue": [],
  "voided": false,
  "verbs": [
    "https://w3id.org/xapi/netc/verbs/accessed"
  ],
  "personaIdentifier": "65ef1288fff35065a8f02d8c",
  "processingQueues": [],
  "person": {
    "_id": "65ef128899ffae0133166652",
    "display": "1710166580617x845375926584167200 - https://becomino.com/users (xAPI Account)"
  },
  "timestamp": "2024-03-11T14:17:32.814Z",
  "relatedActivities": [
    "https://becomino.com/category/competences-bureautiques",
    "https://becomino.com/home",
    "https://becomino.com/board/404",
    "https://becomino.com/category/404"
  ],
  "relatedAgents": [
    "https://becomino.com/users|1710166580617x845375926584167200",
    "mailto:contact@becomino.com"
  ],
  "organisation": "626a340cccbcc9000aff1421",
  "_id": "65ef1287c56582001cca4966",
  "registrations": [],
  "pendingForwardingQueue": []
}

Example of Becomino learning traces for an opening :

{
  "stored": "2024-03-11T14:03:53.853Z",
  "priority": "MEDIUM",
  "active": true,
  "completedForwardingQueue": [],
  "failedForwardingLog": [],
  "client": "626a34fe1deb08f53ac12609",
  "lrs_id": "626a34fe1deb08d43dc12608",
  "completedQueues": [
    "STATEMENT_QUERYBUILDERCACHE_QUEUE",
    "STATEMENT_PERSON_QUEUE",
    "STATEMENT_FORWARDING_QUEUE"
  ],
  "activities": [
    "https://www.youtube.com/watch?v=mBB_4io4t7w"
  ],
  "hash": "9c1dfe88035942439811946b7be0045c676b2de0",
  "agents": [
    "https://becomino.com/users|1710165537783x892345052938840600"
  ],
  "statement": {
    "authority": {
      "objectType": "Agent",
      "name": "Becomino",
      "mbox": "mailto:contact@becomino.com"
    },
    "stored": "2024-03-11T14:03:53.853Z",
    "context": {
      "contextActivities": {
        "parent": [
          {
            "id": "https://becomino.com/board/devenir-pro-immobilier-1638124052784x348049108536401000",
            "objectType": "Activity"
          }
        ],
        "category": [
          {
            "id": "https://becomino.com/category/vente",
            "objectType": "Activity"
          }
        ],
        "grouping": [
          {
            "id": "https://becomino.com/board/devenir-pro-immobilier",
            "objectType": "Activity"
          }
        ]
      },
      "language": "fr",
      "extensions": {
        "http://schema.inokufu.com/becomino/board": {
          "id": "https://becomino.com/board/devenir-pro-immobilier",
          "name": {
            "fr": "Devenir Pro en Transactions Immobilières"
          }
        }
      }
    },
    "actor": {
      "account": {
        "homePage": "https://becomino.com/users",
        "name": "1710165537783x892345052938840600"
      },
      "objectType": "Agent"
    },
    "timestamp": "2024-03-11T14:03:42.852Z",
    "version": "1.0.0",
    "id": "24215902-50d4-4a5a-8cf7-aa6df42ad394",
    "verb": {
      "id": "https://w3id.org/xapi/netc/verbs/opened",
      "display": {
        "en-US": "opened"
      }
    },
    "object": {
      "id": "https://www.youtube.com/watch?v=mBB_4io4t7w",
      "definition": {
        "name": {
          "fr": "Agent immobilier - Le métier"
        },
        "description": {
          "fr": "bonjour à tous je suis rom un quartier de la société romain quartier formation spécialisée en accompagnement et coaching immobilier j'ai conçu le test agent immobilier pour vous aider à prouver vos compétences et vous faire remarquer par des employeurs notre métier évolue enfin j'ai envie de vous di..."
        },
        "type": "http://adlnet.gov/expapi/activities/link",
        "extensions": {
          "http://schema.inokufu.com/learning-object/type": "Video",
          "http://schema.inokufu.com/learning-object/bloom": "discover",
          "http://schema.inokufu.com/learning-object/provider": "YouTube",
          "http://schema.inokufu.com/learning-object/picture": "https://i.ytimg.com/vi/mBB_4io4t7w/maxresdefault.jpg"
        }
      },
      "objectType": "Activity"
    }
  },
  "hasGeneratedId": true,
  "deadForwardingQueue": [],
  "voided": false,
  "verbs": [
    "https://w3id.org/xapi/netc/verbs/opened"
  ],
  "personaIdentifier": "65ef0e8cfff35065a8efaec2",
  "processingQueues": [],
  "person": {
    "_id": "65ef0e8c99ffaefc9516664e",
    "display": "1710165537783x892345052938840600 - https://becomino.com/users (xAPI Account)"
  },
  "__v": 1,
  "timestamp": "2024-03-11T14:03:42.852Z",
  "relatedActivities": [
    "https://www.youtube.com/watch?v=mBB_4io4t7w",
    "https://becomino.com/board/devenir-pro-immobilier-1638124052784x348049108536401000",
    "https://becomino.com/board/devenir-pro-immobilier",
    "https://becomino.com/category/vente"
  ],
  "relatedAgents": [
    "https://becomino.com/users|1710165537783x892345052938840600",
    "mailto:contact@becomino.com"
  ],
  "organisation": "626a340cccbcc9000aff1421",
  "_id": "65ef0f49c56582001cca4930",
  "registrations": [],
  "pendingForwardingQueue": []
}

Example of Becomino learning traces for a search :

{
  "stored": "2024-03-11T14:03:18.048Z",
  "priority": "MEDIUM",
  "active": true,
  "completedForwardingQueue": [],
  "failedForwardingLog": [],
  "client": "626a34fe1deb08f53ac12609",
  "lrs_id": "626a34fe1deb08d43dc12608",
  "completedQueues": [
    "STATEMENT_QUERYBUILDERCACHE_QUEUE",
    "STATEMENT_PERSON_QUEUE",
    "STATEMENT_FORWARDING_QUEUE"
  ],
  "activities": [
    "https://becomino.com/search/autocomplete%3Dvente"
  ],
  "hash": "c767c476e1ceec741589d207eb20c88a444f77a2",
  "agents": [
    "https://becomino.com/users|1710165537783x892345052938840600"
  ],
  "statement": {
    "authority": {
      "objectType": "Agent",
      "name": "Becomino",
      "mbox": "mailto:contact@becomino.com"
    },
    "stored": "2024-03-11T14:03:18.048Z",
    "context": {
      "contextActivities": {
        "parent": [
          {
            "id": "https://becomino.com/account",
            "objectType": "Activity"
          }
        ],
        "category": [
          {
            "id": "https://becomino.com/category/404",
            "objectType": "Activity"
          }
        ],
        "grouping": [
          {
            "id": "https://becomino.com/board/404",
            "objectType": "Activity"
          }
        ]
      },
      "language": "fr"
    },
    "actor": {
      "account": {
        "homePage": "https://becomino.com/users",
        "name": "1710165537783x892345052938840600"
      },
      "objectType": "Agent"
    },
    "timestamp": "2024-03-11T14:03:06.821Z",
    "version": "1.0.0",
    "id": "773aa025-fa60-4dab-97f7-515efdf1e2cb",
    "verb": {
      "id": "https://w3id.org/xapi/acrossx/verbs/searched",
      "display": {
        "en-US": "searched"
      }
    },
    "object": {
      "id": "https://becomino.com/search/autocomplete%3Dvente",
      "definition": {
        "name": {
          "fr": "autocomplete=vente"
        },
        "description": {
          "fr": ""
        }
      },
      "objectType": "Activity"
    }
  },
  "hasGeneratedId": true,
  "deadForwardingQueue": [],
  "voided": false,
  "verbs": [
    "https://w3id.org/xapi/acrossx/verbs/searched"
  ],
  "personaIdentifier": "65ef0e8cfff35065a8efaec2",
  "processingQueues": [],
  "person": {
    "_id": "65ef0e8c99ffaefc9516664e",
    "display": "1710165537783x892345052938840600 - https://becomino.com/users (xAPI Account)"
  },
  "__v": 1,
  "timestamp": "2024-03-11T14:03:06.821Z",
  "relatedActivities": [
    "https://becomino.com/search/autocomplete%3Dvente",
    "https://becomino.com/account",
    "https://becomino.com/board/404",
    "https://becomino.com/category/404"
  ],
  "relatedAgents": [
    "https://becomino.com/users|1710165537783x892345052938840600",
    "mailto:contact@becomino.com"
  ],
  "organisation": "626a340cccbcc9000aff1421",
  "_id": "65ef0f26c56582001cca4928",
  "registrations": [],
  "pendingForwardingQueue": []
}

Architecture

classDiagram
   PLRS <|-- PLRS_PDC
   PLRS_PDC <|-- PLRS
   PLRS: update()
   PLRS: exoprt_lms()
   PLRS: import_lms()
   PLRS: visualize()
   PLRS: synchronize()
   PLRS: local_access()
   class PLRS_PDC{
     identity()
     catalog()
     contract()
     consent()
   }

PDC : Prometheus-X Dataspace Connector

Dynamic Behaviour

Behavior when exporting a dataset from the LMS :

sequenceDiagram
    participant User
    participant LRS
    participant PDC_LRS
    participant PDI
    participant Data_Intermediary
    participant PDC_PLRS
    participant PLRS

    User->>PDI: Agreement sent to transfer traces to PLRS by clicking on the LMS button
    PDI->>PDC_LRS: Data exchange trigger (including consent)
    PDC_LRS->>Data_Intermediary: Contract verification and policies
    Data_Intermediary->>PDC_LRS: Contract and policies verified
    PDC_LRS->>LRS: LRS gets data
    LRS->>PDC_LRS: send data to PDC LRS
    PDC_LRS->> PDC_PLRS:Send data to PDC PLRS
    PDC_PLRS->>PLRS: Send data to PLRS

PDC : Prometheus-X Dataspace Connector

Behavior when importing a dataset from the PLRS (future fonctionality):

sequenceDiagram
   actor User as User
   User->>PLRS: Send dataset in different format than xAPI
   PLRS->>LRC: Send dataset in different format than xAPI
   LRC->>PLRS: Send dataset into xAPI format
   PLRS->>PLRS: Update visualization

PDC : Prometheus-X Dataspace Connector

Behavior when share a dataset from the PLRS :

sequenceDiagram
   actor User as user
   participant PLRS as PLRS
   participant PDI as PDI
   participant PDC_PLRS as PDC PLRS
   participant Data_intermediary as Data Intermediary
   participant PDC_external as PDC External
   participant External_LRS as External LRS

   User->>PLRS: Click on the button to share a dataset with external source
   PLRS->>PDI: Agreement sent to transfer traces to LRS (external source) by clicking on the PLRS button
   PDI->>PDC_PLRS: Data exchange trigger (including consent)
   PDC_PLRS->>Data_intermediary: Contract verification and policies
   Data_intermediary->>PDC_PLRS: Contract and policies verified
   PDC_PLRS->>PLRS: Requests the dataset from the PLRS
   PLRS->>PDC_PLRS: PLRS sends data to PDC PLRS
   PDC_PLRS->>PDC_external: Send selected dataset
   PDC_external->>External_LRS: Send dataset to external LRS

PDC : Prometheus-X Dataspace Connector

Configuration and deployment settings

Deployment & installation

Error Scenarios Defined

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 action is required.

ID Function involved Description of risk Effect of failure Cause of failure Evaluation Preventive actions
Error-Scenario_1 export/import learning statements from LMS to PLRS Data may be lost during migration The student doesn't have his tracks in his PLRS Incorrect connection between PLRS and LMS Detection: 1 Occurrence: 2 Severity: 4 Criticality: 8
Error-Scenario_2 export/import learning statements from LMS to PLRS LMS statements are not in xAPI format LMS and PLRS cannot communicate with each other LMS-specific data format Detection: 1 Occurrence: 4 Severity: 8 Criticality: 32 Setting up an LRC between LMS and PLRS
Error-Scenario_3 export/import learning statements from LMS to PLRS Data could be transmitted to other non-targeted LRSs Exported data may be accessible to unauthorized persons They are not properly secured Detection: 6 Occurrence: 1 Severity: 9 Criticality: 54 Tracing output (PDC to PDC)
Error-Scenario_4 export/import learning statements from LMS to PLRS The same data can be exported several times Wrong visualization and learning path Duplicate data Detection: 1 Occurrence: 6 Severity: 6 Criticality: 36 Have a program that detects duplicates
Error-Scenario_5 export/import learning statements from LMS to PLRS The PLRS doesn't have enough storage space for all statements No more statement import/export Too little storage Detection: 1 Occurrence: 3 Severity: 9 Criticality: 27 Test the cloud service's scalability
Error-Scenario_6 export/import learning statements from LMS to PLRS The system may require downtime for large imports/exports Disrupting normal operations Low-performance servers Detection: 1 Occurrence: 3 Severity: 4 Criticality: 12 Exponential dispatch call
Error-Scenario_7 export/import learning statements from LMS to PLRS Graphs don't update Poor information on learning path Slow update due to servers Detection: 1 Occurrence: 2 Severity: 2 Criticality: 4
Error-Scenario_8 export/import learning statements from LMS to PLRS Poorly designed graphics No use of the platform Graphs are misleading Detection: 4 Occurrence: 3 Severity: 8 Criticality: 96 Conduct pre and post development workshops to ascertain user requirements
Error-Scenario_9 export/import learning statements from LMS to PLRS 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 Detection: 4 Occurrence: 2 Severity: 8 Criticality: 64 Conduct pre and post development workshops to ascertain user requirements and use accessibility tools
Error-Scenario_10 export/import learning statements from LMS to PLRS Synchronization processes can consume a lot of resources Disrupting normal operations Impacting the performance of real-time LRS systems Detection: 1 Occurrence: 3 Severity: 3 Criticality: 9
Error-Scenario_11 synchronize PLRS data with external LRS (regular push) The synchronization process can require downtime that affects system availability, especially when large quantities of data need to be synchronized. Reconnecting the PLRS and the new LRS/LMS Low-performance servers Detection: 1 Occurrence: 2 Severity: 4 Criticality: 8
Error-Scenario_12 synchronize PLRS data with external LRS (regular push) The organization may decide to change its LRS/LMS No learner monitoring of synchronization. No data transfer transparency Change of LRS/LMS Detection: 1 Occurrence: 2 Severity: 3 Criticality: 6
Error-Scenario_13 synchronize PLRS data with external LRS (regular push) Make sure that synchronization has been successful Distorted data No documentation Detection: 1 Occurrence: 2 Severity: 4 Criticality: 8
Error-Scenario_14 synchronize PLRS data with external LRS (regular push) Errors in the synchronization process can lead to complete synchronization failures, requiring manual diagnosis and correction Distorted data Errors in the synchronization Detection: 7 Occurrence: 3 Severity: 7 Criticality: 147 Have an error message

Third Party Components & Licenses

External components and licenses:

OpenAPI Specification

The curren version of the OpenAPI specification can be found here:

Personal Learning Records Store BB - OpenAPI specification

Codebase : Mockup version

We have carried out a study on the development of LRS. We have several options:

To get a functional understanding of this mockup and see some sample traces, go here : https://github.com/Prometheus-X-association/plrs/blob/main/docs/Images/PLRS%20-%20Mockup%20.pdf

To have a write access to the traces make a request on this mockup document : https://docs.google.com/document/d/14F-7Q9_LMLnUqvDx8EzAVrVWhLo93P5dHB3c3acYNRg/edit?usp=sharing To have a read access to the traces make a request on this mockup document: https://docs.google.com/document/d/1lr1r_naA1FR77qQzOdxbiCH6SZsunFcqvHBJ2JPOlZI/edit?usp=sharing

PUT

description: Store a single statement as a single member of a set.

POST

description: "Store a set of statements (or a single statement as a single member of a set).

GET

description: Read a single xAPI Statement or multiple xAPI Statements.

See API answers

Connexion with Prometheus-X

Personal Data Intermediary

As the PLRS involves the exchange of personal data, we need to include the PDI in the usage flow. When installing a PLRS, users must enter their PDI, or they will be redirected to the PDI account creation area. On this page, they will be able to consent to the exchange of their data with target organizations. In this PDI space, the user can also initiate data exchange by clicking on the “export data” button in the organization space (e.g. “export my data from the Prof en Poche LMS”).

Prometheus-X Dataspace Connector

In order to manage PLRS (1 PLRS per user) with the PDC, we are going to install a single PDC to ensure secure data exchange between the various PLRS.

The PDC will contain cozy identifiers (e.g. https://laurianemarxer-home.mycozy.cloud) associated with PDI identifiers (e.g. 39e2462d-db9f-4d47-9786-b09e2bcc3f45). With this information, the PDC sends the dataset to the corresponding data space.

Test Specification

The Personal Learning Record Store tests ensure that:

Test Plan

The PLRS 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 on the basis of user stories, functional requirements, and performance criteria.

Methodology

We will run manual and automatic tests.

Validate requirements and potential risks

Tests to validate requirements and potential risks.

Verified by scenario Description Test Status
BB-SC-PLRS-01 Individuals must consent to the export, import, and use of their data in PLRS Try to export/import the data without consent in the PDI Not tested yet
BB-SC-PLRS-02 Consent must be asked and verified in less than 30s Counting exchange time Not tested yet
BB-SC-PLRS-03 The PLRS must check with the contract manager through the Dataspace connector if a contract for the data provider or the data consumer (The LMS for functionality 1 and 2) try to provoke a data exchange without a contract Not tested yet
BB-SC-PLRS-04 Contract must be asked and verified in less than 30s Verfified time counting Not tested yet
BB-SC-PLRS-05 PLRS should be able to run algorithm shared by BB Decentralized AI training, locally on the data in the PLRS unit test Not tested yet
BB-SC-PLRS-06 Running the algorithm must be done in less than 2 min (times TBD Verfified time counting Not tested yet
Error-Scenario_2 LMS statements are not in xAPI format Send traces not in xAPI format Not tested yet
Error-Scenario_3 Data could be transmitted to other non-targeted LRSs Check statement output Validate : error message
Error-Scenario_4 The same data can be exported several times Make sure that duplicates are only counted once on the graphs Not tested yet
Error-Scenario_5 The PLRS doesn't have enough storage space for all statements Check the storage of PLRS Not tested yet
Error-Scenario_6 The system may require downtime for large imports/exports Check the LRS for visible statements when we import/export a large file Not tested yet
Error-Scenario_8 Poorly designed graphics conduct quantitative and qualitative tests Not tested yet
Error-Scenario_9 Wrong design choices: colors, shapes, ... conduct quantitative and qualitative tests Not tested yet
Error-Scenario_14 Errors in the synchronization process can lead to complete synchronization failures, requiring manual diagnosis and correction Unit test Not tested yet

View all unit tests

Manual Scenario

Using the personas, user stories, user flow, and data flow from the DAPO-X use case, we established several test scenarios. For the tests, we decided to use an inokufu learning platform Constellation. He owns it, so we will be able to see the results on the LRS.

User triggers in Constellation the transfer of their data from Constellation to PLRS. It is a one time transfer.

Validation : This scenario is validated if the PLRS display statements of learning. In particular these 3 statements :

User triggers in PLRS the transfer of their data from Constellation to PLRS. It is a one time transfer

Validation : This scenario is validated if the PLRS shows statements of learning. In particular this statement :

User triggers in PLRS the transfer of their data from Constellation to PLRS. It is a regular transfer (every week)

Validation : This scenario is validated if the PLRS shows statements of learning. In particular these 5 statements in these dates (if the transfer is all saturday): 05.10.2024

User triggers in PLRS the transfer of their data from PLRS to external app. It is a one time transfer.

Validation : This scenario is validated if the school's LRS display statements of learning.

User triggers in PLRS the transfer of their data from PLRS to external app. It is a regular transfer (every week). The user has given access to his data to the school's LRS (https://XXX.com/data/xAPIx)

Validation : This scenario is validated if the school's LRS display statements of learning.

UI test (where relevant)

Please note that the following visuals are intended as projections only. UX/UI work will be carried out later in the process.

Cozy store

Cosy store - PLRS

PLRS

Partners & roles

Inokufu (BB leader):

Cozy cloud:

Usage in the dataspace

The PLRS will be used in the service chain :

Diagram of service chain Sharing LMS/Moodle Data for Visualization PDC : Prometheus-X Dataspace Connector