Hello and welcome everyone. Thank you for joining us today. This is an Advanced
Distributed Learning Initiative technical webinar. We're conducting a
series of these so you will get an invitation in your inbox each quarter
with the details of the upcoming webinar and if you follow the ADL Initiative on
social media we'll be posting the topics there as well
if you know anyone else who would like to be on a distribution list for these
webinars please feel free to have them reach out to us and we can add them to
the list. A quick plug before we begin, did you know that iFEST is coming up?
iFEST is the innovation-, instruction-, and implementation-themed Federal eLearning
Science and Technology symposium. It's happening August 27th through 29th and
we're going to drop the link to the iFEST website in the chat and you can go there
to check out all the details. Today's technical webinar is titled, "xAPI How To:
Working with the Vocabulary Server and Creating Profiles." Our speaker is Andy
Johnson, a specifications and standards manager and SETA contractor with the ADL
Initiative who has more than 15 years of professional experience in distributed
learning technology. Andy will be speaking for about 45 minutes and there
will be time at the end for him to address your questions. To ask a question
you can click on the questions panel in the GoToWebinar window and type your
question there. Andy will try his best to get to as many questions as possible
within the time allotted at the end. This webinar will be recorded and we will
distribute a link via email afterwards in case you would like to share it with
your colleagues. Without further adieu, I'd like to introduce you to our speaker,
Andy Johnson. Take it away Andy. Thanks Liz I'm going
to go ahead and get started because there's a lot that I want to cover today
and I do want to try to leave time for questions so I'm going to just jump
right in and skip any formalities and introducing myself as Liz took care
of it. So why are you here? I thought of five reasons and here's the top five I
could come up with. And they're kind of on a sliding scale. Number five, your
boss signed you up and you really didn't have a choice in the matter.
Number four, you've heard a word buzz word like CMI five, SCORM profile, or
video profile, and you wanted to really see what that was about.
Number three, you've been told to implement the experience API and
are beginning to realize it isn't quite as simple as just populating a table or
looking up something and typing something in a forum. Number two, you
really "get it" when it comes to xAPI but you want to be sure that you're
following best practices when creating statements and vocabularies and really
designing a learning experience that you want to have tracked. And number one, you
and/or your group has developed guidance on the topical area and want to share it
with a larger community so everyone in that area can implement it as a best
practice. #unicorns #gumdrops #rainbows #fluffykitties. Ideally that's
if you're that type of person thank you for joining because that's hopefully
what we can all get to someday is really trying to recognize our topical
expertise, provide guidance to those who are implementing. Now before we get too
far, there just to make sure everybody is kind of on the same page of what we're
going to do today, prerequisites is getting the full value of this webinar
is is understanding xAPI. Now I don't mean that to be you have to understand
what every single call is you don't have to understand the ins and outs of JSON
structures and vocabularies you don't have to be an instructional designer but
you should conceptually get xAPI from at least what we- when we talk about actors,
verbs, activities things like context and results and even if you don't-
hopefully we can drop enough bread crumbs along the way that you could
figure out through some context where we are and what we're talking about. So in
other words this is not an xAPI 101 session but there's a lot of cool stuff
we're going to hopefully get to. So I wanted to start by disambiguating this
word we call profiles. Now what is a profile? Now one of the answers that you
might get is this less informative answer with where someone tells you when
I asked you when they asked you me how do I do something with xAPI? How do I
implement video with xAPI? How do I implement air force simulation training
with xAPI? Somebody might -- just may tell you "a profile" and a lot of times
that's how the conversation ends. But really when we start
talking about profiles, on another level, it's specific requirements that
beyond the base xAPI requirements and provides a means to comply with
expertise in a specific topic area and on another level deeper you can follow a
profile in in one of two ways either strict technical language. You might find
you know in... similar to lawyer-speak you have musts
and shalls and shoulds. That's what makes up technical specifications that
things like xAPI do and profiles accordingly would also do that or
there's also this notion of supporting the intentions of what we call a
community of practice. That is, a group of people gets together and decides
something important. So, this last bullet kind of gets to a pain point that we
sometimes see so let's say there was a medical profile of xAPI and embedded in
it could be such things as, "do no harm to the patient." That would be a community of
practice kind of underlying intention but it can also have technical things in
it like, "the way to measure blood pressure is with this specific verb and
a value range of Y to Z." And that's strictly technical so a profile really
can hit either of those meanings and we're going to talk mostly today about
the strict technical languages because that's what the xAPI profile and
profile server and profile specification are about. So, I know because I did want
to show this webinar live and I wasn't really comfortable with cmi5 -- sorry
-- what the GoToWebinar capabilities of recording. I didn't want to do anything
live also I've just given too many live demos that didn't work well so I'm going
to have screenshots of everything you can see the URLs in here though and I'm
going to I have enough of the screenshots that I can walk you through
what we're doing but I did want to make these slides as clear as possible as
well in case the distribution of the recording isn't as good and we want it
and you wanted to instead just look at the slides as we went along
or if you got these slides after the webinar. But what we're going to talk about
today is some of the main functions of the vocabulary server which are browsing,
searching, metadata, resources and then we're going to get together how all this is
tied to the length data. So, for reference here the this is the home page of xapi.vocab.pub
and you'll see here that I'll just mention the contact the contact has
how to contact us and I did want to mention to part of the reason that I
want to show off this capability today is because we're looking for feedback on
this. We have some projects and some resource allocation that can make this
capability better so if you see things that you would if you think of
capabilities you'd like to have improved or do you find value in this please let
us know because you can go to how we fund the project and the different
capabilities we enable in it. So I wanted to start off with we're just going to
browse it's the main function of the of the vocab server. Most time you're going
to go here because you're going to want to start by browsing because usually
what you'll do is you'll show up and you'll think I'm kind of curious what
verbs are out there I'm kind of curious what activities are out there.
Now what you see if we go down if you click that Browse page we get into browsing
concepts. Now, concepts is a new term if you're only familiar with xAPI
specification, the word concepts doesn't really come up. Now, concepts are term
coined for the profile specification because it's grounded in linked data and
those of you familiar with RDF and Link data are going to be familiar with the
notion of concepts. In an xAPI context really what we're talking about concepts
we're talking about verbs, activity types, extensions, really the parts of xAPI
that have these specific identifier or IRI that you would want to coin or
a.k.a "define" for other people to use that you would anticipate being in some sort of
online vocabulary. So when we say concepts that's essentially what we're talking
about so if we browse concepts for example we can browse all the verbs. On
this page, all the verbs are listed whether it was coined by ADL, another
community practice, and even those that were released prior to one that was xAPI. So,
that if you look here the verb has that long name that is a unique identifier
it also has a title which can basically be the equivalent of the combination of
the short form or display form of the verb as well as the language it's coined
in. Now it's worth noting that we don't and we don't expect that each term each
verb has its own English Spanish Chinese translation we don't want all the
different IRIs per language rather the vocabulary server with where it was
deployed or if it provided an English or a language option would know what to
give you back in terms of alternate titles and descriptions we would want
everybody using the same verbs because we want analytics on those verbs to be
consistent regardless of the language used we wouldn't we wouldn't want to
split on those particular verbs simply because of language. So, as we as we
continue to browse down we look for some dupes or duplications. So, I specifically highlighted a
section here to look at the completed. As you can see there's three different
verbs that start with "completed" in terms of the middle title value. There's
one that says" completed"@en, another that says "completed"@en, another that says "completed
assignment"@en. And when we talk about coining verbs we want to be careful that
we don't necessarily go too far out of our way to define a lot of different
verbs that have the same tokens. Now these are unique so all these can
peacefully coexist but we do want to be careful about coining them. So, for
example, the DoD IFC profile this goes beyond the traditional definition of
what we think of in traditional elearning is completed which is the
second definition which just says, "indicates the actor finished or
concluded the activity normally." We would anticipate that the completed
views above must make sense for that particular community of practice as you
can see in there they actually have a quite a few intentions for that verb. It
has a specific KSA extension value, a specific category extension that
is expected and a specific interactivity extension
we would expect. So, as a recommendation for me I would say that
that would be an example of a term that I would hope would be recoined simply to
not cause conflict with another with a completed verb that already exists. They
are certainly in their right to do that as a community of practice to coin a
verb that means the same thing -- I'm sorry that uses the same
token that does not mean the same thing but these are types of things that kind
of come pop up and we can see as we browse the vocab server that we can find
these duplications easier with the way that it's currently set up. I wanted
to start talking about activity types. Now, activity types are not activities
themselves they are not deployment of activities. So, for example if you
deployed a course, this isn't biology 101 nor is it's biology 101 session one, when
we talk about an activity type we talk about specific things like a course, like
an assessment, like an attempt, different constructs that exist within xAPI that
you might want to define. An activity has a strong strong coupling with verbs that
are allowed within that activity and results that are expected as well.
They're really kind of an alliance between activity types and then the rest
of the values where activity types act like a bucket or a world where things
are allowed or not allowed within a certain community practice. As you can
see, in these activity types we have everything from objectives, to pages, to
paragraphs. Really, you can define any sort of
activity you want as long as it's the activity type as you want as long as it has a
greater meaning associated with it. It's not as strict as verbs for example I
mean really, if you wanted to coin your absolute own activity type that you don't
want anybody else to touch, that would be fine because these these types of things
can be diverse. I wanted to also talk about extensions and I want to provide
some clarity to extensions. There are three kinds of extensions in xAPI.
There's those that extend activities, those in extend context,
and those that extend results. However, all three of these buckets share the same
identifiers. One of the best use cases I've heard for this is an example
of GPS. Now, if you were doing some sort of orienteering activity or targeting
with a missile or something like that, GPS would be the result of perhaps where
that object landed. Hit a baseball, you know, where does
it land GPS? But we can also see the scenarios where it could be contextual.
Where I might just be out in a virtual world picking up objects.
Or the real world picking up objects on a
nature hike or something. And I want to document where I'm finding things. That
result for let's say a found verb, I found an acorn, I might not necessarily
have the GPS as a result but it might be useful contextually to find out to
figure out where I am we don't anticipate that everybody has a results
of GPS for everything, but there might be situations where people are using that
as valuable context. Now, what we don't want to have happen is when those
communities or those people that decide that, "hey, my bird that I'm
tracking the results of GPS might have a correlation to you walking the field" and
contextually the GPS is there. We don't want those identifiers to miss each
other, so extensions all should have the same identifier so we can enable better
analytics when these unintentional or you know, after-the-fact
queries are thought of to to generate learning analytics and data
visualizations. Now, I'm going to talk about each of the three types of
extensions because I wanted to provide some disambiguation
between them. So, the first set of extensions and honestly the least used
activities. And this is because extensions and activities are basically
metadata that occurs within the statement. And it's a little bit of a
misuse if you ask me because the reason to include an activity extension if you
thought about doing that it means that the xAPI spec really isn't
giving you the metadata coverage you're looking for and it really has the
structures to do that because there are two areas of metadata that xAPI
provides. And first is the resolution of the activity IRI itself. So, when you say
I did this in xAPI and this represents some sort of content page or course at
the resolution of that is supposed to be some sort of metadata about that content.
There is also a more info link that you can use that is also supposed to result
to other metadata so between those two constructs of having metadata in xAPI,
metadata's really supposed to exist independent of the runtime independent
of the event. So, needing activity level metadata at the time of the
statement occurring is probably not as likely as it should be. Now, the second
type of extensions are context extensions and this is where we
really start getting some value added because what they do is they determine
the context of the learner or performer in the xAPI statement because xAPI
situated in time and around other experiences there are a lot of different
things that activity providers might want to offer other than simply keeping
track of time. For example, whether there's a lot of different outdoor
activities that weather might be a strong factor in how you might want to
disaggregate data based on the weather. So, capturing context such as that might
be really important. Maybe time of day, well xAPI is
time stamped. It might be useful to capture the fact that whoever is taking
the training is actually has actually been awake for 18 hours, for example. They
could actually be in a different part of the world those types of things might be
valuable when you're doing analytics so to capture that context is really useful
and xAPI doesn't have a lot of context built in largely for the same reason
it doesn't have a lot of result extensions built in because
really, xAPI tracks such a diverse amount of data and can track any kind of
experience that we can't think of everything nor do
we expect to think of everything we anticipate that would be handled through
extensions. Now, when we talk about results extensions we really have to get
to what are results and results are that that evidence that exists when xAPI
tracks an experience. A lot of times when we choose a specific verb we have some
sort of numeric value in mind that's something measurable and we want that
measurement to be captured in a specific way and that's where results, which in
xAPI's results, where traditional learning content comes in but it's also where we
can coin new terms to track other types of experiences that aren't included in
the base xAPI specification and that would certainly be included in a profile.
Next type I want to talk about was the attachment usage types and I want to be
I'm just going to be quick with this because not a lot of people use
attachments but really, there's logical ties that xAPI has. One example
is open badges. So if you wanted to have graphical evidence of what's happened
within a statement then this is what you would want to use. You would grab--
essentially coin an attachment usage type and would implement that in xAPI.
So now -- the next section of browsing
on the vocab server are browsing these different profiles that
exists that have been added to the vocab server. So, if we choose cmi5 for example
and if we click it we're gonna get more information about that cmi5 profile
and this contains a lot of valuable information that's all populated through
the use of linked data. We'll go into some of these fields later but the
profile specification which also uses linked data is really what makes all
this possible. You can see here some of the different things that the cmi5
profile adds to the larger xAPI vocabulary. Now, if we click on the
documentation link for any of these profiles we will get sent off
to the project page. Now, these project pages are going to vary by
community quite a bit because communities are free to do what they
want and define specifications how they want so this is the project launch page
for cmi5 and the cmi5 profile is written with a lot of trim rules but it
also has a lot of regular instructional design type of language to it somebody
who's picking up it could understand it and get conceptually what is going on
it's not simply a list of technical requirements. And similarly if we click
the RDF data link that will actually send us off to the technical profile
page on the xAPI authored profiles part of the GitHub site and really this is
where the magic happens. We're going to talk more about this later but
each of these profiles adhere to the profile specification which allows the
vocab server to process information these compact files and display them in
meaningful ways on the vocab server and it also allows these to be shared
among other web services. So, really, by editing to small files you're enabling a
lot of web capabilities and sharing for the different vocab entries that exist,
enabling some pretty cool stuff to happen with very minor updates to
vocabularies. Now next I wanted to talk about the search function and
this is another capability of the vocab server and for this demonstration we're
only going to cover this batch for this search. If you do know Sparkle though I suggest
you check this capability out at xapi.vocab.pub. Alright, let's put in
something for the faceted search, we're going to do go back to our old friend
completed since I know we had already looked at that earlier we knew that
there are three verbs that started with "completed" so when we search for that we
get a lot. If you do recall we did have the three completed verbs, so where did all
this stuff come from? So, what ends up happening is currently
the search capability does a token search on all aspects of the xAPI
profile from a technical standpoint; looks through all the titles,
descriptions, and all our metadata. And this means that
names, patterns, description texts, are all thrown through but it doesn't pick up
everything and we can tell this is our kind of mixed results, it's not
categorized very well. What this gets to is, the real difference between
human and machine readable and intent and intentions of apps working within
machines. So, for example, this idea of a named graph this is awesome for machines
to look at and create greater meaning out of but it's hard for humans. So
really, it's it's an interesting paradigm of which to choose and what to do
with it. So let's try different, let's try to narrow our search results. I'll try to
search for completed and verb and we didn't get any results as you can see we
still have a lot of work to do to make this search capability more useful to
a human but we have to get more information in we can make these more searchable for
humans part of the reason is the
capability is machine focused is because that aspect is so easy in terms of
having to do updates and software development. It's much easier to use
these existing constructs like RDF, SCOTs, and OWL to make web applications that
are machine readable. The human readable part where you start getting the fuzzy
searches, gets a little trickier. Alright, so this one more shot and we did completed,
then compete instead of completed, what do you guys think, 0? Less than 25? 25 exactly?
How many we can get? And the answer is 2 and this this kind of drives home the
point of fuzzy search versus graph search. Completed and completed complete
and completed are different tokens but we as humans would really hope that
these would behave similarly so this is you know one area I could see the
profile server needing improvement but I didn't want to show that part off just
because I think we have a ways to go but I want you guys to see it
and you know hopefully you agree as well that we could spend some resources to
help make that better and that you get of use cases that would be enabled by
that. Alright, so if we end up clicking into any of these entries we get
metadata which is really good because again, this is what we anticipate
would happen with machine learning that you could go out and the different
fields that are populated that are shown in those files can all trickle down and
many of these are all linked when we talk about link data you can click on
any of these links and essentially dive down into it so here's this accomplished
verb and if we click or we can look at all the RDF verbs that exist or all the
RDF types of verb that exist and really could you can click all the way down and
all these things are cross linked and it's not like somebody had to sit
down and program 200 web pages it just makes it that easy to use linked data to
create web infrastructure. Now, I did want to talk about curation because some
of the some of the things that when we talk about a full cab server there are
some responsibilities that need to be done and there's some processes that
need to be done so just as a museum curator is responsible for the exhibits
in a museum curation of the vocabulary server is necessary to make sure that
it's relevant and really optimized for use. It needs to be pruned down and some
certain capabilities or some certain terms might go out of style, might get
versioned, so some of these responsibilities will need to happen.
Sometimes we might have a curator that decides something, there's certain
community practices should be included in this profile server and some
that shouldn't. I can't think of a good reason not to but it's you know
similarly to how curation of a museum is done, there are certain things that
you would want to have people see and some things that might be highlighted
more than others and they need to understand when things get deprecated or
things become incorrect those types of things need to get pruned out. Curation
adds value to the vocabulary terms and as we've seen some of the functionality
of the vocab server. There are some great benefits in some areas where others
still need to have work to be done. Curation really enables
a high-level view of those types of services provided and to make sure that
things like interfaces, programming methods, and web services, are all current
and valuable. And the other side of this is governance so when we talk about
governance in digital vocabularies we're talking about the collective management
of the entire capability and that is all xAPI vocab. And when we talk about
governance it's really a process that provides roles and responsibilities as
well as rules for the collective benefit. xAPI is a community driven effort and
you would want to have the largest possible collective benefit for that
community so then that biggest question becomes, "who is in charge?" Now, while ADL
has stood up this vocabulary server are we the logical curators of all the xAPI
vocabulary terms? Is that something that's handed off to individual
communities of practice? And how does that work?
Because really, governance includes access to these curation
responsibilities and this can be a challenge because if there's too few
curators it could cause a slow curation process similarly if it's if
there's a lot of bureaucracy behind it it can also slow things down. However, if
it's a little more fast and loose with multiple curators there could be
more duplicates there could be things coined that might not be necessarily for
the betterment of everybody and we could end up having poor design
choices sneaking through so it's kind of a double-edged sword. It's two sides of the coin, you've
got to pick one of them or somewhere down the middle and ADL is looking to
determine what the governance should be - so another area we'd like
your feedback in is what are your expectations for curation
responsibilities and governance of xAPI? Not necessarily just a profile server
but xAPI vocabulary as a whole. So those are the types of questions we
have and hoping to get your feedback on.
So now I want to kind of switch gears now that we talked about governance and
curation I want to start talking about how do we create a profile?
And do you really need a profile? So it starts with designing and understanding
the data that you're capturing and I think that starts with the outcomes that
you're trying to determine. If you have content that's out there and it has a
purpose you've likely already determined the outcome but if you're going to
track you really need to know what those outcomes are because you're gonna
have to determine what you want to track. Now you might not necessarily need to
know the specific things that you want you want to track to get outcomes on
those might come later those might have some surprises but you should have an
idea of what you're trying to do. And then as we start drilling down we need
to look at, what is the underlying conceptual behavior we're looking for? So
for example, if I'm in a virtual world I could be clicking on things all over the
place but that doesn't mean I want to use the verb clicked a million times.
I want to understand what is that performer in the virtual world doing
when they click an object. Do they intend to pick it up? Do they intend to activate
a lever? What is the intention of that user and then also to build on complex
behaviors. Let's say they click an object -- but the intent -- they click on like
three objects in a row, the intention isn't necessarily to do three clicks or
even those three particular tasks. Those might roll up into some sort of
maintenance task or procedure that needs to be done that you can identify
conceptually because of that behavior and then we want to be able to track
that so you need to understand what is the underlying conceptual behavior not
just the action. And then which activities can it take place in?
As we talked about activity types before, activities themselves act as buckets of
information where only certain statements will make sense. And then to
bring it back to that clicking concept. What type of event can track it within
the activity? So, not just when I talked about the different things you can click.
Click might not be the right verb, but it is the right type of web event. Mouse
clicks, mouse overs, typing, using biometrics, those types of things
can all act as events that can initiate these statement
generations to happen and allows you to track with an activity. Next what is
actually measured when we talk about before -- do you want
evidence of performance or learning? Then you need to decide what you're going to
measure and accurately do that and determine that from the start because if
you end up not measuring from the start it's going to end up biting you later
that you did decide there was something worth measuring and then of course
having the instrumentation to do that. In a similar vein what types of contexts
are important to understand about this behavior? And that's probably the hardest
thing to do is to think of what context is relevant to what's going on because
that's where you really need to dig in deep to what is going on in the entire
environment of learning or training that you can pull in. And then again how can I
retrieve this data? Mostly that could go back to context if I do recognize the
context is important, how do I determine what that is? What does that look
like? How can I retrieve that data? And then finally once we start getting that
data what are some of the questions we can answer with it? What are what are
some interesting ways we can correlate it together? Because we're going to be
able to because of the nature of xAPI it's pretty easy to create data
visualizations but it's still hard to design data analytics to get at
specific outcomes that you might be looking for in specific research
questions you might want to have answered. So let's say you've
decided now that you've designed your solution at least in terms of
terms now you want to figure out, does an xAPI solution already exist or how,
what do I need to do to make this xAPI viable? So first you want to look for
terms or profiles in the vocab server and follow the breadcrumbs to a
community of practice. As we showed before
you could scroll down, browse through the verbs, realize there's something you
might be able to use, and then follow it back and see if that makes sense.
Do you trust that community of practice? Did they implement it in the same way
that you want to to use it? Look at the entire profile. Does the entire profile
have benefits? Maybe it's a good place for you to start before you start coining
all your own terms to look into how many of them make sense. Now if you aren't
finding what you're looking for it might be in your best interest to create a new
vocabulary term or an entire profile. You can use multiple profiles so, let's
say there was just one part of a profile you didn't want to use instead you want
to coin your own term, most profiles are extensible in that they are only going
to look for specific terms in them and then not really care too much about what
else you might use to define your own terms. And then participating in
xAPI groups to see if it's something that could have broader use in the
community or if it's just your own solution, maybe you can get that profile
to adopt your idea and then recognize that some terms within profiles have
strict rules and then you can actually loosen or create couplings with result
in context. So you might, what I'm saying with this is, you might like a certain
verb, it might make sense for you to use it, for example, "completed," but you might
want to add in additional results or context. For example, the video community
of practice has talked about this where their definition of completed is
they might - they watch the entire video. Now the useful context to that might be,
"how long was the video?" If I'm talking about completion that might be something
that's useful to capture. So is it for that profile if you were to
essentially tag that profile video with a context category there would be
an expectation that you would follow not only the regular verb rules but also
those introduced by that community of practice. Now if you do decide to create
your own term, I want to talk about how do you coin that term. IRI design is
really important for reuse and a best practice for IRIs is to use a
persistent resolution service. The xAPI community is using the
W3Cs service of the W3ID.org service for this purpose
and that's why all IRIs in xAPI, I feel like should begin with the W3ID.org
domain. Now you'll notice that some older IRIs were generated before
the communities established this best practice and it we'll talk about that in
just a little bit but I did want to make sure that is brought up that there's the
reason for that is basically we don't want duplications in analytics. So we
don't we're not going to recoin "completed" and then see early adopters,
authoring tools, things like that have conflicts with "completed."
Remember that all extensions are created equally in terms of if
you do coin an extension don't even though some of them in the ADL
vocabulary do and which might need to be curated down or etc. Keep extensions
generic because they might be used cross community of practice and when you're
coining a term make sure that that it is quite different from what exists.
Basically, if even though the IRIs are human readable they're intended to be
unique and represent a concept not necessarily a token. So for example, as we
saw earlier there are multiple "completed's" but they meant different things. There's
also other verbs in there that there was intention - you could tell that the
author's intentionally created synonyms just to differentiate the token that was
used. But really unless that token's tied to specific behavior, it's not as useful.
So if it really is just a way to disambiguate I'd rather see a one
added to the end of it than possibly conflicting with other definitions of
the verb. Just to remember just to retokenize it because it's it's not
intended to we don't we don't want multiple verbs that
different things and we don't want synonyms to just exist for the sake of
synonyms. So sorry I went off on kind of a little tangent there. The third bullet
here though I wanted to talk about quickly because I am running out of time
I want to make sure to get through some of this other good stuff in here.
It's combining a term with a profile for best results, so this really is awesome.
When you talk about combining a verb, for example, with a vocabulary such as cmi5
you really do create these great opportunities for base xAPI searching
in statement retrieval to work well. One of the biggest benefits of xAPI
built-in search capability is the notion of the context category, which is
what profiles leverage to distinguish themselves from other statements. So for
example, if I wanted all cmi5 statements all I have to do is, as a part
of my search within LRS, is to set the cabinet context category to cmi5 and
I can get all the statements. So I can search for all completed
statements in cmi5 and get what I'm looking for. I can also search for all
completed statements and see if there are outliers but this ability to drill
down within a profile really empowers profiles to do good things. You can also
list multiple context categories. So let's say there was a logical
intersection in your solution of two profiles that are to be used
you could search that intersection only if that's what you
needed to find even if you just implement part of each. And this is
really driven by creation of good metadata, all of these linked data
principles are. So, on the vocab server, we want to enable semantic
interoperability and metadata has been important since the web was
invented but I wanted to bring that up just because it's going to -- as we
transition next into looking deeper into the profile specification metadata is
going to become more important.
So this is the xAPI specification page and I want to just drill I'm gonna skip
that part but uh I wanted to talk about the ApS profile specification
specifically about json-ld json-ld is an upgrade to JSON which I a px API uses
and really it's a it's a specific kind of JSON jason LD is it works with JSON
it's but it is also syntax for RDF which that makes the resulting profile and
actually a set of triples subjects predicate object triples to be exact
when we talk about this please probe this profile specification so what this
makes is a semantic data set of relationships that exist across the web
and it really allows a lot of cool capabilities we can manage entire
vocabulary infrastructure relationships versioning push pull notifications
semantics and all these web enabled services through just like I said before
editing of these few files I want to talk about again going back to concepts
the industry area there's three areas of the X API profile specification that are
important and the first is concepts these concepts basically take X API
properties and turn them into a little bit more and defining concepts in the
profile servers allows for easy revision of these properties regardless of the
profiles are in and concepts are intended to only be in one profile so
concepts are really what are you bringing if you're defining a profile
what are you bringing new to the party because different areas of the profile
specification and these web-enabled technologies are going to crawl across
all the profiles and figure out what these relationships are and these
concepts really help drive that because you can define relationships between
them broader exact match etc if you're creating synonyms across profiles if
you're creating hierarchy those types of things can
really enable some of these web services to pop for extensions you're going to
want to have a description of recommended verbs and activities so this
is why metadata is important so if you're out there defining concepts and
there's a certain way your community wants things use yes to specify it in
the metadata activities allow the inclusion of typical metadata like name
and description but again you want to include these as concepts in your
profile now the most important part in my opinion of these profiles with the
fall under the pecs API profile specification out of statement templates
and really these describe what's the statements following a profile look like
and there's there's really two parts to these statement campuses the templates
and then there's rules and the rules determine which values inclusions and
exclusions or which valleys are allowed and then whether or not you are supposed
to include it and exclude it for statements so for example if I have a
past verb I would want I would say I have to include a score and if I did
include a score I'd affect that raw score to be between 0 and 100 those
types of behaviors can be templated off within a profile so that once the once
you look at the output of that profile so we talked about searching CMI 5 data
the way that the profile server profile specification would work is I'm going to
define a profile I'm going to search for the profile terms and then I'm going to
see if that profile is followed in that output and that's really where
validation current value add is added and it's revolved around these state
statement templates state the templates are also useful because this is the only
part in the profiler where you're going to be pulling in things from all other
profiles the concepts part has to be a little bit it should be self-contained
to be valuable but here's really pull in all the rules regardless of the profile
that you want enacted as a developer of that particular profile basically you
could say all filt so as I said in the bottom the bottom ball gets to
failed CMI five statements in a quiz must have a score you can make rule that
are specific as that and it's very valuable to do so and then finally our I
want to talk about the third part of these profiles are patterns and patterns
basically are groups of statements that match templates and then they have to be
ordered in certain ways so for example a pattern in via profile might start with
a statement about playing the video and then you anticipate that there are
statements after that about pausing skipping stopping playing again you
would anticipate there's a specific orders will statement occur in and you
would want that process managed you can have gaps you don't have to so the idea
of patterns in gaps as you can acknowledge that you might not know
every statement that's happening but you would anticipate a certain order occurs
that this has to be before that initially it has to be before terminated
I mean that's an easy scoring type example and again remember that you can
use these statement templates across profiles so you can rep even within
patterns you can reference other statement templates to really enable a
reuse of these profiles and that drive essentially will drive web applications
to do more so you know what's what's the big deal about all this you know because
as I said before we can enable a lot but just editing these few files on these
authored profiles we can enable like I said vocabulary infrastructure different
relationships we can do versioning easily we can have notifications when
something gets updated we've managed semantic interoperability
and not to mention the number of web services in there are a lot there are
active web services that are able to pull this and do things on their own
sites authoring tools for example camps could pull this in and not necessarily
have to have a software update to simply work they could go out and look at the
profiles that exist online so there's a lot of power here so in as I'll show you
this will go down to level into the video profile there are different
versions here this versioning really helps because you
can reach back to any other version you can see what they're doing and not have
to worry so much if something does change because these all these previous
versions are linked to within links to data so complete history is always
available no matter what version you're using now let's do a quick look under
the hood so we're going to talk about technical requirements around the
profile that can be used by the idiot vocabulary server and it really starts
at that profile specification and that profile specification was developed as a
part of ADL research so it itself is still research we're still vetting it so
if it if it does is something that works for you fantastic we probably won't know
as much until more of the profile groups continue to implement it and look at
their profiles a lot of those profiles that you saw in the previous page were a
creative interpretation of those profiles and didn't necessarily have as
much involvement from the community of practice so for example to see my five
group is going through their profile that was created and we're finding a few
things that vary slightly from the specification so it is important to -
for you guys to go in there and vet it to make sure it makes sense to you that
it's possible that we have mistakes in there anyways gets the github process
really makes a lot of this work really well the this is an atom text editor
that syncs with our github folders and you can use github on the web or bring
it locally with the app or you can use command line and then if you want to
make an update all you essentially do is fork this repository submit a pull
request to a deal so for example here the video profile is versioning to
version 102 for request was made it sends off and then it's it's quite
simple from there and it's basically just a we have to log in and have that
particular file with to our web capability in and off of those and I
didn't want it I wanted to show a little bit to how this WI talk about w3 IDs I
wanted to show how that really works so what happens is through a single
htaccess file that's controlled by w3c all the redirects from their sight and
the they're Apache server go to the rules
that are in that particular file and really what happens is then all the IR
is are rewritten and redirected to the X API bulkhead server at the exact right
place and this is really cool because the structure that we have put out there
of beginning with mp3 ID and essentially going three levels deep into concept
schema
it's going to concept in schema hopes are the tag of the profiles and concept
in schema will allow any term that's coined to be rewritten
so the w3 ID it's not like we have to go to w3 ID and keep registering terms over
and over when we coin a new term the curation of this is done simply by this
process we coin it we have its added to any profile and it they redirect
correctly and this is just some of the power of the Semantic Web allowing this
to happen so and then it gets the exit the vocab server to work with all this
there's a process and this is kind of the last technical slide I'm going to
show on this just in case some of you are interested and basically these files
have to be rewritten from json-ld which is the profile specifications format to
turtle TTL and there are some online tools that do this and if you can't tell
the difference that's okay but basically our video this is the video profile
rewritten in turtle and then it it goes we feed this to the back end the
vocabulary server in it because it's able to then populate all the vocab
entries there's a lot of online tools for doing this stuff easily such as RDF
distiller to create a JSON lint to validate it so even though this looks
complicated there are tools to make it pretty easy and then I wanted to go back
to so the last a little bit we have to the vocab server we didn't talk about
resources yet here and just wanted to kind of go into that really quick
there's not a lot there I should say there's not a lot there I've covered a
lot of what is there it's probably a better way to say it and this has more
of the technical stuff so you want to get technical this is where really where
you want to go there's there's and that great documentation here again
looking for areas to improve but there are links tool that do make this process
easy and a lot of the guidance that was in this presentation is here I would
like to expand on this section and then finally our goal is to make all of this
easier we don't want this to be complicated
I was there's some way that you can get involved you can provide feedback on
this vocabulary server or the different terms within it as we begin the curation
process that's going to be important but you know what are you looking for in the
vocab so Rican sent it to me I can floor it it on to the relevant research
efforts that we have going on through other performers and then and make sure
that that gets to them because they are collecting requirements in addition you
can join or create a profile working group that there's a use case that you
have or a series of you have join a group on they meet pretty ad-hoc I'm
willing to help facilitate help coordinate that's something that I've
done in the past and continue to do with some of these other active groups feel
free to provide ideas or feedback about the existing profiles so that's x AP I
authored profiles page is out there that has all the different profiles feel free
to open an issue I'm github let us know what's working what doesn't let us know
if we made a mistake in the profile quick sidebar these slides will be
available so don't scramble the right down links they'll be distributed so
should it says it's beginning that's my fault you can read and post our Google
Groups we have a group out there that has a great community response to help
or question in academic and industry type questions in C in computer feedback
to type questions you can give us feedback on our profile specification
itself so if you really can want to go next level and that necessarily tackle
specific profile you can look at the profile specification this structure of
concept statement templates and patterns work for you let us know if there's
something in there that you need to add or take out or etc and then the kind of
last two is just other ways to reach out to me and things I'm interested in
let me know if X API case studies are used cases for profile let's say you
don't have you don't you don't have the time to put in the entire effort but
there is a use case that you see X API being really useful for and you've done
the design work on it let's say let's say you've thought about what are the
health comes what are the different things I'd want to track that's a very
interesting use case and we could you know maybe meet up to determine if that
can be taken to the next level by a technical and other set of technical
people are interested or you can just reach out to me if you want help
discovering relevant groups and efforts I'm very comfortable coordinating these
activities and you know as I hear about them matching you guys up to others to
help coordinate those groups and get you guys move in that's what you want to do
there are other activity resources I am over time by activista mount not too
terrible but I want to leave more time for questions so help again these are
all to be distributed a lot of resources out there to learn more about X API and
the vocab server so with that I'm going to move into questions so let me pop
this out so what I will do is I'll read the question and then I'll provide a an
answer that's hopefully somewhat short okay so could you provide another
example of an activity extension why would I want to do that so again
activity extensions I don't think are overly useful in it with because I feel
that metadata should be captured within the external parts of statements however
the use case I can see for it is let's say you only have statements you know
you're often you know that you're going to be offline and you're not going to
get resolution to those links you might need to put that metadata in the
statements because that's the solution is self-contained and can't get on the
web that would probably be the best use case for it in which case you would just
again capture your traditional types of metadata title description keywords but
because metadata is is customizable and extensible there
might be something there you want to capture for your specific use case next
question are the profiles on the server maintained by the corresponding
communities of practice no they are in a way they're not technically maintained
basically what's been happening it's been Jason Haig behind the scenes for
the most part he's still very involved with curation of this vocab server so
really he's and he's been educating some of our staff on how to do this process
but basically the profile group works to define the technical requirements if
they're able to they translate those into the protections the profile
specification and then from there ETL staff takes over and essentially if that
profile versions up then we move it and basically now at this point when we talk
about Semantic Web changes any changes to an established profile will resolve
in a dot version and that's not a big deal because of RDF and being able to
link across these versions next question how do we add a verb to the verb list so
here again is why be careful about just introducing verbs for introducing verbs
sake I really recommend that you would have some sort of community of practice
get buy-in before you're going to use a verb simply thinking it's a good idea
and introducing it is going in my opinion introduced a lot of confusion
and honestly bloat to what's going on out there I think that solutions should
be holistic or at least modifying of existing solutions so I would say don't
just add a verb define a use case or if you have a use case that's almost being
met engaging a community of practice and see if extending their profile to add
your verb makes sense and again it's just possible to that you might have
such a niche a solution that you're working on this it's not as useful to
add a verb and sometimes that's just the case and that's and that's fine next
question are you thinking there will be a thesaurus so I'll answer this really
quick in the one has to do two with yes that's I'll
answer this question so what we do what we've tried to do is for our definitions
of verbs we use Princeton's wordnet to disambiguate the tokens so we try to
find a token and a specific definition of that token that works in the english
language from word no grammar that is using English but the idea is to create
tokens that have meetings that go in and not just using that token but if we're
net has a specific URL that corresponds to it we try to mimic that grab that
particular token and use that and use word not to disambiguate because I can
definitely tell you that ADL's not we're not a bunch of language experts so we
we've been relying on that word net capability to do those types of things
all right next question
this gets to up this gets to a larger point Celsius I'll read this one the
scorn profile does not match the X ap I used in popular elearning authoring
tools for example the verb answered is used in popular tools but the SCORM
profile uses responded as a verb do you know if anyone is working to unite the
common practice with the SCORM profile so I don't think anyone is working to do
that but the so these the use of the SCORM profile is for those who have
specifically implemented SCORM and you need an exact mapping of what you've
done to SCORM I would highly recommend if you don't need to do exactly what
SCORM does it sounds like sequencing and those types of kind of some of the weird
behaviors of a pot of resume of which I say this
Scorpius has some weird session rules and when you moved from a state based
tracking system like SCORM has where something can be passed completed pass
completed their completion true completion fall completes and true
completion falls and wherever it's left is the last state versus X API which is
a time and enabled and log based tracking system where really you have an
entire activity there are some funky things that happen and the SCORM profile
exists to capture those I highly recommend using the CMI 5 profile if you
have the ability to do so and to didn't want to do SCORM like things but in a
way that community has thought about how elearning has changed and what parts of
swarm worked and didn't work in not being tied to the funky there's just a
few funky things in SCORM that work with that don't work quite right and I think
that respondent verb is probably one of them and again it's it gets to why we
have problems with synonyms because I think answered and responded we're using
that way and now as a result you likely have to query for both so I think that
let's let's try to minimize the damage with that and make sure both Cabul Ares
are controlled interesting well the Microsoft purchase of github
effect to you or you plan to move to something else I think we're good with
it for now if you know they drastically changed things then we might have to oh
here's your session feedback so one for Liz in future go to meeting sessions
could you allow all comments to be visible it's fun to see others questions
sometimes what to think about that I can't give you an answer to that that's
their department the next question is there a standard
template for a use case that works well with defining a profile I would say
probably not because I think profiles are so unique that if you wanted to use
what others are using you can but really it starts with defining those behaviors
defining different conceptual things that are going on and then mapping that
all the way down to what are the actual events I can use to track them I think
from there you can start to answer questions that the main point the main
thing you want to do is give programmers and ifvs speaking the same language
using this notion of actor verb object next question one creating a profile
should we pick from existing list of verbs what happens when those verb
definitions are updated and no longer match our meeting so the verb
definitions really shouldn't be updated so I don't think have to worry about
that so much and again if you're looking for a close conceptual match of what's
going on if it even if it were to change there's our there will have already
likely been enough of inertia of the use in the community that it will have taken
on that previous meaning maybe in addition to the new one
so I wouldn't worry about that the main thing is let's try to keep those tokens
the same so that when we do analysis on the those statements that were not
missing data all right slightly off topic but would like to
know ADL intention toward requiring collection of CMI 5 interaction data for
distance learning yeah that I'm not sure I'm just a contractor for a deal so I
can't really speak towards ADL intentions so that one would have to go
up the chain in Mitch you know how it is with us so I'm sure we can talk about
that offline all right next question what governance exists in coordinating
common use or verbs WTC and not sure what that means but uh right off there
is not a lot of governance I would I would love to hear what people think
about how our governance process should work that's one of the main things I
think we need feedback on is what are your expectations of ADL on this process
how should we bring in different vocabulary terms what are those
processes what are your expectations you know it is a deal rule of iron fist or
does ad allow everything in it that comes to the door somewhere in between
would be very furious to to know that next question for those of us who
definitely do need to make a whole new profile over to love the groups that are
currently working on it is there any initiative we could do that create more
of a workflow that would manage the whole process that is an umbrella tool
to take us through the process I outlined today present the process
schematically and invoke the helpful tools you mentioned at the appropriate
points I would say that you could have multiple webinars simply on designing X
API and x8a profiles in this you know we hinted that a little bit today but there
there are some efforts that are going on in the API Icicle group that are
hopefully going to be able to make profiles more usable more streamlined
and introduce how do you really move from start to finish and creating one
with with more guidance and that's the end of the question so again thanks so
much everybody for coming thanks for staying till the end I'm sorry went over
a little bit but please give us feedback on the webinar on the vocab server on
your expectations of governance and curation for us we want to make this
better for all of you again thanks so much feel free to reach out to
anytime look for the slides thanks I'll talk to you soon bye
Không có nhận xét nào:
Đăng nhận xét