From 975d787c44c3826175f4952bae583a568d8f05f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Lindstr=C3=B6m?= Date: Mon, 27 Apr 2026 17:00:40 +0200 Subject: [PATCH 01/10] Add initial term definitions for uppsok --- source/uppsok.ttl | 116 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 source/uppsok.ttl diff --git a/source/uppsok.ttl b/source/uppsok.ttl new file mode 100644 index 00000000..11abc1aa --- /dev/null +++ b/source/uppsok.ttl @@ -0,0 +1,116 @@ +prefix : +prefix saogf: +prefix upp: + +# saogf:Studentuppsatser :broader saogf:Uppsatser . ? +# :related saogf:Avhandlingar ? +# :broadMatch saogf:Studentuppsatser ? + +# relation - :relatedTo ? + +# ämneskategori (+ överordnad från setspec?) + +upp:L a :WorkCategory ; + :code "L" ; + :prefLabel "Bas"@sv ; + :altLabel "Övriga arbeten"@sv . + +upp:M a :WorkCategory ; + :code "M" ; + :prefLabel "Grund"@sv . + +upp:H a :WorkCategory ; + :code "H" ; + :prefLabel "Avancerad"@sv . + +upp:L1 a :WorkCategory ; + :code "L1" ; + :prefLabel "Studentarbete (första termin)"@sv, "Student paper (first term)"@en ; + :scopeNote "paper/studentarbete skrivna inom studentens första termin inom ett ämne, eller 1,5-30 högskolepoängsnivån"@ev ; + :broader upp:L . + +upp:L2 a :WorkCategory ; + :code "L2" ; + :prefLabel "Studentarbete (andra termin)"@sv, "Student paper (second term)"@en ; + :scopeNote "paper/studentarbete skrivna inom studentens andra termin inom ett ämne, eller 31,5–60 högskolepoängsnivån"@ev ; + :broader upp:L . + +upp:L3 a :WorkCategory ; + :code "L3" ; + :prefLabel "Studentarbete (övrigt)"@sv, "Student paper (other)"@en ; + :scopeNote "Övriga arbeten, t.ex. projektarbete etc"@ev ; + :broader upp:L . + +upp:M1 a :WorkCategory ; + :code "M1" ; + :prefLabel "Högskoleuppsats"@sv ; + :definition "Självständigt arbete på grundnivå (högskoleexamen)"@sv, "Independent thesis Basic level (university diploma)"@en ; + :scopeNote "högskole Självständigt arbete (examensarbete) utfört för att erhålla högskoleexamen"@ev ; + :broader upp:M . + +upp:M2 a :WorkCategory ; + :code "M2" ; + :prefLabel "Kandidatuppsats"@sv ; + :definition "Självständigt arbete på grundnivå (kandidatexamen)"@sv, "Independent thesis Basic level (degree of Bachelor)"@en ; + :scopeNote "kandidat Självständigt arbete (examensarbete) om minst 15 högskolepoäng utfört för att erhålla kandidatexamen"@ev ; + :broader upp:M . + +upp:M3 a :WorkCategory ; + :code "M3" ; + :prefLabel "Uppsats för yrkesexamina på grundnivå"@sv ; + :definition "Självständigt arbete på grundnivå (yrkesexamen)"@sv, "Independent thesis Basic level (professional degree)"@en ; + :scopeNote "yrkes grundnivå Självständigt arbete (examensarbete) om minst 15 högskolepoäng utfört för att erhålla yrkesexamen på grundnivå"@ev ; + :broader upp:M . + +upp:M4 a :WorkCategory ; + :code "M4" ; + :prefLabel "Högskoleuppsats (konstnärlig högskoleuppsats)"@sv ; + :definition "Självständigt arbete på grundnivå (konstnärlig högskoleexamen)"@sv, "Independent thesis Basic level (Higher Education Diploma (Fine Arts))"@en ; + :broader upp:M . + +upp:M5 a :WorkCategory ; + :code "M5" ; + :prefLabel "Kandidatuppsats (konstnärlig kandidatexamen)"@sv ; + :definition "Självständigt arbete på grundnivå (konstnärlig kandidatexamen)"@sv, "Independent thesis Basic level (degree of Bachelor of Fine Arts)"@en ; + :broader upp:M . + +upp:H1 a :WorkCategory ; + :code "H1" ; + :prefLabel "Magisteruppsats"@sv ; + :definition "Självständigt arbete på avancerad nivå (magisterexamen)"@sv, "Independent thesis Advanced level (degree of Master (One Year))"@en ; + :scopeNote "magister Självständigt arbete (examensarbete) om minst 15 högskolepoäng utfört för att erhålla magisterexamen"@ev ; + :broader upp:H . + +upp:H2 a :WorkCategory ; + :code "H2" ; + :prefLabel "Masteruppsats"@sv ; + :definition "Självständigt arbete på avancerad nivå (masterexamen)"@sv, "Independent thesis Advanced level (degree of Master (Two Years))"@en ; + :scopeNote "master Självständigt arbete (examensarbete) om 30 högskolepoäng (med vissa undantag) utfört för att erhålla masterexamen"@ev ; + :broader upp:H . + +upp:H3 a :WorkCategory ; + :code "H3" ; + :prefLabel "Uppsats för yrkesexamina på avancerad nivå"@sv ; + :definition "Självständigt arbete på avancerad nivå (yrkesexamen)"@sv, "Independent thesis Advanced level (professional degree)"@en ; + :scopeNote "yrkes avancerad nivå Självständigt arbete (examensarbete) om 30 högskolepoäng utfört för att erhålla yrkesexamen på avancerad nivå"@ev ; + :broader upp:H . + +upp:H4 a :WorkCategory ; + :code "H4" ; + :prefLabel "Magisteruppsats (konstnärlig magisterexamen)"@sv ; + :definition "Självständigt arbete på avancerad nivå (konstnärlig magisterexamen)"@sv, "Independent thesis Advanced level (degree of Master of Fine Arts (One Year))"@en ; + :broader upp:H . + +upp:H5 a :WorkCategory ; + :code "H5" ; + :prefLabel "Masteruppsats (konstnärlig masterexamen)"@sv ; + :definition "Självständigt arbete på avancerad nivå (konstnärlig masterexamen)"@sv, "Independent thesis Advanced level (degree of Master of Fine Arts (Two Years))"@en ; + :broader upp:H . + +# A ingen uppgift om omfattning | B1 - ingen uppgift om omfattning +# B ingen uppgift om omfattning | B2 B2 - ingen uppgift om omfattning +# C 120p, examensarbete 10p | B2 G2 kandidat 180 hp, examensarbete 15hp +# Y skiljer inte på grund/avancerad | G3 yrkes grundnivå 180 hp, examensarbete 15 hp +# D 160 p, examensarbete 20p | A1 magister 240 hp, examensarbete 15 hp +# Y skiljer inte på grund/avancerad | A3 yrkes avancerad nivå omfattning varierar + From d9c031afb092ef9e34ecf8df34789132aff198f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Lindstr=C3=B6m?= Date: Mon, 27 Apr 2026 17:14:09 +0200 Subject: [PATCH 02/10] Adjust remaining comments --- source/uppsok.ttl | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/source/uppsok.ttl b/source/uppsok.ttl index 11abc1aa..99341c2b 100644 --- a/source/uppsok.ttl +++ b/source/uppsok.ttl @@ -2,14 +2,12 @@ prefix : prefix saogf: prefix upp: +## Basic Categories (Genre/Form?) + # saogf:Studentuppsatser :broader saogf:Uppsatser . ? # :related saogf:Avhandlingar ? # :broadMatch saogf:Studentuppsatser ? -# relation - :relatedTo ? - -# ämneskategori (+ överordnad från setspec?) - upp:L a :WorkCategory ; :code "L" ; :prefLabel "Bas"@sv ; @@ -114,3 +112,9 @@ upp:H5 a :WorkCategory ; # D 160 p, examensarbete 20p | A1 magister 240 hp, examensarbete 15 hp # Y skiljer inte på grund/avancerad | A3 yrkes avancerad nivå omfattning varierar +## Subject terms? +# ämneskategori (+ överordnad från setspec?) + +## Model? +# relation - use :relatedTo (or :Relationship...)? + From 0920bcb9e5bf08fe72ac60262a09e79baae40ea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lisa=20Sj=C3=B6gren?= Date: Tue, 28 Apr 2026 13:12:49 +0200 Subject: [PATCH 03/10] Clean up scopeNotes --- source/uppsok.ttl | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/source/uppsok.ttl b/source/uppsok.ttl index 99341c2b..47dc4a26 100644 --- a/source/uppsok.ttl +++ b/source/uppsok.ttl @@ -24,13 +24,13 @@ upp:H a :WorkCategory ; upp:L1 a :WorkCategory ; :code "L1" ; :prefLabel "Studentarbete (första termin)"@sv, "Student paper (first term)"@en ; - :scopeNote "paper/studentarbete skrivna inom studentens första termin inom ett ämne, eller 1,5-30 högskolepoängsnivån"@ev ; + :scopeNote "Paper/studentarbete skrivna inom studentens första termin inom ett ämne, eller 1,5-30 högskolepoängsnivån"@ev ; :broader upp:L . upp:L2 a :WorkCategory ; :code "L2" ; :prefLabel "Studentarbete (andra termin)"@sv, "Student paper (second term)"@en ; - :scopeNote "paper/studentarbete skrivna inom studentens andra termin inom ett ämne, eller 31,5–60 högskolepoängsnivån"@ev ; + :scopeNote "Paper/studentarbete skrivna inom studentens andra termin inom ett ämne, eller 31,5–60 högskolepoängsnivån"@ev ; :broader upp:L . upp:L3 a :WorkCategory ; @@ -43,21 +43,21 @@ upp:M1 a :WorkCategory ; :code "M1" ; :prefLabel "Högskoleuppsats"@sv ; :definition "Självständigt arbete på grundnivå (högskoleexamen)"@sv, "Independent thesis Basic level (university diploma)"@en ; - :scopeNote "högskole Självständigt arbete (examensarbete) utfört för att erhålla högskoleexamen"@ev ; + :scopeNote "Självständigt arbete (examensarbete) utfört för att erhålla högskoleexamen"@ev ; :broader upp:M . upp:M2 a :WorkCategory ; :code "M2" ; :prefLabel "Kandidatuppsats"@sv ; :definition "Självständigt arbete på grundnivå (kandidatexamen)"@sv, "Independent thesis Basic level (degree of Bachelor)"@en ; - :scopeNote "kandidat Självständigt arbete (examensarbete) om minst 15 högskolepoäng utfört för att erhålla kandidatexamen"@ev ; + :scopeNote "Självständigt arbete (examensarbete) om minst 15 högskolepoäng utfört för att erhålla kandidatexamen"@ev ; :broader upp:M . upp:M3 a :WorkCategory ; :code "M3" ; :prefLabel "Uppsats för yrkesexamina på grundnivå"@sv ; :definition "Självständigt arbete på grundnivå (yrkesexamen)"@sv, "Independent thesis Basic level (professional degree)"@en ; - :scopeNote "yrkes grundnivå Självständigt arbete (examensarbete) om minst 15 högskolepoäng utfört för att erhålla yrkesexamen på grundnivå"@ev ; + :scopeNote "Självständigt arbete (examensarbete) om minst 15 högskolepoäng utfört för att erhålla yrkesexamen på grundnivå"@ev ; :broader upp:M . upp:M4 a :WorkCategory ; @@ -76,21 +76,21 @@ upp:H1 a :WorkCategory ; :code "H1" ; :prefLabel "Magisteruppsats"@sv ; :definition "Självständigt arbete på avancerad nivå (magisterexamen)"@sv, "Independent thesis Advanced level (degree of Master (One Year))"@en ; - :scopeNote "magister Självständigt arbete (examensarbete) om minst 15 högskolepoäng utfört för att erhålla magisterexamen"@ev ; + :scopeNote "Självständigt arbete (examensarbete) om minst 15 högskolepoäng utfört för att erhålla magisterexamen"@ev ; :broader upp:H . upp:H2 a :WorkCategory ; :code "H2" ; :prefLabel "Masteruppsats"@sv ; :definition "Självständigt arbete på avancerad nivå (masterexamen)"@sv, "Independent thesis Advanced level (degree of Master (Two Years))"@en ; - :scopeNote "master Självständigt arbete (examensarbete) om 30 högskolepoäng (med vissa undantag) utfört för att erhålla masterexamen"@ev ; + :scopeNote "Självständigt arbete (examensarbete) om 30 högskolepoäng (med vissa undantag) utfört för att erhålla masterexamen"@ev ; :broader upp:H . upp:H3 a :WorkCategory ; :code "H3" ; :prefLabel "Uppsats för yrkesexamina på avancerad nivå"@sv ; :definition "Självständigt arbete på avancerad nivå (yrkesexamen)"@sv, "Independent thesis Advanced level (professional degree)"@en ; - :scopeNote "yrkes avancerad nivå Självständigt arbete (examensarbete) om 30 högskolepoäng utfört för att erhålla yrkesexamen på avancerad nivå"@ev ; + :scopeNote "Självständigt arbete (examensarbete) om 30 högskolepoäng utfört för att erhålla yrkesexamen på avancerad nivå"@ev ; :broader upp:H . upp:H4 a :WorkCategory ; From 54ac47d15b893d10a2fc8cf4523b2a3bb2bb749e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lisa=20Sj=C3=B6gren?= Date: Tue, 28 Apr 2026 15:16:02 +0200 Subject: [PATCH 04/10] =?UTF-8?q?Add=20Upps=C3=B6k=20setnames=20with=20bro?= =?UTF-8?q?adMatches=20to=20SSIF=20terms?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/uppsok.ttl | 67 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 2 deletions(-) diff --git a/source/uppsok.ttl b/source/uppsok.ttl index 47dc4a26..c9f306ae 100644 --- a/source/uppsok.ttl +++ b/source/uppsok.ttl @@ -105,6 +105,38 @@ upp:H5 a :WorkCategory ; :definition "Självständigt arbete på avancerad nivå (konstnärlig masterexamen)"@sv, "Independent thesis Advanced level (degree of Master of Fine Arts (Two Years))"@en ; :broader upp:H . +# Pre-bologna Swedish levels +upp:A a :WorkCategory ; + :code "A" ; + :prefLabel ""@sv ; + :definition ""@sv, ""@en ; + :broader upp: . + +upp:B a :WorkCategory ; + :code "B" ; + :prefLabel ""@sv ; + :definition ""@sv, ""@en ; + :broader upp: . + +upp:C a :WorkCategory ; + :code "C" ; + :prefLabel ""@sv ; + :definition ""@sv, ""@en ; + :broader upp: . + +upp:D a :WorkCategory ; + :code "D" ; + :prefLabel ""@sv ; + :definition ""@sv, ""@en ; + :broader upp: . + +upp:Y a :WorkCategory ; + :code "Y" ; + :prefLabel ""@sv ; + :definition ""@sv, ""@en ; + :broader upp: . + + # A ingen uppgift om omfattning | B1 - ingen uppgift om omfattning # B ingen uppgift om omfattning | B2 B2 - ingen uppgift om omfattning # C 120p, examensarbete 10p | B2 G2 kandidat 180 hp, examensarbete 15hp @@ -112,9 +144,40 @@ upp:H5 a :WorkCategory ; # D 160 p, examensarbete 20p | A1 magister 240 hp, examensarbete 15 hp # Y skiljer inte på grund/avancerad | A3 yrkes avancerad nivå omfattning varierar -## Subject terms? -# ämneskategori (+ överordnad från setspec?) +## Uppsök SetName +upp:BioGeo a :Classification ; + :prefLabel "Bio- och geovetenskaper"@sv ; + :broadMatch . + +upp:FysKemMat a :Classification ; + :prefLabel "Fysik, kemi och matematik"@sv ; + :broadMatch . + +upp:TekVet a :Classification ; + :prefLabel "Tekniska vetenskaper"@sv ; + :broadMatch . + +upp:Med a :Classification ; + :prefLabel "Medicin"@sv ; + :broadMatch . + +upp:LanVetSko a :Classification ; + :prefLabel "Lantbruk, veterinärmedicin och skoglig vetenskap"@sv ; + :broadMatch . + +upp:SamBetJur a :Classification ; + :prefLabel "Samhälls-, beteendevetenskap och juridik"@sv ; + :broadMatch . + +upp:KonArb a :Classification ; + :prefLabel "Konstnärligt arbete"@sv ; + :broadMatch . + +upp:HumTeo a :Classification ; + :prefLabel "Humaniora och teologi"@sv ; + :broadMatch . ## Model? # relation - use :relatedTo (or :Relationship...)? +# or omething more specific in case the data we get is acutally dc.relation.ispartofseries? From 44d9520f173d35d7218b027c32860b0a5eba20fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lisa=20Sj=C3=B6gren?= Date: Tue, 28 Apr 2026 16:24:04 +0200 Subject: [PATCH 05/10] Add labels, scopeNotes and relations for pre-Bologna levels --- source/uppsok.ttl | 58 +++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/source/uppsok.ttl b/source/uppsok.ttl index c9f306ae..2a3273c0 100644 --- a/source/uppsok.ttl +++ b/source/uppsok.ttl @@ -10,16 +10,16 @@ prefix upp: upp:L a :WorkCategory ; :code "L" ; - :prefLabel "Bas"@sv ; - :altLabel "Övriga arbeten"@sv . + :prefLabel "Basnivå"@sv ; + :altLabel "Övriga arbeten"@sv, "Bas"@sv . upp:M a :WorkCategory ; :code "M" ; - :prefLabel "Grund"@sv . + :prefLabel "Grundnivå"@sv, "Grund"@sv . upp:H a :WorkCategory ; :code "H" ; - :prefLabel "Avancerad"@sv . + :prefLabel "Avancerad nivå"@sv, "Avancerad" . upp:L1 a :WorkCategory ; :code "L1" ; @@ -105,44 +105,42 @@ upp:H5 a :WorkCategory ; :definition "Självständigt arbete på avancerad nivå (konstnärlig masterexamen)"@sv, "Independent thesis Advanced level (degree of Master of Fine Arts (Two Years))"@en ; :broader upp:H . -# Pre-bologna Swedish levels +## Pre-Bologna Swedish levels +# A ingen uppgift om omfattning | B1 - ingen uppgift om omfattning +# B ingen uppgift om omfattning | B2 B2 - ingen uppgift om omfattning +# C 120p, examensarbete 10p | B2 G2 kandidat 180 hp, examensarbete 15hp +# Y skiljer inte på grund/avancerad | G3 yrkes grundnivå 180 hp, examensarbete 15 hp +# D 160 p, examensarbete 20p | A1 magister 240 hp, examensarbete 15 hp +# Y skiljer inte på grund/avancerad | A3 yrkes avancerad nivå omfattning varierar + upp:A a :WorkCategory ; - :code "A" ; + :code "Studentarbete på A-nivå" ; :prefLabel ""@sv ; - :definition ""@sv, ""@en ; - :broader upp: . + :scopeNote "Paper/studentarbete som högskolan publicerar elektroniskt, skrivna inom studentens första termin inom ett ämne, dvs. A-nivå eller 1-20 poängsnivån. Sannolikt ingen stor förekomst av dessa från högskolorna, men de kan medtagas inom tjänsten i de fall de förekommer."@sv ; + :broader upp:L . upp:B a :WorkCategory ; :code "B" ; - :prefLabel ""@sv ; - :definition ""@sv, ""@en ; - :broader upp: . + :prefLabel "Studentarbete på B-nivå"@sv ; + :definition "Paper/studentarbete skriven inom studentens andra termin av ämnesfördjupning, dvs. på B-nivå eller 21-40 poängsnivån."@sv ; + :scopeNote upp:L . upp:C a :WorkCategory ; :code "C" ; - :prefLabel ""@sv ; - :definition ""@sv, ""@en ; - :broader upp: . + :prefLabel "Uppsats på C-nivå"@sv ; + :scopeNote "Uppsats/examensarbete utfört under tredje terminen, 41-60 poängsnivån. Arbetet kan i många fall vara en kandidatuppsats."@sv ; + :broader upp:M . upp:D a :WorkCategory ; :code "D" ; - :prefLabel ""@sv ; - :definition ""@sv, ""@en ; - :broader upp: . + :prefLabel "Uppsats på D-nivå"@sv ; + :scopeNote "Uppsats/examensarbete utför under fjärde terminens ämnesfördjupning, dvs. på 61-80-poängsnivån. Kan i många fall vara en magisteruppsats."@sv ; + :broader upp:H . upp:Y a :WorkCategory ; :code "Y" ; - :prefLabel ""@sv ; - :definition ""@sv, ""@en ; - :broader upp: . - - -# A ingen uppgift om omfattning | B1 - ingen uppgift om omfattning -# B ingen uppgift om omfattning | B2 B2 - ingen uppgift om omfattning -# C 120p, examensarbete 10p | B2 G2 kandidat 180 hp, examensarbete 15hp -# Y skiljer inte på grund/avancerad | G3 yrkes grundnivå 180 hp, examensarbete 15 hp -# D 160 p, examensarbete 20p | A1 magister 240 hp, examensarbete 15 hp -# Y skiljer inte på grund/avancerad | A3 yrkes avancerad nivå omfattning varierar + :prefLabel "Uppsats för yrkesexamen"@sv ; + :scopeNote "Examensarbete/uppsats som leder till en yrkesexamen. Skiljer inte på grund/avancerad."@sv . ## Uppsök SetName upp:BioGeo a :Classification ; @@ -177,7 +175,3 @@ upp:HumTeo a :Classification ; :prefLabel "Humaniora och teologi"@sv ; :broadMatch . -## Model? -# relation - use :relatedTo (or :Relationship...)? -# or omething more specific in case the data we get is acutally dc.relation.ispartofseries? - From e6ce1e51b1ff56e41d524aee019d582a25a236dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Lindstr=C3=B6m?= Date: Wed, 29 Apr 2026 10:29:54 +0200 Subject: [PATCH 06/10] Allow dataset definitions to specify context used --- lxltools/datacompiler.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/lxltools/datacompiler.py b/lxltools/datacompiler.py index 06cabc6f..83d184b1 100644 --- a/lxltools/datacompiler.py +++ b/lxltools/datacompiler.py @@ -115,10 +115,11 @@ def handler(self, func): def path(self, pth): return self.base_dir / pth - def to_jsonld(self, graph): + def to_jsonld(self, graph, context=None): + context = (context or self.context) return ldutil.to_jsonld(graph, - "../" + self.context, - self.load_json(self.context)) + "../" + context, + self.load_json(context)) def _compile_datasets(self, names): self._create_dataset_description(self.dataset_id, @@ -151,9 +152,6 @@ def _compile_dataset(self, name, result): ds_created_ms = timeutil.w3c_dtz_to_ms(created_time) ds_modified_ms = last_modified_ms(self.current_ds_resources) - if isinstance(data, Graph): - data = self.to_jsonld(data) - ds_url = urljoin(self.dataset_id, name) self._create_dataset_description(ds_url, ds_created_ms, ds_modified_ms) @@ -380,7 +378,7 @@ def load_json(self, fpathref): def read_csv(self, fpath, **kws): return _read_csv(self.path(fpath), **kws) - def construct(self, sources, query=None): + def construct(self, sources, query=None, context=None): return _construct(self, sources, query) def _handlers_from_datasets_description(self, description_path): @@ -402,9 +400,10 @@ def dataset_handler(): sources=source.get('source', []), query=source.get('query') ) + data = compiler.to_jsonld(graph, ds.get('jsonld:context')) ztime = ds['created']['@value'].replace('+00:00', 'Z') - return ds.get('uriSpace'), ztime, graph + return ds.get('uriSpace'), ztime, data dataset_handler.__name__ = ds['@id'].rsplit('/', 1)[-1] From 0542d2fa305ba60fabe6204a386cac651971b5a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Lindstr=C3=B6m?= Date: Wed, 29 Apr 2026 10:33:19 +0200 Subject: [PATCH 07/10] Define uppsokterms dataset --- source/datasets/idkbse.ttl | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/source/datasets/idkbse.ttl b/source/datasets/idkbse.ttl index 5e44e682..01290e3e 100644 --- a/source/datasets/idkbse.ttl +++ b/source/datasets/idkbse.ttl @@ -1,3 +1,4 @@ +prefix jsonld: prefix xsd: prefix : base @@ -94,6 +95,15 @@ base :uriSpace "/term/swepub/" ; :created "2018-05-29T12:36:01.337Z"^^xsd:dateTime . + a :Dataset ; + jsonld:context "sys/context/kbv.jsonld" ; + :isPartOf ; + :sourceData [ :uri "build/uppsokterms.json.lines" ; + :sourceData [ :uri 'source/uppsok.ttl' ] + ] ; + :uriSpace "/term/uppsok/" ; + :created "2018-05-29T12:36:01.337Z"^^xsd:dateTime . + a :Dataset ; :isPartOf ; :sourceData [ :uri "build/relators.json.lines" ; :sourceData [ a :QueryConstruct ; From 65f932eb9e81be58220a9e1cd9332955b7799c5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Lindstr=C3=B6m?= Date: Wed, 29 Apr 2026 16:38:53 +0200 Subject: [PATCH 08/10] Fix upp:B term description --- source/uppsok.ttl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/uppsok.ttl b/source/uppsok.ttl index 2a3273c0..fe3192dc 100644 --- a/source/uppsok.ttl +++ b/source/uppsok.ttl @@ -122,8 +122,8 @@ upp:A a :WorkCategory ; upp:B a :WorkCategory ; :code "B" ; :prefLabel "Studentarbete på B-nivå"@sv ; - :definition "Paper/studentarbete skriven inom studentens andra termin av ämnesfördjupning, dvs. på B-nivå eller 21-40 poängsnivån."@sv ; - :scopeNote upp:L . + :scopeNote "Paper/studentarbete skriven inom studentens andra termin av ämnesfördjupning, dvs. på B-nivå eller 21-40 poängsnivån."@sv ; + :broader upp:L . upp:C a :WorkCategory ; :code "C" ; From 6726a34c20fae9d274dab8f298ce9ab6325ad613 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Lindstr=C3=B6m?= Date: Wed, 29 Apr 2026 16:40:16 +0200 Subject: [PATCH 09/10] Define uppsok concept scheme and link from terms --- source/schemes.ttl | 7 ++++++- source/uppsok.ttl | 29 +++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/source/schemes.ttl b/source/schemes.ttl index 641bddad..c53d38b7 100644 --- a/source/schemes.ttl +++ b/source/schemes.ttl @@ -230,11 +230,16 @@ dc:title "Abstrakta termer"@sv; void:inDataset . - a skos:ConceptScheme; + a skos:ConceptScheme; skos:notation "swepub"; dc:title "Swepubtermer"@sv; dc:title "Swepub terms"@en . + a skos:ConceptScheme; + skos:notation "Uppsök"; + dc:title "Uppsök-termer"@sv; + dc:title "Uppsök terms"@en . + # "others" a :TopicScheme; diff --git a/source/uppsok.ttl b/source/uppsok.ttl index fe3192dc..cfd0b54a 100644 --- a/source/uppsok.ttl +++ b/source/uppsok.ttl @@ -9,37 +9,44 @@ prefix upp: # :broadMatch saogf:Studentuppsatser ? upp:L a :WorkCategory ; + :inScheme ; :code "L" ; :prefLabel "Basnivå"@sv ; :altLabel "Övriga arbeten"@sv, "Bas"@sv . upp:M a :WorkCategory ; + :inScheme ; :code "M" ; :prefLabel "Grundnivå"@sv, "Grund"@sv . upp:H a :WorkCategory ; + :inScheme ; :code "H" ; :prefLabel "Avancerad nivå"@sv, "Avancerad" . upp:L1 a :WorkCategory ; + :inScheme ; :code "L1" ; :prefLabel "Studentarbete (första termin)"@sv, "Student paper (first term)"@en ; :scopeNote "Paper/studentarbete skrivna inom studentens första termin inom ett ämne, eller 1,5-30 högskolepoängsnivån"@ev ; :broader upp:L . upp:L2 a :WorkCategory ; + :inScheme ; :code "L2" ; :prefLabel "Studentarbete (andra termin)"@sv, "Student paper (second term)"@en ; :scopeNote "Paper/studentarbete skrivna inom studentens andra termin inom ett ämne, eller 31,5–60 högskolepoängsnivån"@ev ; :broader upp:L . upp:L3 a :WorkCategory ; + :inScheme ; :code "L3" ; :prefLabel "Studentarbete (övrigt)"@sv, "Student paper (other)"@en ; :scopeNote "Övriga arbeten, t.ex. projektarbete etc"@ev ; :broader upp:L . upp:M1 a :WorkCategory ; + :inScheme ; :code "M1" ; :prefLabel "Högskoleuppsats"@sv ; :definition "Självständigt arbete på grundnivå (högskoleexamen)"@sv, "Independent thesis Basic level (university diploma)"@en ; @@ -47,6 +54,7 @@ upp:M1 a :WorkCategory ; :broader upp:M . upp:M2 a :WorkCategory ; + :inScheme ; :code "M2" ; :prefLabel "Kandidatuppsats"@sv ; :definition "Självständigt arbete på grundnivå (kandidatexamen)"@sv, "Independent thesis Basic level (degree of Bachelor)"@en ; @@ -54,6 +62,7 @@ upp:M2 a :WorkCategory ; :broader upp:M . upp:M3 a :WorkCategory ; + :inScheme ; :code "M3" ; :prefLabel "Uppsats för yrkesexamina på grundnivå"@sv ; :definition "Självständigt arbete på grundnivå (yrkesexamen)"@sv, "Independent thesis Basic level (professional degree)"@en ; @@ -61,18 +70,21 @@ upp:M3 a :WorkCategory ; :broader upp:M . upp:M4 a :WorkCategory ; + :inScheme ; :code "M4" ; :prefLabel "Högskoleuppsats (konstnärlig högskoleuppsats)"@sv ; :definition "Självständigt arbete på grundnivå (konstnärlig högskoleexamen)"@sv, "Independent thesis Basic level (Higher Education Diploma (Fine Arts))"@en ; :broader upp:M . upp:M5 a :WorkCategory ; + :inScheme ; :code "M5" ; :prefLabel "Kandidatuppsats (konstnärlig kandidatexamen)"@sv ; :definition "Självständigt arbete på grundnivå (konstnärlig kandidatexamen)"@sv, "Independent thesis Basic level (degree of Bachelor of Fine Arts)"@en ; :broader upp:M . upp:H1 a :WorkCategory ; + :inScheme ; :code "H1" ; :prefLabel "Magisteruppsats"@sv ; :definition "Självständigt arbete på avancerad nivå (magisterexamen)"@sv, "Independent thesis Advanced level (degree of Master (One Year))"@en ; @@ -80,6 +92,7 @@ upp:H1 a :WorkCategory ; :broader upp:H . upp:H2 a :WorkCategory ; + :inScheme ; :code "H2" ; :prefLabel "Masteruppsats"@sv ; :definition "Självständigt arbete på avancerad nivå (masterexamen)"@sv, "Independent thesis Advanced level (degree of Master (Two Years))"@en ; @@ -87,6 +100,7 @@ upp:H2 a :WorkCategory ; :broader upp:H . upp:H3 a :WorkCategory ; + :inScheme ; :code "H3" ; :prefLabel "Uppsats för yrkesexamina på avancerad nivå"@sv ; :definition "Självständigt arbete på avancerad nivå (yrkesexamen)"@sv, "Independent thesis Advanced level (professional degree)"@en ; @@ -94,12 +108,14 @@ upp:H3 a :WorkCategory ; :broader upp:H . upp:H4 a :WorkCategory ; + :inScheme ; :code "H4" ; :prefLabel "Magisteruppsats (konstnärlig magisterexamen)"@sv ; :definition "Självständigt arbete på avancerad nivå (konstnärlig magisterexamen)"@sv, "Independent thesis Advanced level (degree of Master of Fine Arts (One Year))"@en ; :broader upp:H . upp:H5 a :WorkCategory ; + :inScheme ; :code "H5" ; :prefLabel "Masteruppsats (konstnärlig masterexamen)"@sv ; :definition "Självständigt arbete på avancerad nivå (konstnärlig masterexamen)"@sv, "Independent thesis Advanced level (degree of Master of Fine Arts (Two Years))"@en ; @@ -114,64 +130,77 @@ upp:H5 a :WorkCategory ; # Y skiljer inte på grund/avancerad | A3 yrkes avancerad nivå omfattning varierar upp:A a :WorkCategory ; + :inScheme ; :code "Studentarbete på A-nivå" ; :prefLabel ""@sv ; :scopeNote "Paper/studentarbete som högskolan publicerar elektroniskt, skrivna inom studentens första termin inom ett ämne, dvs. A-nivå eller 1-20 poängsnivån. Sannolikt ingen stor förekomst av dessa från högskolorna, men de kan medtagas inom tjänsten i de fall de förekommer."@sv ; :broader upp:L . upp:B a :WorkCategory ; + :inScheme ; :code "B" ; :prefLabel "Studentarbete på B-nivå"@sv ; :scopeNote "Paper/studentarbete skriven inom studentens andra termin av ämnesfördjupning, dvs. på B-nivå eller 21-40 poängsnivån."@sv ; :broader upp:L . upp:C a :WorkCategory ; + :inScheme ; :code "C" ; :prefLabel "Uppsats på C-nivå"@sv ; :scopeNote "Uppsats/examensarbete utfört under tredje terminen, 41-60 poängsnivån. Arbetet kan i många fall vara en kandidatuppsats."@sv ; :broader upp:M . upp:D a :WorkCategory ; + :inScheme ; :code "D" ; :prefLabel "Uppsats på D-nivå"@sv ; :scopeNote "Uppsats/examensarbete utför under fjärde terminens ämnesfördjupning, dvs. på 61-80-poängsnivån. Kan i många fall vara en magisteruppsats."@sv ; :broader upp:H . upp:Y a :WorkCategory ; + :inScheme ; :code "Y" ; :prefLabel "Uppsats för yrkesexamen"@sv ; :scopeNote "Examensarbete/uppsats som leder till en yrkesexamen. Skiljer inte på grund/avancerad."@sv . ## Uppsök SetName upp:BioGeo a :Classification ; + :inScheme ; :prefLabel "Bio- och geovetenskaper"@sv ; :broadMatch . upp:FysKemMat a :Classification ; + :inScheme ; :prefLabel "Fysik, kemi och matematik"@sv ; :broadMatch . upp:TekVet a :Classification ; + :inScheme ; :prefLabel "Tekniska vetenskaper"@sv ; :broadMatch . upp:Med a :Classification ; + :inScheme ; :prefLabel "Medicin"@sv ; :broadMatch . upp:LanVetSko a :Classification ; + :inScheme ; :prefLabel "Lantbruk, veterinärmedicin och skoglig vetenskap"@sv ; :broadMatch . upp:SamBetJur a :Classification ; + :inScheme ; :prefLabel "Samhälls-, beteendevetenskap och juridik"@sv ; :broadMatch . upp:KonArb a :Classification ; + :inScheme ; :prefLabel "Konstnärligt arbete"@sv ; :broadMatch . upp:HumTeo a :Classification ; + :inScheme ; :prefLabel "Humaniora och teologi"@sv ; :broadMatch . From e80ec2b8121742707f5df3bfa7fb611223cf84ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Lindstr=C3=B6m?= Date: Wed, 6 May 2026 15:14:31 +0200 Subject: [PATCH 10/10] Add note about replacedBy for legacy terms --- source/uppsok.ttl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/uppsok.ttl b/source/uppsok.ttl index cfd0b54a..fc7583be 100644 --- a/source/uppsok.ttl +++ b/source/uppsok.ttl @@ -129,6 +129,8 @@ upp:H5 a :WorkCategory ; # D 160 p, examensarbete 20p | A1 magister 240 hp, examensarbete 15 hp # Y skiljer inte på grund/avancerad | A3 yrkes avancerad nivå omfattning varierar +# TODO: Should these below have replacedBy links to preferred terms (instead of or as complement to the broader relation)? + upp:A a :WorkCategory ; :inScheme ; :code "Studentarbete på A-nivå" ;