# Schéma d'URI

Un schéma d’URI, en informatique, est le premier niveau de la structure de nommage des identifiants uniformes de ressources (URI). Toutes les URL sont construites à partir d'un nom de schéma, suivi de deux points (« : ») puis de l'URI, spécifique au schéma. La syntaxe et la sémantique de la partie spécifique sont, en grande partie, laissées aux spécifications des différents schémas.
La plupart des schémas ayant été conçus à l'origine pour être utilisés avec un protocole, ils sont souvent appelés de manière incorrecte des « protocoles » ou des « protocoles d'URI ». Par exemple, le schéma HTTP est en général utilisé pour désigner des ressources Web utilisant le protocole HTTP. Maintenant, des URI de ce schéma sont utilisés pour d'autres applications, comme les ressources RDF (voir RDF Schema) ou les espaces de nom XML, qui n'ont pas de rapport avec le protocole. De plus, certains schémas ne sont associés à aucun protocole particulier (comme le schéma file) et d'autres n'utilisent pas le nom d'un protocole comme préfixe (comme le schéma news pour usenet). Bien que l'usage semble avoir accepté le terme schéma, le mot plan, pour plan d'URI, est une traduction plus adaptée du mot anglais scheme.
Les schémas d'URI sont censés être enregistrés auprès de l'IANA, mais des schémas non enregistrés sont utilisés en pratique. La RFC 4395 décrit la procédure d'enregistrement d'un nouveau schéma d'URI.

## Syntaxe générique

