[Wiki Startseite]TechDoc/OAI-XML

Ask23: Ask23Wiki > TechDoc > OAI-XML || NeuesteAenderungen | Einstellungen

Informationen zum Format OAI-PMH XML (OpenArchives? Initative - Protocol for Metadata Harvesting)

1. Spezfikationen OAI-PMH XML
2. Beispiel Static Repository Syntax
3. Beispiel Perlcode
3.1. Initialisierung und Namensräume
3.2. Header
3.3. Single Record
3.4. End
4. Statíc Repository mit eigenem Metadaten Format


1. Spezfikationen OAI-PMH XML


2. Beispiel Static Repository Syntax

Als Auszug aus einem Static Repository: Ein Record, am Beispiel der Ressource http://www.ask23.de/draft/archiv/misc/querdurch-schenker.html.

Das vollständige, aktuelle Static Repository befindet sicht unter http://oai.ask23.de/static/ask23-oai.xml

<oai:record>
    <oai:header>
        <oai:identifier>oai:ask23.de:misc/querdurch-schenker.html</oai:identifier>
        <oai:datestamp>2004-11-29</oai:datestamp>
    </oai:header>
    <oai:metadata>
        <oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
            <dc:title xml:lang="de">Kuenstlerische Forschung</dc:title>
            <dc:creator>Schenker, Christoph</dc:creator>
            <dc:subject xml:lang="de">Diskurs; Forschung; Individuum; Institution; Kriterium; Kunst und Wissenschaft; Qualitaet; Selektion; querdurch</dc:subject>
            <dc:description xml:lang="de">Vortrag von Christoph Schenker (HGK Zuerich) anlaesslich des Symposions &ampquot;querdurch&ampquot;, am 24.06.04 an der Hochschule fuer bildende Kuenste, Hamburg. Siehe auch: http://ask23.hfbk-hamburg.de/draft/sammlungen/alle/querdurch.html</dc:description>
            <dc:date>2004-11-29</dc:date>
            <dc:type>text</dc:type>
            <dc:format>application/pdf</dc:format>
            <dc:language>de</dc:language>
            <dc:identifier>http://www.ask23.de/draft/archiv/misc/querdurch-schenker.html</dc:identifier>
            <dc:identifier>urn:nbn:de:0015-2005022334</dc:identifier>
            <dc:rights xml:lang="en">All Rights reserved</dc:rights>
        </oai_dc:dc>
    </oai:metadata>
</oai:record>


3. Beispiel Perlcode

Perl-Code für die Erzeugung des StaticRespository? (unter Verwendung des Moduls XML::Writer )

These Codeparts are part of the /Ask23OAI? script. They may be used (redistributed and/or modified) freely.


3.1. Initialisierung und Namensräume

 my $tmp_xml_path = "/path/to/oai.xml.tmp";  # temporary xml-file
 my $oai_xml_path = "/path/to/oai.xml.tmp";  # oai xml-file, copy of temp-file after validation

se IO qw(File); use XML::Writer;
my $output = new IO::File(">$tmp_xml_path");

my $xmlns = "http://www.openarchives.org/OAI/2.0/static-repository";
my $xmlns_oai = "http://www.openarchives.org/OAI/2.0/";

my $xmlns_oai_dc = "http://www.openarchives.org/OAI/2.0/oai_dc/";
my $xmlns_dc = "http://purl.org/dc/elements/1.1/";

my $xmlns_xsi = "http://www.w3.org/2001/XMLSchema-instance";
my $xsi_schemaLocation = "http://www.openarchives.org/OAI/2.0/static-repository http://www.openarchives.org/OAI/2.0/static-repository.xsd";
my $xsi_dc_schemaLocation = "http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd";


3.2. Header

my $writer = new XML::Writer (OUTPUT => $output, DATA_MODE => 1, NEWLINES => 0, DATA_INDENT => 4 );

