@base <http://ns.inria.fr/ludo/v1/xapi> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix cc: <http://creativecommons.org/ns#> .
@prefix dc11: <http://purl.org/dc/elements/1.1/> .
@prefix ns0: <http://purl.org/vocab/vann/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ns1: <http://www.w3.org/2003/06/sw-vocab-status/ns#> .

<http://dbpedia.org/resource/National_Institute_for_Research_in_Computer_Science_and_Control>
    a foaf:Organization .

<>
    a owl:Ontology .

<#>
    cc:license <http://creativecommons.org/licenses/by/3.0/> ;
    dc11:creator <http://www.oscarrodriguez.me>, <https://plus.google.com/106595696646939943813> ;
    dc11:description "This is an OWL formalization of the statements defined in the Experience API (xAPI) specification. It is a module of the LUDO ontology."@en ;
    dc11:issued "2016-02-01"^^<http://www.w3.org/2001/XMLSchema#date> ;
    dc11:modified "2016-08-09"^^<http://www.w3.org/2001/XMLSchema#date> ;
    dc11:publisher <http://dbpedia.org/resource/National_Institute_for_Research_in_Computer_Science_and_Control> ;
    dc11:rights "This ontology is distributed under a Creative Commons Attribution License - http://creativecommons.org/licenses/by/3.0 ."@en ;
    dc11:title "Ludo - Game Model"@en ;
    ns0:preferredNamespacePrefix "xapi" ;
    ns0:preferredNamespaceUri "http://ns.inria.fr/ludo/v1/xapi#"^^<http://www.w3.org/2001/XMLSchema#string> ;
    a owl:Ontology ;
    rdfs:comment "Given the increasing amount of structured data published on the Web, many possibilities are open for creating new types of games that use resources from the Web of Data. In particular, if we consider the subcategory of Serious Games in which the object of the game is to educate the user through the interactive discovery of real-life concepts (associated to Semantic Web resources), the inclusion of a semantic representation of the user profile and his contextual information becomes an important element to recommend the user more accurate concepts. Ludo is an ontology that allows the creation of Serious Games with those characteristics."@en ;
    owl:imports <http://xmlns.com/foaf/0.1/> ;
    owl:versionInfo 0.1 .