Le standard Internet STD 66 (voir aussi la RFC 3986) définit la syntaxe commune utilisée par tous les schémas d'URI. Chaque URI est constitué de quatre parties :
Le nom du schéma est une lettre suivie de n'importe quelle combinaison de lettres, de chiffres, du signe plus (+), du point (.) ou d'un tiret (-) et se termine par deux points (:).
La partie hiérarchique de l'URI est prévue pour contenir les informations d'identification de la ressource, hiérarchique par nature. En général, cette partie commence par un double slash (//), suivi par le domaine puis un chemin optionnel.
* Le domaine est principalement constitué du nom d'hôte ou de l'adresse IP, cette information peut être encadrée par deux autres champs optionnels : avant, les informations concernant l'utilisateur délimitées par un @ ; après, un numéro de port, précédé par un deux-points (:).
* Le chemin est une séquence de segments (similaires à des répertoires), séparés par des slash (/). Chaque segment peut contenir des paramètres séparés par des points virgules (;), bien que cela soit rarement utilisé.
La requête est une partie optionnelle séparée par un point d'interrogation qui contient des informations complémentaires qui ne sont pas de nature hiérarchique. Le format de la requête n'est pas défini de manière générale, mais est souvent formée d'une suite de paires <clef>=<valeur> séparées par des points virgules ou par des esperluettes.
Le fragment est une partie optionnelle séparée par un dièse. Il fournit des informations supplémentaires permettant d'accéder à une ressource secondaire. Lorsque la ressource est un document HTML, le fragment est souvent l'id d'un élément et le navigateur fera le nécessaire pour que cet élément soit visible.

### Exemples

Voici un exemple d'URI ainsi que de ses différents composants :

## Schémas enregistrés auprès de l'IANA

| Schéma | But | Défini par | Format | Notes |
| aaa | protocole Diameter | RFC 3588 | aaa://<host>[:<port>][;transport=<transport>][;protocol=<protocol>] exemple : aaa://host.example.com:1813;transport=udp;protocol=radius | |
| aaas | Équivalent sécurisé de aaa | RFC 3588 | aaas://<host>[:<port>][;transport=<transport>][;protocol=<protocol>] | |
| acap | Application Configuration Access Protocol (en) | RFC 2244 | acap://[<user>[;AUTH=<type>]@]<host>[:<port>]/<entry> | Schéma d'URL utilisé dans le protocole ACAP pour l'attribut « subdataset », les références et l'héritage. |
| cap | Calendar access protocol | RFC 4324 | generic syntax | Schéma utilisé à la fois pour adresser les dépôts de calendriers et les calendriers accessible via CAP. |
| cid | Identifie les différentes parties d'un message SMTP/MIME. | RFC 2392 | cid:<content-id> |
| crid | TV-Anytime Content Reference Identifier | RFC 4078 | crid://<host>/<data> | Permet de référencer les contenus prévus à la diffusion. |
| data | Inclusion de petites quantités de données dans l'URI elle-même | RFC 2397 | data:<mediatype>[;base64],<data> | |
| dav | HTTP Extensions for Distributed Authoring (WebDAV) | RFC 2518 | dav: | Utilisé pour les identifiants internes uniquement. |
| dict | Dictionary service protocol | RFC 2229 | dict://<user>;<auth>@<host>:<port>/d:<word>:<database>:<n> dict://<user>;<auth>@<host>:<port>/m:<word>:<database>:<strat>:<n> | |
| dns | Domain Name System | RFC 4501 | dns:[//<host>[:<port>]/]<dnsname>[?<dnsquery>] exemples : dns:example?TYPE=A;CLASS=IN dns://192.168.1.1/ftp.example.org?type=A | |
| fax | Utilisé pour les numéros de fax. | RFC 2806 | fax:<phonenumber> | Rendu obsolète par la RFC 3966. L'utilisation du schéma tel est désormais recommandée pour tout type de numéro. |
| file | Référence les fichiers sur un système de fichier local ou sur le réseau. | RFC 1738 RFC 3986 | file://[host]/path ou (RFC 3986) file:[//host]/path | |
| ftp | Ressources FTP | RFC 1738 | syntaxe générique | |
| geo (en) | Coordonnées géographiques (GPS) | RFC 5870 | geo:<lat>,<lon>[,<alt>][;u=<uncertainty>] (voir WGS 84) | D'autres systèmes de coordonnées, y compris non terrestres (Lune, Mars…) existeront sans être encore référencés. |
| go | Common Name Resolution Protocol | RFC 3368 | go://[<host>]?[<common-name>]*[;<attribute>=[<type>,]<value>] ou go:<common-name>*[;<attribute>=[<type>,]<value>] | |
| gopher | Utilisé par le protocole Gopher | RFC 4266 | gopher://<host>:<port>/<item type>/<path> | |
| h323 | H.323 | RFC 3508 | h323:[<user>@]<host>[:<port>][;<parameters>] | |
| http | Ressources HTTP | RFC 2616 | syntaxe générique | |
| https | Connexions http sécurisées. | RFC 2817 | syntaxe générique | |
| icap | Internet Content Adaptation Protocol | RFC 3507 | | |
| im | Instant messaging protocol | RFC 3860 RFC 4622 | im:<username>[@<host>] | |
| imap | Permet d'accéder aux courriers électroniques via IMAP | RFC 2192 | imap://[<user>[;AUTH=<type>]@]<host>[:<port>]/<command> | |
| info (en) | Information Assets with Identifiers in Public Namespaces | RFC 4452 | | |
| ipp | Internet Printing Protocol | RFC 3510 | | |
| iris iris.beep iris.xpc iris.xpcs iris.lws | Internet Registry Information Service | RFC 3981 RFC 3983 RFC 4992 RFC 4992 RFC 4993 | | |
| ldap | Requête LDAP | RFC 2255 RFC 4516 | ldap://[<host>[:<port>]][/<dn> [?[<attributes>][?[<scope>][?[<filter>][?<extensions>]]]]] exemple : ldap://ldap1.example.net:6666/o=University%20of%20Michigan, c=US??sub?(cn=Babs%20Jensen) | |
| lsid | LSID | dtc/04-10-08 | URN:LSID:<Authority>:<Namespace>:<ObjectID>[:<Version>] exemple : urn:lsid:ubio.org:namebank:11815 | |
| mailto | SMTP e-mail addresses and default content | RFC 2368 | mailto:<address>[?<header1>=<value1>[&<header2>=<value2>]] exemple : mailto:jsmith@example.com?subject=A%20Test&body=My%20idea%20is%3A%20%0A | |
| mid | Référence les messages ou des parties de messages SMTP/MIME. | RFC 2392 | mid:<message-id>[/<content-id>] | (Voir aussi cid:) |
| modem | modem | RFC 3966 | | |
| msrp msrps | Message Session Relay Protocol | RFC 4975 | | |
| mtqp | Message Tracking Query Protocol | RFC 3887 | | |
| mupdate | Mailbox Update Protocol | RFC 3656 | | |
| news | Usenet | RFC 1738 | news:<newsgroupname> ou news:<message-id> | |
| nfs | Ressources Network File System | RFC 2224 | syntaxe générique | |
| nntp | Usenet NNTP | RFC 1738 | nntp://<host>:<port>/<newsgroup-name>/<article-number> | |
| opaquelocktoken | opaquelocktoken | RFC 4918 | | |
| pop | Permet d'accéder à une boîte mail via POP3 | RFC 2384 | pop://[<user>[;AUTH=<auth>]@]<host>[:<port>] | |
| pres | Utilisé dans CPP pour identifier une présence. | RFC 3859 | pres:<address>[?<header1>=<value1>[&<header2>=<value2>]] | |
| prospero | Prospero Directory Service | RFC 4157 | | |
| rtsp | Real Time Streaming Protocol | RFC 2326 | | |
| service | | RFC 2609 | | |
| shttp | HTTP sécurisé | RFC 2660 | | Largement remplacé par HTTPS. |
| sip | Utilisé par SIP | RFC 3969 RFC 3261 | sip:<user>[:<password>]@<host>[:<port>][;<uri-parameters>][?<headers>] exemples : sip:alice@atlanta.com?subject=project%20x&priority=urgent sip:+1-212-555-1212 :1234@gateway.com;user=phone | |
| sips (en) | Version sécurisé de sip | RFC 3969 RFC 3261 | sips:<user>[:<password>]@<host>[:<port>][;<uri-parameters>][?<headers>] | |
| sms | Utilisé pour envoyer un SMS à partir d'un appareil compatible | RFC 5724 | sms:<phonenumber>[,<phonenumber>]?body=<text>*[&<name>=<value>] exemples : sms:+33123456789,+33987654321 sms:+33123456789?body=hello%20vous | |
| snmp | Simple Network Management Protocol | RFC 4088 | snmp://[user@]host[:port][/[<context>[;<contextEngineID>]][/<oid>]] exemples : snmp://example.com//1.3.6.1.2.1.1.3+ snmp://tester5@example.com:8161/bridge1;800002b804616263 | |
| soap.beep soap.beeps | | RFC 3288 | | |
| tag | Tag URI | RFC 4151 | tag:<email/domainname>,<date>:<Item> | |
| tel | Utilisé pour les numéros de téléphone | RFC 3966 RFC 2806 | tel:<phonenumber> | |
| telnet | Utilisé par telnet | RFC 4248 | telnet://<user>:<password>@<host>[:<port>/] | |
| tftp | Trivial File Transfer Protocol | RFC 3617 | | |
| thismessage | Résolution de référence relative multipart/related | RFC 2557 | | |
| tip | Transaction Internet Protocol | RFC 2371 | | |
| tv | Diffusion TV | RFC 2838 | | |
| urn | Noms uniformes de ressources | RFC 2141 | urn:<namespace>:<specificpart> | |
| vemmi | Versatile Multimedia Interface | RFC 2122 | | |
| wais | Utilisé par WAIS | RFC 4156 | wais://<host>:<port>/<database>[?<search>] ou wais://<host>:<port>/<database>/<wtype>/<wpath> | |
| xmlrpc.beep xmlrpc.beep | | RFC 3529 | | |
| xmpp | XMPP | RFC 5122 | xmpp:<user>@<host>[:<port>]/[<resource>][?<query>] | |
| z39.50r | Z39.50 | RFC 2056 | z39.50r://<host>[:<port>]/<database>?<docid>[;esn=<elementset>][;rs=<recordsyntax>] |
| z39.50s | Session Z39.50 | RFC 2056 | z39.50s://<host>[:<port>]/[<database>][?<docid>][;esn=<elementset>][;rs=<recordsyntax>] |

## Schémas d'URI non officiels couramment utilisés

| Schéma | But | Défini par | Format | Notes |
| about | Affiche des informations concernant le produit | IETF Draft | | Utilisé par les navigateurs webs, parfois aussi pour fournir des options interactives. Le navigateur Opera utilise opera:. |
| adiumxtra | Installation directe de plugins Adium. | The Adium Team | adiumxtra://www.adiumxtras.com/download/0000 | 0000 identifie un plugin spécifique. |
| aim | Permet de contrôler AOL Instant Messenger. | AOL | aim:<function>?<parameters> | Les fonctions comprennent goim, addbuddy et buddyicon. |
| apt | Méthode expérimentale pour installer des logiciels via APT. | | apt:<package name> | Utilisé sur les sites hébergeant des dépôts logiciels pour Debian. |
| afp | Permet d'accéder aux partages Apple Filing Protocol shares | IETF Draft | via TCP/IP: afp://[<user>@]<host>[:<port>][/[<path>]] via AppleTalk: afp:/at/[<user>@]<host>[:<zone>][/] | |
| aw | Liens vers un monde Active Worlds | Activeworlds Inc. | aw://<worldserver host>:<worldserver port>/<worldname> | Se trouve généralement comme referer lorsqu'un utilisateur ouvre un site depuis un monde Active Worlds. |
| Bolo (en) | Rejoindre une partie de Bolo | | bolo://<hostname>/ | Généralement transmise par IRC ou par des serveurs de jeux. |
| callto | Démarre une communication Skype | | callto:<screenname> ou callto:<phonenumber> | Initialement apparu dans NetMeeting. Fonctionne avec les versions actuelles de Skype avec Firefox, Internet Explorer et Safari |
| chrome | Utilisé par les interfaces construites avec XUL. | Mozilla | chrome://<package>/<section>/<path> (Ou <code><section></code> peut être "content", "skin" ou "locale") | Fonctionne seulement dans les navigateurs basés sur Mozilla, tels que Firefox, SeaMonkey et Netscape. |
| coap | Accède aux ressources par Constrained Application Protocol (CoAP). | IETF Draft | coap://<host>[:<port>]/<path>[?<query>] | Identifie les ressources CoAP et permet de localiser les ressources. |
| content | Accède à un fournisseur de contenu Android. | Open Handset Alliance | content://provider/<path> | Effectue une requête sur un fournisseur de contenu Android. |
| cvs | Lien vers un dépôt CVS. | Concurrent Versions System | cvs://<method:logindetails>@<repository>/<modulepath>;[date=date to retrieve | tag=tag to retrieve] | |
| doi | Digital object identifier, a digital identifier for any object of intellectual property. | The International DOI Foundation | doi:10.<publisher number>/<suffix> Exemple : doi:10.1000/182 | Used e.g. for most scientific publications. Can be resolved via HTTP (transformed into an URL) by appending https://dx.doi.org/ or http://hdl.handle.net/ in front. |
| ed2k | Resources available using the eDonkey2000 network | eDonkey2000 | ed2k://|file|<filename>|<size of file>|<hash of file>|/ ou ed2k://|server|<host>|<port>|/ | Links to servers are also possible, as are additional parameters. Official documentation from « eDonkey2000 website » (archivé sur Internet Archive) |
| feed (en) | web feed subscription | | feed:<absolute_uri> ou feed://<hierarchical part> exemples : feed://example.com/rss.xml feed:https://example.com/rss.xml | See Feed URI scheme (en) for a detailed overview of common implementations, supported software, and critics. |
| finger | Querying user information using the Finger protocol | IETF Draft | finger://host[:port][/<request>] | |
| fish | Accessing another computer's files using the SSH protocol | fish KDE kioslave | fish://[<username>[:<password>]@]<hostname>[:<port>] | |
| gg | Starting chat with Gadu-Gadu user | Gadu-Gadu | gg:<userid> | |
| gizmoproject | Gizmo5 calling link. | | gizmoproject://call?id=<gizmo_id> | May use sip:// instead of gizmoproject:// in recent versions of Gizmo5. |
| gtalk | Start a chat with a Google Talk user | Google Talk | gtalk:chat?jid=example@gmail.com | See Google Talk, XMPP, and http://juberti.blogspot.com/2006/11/gtalk-uri.html for more information |
| iax2 | Inter-Asterisk eXchange protocol version 2 | IETF Draft | iax2:[<username>@]<host>[:<port>][/<number>[?<context>]] exemples : iax2:[2001:db8::1]:4569/alice?friends iax2:johnQ@example.com/12022561414 |
| irc | Connecting to an Internet Relay Chat server to join a channel. | IETF Draft Old IETF Draft | irc://<host>[:<port>]/[<channel>[?<password>]] | Assuming the client knows a server associated with the name, "host" may optionally be an IRC network name. |
| ircs | Secure equivalent of irc | IETF Draft | ircs://<host>[:<port>]/[<channel>[?<password>]] | See irc |
| irc6 | IPv6 equivalent of irc | | irc6://<host>[:<port>]/[<channel>[?<password>]] | See irc |
| itms | Used for connecting to the iTunes Music Store | Apple | itms: | |
| jar | Compressed archive member | Java API | jar:<url>!/[<entry>] | Works for any ZIP based file. |
| javascript | Execute JavaScript code | IETF Draft | javascript:<javascript to execute> | Works in any modern browser. |
| keyparc | Keyparc encrypt/decrypt resource. | Bloombase | keyparc://encrypt/<username>/<uri> ou keyparc://decrypt/<username>/<uri> |
| lastfm | Connecting to a radio stream from Last.fm. | Last.fm | lastfm://<radio_stream> ou lastfm://globaltags/<genre> ou lastfm://user/<username>/<stuff> | |
| ldaps | Secure equivalent of ldap | | ldaps://[<host>[:<port>]][/<dn> [?[<attributes>][?[<scope>][?[<filter>][?<extensions>]]]]] | Not an IETF standard, but commonly used in applications. |
| Magnet | "magnet links" | Magnet-URI Project | magnet:?xt=urn:sha1:<hash of file>&dn=<display name> (other parameters are also possible) | Used by various peer-to-peer clients, usually providing the hash of a file to be located on the network. |
| maps | "map links" | | maps:q=<physical location> | Some mobile web browsers will launch a dedicated mapping application. |
| mms | Windows streaming media | | mms://<host>:<port>/<path> | Used by Windows Media Player to stream audio and/or video. |
| msnim | Adding a contact, or starting a conversation in Windows Live Messenger | Windows Live Messenger | Add a contact to the buddy list msnim:add?contact=nada@nowhere.com Start a conversation with a contact msnim:chat?contact=nada@nowhere.com Start a voice conversation with a contact msnim:voice?contact=nada@nowhere.com Start a video conversation with a contact msnim:video?contact=nada@nowhere.com | Can be invoked from a web page or via a run command or an Internet Explorer browser URL (won't work with Firefox 2.0.0.8). For web pages use this HTML: <a href="chat?contact=nada@nowhere.com">Click to chat!</a> |
| mvn | Access Apache Maven repository artifacts | OPS4J | mvn:org.ops4j.pax.web.bundles/service/0.2.0-SNAPSHOT mvn:http://user:password@repository.ops4j.org/maven2!org.ops4j.pax.web.bundles/service/0.2.0 | |
| notes | Open a Lotus Notes document or database | Lotus Notes | notes://<address> | Used by IBM Lotus Notes to refer to documents and databases stored within the Lotus Notes system. When clicked in a browser on a computer with Lotus Notes client installed, Notes will open the document link as if a Notes DocLink were clicked within Notes. |
| psyc | Used to identify or locate a person, group, place or a service and specify its ability to communicate | PSYC | psyc:[//<host>[:[<port>][<transport>]]/[<object-name>][#<channel-name>] | Official documentation from PSYC website |
| paparazzi:http | Used to launch and automatically take a screen shot using the application "Paparazzi" (Mac only) | Derailer | paparazzi:http:[//<host>[:[<port>][<transport>]]/ | Official documentation from Paparazzi website |
| rmi | Look up a Java object in an RMI registry. | Sun | rmi://<host>[:<port>]/<object-name> | URI scheme understood by JNDI. Can be used to lookup a remote Java object within an RMI registry (typically for the purposes of RMI on that object). Host/port in the URI are of the rmiregistry process, not the remote object. |
| rsync | rsync | | rsync://<host>[:<port>]/<path> | |
| secondlife | Open the Map floater in Second Life application to teleport the resident to the location. | Linden Lab | secondlife://<region name>/<x position>/<y position>/<z position> | Used by SLurl.com. Knowledge base article. |
| sgn | Social Graph Node Mapper | Google | exemple : sgn://social-network.example.com/?ident=bob | Official documentation from sgnodemapper project. |
| skype | Launching Skype call (official; see also callto:) | Skype | skype:<username|phonenumber>[?[add|call|chat|sendfile|userinfo]] | Official documentation from Skype website. |
| sftp | SFTP file transfers (not be to confused with FTPS (FTP/SSL)) | IETF Draft | sftp://[<user>[;fingerprint=<host-key fingerprint>]@]<host>[:<port>]/<path>/<file> | |
| smb | Accessing SMB/CIFS shares | IETF Draft | smb://[<user>@]<host>[:<port>][/[<path>]][?<param1>=<value1>[;<param2>=<value2>]] ou smb://[<user>@]<workgroup>[:<port>][/] | |
| soldat | Joining servers | Soldat | soldat://<host>:<port>/[password] exemple : soldat://127.0.0.1:23073/thatssecret! | Official note in Manual |
| ssh | SSH connections (like telnet:) and | IETF Draft | ssh://[<user>[;fingerprint=<host-key fingerprint>]@]<host>[:<port>] | |
| steam | Interact with Steam: install apps, purchase games, run games, etc. | Steam, Valve Corporation | steam:<command line arguments> ou steam://<action>/<id, addon, IP, hostname, etc.> | Official documentation from Valve Developer Community website |
| svn | Provides a link to a Subversion (SVN) source control repository | Subversion (software) | svn[+ssh]://<logindetails>@<repository><:port>/<modulepath> | |
| teamspeak | Joining a server. | TeamSpeak | teamspeak://<server>[:<port>]/[?<parameter1>=<value1>[&<parameter2>=<value2>]] | Official documentation from TeamSpeak Website |
| unreal | Joining servers | Unreal | unreal://<server>[:<port>]/ | Unreal legacy "protocol" |
| ut2004 | Joining servers | Unreal Tournament 2004 | ut2004://<server>[:<port>][/<map>?<options>] | Documentation from Unreal Developer Network |
| ventrilo | Joining a server. | Ventrilo | ventrilo://<server>[:<port>]/[?<parameter1>=<value1>[&<parameter2>=<value2>]] | Official documentation from Ventrilo Website |
| view-source (en) | Shows a web page as code ‘in the raw’. | Mozilla, Google Chrome | view-source:<URI> exemple : view-source:http://en.wikipedia.org/wiki/URI_scheme | See view-source (en) for details. |
| webcal | Subscribing to calendars in iCalendar format | iCalendar | webcal://<hierarchical part> exemple : webcal://example.com/calendar.ics | HTTP as a transport protocol is assumed. See Webcal for details. |
| wtai | Wireless Telephony Application Interface | WAP Forum | wtai://wp/mc/+18165551212 | See Application Protocol Wireless Application Environment Specification Version 1.1 [PDF] for details. |
| wyciwyg | What You Cache Is What You Get WYCIWYG | Mozilla | wyciwyg://<URI> | See WYCIWYG for details. |
| xfire | Adding friends and servers, joining servers, changing status text. | Xfire | xfire:<function>[?<parameter1>=<value1>[&<parameter2>=<value2>]] | Official documentation from Xfire website |
| xri | eXtensible Resource Identifier (XRI) | OASIS XRI Technical Committee | xri://<authority>[/[<path>]][?<query>][#fragment] | Official documentation from OASIS XRI Technical Committee |
| ymsgr | Sending an instant message to a Yahoo! Contact. | Yahoo! Messenger | ymsgr:sendIM?<screenname> | |