Fedora CMA en XSLT
Upcoming SlideShare
Loading in...5
×
 

Fedora CMA en XSLT

on

  • 1,018 views

Presentatie door Egbert Gramsbergen. Deze presentatie beschrijft hoe de SAXON XSLT disseminator van Fedora gebruikt kan worden om de resource index te bevragen.

Presentatie door Egbert Gramsbergen. Deze presentatie beschrijft hoe de SAXON XSLT disseminator van Fedora gebruikt kan worden om de resource index te bevragen.

Statistics

Views

Total Views
1,018
Views on SlideShare
1,017
Embed Views
1

Actions

Likes
0
Downloads
0
Comments
1

1 Embed 1

http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • De beperkingen genoemd in slide 11 gelden nu niet meer. Zie voor een opdate ook http://www.slideshare.net/efgramsbergen/elag-2012-under-the-hood-of-3tudatacentrum
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Fedora CMA en XSLT Fedora CMA en XSLT Presentation Transcript

  • Fedora Content Model en XSLT Fedora op Klompen, Amsterdam, 2008-01-20 Egbert Gramsbergen TU Delft Library / Digital Product Development [email_address]
  • Motivatie
    • De meeste datastreams zijn xml
    • De meeste disseminaties zijn x(ht)ml
    • xml -> x(ht)ml : XSLT
    • Fedora heeft interne xslt service
    • Gebouwd met Saxon, ondersteunt xslt2.0
    • XSLT zelf kan als datastream in Fedora object
    • Werkende disseminaties door enkele objecten, zonder programmeren
  • XSLT processing model XML XML parameters secundaire input documenten secundaire output documenten Voor Fedora context: relevant gewenst niet relevant extension: Java classes
  • Overige ingrediënten
    • Content Model Architecture (Fedora 3.x)
      • data object heeft alleen relatie met Content Model
      • alle gedrag (disseminaties) wordt van daaruit geregeld
    • RDF (RI index)
      • gevuld uit DC en RELS-EXT datastreams
      • RELS-EXT voor relaties tussen objecten
      • queries via REST API
    • REST API (API-A-LITE)
      • in: URI, uit: (meestal) xml
      • datastreams, disseminaties, queries
      • alles te gebruiken als secundair input document xslt
  • Toepassingen
    • Van alles. Gewoon html genereren maar ook…
    • Navigatie tussen gerelateerde objecten
    • Aggregatie van content of metadata van gerelateerde objecten
    • Bijvoorbeeld…
    • Een profiel van persoon verrijken met links naar zijn/haar artikelen en gegevens van zijn/haar organisatie
    • Datasets aanvullen met gegevens over apparaat, studie, lokatie, links naar gerelateerde datasets
    • “ Jump-off” pagina’s maken voor collecties, instituten, hele repositories
    • “ Dumbed-down” Dublin Core samenstellen voor OAI-MPH (+ namespace reparatie)
    • ORE Resource Maps genereren
  • Content Model Architecture welke datastreams? welke services? <= abstract (hieruit volgen URIs van disseminaties) <= implementie data object koppeling met web services, bijv. Saxon Object RDF in RELS-EXT van vertrekpunt pijl
  • URI’s in CMA
    • <host>/fedora/get/<PID>/<datastream>
    • <host>/fedora/get/<PID>/<SDef PID>/<method>[?params] Service Deployment komt hier niet in voor!
    • N.B. Alle relaties in CMA zijn n-n
    • Dus bijv:
    • n SDefs voor 1 Content Model
    • n SDeps voor 1 SDef (bijv. verschillend per Content Model)
    • n Content Models voor data object
    • TODO experiment: wat als zich meer SDeps aanbieden?
  • XSLT 2.0 vs. 1.0
    • XSLT 1.0 was goed in manipulatie van XML trees (nodesets)
    • XSLT 2.0 voegt toe:
    • Text manupulatie
      • Regex, uri’s, date/time, allerlei extra functies
    • xPath 2.0 (ook basis van xQuery)
      • Sequences i.p.v. nodesets
      • Conditionals, iteratie , set operations
    • Multipass processing
    • Type system (gebaseerd op xml Schema)
    • Functies (toegang vanuit xPath)
    • Semi-gestructureerde data structureren
    • Multiple output docs
    • Standaard extensie mechanisme
    • Resultaat: glijdende schaal van simpel template naar bijna complete (declaratieve) programmeertaal
  • Voorbeeld xslt fragment
    • URI bakken voor query in RI index:
    • <xsl:param name=&quot;itql-pars&quot; select=&quot;'type=tuples&amp;lang=itql&amp;format=Sparql&amp;query='&quot;/>
    • <xsl:param name=&quot;itql-template&quot;>
    • <![CDATA[
    • select $id $title from <#ri> <= ITQL, een RDF query taaltje
    • where $doc <dc:title> $title
    • and $doc <dc:identifier> $id
    • and $doc <dcterms:creator> <_>
    • ]]>
    • </xsl:param>
    • <xsl:variable name=&quot;query&quot; select=&quot; normalize-space ( replace ($itql-template,'_',$this))&quot;/>
    • <xsl:variable name=&quot; itql-uri &quot; select=&quot; concat ($local,'risearch?',$itql-pars, encode-for-uri ($query))&quot;/>
    • en even verderop het resultaat verwerken:
    • <ol>
    • < xsl:for-each select=&quot; doc( $itql-uri )//sparql:result &quot;>
    • <li><a href=&quot;{$fedora_get}{ sparql:id }{$DC}&quot;><xsl:value-of select=&quot; sparql:title &quot;/></a></li>
    • </xsl:for-each>
    • </ol>
  • Resultaat
  • Wat nog ontbreekt
    • XSLT parameters setten Kan met Saxon, maar niet ge ïmplementeerd in service (feature request ingediend)
    • Dus wat nog niet kan (bijv):
    • Query resultaten pagineren
    • Een lijst maken van leden van een collectie die tevens voldoen aan een bepaald Content Model
    • De schaal of range van een grafiek aanpassen
    • En nog een foutje:
    • MIME type (anders dan HTML) wordt genegeerd
    • 3TU Datacentrum
    • (ontwikkelsite)
    • Repository navigator
    • Dynamic DC