Learning paths: some details

Most of the activity in CommonSpaces is aimed at the creation and use of learning paths (LPs); these are known also as learning pathways.

This page will detail some topics already introduced in another help page and will complement them with information on the creation and editing of LPs.


Learning paths are made up of nodes, each repesenting a knowledge chunk; nodes are of two types: OER nodes and connective nodes, these, in turn, can be document nodes and text nodes. Connective nodes are created as a glue to connect the OER nodes, to complement them, to describe the role of some OERs in the learning path.

Nodes have a very simple data model, which includes the following fields:

  • label; it is used to identify the node inside a LP; in the case of an OER node, a missing label is replaced by the OER title
  • OER: the reference to an OER in the catalogue of CommonSpaces
  • text; a rich-text content, that is a restricted HTML code produced using a simplified editor
  • document: a PDF document
  • range: an expression that, in the typical case, identifies a document "slice", that is a subset of the document pages.

The fields OER, document and text cannot be all empty at the same time. An OER node is one with a non-empty OER field. A connective node is considered a document node if it has a non-empty document field, and a text node if it has a non-empty text field; if both document and text are present, the document type prevails.

A node has also some "hidden" fields that aren't of direct concern for the LP creator: besides an internal identifier, they keep the following information: the user that created the node, the user that last modified the node, the LP to which the node belongs.

OER nodes

An OER node references an OER in the catalogue of CommonSpaces. Examples of OERs that can be conveniently included in a learning path are:

  • an OER whose URL is the web address of an online resource, such as a web page, a Youtube video or a PDF document
  • an OER with an attached document in a format that the Platform is able to visualize inline, such as a PDF or ODT.


An OER node can specify a range, which can affect its visualization in the context of playing a LP:

  • if the OER has one or more PDF documents as attachments, the range is a simple or complex expression telling how to extract and chain slices (sets of contiguous pages) of those documents
  • if the OER refers to a Youtube video, the range can specify start time and/or end time (in seconds)
  • if the OER refers, through its url, to an online resource other then a Youtube video, such as a web page or a downloadable PDF document, the range will affect only the export of the LP as a unique PDF.

The value of a non-empty range field consists in a single range or a list of comma-separated ranges

<range> [, range [, range ...]]]

where an individual range can specify a document number, a page range or both:

[<document number>.] [<start-page>[-[<end-page>]]]    or

[<document number>.] [-<end-page>]

the document number, if present, must be followed by a dot, while the hyphen can separate start-page and end-page or just follow the start-page or just precede the end-page.

Some examples:

  • 1-5 : the first 5 pages of the first (or the unique) PDF document attached to the OER of an OER node; also, the first 5 pages of an online PDF document accessible through the url field of the OER associated to an OER node (*)
  • 1-5, 7-10 : pages 1 to 5 and 7 to 10 of the first (or the unique) PDF document attached to the OER of an OER node
  • 1. 1-5, 2. 10- : the first 5 pages of the first document, followed by pages from 10 on of the second document
  • -150: this single range can specify to play a YouTube video and to stop after 2.5 minutes (= 150 seconds).

(*) This affects only the LP export function; in the LP play view all pages of an online PDF document are shown.

Learning Paths

Types of Learning Paths

There are three types of learning paths, having increasing complexity level:

  • Collection. A collection is an unorderet set of nodes, acting as proxies of OERs; each Node references an OER inside the CommonS Platform; more nodes can reference the same OER. Nodes can be added to a collection and deleted. Editing and deleting a Node doesn't impact the referenced OER.
  • Sequence. A sequence is a collection where all nodes are chained, so that there is a root node, a tail node and possibly intermediate nodes; each couple of subsequent nodes is linked by a directed edge, but in sequences edges are unvisible to the user. New nodes are appended to the sequence (linked after its tail); besides deleting a node, it is possible to move a node up and down the sequence. An empty sequence can be created and then nodes appended to it; but an utility operation also exists to convert a collection to a sequence: its nodes are initially sorted based on their creation date and time. When an intermediate node is deleted in a sequence, its child node is connected to its parent node.
  • DAG. A directed acyclic graph (DAG) is a generalization of a Sequence: each node can be the child of more than one node and the parent of more than one node. An LP of type DAG could even consist of several unconnected sub-graphs; the only constraint is that no loops can exist, that is a node cannot be an ancestor of itself. The latter constraint, concerning the LP structure, does not refer to the structure of the actual path followed by a learner in making use of the educational materials.

Please, note that

  • currently, the possibility that in a DAG a node be the child of multiple nodes is not so meaningful
  • the popular tree structure is a special, simple, case of the DAG structure
  • most learning paths of type DAG that you will find in CommonSpaces are in fact trees.

