diff --git a/source/vocab/display.jsonld b/source/vocab/display.jsonld index ae692847..e58076cf 100644 --- a/source/vocab/display.jsonld +++ b/source/vocab/display.jsonld @@ -6,6 +6,7 @@ "@base": "https://id.kb.se/vocab/display", "@vocab": "https://id.kb.se/vocab/", "marc": "https://id.kb.se/marc/", + "librissearch": "https://id.kb.se/ns/librissearch/", "lensGroups": {"@id": "@graph", "@container": "@index"}, "lenses": {"@reverse": "fresnel:group", "@container": "@index"}, "showProperties": {"@id": "fresnel:showProperties", "@container": "@list", "@type": "@vocab"}, @@ -795,7 +796,6 @@ "summary", "immediateAcquisition", "availability", - "shelfLabel", { "inverseOf": "itemUsed" }, { "inverseOf": "hasComponent" } ] @@ -1457,43 +1457,156 @@ "@id": "search-tokens", "@type": "fresnel:Group", "lenses": { - "Creation": { + "bibdb:Organization": { "@type": "fresnel:Lens", - "classLensDomain": "Creation", + "classLensDomain": "bibdb:Organization", + "showProperties": [ "name", "code" ] + }, + "Bibliography": { + "@type": "fresnel:Lens", + "classLensDomain": "Bibliography", + "showProperties": [ "name", "qualifier", "sigel" ] + }, + "Concept": { + "@type": "fresnel:Lens", + "classLensDomain": "Concept", + "showProperties": [ + {"alternateProperties": ["prefLabel", "singularLabel", "label", "termComponentList", "code"]} + ] + }, + "Instance": { + "@type": "fresnel:Lens", + "classLensDomain": "Instance", "showProperties": [ + "hasTitle", { - "alternateProperties": [ - { - "@type": "fresnel:fslselector", - "@value": "hasTitle/KeyTitle/mainTitle" - }, - { - "@type": "fresnel:fslselector", - "@value": "hasTitle/Title/mainTitle" - }, - { - "@type": "fresnel:fslselector", - "@value": "hasTitle/*/mainTitle" - } - ] + "@type": "fresnel:fslselector", + "@value": "identifiedBy/*/value" + }, + { + "@type": "fresnel:fslselector", + "@value": "describedBy/*/controlNumber" + } + ] + }, + "Work": { + "@type": "fresnel:Lens", + "classLensDomain": "Work", + "showProperties": [ + "hasTitle" + ] + }, + "Language": { + "@type": "fresnel:Lens", + "classLensDomain": "Language", + "showProperties": [ + "prefLabel", + "label", + "code" + ] + }, + "Library": { + "@type": "fresnel:Lens", + "classLensDomain": "Library", + "showProperties": [ "name", "qualifier", "sigel" ] + }, + "Agent": { + "@type": "fresnel:Lens", + "classLensDomain": "Agent", + "showProperties": [ "label", "name" ] + }, + "Family": { + "@type": "fresnel:Lens", + "classLensDomain": "Family", + "showProperties": [ "name", "marc:titlesAndOtherWordsAssociatedWithAName", "lifeSpan" ] + }, + "Jurisdiction": { + "@type": "fresnel:Lens", + "classLensDomain": "Jurisdiction", + "showProperties": [ "name", "isPartOf", "marc:subordinateUnit" ] + }, + "Meeting": { + "@type": "fresnel:Lens", + "classLensDomain": "Meeting", + "showProperties": [ + "name", + "marc:numeration", + "date", + { + "@type": "fresnel:fslselector", + "@value": "place/*/label" } ] }, + "Organization": { + "@type": "fresnel:Lens", + "classLensDomain": "Organization", + "showProperties": [ "name", "isPartOf", "marc:subordinateUnit" ] + }, "Person": { "@type": "fresnel:Lens", "classLensDomain": "Person", "showProperties": [ "givenName", "familyName", - "name" + "name", + "marc:numeration", + "lifeSpan", + "marc:titlesAndOtherWordsAssociatedWithAName", + "fullerFormOfName" ] }, - "Library": { + "SeriesMembership": { "@type": "fresnel:Lens", - "classLensDomain": "Library", + "classLensDomain": "SeriesMembership", "showProperties": [ - "name", - "qualifier" + "inSeries", + { + "@type": "fresnel:fslselector", + "@value": "inSeries/*/instanceOf/*/hasTitle" + }, + "seriesStatement", + "seriesEnumeration" + ] + }, + "TableOfContents": { + "classLensDomain": "TableOfContents", + "showProperties": [ + "label", + { + "fresnel:property": "hasPart", + "fresnel:subLens": { + "showProperties": [ + "label", + "responsibilityStatement", + "comment" + ] + } + } + ] + }, + "Title": { + "@type": "fresnel:Lens", + "classLensDomain": "Title", + "showProperties": [ + "mainTitle", + "qualifier", + "title", + "subtitle", + "titleRemainder", + "partNumber", + "partName", + "hasPart", + { + "fresnel:property": "hasPart", + "fresnel:subLens": { + "showProperties": [ + "partNumber", + "partName" + ] + } + }, + "marc:parallelTitle" ] } } @@ -1502,10 +1615,6 @@ "@id": "search-chips", "@type": "fresnel:Group", "lenses": { - "Record": { - "fresnel:extends": {"@id": "Record-chips"}, - "showProperties": [ "fresnel:super", "bibliography", "created" ] - }, "Item": { "fresnel:extends": {"@id": "Item-chips"}, "showProperties": [ @@ -1513,9 +1622,57 @@ "subject", "summary", "hasComponent", - "availability", - "physicalLocation", - "shelfLabel" + { + "fresnel:mergeProperties": [ + "cataloguersNote", + "custodialHistory", + { + "@type": "fresnel:fslselector", + "@value": "summary/*/label" + }, + { + "@type": "fresnel:fslselector", + "@value": "hasNote/*/label" + }, + { + "@type": "fresnel:fslselector", + "@value": "marc:hasCopyAndVersionIdentificationNote/*/marc:itemCondition" + }, + { + "@type": "fresnel:fslselector", + "@value": "marc:hasBindingInformation/*/label" + }, + { + "@type": "fresnel:fslselector", + "@value": "marc:hasTextualHoldingsBasicBibliographicUnit/*/marc:cataloguersNote" + }, + { + "@type": "fresnel:fslselector", + "@value": "marc:hasTextualHoldingsBasicBibliographicUnit/*/marc:publicNote" + } + ], + "fresnel:use": "librissearch:itemNote" + }, + { + "fresnel:mergeProperties": [ + "shelfLabel", + "physicalLocation", + "shelfControlNumber", + { + "@type": "fresnel:fslselector", + "@value": "shelfMark/*/label" + }, + { + "@type": "fresnel:fslselector", + "@value": "availability/*/label" + } + ], + "fresnel:use": "librissearch:shelf" + }, + { + "@type": "fresnel:fslselector", + "@value": "meta/*/created" + } ] }, "Person": { @@ -1561,6 +1718,20 @@ "classLensDomain": "ToCEntry", "fresnel:extends": {"@id": "ToCEntry-chips"}, "showProperties": [ "fresnel:super", "responsibilityStatement" ] + }, + "Publication": { + "classLensDomain": "Publication", + "fresnel:extends": {"@id": "Publication-chips"}, + "showProperties": [ + "fresnel:super", + { + "fresnel:mergeProperties": [ + "year", + "startYear" + ], + "fresnel:use": "librissearch:year" + } + ] } } }, @@ -1573,7 +1744,7 @@ "showProperties": [ "fresnel:super", "appliedMaterial", - "basematerial", + "baseMaterial", "bookFormat", "colorContent", "hasNote", @@ -1587,7 +1758,11 @@ "summary", "tableOfContents", "videoCharacteristic", - "image" + "image", + { + "@type": "fresnel:fslselector", + "@value": "meta/*/bibliography" + } ] }, "Item": { @@ -1633,6 +1808,62 @@ } } }, + "top-search-tokens": { + "@id": "top-search-tokens", + "@type": "fresnel:Group", + "lenses": { + "Agent": { + "@type": "fresnel:Lens", + "classLensDomain": "Agent", + "showProperties": [ + { + "alternateProperties": [ + "name", + "label" + ] + } + ] + }, + "Person": { + "@type": "fresnel:Lens", + "classLensDomain": "Person", + "showProperties": [ + "givenName", + "familyName", + "name" + ] + }, + "Creation": { + "@type": "fresnel:Lens", + "classLensDomain": "Creation", + "showProperties": [ + { + "alternateProperties": [ + { + "@type": "fresnel:fslselector", + "@value": "hasTitle/KeyTitle/mainTitle" + }, + { + "@type": "fresnel:fslselector", + "@value": "hasTitle/Title/mainTitle" + }, + { + "@type": "fresnel:fslselector", + "@value": "hasTitle/*/mainTitle" + } + ] + } + ] + }, + "Language": { + "@type": "fresnel:Lens", + "classLensDomain": "Language", + "showProperties": [ + { "alternateProperties": ["prefLabel", "label", "code"] } + ] + } + } + }, "formatters": { "termComponentList-format": { "TODO": "fix vue-client and remove me", @@ -2101,4 +2332,4 @@ } } } -} +} \ No newline at end of file diff --git a/source/vocab/libris-search-experimental.ttl b/source/vocab/libris-search-experimental.ttl index c3ae4ba0..adc0f753 100644 --- a/source/vocab/libris-search-experimental.ttl +++ b/source/vocab/libris-search-experimental.ttl @@ -7,6 +7,7 @@ @prefix rdf: . @prefix xsd: . @prefix ls: . +@prefix marc: . ### Extended definitions for Libris Search ### :identifier # See ./details.ttl for full definition of :identifier @@ -40,12 +41,6 @@ skos:notation "FÖRL"^^ls:QueryCode ; skos:notation "FORL"^^ls:QueryCode . -:yearPublished rdfs:label "utgivningsår"@sv, "year of publication"@en ; # See ./details.ttl for full definition of :yearPublished - :category :searchfilter ; - rdfs:domain :Instance ; - skos:notation "dc.date"^^ls:QueryCode ; - skos:notation "ÅR"^^ls:QueryCode . - :contributor # See ./relations.ttl for full definition of :contributor :category :searchfilter ; skos:notation "dc.author"^^ls:QueryCode ; @@ -83,7 +78,6 @@ :agent ) . - :subject # See ./relations.ttl for full definition of :subject :category :searchfilter ; skos:notation "dc.subject"^^ls:QueryCode ; @@ -121,6 +115,13 @@ ls:composite a skos:Collection ; :category :pending ; :code "composite" . +# TODO? Could be ls:MergedProperty rdfs:subClassOf owl:ObjectProperty +ls:merged a skos:Collection ; + rdfs:label "merged"@en, "sammanslagen"@sv . + +# TODO: add e.g. label, domain, comment +ls:merges a owl:ObjectProperty . + ls:isxn a owl:DatatypeProperty ; :category ls:composite, :pending, :searchfilter ; rdfs:label "ISXN"@sv, "ISXN"@en . @@ -213,14 +214,40 @@ ls:title a owl:ObjectProperty ; ( :relationship :entity :hasTitle ) . ls:itemShelf a owl:DatatypeProperty ; - :category :searchfilter, ls:composite, :pending ; # TODO: ls:merged? - rdfs:label "hyllsignum"@sv, "item shelf"@en ; - skos:notation "WHYL"^^ls:QueryCode ; - owl:propertyChainAxiom ( :hasItem :availability :label ), - ( :hasItem :shelfMark :label ), - ( :hasItem :shelfControlNumber ), - ( :hasItem :shelfLabel ), - ( :hasItem :physicalLocation ) . + :category :searchfilter, :shorthand, :pending ; + skos:notation "WHYL"^^ls:QueryCode ; + rdfs:label "hyllsignum"@sv, "item shelf"@en ; + rdfs:domain :Instance ; + owl:propertyChainAxiom ( :hasItem ls:shelf ) . + +ls:shelf a owl:DatatypeProperty ; + :category ls:merged, :pending ; + rdfs:label "hylla"@sv, "shelf"@en ; + rdfs:domain :Item ; + ls:merges :shelfControlNumber, + :shelfLabel, + :physicalLocation, + [ owl:propertyChainAxiom ( :availability :label ) ], + [ owl:propertyChainAxiom ( :shelfMark :label ) ] . + +ls:hasItemNote a owl:DatatypeProperty ; + :category :searchfilter, :shorthand, :pending ; + rdfs:label "lokal anmärkning"@sv, "local note"@en ; + rdfs:domain :Instance ; + owl:propertyChainAxiom ( :hasItem ls:itemNote ) . + +ls:itemNote a owl:DatatypeProperty ; + :category ls:merged, :pending ; + rdfs:label "beståndsanmärkning"@sv, "item note"@en ; + rdfs:domain :Item ; + ls:merges :cataloguersNote, + :custodialHistory, + [ owl:propertyChainAxiom ( :summary :label ) ], + [ owl:propertyChainAxiom ( :hasNote :label ) ], + [ owl:propertyChainAxiom ( marc:hasCopyAndVersionIdentificationNote marc:itemCondition ) ], + [ owl:propertyChainAxiom ( marc:hasBindingInformation :label ) ], + [ owl:propertyChainAxiom ( marc:hasTextualHoldingsBasicBibliographicUnit marc:cataloguersNote ) ], + [ owl:propertyChainAxiom ( marc:hasTextualHoldingsBasicBibliographicUnit marc:publicNote ) ] . ls:itemCreated a owl:DatatypeProperty ; :category :searchfilter, :shorthand, :pending ; @@ -236,6 +263,18 @@ ls:itemSubject a owl:DatatypeProperty ; rdfs:domain :Instance ; owl:propertyChainAxiom ( :hasItem :subject ) . +ls:year a owl:DatatypeProperty ; + :category ls:merged, :pending ; + ls:merges :year, :startYear . + +ls:yearPublished a owl:DatatypeProperty ; + :category :searchfilter, :shorthand, :pending ; + rdfs:label "utgivningsår"@sv, "year of publication"@en ; + rdfs:domain :Instance ; + skos:notation "ÅR"^^ls:QueryCode, "dc.date"^^ls:QueryCode ; + owl:propertyChainAxiom ( :publication ls:year ) . + + # TODO #ls:classificationCode a owl:DatatypeProperty ; # :category :shorthand ; @@ -280,15 +319,4 @@ ls:itemSubject a owl:DatatypeProperty ; # rdfs:label "LC-klassifikationskod"@sv, "LCC classification code"@en ; # owl:propertyChainAxiom ( # [ rdfs:subPropertyOf :classification ; rdfs:range :ClassificationLcc ] -# :code ) . -# -#ls:itemNote a owl:DatatypeProperty ; -# :category ls:merged ; -# rdfs:label "anmärkning i bestånd"@sv, "item note"@en ; -# skos:notation "BANM"^^ls:QueryCode ; -# owl:propertyChainAxiom ( :hasItem :hasNote :label ), -# ( :hasItem :cataloguersNote ), -# ( :hasItem :custodialHistory ), -# ( :hasItem marc:hasCopyAndVersionIdentificationNote marc:itemCondition ), -# ( :hasItem marc:hasBindingInformation :label ), -# ( :hasItem marc:hasTextualHoldingsBasicBibliographicUni marc:cataloguersNote ) . +# :code ) . \ No newline at end of file diff --git a/sys/context/kbv.jsonld b/sys/context/kbv.jsonld index 3071a882..9c0f9b10 100644 --- a/sys/context/kbv.jsonld +++ b/sys/context/kbv.jsonld @@ -237,6 +237,7 @@ "bibdb:libraryType": { "@container": "@set"}, "librissearch": "https://id.kb.se/ns/librissearch/", + "librissearch:merges": { "@container": "@set"}, "marc": "https://id.kb.se/marc/",