$writer->xmlDecl( 'UTF-8' );
$writer->comment ("ask23 oai static repository. $date. http://oai.ask23.de" );
$writer->startTag( "Repository", 'xmlns' => $xmlns, 
				 'xmlns:oai' => $xmlns_oai,
				 'xmlns:xsi' => $xmlns_xsi,
				 'xsi:schemaLocation' => $xsi_schemaLocation,
		);
											
$writer->startTag( "Identify" );
   $writer->dataElement("oai:repositoryName", "ask23 repository (lkw, hfbk hamburg, germany)");
	$writer->dataElement("oai:baseURL", $baseURL );
	$writer->dataElement("oai:protocolVersion", "2.0");
	$writer->dataElement("oai:adminEmail", "technik\@ask23.de" );
	$writer->dataElement("oai:earliestDatestamp", "2001-01-01" );
	$writer->dataElement("oai:deletedRecord", "no" );
	$writer->dataElement("oai:granularity", "YYYY-MM-DD" );
$writer->endTag( "Identify" );
$writer->startTag( "ListMetadataFormats" );
	$writer->startTag( "oai:metadataFormat" );
		$writer->dataElement("oai:metadataPrefix", "oai_dc" );	
		$writer->dataElement("oai:schema", "http://www.openarchives.org/OAI/2.0/oai_dc.xsd" );
		$writer->dataElement("oai:metadataNamespace", "http://www.openarchives.org/OAI/2.0/oai_dc" );
	$writer->endTag( "oai:metadataFormat" );
$writer->endTag( "ListMetadataFormats" );


3.3. Single Record

