Commit 50edee48 authored by Christine Plumejeaud's avatar Christine Plumejeaud
Browse files

First commit of code publishing ports like a gazetteer, with full description...

First commit of code publishing ports like a gazetteer, with full description using the linked place model.
parent 963488aa
This diff is collapsed.
## fill the tempate Port with those data
### Properties
uhgs_id ou code de l'amirauté/ province
toponyme ou nom de l'amirauté/ province
country2019_iso2code
```json
"@id": "http://gaz.portic.fr/places/uhgs_id=%s",
"type": "Feature",
"properties":{
"title": "%s",
"ccodes": ["%s"]
},
```
### Other names (pour les ports)
"names": [
{ "toponym":"%s", //toponyme ou nom de l'amirauté / province
"lang":"fr",
"citations": [
{"label": "Portic Gazetteer (1787)",
"@id":"http://anr.portic.fr/"}],
"when": { "timespans":[{"start":{"in":"1749"}}, "end":{"in":"1815"}]}
},
%s //Répéter ceci autant que de toponyme dans topofreq
],
Que pour les ports :
Répéter ceci autant que de toponyme dans topofreq
```json
{ "toponym":"%s", "lang":"fr",
//"when": {"timespans":[{"start":{"in":"1600"}}]}
}
```
### Type
Voir http://vocab.getty.edu/page/aat/300120599
http://www.getty.edu/vow/AATFullDisplay?find=port&logic=AND&note=&page=1&subjectid=-1&checked=300120599&checked=300387254&checked=300387255&checked=300387256&checked=300411435&checked=300387257&checked=300387511
```json
{ "identifier": "aat:300120599",
"label": "ports (settlements)"}
```
### geometries
- longitude dans geoname
- latitude dans geoname
- geoname_id
```json
{ "type": "Point",
"coordinates": [%f,%f],
"when": {"timespans":[
{"start":{"in":"1750"},"end":{"in":"2020"}}]},
"citations": [
{"label": "Geonames (retrieved november 2019)",
"@id":"geoname:%d"}],
"certainty": "certain"
}
```
- longitude dans port_points
- latitude dans port_points
```json
{ "type": "Point",
"coordinates": [%f,%f],
"when": {"timespans":[
{"start":{"in":"1749"},"end":{"in":"1815"}}]},
"certainty": "certain"
}
```
### Links
Type du lien : exactMatch or closeMatch : with geoname following distance and textual similarity
geoname_id : identifiant du port dans geoname
```json
{"type": "%s", "identifier": "http://www.geonames.org/%d/"}
```
Si etat, alors rajouter le link wikipedia si non null
```json
{"type": "primaryTopicOf",
"identifier": "https://en.wikipedia.org/wiki/Abingdon-on-Thames"},
```
### Relations
Au moins une relation, celle de l'état d'appartenance : lire l'attribut place_state de port
Si date de début ou fin inconnue : '*'
https://www.loc.gov/standards/datetime/iso-tc154-wg5_n0039_iso_wd_8601-2_2016-02-16.pdf, page 5
Selectionner relation_state de la table ports.port_points
Dans cet exemple, le port change d'appartenance en 1793 : Monaco / A0209756 devient Français
```json
{"relations" : [
{"relationType" : "gvp:broaderPartitive", "relationTo" : "http://www.geonames.org/3017382", "label" : "France", "when" : {"timespans" : [{"start" : {"in" : 1793}, "end" : {"in" : 1815}}]}},{"relationType" : "gvp:broaderPartitive", "relationTo" : "http://www.geonames.org/2993457", "label" : "Monaco", "when" : {"timespans" : [{"start" : {"in" : "*"}, "end" : {"in" : 1792}}]}}]
}
```
Dans cet exemple, sur toute la période, le port est anglais
```json
{"relations" : [
{"relationType" : "gvp:broaderPartitive", "relationTo" : "http://www.geonames.org/2635167", "label" : "Grande-Bretagne", "when" : {"timespans" : [{"start" : {"in" : "*"}, "end" : {"in" : "*"}}]}}
]
}
```
Dans cet exemple, sur toute la période, le port Mahon / A0115898 est succesivement anglais/espagnol à différentes périodes : 1708-1792-1798-1802
```json
{"relations" : [
{"relationType" : "gvp:broaderPartitive", "relationTo" : "http://www.geonames.org/2510769", "label" : "Espagne", "when" : {"timespans" : [{"start" : {"in" : 1802}, "end" : {"in" : "*"}},{"start" : {"in" : 1782}, "end" : {"in" : 1798}},{"start" : {"in" : "*"}, "end" : {"in" : 1708}}]}},
{"relationType" : "gvp:broaderPartitive", "relationTo" : "http://www.geonames.org/2635167", "label" : "Grande-Bretagne", "when" : {"timespans" : [{"start" : {"in" : 1798}, "end" : {"in" : 1802}},{"start" : {"in" : 1708}, "end" : {"in" : 1782}}]}}]}
```
On ne donne pas de niveau de certitude à l'appartenance étatique, mais on devrait: "certainty": "certain", "less-certain", "uncertain",
L'appartenance a une amirauté peut être disputée, et less-certain mis pour tous n'est pas juste. Mais pas faux non plus.
Si il a une amirauté :
{ "relationType": "gvp:broaderPartitive",
"relationTo": "http://gaz.portic.fr/places/%s",
"label": "Admiralty %s",
"when":{"timespans":[
{"start":{"in":"1781"}}, "end":{"in":"1785"}]},
"citations": [
{"label": "Archives Nationales, C4 174 à 176. Procès-verbaux d'inspections des ports et amirautés de France par le commissaire Chardon. 1781-1785",
"@id": "doi:10.4000/books.pur.115293"}],
"certainty": "less-certain"
}
Si il a une province :
{ "relationType": "gvp:broaderPartitive",
"relationTo": "http://gaz.portic.fr/places/%s",
"label": "Province %s",
"when":{"timespans":[
{"start":{"in":"1781"}}, "end":{"in":"1785"}]},
"citations": [
{"label": "Archives Nationales, C4 174 à 176. Procès-verbaux d'inspections des ports et amirautés de France par le commissaire Chardon. 1781-1785",
"@id": "doi:10.4000/books.pur.115293"}],
"certainty": "less-certain"
}
Note : le doi n'est pas le bon. Cela devrait être celui d'unes archives nationales, mais elles n'en donnent pas.
Alors j'ai proposé le DOI du chapitre de Sylvianne Lynares : http://books.openedition.org/pur/115293
https://doi.org/10.4000/books.pur.115293
## Les places amirauté et province
### Décrire une amirauté
"types": [
{ "identifier": "http://vocab.getty.edu/aat/300387179",
"label": "former administrative divisions",
"sourceLabels": [{"label":"Admiralty","lang":"en"}, {"label":"Amirauté","lang":"fr"}],
"when": {"timespans":[{"start":{"earliest":"1669?"}}, {"end":{"latest":"1791"}}]}
}
],
Sa relation d'appartenance
{"relations" : [{"relationType" : "gvp:broaderPartitive", "relationTo" : "http://www.geonames.org/3017382", "label" : "France", "when" : {"timespans" : ["{"start" : {"earliest" : "1669?"}, "end" : {"latest" : "1791"}}"]}}]}
### Décrire une province
"types": [
{ "identifier": "http://vocab.getty.edu/aat/300000774",
"label": "province",
"sourceLabels": [{"label":"Province","lang":"en"}, {"label":"Province","lang":"fr"}],
"when": {"timespans":[{"start":{"in":"1669"}}, {"start":{"in":"1791"}}]}
}
],
Sa relation d'appartenance
{"relations" : [{"relationType" : "gvp:broaderPartitive", "relationTo" : "http://www.geonames.org/3017382", "label" : "France", "when" : {"timespans" : ["{"start" : {"earliest" : "1669?"}, "end" : {"latest" : "1791"}}"]}}]}
### geometries des amirautés
Donner les limites dessinées (mieux) ; mais leur tracé est très incertain.
{"type":"MultiLineString","coordinates":[[[-0.681409213982128,45.3252573654084],[-0.726616615591914,45.3290844955804]]]}
select st_asgeojson(st_transform(geom, 4326))::json->>'coordinates' from limites_amirautes la where standardized_name1 = 'Bordeaux' OR standardized_name2 = 'Bordeaux'
"type": "GeometryCollection",
"geometries": [
{ "type": "MultiLineString",
"coordinates": [%s],
"when": {"timespans":[
{"start":{"in":"1781"},"end":{"in":"1785"}}]},
"citations": [
{"label": "Archives Nationales, C4 174 à 176. Procès-verbaux d'inspections des ports et amirautés de France par le commissaire Chardon. 1781-1785",
"@id":"doi:10.4000/books.pur.115293"}],
"certainty": "uncertain"
},
{ "type": "MultiLineString",
"coordinates": [%s],
"when": {"timespans":[
{"start":{"in":"1781"},"end":{"in":"1785"}}]},
"certainty": "uncertain"
}
]
### geometries des provinces
Donner :
- le contour de la Corse
- le linéaire cotier correspondant aux amirautés incluses ?
- Et pour Rouen ? Le linéaire de la Seine ?
- - la liste des points inclus : oui
-
......@@ -17,8 +17,109 @@ pip3 install -r requirements.txt
### 1.1.1. Running without Apache
python gaz.py
python porticgaz.py
(or create a virtualenv, then activate it and pip install -r requirements && python apidata.py)
Backend is running and serve the data on http://localhost:5004 (change the PORT variable in config.py)
### 1.1.2. Running with Apache
```bash
cd /home/plumegeo/navigo/Viz/gazetteer
git fetch origin master
git reset --hard origin/master
cd ..
cp gazetteer/porticgaz.py gazetteer/__init__.py
sudo chown :www-data /home/plumegeo/navigo/Viz/gazetteer/ -R
sudo chmod 755 /home/plumegeo/navigo/Viz/gazetteer/ -R
for fic in $(find /home/plumegeo/navigo/Viz/gazetteer/ -type f -name "*.py"); do sudo dos2unix $fic; done
sudo service apache2 reload
```
## 1.2. List of possible requests
### 1.2.1. Principes
Les données exposées sont une extraction des points d'escales géolocalisés de navigocorpus pour 1787, composé à partir du registre de la santé de Marseille et des congés du G5, ainsi que les cahiers du petit cabotage sur Marseille. Ces localisations sont récupérées depuis la [base navigocorpus](http://navigocorpus.org/) (logiciel Filemaker) en ligne et téléchargées dans postgres avec le code d'un [ETL disponible dans le gitlab d'humanum](https://gitlab.huma-num.fr/portic/navigocorpus/-/tree/master/ETL).
URL du gazetteer : **http://gaz.portic.fr/places/**
Trois requêtes :
- **[ports](http://gaz.portic.fr/ports)** : un fichier geojson listant tous les ports disponibles dans ce gazetteer
- **[places](http://gaz.portic.fr/places?)** : la description en json_ld d'une place particulière définie par son Uhgs_id (identifiant unique) ou bien par son nom si Amirauté ou Province
- **[fieldnames](http://gaz.portic.fr/fieldnames)** : récupère des métadonnées sur les ports, avec la liste des attributs, avec leur nom court et long, leur type et leur signification.
### 1.2.2. ports
Export list of ports_points (in 900013 projection or what is specified by user) in json format,
with all required attributes for visualisations (selection of parameters is not possible for the moment)
List of attributes :
**ogc_fid, uhgs_id, total, toponym, belonging_states, status, geonameid, admiralty, province, shiparea , point**
point is the geometry of the port.
User can get a description of the attributes by using /fieldnames?api=ports
Default srid is 900913
You get another by specifying a srid param
Will be extracted from postgres, schema ports, table port_points (see navigocorpus/ETL)
Tested alone in a browser:
- http://gaz.portic.fr/ports?srid=4326
- http://gaz.portic.fr/ports?
and by using explorex.portic.fr application (code alphaportic for visualisation) as client : it works
Liste des paramètres et valeur par défaut en gras:
- srid : **900013**
- format : csv | **json**
- shortenfields : true | **false**
**srid** is the projection used to deliver the geometries. Provide a valid EPSG (present in spatial_ref_sys table with postgis 2.5)
**format** permet de télécharger soit au format CSV soit au format JSON les données.
Par exemple :
- <http://gaz.portic.fr/ports/?format=csv>
Le séparateur dans le fichier CSV est le point-virgule (;)
Pour avoir les mêmes données en JSON :
- <http://gaz.portic.fr/ports/?format=json>
**shortenfields** permet de raccourcir les noms des attributs et donc d'alléger la taille du JSON téléchargé. L'API permet de récupérer le mapping entre ces noms courts et longs avec <http://gaz.portic.fr/fieldnames/?format=json>
Exemple :
<http://gaz.portic.fr/ports?format=json&shortenfields=true>
Un exemplaire de ce qui peut être téléchargé est dans le GIT dans samples/ports.json
### 1.2.3. places
Return the places using linked places model as specified in
https://github.com/LinkedPasts/linked-places
See : http://linkedpasts.org/ontology/lpo_latest.ttl
Will be extracted from postgres, schema navigoviz, table ports.port_points (see navigocorpus/ETL)
You can get a province description :
http://127.0.0.1:80/places/?Flandre
You can get a amiraute description :
http://127.0.0.1:80/places/?Dunkerque
You can get a port description (only by its UHGS id):
http://127.0.0.1:80/places/?A0198999
You can go on http://explorex.portic.fr to find the UHGS id of a port present in the database, through a search form with a map to locate it.
### 1.2.4. fielnames
Récupère des métadonnées sur l'API, avec la liste des attributs, avec leur nom court et long, leur type et leur signification.
get metadata about the gazetteer with short and long name, type and definition
Api 'ports' by default.
http://127.0.0.1:80/fieldnames/?format=json
http://127.0.0.1/fieldnames/?format=json&shortenfields=true
http://127.0.0.1/fieldnames/?format=json&shortenfields=true&api=ports
http://127.0.0.1/fieldnames/?format=csv&shortenfields=true&api=ports
\ No newline at end of file
This diff is collapsed.
{"@context": {
"id": "@id",
"type": "@type",
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
"lpo": "http://linkedpasts.org/ontology/lpo_latest.ttl#",
"lawd": "http://lawd.info/ontology/",
"gvp": "http://vocab.getty.edu/ontology#",
"aat": "http://vocab.getty.edu/aat/",
"tgn": "http://vocab.getty.edu/tgn/",
"crm": "http://erlangen-crm.org/current/",
"skos": "http://www.w3.org/2004/02/skos/core#",
"time": "http://www.w3.org/2006/time#",
"foaf": "http://xmlns.com/foaf/0.1/",
"prov": "http://www.w3.org/ns/prov#",
"cito": "http://purl.org/spar/cito#",
"cc": "http://creativecommons.org/licenses/",
"gn": "http://www.geonames.org/ontology#",
"geoname":"http://sws.geonames.org/",
"wiki":"https://www.wikidata.org/wiki/",
"dct": "http://purl.org/dc/terms/",
"identifier": "dct:identifier",
"doi": "https://doi.org/",
"label": {"@id": "rdfs:label"},
"value": {"@id": "rdf:value"},
"title": {"@id": "dct:title"},
"license": "dct:license",
"geojson": "https://purl.org/geojson/vocab#",
"geojson-t": "https://github.com/kgeographer/geojson-t/",
"FeatureCollection": "geojson:FeatureCollection",
"Feature": "geojson:Feature",
"GeometryCollection": "geojson:GeometryCollection",
"LineString": "geojson:LineString",
"MultiLineString": "geojson:MultiLineString",
"MultiPoint": "geojson:MultiPoint",
"MultiPolygon": "geojson:MultiPolygon",
"Point": "geojson:Point",
"Polygon": "geojson:Polygon",
"bbox": { "@container": "@list", "@id": "geojson:bbox" },
"coordinates": { "@container": "@list", "@id": "geojson:coordinates" },
"features": {
"@id": "lpo:hasFeature",
"@type": "geojson:Feature",
"@container": "@set"
},
"properties": "geojson:properties",
"geometry": "geojson-t:geometry",
"geometries": {
"@id":"lpo:setting",
"@type": "lpo:Setting",
"@container": "@set"
},
"geo_wkt":"http://www.opengis.net/ont/geosparql#asWKT",
"periodo": "http://n2t.net/ark:/99152/#",
"ccodes": {"@id": "gn:countryCode"},
"when": {"@id": "lpo:when"},
"timespans": {
"@id": "lpo:timespan",
"@type": "lpo:Timespan",
"@container": "@set"
},
"start": "lpo:has_start",
"end": "lpo:has_end",
"earliest": "lpo:earliest",
"latest": "lpo:latest",
"in": "lpo:in",
"periods": {
"@id": "lpo:period",
"@type": "lpo:PeriodDefinition",
"@container": "@set"
},
"names": {
"@id": "lpo:name_attestation",
"@type": "lpo:NameAttestation",
"@container": "@set"
},
"toponym": "lpo:toponym",
"lang": "dct:language",
"types": {
"@id": "lpo:type_attestation",
"@type": "lpo:TypeAttestation",
"@container": "@set"
},
"sourceLabels": {"@id": "lpo:source_label"},
"relations": {
"@id": "lpo:rel_attestation",
"@type": "lpo:RelAttestation",
"@container": "@set"
},
"relationType": "lpo:relation_type",
"relationTo": "lpo:relation_to",
"certainty": "lpo:has_certainty",
"links": {
"@id": "lpo:link_attestation",
"@type": "lpo:LinkAttestation",
"@container": "@set"
},
"closeMatch": "skos:closeMatch",
"exactMatch": "skos:exactMatch",
"primaryTopicOf":"foaf:primaryTopicOf",
"subjectOf":"crm:P129i_is_subject_of",
"seeAlso":"rdfs:seeAlso",
"citations": {
"@id": "cito:cites",
"@type": "@id"
},
"descriptions": {
"@id": "dct:description",
"@type": "@id",
"@container": "@set"
},
"depictions": {
"@id": "foaf:depiction",
"@type": "@id",
"@container": "@set"
}
}}
\ No newline at end of file
This diff is collapsed.
{
"@id": "http://gaz.portic.fr/places/?Dunkerque",
"type": "Feature",
"properties": {
"title": "Dunkerque",
"ccodes": [
"FR"
]
},
"when": {
"timespans": [
{
"start": {
"in": "1749"
},
"end": {
"in": "1815"
}
}
],
"periods": [
{
"name": "French Domination, 1768-1794",
"@id": "http://chronontology.dainst.org/period/ManfDSiOgYcw"
},
{
"name": "Directory, 1795-1799",
"@id": "http://chronontology.dainst.org/period/Xv3DdDfGaM7X"
},
{
"name": "French rule, 1797-1815",
"@id": "http://chronontology.dainst.org/period/YLGG8dmA6VEd"
}
],
"label": "sample 'when' w/timespans, periods, duration",
"duration": "P70Y"
},
"names": [
{
"toponym": "Dunkerque",
"lang": "fr",
"citations": [
{
"label": "Portic Gazetteer (1787)",
"@id": "http://anr.portic.fr/"
}
]
}
],
"types": [
{
"identifier": "aat:300387179",
"label": "former administrative divisions",
"sourceLabels": [
{
"label": "Admiralty",
"lang": "en"
},
{
"label": "Amirauté",
"lang": "fr"
}
],
"when": {
"timespans": [
{
"start": {
"earliest": "1669?"
},
"end": {
"latest": "1791"
}
}
]
}
},
{
"identifier": "wiki:Q2843514",
"label": "Amirauté (justice)",
"sourceLabels": [
{
"label": "Admiralty",
"lang": "en"
},
{
"label": "Amirauté",
"lang": "fr"
}
],
"when": {
"timespans": [
{
"start": {
"earliest": "1669?"
},
"end": {
"latest": "1791"
}
}
]
}
}
],
"geometry": {
"type": "GeometryCollection",
"geometries": [
{
"type": "MultiLineString",
"coordinates": [
[
[
[
2.71456895817573,
51.15850036834
],
[
2.72841627819055,
51.149566774442
],
[
2.72841627819055,
51.149566774442
]
]
]
],
"when": {
"timespans": [
{
"start": {
"in": "1781"
},
"end": {
"in": "1785"
}
}
]
},
"citations": [
{
"label": "Archives Nationales, C4 174 à 176. Procès-verbaux d'inspections des ports et amirautés de France par le commissaire Chardon. 1781-1785",
"@id": "doi:10.4000/books.pur.115293"
}
],
"certainty": "uncertain"
},
{
"type": "MultiLineString",
"coordinates": [
[
[
[
2.08895429340694,
51.0156306195451
],
[
2.10624880016735,
51.001143379767
],
[
2.10624880016735,