|
26 | 26 | PROV = rdflib.Namespace('http://www.w3.org/ns/prov#') # "provenance" |
27 | 27 | # non-standard namespace for datacite terms (resolves to datacite docs) |
28 | 28 | DATACITE = rdflib.Namespace('https://schema.datacite.org/meta/kernel-4/#') |
29 | | - |
| 29 | +SCHEMA = rdflib.Namespace('https://schema.org/') |
30 | 30 |
|
31 | 31 | # namespace prefixes that will be shortened by default |
32 | 32 | # when serialized, instead of displaying the full iri |
|
43 | 43 | } |
44 | 44 |
|
45 | 45 |
|
| 46 | +DATACITE_SCHEMA_RESOURCE_TYPE_GENERAL_MAPPING = { |
| 47 | + DATACITE.Audiovisual: SCHEMA.MediaObject, |
| 48 | + DATACITE.Book: SCHEMA.Book, |
| 49 | + DATACITE.BookChapter: SCHEMA.Chapter, |
| 50 | + DATACITE.Collection: SCHEMA.Collection, |
| 51 | + DATACITE.ComputationalNotebook: SCHEMA.SoftwareSourceCode, |
| 52 | + DATACITE.ConferencePaper: SCHEMA.Article, |
| 53 | + DATACITE.ConferenceProceeding: SCHEMA.Periodical, |
| 54 | + DATACITE.DataPaper: SCHEMA.Article, |
| 55 | + DATACITE.Dataset: SCHEMA.Dataset, |
| 56 | + DATACITE.Dissertation: SCHEMA.Thesis, |
| 57 | + DATACITE.Event: SCHEMA.Event, |
| 58 | + DATACITE.Image: SCHEMA.ImageObject, |
| 59 | + DATACITE.InteractiveResource: SCHEMA.CreativeWork, |
| 60 | + DATACITE.Journal: SCHEMA.Periodical, |
| 61 | + DATACITE.JournalArticle: SCHEMA.ScholarlyArticle, |
| 62 | + DATACITE.Model: SCHEMA.CreativeWork, |
| 63 | + DATACITE.OutputManagementPlan: SCHEMA.HowTo, |
| 64 | + DATACITE.PeerReview: SCHEMA.Review, |
| 65 | + DATACITE.PhysicalObject: SCHEMA.Thing, |
| 66 | + DATACITE.Preprint: SCHEMA.ScholarlyArticle, |
| 67 | + DATACITE.Report: SCHEMA.Report, |
| 68 | + DATACITE.Service: SCHEMA.Service, |
| 69 | + DATACITE.Software: SCHEMA.SoftwareSourceCode, |
| 70 | + DATACITE.Sound: SCHEMA.AudioObject, |
| 71 | + DATACITE.Standard: SCHEMA.CreativeWork, |
| 72 | + DATACITE.Text: SCHEMA.Text, |
| 73 | + DATACITE.Workflow: SCHEMA.HowTo, |
| 74 | + DATACITE.Other: SCHEMA.CreativeWork, |
| 75 | + DATACITE.Instrument: SCHEMA.MeasurementMethodEnum, |
| 76 | + DATACITE.StudyRegistration: SCHEMA.Text, |
| 77 | + OSF.Project: SCHEMA.CreativeWork, |
| 78 | + OSF.Preprint: SCHEMA.ScholarlyArticle, |
| 79 | + OSF.Registration: SCHEMA.Text, |
| 80 | + OSF.File: SCHEMA.DigitalDocument, |
| 81 | + OSF.ProjectComponent: SCHEMA.CreativeWork, |
| 82 | + OSF.RegistrationComponent: SCHEMA.Text, |
| 83 | +} |
| 84 | + |
| 85 | + |
| 86 | +DEFAULT_SCHEMADOTORG_RESOURCE_TYPE = SCHEMA.CreativeWork |
| 87 | + |
| 88 | + |
46 | 89 | def contextualized_graph(graph=None) -> rdflib.Graph: |
47 | 90 | '''bind default namespace prefixes to a new (or given) rdf graph |
48 | 91 | ''' |
@@ -147,3 +190,6 @@ def smells_like_iri(maybe_iri: str) -> bool: |
147 | 190 | isinstance(maybe_iri, str) |
148 | 191 | and '://' in maybe_iri |
149 | 192 | ) |
| 193 | + |
| 194 | +def map_resource_type_general_datacite_to_scheme(_type_iri: rdflib.URIRef, resource_rdftype: rdflib.URIRef) -> str: |
| 195 | + return DATACITE_SCHEMA_RESOURCE_TYPE_GENERAL_MAPPING.get(_type_iri) or DATACITE_SCHEMA_RESOURCE_TYPE_GENERAL_MAPPING.get(resource_rdftype, DEFAULT_SCHEMADOTORG_RESOURCE_TYPE) |
0 commit comments