A Linked-Data Method to Organize an XML Database for Mathematics Education

Alan Bickel
Elisa Beshero-Bondar
Tim Larson

Balisage 2021: Tuesday August 3 @ 3pm

Context and Scope

Pedagogical Goals and Market Reality

Tim Larson

Big Ideas Learning

Pedagogical Goals

To empower teachers
to assess their students needs,

to plan the learning objects (resources)
that best serve their students, and

to align their teaching
to every student’s learning objectives (competencies).

Learning Objects

In all, a K-12 product line has >10^6 Learning Objects

Math Lessons from K-12   ~10^3 Lessons

Student Editions                ~10^2 Learning Objects per Lesson

Teacher Editions                ~10^2 Learning Objects per Lesson

Practice Resources            ~10^3 Learning Objects per Lesson

Assessment Resources     ~10^3 Learning Objects per Lesson

Planning Resources           ~10^1 Learning Objects per Lesson

Learning Objectives

In all, a K-12 product line has ~10^4 Learning Objectives

Approximately 1-5 Learning Objectives Per Lesson

3-6 Conceptual Levels Per Learning Objective

Math Lessons from K-12 - ~10^3 Lessons

Users and Stakeholders

Over 5 million users and growing.

Students

Reviewers

Support Staff

Administrators

Experts

Teachers

Community

Policy Makers

Family

Correlation Challenges

 

Alan Bickel

Big Ideas Learning

Homogeneity Between Alignment Frameworks

State Standards

Variation in Structure, Progression, and Nomenclature

Composite in Nature

No Commonly Recognized Continuity Between Frameworks

Existing Mechanisms

Limitations of Internal
Measurable Learning Objectives (MLOs)

Written to lessons and units

Composite in nature

Born from and built for print

Specificity

Providing evidence of proficiency

Composite MLOs limit the granularity of available evidence 

Correlation to lessons and units means alignment can't be assured when contents are customized 

Districts, Parents, and Teachers want evidence-based progression reporting

Granularity via Resource Description Frameworks (RDF)

  • RDF in general provides standard representations of taxonomies
  • In education: RDF ontologies provide general descriptions of what's assessed
    • as in X "is a precursor to" Y
    • NOT subject specific
    • They DO ease the expression of correlation
  • There are RDF ontologies of math, but outside the standard ontologies for education
  • State standards for math are not expressed in RDF

RDF XML

What...are you INSANE?

  • RDF has many serializations (Turtle, JSON, XML, etc)
    • RDF XML is often considered "quaint" 
  • Semantic data representation (new context for BIL)
  • Before: entirely relational data mgmt (SQL)
  • RDF in XML: superior semantic precision
  • Human and machine readable
    • Visually more appealing than Turtle
    • XPath-able
  • Not just RDF external querying (the usual reasons), but
  • RDF XML helps with de-duping, fine-tuning an organizational structure

RDF Data Design

An RDBMS Engineer's Take On Semantic Data
 

(with copious guidance from an XML expert)

RDF Data Design

Namespaces

SKOS

LRMI

BIL

  • Labels
  • Entities
  • Definition
  • Transitives
  • Base Collection
  • Alignment Type
  • Alignment Object
  • Resource Type
  • Learning Resource
  • Progression
  • Alignment
    Collections
  • Alignment
    Edges

RDF Data Design

<bil:competency rdf:ID="competency/compare-numbers-by-quantity">
	<skos:definition xml:lang="en-US">Identify more, less, and equal by...</skos:definition>
	<skos:prefLabel xml:lang="en-US">compare numbers by quantity</skos:prefLabel>
  	<bil:extends rdf:resource="competency/compare-numbers"/>
	<skos:broaderTransitive rdf:resource="competency/counting-and-cardinality"/>
</bil:competency>

Competencies

Relationships are:

  • Extensive
  • Transitive

RDF Data Design

<lrmi:learningResource 
        rdf:ID="learningResource/content/investigate/5.1-investigate" rdf:resource="">
        <lrmi:learningResourceType rdf:resource="learningResource/content/investigate"/>
        <rdf:description xml:lang="en-US">NA 5.1 Investigate</rdf:description>
        <dc:title>5.1 Investigate </dc:title>
        <bil:alignmentCollection>
            <lrmi:alignmentObject rdf:resource="competency/decompose-numbers-into-number-pairs">
                <lrmi:alignmentType>teaches</lrmi:alignmentType>
                <bil:competencyType>strategy</bil:competencyType>
                <bil:processType>understand</bil:processType>
                <bil:dok>2</bil:dok>
                <bil:scopeList>
                    <bil:scopeReference rdf:resource="scope/within-10"/>
                </bil:scopeList>
            </lrmi:alignmentObject>
        </bil:alignmentCollection>
    </lrmi:learningResource>

Learning Objects

RDF Data Design

<lrmi:learningResource rdf:ID="learningResource/curriculum/NA/kindergarten/chapter-5/5.1">
	<lrmi:learningResourceType rdf:resource="learningResource/curriculum/section"/>
	<dc:title>5.1 Partner Numbers to 5</dc:title>
	<skos:OrderedCollection>
		<skos:memberList>
			<lrmi:learningResource 
                 rdf:resource="learningResource/content/investigate/5.1-investigate-"/>
			<lrmi:learningResource 
                 rdf:resource="learningResource/content/key-concept/key-concept:-partner-numbers"/>
			<lrmi:learningResource 
                rdf:resource="learningResource/learnosity/activity/in-class-practice-5.1"/>
			<lrmi:learningResource 
                rdf:resource="learningResource/learnosity/activity/connect-to-real-life-5.1"/>
			<lrmi:learningResource 
               rdf:resource="learningResource/learnosity/activity/practice-5.1"/>
		</skos:memberList>
	</skos:OrderedCollection>