<#Account>
    a owl:Class ;
    rdfs:comment "A user account on an existing system, such as a private system (LMS or intranet) or a public system (social networking site)."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Account"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Activity>
    a owl:Class ;
    rdfs:comment "An Activity is a type of Object making up the this in I did this; it is something with which an Actor interacted. It can be a unit of instruction, experience, or performance that is to be tracked in meaningful combination with a Verb. Interpretation of Activity is broad, meaning that Activities can even be tangible objects such as a chair (real or virtual). In the statement \"Anna tried a cake recipe\", the recipe constitutes the Activity in terms of the xAPI statement. Other examples of activities include a book, an e-learning course, a hike or a meeting."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Activity"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#ActivityDefinition>
    a owl:Class ;
    rdfs:comment "Activity Definition"@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Activity Definition"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#ActivityProvider>
    a owl:Class ;
    rdfs:comment "The software object that is communicating with the LRS to record information about a learning experience. May be similar to a SCORM package in that it is possible to bundle learning assets with the software object that performs this communication, but an Activity Provider may also be separate from the experience it is reporting about."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Activity Provider"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Actor>
    a owl:Class ;
    rdfs:comment "An identity or persona of an individual or group tracked using Statements as doing an action (Verb) within an Activity."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Actor"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Agent>
    a owl:Class ;
    rdfs:comment "An Agent (an individual) is a persona or system."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Agent"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Attachment>
    a owl:Class ;
    rdfs:comment "A digital artifact providing evidence of a learning experience."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Attachment"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Authentication>
    a owl:Class ;
    rdfs:comment "The concept of verifying the identity of a user or system. Authentication allows interactions between the two \"trusted\" parties."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Authentication"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Authorization>
    a owl:Class ;
    rdfs:comment "The affordance of permissions based on a user or system's role; the process of making one user or system \"trusted\" by another."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Authorization"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#BaseEndpoint>
    a owl:Class ;
    rdfs:comment "The maximal path under all Experience API endpoints, including a slash. E.g. an LRS with a statements endpoint of http://example.com/xAPI/statements would have a Base Endpoint of http://example.com/xAPI/\""@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Base Endpoint"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Category>
    a owl:Class ;
    rdfs:comment "An Activity used to categorize the Statement. Tags would be a synonym. Category SHOULD be used to indicate a profile of xAPI behaviors, as well as other categorizations. For example: Anna attempts a biology exam, and the Statement is tracked using the CMI5 profile. The Statements Activity refers to the exam, and the category is the CMI5 profile."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Category"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Client>
    a owl:Class ;
    rdfs:comment "Refers to any entity that may interact with an LRS. A Client can be an Activity Provider, reporting tool, an LMS, or another LRS."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Client"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#CommunityOfPractice>
    a owl:Class ;
    rdfs:comment "A group, usually connected by a common cause, role or purpose, which operates in a common modality."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Community of Practice"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Context>
    a owl:Class ;
    rdfs:comment "An optional field that provides a place to add contextual information to a Statement. All properties are optional."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Context"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#ContextActivity>
    a owl:Class ;
    rdfs:comment "Context Activity"@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Context Activity"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Extension>
    a owl:Class ;
    rdfs:comment "Extension"@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Extension"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Group>
    a owl:Class ;
    rdfs:comment "A Group represents a collection of Agents and can be used in most of the same situations an Agent can be used. There are two types of Groups, anonymous and identified."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Group"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Grouping>
    a owl:Class ;
    rdfs:comment "an Activity with an indirect relation to the Activity which is the Object of the Statement. For example: a course that is part of a qualification. The course has several classes. The course relates to a class as the parent, the qualification relates to the class as the grouping."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Grouping"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#IRI>
    a owl:Class ;
    rdfs:comment "A unique identifier which may be an IRL. In the xAPI, all IRIs should be a full absolute IRIs including a scheme. Relative IRIs should not be used. IRLs should be defined within a domain controlled by the person creating the IRL."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "International Resource Identifier"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#IRL>
    a owl:Class ;
    rdfs:comment "In the context of this document, an IRL is an IRI that when translated into a URI (per the IRI to URI rules), is a URL. Some communities of practice simply use URL even if they use IRIs, which isn't as technically correct within xAPI."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "International Resource Locator"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Immutable>
    a owl:Class ;
    rdfs:comment "Adjective used to describe things which cannot be changed. With some exceptions, Statements in the xAPI are immutable. This ensures that when Statements are shared between LRSs, multiple copies of the Statement remain the same."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Immutable"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#InteractionActivity>
    a owl:Class ;
    rdfs:comment "Traditional e-learning has included structures for interactions or assessments. As a way to allow these practices and structures to extend Experience API's utility, this specification includes built-in definitions for interactions, which borrows from the SCORM 2004 4th Edition Data Model. These definitions are intended to provide a simple and familiar utility for recording interaction data. These definitions are simple to use, and consequently limited. It is expected that communities of practice requiring richer interactions definitions will do so through the use of extensions to an Activity's type and definition."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Interaction Activity"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#InteractionComponent>
    a owl:Class ;
    rdfs:comment "Interaction Component"@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Interaction Component"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#InverseFunctionalIdentifier>
    a owl:Class ;
    rdfs:comment "Inverse Functional Identifier"@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Inverse Functional Identifier"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#LMS>
    a owl:Class ;
    rdfs:comment "A software package used to administer one or more courses to one or more learners. An LMS is typically a web-based system that allows learners to authenticate themselves, register for courses, complete courses and take assessments"@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Learning Management System"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#LRS>
    a owl:Class ;
    rdfs:comment "A system that stores learning information. Prior to the xAPI most LRSs were Learning Management Systems (LMSs); however this document uses the term LRS to be clear that a full LMS is not necessary to implement the xAPI. The xAPI is dependent on an LRS to function."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Learning Record Store"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#LanguageMap>
    a owl:Class ;
    rdfs:comment "A language map is a dictionary where the key is a  RFC 5646 Language Tag, and the value is an string in the language specified in the tag. This map should be populated as fully as possible based on the knowledge of the string in question in different languages."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "LanguageMap"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#MSM>
    a owl:Class ;
    rdfs:comment "Three levels of obligation with regards to conformance to the xAPI specification. A system that fails to implement a MUST (or a MUST NOT) requirement is non-conformant. Failing to meet a SHOULD requirement is not a violation of conformity, but goes against best practices. MAY indicates an option, to be decided by the developer with no consequences for conformity."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "MUST / SHOULD / MAY"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Object>
    a owl:Class ;
    rdfs:comment "The Object of a Statement can be an Activity, Agent/Group, Sub-Statement, or Statement Reference. It is the \"this\" part of the Statement, i.e. \"I did this\"."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Object"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Other>
    a owl:Class ;
    rdfs:comment "A context Activity that doesn't fit one of the other fields. For example: Anna studies a textbook for a biology exam. The Statements Activity refers to the textbook, and the exam is a context Activity of type other."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Other"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Parent>
    a owl:Class ;
    rdfs:comment "An Activity with a direct relation to the Activity which is the Object of the Statement. In almost all cases there is only one sensible parent or none, not multiple. For example: a Statement about a quiz question would have the quiz as its parent Activity."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Parent"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Profile>
    a owl:Class ;
    rdfs:comment "A construct where information about the learner or activity is kept, typically in name/document pairs that have meaning to an instructional system component."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Profile"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#REST>
    a owl:Class ;
    rdfs:comment "An architecture for designing networked web Services. It relies on HTTP methods and uses current web best practices."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "REST"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Registration>
    a owl:Class ;
    rdfs:comment "An instance of a learner experiencing a particular Activity."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Registration"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Result>
    a owl:Class ;
    rdfs:comment "An optional field that represents a measured outcome related to the Statement in which it is included."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Result"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Score>
    a owl:Class ;
    rdfs:comment "An optional field that represents the outcome of a graded Activity achieved by an Agent."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Score"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Service>
    a owl:Class ;
    rdfs:comment "A software component responsible for one or more aspects of the distributed learning process. An LMS typically combines many services to design a complete learning experience."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Service"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Statement>
    a owl:Class ;
    rdfs:comment "Statement"@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Statement"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#TinCanAPI>
    a owl:Class ;
    rdfs:comment "The previous name of the API defined in this document, often used in informal references to the Experience API."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "TIN CAN API"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#Verb>
    a owl:Class ;
    rdfs:comment "Defines the action being done by the Actor within the Activity within a Statement."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Verb"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<#hasAccount>
    a owl:ObjectProperty ;
    rdfs:comment "Account property" ;
    rdfs:domain <#Agent> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Account" ;
    rdfs:range <#Account> ;
    ns1:term_status "stable" .

