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 DEP
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 consent 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 corresponding organization exists 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 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 PLRS 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-PLRS-05 DEP
BB-REQ_ID__3.2 BB must update the individual's consent profile to PLRS when there are changes consent profile / update if the profile is modified in the corresponding building bloc. Could be asynchronous BB-SC-PLRS-06 DEP
BB-REQ_ID__4 PLRS 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 homogeneity and detail xAPI (DASES) dataset response BB-SC-PLRS-07 FUN
BB-REQ_ID__5 PLRS should connect with BB Decentralized AI training (EDGE-Skill)
BB-REQ_ID__5.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-08 FUN
BB-REQ_ID__5.2 Running the algorithm must be done in less than 2 min API call API response BB-SC-PLRS-09 PERF

Integrations

Direct Integrations with Other BBs

Category Why? How?
Interact with Decentralized AI training train AI model send anonymized (or not) data to train AI models
Interact with Data veracity assurance Ensure that data exploitation is feasible
Ensure data consistency
Send access to dataset
Interact with consent/contract Transparency on data transfer Identify data import period (date, time, week)
Identify data export period (date, time, week, organization)
Interact with Distributed data visualization Visualize the learner's skills Send dataset in xAPI format
Asynchronous
Interact with LRC 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 7

LMSExport:1 
LMS_PDC:1 
PLRS_PDC:1

PLRS:1

PLRS_PDC_:1

block:group3
columns 1
CC_PDC DVA_PDC DAI_PDC
end

block:group4
columns 1
ConsentContracts DataVeracityAssurance DecentralizedAItraining
end

classDef colorA fill:#D22FF7,color:#fff
classDef colorEx fill:#01D1D1,color:#fff
classDef colorED fill:#6E7176,color:#fff
class LMSExport colorEx
class PLRS colorED
class EdgeComputing colorED
class ConsentContracts colorED
class DataVeracityAssurance colorED
class DecentralizedAItraining colorED
class PLRS_PDC colorA
class LMS_PDC colorA
class PLRS_PDC_ colorA
class CC_PDC colorA
class DVA_PDC colorA
class DAI_PDC colorA

The blocks depicted in the architecture graphic represent hypothetical functions, as their development has not yet been completed. However, we aim to communicate with the "consent contract" to transparently track users. This means that users will be able to personalize various parameters, such as the days of the week and hours they choose to be tracked. 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

Input and output data are in the same format: xAPI.

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
   CC_PDC <|-- Consent_Contracts
   Consent_Contracts <|-- CC_PDC
   DVA_PDC <|-- Data_veracity_assurance
   Data_veracity_assurance <|-- DVA_PDC 
   DAI_PDC <|-- Decentralized_AI_training
   Decentralized_AI_training <|-- DAI_PDC
   PLRS_PDC <|-- CC_PDC
   CC_PDC <|-- PLRS_PDC
   PLRS_PDC <|-- DVA_PDC
   DVA_PDC <|-- PLRS_PDC
   PLRS_PDC <|-- DAI_PDC
   DAI_PDC <|-- PLRS_PDC
   PLRS: update()
   PLRS: exoprt_lms()
   PLRS: import_lms()
   PLRS: visualize()
   PLRS: synchronize()
   PLRS: local_access()
   class PLRS_PDC{
     identity()
     catalog()
     contract()
     consent()
   }
   class CC_PDC{
     identity()
     catalog()
     contract()
     consent()
   }
   class DVA_PDC{
     identity()
     catalog()
     contract()
     consent()
   }
   class DAI_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 homogeneous
     homogeneous()
   }
   class Decentralized_AI_training{
     run_algo()
   }

PDC : Prometheus-X Dataspace Connector

The blocks depicted in the architecture graphic represent hypothetical functions, as their development has not yet been completed. However, we aim to communicate with the "consent contract" to transparently track users. This means that users will be able to personalize various parameters. Communication with the "data veracity assurance" will aim to harmonize data. As for "decentralize AI training", the aim is to send them anonymized (or non-anonymized) data to improve AI.

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 :

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
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: 2 Occurrence: 2 Severity: 9 Criticality: 36 Set up recurring connection tests
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: 10 Criticality: 40 Setting up an LRC between LMS and PLRS
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 Implementation of the PDC, which makes data exchange completely secure
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
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: 24 Test the cloud service's scalability
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 Test the cloud service's scalability
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
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-development workshops to ascertain user requirements
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: 96 Conduct pre-development workshops to ascertain user requirements and use accessibility tools
10 visualize learning statements in PLRS Errors in synchronization can lead to data loss or partial recordings Distorted data Incorrect connection between PLRS and LMS Detection: 2 Occurrence: 4 Severity: 9 Criticality: 36 Set up recurring connection tests
11 visualize learning statements in PLRS The possibility of data conflicts can compromise information integrity Distorted data Changes are made simultaneously in both LRS Detection: 7 Occurrence: 5 Severity: 7 Criticality: 196 Conduct pre-development workshops to ascertain user requirements and use accessibility tools
12 visualize learning statements in 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: 15 Synchronize regularly, not in real time
13 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: 12 Test the cloud service's scalability
14 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: 4 Severity: 3 Criticality: 2
15 synchronize PLRS data with external LRS (regular push) Make sure that synchronization has been successful Distorted data No documentation Detection: 1 Occurrence: 3 Severity: 7 Criticality: 12 Update documentation/history of all actions (import/export, synchronization)
16 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 a maintenance team

Third Party Components & Licenses

External components and licenses:

OpenAPI Specification

In the future: link your OpenAPI spec here.

openapi: 3.0.0 \
info: \
     version: 0.0.1 \
     title: Personal Learning Record Store \
   description: Personal Learning Record Store (LRS) allows individuals to store and manage their own learning records in their cloud drive. PLRS allows individuals to keep track of their learning activities, achievements, and progress through their whole life. They can easily share these data with others if, or when, they choose to. \
paths: \
     /list: \
          get: \
               description: Returns a list of stuff \
                    responses: \
                         '200': \
                              description: Successful response

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

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.

Manual Scenario

Using the personas, user stories, user flow, and data flow from the DAPO-X use case, we established several test scenarios. For your information, the tests will be extended in the future.

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.

Automatic Test

Auto1: Transfer test

Auto2: Scalability test

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