Difference between revisions of "PubMan Days Entwickler Workshop 2012"
(7 intermediate revisions by one other user not shown) | |||
Line 25: | Line 25: | ||
Organisation=MeineOU,OTHER | Organisation=MeineOU,OTHER | ||
</syntaxhighlight> | </syntaxhighlight> | ||
''Die oberste Zeile definiert dabei die Default-Werte. Die restlichen Zeilen sind die Werte, welche die jeweilige Option annehmen kann'' | |||
===Beispiel: | ===Beispiel: Import - Authorenabfrage=== | ||
'''''Endnote Testfile: [[File:Endnote_sample.txt|Endnote_sample.txt]]''''' | '''''Endnote Testfile: [[File:Endnote_sample.txt|Endnote_sample.txt]]''''' | ||
* Um eine CoNE-Authorenabfrage speziell für unsere OU einzubinden müssen wir eine Verzweigung in das XSL-Stylesheet einbauen, die den Parameter Organisation auswertet und dann dementsprechen weiter vorgeht | |||
** Zuerst den Parameter übernehmen, den wir übergeben | |||
<syntaxhighlight lang="xml"> | |||
<xsl:param name="Organisation" select="''"/> | |||
</syntaxhighlight> | |||
:* Dann die Verzweigung in das Template ''createPerson'' einbauen ''(Die [[https://subversion.mpdl.mpg.de/repos/common/trunk/common_services/transformation/src/main/java/de/mpg/escidoc/services/transformation/Util.java Util-Klasse]] bietet hier bereits einige Möglichkeiten für CoNE-Abfragen an)'' | |||
<syntaxhighlight lang="xml"> | |||
<xsl:otherwise> | |||
<xsl:choose> | |||
<xsl:when test="$Organisation = 'MeineOU'"> | |||
<xsl:variable name="cone-creator" select=""Util:queryConeExact('persons', concat($person/familyname, ', ', $person/givenname), 'MeineOU')""/> | |||
<xsl:variable name="multiplePersonsFound" select="exists($cone-creator/cone/rdf:RDF/rdf:Description[@rdf:about != preceding-sibling::attribute/@rdf:about])"/> | |||
<xsl:if test="$multiplePersonsFound"> | |||
<xsl:value-of select="error(QName('http://www.escidoc.de', 'err:MultipleCreatorsFound' ), concat('There is more than one CoNE entry matching -', concat($person/familyname, ', ', $person/givenname), '-'))"/> | |||
</xsl:if> | |||
<xsl:element name="person:person"> | |||
<xsl:element name="eterms:family-name"> | |||
<xsl:value-of select="$person/familyname"/> | |||
</xsl:element> | |||
<xsl:element name="eterms:given-name"> | |||
<xsl:value-of select="$person/givenname"/> | |||
</xsl:element> | |||
<xsl:choose> | |||
<xsl:when test="exists($cone-creator/cone/rdf:RDF/rdf:Description/esc:position)"> | |||
<xsl:for-each select="$cone-creator/cone/rdf:RDF[1]/rdf:Description/esc:position"> | |||
<organization:organization> | |||
<dc:title> | |||
<xsl:value-of select="rdf:Description/eprints:affiliatedInstitution"/> | |||
</dc:title> | |||
<dc:identifier> | |||
<xsl:value-of select="rdf:Description/dc:identifier"/> | |||
</dc:identifier> | |||
</organization:organization> | |||
</xsl:for-each> | |||
</xsl:when> | |||
<xsl:when test="not($isSource)"> | |||
<organization:organization> | |||
<dc:title>Max Planck Society</dc:title> | |||
<dc:identifier> | |||
<xsl:value-of select="$root-ou"/> | |||
</dc:identifier> | |||
</organization:organization> | |||
</xsl:when> | |||
</xsl:choose> | |||
<xsl:choose> | |||
<xsl:when test="exists($cone-creator/cone/rdf:RDF/rdf:Description)"> | |||
<dc:identifier xsi:type="CONE"> | |||
<xsl:value-of select="$cone-creator/cone/rdf:RDF[1]/rdf:Description[1]/@rdf:about"/> | |||
</dc:identifier> | |||
</xsl:when> | |||
</xsl:choose> | |||
</xsl:element> | |||
</xsl:when> | |||
<xsl:otherwise> | |||
<xsl:variable name="cone-creator" select="Util:queryCone('persons', concat($person/familyname, ', ', $person/givenname))"/> | |||
<xsl:variable name="multiplePersonsFound" select="exists($cone-creator/cone/rdf:RDF/rdf:Description[@rdf:about != preceding-sibling::attribute/@rdf:about])"/> | |||
<xsl:if test="$multiplePersonsFound"> | |||
<xsl:value-of select="error(QName('http://www.escidoc.de', 'err:MultipleCreatorsFound' ), concat('There is more than one CoNE entry matching -', concat($person/familyname, ', ', $person/givenname), '-'))"/> | |||
</xsl:if> | |||
<xsl:element name="person:person"> | |||
<xsl:element name="eterms:family-name"> | |||
<xsl:value-of select="$person/familyname"/> | |||
</xsl:element> | |||
<xsl:element name="eterms:given-name"> | |||
<xsl:value-of select="$person/givenname"/> | |||
</xsl:element> | |||
<xsl:choose> | |||
<xsl:when test="exists($cone-creator/cone/rdf:RDF/rdf:Description/esc:position)"> | |||
<xsl:for-each select="$cone-creator/cone/rdf:RDF[1]/rdf:Description/esc:position"> | |||
<organization:organization> | |||
<dc:title> | |||
<xsl:value-of select="rdf:Description/eprints:affiliatedInstitution"/> | |||
</dc:title> | |||
<dc:identifier> | |||
<xsl:value-of select="rdf:Description/dc:identifier"/> | |||
</dc:identifier> | |||
</organization:organization> | |||
</xsl:for-each> | |||
</xsl:when> | |||
<xsl:when test="not($isSource)"> | |||
<organization:organization> | |||
<dc:title>Max Planck Society</dc:title> | |||
<dc:identifier> | |||
<xsl:value-of select="$root-ou"/> | |||
</dc:identifier> | |||
</organization:organization> | |||
</xsl:when> | |||
</xsl:choose> | |||
<xsl:choose> | |||
<xsl:when test="exists($cone-creator/cone/rdf:RDF/rdf:Description)"> | |||
<dc:identifier xsi:type="CONE"> | |||
<xsl:value-of select="$cone-creator/cone/rdf:RDF[1]/rdf:Description[1]/@rdf:about"/> | |||
</dc:identifier> | |||
</xsl:when> | |||
</xsl:choose> | |||
</xsl:element> | |||
</xsl:otherwise> | |||
</xsl:choose> | |||
</xsl:otherwise> | |||
</syntaxhighlight> | |||
* Nun können wir dast Testfile importieren und die Authoren werden nur mit CoNE-Einträgen verlichen, die unserer OU zugeordnet sind. ''(Wir müssen lediglich beachten bei der Konfiguration unsere MeineOU als Organisation anzugeben)'' | |||
[[Category:PubMan_Events|Best Practice Workshop]] | [[Category:PubMan_Events|Best Practice Workshop]] | ||
[[Category:PubMan_Days]] |
Latest revision as of 09:05, 29 January 2014
Datenmigration in PubMan[edit]
Folien: File:PubMan Days 2012 Developer Workshop.pdf
Beispiel: Vom Excel-File zum (CoNE-)RDF[edit]
Excel-Vorlage: File:CoNE sample.xls
Voraussetzung ist, dass auf dem Server bereits die OU-Struktur angelegt wurde!
- Excel-Datei als XML-Kalkulationstabelle speichern
- Transformation mittels excel2conerdf.xsl-Stylesheet. (Auf die richtigen Parameter, wie z.B. Server achten)
- Enstandenes RDF enthält die Personen aus dem Excel-File verknüpft mit den OUs von unserem Server (sofern die Namen korrekt in der OU-Struktur vorhanden waren).
- Dieses RDF lässt sich nun einfach in CoNE importieren
Beispiel: Properties anpassen[edit]
Importspezifische Konfigurationen werden aus der zugehörigen Java-Klasse automatisch ausgelesen, sofern diese eine getConfiguration()-Methode definiert. Die Konfiguration selbst ist in einer Property-File, die von der Transformation entsprechend ausgelesen, und der XSL-Transformation dann entsprechend den Nutzeraktionen als Parameter übergeben wird.
Wir passen also lediglich das Property-File der Transformation an. In unserem Fall also die [endnote.properties].
- endnote.properties-File vor den Änderungen:
configuration=Flavor=OTHER,CoNE=true
Flavor=ICE,BGC,OTHER
CoNE=true,false
- endnote.properties-File nach den Änderungen:
configuration=Flavor=OTHER,CoNE=true,Organisation=OTHER
Flavor=ICE,BGC,OTHER
CoNE=true,false
Organisation=MeineOU,OTHER
Die oberste Zeile definiert dabei die Default-Werte. Die restlichen Zeilen sind die Werte, welche die jeweilige Option annehmen kann
Beispiel: Import - Authorenabfrage[edit]
Endnote Testfile: File:Endnote sample.txt
- Um eine CoNE-Authorenabfrage speziell für unsere OU einzubinden müssen wir eine Verzweigung in das XSL-Stylesheet einbauen, die den Parameter Organisation auswertet und dann dementsprechen weiter vorgeht
- Zuerst den Parameter übernehmen, den wir übergeben
<xsl:param name="Organisation" select="''"/>
- Dann die Verzweigung in das Template createPerson einbauen (Die [Util-Klasse] bietet hier bereits einige Möglichkeiten für CoNE-Abfragen an)
<xsl:otherwise>
<xsl:choose>
<xsl:when test="$Organisation = 'MeineOU'">
<xsl:variable name="cone-creator" select=""Util:queryConeExact('persons', concat($person/familyname, ', ', $person/givenname), 'MeineOU')""/>
<xsl:variable name="multiplePersonsFound" select="exists($cone-creator/cone/rdf:RDF/rdf:Description[@rdf:about != preceding-sibling::attribute/@rdf:about])"/>
<xsl:if test="$multiplePersonsFound">
<xsl:value-of select="error(QName('http://www.escidoc.de', 'err:MultipleCreatorsFound' ), concat('There is more than one CoNE entry matching -', concat($person/familyname, ', ', $person/givenname), '-'))"/>
</xsl:if>
<xsl:element name="person:person">
<xsl:element name="eterms:family-name">
<xsl:value-of select="$person/familyname"/>
</xsl:element>
<xsl:element name="eterms:given-name">
<xsl:value-of select="$person/givenname"/>
</xsl:element>
<xsl:choose>
<xsl:when test="exists($cone-creator/cone/rdf:RDF/rdf:Description/esc:position)">
<xsl:for-each select="$cone-creator/cone/rdf:RDF[1]/rdf:Description/esc:position">
<organization:organization>
<dc:title>
<xsl:value-of select="rdf:Description/eprints:affiliatedInstitution"/>
</dc:title>
<dc:identifier>
<xsl:value-of select="rdf:Description/dc:identifier"/>
</dc:identifier>
</organization:organization>
</xsl:for-each>
</xsl:when>
<xsl:when test="not($isSource)">
<organization:organization>
<dc:title>Max Planck Society</dc:title>
<dc:identifier>
<xsl:value-of select="$root-ou"/>
</dc:identifier>
</organization:organization>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="exists($cone-creator/cone/rdf:RDF/rdf:Description)">
<dc:identifier xsi:type="CONE">
<xsl:value-of select="$cone-creator/cone/rdf:RDF[1]/rdf:Description[1]/@rdf:about"/>
</dc:identifier>
</xsl:when>
</xsl:choose>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="cone-creator" select="Util:queryCone('persons', concat($person/familyname, ', ', $person/givenname))"/>
<xsl:variable name="multiplePersonsFound" select="exists($cone-creator/cone/rdf:RDF/rdf:Description[@rdf:about != preceding-sibling::attribute/@rdf:about])"/>
<xsl:if test="$multiplePersonsFound">
<xsl:value-of select="error(QName('http://www.escidoc.de', 'err:MultipleCreatorsFound' ), concat('There is more than one CoNE entry matching -', concat($person/familyname, ', ', $person/givenname), '-'))"/>
</xsl:if>
<xsl:element name="person:person">
<xsl:element name="eterms:family-name">
<xsl:value-of select="$person/familyname"/>
</xsl:element>
<xsl:element name="eterms:given-name">
<xsl:value-of select="$person/givenname"/>
</xsl:element>
<xsl:choose>
<xsl:when test="exists($cone-creator/cone/rdf:RDF/rdf:Description/esc:position)">
<xsl:for-each select="$cone-creator/cone/rdf:RDF[1]/rdf:Description/esc:position">
<organization:organization>
<dc:title>
<xsl:value-of select="rdf:Description/eprints:affiliatedInstitution"/>
</dc:title>
<dc:identifier>
<xsl:value-of select="rdf:Description/dc:identifier"/>
</dc:identifier>
</organization:organization>
</xsl:for-each>
</xsl:when>
<xsl:when test="not($isSource)">
<organization:organization>
<dc:title>Max Planck Society</dc:title>
<dc:identifier>
<xsl:value-of select="$root-ou"/>
</dc:identifier>
</organization:organization>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="exists($cone-creator/cone/rdf:RDF/rdf:Description)">
<dc:identifier xsi:type="CONE">
<xsl:value-of select="$cone-creator/cone/rdf:RDF[1]/rdf:Description[1]/@rdf:about"/>
</dc:identifier>
</xsl:when>
</xsl:choose>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
- Nun können wir dast Testfile importieren und die Authoren werden nur mit CoNE-Einträgen verlichen, die unserer OU zugeordnet sind. (Wir müssen lediglich beachten bei der Konfiguration unsere MeineOU als Organisation anzugeben)