<#hasAccountName>
    a owl:DatatypeProperty ;
    rdfs:comment "The unique id or name used to log in to this account. This is based on FOAFs accountName."@en ;
    rdfs:domain <#Account> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Account Name"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasActivityDefinitionDescription>
    a owl:ObjectProperty ;
    rdfs:comment "A description of the Activity"@en ;
    rdfs:domain <#ActivityDefinition> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Activity Definition Description"@en ;
    rdfs:range <#LanguageMap> ;
    ns1:term_status "stable" .

<#hasActivityDefinitionName>
    a owl:ObjectProperty ;
    rdfs:comment "The human readable visual name of the Activity"@en ;
    rdfs:domain <#ActivityDefinition> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Activity Definition Name"@en ;
    rdfs:range <#LanguageMap> ;
    ns1:term_status "stable" .

<#hasActivityDefinitionType>
    a owl:ObjectProperty ;
    rdfs:comment "The type of Activity."@en ;
    rdfs:domain <#ActivityDefinition> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Activity Definition Type"@en ;
    ns1:term_status "stable" .

<#hasActor>
    a owl:ObjectProperty ;
    rdfs:comment "An mandatory Agent or Group Object" ;
    rdfs:domain <#Statement> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Actor"@en ;
    rdfs:range <#Actor> ;
    ns1:term_status "stable" .

<#hasActorObjectType>
    a owl:DatatypeProperty ;
    rdfs:comment "Either an Agent or Group of agents"@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Actor Object Type"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasAgentName>
    a owl:DatatypeProperty ;
    rdfs:comment "Full name of the Agent."@en ;
    rdfs:domain <#Agent> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Agent name"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasAttachment>
    a owl:ObjectProperty ;
    rdfs:comment "Has attachment"@en ;
    rdfs:domain <#Statement> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Attachment"@en ;
    rdfs:range <#Attachment> ;
    ns1:term_status "stable" .

