==== Work ==== The PCDM Works extension defines a subclass of :code:`pcdm:Object` called :code:`pcdmworks:Work`. A work is an intellectual entity, such as a book, film, dissertation, etc that has member Objects representing their physical structure (e.g., pages in a book or sections in a book), FileSets to maintain representations of the entire resource (e.g. the OCR, HOCR, and Image for an Canvas), and TopRanges and Ranges representing their logical structure or structures (e.g., sections and chapters in a book). ------------- Minimum Model ------------- A simple :code:`Work` may have many more properties, but should look something like this: .. code-block:: turtle @prefix ex: . @prefix pcdm: . @prefix pcdmworks: . @prefix dc: . ex:Work a pcdmworks:Work ; dc:title "An Example Image" ; dc:rights ; dc:format "reformatted digital" ; dc:type "StillImage" ; dc:publisher "Texas A & M University. Libraries" ; pcdm:memberOf ex:Collection ; pcdm:hasMember ex:FileSet . -------------------- Rules and Guidelines -------------------- A Work **MUST**: * be an instance of :code:`pcdmworks:Work` via the :code:`rdf:type` property. * be related to a parent Collection or Work via :code:`pcdm:memberOf` or :code:`pcdm:hasMember` to avoid orphanage. * have mandatory descriptive elements as stated by `Metadata Guidelines for Digital Resources at Texas A&M University Libraries `_ A Work **SHOULD**: * be related to a :code:`pcdmworks:FileSet` or other :code:`pcdm:Object` instance via :code:`pcdm:hasMember`. A Work **MAY**: * have other descriptive metadata properties. * have many objects or filesets. * have proxies if the canvases in the item are ordered. * have ranges if the work has sections. ------------------- Real World Examples ------------------- A Work Represented by a Single JPEG =================================== A Book Made up of Multiple Canvases =================================== A Book work may have many pages has FileSets that represent the pages and proxies that help with ordering. It may also have ranges. For this example, many nodes have been omitted to make things easier to read. That being said, it tries to show these things: * A :code:`pcdmworks:Work` can be ordered by :code:`ore:Proxy` resources. * A :code:`pcdmworks:Work` may have :code:`pcdmworks:FileSet` and :code:`pcdmworks:Range` resources and both can be ordered by :code:`ore:Proxy` resources. * Relationships between a :code:`pcdmworks:Work` and a :code:`pcdmworks:FileSet` or :code:`ore:Proxy` can be done via :code:`pcdm:hasMember` or :code:`pcdm:memberOf` properties on the appropriate instance. .. code-block:: turtle @prefix ex: . @prefix fedora: . @prefix rdf: . @prefix rdfs: . @prefix pcdm: . @prefix pcdmworks: . @prefix pcdmuse: . @prefix pcdmff: . @prefix dc: . # This is the Book. Some pages have been omitted to keep graph simpler. ex:BookWork a pcdmworks:Work ; dc:title "An Example Book" ; dc:rights ; dc:format "reformatted digital" ; dc:type "StillImage", "Text" ; dc:publisher "Texas A & M University. Libraries" ; pcdm:memberOf ex:Collection ; pcdm:hasMember ex:BookPageOneFileset, ex:BookPageSixFileset, ex:BookPageThirtyThreeFileset . # This is a Proxy for Page 1 that will be Canvas 1 in a IIIF Manifest and is the Front Cover ex:ProxyForPageOne a ore:Proxy ; ore:proxyIn ex:BookWork ; ore:proxyFor ex:BookPageOneFileset ; iana:next ex:ProxyForPageTwo . # This is a Proxy for Page 6 that will be Canvas 6 in a IIIF Manifest and is the start of Chapter 1 ex:ProxyForPageSix a ore:Proxy ; ore:proxyIn ex:BookWork ; ore:proxyFor ex:BookPageSixFileset ; iana:prev ex:ProxyForPageFive ; iana:next ex:ProxyForPageSeven . # This is a Proxy for Page 33 that will be Canvas 33 in a IIIF Manifest and is the back cover ex:ProxyForPageThirtyThree a ore:Proxy ; ore:proxyIn ex:BookWork ; ore:proxyFor ex:BookPageThirtyThreeFileset ; iana:prev ex:ProxyForPageThirtyTwo . # This is a Fileset that includes the files used by Canvas 1 in the presentation manifest. ex:BookPageOneFileset a pcdmworks:Fileset ; rdfs:label "Front Cover" ; pcdm:memberOf ex:BookWork ; pcdm:hasFile ex:Image, ex:HOCR, ex:OCR . # This is a Range that represents the Front Cover of a Book and points to the page 1 fileset ex:FrontCover a pcdmworks:Range ; rdfs:label "Front Cover" ; pcdm:memberOf ex:BookWork ; pcdm:hasMember ex:BookPageOneFileset . # This is a Proxy for the front cover range in a IIIF Manfiest ex:ProxyForFrontCover a ore:Proxy ; ore:proxyIn ex:BookWork ; ore:proxyFor ex:FrontCover ; iana:next ex:ChapterOne . # This is a Range that represents Chapter 1 of a Book and points to the page 6 fileset ex:ChapterOne a pcdmworks:Range ; rdfs:label "Front Cover" ; pcdm:memberOf ex:BookWork ; pcdm:hasMember ex:BookPageSixFileset . # This is a Proxy for the chapter one range in a IIIF Manifest ex:ProxyForChapterOne a ore:Proxy ; ore:proxyIn ex:BookWork ; ore:proxyFor ex:ChapterOne ; iana:next ex:ChapterTwo . # This is a Range that represents Chapter 33 of a Book and points to the page 33 fileset ex:BackCover a pcdmworks:Range ; rdfs:label "Back Cover" ; pcdm:memberOf ex:BookWork ; pcdm:hasMember ex:BookPageThirtyThreeFileset . # This is a Proxy for the back cover in a IIIF Manifest ex:ProxyForBackCover a ore:Proxy ; ore:proxyIn ex:BookWork ; ore:proxyFor ex:BackCover ; iana:prev ex:ChapterThree . # An Image Canvas ex:Image a pcdmuse:ServiceFile, pcdmff:Image ; pcdm:fileOf ex:BookPageOneFileset ; fedora:hasBinary . # Where to write text on the Canvas above. ex:HOCR a pcdmff:HTML ; pcdm:fileOf ex:BookPageOneFileset ; fedora:hasBinary . # Text to index about the canvas. ex:OCR a pcdmuse:ExtractedText ; pcdm:fileOf ex:BookPageOneFileset ; fedora:hasBinary . A Map with one Canvas and an attached Dataset ============================================= A Map might be single or multi-canvased and also might have files that aren't for display. Some nodes are omitted to keep things simple. .. code-block:: turtle @prefix ex: . @prefix fedora: . @prefix rdf: . @prefix rdfs: . @prefix pcdm: . @prefix pcdmworks: . @prefix pcdmuse: . @prefix pcdmff: . @prefix dc: . # This is a Map with a Front and a Back. ex:Map a pcdmworks:Work ; dc:title "A Map with 2 Canvases and an attached Dataset" ; dc:rights ; dc:format "reformatted digital" ; dc:type "StillImage", "Text" ; dc:publisher "Texas A & M University. Libraries" ; pcdm:memberOf ex:Collection ; pcdm:hasMember ex:MapFront, ex:MapBack ; pcdm:hasFile ex:GISDataSet . # This is a Fileset for the Front ex:MapFrontFileset a pcdmworks:Fileset ; rdfs:label "Map Front" ; pcdm:memberOf ex:Map ; pcdm:hasFile ex:Image, ex:HOCR, ex:OCR . # This is a Fileset for the Back ex:MapBackFileset a pcdmworks:Fileset ; rdfs:label "Map Back" ; pcdm:memberOf ex:Map ; pcdm:hasFile ex:ImageTwo, ex:HOCRTwo, ex:OCRTwo . # This is a Proxy for the front of the map ex:MapProxyForFront a ore:Proxy ; ore:proxyIn ex:Map ; ore:proxyFor ex:MapFrontFileset ; iana:next ex:MapBackFileset . # This is a Proxy for the back of the map ex:MapProxyForBack a ore:Proxy ; ore:proxyIn ex:Map ; ore:proxyFor ex:MapBackFileset ; iana:prev ex:MapFrontFileset . # An Image Canvas ex:Image a pcdmuse:ServiceFile, pcdmff:Image ; pcdm:fileOf ex:MapFrontFileset ; fedora:hasBinary . # Where to write text on the Canvas above. ex:HOCR a pcdmff:HTML ; pcdm:fileOf ex:MapFrontFileset ; fedora:hasBinary . # Text to index about the canvas. ex:OCR a pcdmuse:ExtractedText ; pcdm:fileOf ex:MapFrontFileset ; fedora:hasBinary . ex:GISDataSet a pcdmff:GIS, pdcmff:DataSet ; pcdm:fileOf ex:Map ; fedora:hasBinary .