arwhyte-caliper-ims q mtg orem-xapi-20160815...using ssl wire encryption & standard lti...
TRANSCRIPT
value proposition
Why Caliper?
data / semantic interoperability
Outcome
AssessmentMedia
Annotations
+
promote
between systems, platforms, apps
Why Caliper?
enable innovation
new analytics service
Why Caliper?
.edu focus
Why Caliper?
Sensor API
caliper-javacaliper-jscaliper-pythoncaliper-phpcaliper-rubycaliper-net
Why Caliper?
LTI integration
Why Caliper?
certification
suite
Why Caliper?
stewardship
project scope(1.x)
Scope: Caliper 1.x
describecollect
transportstore
analyzevisualizereportshare
predictintervene
adapt
instrument persist use
Caliper 1.1 initiatives
sensor updates
doc rewrites
cert suite upgrade
specimpl guideontology
Sensor
caliper-javacaliper-jscaliper-pythoncaliper-phpcaliper-rubycaliper-net
event model revisions
LTI integration
payload thinning
{ "sensor": "https://example.edu/sensor/001", "sendTime": "2015-09-15T11:05:01.000Z", "data": [ { "@context": "http://purl.imsglobal.org/ctx/caliper/v1/Context", "@type": "http://purl.imsglobal.org/caliper/v1/Event", "actor": { "@id": "https://example.edu/user/554433", "@type": "http://purl.imsglobal.org/caliper/v1/lis/Person" }, "action": "http://purl.imsglobal.org/vocab/caliper/v1/action#Viewed", "eventTime": "2015-09-15T10:15:00.000Z", "object": { "@id": "https://example.com/viewer/book/34843#epubcfi(/4/3)", "@type": "http://www.idpf.org/epub/vocab/structure/#volume" } } ] }
createddeletedupdatedremoved
markedAsReadmarkedAsUnreadpostedsubscribedunsubscribed
Discussion Forum Profile
information model
How Caliper differs from xAPI
LTIprofiles
JSON-LD
spec data binding integrations
controlledvocabularies
integral
Event Entity
Information Model
Caliper Information Model
Profile
Event actionaction
entityentity
propertyproperty
Information model: profiles
Assessment Media Reading
BasicOutcomeAssignable
Social
CredentialsAuthoring
Forum
Simulation
Annotation
Session
ProblemSet
current set
future additions?
Gaming
Progress
. . . Rating
Feedback
Badge
new entities?
Problem
Comment
ContentMgmt
Profile example: Discussion Forum
markedAsReadmarkedAsUnread
ForumEvent
MessageEvent
ThreadEvent
postedmarkedAsReadmarkedAsUnread
navigatedTo
viewed
NavigationEvent
ViewEvent
subscribedunsubscribed
Forum
Thread
Message
Collection
event model
{
}
Caliper Event JSON-LD (1.1)
caliper.json
{ "@context": {}}
"@context": “http://purl.imsglobal.org/ctx/caliper/v1/caliper.json","@type": "http://purl.imsglobal.org/caliper/v1/Event", "id": "local string identifier","actor": {<Agent>}, "action": "http://purl.imsglobal.org/vocab/caliper/v1/action#[Action]","object": {<Entity>},"eventTime": "ISO 8601 formatted dateTime w/ millisecond precision","target": {<Entity>},"generated": {<Entity>},"referrer": {<Entity>},"edApp": {<SoftwareApplication>},"group": {<Organization>},"membership": {<Membership>},"session": {<Session>},"federatedSession": {<LtiSession>},"extensions": {}
mapping ofterms
Caliper event / xAPI statement
actor action object eventTime
optional
xAPI statement
Caliper event
actor verb object
id stored
Caliper sourcedId and xAPI id and stored property must be set by the LRS if not set by the event/statement emitter.
id
timestamp context result authority attachments
target generated referreredApp group membershipsession federatedSessionextensions
version
Caliper event: basic / simple
person
viewed
digitalresource
datetime
eventTime
actor
object
action
statement
NavigationEvent / ViewEvent
PersonDigital
ResourcenavigatedTo
DigitalResource . . .
actor action object referrer
NavigationEvent
PersonDigital
Resourceviewed
. . .
actor action object
ViewEvent
Message
replyTo
MessageEvent
Person
actor action
posted
. . .
object
note: reference to the prior message that prompted the actor to post the Message in response.
Caliper event: with context (tag doc)
person
tagged
document
tagannotation
datetime
course
reader
membership
federatedsession
statement
edAppeventTime
group
actor
object
action
membership
studentrole
generated
tags
ePub
frame
session
extensions
sensor
eventevent
Sensor API
event
.send()
.describe()
eventevententity
reading annotation assignable + . . .session outcome
Caliper information model
.send(events)
.describe(entities)
.getStatistics()
event store
Instrumentation: app to store
event store
app
Sensor
shim
{ event: {}}
{ event: {}}
{ data: {}}
mapmap
Instrumentation: apps to service to store
service
app appappapp app
unstructured data flows
event store
Sensor
shim mapmap
map
CPS calls API Key service using SSL wire encryption & standard LTI credentials; callcan be performed outsidedepicted sequence and the API key cached.
Caliper profile service (CPS)
Caliper/ LTI 1.x workflow
CPS responseapiKey, eventStore.url, expiryTime
launch request+ custom_caliper_profile_url, + custom_caliper_session_id
toolconsumer
CPS declared in Tool Consumer Profile
POST
GET
toolprovider
Sensor
sensor config
data stream secured using SSL wire encryption and tuple:apiKey (header), sensor_id &session_id
apiKey scoped to Caliper profile URL; CPS should specify an expiry in order to avoid repeated lookups of apiKey prior to expiration.
Caliper API key service
eventstore
GET
conformance service
Conformance test framework
app
endpoint
eventstore
Sensor
Java JS
Ruby
PHP
Python
.Net
csev ?
conformance test service
Caliper JSON-LD reference library
assert
deploy
unit testassert
validate
http://caliper.imsglobal.org/
Caliper code repos (Github)
sensorscaliper-javacaliper-jscaliper-rubycaliper-pythoncaliper-phpcaliper-net
supportcaliper-centralcaliper-contextscaliper-common-fixtures
sample codecaliper-java-examplecaliper-js-examplecaliper-net-example
publiccaliper-java-publiccaliper-js-publiccaliper-ruby-publiccaliper-python-publiccaliper-php-publiccaliper-net
docscaliper-speccaliper-ontologycaliper-impl-guide
cert suitecaliper-conformance-tests
finis(thanks)
extras(stuff for the director’s cut)
Completed quiz item (AssessmentItem profile)
person
completed
item 01
response
time
course
quiz engine
membership
session
statement
edAppeventTime
group
actor
object
action
membership
studentrole
generated
quiz
actor
quiz
attempt
session
Bluepulse: real-time rating
person
rated
lecture
rating
time
statement
edApp
eventTime
actor
object
generated
scale
action
course
lecture
Caliper event.action (future?)"action": { "@context": "http://purl.imsglobal.org/ctx/caliper/v1/Context", "@id": "http://purl.imsglobal.org/vocab/caliper/v1/action#Liked", "@type": “http://purl.imsglobal.org/caliper/v1/Action", "expression": { "@value": " " "@language": "ja" }}
override default language using aJSON-LD expanded value object
{ "@context": { . . . "@language": "en", }}
default language
Context.json