<#hasAuthority>
    a owl:ObjectProperty ;
    rdfs:comment "The authority property provides information about whom or what has asserted that this Statement is true."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Authority"@en ;
    ns1:term_status "stable" .

<#hasChoice>
    a owl:ObjectProperty ;
    rdfs:comment "Array of interaction components"@en ;
    rdfs:domain <#InteractionActivity> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Choice"@en ;
    rdfs:range <#InteractionComponent> ;
    ns1:term_status "stable" .

<#hasContentType>
    a owl:DatatypeProperty ;
    rdfs:comment "The content type of the attachment. https://www.ietf.org/rfc/rfc2046.txt?number=2046"@en ;
    rdfs:domain <#Attachment> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Content type"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasContext>
    a owl:ObjectProperty ;
    rdfs:comment "An optional field that provides a place to add contextual information to a Statement. All properties are optional."@en ;
    rdfs:domain <#Statement> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Context"@en ;
    rdfs:range <#Context> ;
    ns1:term_status "stable" .

<#hasContextActivity>
    a owl:ObjectProperty ;
    rdfs:comment "A map of types of learning activity context that this Statement is related to." ;
    rdfs:domain <#ContextActivity> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Context Activity"@en ;
    ns1:term_status "stable" .

<#hasDescription>
    a owl:ObjectProperty ;
    rdfs:comment "Description of the attachment" ;
    rdfs:domain <#Attachment> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Description of the attachment" ;
    rdfs:range <#LanguageMap> ;
    ns1:term_status "stable" .

<#hasDisplay>
    a owl:ObjectProperty ;
    rdfs:comment "Has display property"@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Has Display"@en ;
    rdfs:range <#LanguageMap> ;
    ns1:term_status "stable" .

<#hasDuration>
    a owl:DatatypeProperty ;
    rdfs:comment "Period of time over which the Statement occurred. Formatted according to ISO 8601 with a precision of 0.01 seconds"@en ;
    rdfs:domain <#Result> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Duration"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#duration> ;
    ns1:term_status "stable" .

<#hasExtension>
    a owl:ObjectProperty ;
    rdfs:comment "A map of other properties as needed."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Extension"@en ;
    ns1:term_status "stable" .

<#hasGroupName>
    a owl:DatatypeProperty ;
    rdfs:comment "Name of the group."@en ;
    rdfs:domain <#Group> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Group Name"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasHomePage>
    a owl:ObjectProperty ;
    rdfs:comment "The canonical home page for the system the account is on. This is based on FOAFs accountServiceHomePage."@en ;
    rdfs:domain <#Account> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Home page"@en ;
    ns1:term_status "stable" .

<#hasID>
    a owl:DatatypeProperty ;
    rdfs:comment "A UUID (see RFC 4122 for requirements, and the UUID must be in standard string form)."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "ID"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasInstructor>
    a owl:ObjectProperty ;
    rdfs:comment "Instructor that the Statement relates to, if not included as the Actor of the Statement."@en ;
    rdfs:domain <#Context> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Instructor"@en ;
    ns1:term_status "stable" .

<#hasInteractionComponentDescription>
    a owl:ObjectProperty ;
    rdfs:comment "A description of the interaction component (for example, the text for a given choice in a multiple-choice interaction)"@en ;
    rdfs:domain <#InteractionComponent> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Interaction Component Description"@en ;
    rdfs:range <#LanguageMap> ;
    ns1:term_status "stable" .

