...
Background: Community Needs Driving The Project
We’ve heard many use cases expressed that illustrate the need to align course content to taxonomies. These use cases are diverse and span a range of needs and outcomes. However, they are all underpinned by a common need of connecting course content to taxonomies, or controlled vocabularies. This is often expressed by the need to “tag content”, or to “add tags to content”.
...
Standardize and control the taxonomies your authors are using to align content to competencies, skills, subjects
Choose to author your own taxonomy, or ingest third-party taxonomies, such as the Open Skills Network taxonomy or Lightcast Skills taxonomy
Value for learners
...
Until now tagging capabilities have been built to support the delivery of specific, narrowly scoped, features. For example, the Discovery IDA has both a simple feature to provide tagging via the Django taggit library, and a custom set of models to allow the mapping of a skills taxonomy to courses. Additionally, a number of course-run-specific metadata fields are stored in the course_metadata_courserun in the edx-platform database. These fields require database migrations to add and remove and are specific to particular deployments of the platform in many cases. While many of the details of the technical implementation will not be understood until the technical design has been approved, there are important considerations that we can list regarding our expected approach.
...
The platform will support tagging based primarily on name-value pair style tags. It will support the following four types:
Field Type | Description | Field (example names) | Tag (value) | Author Experience |
Free-form | Open-ended option to allow any author to add any desired tags; these are all collected in a single (possibly invisible) field for good data management | Tags | Anything author wants to enter | Author sees a field to add as many tags as desired and can free-form add. Could include predictive suggestions of existing tags as they type. |
System-defined | Core tags controlled at the platform level in order to keep consistency across search and discovery and for general messiness control. Admins would not be able to change these. | Language, format/content type, organization | Specific set against each of these. | Many of these would not be visible but some might be integrated into facet search (e.g., content format, language). Most would not be editable. |
Admin-defined fields | Admins can set up specific fields that authors can free-form enter tags on. These would typically be used for instances in which there could be many possible tags but admin wants them organized separately from free-form tags | Outcomes, Learning Objectives | Anything author wants to enter | Author is presented with the field and can enter a single free-form value. |
Admin-defined closed taxonomies | Admins can set up specific fields that require closed taxonomies (including selecting from existing, uploading, manually creating). Includes ability to create child and grandchild hierarchies | Lightcast skills, state standards | Biology, Microbiology | Author is presented with the field and a drop-down (or other UI selection element) to select the value. |
Example of Name-Value Pairs might include:
Field | Tag |
subject | eg Anthropology |
competency | eg Conflict Resolution |
skill | eg Define Stakeholder Roles |
curriculum alignment | eg Operations and Algebraic Thinking |
learning outcome | eg Factor Binomial equations |
level of difficulty | eg Medium |
hours of effort | eg 4 - 6 |
prerequisites | eg Linear Algebra |
...
Taxonomy: A controlled vocabulary in which all the values belong to a single hierarchical structure and have parent/child relationships to other terms, or horizontal relationships to other terms. For example, the Core Subject Taxonomy for Mathematical Sciences Education or the Open Skills Network Taxonomies.
Name-Value Pair: The mechanism to relate tags to data sets, where name functions as the constant that defines the data set, and value functions as the variable tags that belong to the set. For example:
...