
    
    
        
    
                
    
        
    
                
    
        
    
                
    
        
    
            
    
        
    
                
    
        
    
                
    
        
    
                
    
        
    
                
    
        
    
                
    
        
    
        
{"version":"https:\/\/jsonfeed.org\/version\/1","title":"Bibliotekarien.se - Blogg","home_page_url":"https:\/\/bibliotekarien.se\/en\/blog","feed_url":"https:\/\/bibliotekarien.se\/en\/blog.json","description":null,"author":{"name":"Bibliotekarien"},"items":[{"title":"Three roads to Libris vocabularies \u2014 SPARQL, find, and EMM","date_published":"2026-05-29T06:43:04+00:00","id":"https:\/\/bibliotekarien.se\/en\/blog\/tre-vaegar-till-libris-vokabulaerer-sparql-find-och-emm","url":"https:\/\/bibliotekarien.se\/en\/blog\/tre-vaegar-till-libris-vokabulaerer-sparql-find-och-emm","content_html":"<p><em>Notes from an exploration of the National Library of Sweden's open data. Written by Claude Opus 4.7. May 2026.<\/em><\/p>\n<p>We needed to fetch the full subject-term vocabularies from Libris &mdash; SAO, the children's-literature thesaurus, SAOGF, barngf, and their geographic\/genre siblings &mdash; to be able to match catalog records against them. The Royal Library (Kungliga biblioteket, KB) exposes these vocabularies through three different APIs, each with its own character. This post is our field notes from the choice we had to make. It is written to stay useful even after the services have evolved: the queries and links below can be pasted into a terminal today, and you can compare your results against the numbers we report.<\/p>\n<h2 id=\"the-setting\">The setting<a href=\"#the-setting\" class=\"toc-anchor after\" data-anchor-icon=\"#\" aria-label=\"Anchor\"><\/a><\/h2>\n<p><a href=\"https:\/\/id.kb.se\">id.kb.se<\/a> is KB's persistent-identifier service. Every subject term has a URI following the pattern <code>https:\/\/id.kb.se\/term\/&lt;scheme&gt;\/&lt;urlencode(label)&gt;<\/code>. If you resolve the URI with <code>Accept: application\/ld+json<\/code>, you get the term back as JSON-LD:<\/p>\n<pre><code class=\"language-bash\">curl -H \"Accept: application\/ld+json\" https:\/\/id.kb.se\/term\/barn\/Sommaren<\/code><\/pre>\n<pre><code class=\"language-json\">{\n  \"@id\": \"https:\/\/id.kb.se\/term\/barn\/Sommaren\",\n  \"@type\": \"Topic\",\n  \"broader\": [{\"@id\": \"https:\/\/id.kb.se\/term\/barn\/%C3%85rstiderna\"}],\n  \"inScheme\": {\"@id\": \"https:\/\/id.kb.se\/term\/barn\"},\n  \"prefLabel\": \"Sommaren\"\n}<\/code><\/pre>\n<p>That is the <em>representation<\/em>. The question we needed to answer was how to <em>list<\/em> every term in a scheme. KB offers three paths for that.<\/p>\n<h2 id=\"path-1-sparql\">Path 1 &mdash; SPARQL<a href=\"#path-1-sparql\" class=\"toc-anchor after\" data-anchor-icon=\"#\" aria-label=\"Anchor\"><\/a><\/h2>\n<p>KB's triplestore (Virtuoso) at <a href=\"https:\/\/libris.kb.se\/sparql\">libris.kb.se\/sparql<\/a> is the classic semantic-web road in.<\/p>\n<pre><code class=\"language-sparql\">PREFIX : &lt;https:\/\/id.kb.se\/vocab\/&gt;\n\nSELECT ?topic ?type ?label\nWHERE {\n  [] :mainEntity ?topic .\n  ?topic a ?type ;\n         :inScheme &lt;https:\/\/id.kb.se\/term\/barn&gt; ;\n         :prefLabel ?label .\n}\nORDER BY ?label<\/code><\/pre>\n<p>For many terms this works splendidly &mdash; <code>Hundar<\/code>, <code>Katter<\/code>, and similar topics come back with their canonical URIs. Two observations from our work:<\/p>\n<h3 id=\"topic-nodes-with-no-outgo\">Topic nodes with no outgoing triples<a href=\"#topic-nodes-with-no-outgo\" class=\"toc-anchor after\" data-anchor-icon=\"#\" aria-label=\"Anchor\"><\/a><\/h3>\n<p>For a subset of terms, the topic's triples (<code>a :Topic<\/code>, <code>:prefLabel<\/code>, <code>:broader<\/code>) are stored under a blank node rather than under the term's id.kb.se URI. The canonical reproduction:<\/p>\n<pre><code class=\"language-sparql\">SELECT ?p ?o WHERE { &lt;https:\/\/id.kb.se\/term\/barn\/Sommaren&gt; ?p ?o }<\/code><\/pre>\n<p>On 27 May 2026 this returned <strong>0 rows<\/strong> &mdash; the term has no outgoing triples from its URI. Searching the other way around, however, gives hits:<\/p>\n<pre><code class=\"language-sparql\">SELECT ?s ?p WHERE { ?s ?p &lt;https:\/\/id.kb.se\/term\/barn\/Sommaren&gt; }<\/code><\/pre>\n<p>A large number of catalog records pop up here, pointing at the URI through <code>:subject<\/code>. The URI does exist in the graph &mdash; but only as object, not as the subject of the Topic node itself. The query <code>?topic :prefLabel \"Sommaren\"<\/code> returns a blank node (<code>nodeID:\/\/b&lt;&hellip;&gt;<\/code>) that carries all the metadata. This is a consequence of how the triplestore is exported, not of how the term is modelled in Libris XL &mdash; the JSON-LD view on id.kb.se serves the term correctly with its URI.<\/p>\n<h3 id=\"maxsortedtoprows-10-000\">MaxSortedTopRows = 10,000<a href=\"#maxsortedtoprows-10-000\" class=\"toc-anchor after\" data-anchor-icon=\"#\" aria-label=\"Anchor\"><\/a><\/h3>\n<p>Virtuoso has a server-side configuration that refuses <code>ORDER BY<\/code> queries where <code>OFFSET + LIMIT<\/code> exceeds 10,000. For larger vocabularies like SAO (~34,000 terms), you hit the wall at the eleventh page with page size 1000:<\/p>\n<pre><code>HTTP 500 &mdash; Virtuoso 22023 Error SR353:\nSorted TOP clause specifies more then 11000 rows to sort.\nOnly 10000 are allowed. Either decrease the offset and\/or row count\nor use a...<\/code><\/pre>","date_modified":"2026-05-29T06:43:04+00:00","image":"\/user\/pages\/02.blog\/06.tre-vaegar-till-libris-vokabulaerer-sparql-find-och-emm\/Sk\u00e4rmbild fr\u00e5n 2026-05-28 16-03-27.png"},{"title":"Panta rei","date_published":"2025-10-25T16:24:13+00:00","id":"https:\/\/bibliotekarien.se\/en\/blog\/panta-rei","url":"https:\/\/bibliotekarien.se\/en\/blog\/panta-rei","content_html":"<p>Obviously, you can\u2019t check something out to a patron if that something is already checked out to someone else. Right?<\/p>\n<p>In the wonderful world of library data, you quickly learn there\u2019s nothing solid to hold on to. ISBNs are unreliable, and the processes meant to track them in bibliographic records often make things worse. ORCIDs? That brilliant modern idea for identifying who actually wrote something? Think again. Researchers use them to create multiple personas, neatly separating their different research domains.\nThe list goes on forever, and I love it.<\/p>\n<p>But surely, a loan must be checked in after it\u2019s checked out. How else would we know it was returned? Right?\nWell, today I learned about the concept of a \u201cflying check-in.\u201d<\/p>\n<p>Reverse-engineering library systems from data dumps is only one part of the job, frustrating at times but also very rewarding.<\/p>","date_modified":"2025-10-25T16:40:32+00:00","image":"\/user\/pages\/02.blog\/04.panta-rei\/1761308439793.jpg"},{"title":"Stationskoder i SJ:s f\u00f6rs\u00e4ljningssystem SNAP och senare","date_published":"2024-10-19T08:45:35+00:00","id":"https:\/\/bibliotekarien.se\/en\/blog\/stationskoder-i-sj-s-foersaeljningssystem-snap-och-senare","url":"https:\/\/bibliotekarien.se\/en\/blog\/stationskoder-i-sj-s-foersaeljningssystem-snap-och-senare","content_html":"<p>Bibliotekarien har ett f&ouml;rflutet hos SJ AB, d&auml;r han fr&aring;n 2001 och n&aring;gra &aring;r fram&aring;t arbetade extra som biljettf&ouml;rs&auml;ljare och i kundservice. En fostrande tid p&aring; m&aring;nga s&auml;tt. <\/p>\n<p><img title=\"sj_storlien\" alt=\"sj_storlien\" src=\"\/user\/pages\/02.blog\/stationskoder-i-sj-s-foersaeljningssystem-snap-och-senare\/sj_storlien.png\"><\/p>\n<p>En nyttig kunskap var att l&auml;ra sig de olika koder som finns f&ouml;r de olika stationerna inom j&auml;rnv&auml;gen (och ResPlus-samarabetet). Banverket hade <a href=\"https:\/\/sv.m.wikipedia.org\/wiki\/Lista_%C3%B6ver_trafikplatssignaturer_i_det_svenska_j%C3%A4rnv%C3%A4gsn%C3%A4tet?=1\">en serie alfabetiska koder<\/a> som var till nytta i kundservice f&ouml;r att kunna f&ouml;lja f&ouml;rsenade t&aring;g i systemet TF&Ouml;R. I biljettsystemet fanns ett annat system med sifferkoder. Det h&auml;r systemet finns fortfarande kvar p&aring; <a href=\"https:\/\/sj.se\">sj.se<\/a> och jag brukar testa minnet med dem. Problement &auml;r att minnet sviker och jag har hittills inte hittat n&aring;gon &ouml;ppen lista med koderna. S&aring; h&auml;r l&auml;gger jag ut den aktuella listan med stationer som har numeriska \"synonymer\" fr&aring;n sj.se den 19 oktober 2024.<\/p>\n<p>Hoppas den kan hj&auml;lpa er att spara lika m&aring;nga knapptryckningar som den hj&auml;lpte mig en g&aring;ng i tiden.<\/p>\n<table>\n    <thead><tr><td>Station<\/td><td>Kod<\/td><\/tr><\/thead>\n<tr><td>Stockholm Central<\/td><td>1<\/td><\/tr>\n<tr><td>G&ouml;teborg Central<\/td><td>2<\/td><\/tr>\n<tr><td>Malm&ouml; Central<\/td><td>3<\/td><\/tr>\n<tr><td>Alvesta station<\/td><td>4<\/td><\/tr>\n<tr><td>Uppsala Central<\/td><td>5<\/td><\/tr>\n<tr><td>H&auml;ssleholm Central<\/td><td>6<\/td><\/tr>\n<tr><td>Norrk&ouml;ping Central<\/td><td>7<\/td><\/tr>\n<tr><td>Sk&ouml;vde Central<\/td><td>8<\/td><\/tr>\n<tr><td>Link&ouml;ping Central<\/td><td>9<\/td><\/tr>\n<tr><td>Teckomatorp station<\/td><td>11<\/td><\/tr>\n<tr><td>Varg&ouml;n station<\/td><td>12<\/td><\/tr>\n<tr><td>Stenungsund station<\/td><td>14<\/td><\/tr>\n<tr><td>Boxholm station<\/td><td>15<\/td><\/tr>\n<tr><td>Vara station<\/td><td>16<\/td><\/tr>\n<tr><td>Hassl&ouml; Fabian M&aring;nsons v&auml;g<\/td><td>17<\/td><\/tr>\n<tr><td>Alings&aring;s station<\/td><td>18<\/td><\/tr>\n<tr><td>Leksand station<\/td><td>19<\/td><\/tr>\n<tr><td>Kalmar Central<\/td><td>20<\/td><\/tr>\n<tr><td>Kinnared station<\/td><td>21<\/td><\/tr>\n<tr><td>Perstorp station<\/td><td>22<\/td><\/tr>\n<tr><td>S&auml;ffle station<\/td><td>23<\/td><\/tr>\n<tr><td>S&ouml;derb&auml;rke station<\/td><td>24<\/td><\/tr>\n<tr><td>Storlien station<\/td><td>25<\/td><\/tr>\n<tr><td>S&auml;ter station<\/td><td>26<\/td><\/tr>\n<tr><td>M&auml;rsta station<\/td><td>27<\/td><\/tr>\n<tr><td>Ystad station<\/td><td>28<\/td><\/tr>\n<tr><td>L&ouml;nsboda busstation<\/td><td>29<\/td><\/tr>\n<tr><td>Falun Central<\/td><td>30<\/td><\/tr>\n<tr><td>Flemingsberg station<\/td><td>31<\/td><\/tr>\n<tr><td>Br&auml;cke station<\/td><td>32<\/td><\/tr>\n<tr><td>Eriksm&aring;la<\/td><td>33<\/td><\/tr>\n<tr><td>Forserum station<\/td><td>34<\/td><\/tr>\n<tr><td>Axvall centrum<\/td><td>35<\/td><\/tr>\n<tr><td>Floby station<\/td><td>36<\/td><\/tr>\n<tr><td>&Aring;nn station<\/td><td>37<\/td><\/tr>\n<tr><td>Marstrand f&auml;rjel&auml;ge<\/td><td>38<\/td><\/tr>\n<tr><td>Mellerud station<\/td><td>39<\/td><\/tr>\n<tr><td>Herrljunga station<\/td><td>40<\/td><\/tr>\n<tr><td>Tran&aring;s station<\/td><td>41<\/td><\/tr>\n<tr><td>Hedemora station<\/td><td>42<\/td><\/tr>\n<tr><td>Sollefte&aring; station<\/td><td>43<\/td><\/tr>\n<tr><td>Helsingborg Central<\/td><td>44<\/td><\/tr>\n<tr><td>&Auml;lmhult station<\/td><td>45<\/td><\/tr>\n<tr><td>Ramn&auml;s station<\/td><td>46<\/td><\/tr>\n<tr><td>Charlottenberg station<\/td><td>48<\/td><\/tr>\n<tr><td>S&ouml;dert&auml;lje hamn station<\/td><td>49<\/td><\/tr>\n<tr><td>Nyk&ouml;ping Central<\/td><td>50<\/td><\/tr>\n<tr><td>Soller&ouml;n centrum<\/td><td>51<\/td><\/tr>\n<tr><td>V&auml;rnamo station<\/td><td>52<\/td><\/tr>\n<tr><td>Skellefte&aring; busstation<\/td><td>53<\/td><\/tr>\n<tr><td>H&auml;llevadsholm station<\/td><td>54<\/td><\/tr>\n<tr><td>S&ouml;dert&auml;lje Syd station<\/td><td>55<\/td><\/tr>\n<tr><td>&Ouml;verby station<\/td><td>56<\/td><\/tr>\n<tr><td>Tr&ouml;nninge<\/td><td>57<\/td><\/tr>\n<tr><td>Laholm station<\/td><td>58<\/td><\/tr>\n<tr><td>Bj&ouml;rkliden station<\/td><td>59<\/td><\/tr>\n<tr><td>Falk&ouml;ping Central<\/td><td>60<\/td><\/tr>\n<tr><td>Smedjebacken station<\/td><td>62<\/td><\/tr>\n<tr><td>Enafors station<\/td><td>63<\/td><\/tr>\n<tr><td>&Auml;ngelholm station<\/td><td>64<\/td><\/tr>\n<tr><td>Dingle station<\/td><td>65<\/td><\/tr>\n<tr><td>Nol station<\/td><td>66<\/td><\/tr>\n<tr><td>L&auml;ggesta station<\/td><td>67<\/td><\/tr>\n<tr><td>Haparanda gr&auml;ns<\/td><td>68<\/td><\/tr>\n<tr><td>Ronneby station<\/td><td>69<\/td><\/tr>\n<tr><td>Karlstad Central<\/td><td>70<\/td><\/tr>\n<tr><td>G&aring;rdsj&ouml; station<\/td><td>71<\/td><\/tr>\n<tr><td>Enk&ouml;ping station<\/td><td>72<\/td><\/tr>\n<tr><td>Karlshamn station<\/td><td>73<\/td><\/tr>\n<tr><td>Kristineberg Lycksele<\/td><td>74<\/td><\/tr>\n<tr><td>Skee station<\/td><td>75<\/td><\/tr>\n<tr><td>&Aring;m&aring;l station<\/td><td>76<\/td><\/tr>\n<tr><td>Hallsberg station<\/td><td>77<\/td><\/tr>\n<tr><td>S&auml;vsj&ouml; station<\/td><td>78<\/td><\/tr>\n<tr><td>S&ouml;lvesborg station<\/td><td>79<\/td><\/tr>\n<tr><td>Halmstad Central<\/td><td>80<\/td><\/tr>\n<tr><td>N&ouml;dinge station<\/td><td>81<\/td><\/tr>\n<tr><td>V&auml;stervik station<\/td><td>82<\/td><\/tr>\n<tr><td>H&aring;kantorp station<\/td><td>83<\/td><\/tr>\n<tr><td>Eksj&ouml; station<\/td><td>84<\/td><\/tr>\n<tr><td>Vetlanda station<\/td><td>86<\/td><\/tr>\n<tr><td>Munkedal station<\/td><td>87<\/td><\/tr>\n<tr><td>Trelleborg Central<\/td><td>88<\/td><\/tr>\n<tr><td>Hestra station<\/td><td>89<\/td><\/tr>\n<tr><td>J&ouml;nk&ouml;ping Central<\/td><td>90<\/td><\/tr>\n<tr><td>Onsala kyrka<\/td><td>92<\/td><\/tr>\n<tr><td>Lindesberg station<\/td><td>93<\/td><\/tr>\n<tr><td>Ulricehamn busstation<\/td><td>94<\/td><\/tr>\n<tr><td>Str&ouml;mstad station<\/td><td>95<\/td><\/tr>\n<tr><td>Emmaboda station<\/td><td>96<\/td><\/tr>\n<tr><td>T&auml;llberg station<\/td><td>97<\/td><\/tr>\n<tr><td>Ljungskile station<\/td><td>98<\/td><\/tr>\n<tr><td>V&auml;ster&aring;s Central<\/td><td>99<\/td><\/tr>\n<tr><td>Limmared station<\/td><td>100<\/td><\/tr>\n<tr><td>Bjuv station<\/td><td>102<\/td><\/tr>\n<tr><td>Ingelstad centrum<\/td><td>103<\/td><\/tr>\n<tr><td>Kallinge torg<\/td><td>104<\/td><\/tr>\n<tr><td>&Aring;nge station<\/td><td>105<\/td><\/tr>\n<tr><td>Gr&auml;storp station<\/td><td>107<\/td><\/tr>\n<tr><td>Str&auml;ngn&auml;s station<\/td><td>108<\/td><\/tr>\n<tr><td>Fristad station<\/td><td>109<\/td><\/tr>\n<tr><td>Varberg station<\/td><td>110<\/td><\/tr>\n<tr><td>Avesta Krylbo station<\/td><td>111<\/td><\/tr>\n<tr><td>Gnosj&ouml; station<\/td><td>112<\/td><\/tr>\n<tr><td>Sollebrunn busstation<\/td><td>113<\/td><\/tr>\n<tr><td>Abisko Turiststation<\/td><td>114<\/td><\/tr>\n<tr><td>&Aring;re station<\/td><td>115<\/td><\/tr>\n<tr><td>Landeryd station<\/td><td>116<\/td><\/tr>\n<tr><td>Lysekil S&ouml;dra Hamnen<\/td><td>118<\/td><\/tr>\n<tr><td>Uddevalla Central<\/td><td>119<\/td><\/tr>\n<tr><td>Lund Central<\/td><td>120<\/td><\/tr>\n<tr><td>Klippan station<\/td><td>121<\/td><\/tr>\n<tr><td>Moheda station<\/td><td>122<\/td><\/tr>\n<tr><td>&Ouml;stersund Central<\/td><td>123<\/td><\/tr>\n<tr><td>Norrhult Industrigatan<\/td><td>124<\/td><\/tr>\n<tr><td>J&auml;rpen station<\/td><td>126...<\/td><\/tr><\/table>","date_modified":"2024-10-19T08:45:35+00:00","image":"\/user\/pages\/02.blog\/stationskoder-i-sj-s-foersaeljningssystem-snap-och-senare\/sj_storlien.png"},{"title":"Guide till delf\u00e4lten i 099 i Mikromarc","date_published":"2024-10-11T11:57:20+00:00","id":"https:\/\/bibliotekarien.se\/en\/blog\/guide-till-delfaelten-i-099-i-mikromarc","url":"https:\/\/bibliotekarien.se\/en\/blog\/guide-till-delfaelten-i-099-i-mikromarc","content_html":"<p>Jag har haft lite sv\u00e5rt att hitta detta \u00f6ppet p\u00e5 n\u00e4tet, s\u00e5 h\u00e4r kommer en snabb guide till hur man tolkar exemplarinformationen i 099 Mikromarcs bibliografiska poster:<\/p>\n<dl>\n    <dt>0<\/dt>\n    <dd>L\u00e5n till\u00e5tet 0\/1<\/dd>\n    <dt>1<\/dt>\n<dd>Senast hanterat vid enhet<\/dd>\n<dt>7<\/dt>\n<dd>Visa i webbs\u00f6k 0\/1<\/dd>\n<dt>b<\/dt>\n<dd>Exemplarnamn<\/dd>\n<dt>f<\/dt>\n    <dd><p>Exemplarstatus<\/p>\n        <p>\n        <\/p><ul>\n            <li>0   Available for loan<\/li>\n             <li>2  In course of acquisition<\/li>\n            <li>4   On loan<\/li>\n            <li>6   In process<\/li>\n            <li>7   Recalled<\/li>\n            <li>8   Waiting on reservation shelf<\/li>\n            <li>9   Awaiting replacing<\/li>\n            <li>10  In transit between libraries<\/li>\n            <li>11  Claimed returned or never borrowed<\/li>\n            <li>12  Lost<\/li>\n            <li>13  Missing being traced<\/li>\n            <li>14  Supplied (i.e. return not required)<\/li>\n            <li>15  At binding<\/li>\n            <li>16  Under repair<\/li>\n            <li>17  Awaiting transfer<\/li>\n            <li>18  Missing overdue<\/li>\n            <li>19  Withdrawn<\/li>\n            <li>20  Discarded<\/li>\n            <li>21  Other<\/li>\n            <li>22  Unknown<\/li>\n            <li>23  Ordered from another library<\/li>\n            <li>101 Reserved<\/li>\n            <li>102 Reserved - in transit between libraries<\/li>\n            <li>103 To acquisition<\/li>\n\n        <\/ul>\n        \n    <\/dd>\n<dt>g<\/dt>\n    <dd><p>L\u00e5netyp.<\/p><\/dd>\n<dt>h<\/dt>\n<dd>\u00c4gande enhet<\/dd>\n<dt>i<\/dt>\n<dd>Notering<\/dd>\n<dt>j<\/dt>\n<dd>Kulturr\u00e5dsexemplar 0\/1<\/dd>\n<dt>k<\/dt>\n<dd>Streckkod<\/dd>\n<dt>l<\/dt>\n<dd>Antal l\u00e5n<\/dd>\n<dt>o<\/dt>\n<dd>Exemplarhylla<\/dd>\n    <dt>r<\/dt>\n    <dd>Retroaktivt 0\/1<\/dd>\n<dt>u<\/dt>\n<dd>Fast placering enhet<\/dd>\n<dt>x<\/dt>\n<dd>Ursprungligt system-id<\/dd>\n<dt>y<\/dt>\n<dd>Registreringsdatum<\/dd>\n<dt>z<\/dt>\n<dd>Datum f\u00f6r senaste \u00e4ndring\n<\/dd><\/dl>    ","date_modified":"2024-10-11T11:57:20+00:00"},{"title":"Sessions and (Python) HTTP modules","date_published":"2024-05-16T06:55:37+00:00","id":"https:\/\/bibliotekarien.se\/en\/blog\/sessions-and-python-http-modules","url":"https:\/\/bibliotekarien.se\/en\/blog\/sessions-and-python-http-modules","content_html":"<p>Some of the documentation best-practices around certain technologies are written with the best intentions in mind, but they can lead to unforseen side-effects or bring users to make bad decisions.<\/p>\n<p>One of my favourite examples are package installation guidelines in the Linux world. It is not uncommon for Stack overflow or even the package docs themselves to tell you to<\/p>\n<blockquote>\n<p>yum install MY_PACKAGE\nThis looks very easy, but if you try that and it turns out that you do not have sufficient permissions, you might be tempted to make your user Root instead of just add the <em>sudo<\/em> in front of it all. <\/p>\n<\/blockquote>\n<p>In the FOLIO Migration tools, we used the over-documented getting-started way to make HTTP requests like this:<\/p>\n<blockquote>\n<p>r = requests.get('https:\/\/api.github.com\/events')<\/p>\n<\/blockquote>\n<p>What I did not know at the time, is that these calls has a lot of overhead if you want to call the same server multiple times. It also potentially eats up resources at the server level. I thought it was the server that was slow. Not my code.\nWhen my colleagues started talking about session objects, things got way faster very quickly. Turns out this is fundamental best practices, and something I should have known... Diving into the requests module's Advanced section of the docs, the first thing that is mentioned is the \"Session\" object:<\/p>\n<blockquote>\n<p>The Session object allows you to persist certain parameters across requests. It also persists cookies across all requests made from the Session instance, and will use urllib3\u2019s connection pooling. So if you\u2019re making several requests to the same host, the underlying TCP connection will be reused, which can result in a significant performance increase (see HTTP persistent connection).<\/p>\n<\/blockquote>\n<p>The httpx package is less subtle:<\/p>\n<blockquote>\n<p>If you do anything more than experimentation, one-off scripts, or prototypes, then you should use a Client instance<\/p>\n<\/blockquote>\n<p>These things are indeed annoying, and I know it is hard to decide between a good Getting started one-liner and something more long-term useful. I guess it is just part of the game.<\/p>\n<p>For some time now, my former colleagues at EBSCO has made sure things are moving way faster in the <a href=\"https:\/\/github.com\/FOLIO-FSE\/folioclient\">FOLIO Client<\/a> with the use of HTTPX Client objects, and I must say the <a href=\"https:\/\/github.com\/FOLIO-FSE\/folio_migration_tools\">FOLIO Migration tools<\/a> have benefited tremendously from the improvement.<\/p>\n<p><img title=\"httpx%20advanced%20usage\" alt=\"httpx%20advanced%20usage\" src=\"\/user\/pages\/02.blog\/sessions-and-python-http-modules\/httpx%20advanced%20usage.png\"><\/p>","date_modified":"2024-05-16T06:55:37+00:00","image":"\/user\/pages\/02.blog\/sessions-and-python-http-modules\/httpx advanced usage.png"},{"title":"Tree view in Windows Explorer","date_published":"2023-04-10T11:50:16+00:00","id":"https:\/\/bibliotekarien.se\/en\/blog\/traedvy-i-utforskaren","url":"https:\/\/bibliotekarien.se\/en\/blog\/traedvy-i-utforskaren","content_html":"<p>Have you also missed the ability to have a tree-out view in Windows Explorer? <\/p>\n<p>I don't remember when it disappeared, but it must have been a long time ago. Yesterday I realized that maybe it didn't go away, but that it might actually still be there. So I asked Google, and yes, it was probably still there. Here's how to do it:<\/p>\n<blockquote>\n<ul>\n<li>Open <strong>File Explorer.<\/strong>    <\/li>\n<li>Click <strong>View<\/strong> from the Main Menu.<\/li>\n<li>Click <strong>Options &gt; Change folder and search options<\/strong>.<\/li>\n<li>Click the <strong>View<\/strong> tab, then under<strong> Advanced settings<\/strong> list, tick or check the following items:<\/li>\n<li><strong>Files and Folders &gt; Hidden files and folders<\/strong><\/li>\n<li><strong>Show hidden files, folders, or drives<\/strong>.<\/li>\n<li>Navigation pane<\/li>\n<li><strong>Expand to open folder<\/strong><\/li>\n<li><strong>Show all folders<\/strong><\/li>\n<li><strong>Show libraries<\/strong><\/li>\n<li>Click <strong>Apply<\/strong>, then <strong>OK<\/strong>.<\/li>\n<li>Close and relaunch the File Explorer and see if the entire folder pane tree will show when you expand it.<\/li>\n<\/ul>\n<\/blockquote>\n<p><img title=\"craiyon_134044_windows_explorer_file_tree\" alt=\"craiyon_134044_windows_explorer_file_tree\" src=\"\/user\/pages\/02.blog\/traedvy-i-utforskaren\/craiyon_134044_windows_explorer_file_tree.png\">\nSource: https:\/\/answers.microsoft.com\/en-us\/windows\/forum\/all\/how-to-display-entire-tree-in-windows-10-file\/5cb5b28c-ffe9-47f4-b312-41f5c7a17955<\/p>","date_modified":"2023-04-10T11:50:16+00:00","image":"\/user\/pages\/02.blog\/traedvy-i-utforskaren\/craiyon_134044_windows_explorer_file_tree.png"},{"title":"Artikel: Cornell Library FOLIO Case Study","date_published":"2022-01-22T22:40:23+00:00","id":"https:\/\/bibliotekarien.se\/en\/blog\/artikel-cornell-library-folio-case-study","url":"https:\/\/bibliotekarien.se\/en\/blog\/artikel-cornell-library-folio-case-study","content_html":"<p>Jenn Colt and Debra Howell from Cornell University Library have written an article about their FOLIO implementation. <\/p>\n<p>There are even a few praises here and there:<\/p>\n<blockquote>\n<p>Our EBSCO implementation consultants were invaluable partners during our migration and implementation.<\/p>\n<\/blockquote>\n<p><a href=\"\/en\/blog\/artikel-cornell-library-folio-case-study\/205-Article%20Text-1141-1-10-20211222.pdf\">205-Article Text-1141-1-10-20211222.pdf<\/a><\/p>","date_modified":"2022-01-22T22:40:23+00:00","image":"\/user\/pages\/02.blog\/artikel-cornell-library-folio-case-study\/cornel_article_header.png"},{"title":"FOLIO Launches Kiwi release and is getting close to having 50 institutions live on the platform","date_published":"2022-01-22T22:37:20+00:00","id":"https:\/\/bibliotekarien.se\/en\/blog\/folio-slaepper-kiwi-versionen-och-naermar-sig-50-bibliotek-pa-plattformen","url":"https:\/\/bibliotekarien.se\/en\/blog\/folio-slaepper-kiwi-versionen-och-naermar-sig-50-bibliotek-pa-plattformen","content_html":"<p>I'm cannot remember where I imagined FOLIO would be today, when I started implementing the system for Chalmers a little over four years ago. But it sure feels like the baby has grown when you look at what the Kiwi release brings to the market. Not to mention the fact that there is almost 50 libraries running it today. Including a couple of really large institutions. On Five continents. <\/p>\n<p><a href=\"https:\/\/wiki.folio.org\/display\/REL\/Kiwi+(R3+2021)+Release+Notes\">Kiwi release notes<\/a>\nFrom FOLIO.org:<\/p>\n<blockquote>\n<p>FOLIO Library Services Platform Launches Kiwi Release\n~ Latest FOLIO Platform Update Focuses on User Experience Improvements ~\nPHILADELPHIA &mdash; January 13, 2022 &mdash; The FOLIO Open Source Community has issued its latest named release as the platform continues to add features and functionality to the library services platform (LSP). The Kiwi Release includes platform updates and integration improvements in addition to user experience (UX) improvements and features.<\/p>\n<p>The Kiwi Release offers platform enhancements that provide librarians with a more efficient user experience in the FOLIO platform. These enhancements include updates made to cataloging where libraries can now manage MARC holdings in FOLIO. Improvements to acquisitions provide the LSP with even more flexibility when creating new orders via GOBI&reg;. The Kiwi Release also made improvements to circulation by providing improved logging related to patron notice processing as to capture all errors and add them to circulation log. These are just a few of the improvements made in the Kiwi Release, view the full list of improvements here.<\/p>\n<p>Kristin Martin, Director of Technical Services from the University of Chicago and co-chair of the FOLIO Product Council, says the Kiwi Release demonstrates FOLIO&rsquo;s continued commitment to improving the user experience for libraries adopting FOLIO. &ldquo;We are approaching fifty libraries live on FOLIO and the named releases from the FOLIO community has allowed more and more libraries to adopt and manage their operations on the open source LSP.&rdquo;<\/p>\n<p>Academic institutions have taken a variety of pathways when moving to FOLIO, between full implementation to starting with ERM (electronic resource management) functionality before replacing an existing ILS or by leveraging FOLIO apps such as circulation and inventory.<\/p>\n<p>As libraries continue to implement the FOLIO LSP, FOLIO developers ensure that components can be readily developed or replaced in new releases as technologies and requirements evolve. The next release will be the Lotus Release which is expected in April 2022. Information about the FOLIO Community and the upcoming releases can be found at https:\/\/wiki.folio.org.<\/p>\n<p>About FOLIO\nFOLIO is a collaborative effort among libraries, vendors, developers and consortia that leverages open source technology and a community-based effort to redefine library services and innovate based on library futures. By building on what libraries need and by leveraging library expertise as well as vendor capacity and velocity, FOLIO is designed to move libraries forward, build on the services they provide and redefine the role libraries play within their institution. FOLIO also levels the playing field and makes open source technology available to all institutions regardless of size or staffing. FOLIO brings vendors together to innovate...<\/p><\/blockquote>","date_modified":"2022-01-22T22:38:00+00:00","image":"\/user\/pages\/02.blog\/folio-slaepper-kiwi-versionen-och-naermar-sig-50-bibliotek-pa-plattformen\/kiwi-badge-NOV.png"},{"title":"License display in Discovery fed from FOLIO","date_published":"2021-06-17T12:49:33+00:00","id":"https:\/\/bibliotekarien.se\/en\/blog\/license-display-in-discovery-fed-from-folio","url":"https:\/\/bibliotekarien.se\/en\/blog\/license-display-in-discovery-fed-from-folio","content_html":"<p>Many years ago, when I worked at Sockholm University Library, I worked on surfacing license information from Verde on the results display in the Bento-box style OPAC\/Discovery we built at the time:\n<img title=\"SUB%20licence%20display\" alt=\"SUB%20licence%20display\" src=\"\/user\/pages\/02.blog\/license-display-in-discovery-fed-from-folio\/SUB%20licence%20display.png\"><\/p>\n<p>I belive this was successfull in many ways, and certainly a proof of the usefulness of the APIs inovled (EDS; SOLR; SFX; Verde).\nI recently got asked what FOLIO can do in this area, and for the projects I have been involved in there have been two solutions.\nThe first solution is provided by Chalmers Institute of Technology and is a third-party application that links out from EDS into a interface that presents the necessarry information in a very clean way:\n<img title=\"Chalmers%20license%20display\" alt=\"Chalmers%20license%20display\" src=\"\/user\/pages\/02.blog\/license-display-in-discovery-fed-from-folio\/Chalmers%20license%20display.png\"><\/p>\n<p>The other way is the integration of the same kind of information in EBSCOs Publication Finder interface, depicted below:\n<img title=\"license_terms_pub_finder\" alt=\"license_terms_pub_finder\" src=\"\/user\/pages\/02.blog\/license-display-in-discovery-fed-from-folio\/license_terms_pub_finder.png\"><\/p>\n<p>Booth these FOLIO approaches require a lookup in order to get the correct identifier that is required by the <a href=\"https:\/\/s3.amazonaws.com\/foliodocs\/api\/mod-licenses\/p\/licenses.html\">FOLIO  license  API<\/a>.<\/p>","date_modified":"2021-06-17T13:03:53+00:00","image":"\/user\/pages\/02.blog\/license-display-in-discovery-fed-from-folio\/license_terms_pub_finder.png"},{"title":"Bibliotekarien goes Grav","date_published":"2021-06-04T09:17:25+00:00","id":"https:\/\/bibliotekarien.se\/en\/blog\/bibliotekarien-goes-grav","url":"https:\/\/bibliotekarien.se\/en\/blog\/bibliotekarien-goes-grav","content_html":"<p>This is the third platform for this site. First there was Drupal, and the last...ten years or so the site has been running on various incarnations of Umbraco. Now I switch back to PHP with Grav. Markdown FTW!<\/p>\n<p><img title=\"grav-logo\" alt=\"grav-logo\" src=\"\/user\/pages\/02.blog\/bibliotekarien-goes-grav\/grav-logo.svg?decoding=auto&amp;fetchpriority=auto\"><\/p>","date_modified":"2021-06-04T09:17:35+00:00"}]}