wrapper (foreach-loop for all records)

 $writer->startTag( "ListRecords?", 'metadataPrefix' => "oai_dc" );
 foreach my $ressource (@oai_ressources) {
   my $kennung = (unique label as oai:identifier for all records)
   (get medata for this ressource)

Alle Metadaten einer Ressource sind im Hash %metadata gespeichert.

Die Nutzungsrechte sind in $rights{$metadata{rights}}{fullname_en} definiert, z.B. normaler Copyright-Hinweis: "All Rights reserved", für eine cc_nc_a_sa Lizenz: "Creative Commons Attribution-NonCommercial?-ShareAlike? Licence". Siehe die Übersicht unter /Nutzungsarten

$writer->startTag( "oai:record" );
    $writer->startTag( "oai:header" );
		$writer->dataElement( "oai:identifier", "oai:ask23.de:$kennung" );
		$writer->dataElement( "oai:datestamp", $metadata{date_modified} ); 
    $writer->endTag( "oai:header" );

    $writer->startTag( "oai:metadata" );
	$writer->startTag( "oai_dc:dc", 'xmlns:oai_dc' => $xmlns_oai_dc, 
					'xmlns:dc' => $xmlns_dc,
					'xmlns:xsi' => $xmlns_xsi,
					'xsi:schemaLocation' => $xsi_dc_schemaLocation,
				);		
		$writer->dataElement( "dc:title", $metadata{title}, 'xml:lang' => $metadata{language1} ) if $metadata{title};
		$writer->dataElement( "dc:creator", $metadata{creator1} ) if $metadata{creator1};
		$writer->dataElement( "dc:creator", $metadata{creator2} ) if $metadata{creator2};		
		$writer->dataElement( "dc:creator", $metadata{creator3} ) if $metadata{creator3};			
		$writer->dataElement( "dc:subject", $metadata{subject_swk}, 'xml:lang' => "de" ) if $metadata{subject_swk};
		$writer->dataElement( "dc:description", $metadata{description}, 'xml:lang' => $metadata{language1} ) if $metadata{description};
		$writer->dataElement( "dc:date", $metadata{date_available} ) if $metadata{date_available};
		$writer->dataElement( "dc:type", $metadata{type_dcmt} ) if $metadata{type_dcmt};	
                $writer->dataElement( "dc:format", $metadata{format} ) if $metadata{format};			
		$writer->dataElement( "dc:language", $metadata{language1} ) if $metadata{language1};
		$writer->dataElement( "dc:source", $metadata{source} ) if $metadata{source};			
		$writer->dataElement( "dc:identifier", $metadata{identifier} ) if $metadata{identifier};
		$writer->dataElement( "dc:identifier", $metadata{identifier_url} ) if $metadata{identifier_url};
		$writer->dataElement( "dc:identifier", $metadata{identifier_urn} ) if $metadata{identifier_urn};
		$writer->dataElement( "dc:rights", $rights{$metadata{rights}}{fullname_en}, 'xml:lang' => "en" ) if $metadata{rights};
	$writer->endTag( "oai_dc:dc" );			
    $writer->endTag( "oai:metadata" );		
$writer->endTag( "oai:record" );	


3.4. End

$writer->endTag( "ListRecords");
$writer->endTag ("Repository");	
$writer->end();
$output->close();


4. Statíc Repository mit eigenem Metadaten Format

Hier als Erweiterung des Metadatenformats nach /DublinCore um k23 spezifische /MetaDaten (wie z.b. k23:inhaber )

Eimn Record als Auszug aus einem Static Repository:

<oai:record>
 <oai:header>
  <oai:identifier>oai:ask23.de:material_verlag/212.html</oai:identifier>
  <oai:datestamp>2006-05-10</oai:datestamp>
 </oai:header>
 <oai:metadata>
  <oai_k23_dc:k23 
   xmlns:oai_k23_dc="http://oai.ask23.de/k23/oai_k23_dc/" 
   xmlns:dc="http://purl.org/dc/elements/1.1/" 
   xmlns:k23="http://oai.ask23.de/k23/" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="http://oai.ask23.de/k23/oai_k23_dc/     
   http://oai.ask23.de/k23/oai_k23_dc/oai_k23_dc.xsd">
	<dc:creator>Simons, Sabina</dc:creator>
	<dc:title>118 Tage Island</dc:title>
	<dc:source>material 163</dc:source>
	<k23:verfasser>
		Sabina Simons (Text, Fotografie und Gestaltung)
	</k23:verfasser>
	<k23:betreuer>Silke Grossmann</k23:betreuer>
	<k23:betreuer>Hans Andree</k23:betreuer>

	<k23:betreuer>Ralf Bacher</k23:betreuer>
	<k23:betreuer>Uli Brandt</k23:betreuer>
	<dc:publisher>Hans Andree</dc:publisher>
	<dc:publisher>Silke Grossmann</dc:publisher>
	<k23:inhaber>Hamburg, material-Verlag, Hochschule f&uuml;r bildende K&uuml;nste</k23:inhaber>

	<dc:format>27 cm x 17,5 cm, 40 Seiten, Fotografien (4farbig), Digitalsatz und -druck (4farbig), Spiralbindung</dc:format>
	<dc:identifer.isbn>3-932395-66-2</dc:identifer.isbn>
	<dc:date.published>2003</dc:date.published>
	<k23:referenz>fotografie</k23:referenz>
	<k23:referenz>text</k23:referenz>
	<dc:relation.HasPart>http://material-verlag.hfbk-hamburg.de/bilder/118tage_3932395662_inf.jpg</dc:relation.HasPart>
	<dc:language>de</dc:language>
	<k23:standort>Materialverlag Archiv</k23:standort>
	<dc:type>text</dc:type>
	<dc:identifier.url>http://material-verlag.hfbk-hamburg.de/titel.php?id=212</dc:identifier.url>
   </oai_k23_dc:k23>
 </oai:metadata>
</oai:record>


Ask23: Ask23Wiki > TechDoc > OAI-XML || NeuesteAenderungen | Einstellungen
Diese Seite ist schreibgeschützt | Zeige andere Versionen dieser Seite | Durchsuche MetaWiki
Letzte Änderung am May 18, 2006 7:00 pm von UlfT (Unterschied zur Vorversion)
Suche:
Wiki des archivsystem ak23