1 / 12

Fedora Content Model en XSLT Fedora op Klompen, Amsterdam, 2008-01-20

Fedora Content Model en XSLT Fedora op Klompen, Amsterdam, 2008-01-20. Egbert Gramsbergen TU Delft Library / Digital Product Development e.f.gramsbergen@tudelft.nl. Motivatie. De meeste datastreams zijn xml De meeste disseminaties zijn x(ht)ml xml -> x(ht)ml : XSLT

sasha
Download Presentation

Fedora Content Model en XSLT Fedora op Klompen, Amsterdam, 2008-01-20

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Fedora Content Modelen XSLTFedora op Klompen, Amsterdam, 2008-01-20 Egbert GramsbergenTU Delft Library / Digital Product Developmente.f.gramsbergen@tudelft.nl

  2. 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

  3. XSLT processing model XML parameters secundaire input documenten secundaire output documenten Voor Fedora context:relevantgewenstniet relevant extension:Java classes XML

  4. 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

  5. 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

  6. Content Model Architecture welke datastreams? welke services? <= abstract (hieruit volgen URIs van disseminaties) Object RDF in RELS-EXT van vertrekpuntpijl <= implementie data object koppeling met web services, bijv. Saxon

  7. 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?

  8. 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

  9. Voorbeeld xslt fragment URI bakken voor query in RI index: <xsl:param name="itql-pars" select="'type=tuples&amp;lang=itql&amp;format=Sparql&amp;query='"/> <xsl:param name="itql-template"> <![CDATA[ select$id $titlefrom <#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="query" select="normalize-space(replace($itql-template,'_',$this))"/> <xsl:variable name="itql-uri" select="concat($local,'risearch?',$itql-pars,encode-for-uri($query))"/> en even verderop het resultaat verwerken: <ol> <xsl:for-each select="doc($itql-uri)//sparql:result"> <li><a href="{$fedora_get}{sparql:id}{$DC}"><xsl:value-of select="sparql:title"/></a></li> </xsl:for-each> </ol>

  10. Resultaat

  11. Wat nog ontbreekt XSLT parameters settenKan 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

  12. 3TU Datacentrum (ontwikkelsite) • Repository navigator • Dynamic DC

More Related