@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <https://www.w3.org/TR/rdf12-schema/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix odrl: <http://www.w3.org/ns/odrl/2/> .
@prefix profile: <http://www.w3.org/ns/dx/prof/> .
@prefix role: <http://www.w3.org/ns/dx/prof/role/> .
@prefix airo: <https://w3id.org/airo#> .
@prefix bibo: <http://purl.org/ontology/bibo/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix tech: <https://w3id.org/dpv/tech> .
@prefix dpv: <https://w3id.org/dpv/> .
@prefix aiup: <https://w3id.org/aiup#> .
@prefix dcat: <https://www.w3.org/TR/vocab-dcat-3/>  .

@prefix : <https://w3id.org/aiup#> .

#---------------------------------------------------------
#                       metadata
#---------------------------------------------------------
<https://w3id.org/aiup> a owl:Ontology, profile:Profile ;
   profile:isProfileOf <http://www.w3.org/ns/odrl/2/core> ;
    profile:hasResource aiup:aiup-html, aiup:aiup-ttl ; # if/when other other serialisations are needed just add them here
    dcterms:title "AI Use Policy" ;
    dcterms:creator "Delaram Golpayegani", "Beatriz Esteves", "Harshvardhan J. Pandit", "Dave Lewis" ;
	vann:preferredNamespacePrefix "aiup" ;
    vann:preferredNamespaceUri "https://w3id.org/aiup#"^^xsd:string ;
	# owl:versionInfo "0.1"^^xsd:string ;
	# owl:versionIRI <https://w3id.org/aiup/0.1> ;
	# owl:priorVersion <https://w3id.org/aiup/0.1> ; 
	dcterms:created "2024-04-12"^^xsd:date ;
	# dcterms:modified "2024-XX-XX"^^xsd:date ;
	dcterms:description "The AIUP profile assists in expressing rules over use of an AI system by enabling representing its intended purpose as policies where intended uses, conditions of use, and precluded uses can be expressed."@en ;
	dcterms:bibliographicCitation "Cite this vocabulary as: Golpayegani, D., Esteves, B., Pandit, H. J., & Lewis, D. (2024). AI Intended Use Policy profile 0.1. https://w3id.org/aiup#"@en ;
	# bibo:doi "10.5281/zenodo.10247115"@en ; for if/when there's a doi
	# foaf:logo <https://example.com/logo> ; for if/when there's a a logo
	# dcterms:source <> ; link to AI Act?
	dcterms:license <https://dalicc.net/licenselibrary/CC-BY-4.0> . 

aiup:aiup-html a profile:ResourceDescriptor ;
    profile:hasRole role:specification ;
    profile:hasArtifact <https://raw.githubusercontent.com/DelaramGlp/aiup/main/index.html> ;
    dcterms:title "ODRL profile for AI Use Policy HTML specification"@en ;
    dcterms:format <https://www.iana.org/assignments/media-types/text/html> ;
    dcterms:conformsTo <https://www.w3.org/TR/html/> .

aiup:aiup-ttl a profile:ResourceDescriptor ;
    profile:hasRole role:vocabulary ;
    profile:hasArtifact <https://raw.githubusercontent.com/DelaramGlp/aiup/main/aiup.ttl> ;
    dcterms:title "AI Intended Use Policy profile Turtle vocabulary"@en ;
    dcterms:format <https://www.iana.org/assignments/media-types/text/turtle> ;
    dcterms:conformsTo <https://www.w3.org/TR/turtle/> .

   # terms used from the ODRL Common Vocabulary (https://www.w3.org/TR/odrl-vocab/#vocab-common) also need to be "imported" here, if any are needed
