# This layout follows the graph-per-aspect pattern # (http://patterns.dataincubator.org/book/graph-per-aspect.html). PREFIX dc: PREFIX fcrepo: PREFIX fcsystem: PREFIX fcg: PREFIX foaf: PREFIX ldp: PREFIX ns: PREFIX premis: PREFIX xsd: # Admin data graphs. # Triples used by the application business logic are stored here. # These are a convenient way to get resource metadata (e.g. with a HEAD # request) without loading large graphs, e.g. ones with many children # or many user-provided properties. # System root. { a fcrepo:RepositoryRoot , fcrepo:Resource , fcrepo:Container , ldp:Container , ldp:BasicContainer , ldp:RDFSource ; . } { a fcrepo:Resource ; # Timestamps are simplified for readability. fcrepo:created "2017-11-23"^^xsd:date ; fcrepo:lastModified "2017-11-27"^^xsd:date ; fcrepo:hasVersion , , ; . } { a fcrepo:Version ; fcrepo:created "2017-11-23"^^xsd:date ; fcrepo:lastModified "2017-11-23"^^xsd:date ; . } { a fcrepo:Version ; fcrepo:created "2017-11-23"^^xsd:date ; fcrepo:lastModified "2017-11-24"^^xsd:date ; . } { a fcrepo:Version ; fcrepo:created "2017-11-23"^^xsd:date ; fcrepo:lastModified "2017-11-25"^^xsd:date ; . } # Pairtree information used to mimic hierarchical structures. { a ldp:Container , ldp:BasicContainer , ldp:Resource , ldp:RDFSSource ; a fcrepo:Pairtree ; } { a ldp:Container , ldp:BasicContainer , ldp:Resource , ldp:RDFSSource ; a fcrepo:Pairtree ; . } # "Structural" data. This separation is made mostly to optimize retrieval of # information needed by the application business logic without having to # retrieve or filter out predicates with potentially large amounts of objects, # such as `ldp:contains`. { ldp:contains . # fcsystem:contains is used to mimic path hierarchies. It does not coincide # with LDP containment. fcsystem:contains . } { fcsystem:contains . } { fcsystem:contains . } # Resource graphs. These statements are user-provided and not used for any # application business logic. # Note that "fragments", i.e. hash URIs, are stored within the same graph. { a ns:Book ; fcrepo:hasParent ; dc:title "Moby Dick" ; dc:creator "Herman Melville" ; dc:subject "Fishing" ; . a ns:BookChapter ; dc:title "Loomings." ; . a ns:BookChapter ; dc:title "The Carpet-Bag." ; . } # Previous states (versions) of a resource. { a ns:Book ; fcrepo:hasParent ; dc:title "Moby Dick" ; . } { a ns:Book ; fcrepo:hasParent ; dc:title "Moby Dick" ; dc:creator "Herman Melvil" ; . } { a ns:Book ; fcrepo:hasParent ; dc:title "Moby Dick" ; dc:creator "Herman Melville" ; . } # Metadata graph. This contains information about graphs and their # relationships. { # This may not be used by the application logic if we use naming # conventions, but is still good LD practice. foaf:primaryTopic . foaf:primaryTopic . foaf:primaryTopic . foaf:primaryTopic . foaf:primaryTopic . # Pairtree information is kept in one graph so no metadata are needed. } # Historic version metadata. This is kept separate to optimize current resource # lookups. { foaf:primaryTopic ; fcrepo:created "2017-11-24"^^xsd:date ; fcrepo:hasVersionLabel "v1" ; . foaf:primaryTopic ; fcrepo:created "2017-11-25"^^xsd:date ; fcrepo:hasVersionLabel "v2" ; . foaf:primaryTopic ; fcrepo:created "2017-11-26"^^xsd:date ; fcrepo:hasVersionLabel "v3" ; . foaf:primaryTopic ; fcrepo:created "2017-11-24"^^xsd:date ; fcrepo:hasVersionLabel "v1" ; # Provenance data can also be added. premis:actor ; . foaf:primaryTopic ; fcrepo:created "2017-11-25"^^xsd:date ; fcrepo:hasVersionLabel "v2" ; . foaf:primaryTopic ; fcrepo:created "2017-11-26"^^xsd:date ; fcrepo:hasVersionLabel "v3" ; . }