DATAtourisme

Filtrer les POI avec une date variable

Bonjour :wave:

Dans une requête SparQL je souhaite effectuer un filtre sur les POI pour ne récupérer que ceux modifiés récemment, avec l’attribut lastUpdateDatatourisme. Voici un example de requête reproduisant le problème :

PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX core: <https://www.datatourisme.fr/ontology/core#>

CONSTRUCT { 
  ?pointOfInterest rdf:type <urn:resource>. 
} WHERE { 
  ?pointOfInterest core:lastUpdateDatatourisme ?lastUpdateDateTime.
  FILTER(?lastUpdateDateTime >= xsd:dateTime(NOW() - "P30D"^^xsd:dayTimeDuration))
}

Celui-ci est censé filtrer les POI en ne gardant que ceux dont la dernière mise à jour date de moins de 30 jours, mais je n’ai aucun résultat en retour (avec le boutton « Prévisualisation des résultat » de l’éditeur de flux). La requête fonctionne lorsqu’on remplace l’expression par une date fixe, de la façon suivante :

PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX core: <https://www.datatourisme.fr/ontology/core#>

CONSTRUCT { 
  ?pointOfInterest rdf:type <urn:resource>. 
} WHERE { 
  ?pointOfInterest core:lastUpdateDatatourisme ?lastUpdateDateTime.
  FILTER(?lastUpdateDateTime >= "2024-04-15T00:00:00.000"^^xsd:dateTime)
}

Existe-t-il un moyen pour construire une date en fonction de now(), et de comparer cette date à un attribut d’un POI ?

Cordialement,

Bonjour,

Vous pouvez utiliser ce filtre :

FILTER(?lastUpdateDateTime  + "P30D"^^<http://www.w3.org/2001/XMLSchema#duration> >= NOW())

Cordialement

Bonjour, c’est parfait merci !!