diff --git a/examples/typenormalization/.gitignore b/examples/typenormalization/.gitignore new file mode 100644 index 000000000..14d86ad62 --- /dev/null +++ b/examples/typenormalization/.gitignore @@ -0,0 +1 @@ +/cache diff --git a/examples/typenormalization/Makefile b/examples/typenormalization/Makefile new file mode 100644 index 000000000..a4b4820c1 --- /dev/null +++ b/examples/typenormalization/Makefile @@ -0,0 +1,7 @@ +test: cache/saogf.ttl + python test_categories.py + +cache/saogf.ttl: cache + curl -s https://libris.kb.se/sparql -HAccept:text/turtle --data-urlencode 'query=PREFIX : CONSTRUCT WHERE { ?a a :GenreForm ; :inScheme ; :broader ?b }' -o $@ +cache: + mkdir -p cache diff --git a/examples/typenormalization/README.md b/examples/typenormalization/README.md new file mode 100644 index 000000000..9fa543fee --- /dev/null +++ b/examples/typenormalization/README.md @@ -0,0 +1,6 @@ +To run tests: + + $ pip install -r requirements.txt + $ make test + +(Add `-d` cmdline flag see full OWL-RL output.) diff --git a/examples/typenormalization/carrierclasses.ttl b/examples/typenormalization/carrierclasses.ttl new file mode 100644 index 000000000..190b30cc8 --- /dev/null +++ b/examples/typenormalization/carrierclasses.ttl @@ -0,0 +1,584 @@ +prefix rdfs: +prefix owl: +prefix skos: +prefix bibo: +prefix dc: +prefix sdo: +prefix ptg: +prefix bf: + +prefix : +prefix marc: + +prefix saogf: +prefix kbrda: + + +#:Instance a owl:Class ; ptg:abstract true . +# NOTE: En del Instanser/bärarformer är mångfaldigbara (såsom Tryckt), en del är (i regel?) unika (såsom Canvas)? + +# TODO: For export-to-bf+rda or revert-to-marc; infer type-like properties +# linking to "bases" derived via exactMatch or broadMatch of given types. For +# instance types, that mostly means :carrierType (unless some enum types are +# kept as subclasses of :GenreForm). + + +# Complex Instance Classes (Single Unit) + +:PrintedVolume a owl:Class ; + :category :pending, :complex ; + owl:intersectionOf ( + :Print + [ owl:onProperty :carrierType ; + owl:hasValue kbrda:Volume ] + ) . + +:CDBook a owl:Class ; + :category :pending, :complex ; + owl:intersectionOf ( + :Electronic + [ owl:onProperty :carrierType ; + owl:hasValue kbrda:AudioDisc ] + [ owl:onProperty :instanceOf ; + owl:someValuesFrom :BookForm ] + ) . + +:EBook a owl:Class ; + :category :pending, :complex ; + owl:intersectionOf ( + :Electronic # :DigitalResource + [ owl:onProperty :instanceOf ; + owl:someValuesFrom :BookForm ] + ) ; + rdfs:label "E-bok"@sv . + +# TODO: used by whom? Not Webbsök... +#:EAudioBook a owl:Class ; +# :category :pending, :complex ; +# owl:intersectionOf ( +# :Electronic +# [ owl:onProperty :instanceOf ; +# owl:someValuesFrom :AudioBook ] +# ) . + +# Multimedia AudioBook + WrittenBook Bundle ? + +#CDMap +#ESerial +#Music +#MusicCD + + +#---- FIXME: Either turn into :complex intersection patterns, or *just* move to (RDA) carriers or materials/formats... + +:PhysicalResource a owl:Class ; + rdfs:subClassOf :Instance , dc:PhysicalResource ; + rdfs:label "Fysisk resurs"@sv , "Physical resource"@en . + # NOTE: :transitiveBaseClassOf :PhysicalObject . + +# Unmediated + +:Unmediated a owl:Class, :MediaType ; + ptg:abstract true ; + rdfs:subClassOf :PhysicalResource ; + skos:exactMatch kbrda:Unmediated ; + rdfs:label "Omedierad resurs"@sv , "Unmediated"@en . + +# Vocab Macro for type-like on carrier...: +# INSERT { +# ?enumType rdfs:subClassOf [ a owl:Restriction; +# owl:onProperty bf2:carrier; owl:hasValue ?enumType ] . +#} WHERE { +# ?enumProp rdfs:subPropertyOf rdf:type ; +# rdfs:range ?metaType . +# ?enumType a ?metaType . +#} + + +# TODO: Printed vs. Handmade as mixins for precoordinated (7x7)? +:Print a owl:Class; + rdfs:subClassOf :Unmediated . + +# Untenable(?): Handwritten / Typewritten / Photocopied => Purpose (Genre) OR Manufacture/Production +#:Handwritten a owl:Class; rdfs:subClassOf :Unmediated . +#:Typewrittten a owl:Class; rdfs:subClassOf :Unmediated . + +:Manuscript a owl:Class ; # TODO: changed to Work in BF + rdfs:subClassOf :Unmediated . + +# mer extraordinärt? Sitter på exemplar? +#:Photocopied a owl:Class; rdfs:subClassOf :Unmediated ; skos:related marc:RegularPrintReproduction . + +# fmt:LargeText a :Format ? + +:Volume a owl:Class, :CarrierType ; + #ptg:abstract true ; + skos:exactMatch kbrda:Volume ; + rdfs:subClassOf :Unmediated ; + rdfs:label "Volym"@sv , "Volume"@en . + +#:MassProducedVolume a owl:Class ; +# rdfs:subClassOf :MassProduced, :Volume . +# +#:RareVolume a owl:Class ; +# rdfs:subClassOf :Rare, :Volume . + +:PrintedVolume a owl:Class ; + rdfs:subClassOf :Print, :Volume ; + rdfs:label "Tryckt volym"@sv , "Printed Volume"@en . + +:HardcoverVolume a owl:Class; + rdfs:subClassOf :PrintedVolume . + +:PaperbackVolume a owl:Class; + rdfs:subClassOf :PrintedVolume . + + +:Card a owl:Class, :CarrierType ; + skos:exactMatch kbrda:Card ; + rdfs:subClassOf :Unmediated ; + rdfs:label "Bildkort"@sv, "Card"@en . + +:Flipchart a owl:Class, :CarrierType ; + skos:exactMatch kbrda:Flipchart ; + rdfs:subClassOf :Unmediated ; + rdfs:label "Blädderblock"@sv, "Flipchart"@en . + +:Roll a owl:Class, :CarrierType ; + skos:exactMatch kbrda:Roll ; + rdfs:subClassOf :Unmediated ; + rdfs:label "Rulle"@sv, "Roll"@en . + +:Sheet a owl:Class, :CarrierType ; + skos:exactMatch kbrda:Sheet ; + rdfs:subClassOf :Unmediated ; + rdfs:label "Ark"@sv, "Sheet"@en . + +:PrintedSheet a owl:Class ; + rdfs:subClassOf :Print, :Sheet . + +:HandmadeSheet a owl:Class ; + rdfs:subClassOf :Unmediated, :Sheet . + + +# TODO: Every non-DigitalResource is physical of course; this is for "none of the others; actual purposeful 3d object"... +:PhysicalObject a owl:Class ; # :UnmediatedObject ? + skos:exactMatch kbrda:Object ; + rdfs:subClassOf :Unmediated . + + +# TODO: "bless" these from marc to KBV going forward? (Clearer delinetion between "punktskrift" och "objekt-med-syfte"! +#:Tactile a owl:Class ; +# rdfs:subClassOf :Unmediated ; +# rdfs:subClassOf [ +# owl:onProperty :format ; +# owl:someValuesFrom :TactileMaterial ] . + +:BrailleResource a owl:Class ; + skos:exactMatch marc:Braille, marc:TextMaterialType-c ; + rdfs:subClassOf :Tactile, :Print . + +:BrailleVolume a owl:Class ; + rdfs:subClassOf :BrailleResource, :Volume , [ a owl:Restriction ; + owl:onProperty :instanceOf ; + owl:allValuesFrom :TactileBook + ] ; + skos:exactMatch saogf:Punktskriftsb\%C3\%B6cker . +# :prefLabel "Punktskriftsvolym"@sv, "Braille Volume"@en . + + +# "Mediated" + +# TODO: other StorageMedium? Magnetic / Optical / Mechanical ? +:StorageMedium a owl:Class ; + ptg:abstract true ; + rdfs:subClassOf :PhysicalResource ; + rdfs:label "Lagringsmedium"@sv , "StorageMedium"@en . + + +:TapeCartridge a owl:Class ; + rdfs:subClassOf :StorageMedium ; + ptg:abstract true ; + skos:exactMatch marc:TapeCartridge . + +:TapeCassette a owl:Class ; + rdfs:subClassOf :StorageMedium ; + ptg:abstract true ; + skos:exactMatch marc:TapeCassette . + +:TapeReel a owl:Class ; + ptg:abstract true ; + rdfs:subClassOf :StorageMedium ; + skos:exactMatch marc:TapeReel . + +:MagneticDisk a owl:Class, :CarrierType ; + skos:exactMatch marc:MagneticDisk ; + rdfs:subClassOf :StorageMedium . + +:MagnetoOpticalDisc a owl:Class, :CarrierType ; + skos:exactMatch marc:MagnetoOpticalDisc ; + rdfs:subClassOf :StorageMedium . + +:OpticalReel a owl:Class ; + ptg:abstract true ; + rdfs:subClassOf :StorageMedium . + +:OpticalDisc a owl:Class, :CarrierType ; + skos:exactMatch marc:OpticalDisc ; + rdfs:subClassOf :StorageMedium . + + +:ElectronicStorageMedium a owl:Class ; + ptg:abstract true ; + skos:exactMatch marc:DirectElectronic ; + rdfs:subClassOf :Electronic, :StorageMedium ; + rdfs:label "Elektroniskt lagringsmedium"@sv , "StorageMedium"@en . + +:DigitalResource a owl:Class, :CarrierType ; + skos:broadMatch marc:Remote ; + skos:exactMatch marc:Online, marc:OnlineResource, kbrda:OnlineResource ; + rdfs:subClassOf :Electronic ; + rdfs:label "Digital resurs"@sv , "Digital Resource"@en . + +:ChipCartridge a owl:Class, :CarrierType ; + rdfs:subClassOf :ElectronicStorageMedium ; + skos:exactMatch kbrda:ComputerChipCartridge, marc:ChipCartridge ; + rdfs:label "Computer chip cartridge"@en . + +:ComputerCard a owl:Class, :CarrierType ; + rdfs:subClassOf :ElectronicStorageMedium ; + skos:exactMatch kbrda:ComputerCard, marc:ComputerCard ; + rdfs:label "Datorkort"@sv, "Computer card"@en . + +:ComputerDisc a owl:Class, :CarrierType ; + rdfs:subClassOf :ElectronicStorageMedium ; + skos:broadMatch marc:MagneticDisk ; + skos:exactMatch kbrda:ComputerDisc, marc:ComputerDisc ; + rdfs:label "Datorskiva"@sv, "Computer Disc"@en . + +:ComputerDiscCartridge a owl:Class, :CarrierType ; + rdfs:subClassOf :ElectronicStorageMedium ; + skos:exactMatch kbrda:ComputerDiscCartridge, marc:ComputerDiscCartridge ; + skos:narrowMatch marc:ComputerOpticalDiscCartridge ; + rdfs:label "Datorskivmagasin"@sv, "Computer disc cartridge"@en . + +:ComputerTapeCartridge a owl:Class, :CarrierType ; + rdfs:subClassOf :ElectronicStorageMedium , :TapeCartridge ; + skos:exactMatch kbrda:ComputerTapeCartridge ; + rdfs:label "Datorbandmagasin"@sv, "Computer tape cartridge"@en . + +:ComputerTapeCassette a owl:Class, :CarrierType ; + rdfs:subClassOf :ElectronicStorageMedium, :TapeCassette ; + skos:exactMatch kbrda:ComputerTapeCassette ; + rdfs:label "Datorkassett"@sv, "Computer tape cassette"@en . + +:ComputerTapeReel a owl:Class, :CarrierType ; + rdfs:subClassOf :ElectronicStorageMedium, :TapeReel ; + skos:exactMatch kbrda:ComputerTapeReel ; + rdfs:label "Datorbandspole"@sv, "Computer tape reel"@en . + + +:StandaloneDevice a owl:Class, :CarrierType ; + skos:exactMatch marc:StandaloneDevice ; + rdfs:subClassOf :ElectronicStorageMedium, :PhysicalObject . + + +# TODO: Is the content-as-media-type a "rebus" and enough if content is on the work? +# Or is the *unit for device capable of sound* encoded here (so "mode of provisioning", not the "purpose of provisioning")? + +:SoundStorageMedium a owl:Class, :MediaType ; + owl:sameAs :SoundRecording ; + ptg:abstract true ; + skos:exactMatch kbrda:Audio ; + rdfs:subClassOf :StorageMedium ; + rdfs:label "Audio"@sv, "Audio"@en . + +:AudioDisc a owl:Class, :CarrierType ; + rdfs:subClassOf :SoundStorageMedium ; + skos:exactMatch kbrda:AudioDisc , marc:SoundDisc ; + rdfs:label "Ljudskiva"@sv , "Audio Disc"@en . + +:AudioCassette a owl:Class, :CarrierType ; + rdfs:subClassOf :SoundStorageMedium, :TapeCassette ; + skos:exactMatch kbrda:Audiocassette , marc:SoundCassette ; + rdfs:label "Ljudkassett"@sv , "Audio Cassette"@en . + +:AudioCartridge a owl:Class, :CarrierType ; + skos:exactMatch kbrda:AudioCartridge , marc:SoundCartridge ; + rdfs:subClassOf :SoundStorageMedium ; + rdfs:label "Ljudmagasin"@sv, "Audio cartridge"@en . + +:AudioCylinder a owl:Class, :CarrierType ; + skos:exactMatch kbrda:AudioCylinder, marc:Cylinder ; + rdfs:subClassOf :SoundStorageMedium ; + rdfs:label "Ljudcylinder"@sv, "Audio cylinder"@en . + +:AudioRoll a owl:Class, :CarrierType ; + skos:exactMatch kbrda:AudioRoll , marc:Roll ; + rdfs:subClassOf :SoundStorageMedium ; + rdfs:label "Ljudrulle"@sv, "Audio roll"@en . + +:AudioTapeReel a owl:Class, :CarrierType ; + skos:exactMatch kbrda:AudiotapeReel; + rdfs:subClassOf :SoundStorageMedium , :TapeReel , marc:SoundTapeReel ; + rdfs:label "Ljudspole"@sv, "Audiotape reel"@en . + +# Zero uses in Libris... +:AudioWireRecording a owl:Class, :CarrierType ; + skos:exactMatch marc:WireRecording . + +:SoundTrackReel a owl:Class, :CarrierType ; + skos:exactMatch kbrda:SoundTrackReel, marc:SoundTrackFilm; + rdfs:subClassOf :SoundStorageMedium ; + rdfs:label "Sound-track reel"@en . + + +:VideoStorageMedium a owl:Class, :MediaType ; + owl:sameAs :VideoRecording ; + ptg:abstract true ; + # TODO: deprecated baseclass :MovingImageInstance ? + skos:exactMatch kbrda:Video, marc:Videorecording ; + rdfs:subClassOf :StorageMedium ; + rdfs:label "Lagringsmedium för video"@sv, "Video Storage Medium"@en . + +:VideoDisc a owl:Class, :CarrierType ; + skos:exactMatch kbrda:Videodisc, marc:Videodisc ; + rdfs:subClassOf :VideoStorageMedium ; + rdfs:label "Videoskiva"@sv , "Video Disc"@en . + +:VideoCartridge a owl:Class, :CarrierType ; + skos:exactMatch kbrda:VideoCartridge, marc:Videocartridge ; + rdfs:subClassOf :VideoStorageMedium ; + rdfs:label "Videomagasin"@sv, "Video cartridge"@en . + +:VideoCassette a owl:Class, :CarrierType ; + skos:exactMatch kbrda:Videocassette, marc:Videocassette ; + rdfs:subClassOf :VideoStorageMedium, :TapeCassette ; + rdfs:label "Videokassett"@sv, "Videocassette"@en . + +:VideoTapeReel a owl:Class, :CarrierType ; + skos:exactMatch kbrda:VideotapeReel , marc:Videoreel ; + rdfs:subClassOf :VideoStorageMedium, :TapeReel ; + rdfs:label "Videospole"@sv, "Videotape reel"@en . + + +# TODO: restricted to some content forms (Visual, TextAsVisual...) + +:Microform a owl:Class, :MediaType ; + ptg:abstract true ; + skos:exactMatch kbrda:Microform; + rdfs:subClassOf :StorageMedium ; + rdfs:label "Mikroform"@sv, "Microform"@en . + +:Microfilm a owl:Class, :CarrierType ; + ptg:abstract true ; + skos:exactMatch marc:Microfilm ; + rdfs:subClassOf :Microform . + +:ApertureCard a owl:Class, :CarrierType ; + skos:exactMatch kbrda:ApertureCard, marc:ApertureCard ; + rdfs:subClassOf :Microform ; + rdfs:label "Maskhålkort"@sv, "Aperture card"@en . + +:Microfiche a owl:Class, :CarrierType ; + skos:exactMatch kbrda:Microfiche ; + rdfs:subClassOf :Microform, marc:Microfiche ; + rdfs:label "Mikrofiche"@sv, "Microfiche"@en . + +:MicroficheCassette a owl:Class, :CarrierType ; + skos:exactMatch kbrda:MicroficheCassette, marc:MicroficheCassette ; + rdfs:subClassOf :Microform ; + rdfs:label "Mikrofichekassett"@sv, "Microfiche cassette"@en . + +:MicrofilmCartridge a owl:Class, :CarrierType ; + skos:exactMatch kbrda:MicrofilmCartridge, marc:MicrofilmCartridge ; + rdfs:subClassOf :Microfilm ; + rdfs:label "Mikrofilmsmagasin"@sv, "Microfilm cartridge"@en . + +:MicrofilmCassette a owl:Class, :CarrierType ; + skos:exactMatch kbrda:MicrofilmCassette, marc:MicrofilmCassette ; + rdfs:subClassOf :Microfilm ; + rdfs:label "Mikrofilmskassett"@sv, "Microfilm cassette"@en . + +:MicrofilmReel a owl:Class, :CarrierType ; + skos:exactMatch kbrda:MicrofilmReel, marc:MicrofilmReel ; + rdfs:subClassOf :Microfilm ; + rdfs:label "Mikrofilmsspole"@sv, "Microfilm reel"@en . + +:MicrofilmRoll a owl:Class, :CarrierType ; + skos:exactMatch kbrda:MicrofilmRoll, marc:MicrofilmRoll ; + rdfs:subClassOf :Microfilm, :VideoStorageMedium ; + rdfs:label "Mikrofilmsrulle"@sv, "Microfilm roll"@en . + +:MicrofilmSlip a owl:Class, :CarrierType ; + skos:exactMatch kbrda:MicrofilmSlip, marc:MicrofilmSlip ; + rdfs:subClassOf :Microform ; + rdfs:label "Mikrofilmsremsa"@sv, "Microfilm slip"@en . + +:Microopaque a owl:Class, :CarrierType ; + skos:exactMatch kbrda:Microopaque ; + rdfs:subClassOf :Microform, marc:Microopaque ; + rdfs:label "Mikrokort"@sv, "Microopaque"@en . + + +:Microscopic a owl:Class, :MediaType ; + ptg:abstract true ; + skos:exactMatch kbrda:Microscopic; + rdfs:subClassOf :StorageMedium ; + rdfs:label "Mikroskopisk"@sv, "Microscopic"@en . + +:MicroscopeSlide a owl:Class, :CarrierType ; + skos:exactMatch kbrda:MicroscopeSlide ; + rdfs:subClassOf :Microscopic ; + rdfs:label "Mikroskoperingspreparat"@sv, "Microscope slide"@en . + + +:Projected a owl:Class, :MediaType ; + ptg:abstract true ; + skos:exactMatch kbrda:Projected; + rdfs:subClassOf :StorageMedium ; + rdfs:label "Projicerad"@sv, "Projected"@en . + +:FilmCartridge a owl:Class, :CarrierType ; + skos:exactMatch kbrda:FilmCartridge ; + rdfs:subClassOf :Projected ; + rdfs:label "Filmmagasin"@sv, "Film cartridge"@en . + +:FilmCassette a owl:Class, :CarrierType ; + skos:exactMatch kbrda:FilmCassette ; + rdfs:subClassOf :Projected ; + rdfs:label "Filmkassett"@sv, "Film cassette"@en . + +:FilmReel a owl:Class, :CarrierType ; + skos:exactMatch kbrda:FilmReel ; + rdfs:subClassOf :Projected ; + rdfs:label "Filmspole"@sv, "Film reel"@en . + +:FilmRoll a owl:Class, :CarrierType ; + skos:exactMatch kbrda:FilmRoll ; + rdfs:subClassOf :Projected ; + rdfs:label "Filmrulle"@sv, "Film roll"@en . + +:Filmslip a owl:Class, :CarrierType ; + skos:exactMatch kbrda:Filmslip, marc:Filmslip ; + rdfs:subClassOf :Projected ; + rdfs:label "Filmremsa"@sv, "Filmslip"@en . + +# TODO: Ensure difference between StillImage Projected and MovingImage Projected! +# See e.g. <> +:Filmstrip a owl:Class, :CarrierType ; + skos:exactMatch kbrda:Filmstrip, marc:FilmstripRoll ; + rdfs:subClassOf :Projected ; + rdfs:label "Bildband"@sv, "Filmstrip"@en . + +:FilmstripCartridge a owl:Class, :CarrierType ; + skos:exactMatch kbrda:FilmstripCartridge, marc:FilmstripCartridge ; + rdfs:subClassOf :Projected ; + rdfs:label "Bildbandsmagasin"@sv, "Filmstrip cartridge"@en . + +:OverheadTransparency a owl:Class, :CarrierType ; + skos:exactMatch kbrda:OverheadTransparency, marc:Transparency ; + rdfs:subClassOf :Projected ; + rdfs:label "OH-bild"@sv, "Overhead transparency"@en . + +:Slide a owl:Class, :CarrierType ; + skos:exactMatch kbrda:Slide, marc:Slide ; + rdfs:subClassOf :Projected ; + rdfs:label "Diabild"@sv, "Slide"@en . + + +:Stereographic a owl:Class, :MediaType ; + ptg:abstract true ; + skos:exactMatch kbrda:Stereographic ; + rdfs:subClassOf :StorageMedium ; + rdfs:label "Stereografisk"@sv, "Stereographic"@en . + +:StereographCard a owl:Class, :CarrierType ; + skos:exactMatch kbrda:StereographCard; + rdfs:subClassOf :Stereographic ; + rdfs:label "Stereografiskt kort"@sv, "Stereograph card"@en . + +:StereographDisc a owl:Class, :CarrierType ; + skos:exactMatch kbrda:StereographDisc; + rdfs:subClassOf :Stereographic ; + rdfs:label "Stereografisk skiva"@sv, "Stereograph disc"@en . + + +# Instances defined in: <../../genreforms/materialformat.ttl>. + +:BaseMaterial rdfs:subClassOf :Material . + +:TactileMaterial rdfs:subClassOf :Material ; + skos:broadMatch marc:TacMaterialType . + +:ImageMaterial rdfs:subClassOf :Material ; + skos:broadMatch marc:NonProjectedType . + +:MapMaterial rdfs:subClassOf :Material ; + skos:broadMatch marc:MapMediumType . + +# TODO: Upgrade some marc: properties to KBV going forward? +#:videoCharacteristic +# rdfs:subPropertyOf :format ; +# rdfs:domain :VideoStorageMedium ; +# sdo:rangeIncludes :VideoFormat . + +:VideoFormat rdfs:subClassOf :Material ; + skos:broadMatch marc:VideoFormatType . + +## TODO: *when needed* for marc - map patterns to/from to some of these types... + +# TODO: ensure all of these (LHS) can be mapped to one specific type: +# Then these deine a MARC rebus for its restriction on instanceOf (RHS): + +# :StillImageInstance :instanceOf :StillImage . +#:StillImageInstance +# ptg:abstract true ; +# owl:equivalentClass [ owl:onProperty :instanceOf ; owl:allValuesFrom :StillImage ] ; +# rdfs:subClassOf [ owl:onProperty :baseMaterial ; owl:someValuesFrom :ImageMaterial ] . + +# :MovingImageInstance :instanceOf :MovingImage . +# :ProjectedImageInstance :instanceOf :ProjectedImage . +# :NotatedMusicInstance :instanceOf :NotatedMusic . +# :KitInstance :instanceOf :Kit . + + +# TODO: OLD Aligning ideas (notes from things.ttl dating back to 2017): + +# Common Carrier Types + +#:Disc +#:CD +#:DVD + +#:Book a owl:Class; +# rdfs:label "Book"@en, "Bok"@sv; +# owl:equivalentClass bibo:Book; +# rdfs:subClassOf +# :Print, +# [ a owl:Restriction; owl:onProperty :instanceOf; owl:allValuesFrom :Text ] . +# [ a owl:Restriction; owl:onProperty :issuanceType; owl:hasValue :Monograph ] . +# #[ a owl:Restriction; owl:onProperty :extent; owl:allValuesFrom :PageCount ] . +# +#:BookSeries a owl:Class; +# rdfs:subClassOf :Text, :Serial . +# +#:MultiVolumeBook a owl:Class; +# rdfs:label "Multipart Book"@en, "Bokverk"@sv; +# skos:altLabel "Flervolymsbok"@sv; +# rdfs:subClassOf :Book, :MultipartMonograph; +# owl:equivalentClass bibo:MultiVolumeBook . +# +#:BookVolume a owl:Class; +# rdfs:label "Book Volume"@en, "Bokband"@sv ; +# skos:altLabel "Band"@sv, "Volym"@sv ; +# rdfs:subClassOf :Book, +# :PublicationVolume . +# +#:PrintedText a owl:Class; +# rdfs:label "Tryckt text"@sv; +# rdfs:subClassOf :TextInstance, :Print . +# +#:PrintedBook a owl:Class; +# rdfs:label "Printed Book"@en, "Tryckt bok"@sv; +# rdfs:subClassOf :Book, :PrintedText, :Volume . diff --git a/examples/typenormalization/contentclasses.ttl b/examples/typenormalization/contentclasses.ttl new file mode 100644 index 000000000..63a445f13 --- /dev/null +++ b/examples/typenormalization/contentclasses.ttl @@ -0,0 +1,518 @@ +prefix rdfs: +prefix owl: +prefix skos: +prefix ptg: + +prefix bibo: +prefix sdo: +prefix bf: + +prefix : +prefix saogf: +prefix kbrda: + +prefix kbgf: + +## +# This file depends on patterns defined in <./rdacontentpatterns.ttl> . + + +# Locally defined restriction shapes + +:BookForm a owl:Restriction ; + ptg:abstract true ; + owl:onProperty :genreForm ; + owl:hasValue kbgf:Book ; + rdfs:label "Book"@en , + "Bok"@sv ; + :pluralLabel "Böcker"@sv . + +:CartographyForm a owl:Restriction ; + owl:onProperty :genreForm ; + owl:hasValue saogf:Kartor ; + :note "SAOGF *is* this general, *not* just for planar maps." . + +:Tactile rdfs:subClassOf [ owl:onProperty :genreForm ; owl:hasValue saogf:Taktila\%20verk ] . + +:StillImage rdfs:subClassOf [ owl:onProperty :genreForm ; owl:hasValue saogf:Bilder ] . + +:NotatedMusic rdfs:subClassOf [ owl:onProperty :genreForm ; owl:hasValue saogf:Musikalier ] . + + +# Extend existing classes + +# TODO: +# * If only contentType kbrda:* will be used; these *need* to be intersections? Or "probably" :Text on revert?! +# We won't know what they are in bf either, unless e.g. a :Poster is a :Text, :Image ... +# * RDA Content Types (some are rebuses with gf:s or even instance types) +# * Some kbrda:* are "primary genreForm"; some could exact-match a type as a Restriction on genreForm or contentType + +:Cartography rdfs:subClassOf :Monograph, :CartographyForm, :CartographyContent . +:Text rdfs:subClassOf :Monograph, :TextContent . +:TextWithImages rdfs:subClassOf :Monograph, :TextContent, :ImageContent . +:StillImage rdfs:subClassOf :Monograph, :ImageContent . +:ImageAndText rdfs:subClassOf :Monograph, :TextContent, :ImageContent . + +:NotatedMusic rdfs:subClassOf :Monograph, :NotatedMusicContent . +:NotatedMovement rdfs:subClassOf :Monograph, :NotatedMovementContent . + +:Kit rdfs:subClassOf :Monograph . +:Object rdfs:subClassOf :Monograph, :ObjectContent . +:Audio rdfs:subClassOf :Monograph, :AudioContent . +:PerformedMusic rdfs:subClassOf :Monograph, :PerformedMusicContent . +:SpokenWord rdfs:subClassOf :Monograph, :SpokenWordContent . +:ComputerProgram rdfs:subClassOf :Monograph, :ComputerProgramContent . +:ComputerDataset rdfs:subClassOf :Monograph, :Dataset, :ComputerDatasetContent . + + +# Complex Work Classes + +# * Uses intersections to say: "this combo *means* this class". +:complex a skos:Collection ; + rdfs:label "complex"@en, "komplex"@sv ; + rdfs:comment "Anges på abstrakta klasser som namnger välkända mönster, definierade som intersektioner."@sv ; + :code "complex" . + +# TODO: RenameTo :TextMonograph "Textmonografi"@sv ? +:WrittenBook a owl:Class ; + owl:equivalentClass bibo:Book, sdo:Book ; + :category :pending, :complex ; + owl:intersectionOf ( + :Text + :BookForm + ) ; + rdfs:label "Written book"@en , + "Skriven bok"@sv ; + skos:altLabel "Bok"@sv, "Book"@en ; + :pluralLabel "Böcker"@sv . + +:TextAndImagesBook a owl:Class ; + :category :pending, :complex ; + rdfs:subClassOf :BookForm, :ImageAndText ; + rdfs:label "Text- och bilderbok"@sv, "Picture book"@en . + + +:Audiobook a owl:Class ; + :category :pending, :complex ; + rdfs:subClassOf [ owl:onProperty :genreForm ; + owl:hasValue saogf:Ljudb%C3%B6cker ] , + bibo:AudioDocument ; + owl:intersectionOf ( + :Audio + :BookForm + ) . + +:CollectedDocument a owl:Class ; + :category :pending, :complex ; + owl:equivalentClass bibo:CollectedDocument ; + owl:intersectionOf ( + :Audio + :BookForm + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Samlingsverk ] + ) . + +:LegalDocument a owl:Class ; + :category :pending, :complex ; + owl:equivalentClass bibo:LegalDocument ; + owl:intersectionOf ( + :Monograph + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Juridiskt\%20material ] + ) . + +:Patent a owl:Class ; + :category :pending, :complex ; + owl:equivalentClass bibo:Patent ; + owl:intersectionOf ( + :Monograph + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Patent ] + ) . + +:Interview a owl:Class ; + :category :pending, :complex ; + owl:equivalentClass bibo:Interview ; + owl:intersectionOf ( + :Monograph + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Intervjuer ] + ) . + +:Report a owl:Class ; + :category :pending, :complex ; + owl:equivalentClass bibo:Report ; + owl:intersectionOf ( + :Monograph + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Reportage ] + ) . + +:TactileBook a owl:Class ; + :category :pending, :complex ; + owl:intersectionOf ( + :Tactile + :BookForm + [ owl:onProperty :genreForm ; + owl:hasValue [ skos:narrowMatch saogf:Punktskriftsb%C3%B6cker ] ] + ) ; + skos:editorialNote 'TODO: differentiate between "filtbok" och "punktskriftsbok"?'@en ; + rdfs:label "Tactile Book"@en , + "Taktil bok"@sv . + + +:Article a owl:Class ; + :category :pending, :complex ; + owl:equivalentClass bibo:Article ; + owl:intersectionOf ( + :Monograph + [ owl:onProperty :genreForm ; + owl:hasValue kbgf:Article ] + ) . + +:Issue a owl:Class ; + :category :pending, :complex ; + owl:equivalentClass bibo:Issue ; + owl:intersectionOf ( + :Text + [ owl:onProperty :genreForm ; + owl:hasValue kbgf:Issue ] + ) ; + rdfs:label "Tidskriftsnummer"@sv , + "Periodical Issue"@en . + + +:ComicIssue a owl:Class ; + :category :pending, :complex ; + rdfs:subClassOf :Issue ; + owl:equivalentClass sdo:ComicIssue ; + owl:intersectionOf ( + :Monograph + [ owl:onProperty :genreForm ; + owl:hasValue kbgf:Issue ] + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Tecknade%20serier ] + ) ; + rdfs:label "Serietidningsnummer"@sv , + "Comic Issue"@en . + +:ComicSerial a :GenreForm ; + :category :pending, :complex ; + rdfs:comment "TODO: series of issues vs. arc of stories?" ; + owl:equivalentClass sdo:ComicSeries ; + owl:intersectionOf ( + :Serial + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Tecknade%20serier ] + ) ; + rdfs:label "Serietidningsserie"@sv , + "Comic Series"@en . + +:Note a :GenreForm ; + :category :pending, :complex ; + owl:equivalentClass bibo:Note ; + owl:intersectionOf ( + :Monograph + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Anteckningar ] + ) ; + rdfs:label "Anteckning"@sv , + "Note"@en . + +:Poster a owl:Class ; + :category :pending, :complex ; + # TODO: is a TextPoster a kind of ImagePoster? + #ptg:abstract true ; + #rdfs:subClassOf :StillImage ; + owl:equivalentClass sdo:Poster ; + owl:intersectionOf ( + :Visual + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Affischer ] + ) ; + # TODO: rewrite to shorthand classes: + #owl:intersectionOf ( + # :Monograph + # [ owl:onProperty :category ; + # owl:hasValue kbgf:Affisch] + # ) ; + rdfs:label "Affisch"@sv, "Poster"@en ; + :pluralLabel "Affischer"@sv . + +:Photograph a owl:Class ; + :category :pending, :complex ; + #rdfs:subClassOf :StillImage ; + owl:equivalentClass sdo:Photograph ; + owl:intersectionOf ( + :StillImage + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Fotografier ] + ) ; + rdfs:label "Fotografi"@sv, "Photograph"@en ; + :pluralLabel "Fotografier"@sv . + +:ImagePoster a owl:Class ; + :category :pending, :complex ; + rdfs:subClassOf :Poster , :ImageContent ; + rdfs:label "Bildaffisch"@sv, "Image Poster"@en . + +:TextPoster a owl:Class ; + :category :pending, :complex ; + rdfs:subClassOf :Poster , :TextContent ; + rdfs:label "Textaffisch"@sv, "Text Poster"@en . + +:ImageAndTextPoster a owl:Class ; + :category :pending, :complex ; + rdfs:subClassOf :ImagePoster, :TextPoster ; + rdfs:label "Bild- och textaffisch"@sv, "Image and Text Poster"@en . + + +:IllustratedWork a owl:Class ; + :category :pending, :complex ; + rdfs:subClassOf :ImageContent ; + owl:intersectionOf ( + :Visual + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Illustrerade%20verk ] + ) ; + rdfs:label "Illustrerat verk"@sv , + "Illustrated Work"@en . + +:Brochure a owl:Class ; + :category :pending, :complex ; + owl:intersectionOf ( + :Text + [ owl:onProperty :genreForm ; + owl:hasValue ] + ) ; + rdfs:label "Broschyr"@sv , + "Brochure"@en . + +:Comic a owl:Class ; + :category :pending, :complex ; + rdfs:subClassOf :IllustratedWork ; + owl:intersectionOf ( + :Monograph + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Serietidningar ] + ) . + +:ComicIssue a owl:Class ; + :category :pending, :complex ; + owl:intersectionOf ( + :Comic + :Issue + ) ; + rdfs:label "Serietidningsnummer"@sv , + "Comic Issue"@en . + +:ComicStory a owl:Class ; + :category :pending, :complex ; + owl:intersectionOf ( + :Comic + [ owl:onProperty :genreForm ; + owl:hasValue kbgf:ShortStory ] + ) . + +:GraphicNovel a owl:Class ; + :category :pending, :complex ; + rdfs:subClassOf :ComicIssue ; # TODO: really ComicIssue? + owl:intersectionOf ( + :Text + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Serieromaner ] + ) . + + +# FIXME: remove instancetype :Map ; compute on revert (if work is :Cartography, prefer Map over all non-electronic?) +:CartographicImage a owl:Class ; + ptg:abstract true ; + :category :pending, :complex ; + owl:intersectionOf ( + :Cartography + :CartographicImageContent + [ owl:onProperty :genreForm ; + owl:hasValue kbgf:Map ] + ) ; + rdfs:label "Karta"@sv , "Map"@en . + +:Atlas a owl:Class ; + ptg:abstract true ; + :category :pending, :complex ; + owl:intersectionOf ( + :Cartography + :BookForm + :TextContent + :CartographicImageContent + ) ; + rdfs:label "Atlas"@sv , + "Atlas"@en . + +:CartographicGlobe a owl:Class ; + :category :pending, :complex ; + owl:intersectionOf ( + :Cartography + :CartographicThreeDimensionalFormContent + [ owl:onProperty :genreForm ; + owl:hasValue kbgf:Globe ] + ) ; + rdfs:label "Kartglob"@sv , + "Cartographic Globe"@en ; + skos:altLabel "Jord- eller månglob"@sv . + + +# TODO: +# * In SAOGF, link up *all* SAOGF-Musik[*instrument] as hints for "Music-content"? + +:PerformedMusic a owl:Class ; + # TODO: is this the "real" :Music (subClassOf :Audio), and :Music is more "genre"? + :category :pending, :complex ; + owl:intersectionOf ( + :Music + [ owl:onProperty :genreForm ; + owl:hasValue kbrda:PerformedMusic ] + ) ; + rdfs:label "Performed Music"@en , + "Framförd musik"@sv . + + +:Film a owl:Class ; + :category :pending, :complex ; + owl:intersectionOf ( + :MovingImage + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Filmer ] + ) ; + owl:equivalentClass bibo:Film ; + rdfs:label "Film"@sv , + "Film"@en . + + +:ComputerGame a owl:Class ; + :category :pending, :complex ; + owl:intersectionOf ( + :Multimedia + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Datorspel ] + ) . + + +# Collecting Work Classes + +:Archive a owl:Class ; + :category :pending, :complex ; + owl:intersectionOf ( + :Collection + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Arkiv ] + ) ; + rdfs:label "Arkiv"@sv , + "Archive"@en . + +:Database a owl:Class ; + :category :pending, :complex ; + #rdfs:subClassOf :Dataset ; + owl:intersectionOf ( + :Integrating + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Databaser ] + ) ; + #skos:narrowMatch marc:UpdatingDatabase ; + rdfs:label "Databas"@sv , + "Database"@en . + +# Serial Work Classes + +:SerialPublication a owl:Class ; + :category :pending, :complex ; + owl:intersectionOf ( + :Serial + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Seriella%20publikationer ] + ) ; + rdfs:label "Seriell publikation"@sv , + "Serial Publication"@en . + +:Periodical a owl:Class ; + :category :pending, :complex ; + rdfs:seeAlso ; + rdfs:subClassOf :SerialPublication ; + owl:intersectionOf ( + :Serial + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Periodika ] + ) ; + # TODO: :scopeNote Tidskrift vs. Tidning vs. Årsbok () + skos:altLabel "Periodika"@sv ; + rdfs:label "Tidskrift"@sv , + "Periodical"@en ; + :pluralLabel "Tidskrifter"@sv . + +#:CreativeWorkSeries a owl:Class; +# owl:equivalentClass sdo:CreativeWorkSeries; +# rdfs:subClassOf :Serial; +# rdfs:label "Creative Work Series"@en, "Utgivningsserie"@sv . + +:MonographicSeries a owl:Class ; + :category :pending, :form ; + owl:equivalentClass bibo:Series , + bf:Series ; + owl:intersectionOf ( + :Serial + [ owl:onProperty :genreForm ; + owl:hasValue kbgf:MonographicSeries ] + ) . + +:Blog a owl:Class ; + :category :pending, :complex ; + owl:equivalentClass sdo:Blog ; + owl:intersectionOf ( + :Integrating + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Bloggar ] + ) . + +:ComicStory a owl:Class ; + :category :pending, :complex ; + owl:equivalentClass sdo:ComicStory ; + owl:intersectionOf ( + :Monograph + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Serienoveller ] + ) . + +:ShortStory a owl:Class ; + :category :pending, :complex ; + owl:equivalentClass sdo:ShortStory ; + owl:intersectionOf ( + :Monograph + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Noveller ] + ) . + +:ReferenceWork a owl:Class ; + :category :pending, :complex ; + owl:equivalentClass bibo:ReferenceSource ; + owl:intersectionOf ( + :Monograph + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Referensverk ] + ) . + +:Review a owl:Class ; + :category :pending, :complex ; + owl:equivalentClass sdo:Review ; + owl:intersectionOf ( + :Monograph + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Recensioner ] + ) . + +:Standard a owl:Class ; + :category :pending, :complex ; + owl:equivalentClass bibo:Standard ; + owl:intersectionOf ( + :Monograph + [ owl:onProperty :genreForm ; + owl:hasValue saogf:Standarder ] + ) . diff --git a/examples/typenormalization/examples.trig b/examples/typenormalization/examples.trig new file mode 100644 index 000000000..06392dec7 --- /dev/null +++ b/examples/typenormalization/examples.trig @@ -0,0 +1,84 @@ +prefix rdfs: +prefix owl: +prefix : +prefix kbgf: +prefix kbrda: +prefix saogf: +prefix barngf: + + { a :WrittenBook } + { a :Text ; :genreForm kbgf:Book ; :contentType kbrda:Text } + { a :WrittenBook; :genreForm saogf:Romaner } + { a :Text ; :genreForm saogf:Romaner ; :contentType kbrda:Text } + + { a :Audiobook } + { a :Audio ; :genreForm kbgf:Book } + { a :Audiobook ; :genreForm saogf:Ljudb%C3%B6cker } + { a :Audio ; :genreForm saogf:Ljudb%C3%B6cker } + + { a :EBook } + { a :Electronic ; :instanceOf [ a :BookForm ] } + + { a :CDBook } + { a :Electronic ; :carrierType kbrda:AudioDisc ; :instanceOf [ a :BookForm ] } + + { a :ComputerGame } + { a :Multimedia ; :genreForm saogf:Datorspel } + + { a :Multimedia } + { a :ComputerGame } + + { a :Serial ; :genreForm saogf:Datorspel } + { a :Serial ; :genreForm saogf:Datorspel } + { a :ComputerGame } + + { a :Comic ; :genreForm kbgf:Comic } + { a :Text ; :genreForm kbgf:Comic ; :contentType kbrda:StillImage } + { a :Comic ; :genreForm saogf:Tecknade%20serier } + { a :Text ; :genreForm kbgf:Comic, saogf:Tecknade%20serier ; :contentType kbrda:StillImage } + + { a :ComicIssue } + { a :Text ; :genreForm kbgf:Comic, kbgf:Issue ; :contentType kbrda:StillImage } + + { a :Serial ; :genreForm saogf:Tecknade%20serier } + { a :Comic } + + { a :GraphicNovel } + { a :Text, :BookForm ; :genreForm saogf:Serieromaner , saogf:Romaner } + + { a :Atlas } + { a :Cartography ; :genreForm kbgf:Book ; :contentType kbrda:Text, kbrda:CartographicImage } + + { a :Globe } + { a :Cartography ; :contentType kbrda:CartographicThreeDimensionalForm } + + { a :Photograph ; :genreForm saogf:Portr%C3%A4tt } + { a :StillImage ; :genreForm saogf:Fotografier, saogf:Portr%C3%A4tt ; :contentType kbrda:StillImage } + +# TODO: :BrailleVolume :instanceOf [a :WrittenBook ] . +# a :WrittenBook ; +# :genreForm saogf:Punktskriftsb%C3%B6cker ; +# spec:query 'ASK { a :TactileBook }' . +# +# a :InteractiveObject ; :genreForm kbgf:TactileBook ; +# spec:query 'ASK { a :TactileBook }' . + +# Instance Types + +# TODO: Handmade (vs. Printed)? +#<66829ddb> a :Book ; :genreForm kbgf:Manuscript . +#<66829d88> a :HandmadeVolume ; :instanceOf <66829ddb> . +# +#<66829def> a :Text ; :genreForm kbgf:Decree . +#<66829d8a> a :HandmadeSheet ; :instanceOf <66829def> . +# +#<66829e07> a :StillImage ; :genreForm kbgf:ImagePoster . +#<66829d8c> a :PrintedSheet ; :instanceOf <66829e07> . +# +#<66829e1d> a :StillImage ; :genreForm kbgf:Poster . +#<66829d8f> a :PrintedSheet ; :instanceOf <66829e1d> . +#<66829d92> a :DigitalSheet ; :instanceOf <66829e1d> . +# +#<66829d94> a :HandmadeSheet ; :instanceOf [ a :StillImage ; :genreForm kbgf:MapInPlano ] . +#<66829d97> a :DigitalVolume ; :instanceOf [ a :Book ; :genreForm kbgf:Atlas ] . +#<66829d98> a :DigitalVolume ; :instanceOf [ a :AudioBook ; :genreForm kbgf:SpokenBook ] . diff --git a/examples/typenormalization/marcmatches.ttl b/examples/typenormalization/marcmatches.ttl new file mode 100644 index 000000000..ad0eb07e4 --- /dev/null +++ b/examples/typenormalization/marcmatches.ttl @@ -0,0 +1,826 @@ +prefix : +prefix marc: +prefix saogf: +prefix tgm: + +# Stat numbers: Most GenreForm are tagged below (to aid prioritization). + +# TODO: "Primary?" means candidate as a basic Form (or a clear subclass thereof?). + +# TODO: what of these loc.gov-mappings are used by bibframe2marc to *produce* bib 008 values? + +# TODO: "Vad är skönlitteratur?" - +# marc:NotFictionNotFurtherSpecified . # 8524469 # [also ssb] + +## +# marc:ConferencePublicationType +#-- +marc:ConferencePublication # 251347 # Primary? [also ssb] + :closeMatch saogf:Konferensmaterial . +# marc:ConferencePublication marc:ConferencePublicationType-1 + +## +# marc:BooksBiographyType + +marc:Autobiography # [a] also mac:MusicTextType # 41138 # [also ssb] + :closeMatch saogf:Sj%C3%A4lvbiografier ; + :closeMatch . # "Autobiographies"@en . + +marc:IndividualBiography # [b] 69428 # [also ssb] + :broadMatch saogf:Biografier ; + :broadMatch . # "Biographies"@en . + +marc:CollectiveBiography # [c] 17177 # Primary? [also ssb] + :broadMatch saogf:Biografier ; + :broadMatch . # "Biographies"@en . + +marc:ContainsBiographicalInformation # [d] 43201 # [also ssb] + :broadMatch saogf:Biografier ; + :broadMatch . # "Biographies"@en . + +## +# Books and Serials (continuing) -- marc:BooksContentsType | marc:SerialsNatureType | marc:SerialsContentsType + +marc:LegalArticle # [g] 642 # Primary? [also ssb] + :broadMatch saogf:Juridiskt%20material ; + :broadMatch . # "Law materials"@en . + +marc:Legislation # [l] 5196 # [also ssb] + :broadMatch saogf:Juridiskt%20material ; + :broadMatch . # "Law materials"@en . + +marc:SerialsNatureType-h # [h] 561 # [on Serials]; marc:Biography Primary? [also ssb] + :broadMatch saogf:Biografier ; + :broadMatch . # "Biographies"@en . + +marc:LawReportOrDigest # [w] 326 # Primary? + :broadMatch saogf:Juridiskt%20material ; + :broadMatch . # "Law materials"@en . + +marc:Yearbook # [y] 6968 # [also ssb] + # a :ContentType ; # 1 # [also ssb] + :closeMatch saogf:%C3%85rsb%C3%B6cker ; + :closeMatch . # "Yearbooks"@en . + +marc:Index # [i] 3941 # Primary? [also ssb] + :closeMatch . # "Indexes"@en . +# TODO: +# Either: Delete - Unlikely to have been consistently and correctly applied? +# - How is it used in practise? "Sök i 008 minus Index för de som vill ha faktiskt innehåll"@sv?) +# Or: << marc:Index :broadMatch saogf:Referensverk >> a :Suggestion ; :source kbstaff:viklun . + +marc:Statistics # [s] 20197 # Primary? [also ssb] + :closeMatch saogf:Statistik ; + :closeMatch . # "Statistics"@en . + +marc:Handbook # [f] 8727 # Primary? [also ssb] + # a :ContentType ; # 2 # Primary? [also ssb] + #:closeMatch saogf:Handb%C3%B6cker%2C%20manualer%20etc\. ; + :closeMatch ; + :closeMatch . # "Handbooks and manuals"@en . + +marc:Treaty # [z] 1297 # [also ssb] + :closeMatch . # "Treaties"@en . + +marc:Discography # [k] 2287 # Primary? [also ssb] + :closeMatch saogf:Diskografier ; + :closeMatch . # "discography"@en . + +marc:TechnicalReport # [t] 466 # Primary? [also ssb] + # a :ContentType . # 2 # Primary? [also ssb] + :closeMatch . # "Technical reports"@en . + +marc:Filmography # [q] 2269 # [also ssb] + :closeMatch saogf:Filmografi ; # [new saogf->lcgft mapping 241015] + :closeMatch . # "filmography"@en . + +marc:Directory # [r] 2604 # Primary? [also ssb] + :closeMatch saogf:Adresskalendrar ; + :closeMatch . # "Directories"@en . + +marc:Encyclopedia # [e] 9137 # [also ssb] + :closeMatch saogf:Encyklopedier ; + :closeMatch . # "Encyclopedias"@en . + +marc:ComicOrGraphicNovel # [6] 17902 # Primary? [also ssb] + # a :ContentType ; # 20 # Primary? [also ssb] + :broadMatch saogf:Tecknade%20serier ; + :closeMatch . # "Comics (Graphic works)"@en . + +marc:LegalCaseOrCaseNote # [v] 431 # Primary? + # a :ContentType ; # 1 # Primary? + :broadMatch saogf:Juridiskt%20material ; + :broadMatch . # "Law materials"@en . + +marc:Catalog # [c] 61570 # Primary? [also ssb] + # a :ContentType ; # 4 # Primary? [also ssb] + :closeMatch saogf:Kataloger , tgm:Kataloger ; + :closeMatch . # "Catalogs"@en . + +marc:Thesis + :closeMatch saogf:Avhandlingar ; + # a :ContentType . # 16 # Primary? [also ssb] 326407# Primary? [also ssb] + :closeMatch ; :code "m"; :label "Academic theses" . + +marc:Dictionary # [d] 14033 # Primary? [also ssb] + # a :ContentType ; # 1 # Primary? [also ssb] + :closeMatch saogf:Lexikon ; + :closeMatch . # "Dictionaries"@en . + +marc:Bibliography # [b] + # a :ContentType . # 5 # [also ssb] 424362# [also ssb] + :closeMatch saogf:Bibliografier ; + :closeMatch . # "bibliography"@en . + +marc:Calendar # [x5] + # a :ContentType . # 2 # Primary? + :closeMatch saogf:Kalendrar ; + :closeMatch . # "Calendars"@en . + +marc:PatentDocument # [j] 661 # Primary? [also ssb] + :closeMatch saogf:Patent ; + :closeMatch . # "Patents"@en . + + +## +# marc:BooksBiographyType + +marc:FictionNotFurtherSpecified # [1] + :broadMatch saogf:Sk%C3%B6nlitteratur ; # ~ _:x670e8a6d {| a :PreferredGeneralization ; :source kbstaff:viklun |} ; + :closeMatch . # "Fiction"@en . + +marc:MixedForms # [m] 4352 # Primary? [also ssb] + :broadMatch saogf:Sk%C3%B6nlitteratur ; # ~ _:x670e8a6d {| a :ErasedDifference ; :source kbstaff:viklun |} ; + #:replacedBy marc:FictionNotFurtherSpecified ; ~ _:x670e8a6d + :closeMatch . # "Fiction"@en . + +marc:HumorSatiresEtc # [h] 3653 # [also ssb] + :narrowMatch saogf:Humor ; # ~ _:x670e8a3c + :narrowMatch saogf:Satir ; # ~ _:x670e8a3c {| a :Suggestion ; :source kbstaff:viklun |} ; + :closeMatch . # "Humor"@en . + +marc:Letter # [i] 1436 # Primary? [also ssb] + :closeMatch saogf:Korrespondens ; + # :narrowMatch saogf:Brev ; {| a :TooSpecic ; :source kbstaff:viklun |} + :closeMatch . # "Personal correspondence"@en . + +marc:Novel # [f] # 248532 # Primary? [also ssb] + :closeMatch saogf:Romaner ; + :closeMatch . # "Novels"@en . + +marc:ShortStory # [j] 26024 # Primary? [also ssb] + :closeMatch saogf:Noveller ; + :closeMatch . # "Short stories"@en . + +marc:Speech # [s] 333 # Primary? [also ssb] + :closeMatch saogf:Tal%20%28retorik%29 ; + :closeMatch . # "Speeches"@en . + +# N/A in codeMaps: + +marc:Review # a :ContentType . # 1 # [also ssb] + :closeMatch saogf:Recensioner . # 31024 # [also ssb] + +marc:StandardsSpecification # 270 # Primary? + :closeMatch saogf:Standarder . + +marc:AbstractsSummary # 1324 # Primary? [also ssb] + # a :ContentType . # 4 # Primary? [also ssb] + :broadMatch saogf:Sammanfattningar . # {| :source kbkat:viklun |} + +marc:ProgrammedText # 192 # Primary? [also ssb] + :broadMatch saogf:Instruktions-%20och%20undervisningsmaterial . + # a :ContentType . # 21 # Primary? [also ssb] + +marc:SurveysOfLiteratureInASubjectArea # 448 # [also ssb] + :closeMatch saogf:Forsknings%C3%B6versikter . # {| :source kbkat:viklun |} + # a :ContentType . # 1 # [also ssb] + +# marc:Offprint # 65 # Primary? +marc:Festschrift :closeMatch saogf:Festskrifter . # 32382 # [also ssb] + + +## +# marc:BooksBiographyType AND marc:MusicTextType + +marc:Poetry # [p] 51022 # [also ssb] + :closeMatch saogf:Poesi ; + :closeMatch . # "Poetry"@en . +marc:Drama # [d] 17418 # [also ssb] + :closeMatch saogf:Dramatik ; + :closeMatch . # "Drama"@en . +marc:Essay # [e] 4861 # [also ssb] + :closeMatch saogf:Ess%C3%A4er ; + :closeMatch . # "Essays"@en . + +# N/A in codeMaps: +# marc:NotFictionNotFurtherSpecified marc:BooksLiteraryFormType-0 +marc:ComicStrip # marc:BooksLiteraryFormType-c # 2773 # Primary? [also ssb] + :broadMatch saogf:Tecknade%20serier . + + +## +# marc:MusicTextType + +marc:Interview # [t] 69 # [also ssb] + :closeMatch saogf:Intervjuer ; + :closeMatch . # "Interviews"@en . + +marc:Memoir # [m] 99 # [also ssb] + :closeMatch saogf:Sj%C3%A4lvbiografier ; + :closeMatch . # "Autobiographies"@en . + +marc:History # [h] 110 # [also ssb] + :closeMatch . # "history"@en . + +marc:Biography # [b] + :closeMatch saogf:Biografier ; + :closeMatch . # "Biographies"@en . +#marc:SerialsContentsType-h :broader marc:Biography . # in construct-enums.tq # 848 # marc:Biography Primary? [also ssb] # 290 # [also ssb] + +marc:Rehearsal # [r] + :closeMatch . # "rehearsals"@en . + +marc:Folktale # [o] 46 # [also ssb] + :closeMatch saogf:Folksagor ; + :closeMatch . # "Folk tales"@en . + +marc:LecturesSpeech # [l] 110 # Primary? [also ssb] + :broadMatch saogf:Tal%20%28retorik%29 ; + :broadMatch . # "Speeches"@en . + +marc:Fiction # [f] + :closeMatch . # "Fiction"@en . + +marc:Sound # [s] + :closeMatch . # "Sound recordings"@en . + +marc:Reporting # [g] 33 # [also ssb] + :broadMatch saogf:Informativa%20verk ; + :broadMatch . # "Informational works"@en . + +marc:ConferenceProceeding # [c] 9 # Primary? + :closeMatch saogf:Konferenser ; + :closeMatch . # "Conference papers and proceedings"@en . + +marc:Instruction # [i] 19 # Primary? + :broadMatch saogf:Instruktions-%20och%20undervisningsmaterial ; + :broadMatch . # "Instructional and educational works"@en . + +marc:LanguageInstruction # [j] 113 # Primary? + :closeMatch . # "language instruction"@en . + +marc:Comedy # [k] 17 # [also ssb] + :broadMatch saogf:Humor ; + :broadMatch . # "Humor"@en . + +# N/A in codeMaps: +# marc:ItemIsAMusicalSoundRecording marc:MusicTextType-_ # 1 # Primary? + + +## +# marc:SerialsTypeOfSerialType + +marc:MonographicSeries # [m] 94048 # Primary? [also ssb] + :closeMatch . # "monographic series"@en . + +marc:Newspaper # [n] 9076 # Primary? [also ssb] + :closeMatch saogf:Dagstidningar ; + :closeMatch . # "newspaper"@en . + +marc:Periodical + # a :ContentType ; # 1 # Primary? [also ssb] 565338# Primary? [also ssb] + :closeMatch saogf:Periodika ; + :closeMatch ; :code "p"; :label "periodical" . + +marc:UpdatingLooseLeaf # [l] 132 # Primary? + :closeMatch . # "loose leaf"@en . + +marc:UpdatingDatabase # [d] 2960 # Primary? + # a :ContentType . # 4 # Primary? + # TODO: remove; maybe implied from possible new type :Database + :closeMatch saogf:Databaser ; # {| :source kbkat:viklun |} + :closeMatch . # "database"@en . + +marc:UpdatingWebSite # [w] 635 # Primary? + # TODO: remove; maybe implied from possible new type :Website + :closeMatch saogf:Webbplatser ; # {| :source kbkat:viklun |} + :closeMatch . # "web site"@en . + +# Missing in KB marc (only relvant *IF* we were to map to marc bib 008!) +# :closeMatch ; :code "g"; :label "magazine" . +# :closeMatch ; :code "h"; :label "blog" . +# :closeMatch ; :code "j"; :label "journal" . +# :closeMatch ; :code "r"; :label "repository" . +# :closeMatch ; :code "s"; :label "newsletter" . +# :closeMatch ; :code "t"; :label "directory" . + + +## +# marc:VisualMaterialType + +marc:VisualMaterialType-b # [b] :broader marc:Kit ; # 1745 # marc:Kit Primary? [also ssb] + :broadMatch . # "kit"@en . + +marc:Videorecording # [v] + # a :ContentType . # 1 # Primary? [also ssb] 531734# Primary? [also ssb] SHOULD_BE_INSTANCE + :closeMatch . # "Video recordings"@en . + +marc:MicroscopeSlide # [p] + :closeMatch . # "microscope slide"@en . + +marc:Realia # [r] 34 # Primary? + :closeMatch . # "realia"@en . + +marc:MotionPicture # [m] 11841 # Primary? [also ssb] + # a :ContentType ; # 1 # Primary? [also ssb] + :closeMatch saogf:Filmer ; + :closeMatch . # "Motion pictures"@en . + +marc:Graphic # [k] 8053 # Primary? + # a :ContentType . # 2 # Primary? + :closeMatch . # "graphic"@en . + +marc:ArtOriginal # [a] 116 # Primary? + :closeMatch . # "Art"@en . + +marc:Filmstrip # [f] 10 # Primary? [also ssb] + # a :ContentType . # 2 # Primary? [also ssb] + :closeMatch . # "filmstrip"@en . + +marc:ArtReproduction # [c] 31 # Primary? + # a :ContentType ; # 5 # Primary? + :closeMatch tgm:Konstreproduktioner ; + :closeMatch . # "art reproduction"@en . + +marc:VisualMaterialType-n # [n] :broader marc:Chart + # a :ContentType ; # 68 # marc:Chart + :broadMatch saogf:Diagram ; + :narrowMatch tgm:Diagram%20och%20tabeller ; + :broadMatch . # "chart"@en . + +marc:VisualMaterialType-g # [g] :broader marc:Game # 194 # marc:Game Primary? + # a :ContentType ; # 32 # marc:Game Primary? + :broadMatch saogf:Spel%20och%20tanken%C3%B6tter ; + :closeMatch . # "Puzzles and games"@en . + +marc:Diorama # [d] 739 # + :closeMatch . # "diorama"@en . + +marc:Toy # [w] 3 # Primary? + :closeMatch . # "toy"@en . + + +## +# marc:VisualMaterialType AND marc:NonProjMaterialType + +marc:TechnicalDrawing # [l] 109 # Primary? + # a :ContentType . # 6 # Primary? + :closeMatch . # "technical drawing"@en . + +marc:FlashCard # [o] 60 # Primary? + # a :ContentType . # 2 # Primary? + :closeMatch . # "flash card"@en . + +marc:Picture # [i] 105262 # Primary? + # a :ContentType ; # 86 # Primary? + :closeMatch tgm:Bilder ; + :closeMatch . # "Pictures"@en . + +marc:Transparency # [t] 71 # Primary? + # a :ContentType ; # 6 # Primary? + :closeMatch tgm:Genomsiktsbilder ; + :closeMatch . # "transparency"@en . + +marc:Slide # [s] 11 # Primary? + :closeMatch tgm:Diabilder ; + :closeMatch . # "slide"@en . + +marc:Model # [q] + :closeMatch . # "Models (Representations)"@en . + + +## +# marc:MapsFormatType + +marc:PlayingCard # [p] + :closeMatch tgm:Spelkort ; + :closeMatch . # "Playing cards"@en . + +marc:WallMap # [o] 350 # Primary? + :closeMatch . # "Wall maps"@en . + +marc:LooseLeaf # [r] 13 # Primary? + :closeMatch . # "Loose-leaf services"@en . + +marc:Game # [n] + :broadMatch saogf:Spel%20och%20tanken%C3%B6tter ; + :broadMatch . # "Puzzles and games"@en . + +marc:PictureCardPostCard # [j] + :closeMatch saogf:Vykort ; + :closeMatch tgm:Vykort ; + :closeMatch . # "Postcards"@en . + +marc:Manuscript # [e] 967 # Primary? + :closeMatch . # "Manuscript maps"@en . + +marc:Puzzle # [l] 8 # Primary? + :broadMatch saogf:Spel%20och%20tanken%C3%B6tter ; + :narrowMatch tgm:Ord-%20och%20bildg%C3%A5tor ; + :broadMatch . # "Puzzles and games"@en . + +marc:MapsFormatType-k # [k] # [on Maps]; :broader marc:Calendar # 10 # marc:Calendar Primary? # 57 # Primary? + :broadMatch tgm:Almanackor , + saogf:Kalendrar ; + :broadMatch . # "Calendars"@en . + + +## +# marc:ComputerTypeOfFileType + +marc:Representational # [c] 13197 # Primary? + :closeMatch . # "representational"@en . + +marc:OnlineSystemOrService # [j] 135687 # Primary? + :closeMatch . # "online system or service"@en . + +marc:ComputerTypeOfFileType-h # [h] :broader marc:Sound # 47 # marc:Sound Primary? # 26 # Primary? + :closeMatch . # "sound"@en . + +marc:ComputerTypeOfFileType-g # [g] :broader marc:Game # 3803 # marc:Game Primary? [also ssb] # 132 # Primary? + # a :ContentType . # 2 # marc:Game Primary? [also ssb] + :closeMatch saogf:Datorspel ; + :closeMatch . # "game"@en . + +marc:InteractiveMultimedia # [i] 420 # Primary? [also ssb] + :closeMatch . # "interactive multimedia"@en . + +marc:ComputerProgram # [b] 34 # Primary? + # a :ContentType . # 24 # Primary? + :closeMatch . # "computer program"@en . + +marc:Font # [f] + :closeMatch . # "font"@en . + +marc:Document # [d] 2885 # Primary? [also ssb] + :broadMatch tgm:Dokument ; + :closeMatch . # "document (computer)"@en . + +marc:BibliographicData # [e] + :closeMatch . # "bibliographic data"@en . + +marc:NumericData # [a] 22 # Primary? + :closeMatch . # "numeric data"@en . + +# N/A in codeMaps: +# marc:Combination marc:ComputerTypeOfFileType-m # 28574 # Primary? [also ssb] +# marc:Combination a :ContentType . # 1 # Primary? [also ssb] + +#marc:Other a :ContentType . # 1 # [also ssb] # 2190 # [also ssb] + + +## +# Instance marc:MapMaterialType ? +#---- +# marc:Model marc:MapMaterialType-q +# marc:MapATwoDimensionalMap marc:MapMaterialType-j # 20157 # Primary? [also ssb] + +marc:Section # ? marc:MapMaterialType-s # 9 # Primary? [also ssb] + :closeMatch tgm:Sektionsritningar . + +marc:View # = marc:MapMaterialType-y # 3 # Primary? + :closeMatch tgm:Vyer . + +marc:RemoteSensingImage + :broadMatch tgm:Satellitbilder . # marc:MapMaterialType-r # 33 # Primary? +marc:MapMaterialType-d # UNDEF # 2134 # marc:Atlas Primary? [also ssb] + :broadMatch tgm:Atlaser . +# marc:Profile marc:MapMaterialType-k +# marc:Diagram marc:MapMaterialType-g + +## +# marc:NonProjMaterialType TODO: on carriers ... +#---- +# marc:Photonegative marc:NonProjMaterialType-g +# marc:Poster marc:NonProjMaterialType-k # 620 # Primary? +# marc:ActivityCard marc:NonProjMaterialType-a +marc:PhotomechanicalPrint # = marc:NonProjMaterialType-f # 156 # Primary? + :closeMatch tgm:Fotomekaniska%20reproduktioner . + +marc:Print # = marc:NonProjMaterialType-j # 15526 # Primary? + :closeMatch tgm:Tryck . + +marc:Painting # = marc:NonProjMaterialType-e # 627 # Primary? + :closeMatch tgm:M%C3%A5lningar . + +# marc:Radiograph marc:NonProjMaterialType-r # 1 # Primary? +# marc:Photoprint marc:NonProjMaterialType-h # 37816 # Primary? +# marc:StudyPrint marc:NonProjMaterialType-s # 1 # Primary? [also ssb] + +marc:Collage # = marc:NonProjMaterialType-c + :closeMatch tgm:Collage . + +# marc:NonProjMaterialType-n UNDEF +# marc:Postcard marc:NonProjMaterialType-p # 236 # Primary? + +marc:Drawing # = marc:NonProjMaterialType-d # 7018 # Primary? [also ssb] + :closeMatch tgm:Teckningar . + +# marc:NonProjMaterialType-v UNDEF # 57 # = marc:Photograph Primary? +# marc:Icon marc:NonProjMaterialType-q + + +# marc:GlobeMaterialType (missing in lcMarc2bfCodeMap?) +marc:CelestialGlobe # = marc:GlobeMaterialType-a ; a marc:GlobeMaterialType + :closeMatch tgm:Himmelsglober . +marc:TerrestrialGlobe # = marc:GlobeMaterialType-c # 59 # Primary? + :closeMatch tgm:Jordglober . +# marc:PlanetaryOrLunarGlobe marc:GlobeMaterialType-b +# marc:EarthMoonGlobe marc:GlobeMaterialType-e + +## +# marc:MapsMaterialType -- some are serials (see marcframe TODO) +# (missing in lcMarc2bfCodeMap?) +marc:Map :closeMatch tgm:Kartor . +marc:Globe # = marc:MapsMaterialType-d # 132 # Primary? + :closeMatch tgm:Glober . +marc:Atlas # marc:MapsMaterialType-e # 2044 # Primary? [also ssb] + :closeMatch tgm:Atlaser . +# marc:SeparateMapSupplementToAnotherWork marc:MapsMaterialType-f # 240 # Primary? +# marc:MapSeries marc:MapsMaterialType-b # 1403 # Primary? [also ssb] +# marc:MapBoundAsPartOfAnotherWork marc:MapsMaterialType-g # 260 # Primary? +# marc:SingleMap marc:MapsMaterialType-a # 14589 # Primary? [also ssb] +# marc:MapSerial marc:MapsMaterialType-c # 17 # Primary? + +#################### +# Instance forms (not on works; but some should be): +marc:Diagram # 28 # Primary? + :closeMatch tgm:Diagram%20och%20tabeller . +# marc:BibliographicData . # 26 # +# marc:Photonegative . # 16 # Primary? +# marc:CelestialGlobe . # 15 # Primary? +# marc:Model . # 10 # Primary? +# marc:PlanetaryOrLunarGlobe . # 3 # Primary? +# marc:Profile . # 3 # Primary? +# marc:Collage . # 2 # Primary? +marc:NonProjMaterialType-n # 1 # marc:Chart Primary? + :closeMatch saogf:Diagram . +# marc:ActivityCard . # 1 # Primary? + +## +# marc:MusicCompositionType + +marc:CanonOrRound # [cn] 18 # + :closeMatch . # "Canons (Music)"@en . + +marc:Fantasia # [ft] 56 # [also ssb] + :closeMatch . # "Fantasias (Music)"@en . + +marc:Rondo # [rd] 10 # + :closeMatch . # "Rondos"@en . + +marc:Rhapsody # [rp] 5 # + :closeMatch . # "Rhapsodies (Music)"@en . + +marc:Waltz # [wz] 68 # + :closeMatch . # "Waltzes (Music)"@en . + +marc:Overture # [ov] 70 # [also ssb] + :closeMatch . # "Overtures"@en . + +marc:Fugue # [fg] 18 # + :closeMatch . # "Fugues"@en . + +marc:Ricercar # [ri] 1 # + :closeMatch . # "Ricercars"@en . + +marc:Chaconne # [ca] 3 # + :closeMatch . # "Chaconnes"@en . + +marc:Oratorio # [or] 54 # [also ssb] + :closeMatch . # "Oratorios"@en . + +marc:Requiem # [rq] 33 # [also ssb] + :closeMatch . # "Requiems"@en . + +marc:PartSong # [pt] 62 # + :closeMatch . # "Part songs"@en . + +marc:Suite # [su] 213 # Primary? [also ssb] + :closeMatch . # "Suites"@en . + +marc:DanceForm # [df] 99 # + :closeMatch . # "Dance music"@en . + +marc:Canzona # [cz] 14 # + :closeMatch . # "Canzonas (Instrumental music)"@en . + +marc:ProgramMusic # [pg] 2 # Primary? + :closeMatch . # "Program music"@en . + +marc:Minuet # [mi] 8 # + :closeMatch . # "Minuets (Music)"@en . + +marc:ChantsOtherReligion # [cb] 4 # + :closeMatch . # "Chants"@en . + +marc:Variation # [vr] 69 # + :closeMatch . # "Variations (Music)"@en . + +marc:Cantata # [ct] 249 # + :closeMatch . # "Cantatas"@en . + +marc:Ballad # [bd] 10 # + :closeMatch . # "Ballads"@en . + +marc:Anthem # [an] 38 # Primary? [also ssb] + :closeMatch . # "Anthems"@en . + +marc:Nocturne # [nc] 22 # + :closeMatch . # "Nocturnes (Music)"@en . + +marc:Blues # [bl] 32 # [also ssb] + :closeMatch . # "Blues (Music)"@en . + +marc:Mass # [ms] 130 # + :narrowMatch saogf:Flerst%C3%A4mmiga%20m%C3%A4ssor ; + :closeMatch . # "Masses"@en . + +marc:Pavan # [pv] 5 # + :closeMatch . # "Pavans (Music)"@en . + +marc:Hymn # [hy] 39 # + :closeMatch . # "Hymns"@en . + +marc:DivertimentosSerenadesCassationsDivertissementsNotturni # [dv] 29 # + :closeMatch . # "Suites"@en . + +marc:Jazz # [jz] 263 # [also ssb] + :closeMatch . # "Jazz"@en . + +marc:MotionPictureMusic # [mp] 76 # Primary? [also ssb] + :closeMatch . # "Motion picture music"@en . + +marc:TrioSonata # [ts] 38 # + :closeMatch . # "Sonatas"@en . + +marc:ChanceComposition # [cs] 19 # + :closeMatch . # "Aleatory music"@en . + +marc:Flamenco # [fl] + :closeMatch . # "Flamenco music"@en . + +marc:ChantChristian # [cc] 46 # + :closeMatch . # "Chants"@en . + +marc:Motet # [mo] 90 # + :closeMatch . # "Motets"@en . + +marc:Mazurka # [mz] 13 # + :closeMatch . # "Mazurkas"@en . + +marc:March # [mr] 26 # + :closeMatch . # "Marches (Music)"@en . + +marc:MusicalRevueOrComedy # [mc] 103 # + :closeMatch . # "Revues"@en . + +marc:Zarzuela # [za] 1 # + :closeMatch . # "Zarzuelas"@en . + +marc:ConcertiGrossi # [cg] 19 # + :closeMatch . # "Concerti grossi"@en . + +marc:CountryMusic # [cy] 21 # [also ssb] + :closeMatch . # "Country music"@en . + +marc:Carol # [cr] 27 # + :closeMatch . # "Carols"@en . + +marc:GospelMusic # [gm] 16 # + :closeMatch . # "Gospel music"@en . + +marc:StudyOrExercise # [st] 282 # + :closeMatch . # "Studies (Music)"@en . + +marc:Toccata # [tc] 15 # + :closeMatch . # "Toccatas"@en . + +marc:Concerto # [co] 370 # [also ssb] + :closeMatch . # "Concertos"@en . + +marc:Villancico # [vi] mismatcing code "vl"? + :closeMatch . # "Villancicos (Music)"@en . + +marc:SymphonicPoem # [sp] 38 # + :closeMatch saogf:Symfoniska%20dikter ; + :closeMatch . # "Symphonic poems"@en . + +marc:RockMusic # [rc] 250 # [also ssb] + :closeMatch . # "Rock music"@en . + +marc:Song # [sg] 689 # Primary? [also ssb] + :closeMatch . # "Songs"@en . + +marc:Passacaglia # [ps] 16 # + :closeMatch . # "Passacaglias"@en . + +marc:Polonaise # [po] 7 # + :closeMatch . # "Polonaises (Music)"@en . + +marc:Symphony # [sy] 254 # [also ssb] + :closeMatch . # "Symphonies"@en . + +marc:Prelude # [pr] 42 # [also ssb] + :closeMatch . # "Preludes (Music)"@en . + +marc:ChoralePrelude # [cl] 15 # + :closeMatch . # "Chorale preludes"@en . + +marc:Sonata # [sn] 370 # [also ssb] + :closeMatch . # "Sonatas"@en . + +marc:Madrigal # [md] 49 # + :closeMatch . # "Madrigals (Music)"@en . + +marc:SquareDanceMusic # [sd] + :closeMatch . # "Square dance music"@en . + +marc:Opera # [op] 950 # [also ssb] + :closeMatch saogf:Operor ; + :closeMatch . # "Operas"@en . + +marc:Ballet # [bt] 57 # + :closeMatch saogf:Baletter ; + :closeMatch . # "Ballets (Music)"@en . + +marc:FolkMusic # [fm] 6899 # [also ssb] + :closeMatch saogf:Folkmusik ; + :closeMatch . # "Folk music"@en . + +marc:Chorale # [ch] 11 # + :closeMatch saogf:Koraler ; + :closeMatch . # "Chorales"@en . + +marc:PassionMusic # [pm] 15 # + :closeMatch . # "Holy Week music"@en . + +marc:BluegrassMusic # [bg] 10 # + :closeMatch . # "Bluegrass music"@en . + +marc:ChansonsPolyphonic # [cp] 3 # + :closeMatch . # "Polyphonic chansons"@en . + +marc:PopularMusic # [pp] 220 # [also ssb] + :closeMatch . # "Popular music"@en . + +marc:RagtimeMusic # [rg] 6 # + :closeMatch . # "Ragtime music"@en . + +# marc:TeatroLirico . # 1 # + +# N/A in codeMaps: +# marc:MultipleForms marc:MusicCompositionType-mu # 766 # Primary? [also ssb] +# marc:MusicCompositionType-zz # 1002 # marc:Other [also ssb] + + +#### +# Government genre (not relevant?) + +#marc:GovernmentPublicationType +# marc:Multistate marc:GovernmentPublicationType-m # 25 # +# marc:InternationalIntergovernmental marc:GovernmentPublicationType-i # 27933 # +# marc:Multilocal marc:GovernmentPublicationType-c # 29 # +# marc:UnknownIfItemIsGovernmentPublication marc:GovernmentPublicationType-u # 14196 # [also ssb] +# marc:FederalNational marc:GovernmentPublicationType-f # 34060 # [also ssb] +# marc:StateProvincialTerritorialDependentEtc marc:GovernmentPublicationType-s # 11731 # [also ssb] +marc:GovernmentPublicationLevelUndetermined # marc:GovernmentPublicationType-o # 666969 # [also ssb] + :broadMatch saogf:Myndighetspublikationer . # FIXME: N/A +# marc:Local marc:GovernmentPublicationType-l # 721 # [also ssb] +# marc:AutonomousOrSemiAutonomousComponent marc:GovernmentPublicationType-a # 328 # Primary? [also ssb] + + +# Others (not mapped to genreForm or contentType; no statistical usage) +marc:CoatsOfArms :closeMatch tgm:Vapensk%C3%B6ldar%20%28bilder%29 . +marc:Facsimile :closeMatch tgm:Faksimil . +marc:GenealogicalTable :closeMatch saogf:Genealogiskt%20material . +marc:Illumination :closeMatch tgm:Bokm%C3%A5leri . +marc:Illustration :closeMatch tgm:Illustrationer . +marc:MusicMatterType-a :closeMatch saogf:Diskografier . +marc:Photograph :closeMatch tgm:Fotografier . +marc:Plan :closeMatch tgm:Planritningar . +marc:Portrait :closeMatch saogf:Portr%C3%A4tt . + +# Instance/Carrier +marc:Microfiche :closeMatch tgm:Mikroficher . +marc:Microfilm :closeMatch tgm:Mikrofilmer . +marc:MicroformMaterialType-e :closeMatch tgm:Mikroficher . +marc:MicroformMaterialType-g :closeMatch tgm:Mikrokort . +marc:Microopaque :closeMatch tgm:Mikrokort . +marc:Negative :closeMatch tgm:Negativ . +marc:Photocopy :closeMatch tgm:Elektrostatkopior . +marc:ReproductionType-f :closeMatch saogf:Faksimiler . +marc:Sample :closeMatch tgm:Provexemplar . +marc:Videodisc :closeMatch tgm:Bildskivor . +marc:VideoMaterialType-d :closeMatch tgm:Bildskivor . diff --git a/examples/typenormalization/rdacontentpatterns.ttl b/examples/typenormalization/rdacontentpatterns.ttl new file mode 100644 index 000000000..d22255869 --- /dev/null +++ b/examples/typenormalization/rdacontentpatterns.ttl @@ -0,0 +1,102 @@ +prefix rdfs: +prefix owl: +prefix skos: +#prefix ptg: + +prefix : + +prefix saogf: +prefix kbrda: + +## +# Mixin classes to entail :contentType for RDA coordination. +# See <../../rda-terms.ttl>. +# See subclasses of these in other documents. + +# TODO: Define restriction classes as ptg:abstract true? + +# TODO: Remove? These are superfluous if :contentType relation to a :ContentType is entailed by :genreForm with such as a :broaderTransitive. + +:TextContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:Text . + +:ImageContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:StillImage . + +:ThreeDimensionalMovingImageContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:ThreeDimensionalMovingImage . + +:TwoDimensionalMovingImageContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:TwoDimensionalMovingImage . + +:NotatedMusicContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:NotatedMusic . + +:NotatedMovementContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:NotatedMovement . + +:ObjectContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:ThreeDimensionalForm . + +:AudioContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:Sounds . + +:PerformedMusicContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:PerformedMusic . + +:SpokenWordContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:SpokenWord . + +:ComputerProgramContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:ComputerProgram. + +:ComputerDatasetContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:ComputerDataset . + +:CartographicContent a owl:Class . + +## Articifial combos (patterns matching some of ComplexClass:es) + +[ owl:intersectionOf (:Cartography :Dataset) ] rdfs:subClassOf :CartographicDatasetContent . +:CartographicDatasetContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:CartographicDataset . + +[ owl:intersectionOf (:Cartography :ImageContent) ] rdfs:subClassOf :CartographicImageContent . +:CartographicImageContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:CartographicImage . + +[ owl:intersectionOf (:Cartography :MovingImage) ] rdfs:subClassOf :CartographicMovingImageContent . +:CartographicMovingImageContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:CartographicMovingImage . + +[ owl:intersectionOf (:Cartography :ImageContent :Tactile) ] rdfs:subClassOf :CartographicTactileImageContent . +:CartographicTactileImageContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:CartographicTactileImage . + +[ owl:intersectionOf (:Cartography :Tactile :ObjectContent) ] rdfs:subClassOf :CartographicTactileThreeDimensionalFormContent . +:CartographicTactileThreeDimensionalFormContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:CartographicTactileThreeDimensionalForm . + +[ owl:intersectionOf (:CartographicContent :ObjectContent) ] owl:equivalentClass :CartographicThreeDimensionalFormContent . +:CartographicThreeDimensionalFormContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:CartographicThreeDimensionalForm . + +[ owl:intersectionOf (:ImageContent :Tactile) ] rdfs:subClassOf :TactileImageContent . +:TactileImageContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:TactileImage . + +[ owl:intersectionOf (:NotatedMusic :Tactile) ] rdfs:subClassOf :TactileNotatedMusicContent . +:TactileNotatedMusicContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:TactileNotatedMusic . + +[ owl:intersectionOf (:NotatedMovement :Tactile) ] rdfs:subClassOf :TactileNotatedMovementContent . +:TactileNotatedMovementContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:TactileNotatedMovement . + +[ owl:intersectionOf (:Text :Tactile) ] rdfs:subClassOf :TactileTextContent . +:TactileTextContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:TactileText . + +[ owl:intersectionOf (:ObjectContent :Tactile) ] rdfs:subClassOf :TactileThreeDimensionalFormContent . +:TactileThreeDimensionalFormContent a owl:Restriction ; + owl:onProperty :contentType ; owl:hasValue kbrda:TactileThreeDimensionalForm . diff --git a/examples/typenormalization/requirements.txt b/examples/typenormalization/requirements.txt new file mode 100644 index 000000000..1f76d2031 --- /dev/null +++ b/examples/typenormalization/requirements.txt @@ -0,0 +1,2 @@ +rdflib +owlrl \ No newline at end of file diff --git a/examples/typenormalization/test_categories.py b/examples/typenormalization/test_categories.py new file mode 100644 index 000000000..cdaf3206a --- /dev/null +++ b/examples/typenormalization/test_categories.py @@ -0,0 +1,183 @@ +import sys + +from rdflib import BNode, OWL, RDF, Dataset, Graph, Namespace, URIRef +from rdflib.graph import DATASET_DEFAULT_GRAPH_ID + +SPEC = Namespace('https://libris.kb.se/sys/spec/') + + +def reason(graph: Graph) -> None: + if '--reasonable' in sys.argv[1:]: + import reasonable # type: ignore[import-untyped] + + r = reasonable.PyReasoner() + r.from_graph(graph) + for triple in r.reason(): + graph.add(triple) + + return + + from owlrl import DeductiveClosure # type: ignore[import-untyped] + from owlrl.OWLRL import OWLRL_Semantics # type: ignore[import-untyped] + + DeductiveClosure( + OWLRL_Semantics, + improved_datatypes=True, + rdfs_closure=True, + axiomatic_triples=True, + datatype_axioms=True, + ).expand(graph) + + +def drop_too_much(graph: Graph) -> None: + if len(graph) > 400 and (None, OWL.equivalentClass, None) in graph: + # A bit too much for OWL-RL (on a laptop in 2024); drop non-relevant axioms... + graph.update( + '''delete { ?s ?p ?o } where { + ?s ?p ?o + filter(?p not in (rdfs:subPropertyOf, + owl:inverseOf, + owl:propertyChainAxiom, + rdf:first, rdf:rest)) + }''' + ) + + +def build_tests(ds: Dataset, tbox: Graph, base_uri: str) -> tuple: + tests: dict = {} + variants = {'cmp', 'exp', 'cmp-ext', 'exp-ext', 'neg'} + + cmps = tbox | Graph() + exps = tbox | Graph() + cmp_exts = tbox | Graph() + exp_exts = tbox | Graph() + + for g in ds.graphs(): + if g.identifier == DATASET_DEFAULT_GRAPH_ID: + continue + + s = str(g.identifier).removeprefix(base_uri) + if '/' not in s: + continue + + name, leaf = s.rsplit('/', 1) + if leaf in variants: + tests.setdefault(name, {})[leaf] = g + match leaf: + case 'cmp': + cmps |= g + case 'exp': + exps |= g + case 'cmp-ext': + cmp_exts |= g + case 'exp-ext': + exp_exts |= g + + reason(cmps) + reason(exps) + reason(cmp_exts) + reason(exp_exts) + + return tests, cmps, exps, cmp_exts, exp_exts + + +def test_contained_in(knowledge, subgraph): + ok = True + diffing = Graph() + none_blank = lambda t: None if isinstance(t, BNode) else t + for spo in subgraph: + s, p, o = spo + # TODO: too smushed; may give false positives; use C14N instead... + if (none_blank(s), p, none_blank(o)) not in knowledge: + ok = False + diffing.add(spo) + + diffing.namespace_manager = knowledge.namespace_manager + + return ok, diffing + + +def run_tests(ds: Dataset, tbox: Graph, base_uri: str) -> bool: + tests, cmps, exps, cmp_exts, exp_exts = build_tests(ds, tbox, base_uri) + + total = 0 + passed = 0 + + for name, graphs in tests.items(): + for variant, contained_in_variant, knowledge in [ + ('cmp', 'exp', exps), + ('exp', 'cmp', cmps), + ('cmp-ext', 'exp-ext', exp_exts), + ('exp-ext', 'cmp-ext', cmp_exts), + ]: + if variant not in graphs: + continue + + if contained_in_variant not in graphs: + continue + + subgraph = graphs[variant] + ok, diffing = test_contained_in(knowledge, subgraph) + total += 1 + if ok: + passed += 1 + label = f"<{name}/{contained_in_variant}> implies <{name}/{variant}>" + report(label, ok, diffing, base_uri) + + if 'exp-neg' in graphs: + neg = graphs['exp-neg'] + total += 1 + ok = True + for spo in neg: + if spo in exps: + ok = False + if ok: + passed += 1 + report(name, ok, neg, base_uri, "negative") + + print() + print(f"Passed {passed} of {total} tests.") + + if failed := total - passed: + print(f"Failed {failed}.") + return False + + return True + + +def report(name: str, ok: bool, diffing: Graph, base_uri: str, note="") -> None: + note = f" [{note}]" if note else "" + if not ok: + print() + status = "OK" if ok else "FAIL" + print(f"{status}\t{name}{note}") + if not ok and len(diffing) > 0: + ttl = diffing.serialize(format='turtle', publicID=base_uri) + print(ttl.split('\n\n', 1)[1]) + + +def main(): + sources = [ + '../../source/vocab/concepts.ttl', + '../../source/vocab/newtypes/classes.ttl', + '../../source/vocab/newtypes/rdamatches.ttl', + '../../source/vocab/newtypes/genreforms.ttl', + 'cache/saogf.ttl', + ] + + base_uri = "http://libris.kb.se/sys/examples/typenormalization/" + tbox = Graph() + for source in sources: + graph = Graph().parse(source, publicID=base_uri) + drop_too_much(graph) + tbox |= graph + + ds = Dataset(default_union=False) + ds.parse('examples.trig', publicID=base_uri) + + if not run_tests(ds, tbox, base_uri): + sys.exit(1) + + +if __name__ == '__main__': + main() diff --git a/lxltools/datacompiler.py b/lxltools/datacompiler.py index 22dbb3b84..06cabc6f0 100644 --- a/lxltools/datacompiler.py +++ b/lxltools/datacompiler.py @@ -525,6 +525,8 @@ def _construct(compiler, sources, query=None): graph += Graph().parse(str(sourcepath), format=fmt) if not query: + graph = Graph() + graph += dataset return graph with compiler.path(query).open() as fp: diff --git a/lxltools/ldutil.py b/lxltools/ldutil.py index ebb92793c..08c5f6312 100644 --- a/lxltools/ldutil.py +++ b/lxltools/ldutil.py @@ -5,9 +5,14 @@ def to_jsonld(source: Graph, context_uri: str, contextobj) -> dict: data = from_rdf(source, context_data=contextobj) + assert isinstance(data, dict) + if '@graph' not in data: + data = {'@graph': [data]} + data['@context'] = context_uri _embed_singly_referenced_bnodes(data) _expand_ids(data['@graph'], contextobj['@context']) + return data diff --git a/requirements.txt b/requirements.txt index 33f060cd6..dcf4f1757 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ setuptools==70.0.0 -rdflib==6.1.1 -pyRdfa3==3.5.3 +rdflib==7.1.3 +pyRdfa3==3.6.4 requests==2.32.3 Markdown==3.7 diff --git a/scripts/oneoffs/rdabox2jsonld.py b/scripts/oneoffs/rdabox2jsonld.py new file mode 100644 index 000000000..c51629b8b --- /dev/null +++ b/scripts/oneoffs/rdabox2jsonld.py @@ -0,0 +1,228 @@ +""" +Convert RDA term lists in Box Notes to JSON-LD + +1. Download all lists from a given Box folder (here "Värdevokabulär") as a ZIP file. +2. Run this script (pipe or redirect output as desired): + $ python scripts/rdabox2jsonld.py cache/Värdevokabulär.zip + +""" +from urllib.parse import quote +from zipfile import ZipFile +import json +import re +import sys + + +def convert(doc, rtype): + items = [] + for block in doc['content']: + if block['type'] == 'table': + skipped_first_row = False + for row in block['content']: + if not skipped_first_row: + skipped_first_row = True + continue + + cells = row['content'] + + if content := cells[0]['content'][0].get('content'): + label_en = content[0]['text'] + else: + continue + + ( + definition_en, scopenote_en, related_en, altlabel_en + ) = extract_properties(cells[1]) + + + label_sv = None + if content := cells[2]['content'][0].get('content'): + label_sv = content[0].get('text') + + ( + definition_sv, scopenote_sv, related_sv, altlabel_sv + ) = extract_properties(cells[3]) + + matches = [] + linkcells = set() + for cell in cells[4:]: + for p in cell['content']: + if content := p.get('content'): + for block in [p] + content: + for mark in block.get('marks', []): + if mark['type'] == 'link': + matches.append({'@id': mark['attrs']['href']}) + linkcells.add(id(cell)) + + notes = [] + for cell in cells[4:]: + if id(cell) in linkcells: + continue + for p in cell['content']: + if content := p.get('content'): + notes.append(clean(''.join( + x.get('text') or ('\n' if x['type'] == 'hard_break' else ' ') + for x in content + ))) + + ref = None + if content := find_with_content(cells[0]['content'])[-1].get('content'): + for mark in content[0]['marks']: + ref = mark['attrs'].get('href') + if ref: + break + + id_label = clean(label_en) or clean(label_sv) + + r_id = label_to_slug(id_label) + + # NOTE: related_sv is probably superfluous + # (those labels *should* already be on the targets) + related = [ + {"@id": label_to_slug(label)} + for label in related_en + ] + + item = { + "@id": r_id, + "@type": rtype, + "prefLabel_en": clean(label_en), + "prefLabel_sv": clean(label_sv), + "altLabel_en": clean(altlabel_en), + "altLabel_sv": clean(altlabel_sv), + "definition_en": clean(definition_en), + "definition_sv": clean(definition_sv), + "scopeNote_en": clean(scopenote_en), + "scopeNote_sv": clean(scopenote_sv), + "related": related, + "exactMatch": {"@id": ref} if ref else None, + "closeMatch": matches, + "note": notes + } + items.append(item) + + return {item['@id']: item for item in items} + + +def extract_properties(cell): + definition = None + # "Scope Note:" + scopenote = None + # "Related Terms:" (bullet list) + related = [] + # "Synonyms:" + altlabel = None + + next_is = None + + for p in cell['content']: + if content := p.get('content'): + text = ''.join(t for x in content if (t := x.get('text'))) + if definition is None: + definition = text + elif next_is == 'synonyms': + altlabel = text + next_is = None + elif next_is == 'scope note': + scopenote = text + next_is = None + elif next_is == 'related terms': + if text: + related.append(text) + else: + assert p['type'] == 'bullet_list' + items = [ + y['text'] + for li in content + for x in li['content'] + for y in x['content'] + ] + related += items + next_is = None + else: + for next_is in ['scope note', 'synonyms', 'related terms']: + if next_is in text.lower(): + break + else: + next_is = None + + return definition, scopenote, related, altlabel + + +def find_with_content(items): + return [item for item in items if 'content' in item] + + +def to_type(fname): + fname = fname.rsplit('/')[-1].rsplit('.')[0] + return re.sub(r'\W', '', fname.title().replace(' ', '')) + + +def label_to_slug(label): + return quote(label.title().replace(' ', '').replace('-', '')) + + +def clean(s): + if s is None: + return None + + s = s.replace(chr(160), ' ').strip() + if not s: + return None + + return s[0].upper() + s[1:] + + +def main(): + result_map = {} + + def convert_and_add_results(source, fname): + if not (doc := source.get('doc')) or 'content' not in doc: + return + + results = convert(doc, to_type(fname)) + for key, item in results.items(): + if dup := result_map.get(key): + print( + '#', + f"Duplicate on {key}:", + dup['@type'], + "and", + item['@type'], + file=sys.stderr + ) + result_map.update(results) + + for fname in sys.argv[1:]: + if fname.endswith('.zip'): + with ZipFile(fname) as zipfile: + for zfname in zipfile.namelist(): + with zipfile.open(zfname) as zf: + source = json.load(zf) + convert_and_add_results(source, zfname) + else: + with open(fname) as f: + source = json.load(f) + convert_and_add_results(source, fname) + + doc = { + "@context": { + "@vocab": "https://id.kb.se/vocab/", + "@base": "https://id.kb.se/term/rda/", + "prefLabel_sv": {"@id": "prefLabel", "@language": "sv"}, + "prefLabel_en": {"@id": "prefLabel", "@language": "en"}, + "definition_sv": {"@id": "definition", "@language": "sv"}, + "definition_en": {"@id": "definition", "@language": "en"}, + "altLabel_sv": {"@id": "altLabel", "@language": "sv"}, + "altLabel_en": {"@id": "altLabel", "@language": "en"}, + "scopeNote_sv": {"@id": "scopeNote", "@language": "sv"}, + "scopeNote_en": {"@id": "scopeNote", "@language": "en"}, + }, + "@graph": list(result_map.values()) + } + + print(json.dumps(doc, indent=2, ensure_ascii=False)) + + +if __name__ == '__main__': + main() diff --git a/source/apps.jsonld b/source/apps.jsonld index 87f9309ea..ed2455212 100644 --- a/source/apps.jsonld +++ b/source/apps.jsonld @@ -36,7 +36,9 @@ { "dimensionChain": ["inScheme"], "itemLimit": 100 }, { "dimensionChain": ["inCollection"], "itemLimit": 100 }, { "dimensionChain": ["genreForm"], "itemLimit": 100 }, + { "dimensionChain": ["category"], "itemLimit": 100 }, { "dimensionChain": ["instanceOf", "genreForm"], "itemLimit": 100 }, + { "dimensionChain": ["instanceOf", "category"], "itemLimit": 100 }, { "dimensionChain": ["contentType"], "itemLimit": 100 }, { "dimensionChain": ["nationality"], "itemLimit": 100 }, { "dimensionChain": ["language"], "itemLimit": 100 }, @@ -46,8 +48,7 @@ { "dimensionChain": ["intendedAudience"], "itemLimit": 100 }, { "dimensionChain": ["meta", "bibliography"], "itemLimit": 100 }, { "dimensionChain": ["concerning", {"inverseOfTerm": "itemOf"}, "heldBy"], "itemLimit": 1000, "connective": "OR", "_matchMissing": "concerning" }, - { "dimensionChain": ["concerning", "issuanceType"], "itemLimit": 100 }, - { "dimensionChain": ["category"], "itemLimit": 100, "connective": "OR", "_matchMissing": "category"} + { "dimensionChain": ["concerning", "issuanceType"], "itemLimit": 100 } ] } }, diff --git a/source/categories/carrierforms.ttl b/source/categories/carrierforms.ttl new file mode 100644 index 000000000..383a6273c --- /dev/null +++ b/source/categories/carrierforms.ttl @@ -0,0 +1,194 @@ +prefix rdfs: +prefix owl: +prefix ptg: +prefix skos: + +prefix : + +prefix marc: +prefix kbrda: +prefix saogf: + +prefix ktg: + + +ktg:PhysicalForm a :Category ; + ptg:abstract true . + + +# TODO: Printed vs. Handmade as mixins for precoordinated (7x7)? +ktg:Print a :Category; + skos:exactMatch marc:Print ; + skos:broader :Unmediated . + +# Untenable(?): Handwritten / Typewritten / Photocopied => Purpose (Genre) OR Manufacture/Production +ktg:Handwritten a :Category; skos:broader :Unmediated . +ktg:Typewrittten a :Category; skos:broader :Unmediated . + +ktg:Manuscript a :Category ; # NOTE: the type changed to Work in BF; this is about the carrier/production form. + skos:broader ktg:Handwritten . + +# mer extraordinärt? Sitter på exemplar? +#ktg:Photocopied a :Category; skos:broader kbrda:Unmediated ; skos:related marc:RegularPrintReproduction . + +# fmt:LargeText a :Format ? + +#ktg:MassProducedVolume a :Category ; +# rdfs:subClassOf ktg:MassProduced, kbrda:Volume . +# +#ktg:RareVolume a :Category ; +# rdfs:subClassOf ktg:Rare, kbrda:Volume . + + +ktg:PrintedVolume a :Category ; + skos:broadMatch ktg:Print, kbrda:Volume ; + rdfs:label "Tryckt volym"@sv , "Printed Volume"@en . + +#ktg:HardcoverVolume a :Category; +# skos:broader ktg:PrintedVolume . +# +#ktg:PaperbackVolume a :Category; +# skos:broader ktg:PrintedVolume . + + +ktg:PrintedSheet a :Category ; + skos:broader ktg:Print, kbrda:Sheet . + +ktg:HandmadeSheet a :Category ; + skos:broader kbrda:Unmediated, kbrda:Sheet . + + +ktg:PhysicalObject a :Category ; # :UnmediatedObject ? + skos:exactMatch kbrda:Object ; + skos:broader kbrda:Unmediated . + + +# TODO: Lift these from marc to KBV? +# If so we need a clear delineation between "braille notation" and "to be experienced with touch". +#ktg:TactileForm a :Category ; +# skos:broader kbrda:Unmediated ; +# rdfs:subClassOf [ +# owl:onProperty :format ; +# owl:someValuesFrom :TactileMaterial ] . + +ktg:BrailleForm a :Category ; + skos:exactMatch marc:Braille, marc:TextMaterialType-c ; + skos:broader ktg:TactileForm, ktg:Print . + +ktg:BrailleVolume a :Category ; + skos:broader ktg:BrailleForm, kbrda:Volume ; + skos:exactMatch saogf:Punktskriftsb%C3%B6cker . +# :prefLabel "Punktskriftsvolym"@sv, "Braille Volume"@en . + + +# "Mediated" + +# TODO: other StorageMedium? Magnetic / Optical / Mechanical ? +ktg:StorageMedium a :Category ; + ptg:abstract true ; + skos:broader ktg:PhysicalForm ; + rdfs:label "Lagringsmedium"@sv , "StorageMedium"@en . + + +ktg:TapeCartridge a :Category ; + skos:broader ktg:StorageMedium ; + ptg:abstract true ; + skos:exactMatch marc:TapeCartridge . + +ktg:TapeCassette a :Category ; + skos:broader ktg:StorageMedium ; + ptg:abstract true ; + skos:exactMatch marc:TapeCassette . + +ktg:TapeReel a :Category ; + ptg:abstract true ; + skos:broader ktg:StorageMedium ; + skos:exactMatch marc:TapeReel . + +ktg:MagneticDisk a :Category ; + skos:exactMatch marc:MagneticDisk ; + skos:broader ktg:StorageMedium . + +ktg:MagnetoOpticalDisc a :Category ; + skos:exactMatch marc:MagnetoOpticalDisc ; + skos:broader ktg:StorageMedium . + +ktg:OpticalReel a :Category ; + ptg:abstract true ; + skos:broader ktg:StorageMedium . + +ktg:OpticalDisc a :Category ; + skos:exactMatch marc:OpticalDisc ; + skos:broader ktg:StorageMedium . # ktg:ElectronicStorageMedium ? + +ktg:CDBook a :Category ; + skos:broadMatch ktg:ComputerDisc, kbrda:AudioDisc ; + :singularLabel "CD-bok"@sv . + + +# Multimedia AudioBook + WrittenBook Bundle ? + +#:Disc +#:CD (:Material) +#:DVD (:Material) + +# Combinations: +#CDMap +#ESerial +#Music (Genre) +#MusicCD + + +ktg:AbstractElectronic a :Category ; + ptg:abstract true ; + skos:closeMatch marc:Electronic ; + rdfs:comment "A digital or electronically mediated resource."@en . + +ktg:DigitalForm a :Category ; + skos:broader ktg:AbstractElectronic ; + rdfs:label "Digital resurs"@sv , "Digital Resource"@en ; + rdfs:comment 'Kallas ibland "E-resurs"'@sv . + +ktg:EBook a :Category ; + skos:broadMer ktg:DigitalForm ; + :singularLabel "E-bok"@sv . + + +ktg:ElectronicStorageMedium a :Category ; + ptg:abstract true ; + skos:closeMatch kbrda:Computer ; + skos:exactMatch marc:DirectElectronic ; + skos:broader ktg:StorageMedium , + ktg:AbstractElectronic ; # Kallas ibland "Elektronisk bärare". + rdfs:label "Elektroniskt lagringsmedium"@sv , "StorageMedium"@en . + +ktg:StandaloneDevice a :Category ; + skos:exactMatch marc:StandaloneDevice ; + skos:broader ktg:ElectronicStorageMedium, ktg:PhysicalObject . + + +# TODO: Is the media type aspect superfluous if content is on the work? +# Or is the *unit for device capable of sound* encoded here (as "mode" of provisioning, not the "purpose" thereof)? +# See also accesibility concerns. + +ktg:SoundStorageMedium a :Category ; + owl:sameAs kbrda:SoundRecording ; + ptg:abstract true ; + skos:exactMatch kbrda:Audio ; + skos:broader ktg:StorageMedium ; + rdfs:label "Audio"@sv, "Audio"@en . + +# Zero uses in Libris... +ktg:AudioWireRecording a :Category ; + skos:exactMatch marc:WireRecording . + +ktg:VideoStorageMedium a :Category ; + owl:sameAs :VideoRecording ; + ptg:abstract true ; + skos:exactMatch kbrda:Video, marc:Videorecording ; + skos:broader ktg:StorageMedium ; + rdfs:label "Lagringsmedium för video"@sv, "Video Storage Medium"@en . + +ktg:Microfilm a :Category ; + skos:exactMatch marc:Microfilm ; + skos:broader kbrda:Microform . diff --git a/source/categories/contentforms.ttl b/source/categories/contentforms.ttl new file mode 100644 index 000000000..4a1e525a0 --- /dev/null +++ b/source/categories/contentforms.ttl @@ -0,0 +1,43 @@ +prefix : +prefix rdfs: +prefix skos: + +prefix marc: +prefix saogf: +prefix tgm: +prefix kbrda: +prefix div: +prefix ktg: + +# Base Category or ContentType applying to an *Expression*. + +# TODO: +# - Replace Category with ContentType and merge into ? +# - Some RDA terms have broader Genre terms! +# - Some are "SensoryForm" super-ContentType:s... +# - Is there a sometimes necessary distinction between "contains" and "is"? If so, we reasonably should say that using a concrete GenreForm... + +ktg:Visual a :Category ; + :inCollection div:sensoryform . + +ktg:Audio a :Category ; + :inCollection div:sensoryform . + +ktg:Tactile a :Category ; + :inCollection div:sensoryform ; + skos:closeMatch saogf:Taktila%20verk ; + skos:prefLabel "Taktil"@sv . + +ktg:MovingImage a :Category ; + skos:broader ktg:Visual . + +ktg:Dataset a :Category . + +ktg:Object a :Category . + +ktg:StillImage a :Category ; + skos:broader ktg:Visual ; + skos:closeMatch saogf:Bilder, tgm:Bilder, marc:Picture . + +ktg:Movement a :Category ; + skos:prefLabel "Rörelser"@sv . diff --git a/source/categories/contentgenres.ttl b/source/categories/contentgenres.ttl new file mode 100644 index 000000000..524862a8a --- /dev/null +++ b/source/categories/contentgenres.ttl @@ -0,0 +1,394 @@ +prefix rdfs: +prefix skos: +prefix bibo: + +prefix : +prefix marc: +prefix div: + +prefix saogf: +prefix kbrda: +prefix marcgt: + +prefix g: +prefix gf: +prefix ktg: + +# It is a Genre if: +# - it is independent of any expression category (it is "topical", "thematic", "style/method", and/or "purpose"). + +# TODO: The plan is to add matching SAOGF terms for *all* in this file; and possibly remove these indirect terms ... +# To find missing: +# - select ?gf { ?x ?rel ?gf filter( strstarts(str(?gf), str(saogf:)) || strstarts(str(?gf), str(tgm:)) ) } + +# TODO: There are some "too concrete" GenreForm candidates left: +# - construct { ?x skos:broader ?y } { ?x skos:broader|skos:broadMatch ?y . filter exists { ?x a :Genre . ?y a :GenreForm } } + +# TODO: For some, do we want to *suggest* an expression category (see commented kbgf)? (Using skos:relatedMatch?) + +g:Fiction a :Genre ; + skos:broader g:Literature ; + skos:closeMatch marc:Fiction . # 84678 # (SSB) # NOTE: only Audio(?) + +g:LinguisticWork a :Genre ; + skos:altLabel "Literature"@en , + "Litteratur"@sv ; + skos:prefLabel "Linguistic work"@en , + "Språkligt verk"@sv . + +g:Literature a :Genre ; + skos:broader g:LinguisticWork ; + #skos:broader kbrda:Text ; + :singularLabel "Litteratur"@sv , + "Literature"@en . + +#saogf:Litteraturtidskrifter skos:broader g:Literature . + +g:LiteraryFiction a :Genre ; + skos:broader g:Literature , g:Fiction ; + skos:exactMatch saogf:Sk%C3%B6nlitteratur ; + skos:closeMatch marc:FictionNotFurtherSpecified . # 573355 # (SSB) + +g:Cartography a :Genre ; + skos:closeMatch saogf:Kartor ; + :singularLabel "Kartografiskt material"@sv . + +g:Music a :Genre . + +g:Manuscript a :Genre . + +g:Software a :Genre ; + skos:prefLabel "Mjukvara"@sv , + "Software"@en . + +g:Multimedia a :Genre ; + skos:broader g:Software . + +g:Integrating a :Genre ; + skos:broader g:CollectingResource . + +g:AbstractSummary a :Genre ; + skos:broader gf:TextPiece ; + skos:exactMatch saogf:Sammanfattningar ; + :inCollection div:informative-work ; + rdfs:seeAlso ; + :singularLabel "Sammanfattning"@sv , + "Abstract Summary"@en . + +g:Almanac a :Genre ; + skos:broader g:ReferenceWork ; # inte alltid gf:WorkWithImages ; + skos:related g:SerialPublication ; # TODO: + skos:exactMatch saogf:Almanackor ; + :singularLabel "Almanacka"@sv , + "Almanac"@en . + +g:Calendar a :Genre ; + skos:broader g:ReferenceWork ; # inte alltid gf:WorkWithImages ; + skos:exactMatch saogf:Kalendrar ; + :singularLabel "Kalender"@sv , + "Calendar"@en . + +g:Catalogue a :Genre ; + skos:broader g:ReferenceWork ; + skos:exactMatch saogf:Kataloger ; + :singularLabel "Katalog"@sv , + "Catalogue"@en . + +g:CollectingResource a :Genre ; + :singularLabel "Samlande resurs"@sv . + +g:Archive a :Genre ; + skos:broader g:CollectingResource , saogf:Arkiv ; + :singularLabel "Arkiv"@sv , + "Archive"@en . + +g:MonographicSeries a :Genre ; + skos:broader g:CollectingResource ; + skos:exactMatch marc:MonographicSeries ; + :singularLabel "Monograph Series"@en , + "Monografiserie"@sv . + +g:CollectedWork a :Genre ; + skos:broader g:CollectingResource ; + # TODO: CollectedPart vs. CollectingWork! Cf. bibo:CollectedDocument, bibo:MultiVolumeBook, ktg:MultipartBook + skos:exactMatch saogf:Samlingsverk ; + :singularLabel "Samlingsverk"@sv , + "Collected Work"@en . + +g:ConferenceMaterial a :Genre ; + skos:exactMatch saogf:Konferensmaterial ; + :inCollection div:ephemera , + div:informative-work ; + :singularLabel "Konferensmaterial"@sv , + "Conference Material"@en . + +g:ControlledVocabulary a :Genre ; + skos:broader g:ReferenceWork ; + skos:exactMatch saogf:Kontrollerade\%20vokabul\%C3\%A4rer ; + :singularLabel "Kontrollerad vokabulär"@sv , + "Controlled Vocabulary"@en . + +g:CourseMaterial a :Genre ; + skos:broader g:TeachingMaterial ; + skos:exactMatch saogf:Kursmaterial ; + :inCollection div:ephemera ; + :singularLabel "Kursmaterial"@sv , + "Course Material"@en . + +g:Encyclopedia a :Genre ; + skos:broader g:ReferenceWork, gf:Book ; + skos:exactMatch saogf:Encyklopedier ; + :singularLabel "Encyklopedia"@sv , + "Encyclopedia"@en . + +g:FindingAid a :GenreForm ; + skos:prefLabel "finding aid"@en ; + skos:closeMatch marcgt:fin . + +g:Juridiskt%20material a :Genre ; + skos:exactMatch saogf:Juridiskt%20material . + +g:TeachingMaterial a :Genre ; + rdfs:seeAlso ; + skos:exactMatch saogf:L\%C3\%A4romedel , + saogf:Instruktions-\%20och\%20undervisningsmaterial ; + skos:closeMatch marc:ProgrammedText ; + :singularLabel "Instruktions- och undervisningsmaterial"@sv , + "Teaching Material"@en ; + skos:altLabel "Läromedel"@sv . + +g:HandSignedCommunication a :Genre ; + #skos:broadMatch ktg:Visual, kbgf:Text ; + skos:exactMatch saogf:TAKK ; + :singularLabel "TAKK"@sv , + "Hand-signed Communication"@en . + +g:Novel a :Genre ; + skos:broader g:Literature ; + skos:broadMatch gf:Book ; + skos:exactMatch saogf:Romaner ; + skos:closeMatch marc:Novel ; + :singularLabel "Roman"@sv , + "Novel"@en . + +g:Periodical a :Genre ; + skos:broader g:CollectingResource ; + skos:exactMatch saogf:Periodika ; + skos:altLabel "Periodika"@sv ; + rdfs:label "Tidskrift"@sv , + "Periodical"@en ; + :pluralLabel "Tidskrifter"@sv . + +g:SerialPublication a :Genre ; + skos:exactMatch saogf:Seriella%20publikationer ; + skos:broader g:CollectingResource . + +g:Journal a :Genre ; + skos:broader g:Periodical ; + skos:closeMatch marcgt:jou ; + :singularLabel "Vetenskaplig tidskrift"@sv , + "Journal"@en . + +g:Lecture a :Genre ; + skos:broader g:TeachingMaterial ; + skos:exactMatch saogf:F\%C3\%B6rel\%C3\%A4sningar ; + :singularLabel "Föreläsning"@sv , + "Lecture"@en . + +g:Magazine a :Genre ; + skos:broader g:Periodical ; + :singularLabel "Magasin"@sv , + "Magazine"@en . + +g:NewsLetter a :Genre ; + skos:broader g:SerialPublication ; + skos:exactMatch saogf:Nyhetsbrev ; + :inCollection div:ephemera ; + :singularLabel "Nyhetsbrev"@sv , + "Newsletter"@en . + +g:Newspaper a :Genre ; + skos:broader g:Periodical ; + skos:exactMatch saogf:Dagstidningar ; + :singularLabel "Dagstidning"@sv , + "Newspaper"@en ; + :pluralLabel "Dagstidningar"@sv . + +g:Register a :Genre ; + skos:broader g:CollectingResource ; + skos:exactMatch saogf:F\%C3\%B6rteckningar ; + :singularLabel "Förteckning"@sv , + "Register"@en . + +g:PuzzleOrGame a :Genre ; + skos:exactMatch saogf:Spel\%20och\%20tanken\%C3\%B6tter ; + rdfs:label "Spel eller tankenötter"@sv , + "Puzzle or game"@en . + +g:RolePlayingGame a :Genre ; + skos:broader g:PuzzleOrGame ; + skos:exactMatch saogf:Rollspel ; + :singularLabel "Rollspel"@sv , + "Roleplaying Game"@en . + +g:Statistics a :Genre ; + skos:broader g:ReferenceWork ; + skos:exactMatch saogf:Statistik ; + :singularLabel "Statistik"@sv , + "Statistics"@en . + +g:Tables a :Genre ; + skos:broader g:ReferenceWork ; + skos:exactMatch saogf:Tabeller ; + skos:related ktg:Dataset ; + :singularLabel "Tabell"@sv , + "Tables"@en . + +g:Ephemera a :Genre ; + skos:exactMatch saogf:Efem%C3%A4rt%20material ; + skos:prefLabel "Efemärt material"@sv . + +g:Timetable a :Genre ; + skos:broader g:Tables , + g:Ephemera ; + skos:exactMatch saogf:Tidtabeller ; + :singularLabel "Tidtabell"@sv , + "Timetable"@en . + + +#g:Patent +# :singularLabel "Patent"@sv, "Patent"@en . + +#g:LegalDocument +# :singularLabel "Juridiskt material"@sv, "Legal Document"@en . + +#g:LegalDocument a :Genre ; +# skos:broader kbrda:Text ; +# skos:exactMatch saogf:Juridiskt\%20material . + +#g:Leporello a :Genre ; +# skos:broader ktg:NonBookTextWithImages ; +# skos:exactMatch saogf:Leporello . + +g:Patent a :Genre ; + #skos:broader kbrda:Text ; + skos:exactMatch saogf:Patent ; + :inCollection div:informative-work . + +#g:RareText skos:exactMatch saogf:Texter . + +#g:Debate a :Genre ; +# skos:broader gf:TextPiece ; +# skos:exactMatch saogf:Debatter . + +#g:AdventCalendar a :Genre ; +# skos:exactMatch saogf:Adventskalendrar ; +# skos:broader g:Calendar . + +#g:ReligiousWork a :Genre ; +# skos:exactMatch saogf:Religi\%C3\%B6sa\%20verk . + +#g:Biography a :Genre ; +# skos:exactMatch saogf:Biografier . + +#g:Essay a :Genre ; +# skos:exactMatch saogf:Ess\%C3\%A4er . + +#g:CommemorativeWork a :Genre; +# skos:exactMatch saogf:Minnesbevarande\%20verk . + +#g:Debattinlägg a :Genre; +# skos:exactMatch saogf:Debattinl\%C3\%A4gg . + +#g:Examination a :Genre; +# skos:exactMatch saogf:Prov\%20och\%20examinationer . + +#g:PressAnnouncement a :Genre; +# skos:exactMatch saogf:Pressmeddelanden . + +#g:Samhällsinformation a :Genre; +# skos:exactMatch saogf:Samh\%C3\%A4llsinformation . + +#g:Chronicle a :Genre; +# skos:exactMatch saogf:Annaler\%20och\%20kr\%C3\%B6nikor . + +#g:Recept a :Genre; +# skos:exactMatch saogf:Recept . + +#g:RethoricalSpeech a :Genre ; +# skos:exactMatch saogf:Tal\%20\%28retorik\%29 . + +#g:SourceMaterial a :Genre ; +# skos:exactMatch saogf:K\%C3\%A4llmaterial ; +# :inCollection div:informative-work . + +#g:RecreationalWork a :Genre ; +# skos:exactMatch saogf:Tidsf\%C3\%B6rdriv . + +#g:DiscursiveWork a :Genre ; +# skos:closeMatch saogf:Verk\%20med\%20samtalsliknande\%20karakt\%C3\%A4r . + +g:Interview a :Genre ; + skos:exactMatch saogf:Intervjuer . + +g:Reportage a :Genre ; + skos:exactMatch saogf:Reportage . + +#g:Survey a :Genre ; +# skos:exactMatch saogf:Unders\%C3\%B6kningar ; +# :inCollection div:informative-work . + +#g:Correspondence a :Genre ; +# skos:exactMatch saogf:Korrespondens . + +#g:Diary a :Genre ; +# skos:broader kbrda:Text ; +# skos:exactMatch saogf:Dagb\%C3\%B6cker . + +#g:Ballad a :Genre ; +# skos:closeMatch saogf:Visor . + +g:ShortStory a :Genre ; + skos:broader gf:TextPiece , + g:Literature ; + skos:exactMatch saogf:Noveller ; + :singularLabel "Novell"@sv , + "Short Story"@en . + +g:Offentligt_tryck a :Genre ; + # skos:broader kbrda:Text ; (... could be images; but rarely *only* with image?) + skos:exactMatch saogf:Offentligt%20tryck . + +g:ReferenceWork a :Genre ; + #skos:broader kbrda:Text ; + skos:exactMatch saogf:Referensverk ; + :inCollection div:informative-work ; + rdfs:seeAlso ; + :singularLabel "Referensverk"@sv , + "Reference Work"@en . + +g:Review a :Genre ; + #skos:broader gf:TextPiece ; + skos:exactMatch saogf:Recensioner ; + :singularLabel "Recension"@sv , + "Review"@en . + +g:Standard a :Genre ; + skos:broader g:ReferenceWork ; + skos:exactMatch saogf:Standarder ; + :singularLabel "Standard"@sv , + "Standard"@en . + +# from +g:ConferenceMaterial skos:closeMatch marc:ConferencePublication . +g:Statistics skos:closeMatch marc:Statistics . +g:Encyclopedia skos:closeMatch marc:Encyclopedia . +g:Catalogue skos:closeMatch marc:Catalog . +g:Calendar skos:closeMatch marc:Calendar . +g:Patent skos:closeMatch marc:PatentDocument . +g:ShortStory skos:closeMatch marc:ShortStory . +g:Review skos:closeMatch marc:Review . +g:Standard skos:closeMatch marc:StandardsSpecification . +g:Interview skos:closeMatch marc:Interview . +g:Newspaper skos:closeMatch marc:Newspaper . +g:Periodical skos:closeMatch marc:Periodical . diff --git a/source/categories/genreforms.ttl b/source/categories/genreforms.ttl new file mode 100644 index 000000000..a9cfe0d26 --- /dev/null +++ b/source/categories/genreforms.ttl @@ -0,0 +1,631 @@ +prefix rdfs: +prefix skos: + +prefix : +prefix marc: + +prefix saogf: +prefix tgm: +prefix barngf: +prefix kbrda: +prefix marcgt: + +prefix div: +prefix ktg: +prefix gf: +prefix g: + +# It is a GenreForm if it: +# - applies to an *Expression* (per ContentType/ContentForm); and +# - either: +# - incorporates a Genre (it adds a topical/thematic nuance), or +# - is an abstract workform shared by concrete GenreForm:s. + +gf:Book a :GenreForm ; + skos:closeMatch marcgt:boo ; + #skos:broader g:LinguisticWork ; + :inCollection div:workform . + +gf:WrittenBook a :GenreForm ; + :inCollection div:contentform ; + skos:broader kbrda:Text, gf:Book ; + skos:narrowMatch barngf:Kapitelb%C3%B6cker ; + :singularLabel "Written book"@en , + "Skriven bok"@sv ; + skos:altLabel "Bok"@sv, "Book"@en . + +gf:Audiobook a :GenreForm ; + :inCollection div:contentform ; + skos:broader ktg:Audio , + gf:Book ; + skos:exactMatch saogf:Ljudb%C3%B6cker ; + :singularLabel "Ljudbok"@sv , + "Audiobook"@en . + +gf:TextPiece a :GenreForm ; # gf:Document ?? + :inCollection div:contentform ; + skos:broader kbrda:Text ; + skos:prefLabel "Text piece"@en , + "Kortare text"@sv . # "Textdel"@sv, "Textenhet"@sv . + +gf:WorkWithImages a :GenreForm ; # ktg:IllustratedWork + :inCollection div:contentform ; + skos:broader ktg:StillImage ; + skos:closeMatch saogf:Bildverk . # saogf:Illustrerade%20verk + +gf:TextWithImages a :GenreForm ; + :inCollection div:contentform ; + skos:broader kbrda:Text , gf:WorkWithImages ; + rdfs:label "Text med bilder"@sv , + "Text With Images"@en . + +gf:WrittenBookWithImages a :GenreForm ; + :inCollection div:contentform ; + skos:broader gf:WrittenBook , gf:WorkWithImages ; + skos:scopeNote "Gör ingen skillnad mellan bilder som är integral del av verket (där nya bilder är ett nytt verk) och texter där bilderna är kompletterande (). Sådana skillnader kan anges som genre/form."@sv ; + skos:narrowMatch barngf:Bilderb%C3%B6cker ; + :singularLabel "Bok med bilder"@sv , + "Book with Images"@en . + +gf:Database a :GenreForm ; + :inCollection div:workform ; + skos:broader g:Integrating, kbrda:ComputerDataset ; + skos:exactMatch saogf:Databaser ; + skos:narrowMatch marc:UpdatingDatabase ; + :singularLabel "Databas"@sv , + "Database"@en . + +#gf:TactileBook a :GenreForm ; +# :inCollection div:contentform ; +# skos:broader gf:Book , +# ktg:Tactile ; +# skos:editorialNote "TODO: differentiate between \"filtbok\" och \"punktskriftsbok\"?"@en ; +# skos:broadMatch kbrda:TactileText ; +# skos:narrowMatch saogf:Punktskriftsb%C3%B6cker ; +# :singularLabel "Tactile Book"@en , +# "Taktil bok"@sv . + +#-- + +gf:Poster a :GenreForm ; + skos:broader ktg:StillImage ; + skos:exactMatch saogf:Affischer ; + :singularLabel "Affisch"@sv, "Poster"@en ; + :pluralLabel "Affischer"@sv . + +gf:Issue a :GenreForm ; + skos:broader gf:TextPiece ; + skos:exactMatch ; + skos:closeMatch marcgt:iss ; + :singularLabel "Tidskriftsnummer"@sv , + "Periodical Issue"@en . + +#gf:JournalIssue a :GenreForm ; +# skos:broader gf:Issue ; +# skos:broadMatch g:Journal ; +# :singularLabel "Vetenskapstidskriftssnummer"@sv , +# "Journal Issue"@en . + +#gf:MagazineIssue a :GenreForm ; +# skos:broader gf:Issue ; +# skos:broadMatch g:Magazine ; +# :singularLabel "Magasin-nummer"@sv , +# "Magazine Issue"@en . + +#gf:NewspaperIssue a :GenreForm ; +# skos:broader gf:Issue ; +# skos:broadMatch g:Newspaper ; +# :singularLabel "Dagstidningsnummer"@sv , +# "Newspaper Issue"@en . + +gf:Film a :GenreForm ; + skos:broader ktg:MovingImage ; + skos:closeMatch marcgt:art ; + skos:exactMatch saogf:Filmer ; + :singularLabel "Film"@sv , + "Film"@en . + +gf:Article a :GenreForm ; + skos:broader gf:TextPiece ; + :singularLabel "Artikel"@sv , + "Article"@en . + +gf:AudioProgram a :GenreForm ; + skos:broader kbrda:Sounds ; + rdfs:label "Ljudprogram"@sv , + "Audio Program"@en . + +g:Radio a :GenreForm ; + skos:broader ktg:Audio ; + skos:prefLabel "Radio"@sv, "Radio"@en . + +g:TV a :GenreForm ; + skos:broader ktg:MovingImage ; + skos:prefLabel "TV"@sv, "TV"@en . + +gf:PictureBook a :GenreForm ; + skos:exactMatch barngf:Bilderb%C3%B6cker ; + skos:broader gf:WrittenBookWithImages ; + :singularLabel "Bilderbok"@sv , + "Picture Book"@en . + +gf:ChapterBook a :GenreForm ; + skos:exactMatch barngf:Kapitelb%C3%B6cker ; + skos:broader gf:WrittenBookWithImages . + +gf:BoardGame a :GenreForm ; + skos:broader gf:InteractiveObject , g:PuzzleOrGame ; + skos:exactMatch ; + rdfs:label "Brädspel"@sv , + "Boardgame"@en . + +gf:Brochure a :GenreForm ; + skos:broader gf:TextPiece ; + skos:exactMatch ; + rdfs:label "Broschyr"@sv , + "Brochure"@en . + +gf:Comic a :GenreForm ; + skos:broader gf:GraphicLiterature ; + skos:altLabel "Tecknad serie"@sv ; + skos:broadMatch saogf:Tecknade%20serier , + barngf:Tecknade%20serier ; + skos:exactMatch saogf:Serietidningar ; + rdfs:label "Serietidning"@sv , + "Comic"@en . + +g:ComicStory a :GenreForm ; + skos:broader gf:Comic, g:ShortStory ; + skos:narrowMatch saogf:Serienoveller ; + :singularLabel "Serienovell"@sv , + "Comic Story"@en . + +gf:ComputerCode a :GenreForm ; + skos:broader g:Software ; + rdfs:label "Datorkod"@sv , + "Computer Code"@en . + +gf:ComputerGame a :GenreForm ; + skos:broader g:PuzzleOrGame, kbrda:ComputerProgram ; + skos:exactMatch saogf:Datorspel ; + rdfs:label "Datorspel"@sv , + "Computer Game"@en . + +gf:DesignDrawing a :GenreForm ; + skos:broader ktg:StillImage ; + skos:exactMatch tgm:Ritningar ; # sao:Ritningar + rdfs:label "Ritning"@sv , + "Design drawing"@en . + +gf:Diagram a :GenreForm ; + skos:broader ktg:StillImage ; + skos:exactMatch saogf:Diagram ; + rdfs:label "Diagram"@sv , + "Diagram"@en . + +gf:Drawing a :GenreForm ; + skos:broader ktg:StillImage, g:Manuscript ; + skos:exactMatch tgm:Teckningar ; + :singularLabel "Teckning"@sv , + "Drawing"@en . + +gf:FormDocument a :GenreForm ; + rdfs:seeAlso ; + skos:broader gf:TextPiece ; + skos:exactMatch saogf:Blanketter ; + rdfs:label "Blankett"@sv , + "Form Document"@en . + +gf:Handwriting a :GenreForm ; + skos:broader g:Manuscript , + kbrda:Text ; + skos:exactMatch saogf:Handskrifter ; + rdfs:label "Handskrift"@sv , + "Handwriting"@en ; + :pluralLabel "Handskrifter"@sv . + +gf:Illustration a :GenreForm ; + skos:broader ktg:StillImage ; + skos:exactMatch saogf:Illustrationer ; + rdfs:label "Illustration"@sv , + "Illustration"@en . + +gf:GraphicLiterature a :GenreForm ; + skos:broader gf:WorkWithImages , + g:Literature ; + skos:broadMatch kbrda:Text , + kbrda:StillImage ; + skos:exactMatch saogf:Tecknade%20serier ; + :singularLabel "Tecknad serie"@sv , + "Graphic Literature"@en . + +gf:GraphicNovel a :GenreForm ; + skos:broader g:Novel , + gf:WrittenBookWithImages , + gf:GraphicLiterature ; + skos:exactMatch saogf:Serieromaner ; + :singularLabel "Serieroman"@sv , + "Graphic Novel"@en . + +gf:InteractiveObject a :GenreForm ; + skos:broader ktg:Object ; + rdfs:label "Interaktivt objekt"@sv , + "InteractiveObject"@en . + +gf:Lexicon a :GenreForm ; + skos:broader g:ReferenceWork, gf:Book ; + skos:exactMatch saogf:Lexikon ; + :singularLabel "Lexikon"@sv , + "Lexicon"@en . + +gf:Manual a :GenreForm ; + skos:broader kbrda:Text , + g:TeachingMaterial ; + skos:closeMatch saogf:Handb\%C3\%B6cker\%2C\%20manualer\%20etc ; + rdfs:seeAlso ; + rdfs:label "Manual"@sv , + "Manual"@en . + +gf:Note a :GenreForm ; + skos:broader gf:TextPiece ; + skos:exactMatch saogf:Anteckningar . + +gf:Script a :GenreForm ; + skos:broader kbrda:Text ; + skos:prefLabel "script"@en ; + skos:closeMatch marcgt:scr . + +gf:Screenplay a :GenreForm ; + skos:broader gf:Script ; + skos:exactMatch saogf:Filmmanus ; + :singularLabel "Filmmanus"@sv , + "Screenplay"@en . + +gf:MechanicalBook a :GenreForm ; + skos:exactMatch saogf:Mekaniska\%20b\%C3\%B6cker ; + skos:broader gf:InteractiveObject , + gf:WrittenBook ; + rdfs:label "Mekanisk bok"@sv , + "Mechanical Book"@en . + +gf:MusicRadioProgram a :GenreForm ; + skos:broader gf:AudioProgram , + kbrda:PerformedMusic ; + :singularLabel "Musikradioprogram"@sv , + "Music Radio Program"@en . + +gf:MusicRecording a :GenreForm ; + skos:broader kbrda:PerformedMusic ; + skos:exactMatch saogf:Musikinspelningar ; + :singularLabel "Musikinspelning"@sv , + "Music Recording"@en . + +gf:SoundEffectBook a :GenreForm ; + skos:broader gf:MechanicalBook, ktg:Audio ; + skos:exactMatch saogf:B\%C3\%B6cker\%20med\%20ljudeffekter ; + :singularLabel "Bok med ljudeffekt"@sv , + "Sound-effect Book"@en . + +gf:Pamphlet a :GenreForm ; + skos:broader gf:Brochure ; + skos:exactMatch saogf:Pamfletter ; + :inCollection div:ephemera ; + :singularLabel "Pamflett"@sv , + "Pamphlet"@en . + +gf:Podcast a :GenreForm ; + skos:broader gf:AudioProgram, kbrda:SpokenWord ; + :singularLabel "Podcast"@sv , + "Podcast"@en . + +gf:Photograph a :GenreForm ; + skos:broader ktg:StillImage ; + skos:exactMatch saogf:Fotografier, tgm:Fotografier ; + :singularLabel "Fotografi"@sv , + "Photograph"@en ; + :pluralLabel "Fotografier"@sv . + +gf:Painting a :GenreForm ; + skos:broader ktg:StillImage ; + skos:exactMatch ; + rdfs:label "Målning"@sv , + "Painting"@en . + +gf:Photobook a :GenreForm ; + skos:broader gf:WrittenBookWithImages , + gf:Book ; + skos:exactMatch saogf:Fotob\%C3\%B6cker ; + rdfs:label "Fotobok"@sv , + "Photobook"@en . + +gf:Photoseries a :GenreForm ; + skos:broader gf:GraphicLiterature , + g:CollectingResource ; + skos:exactMatch saogf:Fotoserier ; + :singularLabel "Fotoserie"@sv , + "Photoseries"@en . + +gf:PictureDictionary a :GenreForm ; + skos:broader gf:WrittenBookWithImages , g:Lexicon ; + skos:exactMatch saogf:Bildlexikon ; + rdfs:label "Bildlexikon"@sv , + "Picture Dictionary"@en . + +gf:Postcard a :GenreForm ; + skos:broader ktg:StillImage ; + skos:exactMatch saogf:Vykort ; + rdfs:label "Vykort"@sv , + "Postcard"@en . + +gf:PostcardBook a :GenreForm ; + skos:broader gf:Book , gf:Postcard ; # not really *is*; works if category is "sort-of-is"... + skos:exactMatch . + +gf:PublicationProgramme a :GenreForm ; + skos:broader gf:TextPiece ; + skos:exactMatch saogf:Program\%20\%28publikationer\%29 ; + :singularLabel "Programblad"@sv , + "Publication Programme"@en . + +gf:Puzzle a :GenreForm ; + skos:broader gf:InteractiveObject, g:PuzzleOrGame ; + skos:exactMatch saogf:Pussel ; + rdfs:label "Pussel"@sv , + "Puzzle"@en . + +gf:RadioProgram a :GenreForm ; + skos:broader gf:AudioProgram, g:Radio ; + skos:exactMatch saogf:Radioprogram ; + :singularLabel "Radioprogram"@sv , + "Radio Program"@en . + +gf:RecordOrDeed a :GenreForm ; + skos:broader gf:TextPiece ; + skos:exactMatch saogf:Handlingar%20%28dokument%29 ; + :singularLabel "Handling (dokument)"@sv , + "Record (Document)"@en . + +gf:Sculpture a :GenreForm ; + skos:broader ktg:Object ; + rdfs:label "Skulptur"@sv , + "Sculpture"@en . + +gf:SpokenBook a :GenreForm ; + skos:broader gf:Audiobook , + kbrda:SpokenWord ; + skos:exactMatch saogf:Talb\%C3\%B6cker ; + rdfs:label "Talbok"@sv , + "Spoken Book"@en . + +gf:SpokenPaper a :GenreForm ; + skos:broader g:Periodical , + kbrda:SpokenWord ; + skos:exactMatch saogf:Taltidningar ; + rdfs:label "Taltidning"@sv , + "Spoken Paper"@en . + +gf:TVProgram a :GenreForm ; + skos:broader ktg:MovingImage, g:TV ; + skos:exactMatch saogf:Tv-program ; + rdfs:label "Tv-program"@sv , + "TV-Program"@en . + +gf:TVSeries a :GenreForm ; + skos:broader g:TV , + g:MonographicSeries ; + skos:exactMatch saogf:Tv-serier ; + rdfs:label "Tv-serie"@sv , + "TV-Series"@en . + +gf:Toy a :GenreForm ; + skos:broader gf:InteractiveObject ; + rdfs:label "Leksak"@sv , + "Toy"@en . + +gf:Trailer a :GenreForm ; + skos:broader gf:Film ; + skos:exactMatch saogf:Trailrar ; + rdfs:label "Trailer"@sv , + "Trailer"@en . + +gf:Website a :GenreForm ; + skos:broader kbrda:OnlineResource , + ktg:Integrating ; + skos:exactMatch saogf:Webbplatser ; + rdfs:label "Webbplats"@sv , + "Website"@en . + +gf:LooseLeaf a :GenreForm ; + skos:broader ktg:Integrating ; + rdfs:label "Lösblad"@sv , + "Loose-leaf"@en . + +g:Blog a :GenreForm ; + skos:broader gf:Website , + gf:TextPiece ; + skos:exactMatch saogf:Bloggar ; + :inCollection div:informative-work ; + :singularLabel "Blogg"@sv , + "Blog"@en . + +gf:Yearbook a :GenreForm ; + skos:exactMatch saogf:%C3%85rsb%C3%B6cker ; + skos:broader ktg:SerialPublication , + gf:Book . + +gf:PhraseBook a :GenreForm ; + skos:broader gf:Book ; + skos:exactMatch saogf:Parl%C3%B6rer . + +gf:Luck%C3%B6ppningskalendrar a :GenreForm ; + skos:broader ktg:Object ; + skos:exactMatch saogf:Luck%C3%B6ppningskalendrar ; + :singularLabel "Lucköppningskalender"@sv . + +gf:MiniatureBook a :GenreForm ; + skos:broader gf:Book ; + skos:exactMatch saogf:Miniatyrb%C3%B6cker . + +gf:PuzzleBook a :GenreForm ; + skos:broader gf:Book, g:PuzzleOrGame ; + skos:exactMatch saogf:Pysselb%C3%B6cker . + +gf:M%C3%A5larböcker a :GenreForm ; + skos:broader gf:WrittenBookWithImages ; + skos:exactMatch saogf:M%C3%A5larb%C3%B6cker ; + :singularLabel "Målarbok"@sv . + +gf:GuideBook a :GenreForm ; + skos:broader gf:WrittenBook ; + skos:exactMatch saogf:Guideb%C3%B6cker . + +gf:PopupBook a :GenreForm ; + skos:broader gf:WrittenBookWithImages, gf:MechanicalBook ; + skos:exactMatch saogf:Pop-up-b%C3%B6cker ; + :singularLabel "Pop-up-bok"@sv , + "Pop-up Book"@en . + +gf:Cookbook a :GenreForm ; + skos:broader gf:WrittenBook ; + skos:exactMatch saogf:Kokb%C3%B6cker . + +gf:DiningMenu a :GenreForm ; + skos:broader gf:TextPiece ; + skos:exactMatch saogf:Matsedlar . + +gf:DocumentaryComic a :GenreForm ; + :singularLabel "Dokumentär serie" ; + skos:broader gf:Comic ; + skos:exactMatch saogf:Dokument%C3%A4ra%20serier . + +gf:Map a :GenreForm ; + skos:broader kbrda:CartographicImage ; + skos:closeMatch marcgt:map ; + skos:exactMatch tgm:Kartor ; + :singularLabel "Single map"@en , + "Enskild karta"@sv . + +gf:Globe a :GenreForm ; + skos:broader kbrda:CartographicThreeDimensionalForm ; + skos:exactMatch tgm:Glober . + +gf:Atlas a :GenreForm ; + skos:broader kbrda:CartographicImage, gf:WrittenBook ; + skos:exactMatch marc:Atlas, tgm:Atlaser . + +# TODO: Define in saogf? And move these to marcmatches.ttl (to be remapped). +gf:TerrestrialGlobe a :GenreForm ; + skos:broader gf:Globe ; + skos:closeMatch marc:TerrestrialGlobe . + +gf:PlanetaryOrLunarGlobe a :GenreForm ; + skos:broader gf:Globe ; + skos:closeMatch marc:PlanetaryOrLunarGlobe . + +gf:CelestialGlobe a :GenreForm ; + skos:broader gf:Globe ; + skos:closeMatch marc:CelestialGlobe . + +gf:EarthMoonGlobe a :GenreForm ; + skos:broader gf:Globe ; + skos:closeMatch marc:EarthMoonGlobe . + +gf:Model a :GenreForm ; + skos:broader ktg:Object ; + skos:broadMatch marcgt:mod . + +gf:MapModel a :GenreForm ; + skos:broader gf:Model , kbrda:CartographicThreeDimensionalForm ; + skos:closeMatch marc:Model . + +gf:Section a :GenreForm ; + skos:broader gf:Map ; + skos:closeMatch marc:Section . + +gf:ProfileMap a :GenreForm ; + skos:broader gf:Map ; + skos:closeMatch marc:Profile . + +gf:MapATwoDimensionalMap a :GenreForm ; + skos:broader gf:Map ; + skos:exactMatch marc:MapATwoDimensionalMap . + +gf:MapDiagram a :GenreForm ; + skos:broader gf:Map, gf:Diagram ; + skos:closeMatch marc:Diagram . + +gf:RemoteSensingImage a :GenreForm ; + skos:broader gf:Map ; + skos:closeMatch marcgt:rem ; + skos:closeMatch marc:RemoteSensingImage . + +#--- + +gf:Booklet a :GenreForm ; # gf:MediumText# TODO: CarrierGenreForm? + skos:broader gf:TextPiece ; + rdfs:label "Texthäfte"@sv , "Booklet"@en . + +gf:Textleaf a :GenreForm ; # gf:SmallText # TODO: CarrierGenreForm? + skos:broader gf:TextPiece ; + rdfs:label "Textblad"@sv , "Text leaf"@en . + +# from +gf:Lexicon skos:closeMatch marc:Dictionary . +gf:Database skos:closeMatch marc:UpdatingDatabase . +gf:Website skos:closeMatch marc:UpdatingWebSite . +gf:Film skos:closeMatch marc:MotionPicture . +gf:Postcard skos:closeMatch marc:PictureCardPostCard . +gf:ComputerGame skos:closeMatch marc:ComputerTypeOfFileType-g . +gf:Painting skos:closeMatch marc:Painting . +gf:Drawing skos:closeMatch marc:Drawing . +gf:Map skos:closeMatch marc:Map . +gf:Globe skos:closeMatch marc:Globe . +gf:Atlas skos:closeMatch marc:Atlas . +gf:Diagram skos:closeMatch marc:NonProjMaterialType-n . +gf:Photograph skos:closeMatch marc:Photograph . +gf:Yearbook skos:closeMatch marc:Yearbook . + +#gf:OnlineResource a :CarrierForm . # TODO: move to carrierform... + +## TODO: Move these instance MARC-types and -genreForms to work (and drop on marcframe revert?) + +# Instans-former (från användning ) + +# :Instance +# marc:Picture +# marc:Postcard +# marc:Poster +# marc:SingleMap +# tgm:Gravyrer +# tgm:Litografier +# tgm:M%C3%A5lningar +# tgm:Miniatyrer%20%28m%C3%A5lningar%29 +# tgm:Tr%C3%A4gravyrer + +# :StillImageInstance +# tgm:Affischer +# tgm:Flyers%20%28efem%C3%A4rt%20tryck%29 < :Print +# marc:ActivityCard +# marc:Picture +# marc:Postcard +# marc:Poster +# marc:Drawing +# marc:FlashCard +# marc:Painting +# marc:Photograph +# # .. keep as instance categories? +# marc:Photonegative +# marc:Photoprint < :Print +# marc:PhotomechanicalPrint +# tgm:Fotomekaniska%20reproduktioner +# tgm:Fotografier%20p%C3%A5%20albuminpapper +# tgm:Glasnegativ + +# :Print +# # .. keep as instance categories? +# marc:Print +# marc:PhotomechanicalPrint +# marc:Photoprint +# tgm:Ljustryck +# tgm:Plantryck +# tgm:Tryck diff --git a/source/categories/materialformat.ttl b/source/categories/materialformat.ttl new file mode 100644 index 000000000..22394df2b --- /dev/null +++ b/source/categories/materialformat.ttl @@ -0,0 +1,144 @@ +prefix rdfs: +prefix owl: +prefix skos: +prefix ptg: +prefix sdo: + +prefix kbv: +prefix : +prefix marc: + +prefix kbfmt: +prefix carrier: + +# TODO: Map to <../materials.ttl> (in turn mapped to ). +kbfmt:BristolBoard a :BaseMaterial ; + skos:exactMatch marc:BristolBoard . +kbfmt:Canvas a :BaseMaterial ; + skos:exactMatch marc:Canvas . +kbfmt:CardboardIllustrationBoard a :BaseMaterial ; + skos:exactMatch marc:CardboardIllustrationBoard . +kbfmt:Glass a :BaseMaterial ; + skos:exactMatch marc:Glass . +kbfmt:Hardboard a :BaseMaterial ; + skos:exactMatch marc:Hardboard . +kbfmt:Leather a :BaseMaterial ; + skos:exactMatch marc:Leather . +kbfmt:Metal a :BaseMaterial ; + skos:exactMatch marc:Metal . +kbfmt:Parchment a :BaseMaterial ; + skos:exactMatch marc:Parchment . +kbfmt:Plaster a :BaseMaterial ; + skos:exactMatch marc:Plaster . +kbfmt:Porcelain a :BaseMaterial ; + skos:exactMatch marc:Porcelain . +kbfmt:Skin a :BaseMaterial ; + skos:exactMatch marc:Skin . +kbfmt:Stone a :BaseMaterial ; + skos:exactMatch marc:Stone . +kbfmt:Synthetic a :BaseMaterial ; + skos:exactMatch marc:Synthetic . +kbfmt:Textile a :BaseMaterial ; + skos:exactMatch marc:Textile . +kbfmt:Vellum a :BaseMaterial ; + skos:exactMatch marc:Vellum . +kbfmt:Vinyl a :BaseMaterial ; + skos:exactMatch marc:Vinyl . +kbfmt:Wood a :BaseMaterial ; + skos:exactMatch marc:Wood . + +##marc:Other +#marc:MixedCollection a :BaseMaterial . + + +kbfmt:MoonScript a :TactileMaterial ; + skos:exactMatch marc:Moon . + +kbfmt:Braille a :TactileMaterial ; + skos:exactMatch marc:TacMaterialType-b . + +kbfmt:TactileCombination a :TactileMaterial ; + skos:exactMatch marc:TacMaterialType-c . + +kbfmt:TactileWithNoWritingSystem a :TactileMaterial ; + skos:exactMatch marc:TactileWithNoWritingSystem . + + +kbfmt:ImageOnGlass a :ImageMaterial ; + :broader kbfmt:Glass ; + skos:exactMatch marc:NonProjectedType-d . + +kbfmt:ImageOnStone a :ImageMaterial ; + :broader kbfmt:Stone ; + skos:exactMatch marc:NonProjectedType-s . + +kbfmt:ImageOnWood a :ImageMaterial ; + skos:exactMatch marc:NonProjectedType-t . + +kbfmt:ImageOnMetal a :ImageMaterial ; + skos:exactMatch marc:NonProjectedType-h . + + +marc:FlexibleBasePhotographicPositive a :MapFormat . +marc:FlexibleBasePhotographicNegative a :MapFormat . +marc:NonFlexibleBasePhotographicNegative a :MapFormat . +marc:NonFlexibleBasePhotographicPositive a :MapFormat . + +# TODO: consolidate with <../../examples/typenormalization/smdbterms.ttl>. + +kbfmt:Beta12InVideocassette a :VideoFormat ; + skos:exactMatch marc:Beta12InVideocassette . # TODO: smdb + +kbfmt:Betacam12InVideocassette a :VideoFormat ; + skos:exactMatch marc:Betacam12InVideocassette . # TODO: smdb + +kbfmt:BetacamSp12InVideocassette a :VideoFormat ; + skos:exactMatch marc:BetacamSp12InVideocassette . # TODO: smdb + +kbfmt:BluRayDisc a :VideoFormat ; + skos:exactMatch marc:BluRayDisc , carrier:Blu-ray_Disc_\%28BD\%29 . + +kbfmt:D234InVideocassette a :VideoFormat ; + skos:exactMatch marc:D234InVideocassette . # TODO: smdb + +kbfmt:SuperVhs12InVideocassette a :VideoFormat ; + skos:exactMatch marc:SuperVhs12InVideocassette, carrier:S-VHS . + +kbfmt:Vhs12InVideocassette a :VideoFormat ; + skos:exactMatch marc:Vhs12InVideocassette , carrier:VHS . + +kbfmt:Eiaj12InReel a :VideoFormat ; + skos:exactMatch marc:Eiaj12InReel ; + skos:narrowMatch carrier:\%C2\%BD_tum_Sony_AV_\%28EIAJ_Type_1\%29 , + carrier:EIAJ_Type_2_\%3B_\%C2\%BD_tum . + +kbfmt:Hi8Mm a :VideoFormat ; + skos:exactMatch marc:Hi8Mm , carrier:Hi8 . + +kbfmt:Dvd a :VideoFormat ; + skos:exactMatch marc:Dvd , carrier:DVD . + +kbfmt:Laserdisc a :VideoFormat ; + skos:exactMatch marc:Laserdisc , carrier:Laserdisk . + +kbfmt:UMatic34InVideocassette a :VideoFormat ; + skos:exactMatch marc:UMatic34InVideocassette , carrier:Umatic ; + skos:narrowMatch carrier:Umatic_HB, carrier:Umatic_LB, carrier:Umatic_SP . + +kbfmt:CedCapacitanceElectronicDiscVideodisc a :VideoFormat ; + skos:exactMatch marc:CedCapacitanceElectronicDiscVideodisc . + +kbfmt:Quadruplex1InOr2InReel a :VideoFormat ; + skos:exactMatch marc:Quadruplex1InOr2InReel ; + skos:narrowMatch carrier:2_tum_Quad . + +kbfmt:MIi12InVideocassette a :VideoFormat ; + skos:broadMatch carrier:MII ; + skos:exactMatch marc:MIi12InVideocassette . + +kbfmt:TypeC1InReel a :VideoFormat ; + skos:exactMatch marc:TypeC1InReel . + +kbfmt:Video8Mm a :VideoFormat ; + skos:exactMatch marc:VideoFormatType-p . # skos:broadMatch marc:8Mm + # TODO: carrier:Film_\%3B_8_mm ? diff --git a/source/categories/rdacategories.ttl b/source/categories/rdacategories.ttl new file mode 100644 index 000000000..f2c6851eb --- /dev/null +++ b/source/categories/rdacategories.ttl @@ -0,0 +1,89 @@ +prefix owl: +prefix skos: +prefix : + +prefix kbrda: +prefix saogf: +prefix marcgt: + +prefix ktg: + +kbrda:CartographicDataset a :ContentType ; + skos:broadMatch ktg:Dataset , ktg:Cartography . + +kbrda:CartographicImage a :ContentType ; + skos:broadMatch kbrda:StillImage , ktg:Cartography . + +kbrda:CartographicMovingImage a :ContentType ; + skos:broadMatch ktg:Cartography , ktg:MovingImage . + +kbrda:CartographicTactileImage a :ContentType ; + skos:broadMatch ktg:Tactile , ktg:Cartography , kbrda:StillImage . + +kbrda:CartographicTactileThreeDimensionalForm a :ContentType ; + skos:broadMatch kbrda:CartographicThreeDimensionalForm , ktg:Tactile . + +kbrda:CartographicThreeDimensionalForm a :ContentType ; + owl:sameAs ktg:CartographicObject ; + skos:broadMatch ktg:Cartography, kbrda:ThreeDimensionalForm ; # ktg:Object + skos:altLabel "Kartografiskt objekt"@sv , + "Cartographic Object"@en . + +kbrda:ComputerDataset a :ContentType ; + skos:broadMatch ktg:Multimedia, ktg:Dataset . + +kbrda:ComputerProgram a :ContentType ; + skos:broadMatch ktg:Software . + +kbrda:NotatedMovement a :ContentType ; + skos:closeMatch ktg:NotatedMovement ; + skos:broadMatch ktg:Movement . + +kbrda:NotatedMusic a :ContentType ; + skos:broadMatch ktg:Music ; + skos:closeMatch ktg:NotatedMusic . + +kbrda:PerformedMovement a :ContentType ; + skos:broadMatch ktg:Movement . + +kbrda:PerformedMusic a :ContentType ; + skos:broadMatch ktg:Audio, ktg:Music . + +kbrda:Sounds a :ContentType ; + skos:broadMatch ktg:Audio ; + skos:closeMatch marcgt:nos . + +kbrda:SpokenWord a :ContentType ; + skos:broadMatch ktg:Audio , + ktg:LinguisticWork . + +kbrda:StillImage a :ContentType ; + skos:closeMatch ktg:StillImage . + +kbrda:Text a :ContentType ; + skos:broadMatch ktg:LinguisticWork . + +kbrda:ThreeDimensionalForm a :ContentType ; + skos:closeMatch ktg:Object . + +kbrda:ThreeDimensionalMovingImage a :ContentType ; + skos:broadMatch ktg:MovingImage . + +kbrda:TwoDimensionalMovingImage a :ContentType ; + skos:broadMatch ktg:MovingImage . + +kbrda:TactileImage a :ContentType ; + skos:broadMatch ktg:Tactile , kbrda:StillImage . + +kbrda:TactileNotatedMovement a :ContentType ; + skos:broadMatch ktg:Tactile , kbrda:NotatedMovement . + +kbrda:TactileNotatedMusic a :ContentType ; + skos:closeMatch saogf:Musikalier ; + skos:broadMatch ktg:Tactile , kbrda:NotatedMusic . + +kbrda:TactileText a :ContentType ; + skos:broadMatch ktg:Tactile , kbrda:Text . + +kbrda:TactileThreeDimensionalForm a :ContentType ; + skos:broadMatch ktg:Tactile , kbrda:ThreeDimensionalForm . diff --git a/source/datasets/idkbse.ttl b/source/datasets/idkbse.ttl index 28c2b1d1f..ee2016623 100644 --- a/source/datasets/idkbse.ttl +++ b/source/datasets/idkbse.ttl @@ -11,32 +11,45 @@ base :uriSpace "/marc/" ; :created "2014-01-23T10:34:17.981Z"^^xsd:dateTime . +# TODO: Replaced with manually controlled option below. +# But keep some of this for mapping/label verification/comparison during maintenance? +# a :Dataset ; +# :isPartOf ; +# #; NOTE: see also examples/mappings/rda-bf2-types.ttl for possibiliy of +# # extending our type system (instead). +# :sourceData [ :uri "build/rdaterms.json.lines" ; +# :sourceData [ a :QueryConstruct ; +# :dataQuery [ :uri "source/construct-rda-terms.rq" ] ; +# :sourceData [ :uri 'source/rda-terms.ttl' ; +# :representationOf ] , +# , +# , +# +# , +# , +# +# , +# , +# +# # , +# , +# [ :uri 'source/categories/rdacategories.ttl' ] ; +# # NOTE: this is serialized using system context! +# ] ] ; +# :uriSpace "/term/rda/" ; +# :created "2018-05-16T06:18:01.337Z"^^xsd:dateTime . a :Dataset ; :isPartOf ; - #; NOTE: see also examples/mappings/rda-bf2-types.ttl for possibiliy of - # extending our type system (instead). :sourceData [ :uri "build/rdaterms.json.lines" ; - :sourceData [ a :QueryConstruct ; - :dataQuery [ :uri "source/construct-rda-terms.rq" ] ; - :sourceData [ :uri 'source/rda-terms.ttl' ; - :representationOf ] , - , - , - - , - , - - , - , - - # , - ; - # NOTE: this is serialized using system context! - ] ] ; + :sourceData [ :uri "source/rda/content.ttl" ] , + [ :uri "source/rda/mediacarriers.ttl" ] , + [ :uri "source/categories/rdacategories.ttl" ] , + [ :uri "source/rda/labels.ttl" ] ] ; + #[ :uri "source/rda/materials.ttl" ] ] ; :uriSpace "/term/rda/" ; :created "2018-05-16T06:18:01.337Z"^^xsd:dateTime . - +# TODO: merge in 'source/categories/materialformat.ttl' (do we need to keep some coordinating categories?) a :Dataset ; :isPartOf ; :sourceData [ :uri "build/materials.json.lines" ; :sourceData [ a :QueryConstruct ; @@ -137,6 +150,17 @@ base :uriSpace "/term/enum/" ; :created "2018-05-29T12:36:01.337Z"^^xsd:dateTime . + a :Dataset ; + :isPartOf ; + :sourceData [ :uri 'build/ktg.json.lines' ; + :sourceData [ :uri 'source/categories/contentforms.ttl' ] , + [ :uri 'source/categories/genreforms.ttl' ] , + [ :uri 'source/categories/contentgenres.ttl' ] , + [ :uri 'source/categories/carrierforms.ttl' ] ] ; + :uriSpace "/term/" ; + #:uriSpace "/term/ktg/" ; + :created "2025-05-05T09:57:56Z"^^xsd:dateTime . + #NOTE: More suitable name might be needed if usage is broader than digital representations a :Dataset ; :isPartOf ; diff --git a/source/rda-terms.ttl b/source/rda-terms.ttl index 539468123..93bd79aab 100644 --- a/source/rda-terms.ttl +++ b/source/rda-terms.ttl @@ -5,6 +5,71 @@ @base . +# FIXME: OBSOLETE file; remove when source/rda/*.ttl replacement is approved (pending change as of 250512)! + +# TODO: Check these rdacarrier mappings: +# Deprecated: skos:exactMatch rdacarrier:1001 ; # "Audio carriers" # skos:closeMatch rdamedia:1001 +# skos:exactMatch rdacarrier:1002 ; # "audio cartridge" +# skos:exactMatch rdacarrier:1003 ; # "audio cylinder" +# skos:exactMatch rdacarrier:1004 ; # "audio disc" +# skos:exactMatch rdacarrier:1005 ; # "sound-track reel" +# skos:exactMatch rdacarrier:1006 ; # "audio roll" +# skos:exactMatch rdacarrier:1007 ; # "audiocassette" +# skos:exactMatch rdacarrier:1008 ; # "audiotape reel" + +# Deprecated: skos:exactMatch rdacarrier:1010 ; # "Computer carriers" # skos:closeMatch rdamedia:1003 +# skos:exactMatch rdacarrier:1011 ; # "computer card" +# skos:exactMatch rdacarrier:1012 ; # "computer chip cartridge" +# skos:exactMatch rdacarrier:1013 ; # "computer disc" +# skos:exactMatch rdacarrier:1014 ; # "computer disc cartridge" +# skos:exactMatch rdacarrier:1015 ; # "computer tape cartridge" +# skos:exactMatch rdacarrier:1016 ; # "computer tape cassette" +# skos:exactMatch rdacarrier:1017 ; # "computer tape reel" +# skos:exactMatch rdacarrier:1018 ; # "online resource" + +# Deprecated: skos:exactMatch rdacarrier:1020 ; # "Microform carriers" # skos:closeMatch rdamedia:1002 +# skos:exactMatch rdacarrier:1021 ; # "aperture card" +# skos:exactMatch rdacarrier:1022 ; # "microfiche" +# skos:exactMatch rdacarrier:1023 ; # "microfiche cassette" +# skos:exactMatch rdacarrier:1024 ; # "microfilm cartridge" +# skos:exactMatch rdacarrier:1025 ; # "microfilm cassette" +# skos:exactMatch rdacarrier:1026 ; # "microfilm reel" +# skos:exactMatch rdacarrier:1027 ; # "microfilm slip" +# skos:exactMatch rdacarrier:1028 ; # "microopaque" +# skos:exactMatch rdacarrier:1056 ; # "microfilm roll" + +# Deprecated: rdacarrier:1029 ; # "Microscopic carriers" # skos:closeMatch rdamedia:1004 +# skos:exactMatch rdacarrier:1030 ; # "microscope slide" + +# Deprecated: skos:exactMatch rdacarrier:1031 ; # "Projected image carriers" # skos:closeMatch rdamedia:1005 +# skos:exactMatch rdacarrier:1032 ; # "film cartridge" +# skos:exactMatch rdacarrier:1033 ; # "film cassette" +# skos:exactMatch rdacarrier:1034 ; # "film reel" +# skos:exactMatch rdacarrier:1035 ; # "filmslip" +# skos:exactMatch rdacarrier:1036 ; # "filmstrip" +# skos:exactMatch rdacarrier:1037 ; # "filmstrip cartridge" +# skos:exactMatch rdacarrier:1039 ; # "overhead transparency" +# skos:exactMatch rdacarrier:1040 ; # "slide" +# skos:exactMatch rdacarrier:1069 ; # "film roll" + +# Deprecated: skos:exactMatch rdacarrier:1041 ; # "Stereographic carriers" # skos:closeMatch rdamedia:1006 +# skos:exactMatch rdacarrier:1042 ; # "stereograph card" +# skos:exactMatch rdacarrier:1043 ; # "stereograph disc" + +# Deprecated: skos:exactMatch rdacarrier:1044 ; # "Unmediated carriers" # skos:closeMatch rdamedia:1007 +# skos:exactMatch rdacarrier:1045 ; # "card" +# skos:exactMatch rdacarrier:1046 ; # "flipchart" +# skos:exactMatch rdacarrier:1047 ; # "roll" +# skos:exactMatch rdacarrier:1048 ; # "sheet" +# skos:exactMatch rdacarrier:1049 ; # "volume" +# skos:exactMatch rdacarrier:1059 ; # "object" + +# Deprecated: skos:exactMatch rdacarrier:1050 ; # "Video carriers" # skos:closeMatch rdamedia:1008 +# skos:exactMatch rdacarrier:1051 ; # "video cartridge" +# skos:exactMatch rdacarrier:1052 ; # "videocassette" +# skos:exactMatch rdacarrier:1053 ; # "videotape reel" +# skos:exactMatch rdacarrier:1060 ; # "videodisc" + ## Carriers ## @@ -328,7 +393,7 @@ a bf:Content ; owl:sameAs , ; - skos:exactMatch , + skos:exactMatch , # Used in LC codeMaps.xml ; skos:inScheme ; skos:notation "prm" . @@ -383,7 +448,7 @@ a bf:Content ; owl:sameAs , ; - skos:exactMatch , + skos:exactMatch , # Used in LC codeMaps.xml ; skos:inScheme ; skos:notation "spw" . @@ -469,7 +534,7 @@ a bf:Content ; owl:sameAs , ; - skos:exactMatch , + skos:exactMatch , # Used in LC codeMaps.xml ; skos:inScheme ; skos:notation "cri" . @@ -536,7 +601,7 @@ a bf:Content ; owl:sameAs , ; - skos:exactMatch , + skos:exactMatch , # Used in LC codeMaps.xml , marc:ComputerProgram ; skos:inScheme ; @@ -553,7 +618,7 @@ a bf:Content ; owl:sameAs , ; - skos:exactMatch , + skos:exactMatch , # Used in LC codeMaps.xml ; skos:inScheme ; skos:notation "ntm" . @@ -561,7 +626,7 @@ a bf:Content ; owl:sameAs , ; - skos:exactMatch , + skos:exactMatch , # Used in LC codeMaps.xml ; skos:inScheme ; skos:notation "sti" . @@ -609,7 +674,7 @@ a bf:Content ; owl:sameAs , ; - skos:exactMatch , + skos:exactMatch , # Used in LC codeMaps.xml ; skos:inScheme ; skos:notation "txt" . @@ -617,7 +682,7 @@ a bf:Content ; owl:sameAs , ; - skos:exactMatch , + skos:exactMatch , # Used in LC codeMaps.xml ; skos:inScheme ; skos:notation "tdf" . @@ -633,7 +698,7 @@ a bf:Content ; owl:sameAs , ; - skos:exactMatch , + skos:exactMatch , # Used in LC codeMaps.xml ; skos:inScheme ; skos:notation "tdi" . diff --git a/source/rda/content.ttl b/source/rda/content.ttl new file mode 100644 index 000000000..1864527a8 --- /dev/null +++ b/source/rda/content.ttl @@ -0,0 +1,170 @@ +prefix bf: +prefix marc: +prefix owl: +prefix skos: + +prefix kbrda: +base + +## Content types ## + +kbrda:CartographicDataset a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "crd" . + +kbrda:CartographicImage a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , # Used in LC codeMaps.xml + ; + skos:inScheme ; + skos:notation "cri" . + +kbrda:CartographicMovingImage a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "crm" . + +kbrda:CartographicTactileImage a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "crt" . + +kbrda:CartographicTactileThreeDimensionalForm a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "crn" . + +kbrda:CartographicThreeDimensionalForm a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "crf" . + +kbrda:ComputerDataset a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "cod" . + +kbrda:ComputerProgram a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , # Used in LC codeMaps.xml + , + marc:ComputerProgram ; + skos:inScheme ; + skos:notation "cop" . + +kbrda:NotatedMovement a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "ntv" . + +kbrda:NotatedMusic a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , # Used in LC codeMaps.xml + ; + skos:inScheme ; + skos:notation "ntm" . + +kbrda:StillImage a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , # Used in LC codeMaps.xml + ; + skos:inScheme ; + skos:notation "sti" . + +kbrda:TactileImage a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "tci" . + +kbrda:TactileNotatedMovement a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "tcn" . + +kbrda:TactileNotatedMusic a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "tcm" . + +kbrda:TactileText a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "tct" . + +kbrda:TactileThreeDimensionalForm a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "tcf" . + +kbrda:Text a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , # Used in LC codeMaps.xml + ; + skos:inScheme ; + skos:notation "txt" . + +kbrda:ThreeDimensionalForm a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , # Used in LC codeMaps.xml + ; + skos:inScheme ; + skos:notation "tdf" . + +kbrda:ThreeDimensionalMovingImage a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "tdm" . + +kbrda:TwoDimensionalMovingImage a bf:Content ; + owl:sameAs , + ; + skos:exactMatch , # Used in LC codeMaps.xml + ; + skos:inScheme ; + skos:notation "tdi" . diff --git a/source/rda/labels.ttl b/source/rda/labels.ttl new file mode 100644 index 000000000..08c86c691 --- /dev/null +++ b/source/rda/labels.ttl @@ -0,0 +1,227 @@ +# NOTE: This just an extraction (using SPARQL, I presume) from our definitions... +prefix skos: +prefix kbrda: + +kbrda:ApertureCard skos:prefLabel "maskhålkort"@sv , + "aperture card"@en . + +kbrda:Audio skos:prefLabel "audio"@sv , + "audio"@en . + +kbrda:AudioCartridge skos:prefLabel "ljudmagasin"@sv , + "audio cartridge"@en . + +kbrda:AudioCylinder skos:prefLabel "ljudcylinder"@sv , + "audio cylinder"@en . + +kbrda:AudioDisc skos:prefLabel "ljudskiva"@sv , + "audio disc"@en . + +kbrda:AudioRoll skos:prefLabel "ljudrulle"@sv , + "audio roll"@en . + +kbrda:Audiocassette skos:prefLabel "ljudkassett"@sv , + "audiocassette"@en . + +kbrda:AudiotapeReel skos:prefLabel "ljudspole"@sv , + "audiotape reel"@en . + +kbrda:Card skos:prefLabel "bildkort"@sv , + "card"@en . + +kbrda:CartographicDataset skos:prefLabel "kartografiskt dataset"@sv , + "cartographic dataset"@en . + +kbrda:CartographicImage skos:prefLabel "kartografisk bild"@sv , + "cartographic image"@en . + +kbrda:CartographicMovingImage skos:prefLabel "kartografisk rörlig bild"@sv , + "cartographic moving image"@en . + +kbrda:CartographicTactileImage skos:prefLabel "kartografisk taktil bild"@sv , + "cartographic tactile image"@en . + +kbrda:CartographicTactileThreeDimensionalForm skos:prefLabel "kartografisk taktil tredimensionell form"@sv , + "cartographic tactile three-dimensional form"@en . + +kbrda:CartographicThreeDimensionalForm skos:prefLabel "kartografisk tredimensionell form"@sv , + "cartographic three-dimensional form"@en . + +kbrda:Computer skos:prefLabel "dator"@sv , + "computer"@en . + +kbrda:ComputerCard skos:prefLabel "datorkort"@sv , + "computer card"@en . + +kbrda:ComputerChipCartridge skos:prefLabel "computer chip cartridge"@en . + +kbrda:ComputerDataset skos:prefLabel "computer dataset"@en . + +kbrda:ComputerDisc skos:prefLabel "datorskiva"@sv , + "computer disc"@en . + +kbrda:ComputerDiscCartridge skos:prefLabel "datorskivmagasin"@sv , + "computer disc cartridge"@en . + +kbrda:ComputerProgram skos:prefLabel "datorprogram"@sv , + "computer program"@en . + +kbrda:ComputerTapeCartridge skos:prefLabel "datorbandmagasin"@sv , + "computer tape cartridge"@en . + +kbrda:ComputerTapeCassette skos:prefLabel "datorkassett"@sv , + "computer tape cassette"@en . + +kbrda:ComputerTapeReel skos:prefLabel "datorbandspole"@sv , + "computer tape reel"@en . + +kbrda:FilmCartridge skos:prefLabel "filmmagasin"@sv , + "film cartridge"@en . + +kbrda:FilmCassette skos:prefLabel "filmkassett"@sv , + "film cassette"@en . + +kbrda:FilmReel skos:prefLabel "filmspole"@sv , + "film reel"@en . + +kbrda:FilmRoll skos:prefLabel "filmrulle"@sv , + "film roll"@en . + +kbrda:Filmslip skos:prefLabel "filmremsa"@sv , + "filmslip"@en . + +kbrda:Filmstrip skos:prefLabel "bildband"@sv , + "filmstrip"@en . + +kbrda:FilmstripCartridge skos:prefLabel "bildbandsmagasin"@sv , + "filmstrip cartridge"@en . + +kbrda:Flipchart skos:prefLabel "blädderblock"@sv , + "flipchart"@en . + +kbrda:Microfiche skos:prefLabel "mikrofiche"@sv , + "microfiche"@en . + +kbrda:MicroficheCassette skos:prefLabel "mikrofichekassett"@sv , + "microfiche cassette"@en . + +kbrda:MicrofilmCartridge skos:prefLabel "mikrofilmsmagasin"@sv , + "microfilm cartridge"@en . + +kbrda:MicrofilmCassette skos:prefLabel "mikrofilmskassett"@sv , + "microfilm cassette"@en . + +kbrda:MicrofilmReel skos:prefLabel "mikrofilmsspole"@sv , + "microfilm reel"@en . + +kbrda:MicrofilmRoll skos:prefLabel "mikrofilmsrulle"@sv , + "microfilm roll"@en . + +kbrda:MicrofilmSlip skos:prefLabel "mikrofilmsremsa"@sv , + "microfilm slip"@en . + +kbrda:Microform skos:prefLabel "mikroform"@sv , + "microform"@en . + +kbrda:Microopaque skos:prefLabel "mikrokort"@sv , + "microopaque"@en . + +kbrda:MicroscopeSlide skos:prefLabel "mikroskoperingspreparat"@sv , + "microscope slide"@en . + +kbrda:Microscopic skos:prefLabel "mikroskopisk"@sv , + "microscopic"@en . + +kbrda:NotatedMovement skos:prefLabel "notated movement"@en . + +kbrda:NotatedMusic skos:prefLabel "notated music"@en . + +kbrda:Object skos:prefLabel "föremål"@sv , + "object"@en . + +kbrda:OnlineResource skos:prefLabel "onlineresurs"@sv , + "online resource"@en . + +kbrda:OverheadTransparency skos:prefLabel "OH-bild"@sv , + "overhead transparency"@en . + +kbrda:PerformedMusic skos:prefLabel "framförd musik"@sv , + "performed music"@en . + +kbrda:Projected skos:prefLabel "projicerad"@sv , + "projected"@en . + +kbrda:Roll skos:prefLabel "rulle"@sv , + "roll"@en . + +kbrda:Sheet skos:prefLabel "ark"@sv , + "sheet"@en . + +kbrda:Slide skos:prefLabel "diabild"@sv , + "slide"@en . + +kbrda:SoundTrackReel skos:prefLabel "sound-track reel"@en . + +kbrda:Sounds skos:prefLabel "ljud (utom tal och musik)"@sv , + "sounds"@en . + +kbrda:SpokenWord skos:prefLabel "tal"@sv , + "spoken word"@en . + +kbrda:StereographCard skos:prefLabel "stereografiskt kort"@sv , + "stereograph card"@en . + +kbrda:StereographDisc skos:prefLabel "stereografisk skiva"@sv , + "stereograph disc"@en . + +kbrda:Stereographic skos:prefLabel "stereografisk"@sv , + "stereographic"@en . + +kbrda:StillImage skos:prefLabel "stillbild"@sv , + "still image"@en . + +kbrda:TactileImage skos:prefLabel "taktil bild"@sv , + "tactile image"@en . + +kbrda:TactileNotatedMovement skos:prefLabel "tactile notated movement"@en . + +kbrda:TactileNotatedMusic skos:prefLabel "tactile notated music"@en . + +kbrda:TactileText skos:prefLabel "taktil text"@sv , + "tactile text"@en . + +kbrda:TactileThreeDimensionalForm skos:prefLabel "taktil tredimensionell form"@sv , + "tactile three-dimensional form"@en . + +kbrda:Text skos:prefLabel "text"@sv , + "text"@en . + +kbrda:ThreeDimensionalForm skos:prefLabel "tredimensionell form"@sv , + "three-dimensional form"@en . + +kbrda:ThreeDimensionalMovingImage skos:prefLabel "tredimensionell rörlig bild"@sv , + "three-dimensional moving image"@en . + +kbrda:TwoDimensionalMovingImage skos:prefLabel "tvådimensionell rörlig bild"@sv , + "two-dimensional moving image"@en . + +kbrda:Unmediated skos:prefLabel "omedierad"@sv , + "unmediated"@en . + +kbrda:Video skos:prefLabel "video"@sv , + "video"@en . + +kbrda:VideoCartridge skos:prefLabel "videomagasin"@sv , + "video cartridge"@en . + +kbrda:Videocassette skos:prefLabel "videokassett"@sv , + "videocassette"@en . + +kbrda:Videodisc skos:prefLabel "videoskiva"@sv , + "videodisc"@en . + +kbrda:VideotapeReel skos:prefLabel "videospole"@sv , + "videotape reel"@en . + +kbrda:Volume skos:prefLabel "volym"@sv , + "volume"@en . diff --git a/source/rda/mediacarriers.ttl b/source/rda/mediacarriers.ttl new file mode 100644 index 000000000..21a2c5a30 --- /dev/null +++ b/source/rda/mediacarriers.ttl @@ -0,0 +1,695 @@ +prefix bf: +prefix rdfs: +prefix owl: +prefix skos: + +prefix marc: +prefix ktg: +prefix kbrda: + +## Media types ## + +kbrda:Audio a bf:Media ; + owl:sameAs kbrda:media\/audio , + kbrda:media\/s ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "s" . + +kbrda:Computer a bf:Media ; + owl:sameAs kbrda:media\/c , + kbrda:media\/computer ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "c" . + +kbrda:Microform a bf:Media ; + owl:sameAs kbrda:media\/h , + kbrda:media\/microform ; + skos:broader ktg:StorageMedium ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "h" ; + #ptg:abstract true ; + rdfs:label "Mikroform"@sv , + "Microform"@en . + +kbrda:Microscopic a bf:Media ; + owl:sameAs kbrda:media\/p , + kbrda:media\/microscopic ; + skos:broader ktg:StorageMedium ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "h" ; + #ptg:abstract true ; + rdfs:label "Mikroskopisk"@sv , + "Microscopic"@en . + +kbrda:Projected a bf:Media ; + owl:sameAs kbrda:media\/g , + kbrda:media\/projected ; + skos:broader ktg:StorageMedium ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "g" ; + #ptg:abstract true ; + rdfs:label "Projicerad"@sv , + "Projected"@en . + +kbrda:Stereographic a bf:Media ; + owl:sameAs kbrda:media\/e , + kbrda:media\/stereographic ; + skos:broader marc:Stereographic , + ktg:StorageMedium ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "e" ; + #ptg:abstract true ; + rdfs:label "Stereografisk"@sv , + "Stereographic"@en . + +kbrda:Unmediated a bf:Media ; + owl:sameAs kbrda:media\/n , + kbrda:media\/unmediated ; + skos:broader ktg:PhysicalForm ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "n" ; + rdfs:label "Omedierad resurs"@sv , + "Unmediated"@en . + +kbrda:Video a bf:Media ; + owl:sameAs kbrda:media\/v , + kbrda:media\/video ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "v" . + +## Carrier types + +kbrda:ApertureCard a bf:Carrier ; + owl:sameAs kbrda:carrier\/aperture%20card , + kbrda:carrier\/ha ; + skos:broader kbrda:Microform ; + skos:exactMatch , + , + marc:ApertureCard ; + skos:inScheme ; + skos:notation "ha" ; + rdfs:label "Maskhålkort"@sv , + "Aperture card"@en . + +kbrda:AudioCartridge a bf:Carrier ; + owl:sameAs kbrda:carrier\/audio%20cartridge , + kbrda:carrier\/sg ; + skos:broader kbrda:Audio , + ktg:SoundStorageMedium ; + skos:exactMatch , + , + marc:SoundCartridge ; + skos:inScheme ; + skos:notation "sg" ; + rdfs:label "Ljudmagasin"@sv , + "Audio cartridge"@en . + +kbrda:AudioCylinder a bf:Carrier ; + owl:sameAs kbrda:carrier\/audio%20cylinder , + kbrda:carrier\/se ; + skos:broader kbrda:Audio , + ktg:SoundStorageMedium ; + skos:exactMatch , + , + marc:Cylinder ; + skos:inScheme ; + skos:notation "se" ; + rdfs:label "Ljudcylinder"@sv , + "Audio cylinder"@en . + +kbrda:AudioDisc a bf:Carrier ; + owl:sameAs kbrda:carrier\/audio%20disc , + kbrda:carrier\/sd ; + skos:broader kbrda:Audio , + ktg:SoundStorageMedium ; + skos:exactMatch , + , + marc:SoundDisc ; + skos:inScheme ; + skos:notation "sd" ; + rdfs:label "Ljudskiva"@sv , + "Audio Disc"@en . + +kbrda:AudioRoll a bf:Carrier ; + owl:sameAs kbrda:carrier\/audio%20roll , + kbrda:carrier\/sq ; + skos:broader kbrda:Audio , + ktg:SoundStorageMedium ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "sq" ; + rdfs:label "Ljudrulle"@sv , + "Audio roll"@en . + +kbrda:Audiocassette a bf:Carrier ; + owl:sameAs kbrda:carrier\/audiocassette , + kbrda:carrier\/ss ; + skos:broader kbrda:Audio , + ktg:SoundStorageMedium , + ktg:TapeCassette ; + skos:exactMatch , + , + marc:SoundCassette ; + skos:inScheme ; + skos:notation "ss" ; + rdfs:label "Ljudkassett"@sv , + "Audio Cassette"@en . + +kbrda:AudiotapeReel a bf:Carrier ; + owl:sameAs kbrda:carrier\/audiotape%20reel , + kbrda:carrier\/st ; + skos:broader kbrda:Audio , + ktg:SoundStorageMedium , + ktg:TapeReel , + marc:SoundTapeReel ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "st" ; + rdfs:label "Ljudspole"@sv , + "Audiotape reel"@en . + +kbrda:Card a bf:Carrier ; + owl:sameAs kbrda:carrier\/card , + kbrda:carrier\/no ; + skos:broader kbrda:Unmediated ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "no" ; + rdfs:label "Bildkort"@sv , + "Card"@en . + +kbrda:ComputerCard a bf:Carrier ; + owl:sameAs kbrda:carrier\/ck , + kbrda:carrier\/computer%20card ; + skos:broader kbrda:Computer , + ktg:ElectronicStorageMedium ; + skos:exactMatch , + , + marc:ComputerCard ; + skos:inScheme ; + skos:notation "ck" ; + rdfs:label "Datorkort"@sv , + "Computer card"@en . + +kbrda:ComputerChipCartridge a bf:Carrier ; + owl:sameAs kbrda:carrier\/cb , + kbrda:carrier\/computer%20chip%20cartridge ; + skos:broader kbrda:Computer , + ktg:ElectronicStorageMedium ; + skos:exactMatch , + , + marc:ChipCartridge ; + skos:inScheme ; + skos:notation "cb" ; + rdfs:label "Computer chip cartridge"@en . + +kbrda:ComputerDisc a bf:Carrier ; + owl:sameAs kbrda:carrier\/cd , + kbrda:carrier\/computer%20disc ; + skos:broadMatch marc:MagneticDisk ; + skos:broader kbrda:Computer , + ktg:ElectronicStorageMedium ; + skos:exactMatch , + , + marc:ComputerDisc ; + skos:inScheme ; + skos:notation "cd" ; + rdfs:label "Datorskiva"@sv , + "Computer Disc"@en . + +kbrda:ComputerDiscCartridge a bf:Carrier ; + owl:sameAs kbrda:carrier\/ce , + kbrda:carrier\/computer%20disc%20cartridge ; + skos:broader kbrda:Computer , + ktg:ElectronicStorageMedium ; + skos:exactMatch , + , + marc:ComputerDiscCartridge ; + skos:inScheme ; + skos:narrowMatch marc:ComputerOpticalDiscCartridge ; + skos:notation "ce" ; + rdfs:label "Datorskivmagasin"@sv , + "Computer disc cartridge"@en . + +kbrda:ComputerTapeCartridge a bf:Carrier ; + owl:sameAs kbrda:carrier\/ca , + kbrda:carrier\/computer%20tape%20cartridge ; + skos:broadMatch marc:TapeCartridge ; + skos:broader kbrda:Computer , + ktg:ElectronicStorageMedium , + ktg:TapeCartridge ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "ca" ; + rdfs:label "Datorbandmagasin"@sv , + "Computer tape cartridge"@en . + +kbrda:ComputerTapeCassette a bf:Carrier ; + owl:sameAs kbrda:carrier\/cf , + kbrda:carrier\/computer%20tape%20cassette ; + skos:broadMatch marc:TapeCassette ; + skos:broader kbrda:Computer , + ktg:ElectronicStorageMedium , + ktg:TapeCassette ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "cf" ; + rdfs:label "Datorkassett"@sv , + "Computer tape cassette"@en . + +kbrda:ComputerTapeReel a bf:Carrier ; + owl:sameAs kbrda:carrier\/ch , + kbrda:carrier\/computer%20tape%20reel ; + skos:broadMatch marc:TapeReel ; + skos:broader kbrda:Computer , + ktg:ElectronicStorageMedium , + ktg:TapeReel ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "ch" ; + rdfs:label "Datorbandspole"@sv , + "Computer tape reel"@en . + +kbrda:FilmCartridge a bf:Carrier ; + owl:sameAs kbrda:carrier\/film%20cartridge , + kbrda:carrier\/mc ; + skos:broader kbrda:Projected ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "mc" ; + rdfs:label "Filmmagasin"@sv , + "Film cartridge"@en . + +kbrda:FilmCassette a bf:Carrier ; + owl:sameAs kbrda:carrier\/film%20cassette , + kbrda:carrier\/mf ; + skos:broader kbrda:Projected ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "mf" ; + rdfs:label "Filmkassett"@sv , + "Film cassette"@en . + +kbrda:FilmReel a bf:Carrier ; + owl:sameAs kbrda:carrier\/film%20reel , + kbrda:carrier\/mr ; + skos:broader kbrda:Projected ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "mr" ; + rdfs:label "Filmspole"@sv , + "Film reel"@en . + +kbrda:FilmRoll a bf:Carrier ; + owl:sameAs kbrda:carrier\/film%20roll , + kbrda:carrier\/mo ; + skos:broader kbrda:Projected ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "mo" ; + rdfs:label "Filmrulle"@sv , + "Film roll"@en . + +kbrda:Filmslip a bf:Carrier ; + owl:sameAs kbrda:carrier\/filmslip , + kbrda:carrier\/gd ; + skos:broader kbrda:Projected ; + skos:exactMatch , + , + marc:Filmslip ; + skos:inScheme ; + skos:notation "gd" ; + rdfs:label "Filmremsa"@sv , + "Filmslip"@en . + +kbrda:Filmstrip a bf:Carrier ; + owl:sameAs kbrda:carrier\/filmstrip , + kbrda:carrier\/gf ; + skos:broader kbrda:Projected ; + skos:exactMatch , + , + marc:Filmstrip , + marc:FilmstripRoll ; + skos:inScheme ; + skos:notation "gf" ; + rdfs:label "Bildband"@sv , + "Filmstrip"@en . + +kbrda:FilmstripCartridge a bf:Carrier ; + owl:sameAs kbrda:carrier\/filmstrip%20cartridge , + kbrda:carrier\/gc ; + skos:broader kbrda:Projected ; + skos:exactMatch , + , + marc:FilmstripCartridge ; + skos:inScheme ; + skos:notation "gc" ; + rdfs:label "Bildbandsmagasin"@sv , + "Filmstrip cartridge"@en . + +kbrda:Flipchart a bf:Carrier ; + owl:sameAs kbrda:carrier\/flipchart , + kbrda:carrier\/nn ; + skos:broader kbrda:Unmediated ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "nn" ; + rdfs:label "Blädderblock"@sv , + "Flipchart"@en . + +kbrda:Microfiche a bf:Carrier ; + owl:sameAs kbrda:carrier\/he , + kbrda:carrier\/microfiche ; + skos:broader kbrda:Microform , + marc:Microfiche ; + skos:exactMatch , + , + marc:Microfiche ; + skos:inScheme ; + skos:notation "he" ; + rdfs:label "Mikrofiche"@sv , + "Microfiche"@en . + +kbrda:MicroficheCassette a bf:Carrier ; + owl:sameAs kbrda:carrier\/hf , + kbrda:carrier\/microfiche%20cassette ; + skos:broader kbrda:Microform ; + skos:exactMatch , + , + marc:MicroficheCassette ; + skos:inScheme ; + skos:notation "hf" ; + rdfs:label "Mikrofichekassett"@sv , + "Microfiche cassette"@en . + +kbrda:MicrofilmCartridge a bf:Carrier ; + owl:sameAs kbrda:carrier\/hb , + kbrda:carrier\/microfilm%20cartridge ; + skos:broader kbrda:Microform , + ktg:Microfilm ; + skos:exactMatch , + , + marc:MicrofilmCartridge ; + skos:inScheme ; + skos:notation "hb" ; + rdfs:label "Mikrofilmsmagasin"@sv , + "Microfilm cartridge"@en . + +kbrda:MicrofilmCassette a bf:Carrier ; + owl:sameAs kbrda:carrier\/hc , + kbrda:carrier\/microfilm%20cassette ; + skos:broader kbrda:Microform , + ktg:Microfilm ; + skos:exactMatch , + , + marc:MicrofilmCassette ; + skos:inScheme ; + skos:notation "hc" ; + rdfs:label "Mikrofilmskassett"@sv , + "Microfilm cassette"@en . + +kbrda:MicrofilmReel a bf:Carrier ; + owl:sameAs kbrda:carrier\/hd , + kbrda:carrier\/microfilm%20reel ; + skos:broader kbrda:Microform , + ktg:Microfilm ; + skos:exactMatch , + , + marc:MicrofilmReel ; + skos:inScheme ; + skos:notation "hd" ; + rdfs:label "Mikrofilmsspole"@sv , + "Microfilm reel"@en . + +kbrda:MicrofilmRoll a bf:Carrier ; + owl:sameAs kbrda:carrier\/hj , + kbrda:carrier\/microfilm%20roll ; + skos:broader kbrda:Microform , + ktg:Microfilm , + ktg:VideoStorageMedium ; + skos:exactMatch , + , + marc:MicrofilmRoll ; + skos:inScheme ; + skos:notation "hj" ; + rdfs:label "Mikrofilmsrulle"@sv , + "Microfilm roll"@en . + +kbrda:MicrofilmSlip a bf:Carrier ; + owl:sameAs kbrda:carrier\/hh , + kbrda:carrier\/microfilm%20slip ; + skos:broader kbrda:Microform ; + skos:exactMatch , + , + marc:MicrofilmSlip ; + skos:inScheme ; + skos:notation "hh" ; + rdfs:label "Mikrofilmsremsa"@sv , + "Microfilm slip"@en . + +kbrda:Microopaque a bf:Carrier ; + owl:sameAs kbrda:carrier\/hg , + kbrda:carrier\/microopaque ; + skos:broader kbrda:Microform , + marc:Microopaque ; + skos:exactMatch , + , + marc:Microopaque ; + skos:inScheme ; + skos:notation "hg" ; + rdfs:label "Mikrokort"@sv , + "Microopaque"@en . + +kbrda:MicroscopeSlide a bf:Carrier ; + owl:sameAs kbrda:carrier\/microscope%20slide , + kbrda:carrier\/pp ; + skos:broader kbrda:Microscopic ; + skos:exactMatch , + , + marc:MicroscopeSlide ; + skos:inScheme ; + skos:notation "pp" ; + rdfs:label "Mikroskoperingspreparat"@sv , + "Microscope slide"@en . + +kbrda:Object a bf:Carrier ; + owl:sameAs kbrda:carrier\/nr , + kbrda:carrier\/object ; + skos:broader kbrda:Unmediated ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "nr" . + +kbrda:OnlineResource a bf:Carrier ; + owl:sameAs kbrda:carrier\/cr , + kbrda:carrier\/online%20resource ; + skos:broader kbrda:Computer ; + skos:closeMatch marc:Online , + ktg:DigitalForm , + marc:Remote ; + skos:exactMatch , + , + marc:OnlineResource , + marc:Online ; + skos:inScheme ; + skos:notation "cr" . + +kbrda:OverheadTransparency a bf:Carrier ; + owl:sameAs kbrda:carrier\/gt , + kbrda:carrier\/overhead%20transparency ; + skos:broader kbrda:Projected ; + skos:exactMatch , + , + marc:Transparency ; + skos:inScheme ; + skos:notation "gt" ; + rdfs:label "OH-bild"@sv , + "Overhead transparency"@en . + +kbrda:PerformedMusic a bf:Content ; + owl:sameAs kbrda:content\/performed%20music , + kbrda:content\/prm ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "prm" . + +kbrda:Roll a bf:Carrier ; + owl:sameAs kbrda:carrier\/na , + kbrda:carrier\/roll ; + skos:broader kbrda:Unmediated ; + skos:exactMatch , + , + marc:Roll ; + skos:inScheme ; + skos:notation "na" ; + rdfs:label "Rulle"@sv , + "Roll"@en . + +kbrda:Sheet a bf:Carrier ; + owl:sameAs kbrda:carrier\/nb , + kbrda:carrier\/sheet ; + skos:broader kbrda:Unmediated ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "nb" ; + rdfs:label "Ark"@sv , + "Sheet"@en . + +kbrda:Slide a bf:Carrier ; + owl:sameAs kbrda:carrier\/gs , + kbrda:carrier\/slide ; + skos:broader kbrda:Projected ; + skos:exactMatch , + , + marc:Slide ; + skos:inScheme ; + skos:notation "gs" ; + rdfs:label "Diabild"@sv , + "Slide"@en . + +kbrda:SoundTrackReel a bf:Carrier ; + owl:sameAs kbrda:carrier\/si , + kbrda:carrier\/sound%20track%20reel ; + skos:broader kbrda:Audio , + ktg:SoundStorageMedium ; + skos:exactMatch , + , + marc:SoundTrackFilm ; + skos:inScheme ; + skos:notation "si" ; + rdfs:label "Sound-track reel"@en . + +kbrda:Sounds a bf:Content ; + owl:sameAs kbrda:content\/snd , + kbrda:content\/sounds ; + skos:exactMatch , + , + marc:Sound ; + skos:inScheme ; + skos:notation "snd" . + +kbrda:SpokenWord a bf:Content ; + owl:sameAs kbrda:content\/spoken%20word , + kbrda:content\/spw ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "spw" . + +kbrda:StereographCard a bf:Carrier ; + owl:sameAs kbrda:carrier\/eh , + kbrda:carrier\/stereograph%20card ; + skos:broader kbrda:Stereographic ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "eh" ; + rdfs:label "Stereografiskt kort"@sv , + "Stereograph card"@en . + +kbrda:StereographDisc a bf:Carrier ; + owl:sameAs kbrda:carrier\/es , + kbrda:carrier\/stereograph%20disc ; + skos:broader kbrda:Stereographic ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "es" ; + rdfs:label "Stereografisk skiva"@sv , + "Stereograph disc"@en . + +kbrda:VideoCartridge a bf:Carrier ; + owl:sameAs kbrda:carrier\/vc , + kbrda:carrier\/video%20cartridge ; + skos:broader kbrda:Video , + ktg:VideoStorageMedium ; + skos:exactMatch , + , + marc:Videocartridge ; + skos:inScheme ; + skos:notation "vc" ; + rdfs:label "Videomagasin"@sv , + "Video cartridge"@en . + +kbrda:Videocassette a bf:Carrier ; + owl:sameAs kbrda:carrier\/vf , + kbrda:carrier\/videocassette ; + skos:broader kbrda:Video , + ktg:VideoStorageMedium , + ktg:TapeCassette ; + skos:exactMatch , + , + marc:Videocassette ; + skos:inScheme ; + skos:notation "vf" ; + rdfs:label "Videokassett"@sv , + "Videocassette"@en . + +kbrda:Videodisc a bf:Carrier ; + owl:sameAs kbrda:carrier\/vd , + kbrda:carrier\/videodisc ; + skos:broader kbrda:Video , + ktg:VideoStorageMedium ; + skos:exactMatch , + , + marc:Videodisc , marc:VideoMaterialType-d ; + skos:inScheme ; + skos:notation "vd" ; + rdfs:label "Videoskiva"@sv , + "Video Disc"@en . + +kbrda:VideotapeReel a bf:Carrier ; + owl:sameAs kbrda:carrier\/videotape%20reel , + kbrda:carrier\/vr ; + skos:broader kbrda:Video , + ktg:VideoStorageMedium , + ktg:TapeReel ; + skos:closeMatch marc:Videotape ; + skos:exactMatch , + , + marc:Videoreel ; + skos:inScheme ; + skos:notation "vr" ; + rdfs:label "Videospole"@sv , + "Videotape reel"@en . + +kbrda:Volume a bf:Carrier ; + owl:sameAs kbrda:carrier\/nc , + kbrda:carrier\/volume ; + skos:broader kbrda:Unmediated ; + skos:exactMatch , + ; + skos:inScheme ; + skos:notation "nc" ; + rdfs:label "Volym"@sv , + "Volume"@en . diff --git a/source/vocab/base.ttl b/source/vocab/base.ttl index e4a012e43..010a4967c 100644 --- a/source/vocab/base.ttl +++ b/source/vocab/base.ttl @@ -156,13 +156,18 @@ rdf:type a owl:ObjectProperty; ## -# Categorization Of Terms +# Categorization (looser typing) of Resources, including Terms :category a owl:ObjectProperty; rdfs:label "category"@en, "kategori"@sv; sdo:domainIncludes :ChangeNote ; + sdo:rangeIncludes :Category ; owl:equivalentProperty sdo:category . +:Category a owl:Class ; + #rdfs:subClassOf :Concept ; + rdfs:label "Category"@en, "Kategori"@sv . + ## # These terms may also be "bibliographic", but the platform cannot work without # them. If the "bibliographic" notions are 1:1 with the technical, the term is @@ -239,6 +244,18 @@ rdf:type a owl:ObjectProperty; :category :heuristicIdentifier ; owl:equivalentProperty rdfs:label, sdo:name . +:singularLabel a owl:DatatypeProperty; + rdfs:label "singular label"@en, "benämning i singular"@sv; + rdfs:domain :Resource ; + #:category :heuristicIdentifier ; + rdfs:subPropertyOf :label . + +:pluralLabel a owl:DatatypeProperty; + rdfs:label "plural label"@en, "benämning i plural"@sv; + rdfs:domain :Resource ; + #:category :heuristicIdentifier ; + rdfs:subPropertyOf :label . + :comment a owl:DatatypeProperty; rdfs:label "comment"@en, "kommentar"@sv; sdo:domainIncludes :Agent, :Title, :ToCEntry, :EAN, :UPC, :Language, :Script , :ChangeNote, :AdministrativeAction, bulk:Job; diff --git a/source/vocab/concepts.ttl b/source/vocab/concepts.ttl index 901654ac8..c06479237 100644 --- a/source/vocab/concepts.ttl +++ b/source/vocab/concepts.ttl @@ -232,8 +232,9 @@ rdfs:label "narrower match"@en, "smalare match"@sv; sdo:domainIncludes :Identity ; rdfs:range :Concept ; - owl:equivalentProperty skos:narrowMatch ; - owl:equivalentProperty madsrdf:hasNarrowerExternalAuthority . + owl:inverseOf :broadMatch ; + owl:equivalentProperty skos:narrowMatch , + madsrdf:hasNarrowerExternalAuthority . :prefLabel a owl:DatatypeProperty; rdfs:label "preferred label"@en, "föredragen benämning"@sv; #NOTE: föredragen term inom concept @@ -412,6 +413,14 @@ # Domain Specific Concept Classes +:genreForm a owl:ObjectProperty; + rdfs:label "genre/form"@sv; + rdfs:range :GenreForm; + # NOTE: Very (too?) powerful; relied on for classes derived from KBVF. + owl:propertyChainAxiom (:genreForm :broader) ; + rdfs:subPropertyOf dc:type, sdo:genre ; + owl:equivalentProperty bf2:genreForm . + :Topic a owl:Class; rdfs:label "Allmänt ämnesord"@sv; owl:equivalentClass bf2:Topic, madsrdf:Topic; @@ -419,7 +428,7 @@ :GenreForm a owl:Class; rdfs:label "Genre/form"@sv; - rdfs:subClassOf :Concept; + rdfs:subClassOf :Concept, :Category ; owl:equivalentClass bf2:GenreForm, madsrdf:GenreForm . :GenreFormScheme a owl:Class; diff --git a/source/vocab/intersectionpatterns.ttl b/source/vocab/intersectionpatterns.ttl new file mode 100644 index 000000000..08a94cdb3 --- /dev/null +++ b/source/vocab/intersectionpatterns.ttl @@ -0,0 +1,119 @@ +prefix rdfs: +prefix owl: +prefix skos: +prefix dc: +prefix sdo: +prefix ptg: + +prefix : +prefix marc: + +prefix kbrda: +prefix ktg: +prefix g: + + +prefix : + +## +# Abstract classes entailed by categories (possibly in turn entailed). +# Used for export-to-bf+rda (or revert-to-marc). + +## Work subclasses + +:Audio :abstract true ; + owl:intersectionOf (:Monograph [ owl:onProperty :category ; owl:hasValue ktg:Audio]) . + +:Cartography :abstract true ; + owl:intersectionOf (:Monograph [ owl:onProperty :category ; owl:hasValue g:Cartography]) . + +:Dataset :abstract true ; + owl:intersectionOf (:Monograph [ owl:onProperty :category ; owl:hasValue ktg:Dataset]) . + +:Movement :abstract true ; + owl:intersectionOf (:Monograph [ owl:onProperty :category ; owl:hasValue ktg:Movement]) . + +:MovingImage :abstract true ; owl:intersectionOf (:Monograph [ owl:onProperty :category ; owl:hasValue ktg:MovingImage]) . + +:Multimedia :abstract true ; owl:intersectionOf (:Monograph [ owl:onProperty :category ; owl:hasValue g:Multimedia]) . + +:NotatedMovement :abstract true ; owl:intersectionOf (:Monograph [ owl:onProperty :category ; owl:hasValue kbrda:NotatedMovement]) . + +:NotatedMusic :abstract true ; owl:intersectionOf (:Monograph [ owl:onProperty :category ; owl:hasValue kbrda:NotatedMusic]) . + +:Tactile :abstract true ; owl:intersectionOf (:Monograph [ owl:onProperty :category ; owl:hasValue ktg:Tactile]) . + +:Text :abstract true ; owl:intersectionOf (:Monograph [ owl:onProperty :category ; owl:hasValue kbrda:Text]) . + +## Instance subclasses + +# Coordinating categories defined in: <../categories/carrierforms.ttl> + +:Print owl:intersectionOf (:PhysicalResource [ owl:onProperty :category ; owl:hasValue ktg:Print]) . + +:Electronic owl:intersectionOf (:PhysicalResource [ owl:onProperty :category ; owl:hasValue ktg:AbstractElectronic ]) . + +:Manuscript owl:intersectionOf (:PhysicalResource [ owl:onProperty :category ; owl:hasValue ktg:Manuscript ]) . + +:Microform owl:intersectionOf (:PhysicalResource [ owl:onProperty :category ; owl:hasValue kbrda:Microform ]) . + +# TODO: missing 2: +#:Archival owl:intersectionOf (:PhysicalResource [ ... ]) . +#:Tactile owl:intersectionOf (:PhysicalResource [ ... ]) . + +# Complex Instance Classes + +:PhysicalResource a owl:Class ; + rdfs:subClassOf :Instance , dc:PhysicalResource ; + rdfs:subClassOf [ a owl:Restriction ; + owl:onProperty :category ; + owl:minQualifiedCardinality 1 ; + owl:onClass [ owl:onProperty :broaderTransitive ; + owl:hasValue ktg:PhysicalForm ] ] ; + rdfs:label "Fysisk resurs"@sv , "Physical resource"@en . + +:DigitalResource a owl:Class ; + rdfs:subClassOf :Instance ; + rdfs:subClassOf [ a owl:Restriction ; + owl:onProperty :category ; + owl:minQualifiedCardinality 1 ; + owl:onClass [ owl:onProperty :broaderTransitive ; + owl:hasValue ktg:DigitalForm ] ] ; + rdfs:label "Digital resurs"@sv , "Digital Resource"@en . + + +# TODO: +# Upgrade some marc: properties to KBV going forward? +#:videoCharacteristic +# rdfs:subPropertyOf :format ; +# rdfs:domain :VideoStorageMedium ; +# sdo:rangeIncludes :VideoFormat . +# - Or... +# Replace subclasses below with complex patterns? +# These richer types belong the discarded direct rich-type-design... + +:TactileMaterial rdfs:subClassOf :Material ; + skos:broadMatch marc:TacMaterialType . + +:ImageMaterial rdfs:subClassOf :Material ; + skos:broadMatch marc:NonProjectedType . + +:MapMaterial rdfs:subClassOf :Material ; + skos:broadMatch marc:MapMediumType . + +:VideoFormat rdfs:subClassOf :Material ; + skos:broadMatch marc:VideoFormatType . + +# TODO: ensure all of these (LHS) can be mapped to one specific type. +# Purpose here is just to define a MARC "rebus" based in on instanceOf (RHS): + +# :StillImageInstance :instanceOf :StillImage . +#:StillImageInstance +# ptg:abstract true ; +# owl:equivalentClass [ owl:onProperty :instanceOf ; owl:allValuesFrom :StillImage ] ; +# rdfs:subClassOf [ owl:onProperty :baseMaterial ; owl:someValuesFrom :ImageMaterial ] . + +# :MovingImageInstance :instanceOf :MovingImage . +# :ProjectedImageInstance :instanceOf :ProjectedImage . +# :NotatedMusicInstance :instanceOf :NotatedMusic . +# :KitInstance :instanceOf :Kit . diff --git a/source/vocab/things.ttl b/source/vocab/things.ttl index aec1086f1..6f4166dda 100644 --- a/source/vocab/things.ttl +++ b/source/vocab/things.ttl @@ -14,12 +14,17 @@ @prefix lcvi: . @prefix sdo: . -@prefix rdaent: . -@prefix rdael: . -@prefix rdacontent: . -@prefix rdamedia: . -@prefix rdacarrier: . -@prefix rdami: . +# FIXME: Broken? Also; map to openwemi (instead or as well)! +@prefix rdaent: . + +@prefix rdael: . + +# FIXME: replace use of these in mappings below with kbrda equivalents! +@prefix rdacontent: . +@prefix rdamedia: . +@prefix rdacarrier: . + +@prefix rdami: . @prefix rdau: . @prefix rdfa: . @@ -36,6 +41,8 @@ ##: skos:hasTopConcept :Print . +# NOTE: Some classes marked as :abstract may be entailed by a rule in . + ## # Creative Works @@ -76,6 +83,7 @@ :Instance a owl:Class ; :category marc:bib ; + ptg:abstract true ; rdfs:label "Instance"@en, "Instans"@sv; rdfs:subClassOf :Creation, :Embodiment ; owl:equivalentClass bf2:Instance ; @@ -132,28 +140,25 @@ # alternative: kbv:issuanceType dct:isReferencedBy [ rdfs:label "RDA 2.13" ] :issuanceType a owl:ObjectProperty; rdfs:label "Mode of issuance"@en, "utgivningssätt"@sv; + rdfs:domain :Instance ; owl:equivalentProperty bf2:issuance; - rdfs:comment "Kategorisering som reflekterar om en resurs är utgiven i en eller flera delar, på vilket sätt den uppdateras, och dess tänkta avslutning."@sv; + rdfs:comment "Kategorisering som reflekterar om en resurs är utgiven i en eller flera delar."@sv ; + # ", på vilket sätt den uppdateras, och dess tänkta avslutning."@sv; # NOTE: This is now an aspect of Work type! rdfs:subPropertyOf rdf:type, rdau:P60051 . # -#TODO move to concepts.ttl? -:genreForm a owl:ObjectProperty; - rdfs:label "genre/form"@sv; - rdfs:range :GenreForm; - rdfs:subPropertyOf dc:type, sdo:genre ; - owl:equivalentProperty bf2:genreForm . - :ContentType a owl:Class; rdfs:label "Innehållstyp"@sv; + rdfs:subClassOf :Category ; owl:equivalentClass bf2:Content . :MediaType a owl:Class; rdfs:label "Medietyp"@sv; + rdfs:subClassOf :Category ; owl:equivalentClass bf2:Media, dc:MediaType . -:CarrierType a owl:Class; # a :MediaType ? +:CarrierType a owl:Class; rdfs:label "Bärartyp"@sv; - rdfs:subClassOf :MediaType ; + rdfs:subClassOf :MediaType, :Category ; owl:equivalentClass bf2:Carrier . :IssuanceType owl:equivalentClass bf2:Issuance; @@ -163,34 +168,6 @@ sdo:domainIncludes :ContentType, :MediaType, :CarrierType ; rdfs:label "Termgroup"@en, "Termgrupp"@sv . -# Generation Rules for Alignment Mappings: - -# Vocab Macro: -# INSERT { -# ?enumType rdfs:subClassOf [ a owl:Restriction; -# owl:onProperty bf2:carrier; owl:hasValue ?enumType ] . -#} WHERE { -# ?enumProp rdfs:subPropertyOf rdf:type ; -# rdfs:range ?metaType . -# ?enumType a ?metaType . -#} - - -# MARC Aligments for Editing - -# RDA Alignments (some draft examples...) - -#:Unmediated a bf2:Media; -# skos:exactMatch rdamedia:1007 ; # "unmediated" ("text", "non-projected graphic") -# rdfs:label "Omedierad"@sv; -# rdfs:subClassOf [ a owl:Restriction; owl:onProperty bf2:media; owl:hasValue :Unmediated ] . - -#:Volume a owl:Class, bf2:Carrier; -# rdfs:label "Volym"@sv; -# skos:exactMatch rdacarrier:1049; # "volume" -# rdfs:subClassOf :Unmediated, -# [ a owl:Restriction; owl:onProperty bf2:carrier; owl:hasValue :Volume ] . - # Detailed Carrier Enumeration Properties and Types @@ -238,6 +215,7 @@ # subClassOf bf2:Work Types :Audio a owl:Class; + #:category :SensoryForm ; rdfs:label "Ljud"@sv; skos:definition "Resurs uttryckt i en hörbar form, inklusive musik och andra ljud."@sv; rdfs:subClassOf :Work; @@ -246,6 +224,7 @@ :Cartography a owl:Class; rdfs:label "Karta"@sv; + #skos:prefLabel "Kartografiskt verk"@sv , "Cartography"@en ; skos:definition "Resurs som visar spatial information, inkluderar kartor, atlaser, glober med mera."@sv; rdfs:subClassOf :Work; owl:equivalentClass bf2:Cartography . @@ -255,7 +234,10 @@ # rdfs:label "Dataset"@sv; # skos:definition "Data kodad i en definierad struktur. Inkluderar bland annat numeriska data, miljödata. Används av applikationsprogramvara för att beräkna medelvärden, korrelationer, eller för att producera modeller etc. Visas normalt inte i sin råa form."@sv; # rdfs:subClassOf :Work; - owl:equivalentClass bf2:Dataset . + rdfs:subClassOf :Integrating ; + rdfs:label "Dataset"@en , + "Dataset"@sv ; + owl:equivalentClass bf2:Dataset, dctype:Dataset . :MixedMaterial a owl:Class; rdfs:label "Blandat material"@sv; @@ -303,9 +285,11 @@ skos:broadMatch rdacontent:1021 ; # "three-dimensional form" rdfs:subClassOf :Work; owl:equivalentClass bf2:Object . + #:altLabel "Intensional Object"@en , "Syftesmässig sak"@sv . :StillImage a owl:Class; rdfs:label "Stillbild"@sv; + :pluralLabel "Stillbilder"@sv ; skos:definition "Resurs uttryckt genom linje, form, skuggning, etc. Avsedd att uppfattas visuellt som en stillbild eller bilder i två dimensioner."@sv; skos:exactMatch rdacontent:1014 ; # "still image" rdfs:subClassOf :Visual ; @@ -327,6 +311,7 @@ # rdfs:subClassOf :Work . :Kit a owl:Class; + # rdfs:seeAlso ; rdfs:label "Kit"@en, "Paket"@sv; rdfs:subClassOf :Work . @@ -348,6 +333,7 @@ owl:equivalentClass dctype:Software . :Visual a owl:Class; + #:category :SensoryForm ; ptg:abstract true ; rdfs:label "Visual"@en, "Visuell resurs"@sv ; skos:altLabel "Bild"@sv ; @@ -435,7 +421,8 @@ # Mereological Dimensions (Issuance / Composition) -:Monograph a owl:Class, :IssuanceType; +:Monograph a owl:Class ; + rdfs:subClassOf :Work ; rdfs:label "Monograph"@en, "Monografisk resurs"@sv; skos:exactMatch lcvi:mono, rdami:1001 . # "single unit"@en @@ -443,7 +430,8 @@ rdfs:label "Part"@en, "Del av resurs"@sv; ptg:abstract true . -:ComponentPart a owl:Class, :IssuanceType; +:ComponentPart a owl:Class ; + owl:deprecated true ; # {| rdfs:label "Ersatt av Monograph."@sv |} rdfs:label "Component Part"@en, "Del av sammansatt resurs"@sv; rdfs:subClassOf :Part . # Is this really Multipart monograph? @@ -453,21 +441,24 @@ ptg:abstract true . # Not used in marcframe from 1.15.0. -:Continuing a owl:Class; - rdfs:label "Continuing"@en, "Fortlöpande resurs"@sv; - ptg:abstract true; - rdfs:subClassOf :Aggregate . - -:Collection a owl:Class, :IssuanceType; +:Collection a owl:Class ; + rdfs:subClassOf :Work ; rdfs:label "Collection"@en, "Samling"@sv; rdfs:subClassOf :Aggregate; owl:equivalentClass dctype:Collection . -:SubCollection a owl:Class, :IssuanceType; +:SubCollection a owl:Class ; + owl:deprecated true ; # {| rdfs:label "Ersatt av enbart Collection."@sv |} rdfs:label "Subcollection"@en, "Delsamling"@sv; rdfs:subClassOf :Collection, :Part . -:Integrating a owl:Class, :IssuanceType; +:Continuing a owl:Class; + rdfs:label "Continuing"@en, "Fortlöpande resurs"@sv; # Diachronic? + ptg:abstract true; + rdfs:subClassOf :Aggregate . + +:Integrating a owl:Class ; + rdfs:subClassOf :Work ; rdfs:label "Integrating"@en, "Integrerande resurs"@sv; skos:exactMatch lcvi:intg, rdami:1004 ; # "integrating resource"@en rdfs:subClassOf :Continuing . @@ -477,40 +468,31 @@ # owl:equivalentClass bibo:DocumentPart; # rdfs:subClassOf :Monograph, :ComponentPart . # -:SerialComponentPart a owl:Class, :IssuanceType; +:SerialComponentPart a owl:Class ; + owl:deprecated true ; # {| rdfs:label "Ersatt av Monograph."@sv |} # TODO: Är dessa *faktiskt* ComponentPart? rdfs:label "Serial Component Part"@en, "Del av sammansatt seriell resurs"@sv; rdfs:subClassOf :Serial, :ComponentPart . -:Multipart a owl:Class; - ptg:abstract true; - rdfs:label "Multipart"@en, "Multipel del"@sv; - rdfs:subClassOf :Aggregate . +#:Multipart a owl:Class; +# ptg:abstract true; +# rdfs:label "Multipart"@en, "Multipel del"@sv; +# rdfs:subClassOf :Aggregate . #:MultipartMonograph a owl:Class; # rdfs:label "Flerbandsverk"@sv; # skos:exactMatch rdami:1002 ; # "multipart monograph"@en # rdfs:subClassOf :Multipart, :Monograph . -:Serial a owl:Class, :IssuanceType; +:Serial a owl:Class ; + rdfs:subClassOf :Work ; rdfs:label "Serial"@en, "Seriell resurs"@sv; skos:exactMatch lcvi:serl, rdami:1003 ; # "serial" @en rdfs:subClassOf :Continuing . -# OBSOLOTE CHOICE should use serial instead. -#:Periodical a owl:Class, :IssuanceType; -# rdfs:label "Periodical"@en, "Periodika"@sv; -# skos:altLabel "Periodisk resurs"@sv; -# rdfs:comment "Samma sak som seriell resurs."@sv . - -#:CreativeWorkSeries a owl:Class; -# owl:equivalentClass sdo:CreativeWorkSeries; -# rdfs:subClassOf :Serial; -# rdfs:label "Creative Work Series"@en, "Utgivningsserie"@sv . - -:LicenseAgreementBoundDescription a owl:Class, :IssuanceType ; +:LicenseAgreementBoundDescription a owl:Class ; :category :pending ; - rdfs:label "License Agreement Bound Description"@en, "Licensavtalsbunden beskrivning"@sv; - rdfs:subClassOf :Aggregate . + owl:deprecated true ; + rdfs:label "License Agreement Bound Description"@en, "Licensavtalsbunden beskrivning"@sv . :SerialEdition a owl:Class ; rdfs:subClassOf :Creation, :TemporalEntity , [ a owl:Restriction ; @@ -540,10 +522,12 @@ owl:equivalentClass bf2:Archival . :Electronic a owl:Class; + ptg:abstract true ; rdfs:label "Elektronisk"@sv; skos:definition "Resurs som är avsedd för manipulering av en dator, åtkomst direkt eller på distans."@sv; rdfs:subClassOf :Instance; :inCollection marc:typeFromBib007; + #skos:exactMatch kbrda:Computer, marc:Electronic ; skos:closeMatch rdamedia:1003 ; # "computer" owl:equivalentClass bf2:Electronic . @@ -554,13 +538,17 @@ owl:equivalentClass bf2:Manuscript, bibo:Manuscript . :Print a owl:Class; + :abstract true ; rdfs:label "Tryck"@sv; skos:definition "Resurs som är mångfaldigad genom tryck."@sv; rdfs:subClassOf :Instance; owl:equivalentClass bf2:Print . :Tactile a owl:Class; + :abstract true ; + #:category :SensoryForm ; rdfs:label "Taktil resurs"@sv; + skos:altLabel "Taktilt verk"@sv; skos:definition "Resurs som är avsedd att uppfattas genom beröring."@sv; rdfs:subClassOf :Instance; :inCollection marc:typeFromBib007; @@ -577,6 +565,7 @@ # Combined "Instance with restricted Work" types from MARC (007) :StillImageInstance a owl:Class; + owl:deprecated true ; rdfs:label "Still Image Instance"@en, "Instans av stillbild"@sv; rdfs:subClassOf :Instance ; :inCollection marc:typeFromBib007; @@ -586,6 +575,7 @@ ] . :MovingImageInstance a owl:Class; + owl:deprecated true ; :category :pending ; rdfs:label "Instans av rörlig bild"@sv; rdfs:subClassOf :Instance ; @@ -596,6 +586,7 @@ ] . :KitInstance a owl:Class; + owl:deprecated true ; :category :pending ; rdfs:label "Kit Instance"@en, "Instans av paket"@sv; rdfs:subClassOf :Instance ; @@ -616,6 +607,7 @@ ] . :TextInstance a owl:Class; + owl:deprecated true ; :category :pending ; rdfs:label "Text Instance"@en, "Instans av text"@sv; rdfs:subClassOf :Instance ; @@ -626,6 +618,7 @@ ] . :ProjectedImageInstance a owl:Class; + owl:deprecated true ; :category :pending ; rdfs:label "Projected Image Instance"@en, "Instans av projicerad bild"@sv; rdfs:subClassOf :Instance ; @@ -638,19 +631,21 @@ # Concrete Types (can grow a lot, be combined with e.g. productontology...) # TODO: Do some classes here still conflate Work/Instance? (Apart from some commented?) +# FIXME: Redefine as Work (possibly complex) subclass; *calculate* on convert/revert to marc :Globe a owl:Class; rdfs:label "Globe"@en, "Kartglob"@sv; - rdfs:subClassOf :Instance ; + rdfs:subClassOf :Instance ; # FIXME: :Cartography :inCollection marc:typeFromBib007; rdfs:subClassOf [ a owl:Restriction ; owl:onProperty :instanceOf ; owl:allValuesFrom :Cartography ] . +# FIXME: Redefine as Work (possibly complex) subclass; *calculate* on convert/revert to marc :Map a owl:Class; rdfs:label "Map"@en, "Karta"@sv; owl:equivalentClass bibo:Map ; - rdfs:subClassOf :Instance ; + rdfs:subClassOf :Instance ; # FIXME: :Cartography :inCollection marc:typeFromBib007; rdfs:subClassOf [ a owl:Restriction ; owl:onProperty :instanceOf ; @@ -658,6 +653,7 @@ ] . :RemoteSensingImage a owl:Class; + owl:deprecated true ; :category :pending ; rdfs:label "Satellitbild"@sv; # Fjärranalysbild? rdfs:subClassOf :Instance ; @@ -685,152 +681,10 @@ owl:allValuesFrom :MovingImage ] . -# TODO: Aligning ideas: +# on Instance. Cf. Monograph subclassof Work ("purpose of expression") -# Common Carrier Types +:SingleUnit a :IssuanceType ; + rdfs:label "Enskild enhet"@sv . -#:Disc -#:CD -#:DVD - -# TODO: missing rdamedia mappings: -# skos:exactMatch rdamedia:1004 ; # "microscopic" -# skos:exactMatch rdamedia:1006 ; # "stereographic" -# skos:exactMatch rdamedia:1008 ; # "video" - -#:Database a owl:Class; -# rdfs:label "Databas"@sv; -# rdfs:subClassOf :Integrating, :Electronic, :Dataset . -# -#:Website a owl:Class; -# rdfs:label "Webbplats"@sv; -# rdfs:subClassOf :Integrating, :Multimedia, :Text; -# owl:equivalentClass bibo:Website . -# -#:Book a owl:Class; -# rdfs:label "Book"@en, "Bok"@sv; -# owl:equivalentClass bibo:Book; -# rdfs:subClassOf -# :Print, -# [ a owl:Restriction; owl:onProperty :instanceOf; owl:allValuesFrom :Text ] . -# [ a owl:Restriction; owl:onProperty :issuanceType; owl:hasValue :Monograph ] . -# #[ a owl:Restriction; owl:onProperty :extent; owl:allValuesFrom :PageCount ] . -# -#:BookSeries a owl:Class; -# rdfs:subClassOf :Text, :Serial . -# -#:MultiVolumeBook a owl:Class; -# rdfs:label "Multipart Book"@en, "Bokverk"@sv; -# skos:altLabel "Flervolymsbok"@sv; -# rdfs:subClassOf :Book, :MultipartMonograph; -# owl:equivalentClass bibo:MultiVolumeBook . -# -#:BookVolume a owl:Class; -# rdfs:label "Book Volume"@en, "Bokband"@sv ; -# skos:altLabel "Band"@sv, "Volym"@sv ; -# rdfs:subClassOf :Book, -# :PublicationVolume . -# -#:PrintedText a owl:Class; -# rdfs:label "Tryckt text"@sv; -# rdfs:subClassOf :Text, :Print . -# -#:PrintedBook a owl:Class; -# rdfs:label "Printed Book"@en, "Tryckt bok"@sv; -# rdfs:subClassOf :Book, :PrintedText; -# rdfs:subClassOf [ -# a owl:Restriction; -# owl:onProperty :contentType; -# owl:hasValue :Text -# ], [ -# a owl:Restriction; -# owl:onProperty :mediaType; -# owl:hasValue :Unmediated -# ], [ -# a owl:Restriction; -# owl:onProperty :carrierType; -# owl:hasValue :Volume -# ] . -# -#:EBook a owl:Class; -# rdfs:label "E-bok"@sv; -# rdfs:subClassOf :Book, :Electronic . -# -#:Audiobook a owl:Class; -# rdfs:label "Ljudbok"@sv; -# #owl:equivalentClass bibo:AudioDocument; -# rdfs:subClassOf :Book, :Audio, bibo:AudioDocument . - -#CDBook -#CDMap -#ESerial -#Music -#MusicCD - - -# TODO: informative: -# - -# - # old (BF1) - -# TODO: missing rdacarrier mappings: -# skos:exactMatch rdacarrier:1001 ; # "Audio carriers" # skos:closeMatch rdamedia:1001 -# skos:exactMatch rdacarrier:1002 ; # "audio cartridge" -# skos:exactMatch rdacarrier:1003 ; # "audio cylinder" -# skos:exactMatch rdacarrier:1004 ; # "audio disc" -# skos:exactMatch rdacarrier:1005 ; # "sound-track reel" -# skos:exactMatch rdacarrier:1006 ; # "audio roll" -# skos:exactMatch rdacarrier:1007 ; # "audiocassette" -# skos:exactMatch rdacarrier:1008 ; # "audiotape reel" - -# skos:exactMatch rdacarrier:1010 ; # "Computer carriers" # skos:closeMatch rdamedia:1003 -# skos:exactMatch rdacarrier:1011 ; # "computer card" -# skos:exactMatch rdacarrier:1012 ; # "computer chip cartridge" -# skos:exactMatch rdacarrier:1013 ; # "computer disc" -# skos:exactMatch rdacarrier:1014 ; # "computer disc cartridge" -# skos:exactMatch rdacarrier:1015 ; # "computer tape cartridge" -# skos:exactMatch rdacarrier:1016 ; # "computer tape cassette" -# skos:exactMatch rdacarrier:1017 ; # "computer tape reel" -# skos:exactMatch rdacarrier:1018 ; # "online resource" - -# skos:exactMatch rdacarrier:1020 ; # "Microform carriers" # skos:closeMatch rdamedia:1002 -# skos:exactMatch rdacarrier:1021 ; # "aperture card" -# skos:exactMatch rdacarrier:1022 ; # "microfiche" -# skos:exactMatch rdacarrier:1023 ; # "microfiche cassette" -# skos:exactMatch rdacarrier:1024 ; # "microfilm cartridge" -# skos:exactMatch rdacarrier:1025 ; # "microfilm cassette" -# skos:exactMatch rdacarrier:1026 ; # "microfilm reel" -# skos:exactMatch rdacarrier:1027 ; # "microfilm slip" -# skos:exactMatch rdacarrier:1028 ; # "microopaque" -# skos:exactMatch rdacarrier:1056 ; # "microfilm roll" - -# skos:exactMatch rdacarrier:1029 ; # "Microscopic carriers" # skos:closeMatch rdamedia:1004 -# skos:exactMatch rdacarrier:1030 ; # "microscope slide" - -# skos:exactMatch rdacarrier:1031 ; # "Projected image carriers" # skos:closeMatch rdamedia:1005 -# skos:exactMatch rdacarrier:1032 ; # "film cartridge" -# skos:exactMatch rdacarrier:1033 ; # "film cassette" -# skos:exactMatch rdacarrier:1034 ; # "film reel" -# skos:exactMatch rdacarrier:1035 ; # "filmslip" -# skos:exactMatch rdacarrier:1036 ; # "filmstrip" -# skos:exactMatch rdacarrier:1037 ; # "filmstrip cartridge" -# skos:exactMatch rdacarrier:1039 ; # "overhead transparency" -# skos:exactMatch rdacarrier:1040 ; # "slide" -# skos:exactMatch rdacarrier:1069 ; # "film roll" - -# skos:exactMatch rdacarrier:1041 ; # "Stereographic carriers" # skos:closeMatch rdamedia:1006 -# skos:exactMatch rdacarrier:1042 ; # "stereograph card" -# skos:exactMatch rdacarrier:1043 ; # "stereograph disc" - -# skos:exactMatch rdacarrier:1044 ; # "Unmediated carriers" # skos:closeMatch rdamedia:1007 -# skos:exactMatch rdacarrier:1045 ; # "card" -# skos:exactMatch rdacarrier:1046 ; # "flipchart" -# skos:exactMatch rdacarrier:1047 ; # "roll" -# skos:exactMatch rdacarrier:1048 ; # "sheet" -# skos:exactMatch rdacarrier:1049 ; # "volume" -# skos:exactMatch rdacarrier:1059 ; # "object" - -# skos:exactMatch rdacarrier:1050 ; # "Video carriers" # skos:closeMatch rdamedia:1008 -# skos:exactMatch rdacarrier:1051 ; # "video cartridge" -# skos:exactMatch rdacarrier:1052 ; # "videocassette" -# skos:exactMatch rdacarrier:1053 ; # "videotape reel" -# skos:exactMatch rdacarrier:1060 ; # "videodisc" +:MultipleUnits a :IssuanceType ; + rdfs:label "Flera enheter"@sv . diff --git a/source/vocab/update.rq b/source/vocab/update.rq index cb9942999..cb3a7025e 100644 --- a/source/vocab/update.rq +++ b/source/vocab/update.rq @@ -46,10 +46,10 @@ delete { } where { values (?notawork) { (:Manuscript) - (:Collection) - (:Integrating) - (:Monograph) - (:Serial) + #(:Collection) + #(:Integrating) + #(:Monograph) + #(:Serial) (:Series) } } diff --git a/sys/context/shared.jsonld b/sys/context/shared.jsonld index fd80062fc..4c871dd73 100644 --- a/sys/context/shared.jsonld +++ b/sys/context/shared.jsonld @@ -52,7 +52,8 @@ "commentByLang": {"@id": "comment", "@container": "@language"}, "prefLabelByLang": {"@id": "prefLabel", "@container": "@language"}, "altLabelByLang": {"@id": "altLabel", "@container": "@language"}, - "hiddenLabelByLang": {"@id": "hiddenLabel", "@container": "@language"}, + "singularLabelByLang": {"@id": "singularLabel", "@container": "@language"}, + "pluralLabelByLang": {"@id": "pluralLabel", "@container": "@language"}, "noteByLang": {"@id": "note", "@container": "@language"}, "definitionByLang": {"@id": "definition", "@container": "@language"}, "scopeNoteByLang": {"@id": "scopeNote", "@container": "@language"},