<https://w3id.org/aiup#>
    a skos:Collection ;
    skos:prefLabel "AI Use Policy profile concepts"@en ;
    skos:scopeNote "ODRL AI Use Policy profile terms "@en ;
    skos:member aiup:UsePolicy ;
    skos:member aiup:UseOffer ;
    skos:member aiup:UseAgreement ;
    skos:member aiup:UseRequest ;
    skos:member aiup:Deploy ;
    skos:member aiup:Modify ;
    skos:member aiup:ImplementControl ;
    skos:member aiup:ReportRisk ;
    skos:member aiup:Provider ;
    skos:member aiup:Deployer ;
    skos:member aiup:AIProvider ;
    skos:member aiup:AIDeployer ;
    skos:member aiup:seq ;
    skos:member aiup:AISystem ;
    skos:member aiup:AIComponent ;
    skos:member aiup:AIModel ;
    skos:member aiup:GPAIModel ;
    skos:member aiup:Data ;
    skos:member aiup:Domain ;
    skos:member aiup:Purpose ;
    skos:member aiup:AICapability ;
    skos:member aiup:AISubject ;
    skos:member aiup:LocalityOfUse ;
    skos:member aiup:ReportRecipient ;
    skos:member aiup:RiskControl ;
    skos:member odrl:dateTime . 

#---------------------------------------------------------
#                       Policy
#---------------------------------------------------------

aiup:UsePolicy a rdfs:Class, owl:Class, skos:Concept ;
    rdfs:subClassOf odrl:Policy ;
    owl:disjointWith odrl:Agreement, odrl:Offer, odrl:Privacy, odrl:Request, odrl:Ticket, odrl:Assertion ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "Use Policy"@en ;
    skos:definition "A Use Policy is a policy that expresses the assigner's preferences over an AI system or component which MUST be satisfied."@en .
   # skos:note "A Use Policy MUST contain at least one Permission or Prohibition rule, an Action, a target Asset and a Party with Assigner function (in the same Permission or Prohibition)"@en .
    # skos:example "Example" .

aiup:UseOffer a rdfs:Class, owl:Class, skos:Concept ;
    rdfs:subClassOf aiup:UsePolicy ;
    owl:disjointWith aiup:UseRequest, aiup:UseAgreement ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "Use Offer"@en ;
    skos:definition "A Use Policy is a hard policy that expresses the assigner's preferences over a use of an AI system or component which MUST be satisfied."@en .
    # skos:example "Example" .

aiup:UseRequest a rdfs:Class, owl:Class, skos:Concept ;
    rdfs:subClassOf aiup:UsePolicy ;
    owl:disjointWith aiup:UseOffer, aiup:UseAgreement ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "Use Request"@en ;
    skos:definition "A Use Request is a hard policy that expresses a request over a use of an AI system or component which MUST be satisfied."@en .
    # skos:example "Example" .

aiup:UseAgreement a rdfs:Class , owl:Class, skos:Concept ;
    rdfs:subClassOf aiup:UsePolicy ;
    owl:disjointWith aiup:UseRequest, aiup:UseOffer ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "Use Agreement"@en ;
    skos:definition "A Use Agreement is a hard policy that expresses a agreement between assinger and assignee over a use of an AI system or component which MUST be satisfied. "@en .
    # skos:example "Example" .


#---------------------------------------------------------
#                       Party
#---------------------------------------------------------    

aiup:Provider a odrl:Party, skos:Concept ;
    skos:exactMatch tech:TechnologyProvider ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "Provider"@en ;
    rdfs:comment "Actor that provides a technology"@en ;
    skos:definition "Actor that provides a technology"@en .


aiup:Deployer a odrl:Party, skos:Concept;
    skos:exactMatch tech:TechnologyDeployer ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "Deployer"@en ;
    rdfs:comment "Actor that deploys a technology"@en ;
    skos:definition "Actor that deploys a technology"@en .


