Your SlideShare is downloading. ×
0
Fedora CMA en XSLT
Fedora CMA en XSLT
Fedora CMA en XSLT
Fedora CMA en XSLT
Fedora CMA en XSLT
Fedora CMA en XSLT
Fedora CMA en XSLT
Fedora CMA en XSLT
Fedora CMA en XSLT
Fedora CMA en XSLT
Fedora CMA en XSLT
Fedora CMA en XSLT
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Fedora CMA en XSLT

409

Published on

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.

1 Comment
0 Likes
Statistics
Notes
  • 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
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total Views
409
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
1
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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

×