1:- module( 2 uriparser, 3 [ 4 check_iri/1, % +Iri 5 check_uri/1, % +Uri 6 is_http_uri/1, % @Term 7 is_iri/1, % @Term 8 is_uri/1, % @Term 9 resolve_uri/3, % +Base, +Relative, ?Absolute 10 uri_scheme/1 % ?Scheme 11 ] 12). 13:- reexport(library(uri)).
19:- use_foreign_library(foreign(uriparser)).
TODO
: Only checking for URI compliance ATM.
31check_iri(Iri) :-
32 uri_iri(Uri, Iri),
33 check_uri(Uri).
43check_uri(Uri) :- 44 uri_components(Uri, uri_components(Scheme,Auth,Path,_,_)), 45 check_scheme_(Scheme, Uri), 46 scheme_specific_checks(Uri, Scheme, Auth, Path), 47 is_uri_(Uri). 48 49check_scheme_(Scheme, _) :- 50 uri_scheme(Scheme), !. 51check_scheme_(Schema, Uri) :- 52 throw(error(existence_error(uri_scheme,Schema),Uri)). 53 54scheme_specific_checks(_, Scheme, Auth, Path) :- 55 ( % URI schemes that require a ground authority component. 56 memberchk(Scheme, [http,https]) 57 -> ground(Auth) 58 ; % URI schemes that require a ground path component. 59 memberchk(Scheme, [file,mailto,urn]) 60 -> ground(Path) 61 ; true 62 ), !. 63scheme_specific_checks(Uri, _, _, _) :- 64 syntax_error(grammar(uri,Uri)).
72is_http_uri(Uri) :-
73 is_uri(Uri),
74 uri_components(Uri, Comps),
75 uri_data(scheme, Comps, Scheme),
76 memberchk(Scheme, [http,https]).
82is_iri(Term) :-
83 catch(check_iri(Term), E, print_message(warning, E)),
84 var(E).
90is_uri(Term) :-
91 catch(check_uri(Term), E, print_message(warning, E)),
92 var(E).
99resolve_uri(Base, Relative, Absolute) :-
100 resolve_uri_(Base, Relative, Absolute).
125uri_scheme(aaa). 126uri_scheme(aaas). 127uri_scheme(about). 128uri_scheme(acap). 129uri_scheme(acct). 130uri_scheme(acd). 131uri_scheme(acr). 132uri_scheme(adiumxtra). 133uri_scheme(adt). 134uri_scheme(afp). 135uri_scheme(afs). 136uri_scheme(aim). 137uri_scheme(amss). 138uri_scheme(android). 139uri_scheme(appdata). 140uri_scheme(apt). 141uri_scheme(ark). 142uri_scheme(attachment). 143uri_scheme(aw). 144uri_scheme(barion). 145uri_scheme(beshare). 146uri_scheme(bitcoin). 147uri_scheme(bitcoincash). 148uri_scheme(blob). 149uri_scheme(bolo). 150uri_scheme(browserext). 151uri_scheme(calculator). 152uri_scheme(callto). 153uri_scheme(cap). 154uri_scheme(cast). 155uri_scheme(casts). 156uri_scheme(chrome). 157uri_scheme('chrome-extension'). 158uri_scheme(cid). 159uri_scheme(coap). 160uri_scheme('coap+tcp'). 161uri_scheme('coap+ws'). 162uri_scheme(coaps). 163uri_scheme('coaps+tcp'). 164uri_scheme('coaps+ws'). 165uri_scheme('com-eventbrite-attendee'). 166uri_scheme(content). 167uri_scheme(conti). 168uri_scheme(crid). 169uri_scheme(cvs). 170uri_scheme(dab). 171uri_scheme(data). 172uri_scheme(dav). 173uri_scheme(diaspora). 174uri_scheme(dict). 175uri_scheme(did). 176uri_scheme(dis). 177uri_scheme('dlna-playcontainer'). 178uri_scheme('dlna-playsingle'). 179uri_scheme(dns). 180uri_scheme(dntp). 181uri_scheme(dpp). 182uri_scheme(drm). 183uri_scheme(drop). 184uri_scheme(dtmi). 185uri_scheme(dtn). 186uri_scheme(dvb). 187uri_scheme(ed2k). 188uri_scheme(elsi). 189uri_scheme(example). 190uri_scheme(facetime). 191uri_scheme(fax). 192uri_scheme(feed). 193uri_scheme(feedready). 194uri_scheme(file). 195uri_scheme(filesystem). 196uri_scheme(finger). 197uri_scheme('first-run-pen-experience'). 198uri_scheme(fish). 199uri_scheme(fm). 200uri_scheme(ftp). 201uri_scheme('fuchsia-pkg'). 202uri_scheme(geo). 203uri_scheme(gg). 204uri_scheme(git). 205uri_scheme(gizmoproject). 206uri_scheme(go). 207uri_scheme(gopher). 208uri_scheme(graph). 209uri_scheme(gtalk). 210uri_scheme(h323). 211uri_scheme(ham). 212uri_scheme(hcap). 213uri_scheme(hcp). 214uri_scheme(http). 215uri_scheme(https). 216uri_scheme(hxxp). 217uri_scheme(hxxps). 218uri_scheme(hydrazone). 219uri_scheme(iax). 220uri_scheme(icap). 221uri_scheme(icon). 222uri_scheme(im). 223uri_scheme(imap). 224uri_scheme(info). 225uri_scheme(iotdisco). 226uri_scheme(ipn). 227uri_scheme(ipp). 228uri_scheme(ipps). 229uri_scheme(irc). 230uri_scheme(irc6). 231uri_scheme(ircs). 232uri_scheme(iris). 233uri_scheme('iris.beep'). 234uri_scheme('iris.lwz'). 235uri_scheme('iris.xpc'). 236uri_scheme('iris.xpcs'). 237uri_scheme(isostore). 238uri_scheme(itms). 239uri_scheme(jabber). 240uri_scheme(jar). 241uri_scheme(jms). 242uri_scheme(keyparc). 243uri_scheme(lastfm). 244uri_scheme(ldap). 245uri_scheme(ldaps). 246uri_scheme(leaptofrogans). 247uri_scheme(lorawan). 248uri_scheme(lvlt). 249uri_scheme(magnet). 250uri_scheme(mailserver). 251uri_scheme(mailto). 252uri_scheme(maps). 253uri_scheme(market). 254uri_scheme(message). 255uri_scheme('microsoft.windows.camera'). 256uri_scheme('microsoft.windows.camera.multipicker'). 257uri_scheme('microsoft.windows.camera.picker'). 258uri_scheme(mid). 259uri_scheme(mms). 260uri_scheme(modem). 261uri_scheme(mongodb). 262uri_scheme(moz). 263uri_scheme('ms-access'). 264uri_scheme('ms-browser-extension'). 265uri_scheme('ms-calculator'). 266uri_scheme('ms-drive-to'). 267uri_scheme('ms-enrollment'). 268uri_scheme('ms-excel'). 269uri_scheme('ms-eyecontrolspeech'). 270uri_scheme('ms-gamebarservices'). 271uri_scheme('ms-gamingoverlay'). 272uri_scheme('ms-getoffice'). 273uri_scheme('ms-help'). 274uri_scheme('ms-infopath'). 275uri_scheme('ms-inputapp'). 276uri_scheme('ms-lockscreencomponent-config'). 277uri_scheme('ms-media-stream-id'). 278uri_scheme('ms-mixedrealitycapture'). 279uri_scheme('ms-mobileplans'). 280uri_scheme('ms-officeapp'). 281uri_scheme('ms-people'). 282uri_scheme('ms-project'). 283uri_scheme('ms-powerpoint'). 284uri_scheme('ms-publisher'). 285uri_scheme('ms-restoretabcompanion'). 286uri_scheme('ms-screenclip'). 287uri_scheme('ms-screensketch'). 288uri_scheme('ms-search'). 289uri_scheme('ms-search-repair'). 290uri_scheme('ms-secondary-screen-controller'). 291uri_scheme('ms-secondary-screen-setup'). 292uri_scheme('ms-settings'). 293uri_scheme('ms-settings-airplanemode'). 294uri_scheme('ms-settings-bluetooth'). 295uri_scheme('ms-settings-camera'). 296uri_scheme('ms-settings-cellular'). 297uri_scheme('ms-settings-cloudstorage'). 298uri_scheme('ms-settings-connectabledevices'). 299uri_scheme('ms-settings-displays-topology'). 300uri_scheme('ms-settings-emailandaccounts'). 301uri_scheme('ms-settings-language'). 302uri_scheme('ms-settings-location'). 303uri_scheme('ms-settings-lock'). 304uri_scheme('ms-settings-nfctransactions'). 305uri_scheme('ms-settings-notifications'). 306uri_scheme('ms-settings-power'). 307uri_scheme('ms-settings-privacy'). 308uri_scheme('ms-settings-proximity'). 309uri_scheme('ms-settings-screenrotation'). 310uri_scheme('ms-settings-wifi'). 311uri_scheme('ms-settings-workplace'). 312uri_scheme('ms-spd'). 313uri_scheme('ms-sttoverlay'). 314uri_scheme('ms-transit-to'). 315uri_scheme('ms-useractivityset'). 316uri_scheme('ms-virtualtouchpad'). 317uri_scheme('ms-visio'). 318uri_scheme('ms-walk-to'). 319uri_scheme('ms-whiteboard'). 320uri_scheme('ms-whiteboard-cmd'). 321uri_scheme('ms-word'). 322uri_scheme(msnim). 323uri_scheme(msrp). 324uri_scheme(msrps). 325uri_scheme(mss). 326uri_scheme(mtqp). 327uri_scheme(mumble). 328uri_scheme(mupdate). 329uri_scheme(mvn). 330uri_scheme(news). 331uri_scheme(nfs). 332uri_scheme(ni). 333uri_scheme(nih). 334uri_scheme(nntp). 335uri_scheme(notes). 336uri_scheme(ocf). 337uri_scheme(oid). 338uri_scheme(onenote). 339uri_scheme('onenote-cmd'). 340uri_scheme(opaquelocktoken). 341uri_scheme(openpgp4fpr). 342uri_scheme(pack). 343uri_scheme(palm). 344uri_scheme(paparazzi). 345uri_scheme(payment). 346uri_scheme(payto). 347uri_scheme(pkcs11). 348uri_scheme(platform). 349uri_scheme(pop). 350uri_scheme(pres). 351uri_scheme(prospero). 352uri_scheme(proxy). 353uri_scheme(pwid). 354uri_scheme(psyc). 355uri_scheme(pttp). 356uri_scheme(qb). 357uri_scheme(query). 358uri_scheme('quic-transport'). 359uri_scheme(redis). 360uri_scheme(rediss). 361uri_scheme(reload). 362uri_scheme(res). 363uri_scheme(resource). 364uri_scheme(rmi). 365uri_scheme(rsync). 366uri_scheme(rtmfp). 367uri_scheme(rtmp). 368uri_scheme(rtsp). 369uri_scheme(rtsps). 370uri_scheme(rtspu). 371uri_scheme(secondlife). 372uri_scheme(service). 373uri_scheme(session). 374uri_scheme(sftp). 375uri_scheme(sgn). 376uri_scheme(shttp). 377uri_scheme(sieve). 378uri_scheme(simpleledger). 379uri_scheme(sip). 380uri_scheme(sips). 381uri_scheme(skype). 382uri_scheme(smb). 383uri_scheme(sms). 384uri_scheme(smtp). 385uri_scheme(snews). 386uri_scheme(snmp). 387uri_scheme('soap.beep'). 388uri_scheme('soap.beeps'). 389uri_scheme(soldat). 390uri_scheme(spiffe). 391uri_scheme(spotify). 392uri_scheme(ssh). 393uri_scheme(steam). 394uri_scheme(stun). 395uri_scheme(stuns). 396uri_scheme(submit). 397uri_scheme(svn). 398uri_scheme(tag). 399uri_scheme(teamspeak). 400uri_scheme(tel). 401uri_scheme(teliaeid). 402uri_scheme(telnet). 403uri_scheme(tftp). 404uri_scheme(things). 405uri_scheme(thismessage). 406uri_scheme(tip). 407uri_scheme(tn3270). 408uri_scheme(tool). 409uri_scheme(turn). 410uri_scheme(turns). 411uri_scheme(tv). 412uri_scheme(udp). 413uri_scheme(unreal). 414uri_scheme(urn). 415uri_scheme(ut2004). 416uri_scheme('v-event'). 417uri_scheme(vemmi). 418uri_scheme(ventrilo). 419uri_scheme(videotex). 420uri_scheme(vnc). 421uri_scheme('view-source'). 422uri_scheme(wais). 423uri_scheme(webcal). 424uri_scheme(wpid). 425uri_scheme(ws). 426uri_scheme(wss). 427uri_scheme(wtai). 428uri_scheme(wyciwyg). 429uri_scheme(xcon). 430uri_scheme('xcon-userid'). 431uri_scheme(xfire). 432uri_scheme('xmlrpc.beep'). 433uri_scheme('xmlrpc.beeps'). 434uri_scheme(xmpp). 435uri_scheme(xri). 436uri_scheme(ymsgr). 437uri_scheme('z39.50'). 438uri_scheme('z39.50r'). 439uri_scheme('z39.50s')
Prolog uriparser binding
*/