aiup:AIProvider a odrl:Party, skos:Concept ;
    skos:exactMatch airo:AIProvider ;
    rdfs:subClassOf aiup:Provider ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "AI Provider"@en ;
    rdfs:comment "A natural or legal person, public authority, agency or other body that develops an AI system or a general purpose AI model or that has an AI system or a general purpose AI model developed and places them on the market or puts the system into service under its own name or trademark, whether for payment or free of charge"@en ;
    skos:definition "A natural or legal person, public authority, agency or other body that develops an AI system or a general purpose AI model or that has an AI system or a general purpose AI model developed and places them on the market or puts the system into service under its own name or trademark, whether for payment or free of charge"@en .

aiup:AIDeployer a odrl:Party, skos:Concept ;
    skos:exactMatch airo:AIDeployer ;
    rdfs:subClassOf aiup:Deployer ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "AI Deployer"@en ;
    rdfs:comment "A natural or legal person, public authority, agency or other body using an AI system under its authority except where the AI system is used in the course of a personal non-professional activity"@en ;
    skos:definition "A natural or legal person, public authority, agency or other body using an AI system under its authority except where the AI system is used in the course of a personal non-professional activity"@en .

#---------------------------------------------------------
#                       Asset
#---------------------------------------------------------    

aiup:AISystem a odrl:Asset, skos:Concept ;
    skos:exactMatch airo:AISystem ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "AI System"@en ;
    rdfs:comment "A machine-based system designed to operate with varying levels of autonomy and that may exhibit adaptiveness after deployment and that, for explicit or implicit objectives, infers, from the input it receives, how to generate outputs such as predictions, content, recommendations, or decisions that can influence physical or virtual environments."@en ;
    skos:definition "A machine-based system designed to operate with varying levels of autonomy and that may exhibit adaptiveness after deployment and that, for explicit or implicit objectives, infers, from the input it receives, how to generate outputs such as predictions, content, recommendations, or decisions that can influence physical or virtual environments."@en .

aiup:AIComponent a odrl:Asset, skos:Concept ;
    skos:exactMatch airo:AIComponent ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "AI Component"@en ;
    rdfs:Comment "A componet associated with an AI system."@en ;
    skos:definition "A componet associated with an AI system."@en ;
    skos:example "AI models and datasets" . 

aiup:AIModel a odrl:Asset, skos:Concept ;
    skos:exactMatch airo:AIModel ;
    rdfs:subClassOf aiup:AIComponent ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "AI Model"@en ;
    rdfs:Comment "Mathematical construct that generates an inference or prediction, based on input data."@en ;
    skos:definition "Mathematical construct that generates an inference or prediction, based on input data."@en .

aiup:GPAIModel a odrl:Asset, skos:Concept ;
    skos:exactMatch airo:GPAIModel ;
    rdfs:subClassOf aiup:AIModel ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "GPAI Model"@en ;
    rdfs:Comment "An AI model, including where such an AI model is trained with a large amount of data using self-supervision at scale, that displays significant generality and is capable of competently performing a wide range of distinct tasks regardless of the way the model is placed on the market and that can be integrated into a variety of downstream systems or applications."@en ;
    skos:definition "An AI model, including where such an AI model is trained with a large amount of data using self-supervision at scale, that displays significant generality and is capable of competently performing a wide range of distinct tasks regardless of the way the model is placed on the market and that can be integrated into a variety of downstream systems or applications."@en .

aiup:Data a  odrl:Asset, skos:Concept ;
    skos:exactMatch airo:Data ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "Data"@en ;
    skos:definition "Refers to dataset and the broad concept of data."@en ; 
    rdfs:Comment "Refers to dataset and the broad concept of data."@en .

#---------------------------------------------------------
#                       Operator
#--------------------------------------------------------- 
aiup:seq a odrl:Operator, owl:NamedIndividual, skos:Concept ;
	rdfs:isDefinedBy aiup: ;
    rdfs:label "Semantically Equal"@en ;
	rdfs:comment "Indicates that a given Left Operand is an instance or sub-class of the Right Operand of the Constraint."@en ;
	skos:definition "Indicates that a given Left Operand is an instance or sub-class of the Right Operand of the Constraint."@en .

