# encoding: utf-8
=begin
* Name: SiSU
* Description: a framework for document structuring, publishing and search
* Author: Ralph Amissah
* Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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
* Hompages:
* Download:
* Git
* Ralph Amissah
** Description: summary of generated outputs and metadata
=end
module SiSU_XML_Metadata
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
require_relative 'param' # param.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