Creating and editing a Learning Path

A LP can be created by the project members inside projects of type "Learning path creation", where it is possible also to create or catalog OERs. LPs can be created also in projects of special type, such as support projects, mentoring projects and rolls of mentors.

Creating a LP is a way to reuse OERs; however, in principle, LPs themselves could be reused to create other LPs, for example by having a LP node that refers to another LP, just like in coding a function can call another function as a subroutine. This isn't available yet. Rather, it is possible to use a LP as a template, as a starting point in creating a similar one: while navigating, you can bookmark a LP, go to the homepage of a project where you own proper rights, and clone that LP; the new LP, being created in the DRAFT state, is an accurate copy of the original one, but for two details: a) the attached file is removed from a document node and its name is written inside the text field of the node; b) only the version in the original language of the language-aware fields is kept. Cloning a LP (bookmark and paste action sequence) is similar to moving a LP from a project to another (cut and paste) and to sharing inside a project a LP that was created inside another project (bookmark and share).

A LP can be edited by its creator, by the project supervisors and by project members to which the LP creator has granted the editor role. Editing a LP includes setting its metadata and manipulating it by adding, removing and reordering nodes.

To be seen by users other than the project members and the project supervisors, a LP must be published by a project supervisor, after that its creator has submitted it for publication.

A LP can be created also inside the private space of a user, which is accessible from the user dashboard. A LP in the private user space cannot be published, but it can be moved to a project of which the user is a member, by using a cut-and-paste functionality.

Manipulating Learning Paths of type DAG

An empty DAG can be created and then nodes added to it; the structure of a DAG is edited through visual manipulation:

  • to create an edge (link) from node A to node B, node B must be dragged over node A
  • an edge can be deleted by clicking on the red "x" icon that is shown when the mouse is moved over the edge itself
  • a node can be deleted by clicking on the red "x" icon at its top-right corner; when a node is deleted in a DAG, all edges connecting it to other nodes are deleted too.

Reordering sibling nodes (nodes being children of the same node) is performed by operating on the edges linking them to the parent node:

  • to move an edge just after another edge, the first one must be dragged over the other one; currently this operation is a bit awkward: you must avoid to click on the red "x" used to delete the edge; in the case that the operation is not effective, you can retry it after reloading the page.

Please note that currently, after the execution of each graph manipulation operation, there is some delay due to page reloading.

Converting a Sequence to a DAG

The author of a LP, can convert it from the Sequence type to the DAG type. The conversion  can happen in two different modes, corresponding to two different button icons in the view of a LP of type Sequence:

  1. making the first node of the sequence the root of a tree in which the other nodes become 1-st level children; this conversion mode is suggested only for a sequence of a few nodes
  2. keeping the linear ordering of the sequence.

Both operations can be used as a preliminary step, to be followed by further manipulation/extension of the graph.

The inverse conversion, from DAG to Sequence, cannot be performed directly: you must first convert the DAG to a simple Collection and then convert this to a Sequence.

A suggestion for creating a new LP of type DAG

Creating a LP of type Sequence could be simpler when laying down the outline of a new LP. On the other hand, at a certain point, the DAG structure becomes more convenient. The following steps could represent a good compromise: 

  1. create a LP of type Sequence
  2. add, in the order, an introductory node and then a small number of nodes corresponding to the main LP sections (with short labels!)
  3. convert the LP to type DAG, using the Sequence-to-DAG conversion operation of mode 2
  4. in the order, add nodes (both "OER nodes" and "connective nodes") corresponding to sub-sections and to sub-sub-sections.

Exporting the Learning Paths

Identified (logged-in) users can generate and download, for their own use, a linearized PDF version of a LP.

The export function visits the nodes of a LP in the same order as the play function. It generates one or more PDF pages for each node, besides a LP cover page, and concatenates them. Here are some details concerning the processing of different node types:

  • OER nodes with attached documents: extracts the entire content of the PDF documents or the "slices" specified by the range field
  • other OER nodes: generates a page with some metadata, such as title and description; appends additional pages, if a range is specified, for online resources accessible through the url field of the OER, such as a web page or a downloadable PDF document
  • document node: extracts the content of the PDF document
  • text node: generates a page by rendering the HTML content of the rich-text field. 

Thus, the structure of the PDF document mirrors that of the play view, even if the content is different, especially for OER nodes referring online resources: the result is dependent on the value of the range field of each node, which in most cases doesn't affect the way a resource is visualized in the play view.

Exporting a LP as a PDF isn't a real alternative to interactively playing it, but could be useful for documentation and revision of the learning paths: sometimes one could like to produce an "artefact" that could be exchanged off-line.