#---------------------------------------------------------
#                       Action
#---------------------------------------------------------   
aiup:Deploy a odrl:Action, skos:Concept ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "Deploy"@en ;
    rdfs:comment "Refers to the act of deploying an AI system" ;
    skos:definition "Refers to the act of deploying an AI system" .

aiup:Modify a odrl:Action, skos:Concept ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "Modify"@en ;
    rdfs:comment "Refers to the act of modifying an AI system"@en ;
    skos:definition "Refers to the act of modifying an AI system"@en .

aiup:ImplementControl a odrl:Action, skos:Concept ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "Implement Control"@en ;
    rdfs:comment "Refers to implementation of control measures"@en ;
    skos:definition "Refers to implementation of control measures"@en .

aiup:ReportRisk a odrl:Action, skos:Concept ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "Report Risk"@en ;
    rdfs:comment "Refers to the act of reporting incidents and/or risks associated with a use of an AI system"@en ;
    skos:definition "Refers to the act of reporting incidents and/or risks associated with a use of an AI system"@en .


#---------------------------------------------------------
#                       Left Operand
#---------------------------------------------------------   

# It might also be interesting to add:
# skos:example to express the type of constraint being modelled by the new left operand
# skos:note with info on what operators should be used (odrl:isA, odrl:eq, odrl:neq, oac:isNotA, ...)

aiup:Domain a odrl:LeftOperand, owl:NamedIndividual, skos:Concept ; 
    skos:exactMatch airo:Domain ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "Domain" ;
    rdfs:comment "The domain an AI system is used within"@en ;
    skos:definition "The domain an AI system is used within"@en .

aiup:Purpose a odrl:LeftOperand, owl:NamedIndividual, skos:Concept ;
    skos:exactMatch airo:Purpose ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "Purpose" ;
    rdfs:comment "The end goal for which an entity is used or an action is taken"@en ;
    skos:definition "The end goal for which an entity is used or an action is taken"@en .

aiup:AICapability a odrl:LeftOperand, owl:NamedIndividual, skos:Concept ;
    skos:exactMatch airo:AICapability ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "AI Capability" ;
    rdfs:comment "Capabilities implemented within an AI system to materialize its purposes"@en ;
    skos:definition "Capabilities implemented within an AI system to materialize its purposes"@en .


aiup:Deployer a odrl:LeftOperand, owl:NamedIndividual .

aiup:Data a odrl:LeftOperand, owl:NamedIndividual .

aiup:AISubject a odrl:LeftOperand, owl:NamedIndividual, skos:Concept ;
    skos:exactMatch airo:AISubject ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "AI Subject" ;
    rdfs:comment "An entity that is subjected to the use of AI"@en ;
    skos:definition "An entity that is subjected to the use of AI"@en .

aiup:LocalityOfUse a odrl:LeftOperand, owl:NamedIndividual, skos:Concept ;
    skos:exactMatch airo:LocalityOfUse ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "Locality Of Use" ;
    rdfs:comment "The locality in which the AI system is used"@en ;
    skos:definition "The locality in which the AI system is used"@en .

aiup:RiskControl a odrl:LeftOperand, owl:NamedIndividual, skos:Concept ;
    skos:exactMatch airo:RiskControl ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "Risk Control" ;
    rdfs:comment "A measure that maintains and/or modifies risks, risk sources, consequences, and impacts"@en ;
    skos:definition "A measure that maintains and/or modifies risks, risk sources, consequences, and impacts"@en .




aiup:ReportRecipient a odrl:LeftOperand, owl:NamedIndividual, skos:Concept ;
    rdfs:isDefinedBy aiup: ;
    rdfs:label "Report Recipient" ;
    rdfs:comment "An entity who receives the report"@en ;
    skos:definition "An entity who receives the report"@en .   


