Planning | Description | Requirements | UI Mockup | Triples Examples | ORE Triples
Table of Contents
Ontologies
The following is a list of all ontologies used by the Triple Examples.
Name | Prefix | URL | Details | Comments |
---|---|---|---|---|
RDF | rdf | http://www.w3.org/1999/02/22-rdf-syntax-ns# | specification | |
RDF Schema | rdfs | http://www.w3.org/2000/01/rdf-schema# | specification | |
Dublin Core | dc | http://purl.org/dc/elements/1.1/ | specification | |
Dublin Core Terms | dcterms | http://purl.org/dc/terms | specification | Required by OA |
Dublin Core Types | dctype | http://purl.org/dc/dcmitype | specification | Required by OA |
Content | cnt | http://www.w3.org/2011/content# | specification | Required by OA |
ORE | ore | http://www.openarchives.org/ore/1.0/vocabulary#otherRelationships | specification | Recommended as an alternative to the Collections ontology by Rob. Represents both ordered and unordered items using the Aggregation class. |
Collections | co | http://purl.org/co | specification | Can represent unordered items using the Bag class and ordered items using the List class. |
Open Annotation | oa | http://www.w3.org/ns/oa | specification | |
Friend of a Friend | foaf | http://xmlns.com/foaf/0.1 | specification | Also used by OA |
Virtual Collections
Virtual Collection's owner
@prefix foaf: <http://xmlns.com/foaf/0.1> . <http://vivo.cornell.edu/individual/individual24416> a foaf:Person . <http://vivo.cornell.edu/individual/individual24416> a foaf:Agent .
NOTE:
- ORE uses foaf:Agent as the dc:creator.
QUESTIONS:
- What URI do we use for a user?
- ANSWER: Each university will determine what to use as the URI for users.
- Cornell: Will use VIVO URI's for faculty and staff. Doesn't work for students.
- Ex. VIVO URI - http://vivo.cornell.edu/individual/rjv23 – rjv23 is a netid
- Ex. VIVO URI - http://vivo.cornell.edu/individual/individual24416 – 24416 is not a netid
- Ex. VIVO URI - http://vivo.cornell.edu/individual/EleanorRayle - EleanorRayle is not a netid
- For the purposes of our experiment, if the user doesn't exist in VIVO, then they can't create a Virtual Collection.
- Harvard: ?
- Stanford: ?
- Cornell: Will use VIVO URI's for faculty and staff. Doesn't work for students.
- ANSWER: Each university will determine what to use as the URI for users.
- Do we want to keep any other foaf properties beyond setting the type to foaf person?
- ANSWER: None extra needed in our triplestore. We can revisit this if it becomes clear by the implementation that we need to keep additional information.
Virtual Collection's metadata
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix dct: <http://purl.org/dc/terms> . <http://localhost:3000/virtualcollection/changeme:155> dct:title "My Virtual Collection" ; dct:description "These are resources I am gathering together for personal use." ; dc:creator <http://vivo.cornell.edu/individual/individual24416> .
NOTE: Potential alternatives... Waiting for ontology group to weigh in and tell me which to use.
- rdfs:label – dc:title
- rdfs:comment – dc:description
- dc:creator – dct:creator
QUESTIONS:
- dc:creator is being used to identify the "owner" of the virtual collection. Should the owner relationship be more explicit? See Access Thoughts below for more info on what it means to be an owner. Consensus: For now, we will go with just dct:creator. When we have a use case requiring more complex (e.g. multiple creators) creator - owner relationships, we can revisit.
Virtual Collection's list of items
Example 1: A Virtual Collection as a List with one Item
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix co: <http://purl.org/co> . <http://localhost:3000/virtualcollection/changeme:155> a co:List ; co:size "1"^^xsd:nonNegativeInteger ; co:firstItem <http://localhost:3000/virtualcollection/item/changeme:156> ; co:item <http://localhost:3000/virtualcollection/item/changeme:156> ; co:lastItem <http://localhost:3000/virtualcollection/item/changeme:156> . <http://localhost:3000/virtualcollection/item/changeme:156> a co:ListItem co:index "1"^^xsd:positiveInteger ; co:itemContent <http://da-rdf.library.cornell.edu/individual/b3652730> .
Example 2: A Virtual Collection as a List with multiple ordered Items
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix co: <http://purl.org/co> . <http://localhost:3000/virtualcollection/changeme:155> a co:List ; co:size "4"^^xsd:nonNegativeInteger ; co:firstItem <http://localhost:3000/virtualcollection/item/changeme:156> ; co:item <http://localhost:3000/virtualcollection/item/changeme:156> ; co:item <http://localhost:3000/virtualcollection/item/changeme:157> ; co:item <http://localhost:3000/virtualcollection/item/changeme:158> ; co:item <http://localhost:3000/virtualcollection/item/changeme:159> ; co:lastItem <http://localhost:3000/virtualcollection/item/changeme:159> . <http://localhost:3000/virtualcollection/item/changeme:156> a co:ListItem ; co:index "1"^^xsd:positiveInteger ; co:itemContent <http://da-rdf.library.cornell.edu/individual/b3652730> ; co:nextItem <http://localhost:3000/virtualcollection/item/changeme:157> . <http://localhost:3000/virtualcollection/item/changeme:157> a co:ListItem ; co:index "2"^^xsd:positiveInteger ; co:itemContent <http://da-rdf.library.cornell.edu/individual/b3652234> ; co:nextItem <http://localhost:3000/virtualcollection/item/changeme:158> . <http://localhost:3000/virtualcollection/item/changeme:158> a co:ListItem ; co:index "3"^^xsd:positiveInteger ; co:itemContent <http://da-rdf.library.cornell.edu/individual/b3652543> ; co:nextItem <http://localhost:3000/virtualcollection/item/changeme:159> . <http://localhost:3000/virtualcollection/item/changeme:159> a co:ListItem ; co:index "4"^^xsd:positiveInteger ; co:itemContent <http://da-rdf.library.cornell.edu/individual/b3652884> .
QUESTIONS:
- Should Virtual Collection's type be a subclass of co:List instead of a co:List?
- If so, what is the type? Consensus: Subclass of co:List Ontology to be defined by ontology group.
- Is it LD4L specific? Consensus: YES to be defined by ontology group.
- How is LD4L defining new types? Naming convention, namespace, etc.? Final definitions by ontology group.
- For now, use namespace=LD4L in Ruby with link <http://ld4l.org/ontology/... – to be defined by ontology group
- Class name=ld4l:VirtualCollection
- type URI=<http://ld4l.org/ontology/VirtualCollection>
- instance URI=<http://localhost:3000/individual/vc123> –
- what ever I want for now
- suggest use of individual in URI meaning an instance of a class (used by VIVO too)
- id starts with alpha because syntax something:vc123 – cannot have number directly after :
Comments
Comments as Free Form Text Annotation
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix dcterms: <http://purl.org/dc/terms> . @prefix dctypes: <http://purl.org/dc/dcmitype> . @prefix cnt: <http://www.w3.org/2011/content#> . @prefix oa: <http://www.w3.org/ns/oa> . <http://localhost:3000/virtualcollection/changeme:155/item/changeme:159/comment/changeme:93> a oa:Annotation ; oa:hasTarget <http://localhost:3000/virtualcollection/item/changeme:156> ; oa:hasBody <http://localhost:3000/annotations/bodies/3652730_changeme:93> ; oa:annotatedBy <http://vivo.cornell.edu/individual/individual24416> ; oa:annotatedAt "2014-07-21T12:00:00Z"^^xsd:dateTime oa:motivatedBy oa:commenting . <http://localhost:3000/virtualcollection/changeme:155/item/changeme:159/comment/changeme:93/body> a dctypes:Text, cnt:ContentAsText ; cnt:chars "This is my favorite book." ; dcterms:format "text/plain" .
Access Thoughts
QUESTIONS:
- What method is used to protect private Virtual Collections?
- Option 1: maintain two triple stores: 1) private, 2) public
- Option 2: use named graphs within a single triplestore
- What triples, if any, are stored for the following concepts related to access control?
- Roles (e.g. site-admin, library-admin, user)
- only a small set of roles will exist
- Groups (e.g. shared_read_group, shared_write_group)
- potential for large number of groups to be created by users
- Privileges
- definitions of what users with specific roles can do
- Roles (e.g. site-admin, library-admin, user)
- What of these are application specific and what are needed in triples?
Private vs. Public
- Public Virtual Collection
- Is discoverable through public search.
- Any user, logged in or not, can view a public virtual collection.
- Private Virtual Collection
- Is NOT discoverable through public search.
- User must be logged in and be the owner/creator of the virtual collection to view/edit a private virtual collection.
Semi-Private with Shared Access
- Allow shared read-only access. Virtual Collection is not discoverable through public search.
- Option 1: Provide a URL that the owner can share with other users. Anyone using the URL will be able to view the Virtual Collection.
- Option 2: Owner identifies other users who are allowed to view the Virtual Collection
Collaboration
- Allow share write access
- Option 1: Owner identifies other users who are allowed to edit the Virtual Collection.
NOTE: This doesn't really come into play until Use Case 1.2, but I want to think about the other access issues with this in mind.