diff --git a/edpop-record-ontology.ttl b/edpop-record-ontology.ttl index 632ea90..7b7cbc0 100644 --- a/edpop-record-ontology.ttl +++ b/edpop-record-ontology.ttl @@ -4,11 +4,15 @@ @prefix dc: . @prefix dcterms: . @prefix skos: . +@prefix xsd: . @prefix edpoprec: . edpoprec: a owl:Ontology ; dcterms:license . + +### CATALOG CLASSES + edpoprec:Catalog a rdfs:Class ; skos:prefLabel "Catalog"@en ; skos:description "External repository of bibliographical or biographical data" . @@ -16,13 +20,121 @@ edpoprec:Catalog a rdfs:Class ; edpoprec:BibliographicalCatalog rdfs:subClassOf edpoprec:Catalog . edpoprec:BiographicalCatalog rdfs:subClassOf edpoprec:Catalog . + +### RECORD CLASSES + +# I have been thinking if we should indeed call these classes "records", or rather something +# like "Book" or "Person". But I think it is best if we think of them as representing +# records (i.e., they represent the original records from the catalogues we take them from) +# rather than that they represent the objects these records describe. + edpoprec:Record a rdfs:Class ; skos:prefLabel "Record"@en ; skos:description "Bibliographical or biographical record" . -edpoprec:BibliographicalRecord rdfs:subClassOf edpoprec:Record . +edpoprec:BibliographicalRecord rdfs:subClassOf edpoprec:Record ; + rdfs:subClassOf + [ a owl:Restriction ; + owl:onProperty edpoprec:title ; + owl:maxCardinality 1 + ] . + edpoprec:BiographicalRecord rdfs:subClassOf edpoprec:Record . + +### COMMON PROPERTIES FOR ALL RECORDS + edpoprec:fromCatalog a rdf:Property ; + skos:prefLabel "From catalog"@en ; + skos:description "The catalog this record was originally taken from" ; rdfs:domain edpoprec:Record ; rdfs:range edpoprec:Catalog . + +edpoprec:identifier a rdf:Property ; + skos:prefLabel "Identifier"@en ; + skos:description "Unique identifier used by the source catalog" ; + rdfs:domain edpoprec:Record ; + rdfs:range edpoprec:Catalog . + +edpoprec:publicURL a rdf:Property ; + skos:prefLabel "Public URL"@en ; + skos:description "Public URL in the source catalog" ; + rdfs:domain edpoprec:Record ; + rdfs:range edpoprec:Catalog . + +# Original data: supposed to contain a blank record with all (relevant) original data, +# rudimentally converted into RDF, so that it will be possible to show this data in the VRE. +edpoprec:originalData a rdf:Property ; + skos:prefLabel "Original data"@en ; + skos:description "All data from the original catalogue record" ; + rdfs:domain edpoprec:Record . + +### PROPERTIES SPECIFIC FOR BIBLIOGRAPHICAL RECORDS + +# So far we only define string literals as ranges for these properties, but we could think +# of also allowing other classes, like our own biographical records for authors. + +# The string literals are meant to be the best effort of EDPOP Explorer to give a +# somehow normalized, human-readable representation of the property, but they are not +# thesaurized and certainly not guaranteed to be the same if they are conceptually the same +# (e.g., Köln or Keulen for the city of Cologne). + +# My proposal would be to use these properties that can be extracted from the original record +# in a deterministic way. That means: only string literals, and also links to other records +# if they are defined in the original catalogues (such as links to CT Thesaurus). +# Users will be able to enrich, correct and further normalize this data with annotations. +# Annotations may also be used, perhaps, for automatic non-deterministic normalizations, +# such as the place of publication as a link to Wikidata. + +edpoprec:title a rdf:property ; + skos:prefLabel "Title"@en ; + rdfs:domain edpoprec:BibliographicalRecord ; + rdfs:range xsd:string . + +edpoprec:alternativeTitle a rdf:property ; + skos:prefLabel "Alternative title"@en ; + rdfs:domain edpoprec:BibliographicalRecord ; + rdfs:range xsd:string . + +# Or: contributor? And how to define the role of the contributor? Perhaps a separate +# class is better. The catalogues generally describe the roles of the contributors quite +# well (author, translator, illustrator, etc.) +edpoprec:author a rdf:property ; + skos:prefLabel "Author"@en ; + rdfs:domain edpoprec:BibliographicalRecord ; + rdfs:range xsd:string . + +edpoprec:publisherOrPrinter a rdf:property ; + skos:prefLabel "Publisher or printer"@en ; + rdfs:domain edpoprec:BibliographicalRecord ; + rdfs:range xsd:string . + +edpoprec:placeOfPublication a rdf:property ; + skos:prefLabel "Place of publication"@en ; + rdfs:domain edpoprec:BibliographicalRecord ; + rdfs:range xsd:string . + +# Dating has xsd:string as its range, because the date is very often not a simple year +# in the catalogues but can be anything, like [1650] for an estimation or a range like +# 1800-1914. +edpoprec:dating a rdf:property ; + skos:prefLabel "Dating"@en ; + rdfs:domain edpoprec:BibliographicalRecord ; + rdfs:range xsd:string . + +# For language, not sure which class to use. There are various IRI collections, of which +# ISO 639-3 (e.g. https://iso639-3.sil.org/code/nld) and Glottolog +# (e.g. https://glottolog.org/resource/languoid/id/mode1257) seem most attractive, +# or perhaps Wikidata. Or just the ISO 639-3 code as a literal? +edpoprec:language a rdf:property ; + skos:prefLabel "Language"@en ; + rdfs:domain edpoprec:BibliographicalRecord . + +edpoprec:format a rdf:property ; + skos:prefLabel "Format"@en ; + skos:description "Format or physical description" ; + rdfs:domain edpoprec:BibliographicalRecord ; + rdfs:range xsd:string . + +# Leaving out for now: genre (a lot of variation across catalogues, but should nevertheless +# quickly be visible for VRE users), illustrations (same problem) and notes/description.