DATAtourisme

Aide pour requête de flux

Bonjour,
Est-il possible d’avoir une aide pour une requête de flux en .CSV?

Il me faudrait en poi : Bowling , avec comme informations : Nom ; Description courte ; Lattitude ; Longitude ; Cp ; Ville ; Telephone ; Email ; Site-web.

Mes requêtes ne me sortent que des doublons :

PREFIX : <https://www.datatourisme.gouv.fr/ontology/core#> 

PREFIX schema: http://schema.org/
PREFIX rdfs: http://www.w3.org/2000/01/rdf-schema#
PREFIX rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
PREFIX dc: http://purl.org/dc/elements/1.1/
PREFIX ebucore: http://www.ebu.ch/metadata/ontologies/ebucore/ebucore#
PREFIX owl: http://www.w3.org/2002/07/owl#
PREFIX foaf: http://xmlns.com/foaf/0.1/
Select ?nom ?descri ?longitude ?latitude ?cp ?ville ?telephone ?email
WHERE {
?poi a :BowlingAlley;
:isLocatedAt ?place;

 ## qui est localisé à ?place
   rdfs:label ?nom.     ## et a pour nom ?nom.
   FILTER langMatches( lang(?nom), "fr" )   ## en français  
   Filter LangMatches( Lang(?descri), "fr") 

?place schema:geo ?geo.## ?place a pour coordonnées géographiques ?geo
?geo schema:longitude ?longitude; ## ?geo a pour longitude ?longitude
schema:latitude ?latitude. ## et a pour latitude ?latitude

?place schema:address ?adress.
?adress schema:addressLocality ?ville;
schema:postalCode ?cp.

Optional{ ?poi :hasContact ?contact.}
?contact schema:email ?email;
schema:telephone ?telephone.

Optional { ?poi :hasDescription ?description.
?description :shortDescription ?descri.
} }

Merci :slight_smile: .

Bonjour,

Il faut intégrer les propriétés de vos contacts dans l’ensemble Optional. (Sinon il vas chercher des emails et téléphones sans forcement de relation avec le POI)

Ensuite ces POI peuvent avoir plusieurs contacts et eux même plusieurs emails et téléphones. En CSV cela se traduit par défaut en multipliant les lignes avec juste les colonnes des contacts qui changent (les doublons que vous avez détectés).
Vous pouvez le prendre en compte lors du chargement de votre CSV.

Une autre approche est de « sérialiser » les contacts du POI en utilisant une sous requête.

optional {
      ## sérialisation des contacts
      {select ?poi (group_concat(?contact;SEPARATOR="|") as ?contacts) where { 
        ?poi <https://www.datatourisme.gouv.fr/ontology/core#hasContact> ?contactUri.
        ## sérialisation des propriétés qui peuvent être multiples ou absentes
        {select ?contactUri (concat(group_concat(distinct ?telephone;SEPARATOR="#"),"##",group_concat(distinct ?email;SEPARATOR="#")) as ?contact) where {
          ?contactUri a <https://www.datatourisme.gouv.fr/ontology/core#Agent>.
          optional {
            ?contactUri schema:email ?email.
            }
          optional {
            ?contactUri schema:telephone ?telephone.
            }      
          } group by ?contactUri
         }
        } group by ?poi 
      }
    }

Pour votre requête cela donnerai :

Cordialement.

1 « J'aime »

Bonjour et merci pour votre réponse Conjecto.
Le procédé est-il le même pour extraire les horaires des-dits bowling dans ce style : Mon,09:00:00,19:00:00|Tue,09:00:00,19:00:00|Wed,09:00:00,19:00:00|Thu,09:00:00,19:00:00|Fri,09:00:00,19:00:00|Sat,09:00:00,19:00:00|Sun,closeAllDay
Cette extraction ne sera-t-elle pas trop lourde pour un csv ?

Merci.

Bonjour,
En complément de la réponse technique de Conjecto, veuillez noter que pour le moment, les données publiées par les territoires ne contiennent pas toujours le détail des horaires d’ouverture des établissements, voire même assez peu souvent.

C’est un sujet lié au chantier « qualité des données » sur lequel nous travaillons actuellement, afin d’encourager les entreprises, Offices de tourisme et organismes départementaux / régionaux à renseigner ces champs le plus précisément possible. Ce travail prend du temps sur le terrain, tant pour la collecte que pour la saisie, mais nous avançons pas à pas sur le sujet !
Bonne journée,

Pascale, équipe DATAtourisme