As part of our work for this group should we also consider what others are doing and their approaches to profiles and RDF? What are we aligning our practices with? I think this would be useful information for everyone to have some context around our approaches in the profile spec. Also, do we need to improve our definition of profile?
- Here are some definitions worth examining:
“The tailoring of a specification to suit the needs for its application to a particular community. The source schema is the original schema being profiled, whilst the derived schema is the output of the profiling activity.”
-Application Profiles (2005), IMS Global Learning Consortium
“A profile is defined not to alter the semantics of the resource representation itself, but to allow clients to learn about additional semantics (constraints, conventions, extensions) that are associated with the resource representation, in addition to those defined by the media type and possibly other mechanisms.”
-RFC6906 (2013), Internet Engineering Task Force (IETF)
“Each profile provides a common/structured vocabulary / concepts and terms for describing events such as annotating a document, starting an assessment or grading an outcome. Extending the model involves adding a new profile or enhancing an existing one.
-Caliper Analytics (2015), IMS Global Learning Consortium
“A profile is a specific set of rules and documentation for implementing xAPI in a particular context. Profiles generally provide a particular vocabulary of terms, some created specifically for the profile, and some are referenced from other vocabularies.”
-xAPI Specification (2015), ADL
- Comparing Practices around Vocabulary & Profiles
The W3C Activity Streams & W3C Annotation group both adopted the concept of "application" profiles and also use RFC 6906 below by using the profile parameter and using link to context in the header.
https://www.w3.org/TR/activitystreams-core/#iana
https://www.w3.org/TR/annotation-vocab/#prefercontainediris
Hypermedia & The Profile Link Relation RFC6906 defines a link relation called “profile.” JSON has no semantics and isn’t specified to work with RFC6906, but JSON-LD does! You can link to a profile within the Content-Type header by adding a “profile” parameter to the media type. More info here on media types: https://www.iana.org/assignments/media-types/application/ld+json
For Example:
Content-Type: application/ld+json;profile=“https://w3id.org/xapi/video” and the URI of the profile is where you define custom properties and semantics of the data.
The W3C Annotation Spec has a core ontology/vocabulary and also allows for extending the data model using JSON-LD @context.
https://www.w3.org/TR/annotation-vocab/
Dublin Core profile guidelines (Description Set Profiles):
http://dublincore.org/documents/profile-guidelines/
Credential Transparency Initiative
The word "vocabulary" is used here to refer specifically to a set of terms, a set in which the members are properties, classes, concept schemes, and/or data types. ADL has been attending the credential registry meetings and is interested in vocab and profile compatibility with their approach to vocabulary and profiles.
http://credreg.net/ctdl/handbook
http://credreg.net/ctdl/frameworkschema
IMS Open Badges:
A Profile is a collection of information that describes the entity or organization using Open Badges. Issuers must be represented as Profiles, and recipients, endorsers, or other entities may also be represented using this vocabulary. ADL is interested in vocabulary and profile compatibility with Open Badges and Caliper.
https://openbadgespec.org/#Profile
xAPI Data Model, Use of Context and Extensions
Currently, in many xAPI implementations I've seen we are pushing so much data into non-reusable, custom extensions. I hope this addressed by the profile WG. xAPI created the idea of “context” and “extensions” as additional buckets to store more useful data related to the activity long before JSON-LD was released/mature. Now with the focus on profile data that is more semantically interoperable and reusable using JSON-LD it seems we should at some point re-evaluate the core xAPI statement model and leverage JSON-LD where it makes sense. The object nesting and structure in the xAPI Statement Data Model seems odd and should be flattened in some areas (e.g. properties in Activity Object, Activity Definition Object). I believe this was because xAPI was originally based on simple JSON structures only.
Perhaps this is a bigger spec update? Or not? At some point it should be discussed with this group whether it is feasible or should be part of a major version of xAPI. It seems our use of "context" and "extensions" is wildly different from modern JSON-LD implementations, which could be just fine. It could also lead to confusion simply because of the similar reserved name usage of "context" and "extensions."