<#hasInteractionComponentID>
    a owl:DatatypeProperty ;
    rdfs:comment "A value such as used in practice for \"cmi.interactions.n.id\" as defined in the SCORM 2004 4th Edition Run-Time Environment"@en ;
    rdfs:domain <#InteractionComponent> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Interaction Component ID"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasInteractionCorrectResponsesPattern>
    a owl:DatatypeProperty ;
    rdfs:comment "Corresponds to \"cmi.interactions.n.correct_responses.n.pattern\" as defined in the SCORM 2004 4th Edition Run-Time Environment, where the final n is the index of the array."@en ;
    rdfs:domain <#InteractionActivity> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Correct Responses Pattern"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasInteractionType>
    a owl:DatatypeProperty ;
    rdfs:comment "As in \"cmi.interactions.n.type\" as defined in the SCORM 2004 4th Edition Run-Time Environment."@en ;
    rdfs:domain <#InteractionActivity> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Interaction Type"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasInverseFunctionalIdentifier>
    a owl:ObjectProperty ;
    rdfs:comment "An Inverse Functional Identifier unique to the Agent."@en ;
    rdfs:domain <#Actor> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Inverse Functional Identifier"@en ;
    rdfs:range <#InverseFunctionalIdentifier> ;
    ns1:term_status "stable" .

<#hasLanguage>
    a owl:DatatypeProperty ;
    rdfs:comment "Code representing the language in which the experience being recorded in this Statement (mainly) occurred in, if applicable and known. As defined in RFC 5646"@en ;
    rdfs:domain <#Context> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Language"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasLanguageTag>
    a owl:DatatypeProperty ;
    rdfs:comment "Language tags are used to help identify languages, whether spoken, written, signed, or otherwise signaled, for the purpose of communication. This includes constructed and artificial languages but excludes languages not intended primarily for human communication, such as programming languages."@en ;
    rdfs:domain <#LanguageMap> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Language Tag"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasLanguageVerb>
    a owl:DatatypeProperty ;
    rdfs:comment "Language Verb"@en ;
    rdfs:domain <#LanguageMap> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Language Verb"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasLength>
    a owl:DatatypeProperty ;
    rdfs:comment "The length of the attachment data in octets."@en ;
    rdfs:domain <#Attachment> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Length"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#integer> ;
    ns1:term_status "stable" .

<#hasMax>
    a owl:DatatypeProperty ;
    rdfs:comment "Decimal number greater than min (if present). Cf. cmi.score.max"@en ;
    rdfs:domain <#Score> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Max"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#decimal> ;
    ns1:term_status "stable" .

<#hasMbox>
    a owl:ObjectProperty ;
    rdfs:comment "The required format is \"mailto:email address\". Only email addresses that have only ever been and will ever be assigned to this Agent, but no others, should be used for this property and mbox_sha1sum."@en ;
    rdfs:domain <#Agent> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "mbox"@en ;
    ns1:term_status "stable" .

<#hasMember>
    a owl:ObjectProperty ;
    rdfs:comment "Member"@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Member"@en ;
    rdfs:range <#Agent> ;
    ns1:term_status "stable" .

<#hasMin>
    a owl:DatatypeProperty ;
    rdfs:comment "Decimal number less than max (if present)"@en ;
    rdfs:domain <#Score> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Min"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#decimal> ;
    ns1:term_status "stable" .

<#hasMoreInfo>
    a owl:DatatypeProperty ;
    rdfs:comment "Resolves to a document with human-readable information about the Activity, which could include a way to launch the activity."@en ;
    rdfs:domain <#ActivityDefinition> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Activity Definition More Info"@en ;
    ns1:term_status "stable" .

<#hasName>
    a owl:DatatypeProperty ;
    rdfs:comment "Name"@en ;
    rdfs:domain <#Account> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Name"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasObject>
    a owl:ObjectProperty ;
    rdfs:comment "Activity, Agent, or another Statement that is the Object of the Statement. Represents the \"This\" in \"I Did This\". Note that Objects which are provided as a value for this field should include an \"objectType\" field. If not specified, the Object is assumed to be an Activity."@en ;
    rdfs:domain <#Statement> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Object"@en ;
    rdfs:range <#Object> ;
    ns1:term_status "stable" .

<#hasObjectDefinition>
    a owl:ObjectProperty ;
    rdfs:comment "Object Definition"@en ;
    rdfs:domain <#Object> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Object Definition"@en ;
    rdfs:range <#ActivityDefinition> ;
    ns1:term_status "stable" .

<#hasObjectExtension>
    a owl:ObjectProperty ;
    rdfs:comment "Object Extension"@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Object Extension"@en ;
    ns1:term_status "stable" .

