# encoding: utf-8 # - Name: SiSU # # - Description: documents, structuring, processing, publishing, search # xml # # - Author: Ralph Amissah # # # - Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, # 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2019, # 2020, 2021, Ralph Amissah, # All Rights Reserved. # # - License: GPL 3 or later: # # SiSU, a framework for document structuring, publishing and search # # Copyright (C) Ralph Amissah # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # # You should have received a copy of the GNU General Public License along with # this program. If not, see . # # If you have Internet connection, the latest version of the GPL should be # available at these locations: # # # # # # - SiSU uses: # - Standard SiSU markup syntax, # - Standard SiSU meta-markup syntax, and the # - Standard SiSU object citation numbering and system # # - Homepages: # # # - Git # # # module SiSU_XML_Metadata require_relative 'se' # se.rb include SiSU_Env require_relative 'dp' # dp.rb include SiSU_Param class OAI_PMH def initialize(opt) @md=SiSU_Param::Parameters.new(opt).get @oai_pmh=[] end def read output end def pre < WOK end def body if defined? @md.title.full \ and @md.title.full=~/\S+/ # DublinCore 1 - title @oai_pmh << %{ #{@md.title.full}\n} end if defined? @md.creator.author \ and @md.creator.author=~/\S+/ # DublinCore 2 - creator/author (author) txt=meta_content_clean(@md.creator.author) @oai_pmh << %{ #{txt}\n} end if defined? @md.classify.subject \ and @md.classify.subject=~/\S+/ # DublinCore 3 - subject (us library of congress, eric or udc, or schema???) txt=meta_content_clean(@md.classify.subject) @oai_pmh << %{ #{txt}\n} end if defined? @md.classify.keywords \ and @md.classify.keywords=~/\S+/ txt=meta_content_clean(@md.classify.keywords) @oai_pmh << %{ #{txt}\n} end if @md.publisher # DublinCore 5 - publisher (current copy published by) txt=meta_content_clean(@md.publisher) @oai_pmh << %{ #{txt}\n} end if defined? @md.creator.contributor \ and @md.creator.contributor=~/\S+/ # DublinCore 6 - contributor txt=meta_content_clean(@md.creator.contributor) @oai_pmh << %{ #{txt}\n} end if defined? @md.date.published \ and @md.date.published=~/\S+/ # DublinCore 7 - date year-mm-dd @oai_pmh << %{ #{@md.date.published}\n} end if defined? @md.date.created \ and @md.date.created=~/\S+/ # DublinCore 7 - date.created @oai_pmh << %{ #{@md.date.created}\n} end if defined? @md.date.issued \ and @md.date.issued=~/\S+/ # DublinCore 7 - date.issued @oai_pmh << %{ #{@md.date.issued}\n} end if defined? @md.date.available \ and @md.date.available=~/\S+/ # DublinCore 7 - date.available @oai_pmh << %{ #{@md.date.available}\n} end if defined? @md.date.valid \ and @md.date.valid=~/\S+/ # DublinCore 7 - date.valid @oai_pmh << %{ #{@md.date.valid}\n} end if defined? @md.date.modified \ and @md.date.modified=~/\S+/ # DublinCore 7 - date.modified @oai_pmh << %{ #{@md.date.modified}\n} end if defined? @md.notes.description \ and @md.notes.description=~/\S+/ # DublinCore 4 - description txt=meta_content_clean(@md.notes.description) @oai_pmh << %{ #{txt}\n} end if defined? @md.notes.coverage \ and @md.notes.coverage=~/\S+/ # DublinCore 14 - coverage txt=meta_content_clean(@md.notes.coverage) @oai_pmh << %{ #{txt}\n} end if defined? @md.notes.relation \ and @md.notes.relation=~/\S+/ # DublinCore 13 - relation txt=meta_content_clean(@md.notes.relation) @oai_pmh << %{ #{txt}\n} end if defined? @md.notes.type \ and @md.notes.type=~/\S+/ # DublinCore 8 - type txt=meta_content_clean(@md.notes.type) @oai_pmh << %{ #{txt}\n} end if defined? @md.notes.format \ and @md.notes.format=~/\S+/ # DublinCore 9 - format txt=meta_content_clean(@md.notes.format) @oai_pmh << %{ #{txt}\n} end #if defined? @md.identifier.sisupod \ #and @md.identifier.sisupod=~/\S+/ # DublinCore 10 - identifier # txt=meta_content_clean(@md.identifier.sisupod) # @oai_pmh << %{ #{txt}\n} #end if defined? @md.original.source \ and @md.original.source=~/\S+/ # DublinCore 11 - source txt=meta_content_clean(@md.original.source) @oai_pmh << %{ #{txt}\n} end if defined? @md.title.language \ and @md.title.language=~/\S+/ # DublinCore 12 - language (English) @oai_pmh << %{ #{@md.title.language}\n} end if defined? @md.original.language \ and @md.original.language=~/\S+/ @oai_pmh << %{ #{@md.original.language}\n} end if defined? @md.rights.all \ and @md.rights.all=~/\S+/ # DublinCore 15 - rights txt=meta_content_clean(@md.rights.all) @oai_pmh << %{ #{txt}\n} end @oai_pmh end def meta_content_clean(content='') unless content.nil? content=content.tr('"',"'") end content end def post '' end def output SiSU_Env::FileOp.new(@md).mkdir oai_pmh=SiSU_Env::FileOp.new(@md,@md.fn[:oai_pmh]).mkfile #implement in param oai_pmh << pre body.each do |x| oai_pmh << x end oai_pmh << post end end end __END__ http://www.openarchives.org/pmh/ http://www.openarchives.org/OAI/2.0/openarchivesprotocol.htm#dublincore http://es.dublincore.org/documents/usageguide/elements.shtml http://dublincore.org/documents/dces/ see also http://dublincore.org/documents/dcmes-xml/ #http://www.openarchives.org/OAI/2.0/openarchivesprotocol.htm#dublincore #sample implementation, e.g. 2 Grassmann's space analysis Hyde, E. W. (Edward Wyllys) LCSH:Ausdehnungslehre; LCCN QA205.H99 J. Wiley & Sons Created: 1906; Available: 1991 text http://resolver.library.cornell.edu/math/1796949 english Public Domain