@base . @prefix : <#> . @prefix apl: . @prefix rdfs: . @prefix xsd: . @prefix owl: . @prefix acl: . @prefix cert: . @prefix c: . @prefix dh: . @prefix dct: . @prefix sp: . @prefix spin: . @prefix sioc: . @prefix foaf: . : a owl:Ontology ; owl:imports apl:, sp:, spin:, acl:, cert: ; owl:versionInfo "1.1.4" ; rdfs:label "AtomGraph ACL ontology" . :password a owl:DatatypeProperty ; rdfs:range rdfs:Literal ; rdfs:label "Password" ; rdfs:isDefinedBy : . :passwordHash a owl:DatatypeProperty ; rdfs:range rdfs:Literal ; rdfs:label "Password hash" ; rdfs:comment "BCrypt hash value" ; rdfs:seeAlso ; rdfs:isDefinedBy : . :requestMode a owl:ObjectProperty ; rdfs:domain :AuthorizationRequest ; rdfs:range acl:Mode ; rdfs:label "Requested mode" ; rdfs:seeAlso acl:mode ; rdfs:isDefinedBy : . :requestAccessTo a owl:ObjectProperty ; rdfs:domain :AuthorizationRequest ; rdfs:label "Requested access to" ; rdfs:seeAlso acl:accessTo ; rdfs:isDefinedBy : . :requestAgent a owl:ObjectProperty ; rdfs:domain :AuthorizationRequest ; rdfs:range :Agent ; rdfs:label "Requesting agent" ; rdfs:seeAlso acl:agent ; rdfs:isDefinedBy : . :requestAccess a owl:ObjectProperty ; rdfs:range c:Document ; rdfs:label "Request access" ; rdfs:isDefinedBy : . # CLASSES # authorization requests :AuthorizationRequest a rdfs:Class ; rdfs:subClassOf dh:Item ; spin:constructor :AuthorizationRequestConstructor ; spin:constraint :MissingRequestMode, :MissingRequestAgent, :MissingRequestAccessTo ; rdfs:label "Authorization request" ; rdfs:isDefinedBy : . :MissingRequestMode a apl:MissingPropertyValue ; rdfs:label "Missing request agent" ; sp:arg1 :requestMode ; rdfs:isDefinedBy : . :MissingRequestAgent a apl:MissingPropertyValue ; rdfs:label "Missing request agent" ; sp:arg1 :requestAgent ; rdfs:isDefinedBy : . :MissingRequestAccessTo a apl:MissingPropertyValue ; rdfs:label "Missing request access to" ; sp:arg1 :requestAccessTo ; rdfs:isDefinedBy : . :AuthorizationRequestConstructor a sp:Construct ; rdfs:label "Authorization request constructor" ; sp:text """ PREFIX rdfs: PREFIX xsd: PREFIX acl: PREFIX lacl: CONSTRUCT { ?this lacl:requestMode [ a acl:Mode ] ; lacl:requestAccessTo [ a rdfs:Resource ] ; lacl:requestAgent [ a lacl:Agent ] . } WHERE {}""" ; rdfs:isDefinedBy : . # authorizations :Authorization a rdfs:Class ; rdfs:subClassOf acl:Authorization ; spin:constructor :AuthorizationConstructor ; spin:constraint :MissingACLMode, :MissingRDFSLabel ; rdfs:label "Authorization" ; rdfs:isDefinedBy : . :CreatorAuthorization a rdfs:Class ; rdfs:subClassOf :Authorization ; rdfs:label "Creator access" ; rdfs:comment "Creators have full control of their created resources" ; rdfs:isDefinedBy : . :MissingACLMode a apl:MissingPropertyValue ; rdfs:label "Missing acl:mode" ; sp:arg1 acl:mode ; rdfs:isDefinedBy : . :AuthorizationConstructor a sp:Construct ; rdfs:label "Authorization constructor" ; sp:text """ PREFIX dct: PREFIX rdfs: PREFIX xsd: PREFIX acl: PREFIX lacl: PREFIX lsm: CONSTRUCT { ?this rdfs:label [ a xsd:string ] ; dct:description [ a xsd:string ] ; acl:mode [ a acl:Mode ] ; acl:accessTo [ a rdfs:Resource ] ; acl:accessToClass [ a lsm:Class ] ; acl:agent [ a lacl:Agent ] ; acl:agentClass [ a lsm:Class ] . } WHERE {}""" ; rdfs:isDefinedBy : . # user accounts #:UserAccount a rdfs:Class ; # rdfs:subClassOf sioc:UserAccount, foaf:OnlineAccount ; # spin:constructor :UserAccountConstructor ; # spin:constraint :MissingSIOCName, :MissingSIOCEmail, :MissingSIOCAccountOf ; # rdfs:label "User account" ; # rdfs:isDefinedBy : . # #:MissingSIOCName a apl:MissingPropertyValue ; # rdfs:label "Missing sioc:name" ; # sp:arg1 sioc:name ; # rdfs:isDefinedBy : . # #:MissingSIOCEmail a apl:MissingPropertyValue ; # rdfs:label "Missing sioc:email" ; # sp:arg1 sioc:email ; # rdfs:isDefinedBy : . # #:MissingSIOCAccountOf a apl:MissingPropertyValue ; # rdfs:label "Missing sioc:account_of" ; # sp:arg1 sioc:account_of ; # rdfs:isDefinedBy : . # #:UserAccountConstructor a sp:Construct ; # rdfs:label "User account constructor" ; # sp:text """ # PREFIX rdfs: # PREFIX foaf: # PREFIX sioc: # PREFIX lacl: # PREFIX xsd: # # CONSTRUCT { # ?this sioc:name [ a xsd:string ] ; # sioc:email [ a rdfs:Resource ] ; # sioc:account_of [ a lacl:Agent ] ; # lacl:password [ a xsd:string ] . # } # WHERE {}""" ; # rdfs:isDefinedBy : . # agents :Agent a rdfs:Class ; rdfs:subClassOf foaf:Agent ; spin:constructor :AgentConstructor ; spin:constraint :MissingCertKey ; rdfs:label "Agent" ; rdfs:isDefinedBy : . :MissingCertKey a apl:MissingPropertyValue ; rdfs:label "Missing cert:key" ; sp:arg1 cert:key ; rdfs:isDefinedBy : . :AgentConstructor a sp:Construct ; rdfs:label "Agent constructor" ; sp:text """ PREFIX rdfs: PREFIX xsd: PREFIX acl: PREFIX cert: PREFIX lacl: CONSTRUCT { ?this cert:key [ a lacl:PublicKey ] ; acl:delegates [ a rdfs:Resource ] . } WHERE {}""" ; rdfs:isDefinedBy : . :Person a rdfs:Class ; rdfs:subClassOf :Agent ; spin:constructor :PersonConstructor ; spin:constraint :MissingFOAFGivenName, :MissingFOAFFamilyName, :MissingFOAFBasedNear, :MissingFOAFMbox ; rdfs:label "Person" ; rdfs:isDefinedBy : . :MissingFOAFGivenName a apl:MissingPropertyValue ; rdfs:label "Missing foaf:givenName" ; sp:arg1 foaf:givenName ; rdfs:isDefinedBy : . :MissingFOAFFamilyName a apl:MissingPropertyValue ; rdfs:label "Missing foaf:familyName" ; sp:arg1 foaf:familyName ; rdfs:isDefinedBy : . :MissingFOAFBasedNear a apl:MissingPropertyValue ; rdfs:label "Missing foaf:based_near" ; sp:arg1 foaf:based_near ; rdfs:isDefinedBy : . :MissingFOAFMbox a apl:MissingPropertyValue ; rdfs:label "Missing foaf:mbox" ; sp:arg1 foaf:mbox ; rdfs:isDefinedBy : . :PersonConstructor a sp:Construct ; rdfs:label "Person constructor" ; sp:text """ PREFIX rdfs: PREFIX foaf: PREFIX xsd: CONSTRUCT { ?this foaf:givenName [ a xsd:string ] ; foaf:familyName [ a xsd:string ] ; foaf:mbox [ a rdfs:Resource ] ; foaf:based_near [ a rdfs:Resource ] . # foaf:member [ a foaf:Organization ] . } WHERE {}""" ; rdfs:isDefinedBy : . # public keys :PublicKey a rdfs:Class ; rdfs:subClassOf cert:RSAPublicKey ; spin:constructor :PublicKeyConstructor ; spin:constraint :MissingCertModulus, :MissingCertExponent ; rdfs:label "Public key" ; rdfs:isDefinedBy : . :PublicKeyConstructor a sp:Construct ; rdfs:label "Public key constructor" ; sp:text """ PREFIX xsd: PREFIX cert: CONSTRUCT { ?this cert:modulus [ a xsd:hexBinary ] ; cert:exponent 65537 . } WHERE {}""" ; rdfs:isDefinedBy : . :MissingCertModulus a apl:MissingPropertyValue ; rdfs:label "Missing cert:modulus" ; sp:arg1 cert:modulus ; rdfs:isDefinedBy : . :MissingCertExponent a apl:MissingPropertyValue ; rdfs:label "Missing cert:exponent" ; sp:arg1 cert:exponent ; rdfs:isDefinedBy : . # groups :Group a rdfs:Class ; rdfs:subClassOf foaf:Group ; spin:constructor :GroupConstructor ; spin:constraint [ a apl:MissingPropertyValue ; rdfs:label "Missing name" ; sp:arg1 foaf:name ] ; rdfs:label "Agent group" ; rdfs:isDefinedBy : . :GroupConstructor a sp:Construct ; rdfs:label "Group constructor" ; sp:text """ PREFIX xsd: PREFIX foaf: PREFIX lacl: PREFIX dct: CONSTRUCT { ?this foaf:name [ a xsd:string ] ; dct:description [ a xsd:string ] ; foaf:member [ a lacl:Agent ] . } WHERE {}""" ; rdfs:isDefinedBy : . # CONSTRAINTS :MissingRDFSLabel a apl:MissingPropertyValue ; rdfs:label "Missing rdfs:label" ; sp:arg1 rdfs:label ; rdfs:isDefinedBy : .