├── resources ├── Pez.png ├── bibliography.html └── Network_APIS2Papilotte.jpg ├── context.json ├── README.md ├── rationale.md └── prosopogrAPhI.yaml /resources/Pez.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IPIF/prosopogrAPhI/HEAD/resources/Pez.png -------------------------------------------------------------------------------- /resources/bibliography.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IPIF/prosopogrAPhI/HEAD/resources/bibliography.html -------------------------------------------------------------------------------- /resources/Network_APIS2Papilotte.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IPIF/prosopogrAPhI/HEAD/resources/Network_APIS2Papilotte.jpg -------------------------------------------------------------------------------- /context.json: -------------------------------------------------------------------------------- 1 | { 2 | "@base":"http://prosopography.org/example/#", 3 | 4 | "proso":"http://prosopography.org/#", 5 | "owl":"http://w3c.org/owl/#####", 6 | "skos":"http://www.w3.org/2004/02/skos/core#", 7 | "factoids": "proso:factoids", 8 | "persons": "proso:persons", 9 | "sources": "proso:sources", 10 | "statements": "proso:statements", 11 | "source-refs": { 12 | "@id":"proso:source", 13 | "@type": "@id" 14 | }, 15 | "person-refs": { 16 | "@id":"proso:person", 17 | "@type": "@id" 18 | }, 19 | "factoid-refs": { 20 | "@id":"proso:inFactoid", 21 | "@type": "@id" 22 | }, 23 | 24 | "label": "http://www.w3.org/2000/01/rdf-schema#label", 25 | "uri": { 26 | "@id":"skos:exactMatch", 27 | "@type": "@id" 28 | }, 29 | "uris": { 30 | "@id":"skos:exactMatch", 31 | "@type": "@id" 32 | }, 33 | "createdBy": "proso:createdBy", 34 | "createdWhen": { 35 | "@id": "proso:createdWhen", 36 | "@type": "xsd:dateTime" 37 | }, 38 | "modifiedBy": "proso:modifiedBy", 39 | "modifiedWhen": { 40 | "@id": "proso:modifiedWhen", 41 | "@type": "xsd:dateTime" 42 | }, 43 | "statementText": { 44 | "@id": "proso:statementText", 45 | "@type" : "xsd:string" 46 | }, 47 | "name": { 48 | "@id":"proso:name", 49 | "@type":"xsd:string" 50 | }, 51 | "date": "proso:date", 52 | "sortdate": { 53 | "@id": "proso:sortdate", 54 | "@type": "xsd:date" 55 | }, 56 | "places": "proso:places", 57 | "relatesToPersons": "proso:relatesToPersons", 58 | "role": "proso:role", 59 | "memberOf": "proso:memberOf", 60 | "derivedFrom": "http://www.w3.org/ns/prov#wasDerivedFrom" 61 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | International Prosopographical Interchange Framework (IPIF) 2 | =========================================================== 3 | 4 | This is a draft for an RESTful API for *prosopographical data*. 5 | 6 | It should allow you to search for factoid modeled data on persons extracted from historical sources, and to update resources based on the model. 7 | With "factoid" model we refer to Bradley/Short 2005. See for an ontology of the factoid model: https://github.com/johnBradley501/FPO 8 | 9 | At one day or the other it will be available at http://prosopography.org 10 | 11 | Initiated by Georg Vogeler (Graz University, georg.vogler@uni-graz.at), but developed by the collective intelligence of the following persons: 12 | * Gunter Vasold (Univ. Graz) 13 | * Daniel Jeller (ICARus Vienna) 14 | * Thomas Wallnig (Univ. Vienna) 15 | * Matthew Wilcoxson (Univ. Oxford) 16 | * Matthias Schlögl (ÖAW) 17 | * Miguel Vieira (King's Digital Lab London) 18 | * John Bradley (London) 19 | * Francesco Beretta (LARHRA, Lyon) 20 | * Rainer Simon (AIT Vienna) 21 | * Stefan Eichert (ÖAW Vienna) 22 | * Bärbel Kröger (Germania Sacra, Göttingen) 23 | * Christian Popp (Germania Sacra, Göttingen) 24 | * Vincent Cheng (Czech Academy) 25 | * Dagmar Mrozik 26 | * James Kelly (University of Durham) 27 | * Nada Zečević 28 | * Ekaterini Mitsiou (Univ. Vienna) 29 | * P. Alkuin Schachenmayr OCist (Stift Heiligenkreuz) 30 | * Stephan Makowksi (CCeH Köln) 31 | * Hedvika Kuchařová, Jana Borovičková (Prague) 32 | * Irene Rabl 33 | * Katja Almberger 34 | * (tbc) 35 | 36 | Started in 2016 in a workshop at Vienna University. 37 | Substantially enhanced during the prosopography hackathon 2019 February (Vienna). 38 | 39 | The major file in this is the swagger description of the proposed API ([prosopogrAPhI.yaml](https://github.com/GVogeler/prosopogrAPhI/blob/master/prosopogrAPhI.yaml)). The [rationale.md](rationale.md) gives you some background to it. 40 | 41 | The [wiki](https://github.com/GVogeler/prosopogrAPhI/wiki) contains some proof of concept implementations. 42 | 43 | See Vogeler, Georg; Vasold, Gunter; Schlögl, Matthias. "Von IIIF zu IPIF? Ein Vorschlag für den Datenaustausch über Personen". 44 | In: Sahle, Patrick (Hg.): *DHd 2019 Digital Humanities: multimedial & multimodal*. Konferenzabstracts. Frankfurt / Mainz. DHd. 2019 DOI: [10.5281/zenodo.2600812](http://doi.org/10.5281/zenodo.2600812). pp. 239-241. ([Slides of the presentation](https://online.uni-graz.at/kfu_online/wbFPCompsCallBacks.cbExecuteDownload?pDocStoreNr=5185962)) 45 | 46 | Georg Vogeler, Gunter Vasold, Matthias Schlögl. "Data exchange in practice: Towards a prosopographical API". *BD2019*, ed. by Angel Daza; Antske Fokkens; Petya Osenova; Kiril Simov; Alexander Popov; Paul Arthur; Thierry Declerck; Ronald Sluijter; Serge ter Braake; Eveline Wandl-Vogt. CEUR Workshop series 3152. 2022, [40-48](http://ceur-ws.org/Vol-3152/BD2019_paper_6.pdf) ([preprint](https://hcommons.org/deposits/item/hc:29017/)) 47 | 48 | Matthias Schlögl, Georg Vogeler, Gunter Vasold, Richard Hadden. "IPIF - pragmatic modelling decisions", presentation at the *Data for History Conference*, Berlin, 9.6.2021, https://d4h2020.sciencesconf.org/data/pages/Schlo_gl_Vogeler_Vasold_IPIF_2.pdf 49 | 50 | Vogeler, Georg, Hadden, Richard, Schlögl, Matthias, & Vasold, Gunter. (2022, March 7). Prosopographische Interoperabilität (IPIF) - Stand der Entwicklungen. DHd 2022 Kulturen des digitalen Gedächtnisses. 8. Tagung des Verbands "Digital Humanities im deutschsprachigen Raum" (DHd 2022), Potsdam. https://doi.org/10.5281/zenodo.6328211 51 | 52 | Hadden, Richard, Matthias Schlögl, Georg Vogeler. Towards a prosopographical ecosystem: modelling, design, and implementation issues. 53 | In: Yifan Wang et al. (Eds.): Digital Humanities 2022 : Conference AbstractsThe University of Tokyo, Japan, 25-29 July 2022. ADHO. 2022. 472-473 54 | -------------------------------------------------------------------------------- /rationale.md: -------------------------------------------------------------------------------- 1 | # Rationale 2 | first draft - Georg Vogeler, 22.12.2016 3 | 4 | ## Use cases 5 | ### Biographical Lexicon 6 | I'm working on a biographical lexicon. I would be so happy to have all source reference to a person aggregated with one click, which I could easily put as references into my descriptive text of the biography. 7 | 8 | ### Carreers 9 | I'm studying carreers of a group of persons. I would be so happy to get a data matrix which lists for each person the steps of their carreer according to a well crafted and well documented taxonomy with the dates of these steps. (Yes, I know these dates can be time ranges, single dates for transitions from one 'grade' to the other, termini a quo and ante quem etc. etc.) 10 | 11 | ### Source editing 12 | I'm working with primary sources in which a person is mentioned or for which a person has an important role (author, sender of a letter etc.). I want to offer the information provided in the source for others to be reused in their prosopographical research (and would be happy to create automatically an index of persons named in my soure integrating the information from other sources.) I am willing to refer to a well crafted and well documented taxonomy for the events and/or activities mentioned in my source text and the role of the person in this event/activity. 13 | 14 | ### Fact checking 15 | I find a statement about a person made by a colleague/a source text. I have my doubts on the reliability of the statement and want to check if it is consistent to all other statements made about the person. (or vice versa: I don't trust all the others statements, which could mean I can revolutionize history.) 16 | 17 | ### New interpretation 18 | I want to establish a statement about a person, well founded by a primary source. Unfortunately my source is interpreted by others not in my way. I want to make my modification of the interpretation of the source available to the Giant Global Graph (aka the semantic web) and by this to the scholarly community being able to use the prosopographical API 19 | 20 | ### Publish database 21 | I have created a prosopographical database and would be happy if somebody else would use it as well. So I want to publish it in a way that it is easy to use (and to cite). Btw my "database" are just lots of spreadsheets. 22 | 23 | ### Other databses 24 | I have created a database which - by chance - contains lots of information about people (e.g. bibliographies). I am curious if this data can be used for prosopographical studies as well. 25 | 26 | ### Analysis 27 | I'm a wizard in visualisation, a nerd in network analysis, a sage of statistics, a genius of GIS fallen in deep love with the people from the past. I want to grab easily all available data about a group of them and create fancy visualisations, tight networks, explorative maps, and brain blowing calculations. 28 | 29 | ### Tool user 30 | I am a non technical humanist creating prosopographical data ("a person database"). I would be happy to use the database server from somebody else (e.g. a common repository) and the easiest to use data capture tool (with fancy autosuggestion, automatic check of existing data etc. etc.). 31 | 32 | ### Tool builder 33 | I am a developer building tools for digital humanists. I want my tools to integrate prosopographical data from multiple sources. For example, I would like my tools to offer a "disambiguation dropdown" where possible person matches for a given name are provided, with enough (and compact, human-readable) information to make a decision. From a technical perspective, I would like to be able to obtain - as alternative to accessing the API "live" - dumps of the entire dataset, containing at least a subset of the data (enough information to drive the disambiguation interface). 34 | 35 | ## Basic considerations for paths 36 | The data can be accessed via the four major components (objects) of the factoid model: 37 | 38 | * the **person**, which only has to be identified abstractly, i.e. by an id or IRI. There can be alternative IRIs which describe the same person, so they are owl:sameAs 39 | * a **statement** about this person, formalized as a simple datastructure to cover events, social relationships and identification. 40 | * a **source** attesting this statement 41 | * the **factoid** tying all the three together, created by somebody at some time 42 | 43 | The paths therefore have to be able to 44 | * *create*, *update* and *delete* these four objects - well protected by authentication and user roles. 45 | * *query* these four objects (incl. pointing directly to one single object - e.g. via the IRI for it) 46 | * give information about the *context* for the four objects (e.g. the schema of for the formal representation of the statements, relationship between them incl. versioning, number of objects available, etc.) 47 | -------------------------------------------------------------------------------- /prosopogrAPhI.yaml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.2 2 | info: 3 | version: 0.3.3 4 | title: prosopogrAPhI 5 | description: basic prosopographical data API 6 | license: 7 | name: CC-BY-SA 4.0 8 | url: 'https://creativecommons.org/licenses/by-sa/4.0/' 9 | contact: 10 | name: Georg Vogeler 11 | email: georg.vogeler@uni-graz.at 12 | paths: 13 | /factoids: 14 | get: 15 | summary: Returns array of factoids 16 | description: Returns an array of `Factoid` objects. The number of array members returned with each response is restricted by the **size** parameter. Factoids can be filtered by setting additional parameters like **personId** or **p**. Factoids are sorted by default by date of creation time. Statement-specific parameters (e.g. **place**, **memberOf**) accept a asterisk (*) to require that parameter to have any non-null value. 17 | operationId: getFactoids 18 | parameters: 19 | - $ref: '#/components/parameters/size' 20 | - $ref: '#/components/parameters/page' 21 | - $ref: '#/components/parameters/personId' 22 | - $ref: '#/components/parameters/p' 23 | - $ref: '#/components/parameters/statementId' 24 | - $ref: '#/components/parameters/st' 25 | - $ref: '#/components/parameters/sourceId' 26 | - $ref: '#/components/parameters/s' 27 | - $ref: '#/components/parameters/f' 28 | - $ref: '#/components/parameters/statementText' 29 | - $ref: '#/components/parameters/relatesToPerson' 30 | - $ref: '#/components/parameters/memberOf' 31 | - $ref: '#/components/parameters/role' 32 | - $ref: '#/components/parameters/name' 33 | - $ref: '#/components/parameters/from' 34 | - $ref: '#/components/parameters/to' 35 | - $ref: '#/components/parameters/place' 36 | - $ref: '#/components/parameters/sortBy' 37 | responses: 38 | '200': 39 | description: A list of Factoids with some metadata 40 | content: 41 | application/json: 42 | schema: 43 | $ref: '#/components/schemas/FactoidsResponse' 44 | '400': 45 | $ref: '#/components/responses/BadRequestError' 46 | '500': 47 | $ref: '#/components/responses/Standard500ErrorResponse' 48 | post: 49 | summary: 'creates a factoid. No Factoid can be created without references to a person, a source, and at least one statement' 50 | operationId: createFactoid 51 | requestBody: 52 | content: 53 | application/json: 54 | schema: 55 | $ref: '#/components/schemas/Factoid' 56 | description: the factoid data 57 | responses: 58 | '201': 59 | description: factoid created 60 | '400': 61 | description: factoid could not be created or updated 62 | '403': 63 | description: Forbidden. Missing token or user is not allowed to create persons. 64 | '500': 65 | $ref: '#/components/responses/Standard500ErrorResponse' 66 | '501': 67 | $ref: '#/components/responses/NotImplementedError' 68 | '/factoids/{id}': 69 | get: 70 | summary: 'Returns factoid with id {id}' 71 | operationId: getFactoidById 72 | parameters: 73 | - $ref: '#/components/parameters/id' 74 | responses: 75 | '200': 76 | description: a factoid 77 | content: 78 | application/json: 79 | schema: 80 | $ref: '#/components/schemas/Factoid' 81 | '404': 82 | description: the factoid does not exist 83 | '500': 84 | $ref: '#/components/responses/Standard500ErrorResponse' 85 | put: 86 | summary: 'updates the factoid with the {id}' 87 | operationId: updateFactoid 88 | parameters: 89 | - $ref: '#/components/parameters/id' 90 | requestBody: 91 | content: 92 | application/json: 93 | schema: 94 | $ref: '#/components/schemas/Factoid' 95 | responses: 96 | '201': 97 | description: factoid updated 98 | '400': 99 | description: factoid could not be updated or created. TODO should return reason as message 100 | '403': 101 | description: Forbidden. Missing token or user is not allowed to create persons. 102 | '500': 103 | $ref: '#/components/responses/Standard500ErrorResponse' 104 | '501': 105 | $ref: '#/components/responses/NotImplementedError' 106 | 107 | delete: 108 | summary: 'delete the factoid with id {id}' 109 | operationId: deleteFactoid 110 | parameters: 111 | - $ref: '#/components/parameters/id' 112 | responses: 113 | '204': 114 | description: Factoid has been deleted successfully 115 | '403': 116 | description: Missing token or user is not allowed to delete this factoid 117 | '404': 118 | description: Factoid not found 119 | '409': 120 | description: 'Conflict: Factoid cannot be deleted eg. because of referential integrity. Reason should be given as error response detail' 121 | '501': 122 | $ref: '#/components/responses/NotImplementedError' 123 | /persons: 124 | get: 125 | summary: Get persons 126 | description: Returns an array of `Person` objects. The number of array members returned with each response is restricted by the **size** parameter. Persons can be filtered by setting additional parameters like **factoidId** or **f**. Statement-specific parameters (e.g. **place**, **memberOf**) accept a asterisk (*) to require that parameter to have any non-null value. TODO Further parameters for filtering have to be specified. 127 | operationId: getPersons 128 | parameters: 129 | - $ref: '#/components/parameters/size' 130 | - $ref: '#/components/parameters/page' 131 | - $ref: '#/components/parameters/sortBy' 132 | - $ref: '#/components/parameters/p' 133 | - $ref: '#/components/parameters/factoidId' 134 | - $ref: '#/components/parameters/f' 135 | - $ref: '#/components/parameters/statementId' 136 | - $ref: '#/components/parameters/st' 137 | - $ref: '#/components/parameters/sourceId' 138 | - $ref: '#/components/parameters/s' 139 | - $ref: '#/components/parameters/statementText' 140 | - $ref: '#/components/parameters/relatesToPerson' 141 | - $ref: '#/components/parameters/memberOf' 142 | - $ref: '#/components/parameters/role' 143 | - $ref: '#/components/parameters/name' 144 | - $ref: '#/components/parameters/from' 145 | - $ref: '#/components/parameters/to' 146 | - $ref: '#/components/parameters/place' 147 | responses: 148 | '200': 149 | description: Successfull response 150 | content: 151 | application/json: 152 | schema: 153 | $ref: '#/components/schemas/PersonsResponse' 154 | '400': 155 | $ref: '#/components/responses/BadRequestError' 156 | '500': 157 | $ref: '#/components/responses/Standard500ErrorResponse' 158 | post: 159 | summary: Add a new person 160 | operationId: createPerson 161 | requestBody: 162 | content: 163 | application/json: 164 | schema: 165 | $ref: '#/components/schemas/Person' 166 | responses: 167 | '201': 168 | description: Person created 169 | headers: 170 | Location: 171 | description: the uri of the created person 172 | schema: 173 | type: string 174 | content: 175 | application/json: 176 | schema: 177 | $ref: '#/components/schemas/Person' 178 | '400': 179 | $ref: '#/components/responses/BadRequestError' 180 | '403': 181 | description: Forbidden. Missing token or user is not allowed to create persons. 182 | '500': 183 | $ref: '#/components/responses/Standard500ErrorResponse' 184 | '501': 185 | $ref: '#/components/responses/NotImplementedError' 186 | '/persons/{id}': 187 | get: 188 | summary: 'Returns person with id {id}' 189 | operationId: getPersonById 190 | parameters: 191 | - $ref: '#/components/parameters/id' 192 | responses: 193 | '200': 194 | description: a person object 195 | content: 196 | application/json: 197 | schema: 198 | $ref: '#/components/schemas/Person' 199 | '404': 200 | description: the person does not exist 201 | '500': 202 | $ref: '#/components/responses/Standard500ErrorResponse' 203 | put: 204 | summary: 'Updates the person with the {id}' 205 | operationId: updatePerson 206 | parameters: 207 | - $ref: '#/components/parameters/id' 208 | requestBody: 209 | content: 210 | application/json: 211 | schema: 212 | $ref: '#/components/schemas/Person' 213 | description: the person data 214 | responses: 215 | '201': 216 | description: person updated 217 | '400': 218 | description: person could not be updated or created. TODO should return reason as message 219 | '403': 220 | description: Forbidden. Missing token or user is not allowed to create persons. 221 | '500': 222 | $ref: '#/components/responses/Standard500ErrorResponse' 223 | '501': 224 | $ref: '#/components/responses/NotImplementedError' 225 | delete: 226 | summary: 'delete the person with id {id}' 227 | operationId: deletePerson 228 | parameters: 229 | - $ref: '#/components/parameters/id' 230 | responses: 231 | '204': 232 | description: Person has been deleted successfully 233 | '403': 234 | description: Missing token or user is not allowed to delete this person 235 | '404': 236 | description: Person not found 237 | '409': 238 | description: 'Conflict: Person cannot be deleted eg. because of referential integrity. Reason should be given as error response detail' 239 | '501': 240 | $ref: '#/components/responses/NotImplementedError' 241 | /sources: 242 | get: 243 | summary: Returns array of source objects. 244 | description: Returns array of `source` objects. The number of array members returned with each response is restricted by the **size** parameter. Sources can be filtered by setting additional parameters like **factoidId** or **f**. Statement-specific parameters (e.g. **place**, **memberOf**) accept a asterisk (*) to require that parameter to have any non-null value. TODO Further parameters for filtering have to be specified. 245 | operationId: getSources 246 | parameters: 247 | - $ref: '#/components/parameters/size' 248 | - $ref: '#/components/parameters/page' 249 | - $ref: '#/components/parameters/sortBy' 250 | - $ref: '#/components/parameters/personId' 251 | - $ref: '#/components/parameters/p' 252 | - $ref: '#/components/parameters/factoidId' 253 | - $ref: '#/components/parameters/f' 254 | - $ref: '#/components/parameters/st' 255 | - $ref: '#/components/parameters/statementText' 256 | - $ref: '#/components/parameters/relatesToPerson' 257 | - $ref: '#/components/parameters/memberOf' 258 | - $ref: '#/components/parameters/role' 259 | - $ref: '#/components/parameters/name' 260 | - $ref: '#/components/parameters/from' 261 | - $ref: '#/components/parameters/to' 262 | - $ref: '#/components/parameters/place' 263 | responses: 264 | '200': 265 | description: Successfull response 266 | content: 267 | application/json: 268 | schema: 269 | $ref: '#/components/schemas/SourcesResponse' 270 | '400': 271 | $ref: '#/components/responses/BadRequestError' 272 | '500': 273 | $ref: '#/components/responses/Standard500ErrorResponse' 274 | post: 275 | summary: Add a new source 276 | operationId: createSource 277 | requestBody: 278 | $ref: '#/components/requestBodies/Source' 279 | responses: 280 | '201': 281 | description: Source created 282 | headers: 283 | Location: 284 | description: the uri of the created source 285 | schema: 286 | type: string 287 | content: 288 | application/json: 289 | schema: 290 | $ref: '#/components/schemas/Source' 291 | '400': 292 | $ref: '#/components/responses/BadRequestError' 293 | '403': 294 | description: Forbidden. Missing token or user is not allowed to create persons. 295 | '500': 296 | $ref: '#/components/responses/Standard500ErrorResponse' 297 | '501': 298 | $ref: '#/components/responses/NotImplementedError' 299 | '/sources/{id}': 300 | get: 301 | summary: 'Returns source with id {id}' 302 | operationId: getSourceById 303 | parameters: 304 | - $ref: '#/components/parameters/id' 305 | responses: 306 | '200': 307 | description: a source object 308 | content: 309 | application/json: 310 | schema: 311 | $ref: '#/components/schemas/Source' 312 | '404': 313 | description: the source does not exist 314 | '500': 315 | $ref: '#/components/responses/Standard500ErrorResponse' 316 | put: 317 | summary: 'updates the source with the {id}' 318 | operationId: updateSource 319 | parameters: 320 | - name: id 321 | in: path 322 | required: true 323 | schema: 324 | type: string 325 | requestBody: 326 | $ref: '#/components/requestBodies/Source' 327 | responses: 328 | '201': 329 | description: source updated 330 | '400': 331 | description: source could not be updated or created. TODO should return reason as message 332 | '403': 333 | description: Forbidden. Missing token or user is not allowed to create sources. 334 | '500': 335 | $ref: '#/components/responses/Standard500ErrorResponse' 336 | '501': 337 | $ref: '#/components/responses/NotImplementedError' 338 | delete: 339 | summary: 'delete the source with id {id}' 340 | operationId: deleteSource 341 | parameters: 342 | - $ref: '#/components/parameters/id' 343 | responses: 344 | '204': 345 | description: Source has been deleted successfully 346 | '403': 347 | description: Missing token or user is not allowed to delete this source 348 | '404': 349 | description: Source not found 350 | '409': 351 | description: 'Conflict: Source cannot be deleted eg. because of referential integrity. Reason should be given as error response detail' 352 | '501': 353 | $ref: '#/components/responses/NotImplementedError' 354 | /statements: 355 | get: 356 | summary: Returns array of statement objects 357 | description: Returns array of `Statement` objects. The number of array members returned with each response is restricted by the **size** parameter. Statements can be filtered by setting additional parameters like **factoidId** or **f**. Statement-specific parameters (e.g. **place**, **memberOf**) accept a asterisk (*) to require that parameter to have any non-null value. TODO Further parameters for filtering have to be specified. 358 | operationId: getStatements 359 | parameters: 360 | - $ref: '#/components/parameters/size' 361 | - $ref: '#/components/parameters/page' 362 | - $ref: '#/components/parameters/sortBy' 363 | - $ref: '#/components/parameters/personId' 364 | - $ref: '#/components/parameters/factoidId' 365 | - $ref: '#/components/parameters/f' 366 | - $ref: '#/components/parameters/sourceId' 367 | - $ref: '#/components/parameters/st' 368 | - $ref: '#/components/parameters/p' 369 | - $ref: '#/components/parameters/statementText' 370 | - $ref: '#/components/parameters/relatesToPerson' 371 | - $ref: '#/components/parameters/memberOf' 372 | - $ref: '#/components/parameters/role' 373 | - $ref: '#/components/parameters/name' 374 | - $ref: '#/components/parameters/from' 375 | - $ref: '#/components/parameters/to' 376 | - $ref: '#/components/parameters/place' 377 | responses: 378 | '200': 379 | description: Successfull response 380 | content: 381 | application/json: 382 | schema: 383 | $ref: '#/components/schemas/StatementsResponse' 384 | '400': 385 | $ref: '#/components/responses/BadRequestError' 386 | '500': 387 | $ref: '#/components/responses/Standard500ErrorResponse' 388 | '/statements/{id}': 389 | get: 390 | summary: 'Return statement with id {id}' 391 | operationId: getStatementById 392 | parameters: 393 | - $ref: '#/components/parameters/id' 394 | responses: 395 | '200': 396 | description: a statement object 397 | content: 398 | application/json: 399 | schema: 400 | $ref: '#/components/schemas/Statement' 401 | '404': 402 | description: the statement does not exist 403 | '500': 404 | $ref: '#/components/responses/Standard500ErrorResponse' 405 | 406 | /describe: 407 | get: 408 | description: Gives basic information about the service and the implementation of API 409 | operationId: getDescription 410 | responses: 411 | '200': 412 | description: basic information about the service and the implementation of the API 413 | content: 414 | application/json: 415 | schema: 416 | $ref: '#/components/schemas/ServiceDescription' 417 | '500': 418 | $ref: '#/components/responses/Standard500ErrorResponse' 419 | servers: 420 | - url: 'https://localhost/api' 421 | - url: 'http://localhost/api' 422 | components: 423 | parameters: 424 | size: 425 | name: size 426 | in: query 427 | description: sets the number of objects returned per page. 428 | schema: 429 | type: integer 430 | default: 30 431 | page: 432 | name: page 433 | in: query 434 | description: 'Sets the page number of returned objects. If size is set to 10 and page is set to 2, the objects 11-20 will be returned.' 435 | schema: 436 | type: integer 437 | default: 1 438 | id: 439 | name: id 440 | in: path 441 | required: true 442 | description: 'can be either the local id, or an uri representing the same resource as stored in `uris`' 443 | schema: 444 | type: string 445 | sortBy: 446 | # TODO: this must be more precise: allowed values per endpoint 447 | # TODO: how to address properties not on level 0? 448 | name: sortBy 449 | in: query 450 | description: 'defines the sort order of the requested resource, can contain all properties of the resource searched. The closing keywords ''ASC'' and ''DESC'' describe the sort order as ''ASCending'' and ''DESCending''. In case the property is a list of values, use the first item.' 451 | schema: 452 | type: string 453 | default: createdWhen 454 | personId: 455 | name: personId 456 | in: query 457 | description: filter by person id 458 | schema: 459 | type: string 460 | p: 461 | name: p 462 | in: query 463 | description: filters the current resource by a search in direct properties of person object (id, uri) 464 | schema: 465 | type: string 466 | statementId: 467 | name: statementId 468 | in: query 469 | description: filter by statement id 470 | schema: 471 | type: string 472 | st: 473 | name: st 474 | in: query 475 | description: filters by applying a pattern on statements (fulltext search). This filter will be combined by an AND operator with all other filters applicable to statements (statementText, role, from, to, place, name, relatesToPerson, memberOf). 476 | schema: 477 | type: string 478 | sourceId: 479 | name: sourceId 480 | in: query 481 | description: filter by source id 482 | schema: 483 | type: string 484 | s: 485 | name: s 486 | in: query 487 | description: filter by applying a pattern on sources (fulltext search) 488 | schema: 489 | type: string 490 | f: 491 | name: f 492 | in: query 493 | description: filter by applying a pattern on factoid metadata (fulltext search) 494 | schema: 495 | type: string 496 | factoidId: 497 | name: factoidId 498 | in: query 499 | description: filter by factoid id 500 | schema: 501 | type: string 502 | statementText: 503 | name: statementText 504 | in: query 505 | description: filters by any keyword occurring in the statement content. This filter will be combined by an AND operator with all other filters applicable to statements (st, role, from, to, place, name, relatesToPerson, memberOf). 506 | schema: 507 | type: string 508 | role: 509 | name: role 510 | in: query 511 | description: filters by a keyword occuring in the role property of a statement. The filter applies to the human readable label and the URI provided. This filter will be combined by an AND operator with all other filters applicable to statements (st, statementText, from, to, place, name, relatesToPerson, memberOf). 512 | schema: 513 | type: string 514 | from: 515 | name: from 516 | in: query 517 | description: 'all dates after the event date (including the event date itself) will be included. If `from` and `to` are the same, only a single exact date is included. Fragments (yyyy, yyyy-mm) will be interpreted as exact time ranges if the second parameter is missing (`from=yyyy-mm` is interpreted as `from=start of month`, `to=end of month`. If conflicting data is present, for example ``from=yyyy&to=yyyy-mm-dd`, the most correct interpretation will be decided on by the backend. For instance, the example before will be interpreted as `from=yyyy-01-01&to=yyyy-mm-dd`. This filter will be combined by an AND operator with all other filters applicable to statements (st, statementText, role, to, place, name, relatesToPerson, memberOf).' 518 | schema: 519 | type: string 520 | to: 521 | name: to 522 | in: query 523 | description: 'all dates before the event date (including the event date itself) will be included. If `from` and `to` are the same, only a single exact date is included. Fragments (yyyy, yyyy-mm) will be interpreted as exact time ranges if the second parameter is missing (`from=yyyy-mm` is interpreted as `from=start of month`, `to=end of month`. If conflicting data is present, for example ``from=yyyy&to=yyyy-mm-dd`, the most correct interpretation will be decided on by the backend. For instance, the example before will be interpreted as `from=yyyy-01-01&to=yyyy-mm-dd`. This filter will be combined by an AND operator with all other filters applicable to statements (st, statementText, role, from, place, name, relatesToPerson, memberOf).' 524 | schema: 525 | type: string 526 | place: 527 | name: place 528 | in: query 529 | description: filters by a keyword occuring in the place property of a statement. The filter applies to the human readable label and the URI provided. This filter will be combined by an AND operator with all other filters applicable to statements (st, statementText, role, from, to, name, relatesToPerson, memberOf). 530 | schema: 531 | type: string 532 | relatesToPerson: 533 | name: relatesToPerson 534 | in: query 535 | description: filters by a keyword occuring in the relations to other persons property of a statement. The filter applies to the human readable label and the URI provided. This filter will be combined by an AND operator with all other filters applicable to statements (st, statementText, role, from, to, place, name, memberOf). 536 | schema: 537 | type: string 538 | memberOf: 539 | name: memberOf 540 | in: query 541 | description: filters by a keyword occuring in the membership in organisation property of a statement. The filter applies to the human readable label and the URI provided. This filter will be combined by an AND operator with all other filters applicable to statements (st, statementText, role, from, to, place, name, relatesToPerson). 542 | schema: 543 | type: string 544 | name: 545 | name: name 546 | in: query 547 | description: filters by a keyword occuring in the names of a person. This filter will be combined by an AND operator with all other filters applicable to statements (st, statementText, role, from, to, place, relatesToPerson, memberOf). 548 | schema: 549 | type: string 550 | createdBefore: 551 | name: createdBefore 552 | description: sets terminus antequem for filtering by createdWhen 553 | in: query 554 | schema: 555 | type: string 556 | createdAfter: 557 | name: createdAfter 558 | description: sets terminus postquem for filtering by createdWhen 559 | in: query 560 | schema: 561 | type: string 562 | createdBy: 563 | name: createdBy 564 | in: query 565 | description: Filters by full text search in the description of the user responsbile for the creation of the object. A group of persons is represented by a comma seperated list. 566 | schema: 567 | type: string 568 | modifiedBefore: 569 | name: createdBefore 570 | in: query 571 | description: sets terminus antequo for filtering the date of modification of the current resource. 572 | schema: 573 | type: string 574 | modifiedAfter: 575 | name: createdAfter 576 | description: sets terminus postquem for filtering the date of modification of the current resource. 577 | in: query 578 | schema: 579 | type: string 580 | modifiedBy: 581 | name: createdBy 582 | in: query 583 | description: Filters by full text search in the description of the user responsbile for a modification of the object. A group of persons is represented by a comma seperated list. 584 | schema: 585 | type: string 586 | depth: 587 | name: depth 588 | in: query 589 | description: 'declares the depth of description to be returned by a list of factoids. With the keyword `reduced` the response should return only `@id` for the source, the person, and the statement aggregated by the factoid. If no value is given, the factoids return the full information.' 590 | schema: 591 | type: string 592 | enum: 593 | - full 594 | - reduced 595 | responses: 596 | BadRequestError: 597 | description: Bad request. Caused by unknown parameters or illegal parameter values 598 | content: 599 | application/json: 600 | schema: 601 | $ref: '#/components/schemas/Error' 602 | Standard500ErrorResponse: 603 | description: An unexpected error occurred. 604 | content: 605 | application/json: 606 | schema: 607 | $ref: '#/components/schemas/Error' 608 | NotImplementedError: 609 | description: Functionality not implemented. Some implementations will only support read operations. For any data modifying request they must return a 501 response. 610 | content: 611 | application/json: 612 | schema: 613 | $ref: '#/components/schemas/Error' 614 | requestBodies: 615 | Source: 616 | content: 617 | application/json: 618 | schema: 619 | $ref: '#/components/schemas/Source' 620 | description: the source data 621 | Statement: 622 | content: 623 | application/json: 624 | schema: 625 | $ref: '#/components/schemas/Statement' 626 | schemas: 627 | FactoidRef: 628 | description: 'References the local ID of a factoid in the current service and all IDs of person, sources, statements aggregated in the factoid. Please use the `factoids/{id}-endpoint` to request further information on the factoid. The factoid reference does not apply any filter used for requesting the current ressource.' 629 | properties: 630 | '@id': 631 | $ref: '#/components/schemas/id' 632 | person-ref: 633 | $ref: '#/components/schemas/PersonRef' 634 | source-ref: 635 | $ref: '#/components/schemas/SourceRef' 636 | statement-refs: 637 | type: array 638 | items: 639 | $ref: '#/components/schemas/StatementRef' 640 | Factoid: 641 | description: A Factoid is a composite of one or more statements about a single person extracted by somebody from a single source at a specific time. 642 | type: object 643 | required: 644 | - '@id' 645 | - person-ref 646 | - source-ref 647 | - statement-refs 648 | - createdBy 649 | - createdWhen 650 | properties: 651 | '@id': 652 | $ref: '#/components/schemas/id' 653 | createdBy: 654 | $ref: '#/components/schemas/createdBy' 655 | createdWhen: 656 | $ref: '#/components/schemas/createdWhen' 657 | modifiedBy: 658 | $ref: '#/components/schemas/modifiedBy' 659 | modifiedWhen: 660 | $ref: '#/components/schemas/modifiedWhen' 661 | derivedFrom: 662 | description: references the URI of a factoid on which this factoid is based. 663 | type: string 664 | format: uri 665 | person-ref: 666 | $ref: '#/components/schemas/PersonRef' 667 | source-ref: 668 | $ref: '#/components/schemas/SourceRef' 669 | statement-refs: 670 | type: array 671 | items: 672 | $ref: '#/components/schemas/StatementRef' 673 | example: 674 | '@id': TW_Pez1_809_1 675 | createdBy: Thomas Wallnig 676 | createdWhen: 2010-05-05T00:00:00.000Z 677 | modifiedBy: Thomas Wallnig 678 | modifiedWhen: 2010-05-05T00:00:00.000Z 679 | person-ref: 680 | '@id': Andreas_Reuter 681 | statement-refs: 682 | - '@id': Pez1_809_1 683 | source-ref: 684 | '@id': PezNachlassVol1 685 | FactoidsResponse: 686 | type: object 687 | description: Schema of the response of /factoids 688 | properties: 689 | protocol: 690 | $ref: '#/components/schemas/Protocol' 691 | factoids: 692 | type: array 693 | items: 694 | $ref: '#/components/schemas/Factoid' 695 | example: 696 | protocol: 697 | size: 30 698 | totalHits: 1234 699 | page: 2 700 | factoids: 701 | - '@id': TW_Pez1_809_1 702 | createdBy: Thomas Wallnig 703 | createdWhen: 2010-05-05T00:00:00.000Z 704 | modifiedBy: Thomas Wallnig 705 | modifiedWhen: 2010-05-05T00:00:00.000Z 706 | person-ref: 707 | '@id': Andreas_Reuter 708 | statement-refs: 709 | - '@id': Pez1_809_1 710 | source-ref: 711 | '@id': PezNachlassVol1 712 | - '@id': TW_Pez1_123456 713 | createdBy: Thomas Wallnig 714 | createdWhen: 2007-04-16T00:00:00.000Z 715 | modifiedBy: Thomas Wallnig 716 | modifiedWhen: 2007-04-16T00:00:00.000Z 717 | person-ref: 718 | '@id': Placidus_Seiz 719 | statement-refs: 720 | - '@id': person1241 721 | source-ref: 722 | '@id': 'Lindner-Album_Ettalense253f.' 723 | - '@id': Fd2qwr 724 | createdBy: Thomas Wallnig 725 | createdWhen: 2007-04-16T00:00:00.000Z 726 | modifiedBy: Thomas Wallnig 727 | modifiedWhen: 2007-07-01T00:00:00.000Z 728 | person-ref: 729 | '@id': Andreas_Reuter 730 | statement-refs: 731 | - '@id': Fd2qwr 732 | source-ref: 733 | '@id': PezNachlassVol1 734 | PersonRef: 735 | description: 'References the local ID of a person in the current service. Please use the persons/{id}-endpoint to request further information on the person' 736 | properties: 737 | '@id': 738 | $ref: '#/components/schemas/id' 739 | Person: 740 | type: object 741 | description: 'A Person is an abstract entity representing a human individual (fictional or historical) independet from their cultural desciption by name, status, social relationsships etc. It has therefore only formal identifiers as properties.' 742 | required: 743 | - '@id' 744 | - factoid-refs 745 | properties: 746 | '@id': 747 | $ref: '#/components/schemas/id' 748 | label: 749 | type: string 750 | description: 'A human readable identification of the person for easy processing in selection scenarios. This identification is considered to be unstable, does not have to be stored in the backend (i.e. it might be created algorithmically on the fly from a currente state of data stored), can be ommitted (then the @id can be used as default) and is not processed in POST or PUT requests. In practice, this label would typically be constructed from statements on names, basic biographical dates (birth, death) and maybe a claim of fame / occupation, but the decision how to construct this label would be completely under responsibility of the service provider.' 751 | uris: 752 | $ref: '#/components/schemas/uris' 753 | createdBy: 754 | $ref: '#/components/schemas/createdBy' 755 | createdWhen: 756 | $ref: '#/components/schemas/createdWhen' 757 | modifiedBy: 758 | $ref: '#/components/schemas/modifiedBy' 759 | modifiedWhen: 760 | $ref: '#/components/schemas/modifiedWhen' 761 | factoid-refs: 762 | type: array 763 | items: 764 | $ref: '#/components/schemas/FactoidRef' 765 | example: 766 | - '@id': Placidus_Seiz 767 | uris: 768 | - 'http://d-nb.info/gnd/10102407X' 769 | - 'https://viaf.org/viaf/5285530/' 770 | factoid-refs: 771 | - '@id': TW_Pez1_123456 772 | source-ref: 773 | '@id': 'Pez#474' 774 | statement-refs: 775 | - '@id': 'Pez#474-7' 776 | - '@id': TW_Pez1_123457 777 | source-ref: 778 | '@id': 'Lindner-Album_Ettalense253f.' 779 | statement-refs: 780 | - '@id': person1241 781 | PersonsResponse: 782 | type: object 783 | description: Schema of the response of /persons 784 | properties: 785 | protocol: 786 | $ref: '#/components/schemas/Protocol' 787 | persons: 788 | type: array 789 | items: 790 | $ref: '#/components/schemas/Person' 791 | example: 792 | protocol: 793 | size: 30 794 | totalHits: 12345 795 | page: 2 796 | persons: 797 | - '@id': Andreas_Reuter 798 | label: Andreas Reuter, Autor, um 1650 799 | uris: 800 | - 'http://pez-digital.at/persons#Mauro_Aspini' 801 | factoid-refs: 802 | - '@id': Fd2qwr 803 | source-ref: 804 | '@id': PezNachlassVol1 805 | statement-refs: 806 | - '@id': Fd2qwr 807 | - '@id': TW_Pez1_809_1 808 | source-ref: 809 | '@id': PezNachlassVol1 810 | statement-refs: 811 | - '@id': Pez1_809_1 812 | - '@id': Placidus_Seiz 813 | label: Seitz, Placidus, Theologe, Abt, Schriftsteller, Benediktiner, 1672-1736. 814 | uris: 815 | - 'http://d-nb.info/gnd/10102407X' 816 | - 'https://viaf.org/viaf/5285530/' 817 | factoid-refs: 818 | - '@id': TW_Pez1_123456 819 | source-ref: 820 | '@id': 'Pez#474' 821 | statement-refs: 822 | - '@id': 'Pez#474-7' 823 | - '@id': TW_Pez1_123457 824 | source-ref: 825 | '@id': 'Lindner-Album_Ettalense253f.' 826 | statement-refs: 827 | - '@id': person1241 828 | StatementRef: 829 | description: 'References the local ID of a statement he current service. Please use the statements/{id}-endpoint to request further information on the statement and its content' 830 | properties: 831 | '@id': 832 | $ref: '#/components/schemas/id' 833 | Statement: 834 | type: object 835 | description: The statement object gives human and machine readable information on the person(s) listed in the factoid. 836 | required: 837 | - '@id' 838 | - factoid-refs 839 | properties: 840 | '@id': 841 | $ref: '#/components/schemas/id' 842 | uris: 843 | $ref: '#/components/schemas/uris' 844 | factoid-refs: 845 | type: array 846 | items: 847 | $ref: '#/components/schemas/FactoidRef' 848 | statementType: 849 | type: object 850 | description: 'in context of structured information (with places, relationships, etc.) this property gives the type of event, relationship etc. connecting the other properties' 851 | properties: 852 | uri: 853 | type: string 854 | format: uri 855 | description: 'A fully dereferencably URI, which could be an endpoint to RESTful API for the applied taxonomy' 856 | label: 857 | type: string 858 | description: descriptive text. We can imagine this to be a term from a controlled vocabulary or a short type name. 859 | name: 860 | type: string 861 | description: any verbal identification of a person 862 | role: 863 | type: object 864 | description: describes the role of the person in the statement. If empty it is considered generically as 'participates in something which could be an event' 865 | properties: 866 | uri: 867 | type: string 868 | format: uri 869 | description: 'A fully dereferencably URI, which could be an endpoint to RESTful API for the applied taxonomy' 870 | label: 871 | type: string 872 | description: descriptive text of the role of the person in the statement. 873 | date: 874 | type: object 875 | description: 'The temporal allocation of the statement: To which time frame the statement on the person applies?' 876 | properties: 877 | sortdate: 878 | type: string 879 | format: date 880 | description: 'Formal version of the date following W3C recommendations. This date is not expected to represent the full range of possible dating. Use the label property to describe the date in more detail dates by century, by year, time ranges, date not before/not after, and similar.' 881 | label: 882 | type: string 883 | description: 'verbal version of the date, which should enable the human reader to get an idea of the chronological concept.' 884 | places: 885 | description: 'describes the geographical information of the statement, e.g. the place where an event happened, the geographic coverage of a social role etc. The API does not commit to the existence of a georeference with coordinates of the location, but suggests to use supplementarily the geo-JSON `geometry` property.' 886 | type: array 887 | items: 888 | type: object 889 | properties: 890 | uri: 891 | type: string 892 | format: uri 893 | description: 'reference to geo-referenceable object (e.g. single place), preferably an endpoint of an RESTful API serving coordinates of a single place or a polygon together with information on projection used.' 894 | label: 895 | type: string 896 | description: 'verbal reference to geo-referenceable object, e.g. name of a city, name of an area.' 897 | relatesToPersons: 898 | description: relationships of the person on which the statement is made to other persons. 899 | type: array 900 | items: 901 | type: object 902 | properties: 903 | uri: 904 | type: string 905 | format: uri 906 | description: 'reference to a machine readably object on a person, preferably an endpoint following the definitions of this API.' 907 | label: 908 | type: string 909 | description: 'a human readable description of the person to which the statement relates the persons referenced in the factoid, e.g. the name of the person' 910 | memberOf: 911 | type: object 912 | description: relationship of the person on which the statement is made to institutions or groups of persons identifiable. 913 | properties: 914 | uri: 915 | type: string 916 | format: uri 917 | label: 918 | type: string 919 | description: a human readable description of the group/institution to which the statement relates the persons referenced in the factoid 920 | statementText: 921 | type: string 922 | description: 'describes the statement in more detail, usually quotes from source or descriptive prose including the wording from the source or a short biogram.' 923 | createdBy: 924 | $ref: '#/components/schemas/createdBy' 925 | createdWhen: 926 | $ref: '#/components/schemas/createdWhen' 927 | modifiedBy: 928 | $ref: '#/components/schemas/modifiedBy' 929 | modifiedWhen: 930 | $ref: '#/components/schemas/modifiedWhen' 931 | StatementsResponse: 932 | type: object 933 | description: Schema of the response of /statements 934 | properties: 935 | protocol: 936 | $ref: '#/components/schemas/Protocol' 937 | statements: 938 | type: array 939 | items: 940 | $ref: '#/components/schemas/Statement' 941 | example: 942 | protocol: 943 | size: 30 944 | totalHits: 1234 945 | page: 2 946 | statements: 947 | - '@id': Pez1_809_1 948 | factoid-refs: 949 | - '@id': 'TW_Pez1_809_1' 950 | person-ref: 951 | '@id': 'Andreas_Reuter' 952 | source-ref: 953 | '@id': 'PezNachlassVol1' 954 | statementText: 'Andreas Reuter (ca. 1648 Kremsm�nster – 1715 Gleink) war Konventuale von Gleink. Er war Doktor der Theologie, apostolischer Protonotar und wirkte in Gleink als Ökonom sowie insgesamt 22 Jahre lang als Prior. Als solcher begegnet er 1708 als Unterzeichner der Rotel auf Abt Rupert von Kimpflern und 1710 in seinem Brief an Bernhard Pez.' 955 | - '@id': 'Pez#474-7,' 956 | factoid-refs: 957 | - '@id': '' 958 | person-ref: 959 | '@id': 'Placidus_Seiz' 960 | source-ref: 961 | '@id' : 'Pez#474' 962 | statementText: '... , quam accepturum me spero a reverendissimo domino abbate Ettalensi ...' 963 | - '@id': person1241 964 | factoid-refs: 965 | - '@id': TW_Pez1_123456 966 | person-ref: 967 | '@id': Placidus_Seiz 968 | source-ref: 969 | '@id': 'Lindner-Album_Ettalense253f.' 970 | name: 'Placidus Seitz' 971 | - '@id': 'Fd2qwr' 972 | factoid-refs: 973 | - '@id': Fd2qwr 974 | person-ref: 975 | '@id': Andreas_Reuter 976 | source-ref: 977 | '@id': PezNachlassVol1 978 | date: 979 | sortdate: 1648-06-15T00:00:00.000Z 980 | label: ca. 1648 981 | statementType: 982 | - label: "Geburt" 983 | - uri: "http://www.cidoc-crm.org/cidoc-crm/#E67_Birth" 984 | places: 985 | - label: Kremsm�nster 986 | Protocol: 987 | type: object 988 | description: Provides metadata about the current request 989 | properties: 990 | size: 991 | type: integer 992 | description: Number of objects returned per page 993 | page: 994 | type: integer 995 | description: 'Number of result page (first page, second page etc.)' 996 | totalHits: 997 | type: integer 998 | description: Total number of objects found by this request 999 | SourceRef: 1000 | description: 'References the local ID of a source in the current service. Please use the sources/{id}-endpoint to request further information on the source' 1001 | properties: 1002 | '@id': 1003 | $ref: '#/components/schemas/id' 1004 | Source: 1005 | type: object 1006 | required: 1007 | - '@id' 1008 | - factoid-refs 1009 | properties: 1010 | '@id': 1011 | $ref: '#/components/schemas/id' 1012 | label: 1013 | description: 'A human readable description of the source of information for the factoid, e.g. a bibliographic reference, an archival shelfmark etc.' 1014 | type: string 1015 | uris: 1016 | $ref: '#/components/schemas/uris' 1017 | createdBy: 1018 | $ref: '#/components/schemas/createdBy' 1019 | createdWhen: 1020 | $ref: '#/components/schemas/createdWhen' 1021 | modifiedBy: 1022 | $ref: '#/components/schemas/modifiedBy' 1023 | modifiedWhen: 1024 | $ref: '#/components/schemas/modifiedWhen' 1025 | factoid-refs: 1026 | type: array 1027 | items: 1028 | $ref: '#/components/schemas/FactoidRef' 1029 | example: 1030 | '@id': PezNachlassVol1 1031 | uris: 1032 | - 'https://e-book.fwf.ac.at/o:370' 1033 | metadata: 'Die gelehrte Korrespondenz der Br�der Pez, Text, Regesten, Kommentare; Band 1: 1709–1715, bearb. v. Thomas Wallnig u. Thomas Stockinger, Wien u. Köln: Böhlau, 2010' 1034 | factoid-refs: 1035 | - '@id': TW_Pez1_809_1 1036 | person-ref: 1037 | '@id': Andreas_Reuter 1038 | statement-refs: 1039 | - '@id': Pez1_809_1 1040 | - '@id': Fd2qwr 1041 | person-ref: 1042 | '@id': Andreas_Reuter 1043 | statement-refs: 1044 | - '@id': Fd2qwr 1045 | SourcesResponse: 1046 | type: object 1047 | description: Schema of the response of /sources 1048 | properties: 1049 | protocol: 1050 | $ref: '#/components/schemas/Protocol' 1051 | sources: 1052 | type: array 1053 | items: 1054 | $ref: '#/components/schemas/Source' 1055 | example: 1056 | protocol: 1057 | size: 30 1058 | totalHits: 1234 1059 | page: 2 1060 | sources: 1061 | - '@id': PezNachlassVol1 1062 | uris: 1063 | - 'https://e-book.fwf.ac.at/o:370' 1064 | metadata: 'Die gelehrte Korrespondenz der Br�der Pez, Text, Regesten, Kommentare; Band 1: 1709–1715, bearb. v. Thomas Wallnig u. Thomas Stockinger, Wien u. Köln: Böhlau, 2010' 1065 | factoid-refs: 1066 | - '@id': TW_Pez1_809_1 1067 | person-ref: 1068 | '@id': Andreas_Reuter 1069 | statement-refs: 1070 | - '@id': Pez1_809_1 1071 | - '@id': Fd2qwr 1072 | person-ref: 1073 | '@id': Andreas_Reuter 1074 | statement-refs: 1075 | - '@id': Fd2qwr 1076 | - '@id': 'Pez#474' 1077 | metadata: 'Melk, Stiftsarchiv, Kt. 07 Patres 07, II, 673r-675v' 1078 | factoid-refs: 1079 | - '@id': TW_Pez1_123457 1080 | person-ref: 1081 | '@id': Placidus_Seiz 1082 | statement-refs: 1083 | - '@id': 'Pez#474-7' 1084 | - '@id': Lindner-Album_Ettalense253f. 1085 | metadata: 'Lindner: Album Ettalense, S. 253f.' 1086 | factoid-refs: 1087 | - '@id': TW_Pez1_123456 1088 | person-ref: 1089 | '@id': Placidus_Seiz 1090 | statement-refs: 1091 | - '@id': person1241 1092 | ServiceDescription: 1093 | type: object 1094 | description: describes the service providing the API 1095 | required: 1096 | - complianceLevel 1097 | properties: 1098 | description: 1099 | description: A verbal description of the collection of factoids provided by the service 1100 | type: string 1101 | provider: 1102 | description: information on the service provider 1103 | type: string 1104 | contact: 1105 | description: 'address of a contact point (e-mail, phone etc.)' 1106 | type: string 1107 | vocabs: 1108 | description: "lists all vocabularies used for URIs in the `role` and `statemenType` properties of the statements. API consumers should be able to create valid assumption on URIs used in properties of the statements." 1109 | type: array 1110 | items: 1111 | type: string 1112 | complianceLevel: 1113 | type: number 1114 | description: | 1115 | defines the compliance level supported by the server. This is a numeric value between 0 and 2 which indicates the functionality provided by the service. 1116 | 1117 | *Compliance level 0* is the most minimalistic implementation. It only supports ``GET`` requests and a restricted set of filter parameters: ``f=``, ``p=``, ``s=``, ``st=`` are not allowed and result in a ``400 Bad Request`` response as POST and PUT requests do. 1118 | 1119 | *Compliance level 1* only supports ``GET`` requests (as compliance level ``0`` does), but supports all filter parameters. So compliance level ``0`` and ``1`` differ in that level ``1`` supports the filter parameters ``f=``, ``p=``, ``s=`` and ``st=``. POST und PUT requests result in a ``400 Bad Request`` response. 1120 | 1121 | *Compliance level 2* supports the full API and therefore also allows creation and modification of resources via PUT and POST requests. 1122 | 1123 | We recommend to publish the compliance level additionally als link header with each response to a GET request in this form: 1124 | 1125 | ``Link: ;rel="profile"`` 1126 | formats: 1127 | type: array 1128 | description: 'List of the supported response formats (content types). E.g. ``application/json`` (default), ``application/xml``, ``application/rdf+xml``, ``application/x-turtle``, ...' 1129 | items: 1130 | type: string 1131 | example: 1132 | description: Prosopographical data from the 1890 census 1133 | provider: 'Centre for Information Modelling, University of Graz' 1134 | contact: contact@example.com 1135 | complianceLevel: 1 1136 | formats: 1137 | - application/json 1138 | id: 1139 | description: 'the local id of the object (factoid, person, source, statement)' 1140 | type: string 1141 | uri: 1142 | description: 'the uri of an object (role, place, organisation, type, factoid, person, source, statement, etc.).' 1143 | type: string 1144 | format: uri 1145 | uris: 1146 | description: 'a list of external uris of the current object (factoid, person, source, statement, etc.) which could be used as objects to owl:sameAs.' 1147 | type: array 1148 | items: 1149 | $ref: '#/components/schemas/uri' 1150 | createdBy: 1151 | type: string 1152 | description: The user responsbile for a creation of the object. A group of persons is represented by a comma seperated list. 1153 | createdWhen: 1154 | description: '' 1155 | type: string 1156 | format: date 1157 | modifiedBy: 1158 | type: string 1159 | description: The user responsbile for a modification of the object. A group of persons is represented by a comma seperated list. 1160 | modifiedWhen: 1161 | description: '' 1162 | type: string 1163 | format: date 1164 | Error: 1165 | type: object 1166 | required: 1167 | - status 1168 | - title 1169 | properties: 1170 | status: 1171 | type: number 1172 | description: 'The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.' 1173 | title: 1174 | type: string 1175 | description: 'A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localisation.' 1176 | detail: 1177 | type: string 1178 | description: An human readable explanation specific to this occurrence of the problem. 1179 | type: 1180 | type: string 1181 | description: 'An absolute URI that identifies the problem type. When dereferenced, it SHOULD provide human-readable documentation for the problem type. When this member is not present, its value is assumed to be "about:blank".' 1182 | instance: 1183 | type: string 1184 | description: An absolute URI that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced. 1185 | --------------------------------------------------------------------------------