Last active
August 29, 2015 14:07
-
-
Save escowles/69df7f2fed1567d83a1b to your computer and use it in GitHub Desktop.
Fedora access policy proposal
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# namespaces | |
@prefix f: <http://fedora.info/definitions/v4/access#> . | |
# public | |
<http://example.edu/object/1> | |
f:accessPolicy <http://example.edu/access/public> . | |
<http://example.edu/object/1/content> | |
f:accessPolicy <http://example.edu/access/public> . | |
# campus-only | |
<http://example.edu/object/2> | |
f:accessPolicy <http://example.edu/access/campusOnly> . | |
<http://example.edu/object/2/content> | |
f:accessPolicy <http://example.edu/access/campusOnly> . | |
# private | |
<http://example.edu/object/3> | |
f:accessPolicy <http://example.edu/access/private> . | |
<http://example.edu/object/3/content> | |
f:accessPolicy <http://example.edu/access/private> . | |
# discover-only | |
<http://example.edu/object/7> | |
f:accessPolicy <http://example.edu/access/public> . | |
<http://example.edu/object/7/content> | |
f:accessPolicy <http://example.edu/access/private> . | |
# group can edit metadata, but not resource | |
<http://example.edu/object/7> | |
f:accessPolicy <http://example.edu/access/public> . | |
<http://example.edu/object/7/content> | |
f:accessPolicy <http://example.edu/access/publicReadOnly> . | |
# policies | |
<http://example.edu/access/private> | |
rdf:type f:AccessPolicy ; | |
f:hasReadPermission <http://example.edu/group/curator> ; | |
f:hasWritePermission <http://example.edu/group/curator> ; | |
f:hasControlPermission <http://example.edu/group/curator> ; | |
f:hasAppendPermission <http://example.edu/group/curator> . | |
<http://example.edu/access/campusOnly> | |
rdf:type f:AccessPolicy ; | |
f:hasReadPermission <http://example.edu/group/curator>; | |
f:hasWritePermission <http://example.edu/group/curator> ; | |
f:hasControlPermission <http://example.edu/group/curator> ; | |
f:hasAppendPermission <http://example.edu/group/curator> ; | |
f:hasReadPermission <http://example.edu/group/campus> . | |
<http://example.edu/access/public> | |
rdf:type f:AccessPolicy ; | |
f:hasReadPermission <http://example.edu/group/curator> ; | |
f:hasWritePermission <http://example.edu/group/curator> ; | |
f:hasControlPermission <http://example.edu/group/curator> ; | |
f:hasAppendPermission <http://example.edu/group/curator> ; | |
f:hasReadPermission <http://example.edu/group/campus> ; | |
f:hasReadPermission <http://example.edu/group/public> . | |
<http://example.edu/access/publicReadOnly> | |
rdf:type f:AccessPolicy ; | |
f:hasReadPermission <http://example.edu/group/curator> ; | |
f:hasReadPermission <http://example.edu/group/campus> ; | |
f:hasReadPermission <http://example.edu/group/public> . |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
classes: | |
f:AccessPolicy | |
predicates: | |
f:accessPolicy, range: f:AccessPolicy | |
f:hasReadPermission, range: xsd:anyURI | |
f:hasWritePermission, range: xsd:anyURI | |
f:hasControlPermission, range: xsd:anyURI | |
f:hasAppendPermission, range: xsd:anyURI | |
f:embargo, range: f:AccessPolicy | |
f:embargoStart, range: xsd:dateTime | |
f:embargoEnd, range: xsd:dateTime | |
f:lease, range: f:AccessPolicy | |
f:leaseStart, range: xsd:dateTime | |
f:leaseEnd, range: xsd:dateTime | |
ucsd:advisory, range: xsd:string |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# embargo | |
<http://example.edu/object/4> | |
f:accessPolicy <http://example.edu/access/pubic> ; | |
f:embargo <http://example.edu/access/private> ; | |
f:embargoStart "2014-01-01T00:00:00Z" ; | |
f:embargoEnd "2014-12-31T23:59:59Z" . | |
<http://example.edu/object/4/content> | |
f:accessPolicy <http://example.edu/access/pubic> ; | |
f:embargo <http://example.edu/access/private> ; | |
f:embargoStart "2014-01-01T00:00:00Z" ; | |
f:embargoEnd "2014-12-31T23:59:59Z" . | |
# campus lease | |
<http://example.edu/object/5> | |
f:accessPolicy <http://example.edu/access/private> ; | |
f:lease <http://example.edu/access/campusOnly> ; | |
f:leaseStart "2014-01-01T00:00:00Z" ; | |
f:leaseEnd "2014-12-31T23:59:59Z" . | |
<http://example.edu/object/5/content> | |
f:accessPolicy <http://example.edu/access/private> ; | |
f:lease <http://example.edu/access/campusOnly> ; | |
f:leaseStart "2014-01-01T00:00:00Z" ; | |
f:leaseEnd "2014-12-31T23:59:59Z" . | |
# public lease | |
<http://example.edu/object/6> | |
f:accessPolicy <http://example.edu/access/private> ; | |
f:lease <http://example.edu/access/public> ; | |
f:leaseStart "2014-01-01T00:00:00Z" ; | |
f:leaseEnd "2014-12-31T23:59:59Z" . | |
<http://example.edu/object/6/content> | |
f:accessPolicy <http://example.edu/access/private> ; | |
f:lease <http://example.edu/access/public> ; | |
f:leaseStart "2014-01-01T00:00:00Z" ; | |
f:leaseEnd "2014-12-31T23:59:59Z" . |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# namespaces | |
@prefix f: <http://fedora.info/definitions/v4/access#> . | |
@prefix ucsd: <http://library.ucsd.edu/ontology/dams/access#> . | |
# public with advisory | |
<http://example.edu/object/8> | |
f:accessPolicy <http://example.edu/access/public> ; | |
ucsd:advisory "Culturally sensitive content: This is an image of a person or | |
persons now deceased. In some Aboriginal Communities, hearing names or | |
seeing images of deceased persons may cause sadness or distress, | |
particularly to the relatives of these people." . | |
# or | |
<http://example.edu/object/8> | |
f:accessPolicy <http://example.edu/access/public-cultural-sensitivity> ; | |
<http://example.edu/access/public-cultural-sensitivity> | |
rdf:type f:AccessPolicy ; | |
f:hasReadPermission <http://example.edu/group/curator> ; | |
f:hasWritePermission <http://example.edu/group/curator> ; | |
f:hasControlPermission <http://example.edu/group/curator> ; | |
f:hasAppendPermission <http://example.edu/group/curator> ; | |
f:hasReadPermission <http://example.edu/group/campus> ; | |
f:hasReadPermission <http://example.edu/group/public> ; | |
ucsd:advisory "Culturally sensitive content: This is an image of a person or | |
persons now deceased. In some Aboriginal Communities, hearing names or | |
seeing images of deceased persons may cause sadness or distress, | |
particularly to the relatives of these people." . |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Greg-
I do expect that applications will help users set these up. For example, a user might enter a few values (rights holder, copyright status, etc.) and select from a list of rights status values (see https://docs.google.com/spreadsheets/d/1OjTm1Kuzo-An-THdpUkjwa5puul-b4Lx3SK0lB6rvl8/edit#gid=1349667881), and that would be translated into both rights statements and access policy links for the object being created, or a whole batch.
I don't know if ACLs are inherited in F4 right now or not -- but it would greatly reduce the number of ACLs that had to be assigned if you could set a defaults for a subtree or a collection, and only have to explicitly override the cases that were different.
There are some uses cases (https://wiki.duraspace.org/display/FF/Hydra+Authorization+Use+Case). At UCSD, our access control logic is pretty much:
There are a few wrinkles such as license expiration, different groups of curators, etc. But we don't have any property restrictions. Though it seems like you could extend the predicates above to define property permissions (though this could get cumbersome if you have a lot of them).