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 | 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
Note: The owner is represented as dc:creator in the Virtual Collection's metadata.
@prefix foaf: <http://xmlns.com/foaf/0.1> . <http://vivo.cornell.edu/individual/individual24416> a foaf:Person, 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.
Virtual Collection's metadata
@prefix dc: <http://purl.org/dc/elements/1.1/> . @prefix dcterms: <http://purl.org/dc/terms> . <http://localhost:3000/individual/vc155> dcterms:title "My Virtual Collection" ; dcterms:description "These are resources I am gathering together for personal use." ; dc:creator <http://vivo.cornell.edu/individual/individual24416> .
Virtual Collection's list of items
Two ontologies have been identified as potential candidates for representing a list of items. The pros and cons are listed below for each ontology, followed by examples using each ontology.
Collections ontology | ORE ontology | ||
---|---|---|---|
– | unordered and ordered collections are represented by two separate class constructs, Bag and List respectively | + | unordered and ordered collections are represented by the same class construct, Aggregation |
+ | item property names are easy to understand (e.g., index, itemContent, nextItem) | – | item property names are cryptic (e.g., proxyFor, proxyIn, next) |
– | order is determined by an item property pointing to the next item, i.e., nextItem | – | order is determined by an item property pointing to the next item, i.e., next |
– | URI for the item is not associated with the collection class (e.g., List, Bag). | + | URI for the item is associated with the collection class (i.e., Aggregation) via of the aggregates property. |
+ | URI for the item is associated with the item class (i.e., Item) via the itemContent property. | + | URI for the item is associated with the item class (i.e., Proxy) via the proxyFor property. |
Ordered Collection Examples
Example 1-co: A Virtual Collection as an ordered collection of items using Collection Ontology's 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/individual/vc155> a co:List ; co:size "1"^^xsd:nonNegativeInteger ; co:firstItem <http://localhost:3000/individual/vci162> ; co:item <http://localhost:3000/individual/vci162> ; co:lastItem <http://localhost:3000/individual/vci162> . <http://localhost:3000/individual/vci162> a co:ListItem co:index "1"^^xsd:positiveInteger ; co:itemContent <http://da-rdf.library.cornell.edu/individual/b3652730> .
Example 1-ore: A Virtual Collection as an ordered collection of items using ORE Ontology's Aggregation with one item
@prefix ore: <http://www.openarchives.org/ore/terms/> . <http://localhost:3000/individual/vc155> a ore:Aggregation ; ore:aggregates <http://da-rdf.library.cornell.edu/individual/b3652730> .
Example 2-co: A Virtual Collection as an ordered collection of items using Collection Ontology's 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/individual/vc155> a co:List ; co:size "4"^^xsd:nonNegativeInteger ; co:firstItem <http://localhost:3000/individual/vci162> ; co:item <http://localhost:3000/individual/vci162> ; co:item <http://localhost:3000/individual/vci163> ; co:item <http://localhost:3000/individual/vci164> ; co:item <http://localhost:3000/individual/vci165> ; co:lastItem <http://localhost:3000/individual/vci165> . <http://localhost:3000/individual/vci162> a co:ListItem ; co:index "1"^^xsd:positiveInteger ; co:itemContent <http://da-rdf.library.cornell.edu/individual/b3652730> ; co:nextItem <http://localhost:3000/individual/vci163> . <http://localhost:3000/individual/vci163> a co:ListItem ; co:index "2"^^xsd:positiveInteger ; co:itemContent <http://da-rdf.library.cornell.edu/individual/b3652234> ; co:nextItem <http://localhost:3000/individual/vci164> . <http://localhost:3000/individual/vci164> a co:ListItem ; co:index "3"^^xsd:positiveInteger ; co:itemContent <http://da-rdf.library.cornell.edu/individual/b3652543> ; co:nextItem <http://localhost:3000/individual/vci165> . <http://localhost:3000/individual/vci165> a co:ListItem ; co:index "4"^^xsd:positiveInteger ; co:itemContent <http://da-rdf.library.cornell.edu/individual/b3652884> .
Example 2-ore: A Virtual Collection as an ordered collection of items using ORE Ontology's Aggregation with multiple ordered items
@prefix ore: <http://www.openarchives.org/ore/terms/> . @prefix iana: <http://www.iana.org/assignments/relation/> . <http://localhost:3000/individual/vc155> a ore:Aggregation ; ore:aggregates <http://da-rdf.library.cornell.edu/individual/b3652730> ; ore:aggregates <http://da-rdf.library.cornell.edu/individual/b3652234> ; ore:aggregates <http://da-rdf.library.cornell.edu/individual/b3652543> . <http://localhost:3000/individual/pxy162> a ore:Proxy ; ore:proxyFor <http://da-rdf.library.cornell.edu/individual/b3652730> ; ore:proxyIn <http://localhost:3000/individual/vc155> ; iana:next <http://localhost:3000/individual/pxy163> . <http://localhost:3000/individual/pxy163> a ore:Proxy ; ore:proxyFor <http://da-rdf.library.cornell.edu/individual/b3652234> ; ore:proxyIn <http://localhost:3000/individual/vc155> ; iana:next <http://localhost:3000/individual/pxy164> . <http://localhost:3000/individual/pxy164> a ore:Proxy ; ore:proxyFor <http://da-rdf.library.cornell.edu/individual/b3652543> ; ore:proxyIn <http://localhost:3000/individual/vc155> .
Unordered Collection Examples
Example 3-co: A Virtual Collection as an unordered collection of items using Collection Ontology's Bag with one item
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix co: <http://purl.org/co> . <http://localhost:3000/individual/vc255> a co:Bag ; co:size "1"^^xsd:nonNegativeInteger ; co:item <http://localhost:3000/individual/vci262> . <http://localhost:3000/individual/vci262> a co:Item ; co:itemContent <http://da-rdf.library.cornell.edu/individual/b3652730> .
Example 3-ore: A Virtual Collection as an unordered collection of items using ORE Ontology's Aggregation with one item
@prefix ore: <http://www.openarchives.org/ore/terms/> . <http://localhost:3000/individual/vc255> a ore:Aggregation ; ore:aggregates <http://da-rdf.library.cornell.edu/individual/b3652730> .
Example 4-co: A Virtual Collection as an unordered collection of items using Collection Ontology's Bag with multiple unordered items
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix co: <http://purl.org/co> . <http://localhost:3000/individual/vc255> a co:Bag ; co:size "4"^^xsd:nonNegativeInteger ; co:item <http://localhost:3000/individual/vci262> ; co:item <http://localhost:3000/individual/vci263> ; co:item <http://localhost:3000/individual/vci264> ; co:item <http://localhost:3000/individual/vci265> . <http://localhost:3000/individual/vci262> a co:ListItem ; co:itemContent <http://da-rdf.library.cornell.edu/individual/b3652730> . <http://localhost:3000/individual/vci263> a co:ListItem ; co:itemContent <http://da-rdf.library.cornell.edu/individual/b3652234> . <http://localhost:3000/individual/vci264> a co:ListItem ; co:itemContent <http://da-rdf.library.cornell.edu/individual/b3652543> . <http://localhost:3000/individual/vci265> a co:ListItem ; co:itemContent <http://da-rdf.library.cornell.edu/individual/b3652884> .
Example 4-ore: A Virtual Collection as an unordered collection of items using ORE Ontology's Aggregation with multiple unordered items
@prefix ore: <http://www.openarchives.org/ore/terms/> . @prefix iana: <http://www.iana.org/assignments/relation/> . <http://localhost:3000/individual/vc255> a ore:Aggregation ; ore:aggregates <http://da-rdf.library.cornell.edu/individual/b3652730> ; ore:aggregates <http://da-rdf.library.cornell.edu/individual/b3652234> ; ore:aggregates <http://da-rdf.library.cornell.edu/individual/b3652543> .
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/individual/vci165/comment/changeme:93> a oa:Annotation ; oa:hasTarget <http://localhost:3000/individual/vci162> ; oa:hasBody <http://localhost:3000/individual/ab205> ; oa:annotatedBy <http://vivo.cornell.edu/individual/individual24416> ; oa:annotatedAt "2014-07-21T12:00:00Z"^^xsd:dateTime oa:motivatedBy oa:commenting . <http://localhost:3000/individual/vci165/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