<#hasObjectID>
    a owl:ObjectProperty ;
    rdfs:comment "An identifier for a single unique Activity"@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Object ID"@en ;
    ns1:term_status "stable" .

<#hasObjectInteration>
    a owl:ObjectProperty ;
    rdfs:comment "Object Interaction Property"@en ;
    rdfs:domain <#Object> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Object Interaction Property"@en ;
    rdfs:range <#InteractionActivity> ;
    ns1:term_status "stable" .

<#hasObjectType>
    a owl:DatatypeProperty ;
    rdfs:comment "Can be an Activity, Agent, Group, Statement or SubStatemen" ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Object Type"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasOpenID>
    a owl:ObjectProperty ;
    rdfs:comment "An openID that uniquely identifies the Agent."@en ;
    rdfs:domain <#InverseFunctionalIdentifier> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Open ID"@en ;
    ns1:term_status "stable" .

<#hasPlatform>
    a owl:DatatypeProperty ;
    rdfs:comment "Platform used in the experience of this learning activity."@en ;
    rdfs:domain <#Context> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Platform"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasRaw>
    a owl:DatatypeProperty ;
    rdfs:comment "Decimal number between min and max (if present, otherwise unrestricted), inclusive."@en ;
    rdfs:domain <#Score> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Raw"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#decimal> ;
    ns1:term_status "stable" .

<#hasRegistration>
    a owl:DatatypeProperty ;
    rdfs:comment "The registration that the Statement is associated with. UUID"@en ;
    rdfs:domain <#Context> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Registration"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasResponse>
    a owl:DatatypeProperty ;
    rdfs:comment "A response appropriately formatted for the given Activity."@en ;
    rdfs:domain <#Result> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Response"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasResult>
    a owl:ObjectProperty ;
    rdfs:comment "An optional field that represents a measured outcome related to the Statement in which it is included."@en ;
    rdfs:domain <#Statement> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Result"@en ;
    rdfs:range <#Result> ;
    ns1:term_status "stable" .

<#hasRevision>
    a owl:DatatypeProperty ;
    rdfs:comment "Revision of the learning activity associated with this Statement. Format is free."@en ;
    rdfs:domain <#Context> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Revision"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasScale>
    a owl:ObjectProperty ;
    rdfs:comment "Array of interaction components"@en ;
    rdfs:domain <#InteractionActivity> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Scale"@en ;
    rdfs:range <#InteractionComponent> ;
    ns1:term_status "stable" .

<#hasScaled>
    a owl:DatatypeProperty ;
    rdfs:comment "Decimal number between 1 and 1, inclusive. Cf. cmi.score.scaled in SCORM 2004 4th Edition"@en ;
    rdfs:domain <#Score> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Scaled"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#decimal> ;
    ns1:term_status "stable" .

<#hasScore>
    a owl:ObjectProperty ;
    rdfs:comment "The score of the Agent in relation to the success or quality of the experience."@en ;
    rdfs:domain <#Result> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Score"@en ;
    rdfs:range <#Score> ;
    ns1:term_status "stable" .

<#hasSha-2>
    a owl:DatatypeProperty ;
    rdfs:comment "The SHA-2 (SHA-256, SHA-384, SHA-512) hash of the attachment data. SHA-224 SHOULD not be used: a minimum key size of 256 bits is recommended."@en ;
    rdfs:domain <#Attachment> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "SHA-2"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasSha1sum>
    a owl:DatatypeProperty ;
    rdfs:comment "The SHA1 hash of a mailto IRI (i.e. the value of an mbox property). An LRS MAY include Agents with a matching hash when a request is based on an mbox."@en ;
    rdfs:domain <#InverseFunctionalIdentifier> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Mbox SHA1"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#hasSource>
    a owl:ObjectProperty ;
    rdfs:comment "Array of interaction components"@en ;
    rdfs:domain <#InteractionActivity> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Source"@en ;
    rdfs:range <#InteractionComponent> ;
    ns1:term_status "stable" .

<#hasStatement>
    a owl:ObjectProperty ;
    rdfs:comment "Another Statement, which should be considered as context for this Statement."@en ;
    rdfs:domain <#Context> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Statement"@en ;
    rdfs:range <#Object> ;
    ns1:term_status "stable" .