</lrmi:learningResource>

Curriculum

RDF Data Design

<lrmi:learningResource rdf:ID="CC.K.OA.A.2">
	<bil:alignmentCollection>  
		<lrmi:alignmentObject rdf:resource="competency/solve-subtraction-stories">
			<bil:competencyType>strategy</bil:competencyType>
			<bil:processType>apply</bil:processType>
			<bil:dok>2</bil:dok>
			<bil:scopeList>
				<bil:scopeReference rdf:resource="scope/within-10"/>
			</bil:scopeList>
		</lrmi:alignmentObject>
	</bil:alignmentCollection>
</lrmi:learningResource>

Standards Alignment

RDF Data Design

<bil:competencyScope rdf:ID="scope/within-10">
	<skos:prefLabel xml:lang="en-US">Within 10</skos:prefLabel>
	<skos:definition>Whole Numbers within 10</skos:definition>
	<skos:broaderTransitive rdf:resource="scope/whole-numbers"/>
</bil:competencyScope>

Scope

Building the Competency Graph

Prototyping First Steps

Data Population 

Form-based data entry for content authors

Data Population 

Traversable collection for iterative edits

Data visualization

Application Structure

Jobs

Entity transformations each handled through their own job

Each job mapped to single 'endpoint' accessible via custom JS API

Each entity has a set of jobs to handle CRUD operations
(this included managing relationships between entities)

  • Competencies
  • Curriculum
  • Learning Objects
  • Scopes
  • Standards (alignment)

Application Structure

Reading Data: Transformations and Aggregations

Transformations are masked through functions in the JSON module.  

Each transformative function has a corresponding JSON alias exposed via JS API

(: template function wrapper to get the transitive hierarchy for a competency :)
declare function local:get-transitive-tree($node as node()*, $model as map(*)){
   let $id :=local:get-request-id()
   return concepts:get-transitive-concept-tree($id)
};
 
 
 (:retrieve transitive tree of a competency :)
    
declare function concepts:get-transitive-concept-tree($competencyId as xs:string){
   let $domain := concepts:get-concept-by-id($competencyId)
   let $hasBroader := concepts:get-broader-transitive-relations($competencyId)
        
   for $instance in $hasBroader
   return ($instance, concepts:get-transitive-concept-tree($narrower/@rdf:ID))
        
};

Abstracting the Database Layer

JS API: GET request

/*
a sample GET request using the JS API, 
limit reqults of learning object tree query to a single node's children
*/

//initialize 
let existClient = new ExistDbClientApi();

// create a query parameter

let queryParam =  `scope=${scope}`;

//declare the ID of requested resource
let resourceId = "learning-object-tree";
                 
//declare our request Options object
let options = {
	resourceType : "json", 
	queryParam: queryParam
}   
                 
// execute the request
let payload = await this.existDbClient.request(resourceId, options);

Abstracting the Database Layer

JS API: POST request

/*
a sample POST request using the JS API, for creating a new competency
*/

//create some post data
let formData = new FormData()
formData.set('my-data', data)
                        ...

//create options object
let options = {
	requestMethod:  "post", 
	requestContentType: "application/x-www-form-urlencoded", 
	requestBody: urlEncodeFormData(formData)
}

let resourceId = "save_new_competency"

let newCompetency = await this.existDbClient.request(resourceId, options);

What the end-user should get

  • Evidence of Proficiency
  • Progression Analysis
  • Remediation & Resources

Evidence of Proficiency

Alignment type shows learning, practicing, assessing 

DoK analysis possible along Bloom's & Webb's Pedagogical Matrices

Individual learning object alignment gives granular breakdowns

Progression Analysis

Scope alignment broadens as learners progress 

Extends relationship provides access to progressive learning axis through the competency graph

Progress toward individual standard proficiency is quantifiable 

Remediation Assistance
&
Resource Discovery

Transitive relationships support resource grouping

Assessment questions bound to competencies allow us to surface appropriate learning objects for remediation

Resource lookup is possible along all relationship facets

The Ecosystem Around the Competency Graph

  • User-facing content server (math contents)
  • Internal CMS (authoring/alignment of content)
  • Standards alignment tools (RDF XML + custom tooling)
    • competency adjacent
    • correlation of competencies to state educational frameworks (pulled from JSON API)
  • Run-time services for surfacing resources 

Integrations with:

The Trouble In Getting To Solla Sollew

  • Is an XML Database the Best Solution for BIL?
    • Tech team background
    • Scaling eXist-dB
    • Do the benefits of RDF XML outweigh the costs of adoption?

XQuery / XSLT Value Proposition

 

  • XQuery/XSLT performs well for data transformation & querying
  • Validation through RelaxNG / Schematron provides data integrity
  • Web developers get to work with data purified by the XML stack

What XQuery / XSLT  bring to the table

Choosing Our Battles: Tech Background

Organizational Web Stack Experience does not include

XML | XQuery | XSLT 

Shifting data manipulation and transformation to a commonly used language increases our development capabilities

Choosing Our Battles: Scaling eXist-dB?

As a textbook publisher, we want to focus on cooking the 'secret sauce', not learning how to build the stove.

Does eXist-dB support:

  • Horizontal scaling ?
  • Clustering / Orchestration ?
  • Enterprise support ?
  • Failover / HA ?
  • Sustainability?

Does a graph database support:

  • Strict data validation?
  • Querying RDF XML serialized as JSON?

So Long and Thanks for All the Fish

Making tough decisions about competency graph implementation

  • Is XML database the horse to bet on? 
  • Can RDF XML exist as a data layer in a graph database?
    (with validation & other benefits of XML parsing)
  • Can we apply knowledge gained through eXist-dB prototyping to other contexts?

Photo by christels on pixnio