Syntaxe de requête HTTP pour traduire le « ou »

En voulant récupérer la liste des ouvrages que j'ai lus ou achetés en 2011, je me suis demandé comment traduire une telle requête avec une url...

Récupérer une (liste de) ressource(s) décrite(s) par deux données ne pose pas de problème :

GET /resource/?f1=v1&f2=v2
Ressources où f1 à la valeur v1 et f2 à la valeur v2.

J'avais déjà décrit une syntaxe permettant d'intégrer un « ou » pour la valeur d'un champ :

GET /resource/?f1=v1|v2
Ressources où f1 à la valeur v1 ou v2.

Mais comment écrire une requête telle que : « Ressources où f1 à la valeur v1 OU f2 à la valeur v2 » ?

La construction de la chaîne de requête dans une url HTTP n'est pas vraiment normalisée, à part sont début, marquée par un « ? » et sa fin (un « # » ou la fin de l'url).

<scheme>://<user>@<host>:<port>/<path>?<query>#<fragment>
Construction générique d'une uri.

Lors de la soumission d'un formulaire, les données sont envoyées sous forme de couple clé/valeur, les couples étant séparés par une esperluette (&) ou un point-virgule. On pourrait envisager de remplacer l'esperluette par le symbole mathématique du « ou » (///&or;///, soit « &or; » en HTML et U+2228 en unicode). Cela pourrait être quelque chose du genre :

GET /resource/?f1=v1∨f2=v2
Ressources où f1 à la valeur v1 ou f2 à la valeur v2.
Titre
Uniform Resource Identifier (URI): Generic Syntax
chapter
3.4. Query
Auteurs
  • Tim Berners-Lee
  • R. Fielding
  • L. Masinter
Éditeur
IETF
Date
Titre
Query string