<#hasStatementID>
    a owl:DatatypeProperty ;
    rdfs:comment "Statement ID"@en ;
    rdfs:domain <#Statement> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Statement ID"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#integer> ;
    ns1:term_status "stable" .

<#hasStep>
    a owl:ObjectProperty ;
    rdfs:comment "Array of interaction components"@en ;
    rdfs:domain <#InteractionActivity> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Step"@en ;
    rdfs:range <#InteractionComponent> ;
    ns1:term_status "stable" .

<#hasStoredTime>
    a owl:DatatypeProperty ;
    rdfs:comment "Stored time"@en ;
    rdfs:domain <#Statement> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Stored time"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#dateTime> ;
    ns1:term_status "stable" .

<#hasTarget>
    a owl:ObjectProperty ;
    rdfs:comment "Array of interaction components"@en ;
    rdfs:domain <#InteractionActivity> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Target"@en ;
    rdfs:range <#InteractionComponent> ;
    ns1:term_status "stable" .

<#hasTeam>
    a owl:ObjectProperty ;
    rdfs:comment "Team that this Statement relates to, if not included as the Actor of the Statement."@en ;
    rdfs:domain <#Context> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Team"@en ;
    rdfs:range <#Group> ;
    ns1:term_status "stable" .

<#hasTimeStamp>
    a owl:DatatypeProperty ;
    rdfs:comment "Time stamp"@en ;
    rdfs:domain <#Statement> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Time stamp"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#dateTime> ;
    ns1:term_status "stable" .

<#hasUrl>
    a owl:ObjectProperty ;
    rdfs:comment "An IRL at which the attachment data may be retrieved, or from which it used  to be retrievable."@en ;
    rdfs:domain <#Attachment> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "File URL"@en ;
    ns1:term_status "stable" .

<#hasUsageType>
    a owl:DatatypeProperty ;
    rdfs:comment "Identifies the usage of this attachment. For example: one expected use case for attachments is to include a \"completion certificate\". A type IRI corresponding to this usage should be coined, and used with completion certificate attachments."@en ;
    rdfs:domain <#Attachment> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Usage Type"@en ;
    ns1:term_status "stable" .

<#hasVerb>
    a owl:ObjectProperty ;
    rdfs:comment "Action of the Learner or Team Object. Represents the \"Did\" in \"I Did This\"."@en ;
    rdfs:domain <#Statement> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Verb"@en ;
    rdfs:range <#Verb> ;
    ns1:term_status "stable" .

<#hasVerbID>
    a owl:ObjectProperty ;
    rdfs:comment "Corresponds to a Verb definition. Each Verb definition corresponds to the meaning of a Verb, not the word. The IRI should be human-readable and contain the Verb meaning."@en ;
    rdfs:domain <#Verb> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Verb ID"@en ;
    ns1:term_status "stable" .

<#hasVersion>
    a owl:DatatypeProperty ;
    rdfs:comment "Version information in Statements helps systems that process data from an LRS get their bearings. Since the Statement data model is guaranteed consistent through all 1.0.x versions, in order to support data flow among such LRSs the LRS is given some flexibility on Statement versions that are accepted."@en ;
    rdfs:domain <#Statement> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Version"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#string> ;
    ns1:term_status "stable" .

<#isCompleted>
    a owl:DatatypeProperty ;
    rdfs:comment "Indicates whether or not the Activity was completed."@en ;
    rdfs:domain <#Result> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Completion"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#boolean> ;
    ns1:term_status "stable" .

<#isSuccess>
    a owl:DatatypeProperty ;
    rdfs:comment "Indicates whether or not the attempt on the Activity was successful."@en ;
    rdfs:domain <#Result> ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Success"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#boolean> ;
    ns1:term_status "stable" .

<#xAPI>
    a owl:Class ;
    rdfs:comment "Tin Can API is a simple, lightweight way for any permitted Actor to store and retrieve extensible learning records, learner and learning experience profiles, regardless of platform."@en ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "Experience API"@en ;
    rdfs:subClassOf owl:Thing ;
    ns1:term_status "stable" .

<http://www.oscarrodriguez.me>
    a foaf:Person .

<https://plus.google.com/106595696646939943813>
    a foaf:Person .

