PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX space: <http://www.w3.org/ns/pim/space#>
PREFIX linkml: <https://w3id.org/linkml/>
PREFIX ont: <http://www.w3.org/2006/gen/ont#>
PREFIX ui: <http://www.w3.org/ns/ui#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX sh: <http://www.w3.org/ns/shacl#>
PREFIX vann: <http://purl.org/vocab/vann/>

<http://www.w3.org/ns/pim/space> a owl:Ontology ;
  vann:preferredNamespacePrefix "space" ;
  vann:preferredNamespaceUri "http://www.w3.org/ns/pim/space#"^^xsd:anyURI ;
  sh:declare [
    sh:prefix "space" ;
    sh:namespace "http://www.w3.org/ns/pim/space#"^^xsd:anyURI
  ] , [
    sh:prefix "linkml" ;
    sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI
  ] , [
    sh:prefix "ont" ;
    sh:namespace "http://www.w3.org/2006/gen/ont#"^^xsd:anyURI
  ] , [
    sh:prefix "ui" ;
    sh:namespace "http://www.w3.org/ns/ui#"^^xsd:anyURI
  ] , [
    sh:prefix "foaf" ;
    sh:namespace "http://xmlns.com/foaf/0.1/"^^xsd:anyURI
  ] .

space:PersonalStorage a owl:Class ;
  rdfs:label "personal storage" ;
  rdfs:comment """A personal storage is a space of URIs in which you and only you have access to data,
    you cannot give access to anyone else.
""" ;
  rdfs:subClassOf space:Storage .

space:ControlledStorage a owl:Class ;
  rdfs:label "access controlled storage" ;
  rdfs:comment """A  storage is a space of URIs in which you can individually control for each resource
    who has access to it.
""" ;
  rdfs:subClassOf space:Storage .

space:Workspace a owl:Class ;
  rdfs:label "workspace" ;
  rdfs:comment """Workspaces are place where data is stored, and associated polices of privacy.
A given application typically stores information in several different
workspaces, some being user private, some shared, and some public.
""" ;
  rdfs:subClassOf [
    a owl:Class ;
    owl:unionOf ( space:PrivateWorkspace space:SharedWorkspace space:PublicWorkspace space:PreferencesWorkspace )
  ] .

space:PublicStorage a owl:Class ;
  rdfs:label "public storage" ;
  rdfs:comment """A public storage is a space of URIs in which you have access to data,
    and all data is accessible to anyone without control.
""" ;
  rdfs:subClassOf space:Storage .

space:Storage a owl:Class ;
  rdfs:label "storage" ;
  rdfs:comment """A storage is a space of URIs in which you have access to data.
""" .

space:PrivateWorkspace a owl:Class ;
  rdfs:label "Private workspace" ;
  rdfs:comment "Access only by the you, the user." ;
  rdfs:subClassOf space:Workspace .

space:SharedWorkspace a owl:Class ;
  rdfs:label "Shared workspace" ;
  rdfs:comment "Access is to some but not all people." ;
  rdfs:subClassOf space:Workspace .

space:PublicWorkspace a owl:Class ;
  rdfs:label "Public workspace" ;
  rdfs:comment """Aceess is open to the public. Anything in a public workspace
    can be accesed by anyone.""" ;
  rdfs:subClassOf space:Workspace .

space:MasterWorkspace a owl:Class ;
  rdfs:label "Master Workspace"@en ;
  rdfs:comment """This is a workspace for storing the
    information about the other workspaces.
    As a user, you normally don't have to worry about it.""" ;
  rdfs:subClassOf space:PrivateWorkspace .

space:PreferencesWorkspace a owl:Class ;
  rdfs:label "Preferences workspace" ;
  rdfs:comment "Aceess may not be open to the public. Contains preferences resources." ;
  rdfs:subClassOf space:Workspace .

foaf:Agent a owl:Class ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty space:masterWorkspace ;
    owl:allValuesFrom space:MasterWorkspace
  ] , [
    a owl:Restriction ;
    owl:onProperty space:preferencesFile ;
    owl:allValuesFrom space:ConfigurationFile
  ] .

space:ConfigurationFile a owl:Class ;
  rdfs:subClassOf ont:InformationResource .

ont:InformationResource a owl:Class .

space:storage a owl:ObjectProperty ;
  rdfs:label "storage" ;
  rdfs:comment """The storage in which this workspace is, or the storage which
contains this resource, or a storage available to this agent to use.""" ;
  rdfs:range space:Storage .

space:masterWorkspace a owl:ObjectProperty ;
  rdfs:label "master workspace"@en ;
  rdfs:range space:MasterWorkspace ;
  rdfs:domain foaf:Agent .

space:preferencesFile a owl:ObjectProperty ;
  rdfs:label "preferences file" ;
  rdfs:range space:ConfigurationFile ;
  rdfs:domain foaf:Agent .

space:workspace a owl:ObjectProperty ;
  rdfs:label "workspace"@en ;
  rdfs:range space:Workspace .

space:uriPrefix a owl:DatatypeProperty ;
  rdfs:label "URI prefix" ;
  rdfs:comment """URIs which start with this string are in this workspace or storage.
This may be used for constructing URIs for new storage resources.
""" ;
  ui:prompt "Give the first part of the URis in this workspace" .

vann:preferredNamespacePrefix a owl:AnnotationProperty .

vann:preferredNamespaceUri a owl:AnnotationProperty .

ui:prompt a owl:AnnotationProperty .

sh:declare a owl:AnnotationProperty .

sh:prefix a owl:AnnotationProperty .

sh:namespace a owl:AnnotationProperty .

_:o9 a owl:AllDisjointClasses ;
  owl:members ( space:PrivateWorkspace space:SharedWorkspace space:PublicWorkspace space:PreferencesWorkspace ) .
