Skip to content
15 changes: 7 additions & 8 deletions lxltools/datacompiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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)

Expand Down Expand Up @@ -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):
Expand All @@ -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]

Expand Down
10 changes: 10 additions & 0 deletions source/datasets/idkbse.ttl
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
prefix jsonld: <http://www.w3.org/ns/json-ld#>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
prefix : <https://id.kb.se/vocab/>
base <https://id.kb.se/dataset/>
Expand Down Expand Up @@ -94,6 +95,15 @@ base <https://id.kb.se/dataset/>
:uriSpace "/term/swepub/" ;
:created "2018-05-29T12:36:01.337Z"^^xsd:dateTime .

<uppsokterms> a :Dataset ;
jsonld:context "sys/context/kbv.jsonld" ;
:isPartOf <common> ;
:sourceData [ :uri "build/uppsokterms.json.lines" ;
:sourceData [ :uri 'source/uppsok.ttl' ]
] ;
:uriSpace "/term/uppsok/" ;
:created "2018-05-29T12:36:01.337Z"^^xsd:dateTime .

<relators> a :Dataset ;
:isPartOf <common> ;
:sourceData [ :uri "build/relators.json.lines" ; :sourceData [ a :QueryConstruct ;
Expand Down
7 changes: 6 additions & 1 deletion source/schemes.ttl
Original file line number Diff line number Diff line change
Expand Up @@ -230,11 +230,16 @@
dc:title "Abstrakta termer"@sv;
void:inDataset </> .

<https://id.kb.se/term/swepub> a skos:ConceptScheme;
<swepub> a skos:ConceptScheme;
skos:notation "swepub";
dc:title "Swepubtermer"@sv;
dc:title "Swepub terms"@en .

<uppsok> a skos:ConceptScheme;
skos:notation "Uppsök";
dc:title "Uppsök-termer"@sv;
dc:title "Uppsök terms"@en .

# "others"

<albt> a :TopicScheme;
Expand Down
208 changes: 208 additions & 0 deletions source/uppsok.ttl
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
prefix : <https://id.kb.se/vocab/>
prefix saogf: <https://id.kb.se/term/saogf/>
prefix upp: <https://id.kb.se/term/uppsok/>

## Basic Categories (Genre/Form?)

# saogf:Studentuppsatser :broader saogf:Uppsatser . ?
# :related saogf:Avhandlingar ?
# :broadMatch saogf:Studentuppsatser ?

upp:L a :WorkCategory ;
:inScheme <https://id.kb.se/term/uppsok> ;
:code "L" ;
:prefLabel "Basnivå"@sv ;
:altLabel "Övriga arbeten"@sv, "Bas"@sv .

upp:M a :WorkCategory ;
:inScheme <https://id.kb.se/term/uppsok> ;
:code "M" ;
:prefLabel "Grundnivå"@sv, "Grund"@sv .

upp:H a :WorkCategory ;
:inScheme <https://id.kb.se/term/uppsok> ;
:code "H" ;
:prefLabel "Avancerad nivå"@sv, "Avancerad" .

upp:L1 a :WorkCategory ;
:inScheme <https://id.kb.se/term/uppsok> ;
: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 <https://id.kb.se/term/uppsok> ;
: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 <https://id.kb.se/term/uppsok> ;
: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 <https://id.kb.se/term/uppsok> ;
:code "M1" ;
:prefLabel "Högskoleuppsats"@sv ;
:definition "Självständigt arbete på grundnivå (högskoleexamen)"@sv, "Independent thesis Basic level (university diploma)"@en ;
:scopeNote "Självständigt arbete (examensarbete) utfört för att erhålla högskoleexamen"@ev ;
:broader upp:M .

upp:M2 a :WorkCategory ;
:inScheme <https://id.kb.se/term/uppsok> ;
:code "M2" ;
:prefLabel "Kandidatuppsats"@sv ;
:definition "Självständigt arbete på grundnivå (kandidatexamen)"@sv, "Independent thesis Basic level (degree of Bachelor)"@en ;
: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 ;
:inScheme <https://id.kb.se/term/uppsok> ;
: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 "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 ;
:inScheme <https://id.kb.se/term/uppsok> ;
: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 <https://id.kb.se/term/uppsok> ;
: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 <https://id.kb.se/term/uppsok> ;
: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 "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 ;
:inScheme <https://id.kb.se/term/uppsok> ;
: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 "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 ;
:inScheme <https://id.kb.se/term/uppsok> ;
: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 "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 ;
:inScheme <https://id.kb.se/term/uppsok> ;
: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 <https://id.kb.se/term/uppsok> ;
: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 .

## 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

# TODO: Should these below have replacedBy links to preferred terms (instead of or as complement to the broader relation)?

upp:A a :WorkCategory ;
:inScheme <https://id.kb.se/term/uppsok> ;
: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 <https://id.kb.se/term/uppsok> ;
: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 <https://id.kb.se/term/uppsok> ;
: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 <https://id.kb.se/term/uppsok> ;
: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 <https://id.kb.se/term/uppsok> ;
: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 <https://id.kb.se/term/uppsok> ;
:prefLabel "Bio- och geovetenskaper"@sv ;
:broadMatch <https://begrepp.uka.se/SSIF/1> .

upp:FysKemMat a :Classification ;
:inScheme <https://id.kb.se/term/uppsok> ;
:prefLabel "Fysik, kemi och matematik"@sv ;
:broadMatch <https://begrepp.uka.se/SSIF/1> .

upp:TekVet a :Classification ;
:inScheme <https://id.kb.se/term/uppsok> ;
:prefLabel "Tekniska vetenskaper"@sv ;
:broadMatch <https://begrepp.uka.se/SSIF/2> .

upp:Med a :Classification ;
:inScheme <https://id.kb.se/term/uppsok> ;
:prefLabel "Medicin"@sv ;
:broadMatch <https://begrepp.uka.se/SSIF/3> .

upp:LanVetSko a :Classification ;
:inScheme <https://id.kb.se/term/uppsok> ;
:prefLabel "Lantbruk, veterinärmedicin och skoglig vetenskap"@sv ;
:broadMatch <https://begrepp.uka.se/SSIF/4> .

upp:SamBetJur a :Classification ;
:inScheme <https://id.kb.se/term/uppsok> ;
:prefLabel "Samhälls-, beteendevetenskap och juridik"@sv ;
:broadMatch <https://begrepp.uka.se/SSIF/5> .

upp:KonArb a :Classification ;
:inScheme <https://id.kb.se/term/uppsok> ;
:prefLabel "Konstnärligt arbete"@sv ;
:broadMatch <https://begrepp.uka.se/SSIF/6> .

upp:HumTeo a :Classification ;
:inScheme <https://id.kb.se/term/uppsok> ;
:prefLabel "Humaniora och teologi"@sv ;
:broadMatch <https://begrepp.uka.se/SSIF/6> .