591:
appended to the target URL. For example, consider a PURL with a URL of http//purl.org/some/path/ with a target URL of http://example.com/another/path/. An attempt to perform an HTTP GET operation on the URL http//purl.org/some/path/and/some/more/data would result in a partial redirection to http://example.com/another/path/and/some/more/data. The concept of partial redirection allows hierarchies of Web-based resources to be addressed via PURLs without each resource requiring its own PURL. One PURL is sufficient to serve as a top-level node for a hierarchy on a single target server. The new PURL service uses the type "partial" to denote a PURL that performs partial redirection.
603:
the presumption that a resource with a changed location may have also changed content, thus invalidating fragments defined earlier. Bos suggested that fragments should be retained and passed through to target URLs during HTTP redirections resulting in 300 (Multiple Choice), 301 (Moved
Permanently), 302 (Found) or 303 (See Other) responses unless a designated target URL already includes a fragment identifier. If a fragment identifier is already present in a target URL, any fragment in the original URL should be abandoned. Bos' suggestion failed to navigate the IETF standards track and expired without further work. Dubost
298:
address, even though the resource in question may have moved. PURLs may be used by publishers to manage their own information space or by Web users to manage theirs; a PURL service is independent of the publisher of information. PURL services thus allow the management of hyperlink integrity. Hyperlink integrity is a design trade-off of the World Wide Web, but may be partially restored by allowing resource users or third parties to influence where and how a URL resolves.
329:
The next part, the PURL domain, is analogous to a resource path in a URL. The domain is a hierarchical information space that separates PURLs and allows for PURLs to have different maintainers. One or more designated maintainers may administer each PURL domain. Finally, the PURL name is the name of the PURL itself. The domain and name together constitute the PURL's "id".
321:. All persistent identification schemes provide unique identifiers for (possibly changing) virtual resources, but not all schemes provide curation opportunities. Curation of virtual resources has been defined as, "the active involvement of information professionals in the management, including the preservation, of digital data for future use."
602:
Partial redirection in the presence of a fragment identifier is problematic because two conflicting interpretations are possible. If a fragment is attached to a PURL of type "partial", it is unclear whether a PURL service should assume that the fragment has meaning on the target URL, or discard it in
301:
A simple PURL works by responding to an HTTP GET request by returning a response of type 302 (equivalent to the HTTP status code 302, meaning "Found"). The response contains an HTTP "Location" header, the value of which is a URL that the client should subsequently retrieve via a new HTTP GET request.
574:
A PURL of type "307" informs a user that the resource temporarily resides at a different URL from the norm. PURLs of types 404 and 410 note that the requested resource could not be found and suggests some information for why that was so. Support for the HTTP 307 (Temporary
Redirect), 404 (Not Found)
389:
The most common types of PURLs are named to coincide with the HTTP response code that they return. Not all HTTP response codes have equivalent PURL types and not all PURL servers implement all PURL types. Some HTTP response codes (e.g. 401, Unauthorized) have clear meanings in the context of an HTTP
328:
PURLs are themselves valid URLs, so their components must map to the URL specification. The scheme part tells a computer program, such as a Web browser, which protocol to use when resolving the address. The scheme used for PURLs is generally HTTP. The host part tells which PURL server to connect to.
297:
A URL is simply an address of a resource on the World Wide Web. A Persistent URL is an address on the World Wide Web that causes a redirection to another Web resource. If a Web resource changes location (and hence URL), a PURL pointing to it can be updated. A user of a PURL always uses the same Web
762:
OCLC and
Internet Archive today announced the results of a year-long cooperative effort to ensure the future sustainability of purl.org. The organizations have worked together to build a new sustainable service hosted by Internet Archive that will manage persistent URLs and sub-domain redirections
590:
The PURL service includes a concept known as partial redirection. If a request does not match a PURL exactly, the requested URL is checked to determine if some contiguous front portion of the PURL string matches a registered PURL. If so, a redirection occurs with the remainder of the requested URL
546:
A PURL of type "303" is used to direct a Web client to a resource that provides additional information regarding the resource they requested, without returning the resource itself. This subtlety is useful when the HTTP URI requested is used as an identifier for a physical or conceptual object that
324:
PURLs have been criticized for their need to resolve a URL, thus tying a PURL to a network location. Network locations have several vulnerabilities, such as Domain Name System registrations and host dependencies. A failure to resolve a PURL could lead to an ambiguous state: It would not be clear
530:
A PURL of type "chain" allows a PURL to redirect to another PURL in a manner identical to a 301 or 302 redirection, with the difference that a PURL server will handle the redirection internally for greater efficiency. This efficiency is useful when many redirections are possible; since some Web
526:
that the PURL should always be used to address the requested resource, not the final URI resolved. This is to allow continued resolution of the resource if the PURL changes. Some operators prefer to use PURLs of type 301 (indicating that the final URI should be addressed in future requests).
245:
resulting in the transfer of the resolver service and its administration interface to
Internet Archive. The service is supported on newly created software, separate from all previous implementations. The transfer re-enabled the ability to manage PURL definitions that had been disabled in the
578:
PURLs of types "404" and "410" are provided to assist administrators in marking PURLs that require repair. PURLs of these types allow for more efficient indications of resource identification failure when target resources have moved and a suitable replacement has not been identified.
534:
A PURL of type "200" is an "Active PURL", in which the PURL actively participates in the creation or aggregation of the metadata returned. An Active PURL includes some arbitrary computation to produce its output. Active PURLs have been implemented in PURLz 2.0 and The
610:
Starting with PURLz 1.0 series, the PURL service implements partial redirections inclusive of fragment identifiers by writing fragments onto target URLs in an attempt to comply with and avoid problematic and inconsistent behavior by browser vendors.
168:
PURL version numbers may be considered confusing. OCLC released versions 1 and 2 of the Apache-based source tree, initially in 1999 under the OCLC Research Public
License 1.0 License and later under the OCLC Research Public License 2.0 License
594:
Partial redirections at the level of a URL path do not violate common interpretations of the HTTP 1.1 specification. However, the handling of URL fragments across redirections has not been standardized and a consensus has not yet emerged.
521:
Most PURLs are so-called "simple PURLs", which provide a redirection to the desired resource. The HTTP status code, and hence of the PURL type, of a simple PURL is 302. The intent of a 302 PURL is to inform the Web client and
1056:
607:
resurrected Bos' suggestions in a W3C Note (not a standard, but guidance in the absence of a standard). Makers of Web clients such as browsers have "generally" failed to follow Bos' guidance.
539:. They may be used to gather runtime status reports, perform distributed queries or any other type of data collection where a persistent identifier is desired. Active PURLs act similar to a
390:
conversation but do not apply to the process of HTTP redirection. Three additional types of PURLs ("chain", "partial' and "clone") are given mnemonic names related to their functions.
749:
547:
cannot be represented as an information resource. PURLs of type 303 are used most often to redirect to metadata in a serialization format of the
1061:
582:
PURLs of type "clone" are used solely during PURL administration as a convenient method of copying an existing PURL record into a new PURL.
1071:
228:
1066:
1076:
697:
548:
69:. Early on many of those other hosts used descendants of the original OCLC PURL system software. Eventually, however, the
599:
indicate a pointer to more specific information within a resource and are designated as following a # separator in URIs.
523:
178:
39:
118:
PURLs are used to curate the URL resolution process, thus solving the problem of transitory URIs in location-based
978:
815:
701:
629:
568:
310:
55:
841:
35:
944:
246:
OCLC-hosted service for several months. The service hosted on
Internet Archive servers supports access via
1051:
531:
browsers will stop following redirections once a set limit is encountered (in an attempt to avoid loops).
536:
182:
1026:
917:
855:
668:
623:
306:
20:
325:
whether the PURL failed to resolve because a network failure prevented it or because it did not exist.
1046:
1041:
162:
719:
596:
899:
792:
150:
1021:
811:
745:
133:. The remainder of this article is about the OCLC's PURL system, proposed and implemented by
891:
784:
746:"OCLC and Internet Archive work together to ensure future sustainability of Persistent URLs"
540:
294:. PURLs allow third party control over both URL resolution and resource metadata provision.
242:
930:
868:
674:
658:
43:
663:
291:
1035:
635:
903:
796:
974:
883:
560:
552:
346:
345:
are used as permanent/persistent URL and redirect to the location of the requested
47:
837:
556:
350:
788:
119:
945:"Handling of Fragment Identifiers in Redirected URLs, Expired Internet Draft"
705:
693:
653:
338:
161:(the 'Z' came from the Zepheira name and was used to differentiate the PURL
73:
came to be generic and was used to designate any redirection service (named
174:
149:
in 1995. The PURL system was implemented using a forked pre-1.0 release of
365:
usually does not change the URL's domain, and is designed to persist over
643:
376:
domain name is independently changeable, and is designed to persist over
290:
The PURL concept allows for generalized URL curation of HTTP URIs on the
154:
838:"Metadata Foundations for the Life Cycle Management of Software Systems"
223:
Other notable PURL resolvers include the US Government
Printing Office (
170:
128:
884:"Uniform Resource Identifier (URI): Generic Syntax, RFC 3986 (STD 66)"
895:
559:
content. This use of the 303 HTTP status code is conformant with the
107:
with its URL (to be redirected), and to update this redirection-URL;
349:. Roughly speaking, they are the same. Their differences are about
309:
for virtual resources. Other persistent identifier schemes include
318:
110:
ensure the persistence (e.g. by contract) of the root URL and the
457:
Redirect to a target URL with trailing path information appended
1006:
948:
887:
648:
354:
314:
238:, that may replace the old PURL-services and PURL-technologies.
193:
189:
146:
145:
The PURL concept was developed by Stuart Weibel and Erik Jul at
134:
51:
840:. School of Information Technology and Electrical Engineering,
564:
708:
and others, they use directly or indirectly the PURL concept.
575:
and 410 (Gone) response codes are provided for completeness.
882:
Berners-Lee, T.; Fielding, R.; Masinter, L. (January 2005).
157:
under contract to OCLC and the official website moved to
19:"PURL" redirects here. For other meanings of "purl", see
1016:
748:(Press release). Dublin, Ohio: OCLC. 27 September 2016.
272:
224:
198:
61:
Originally, PURLs were recognizable for being hosted at
1057:
Free software programmed in Java (programming language)
241:
On 27 September 2016 OCLC announced a cooperation with
153:. The software was modernized and extended in 2007 by
92:
provides means, to its user-community, to include new
260:
235:
1011:
1001:
278:
266:
254:
248:
216:
210:
204:
158:
62:
185:implemented PURLs as of its 1.0 release in 2012.
181:in 2010 but the release was never finalized. The
173:). Zepheira released PURLz 1.0 in 2007 under the
446:Redirect to another PURL within the same server
196:from 1995 to September 2016 and was reached as
165:site from the PURL resolver operated by OCLC).
763:for purl.org, purl.com, purl.info and purl.net
1017:US Government Printing Office's PURL resolver
8:
1007:Official website for The Callimachus Project
16:OCLC-designed persistent identifier scheme
720:"PURLs to improve access to the Internet"
969:
967:
965:
512:Copy the attributes of an existing PURL
392:
685:
1027:DPE/PURL Information and Resolver Site
975:"Common User Agent Problems, W3C Note"
926:
915:
864:
853:
775:Yakel, E. (2007). "Digital Curation".
270:. OCLC now redirects DNS requests for
231:and has been in operation since 1997.
137:(the Online Computer Library Center).
7:
951:Networking Working Group. 1999-06-30
752:from the original on 2 February 2023
171:http://opensource.org/licenses/oclc2
98:http://myPurlResolver.example/name22
479:Temporary redirect to a target URL
435:Simple redirection to a target URL
28:persistent uniform resource locator
718:Weibel, Stuart; Jul, Erik (1995).
424:Moved permanently to a target URL
229:Federal Depository Library Program
14:
836:Hyland-Wood, David (2008-07-01).
103:provides means to associate each
46:to the location of the requested
1012:Internet Archive's PURL resolver
234:The PURL concept is used in the
549:Resource Description Framework
413:Content created or aggregated
65:or other hostnames containing
1:
551:(RDF) and have relevance for
227:), which is operated for the
87:http://myPurlResolver.example
1062:Cross-platform free software
842:The University of Queensland
586:Redirection of URL fragments
565:Technical Architecture Group
305:PURLs implement one form of
177:. PURLz 2.0 was released in
38:(URL) (i.e., location-based
1072:Internet software for Linux
810:Martin, Sean (2006-06-30).
777:OCLC Systems & Services
175:Apache License, Version 2.0
122:like HTTP. Technically the
40:uniform resource identifier
1093:
1002:Official website for PURLz
890:Networking Working Group.
311:Digital Object Identifiers
18:
979:World Wide Web Consortium
816:World Wide Web Consortium
789:10.1108/10650750710831466
630:Digital Object Identifier
620:Implementation examples:
569:World Wide Web Consortium
543:in relational databases.
315:Life Sciences Identifiers
192:resolver was operated by
1022:persistent-identifier.de
333:Comparing with permalink
81:has a "root URL" as the
42:or URI) that is used to
36:uniform resource locator
1067:History of the Internet
726:(November/December): 19
286:Principles of operation
1077:Unix Internet software
925:Cite journal requires
863:Cite journal requires
96:in the root URL (e.g.
669:Uniform Resource Name
624:Archival Resource Key
307:persistent identifier
21:Purl (disambiguation)
812:"LSID URN/URI Notes"
597:Fragment identifiers
225:http://purl.fdlp.gov
163:open-source software
537:Callimachus Project
482:Temporary Redirect
395:
183:Callimachus Project
427:Moved permanently
393:
151:Apache HTTP Server
519:
518:
501:Permanently gone
490:Temporarily gone
124:string resolution
56:HTTP status codes
50:. PURLs redirect
1084:
990:
989:
987:
986:
971:
960:
959:
957:
956:
941:
935:
934:
928:
923:
921:
913:
911:
910:
896:10.17487/RFC3986
879:
873:
872:
866:
861:
859:
851:
849:
848:
833:
827:
826:
824:
823:
807:
801:
800:
772:
766:
765:
759:
757:
742:
736:
735:
733:
731:
715:
709:
690:
541:stored procedure
396:
281:
275:
269:
263:
257:
251:
243:Internet Archive
219:
213:
207:
201:
188:The oldest PURL
159:http://purlz.org
126:on PURL is like
99:
88:
85:reference (e.g.
68:
1092:
1091:
1087:
1086:
1085:
1083:
1082:
1081:
1032:
1031:
998:
993:
984:
982:
973:
972:
963:
954:
952:
943:
942:
938:
924:
914:
908:
906:
881:
880:
876:
862:
852:
846:
844:
835:
834:
830:
821:
819:
809:
808:
804:
774:
773:
769:
755:
753:
744:
743:
739:
729:
727:
724:OCLC Newsletter
717:
716:
712:
691:
687:
683:
675:Wayback Machine
659:URL redirection
617:
588:
563:finding of the
387:
335:
288:
277:
271:
265:
259:
253:
247:
215:
209:
203:
197:
143:
97:
86:
66:
24:
17:
12:
11:
5:
1090:
1088:
1080:
1079:
1074:
1069:
1064:
1059:
1054:
1049:
1044:
1034:
1033:
1030:
1029:
1024:
1019:
1014:
1009:
1004:
997:
996:External links
994:
992:
991:
961:
936:
927:|journal=
874:
865:|journal=
828:
802:
783:(4): 335–340.
767:
737:
710:
684:
682:
679:
678:
677:
672:
666:
664:URL shortening
661:
656:
651:
646:
641:
640:
639:
633:
627:
616:
613:
587:
584:
517:
516:
513:
510:
506:
505:
502:
499:
495:
494:
491:
488:
484:
483:
480:
477:
473:
472:
469:
468:See other URL
466:
462:
461:
458:
455:
451:
450:
447:
444:
440:
439:
436:
433:
429:
428:
425:
422:
418:
417:
414:
411:
407:
406:
403:
400:
386:
383:
382:
381:
370:
334:
331:
292:World Wide Web
287:
284:
142:
139:
116:
115:
108:
101:
90:
54:clients using
15:
13:
10:
9:
6:
4:
3:
2:
1089:
1078:
1075:
1073:
1070:
1068:
1065:
1063:
1060:
1058:
1055:
1053:
1052:1995 software
1050:
1048:
1045:
1043:
1040:
1039:
1037:
1028:
1025:
1023:
1020:
1018:
1015:
1013:
1010:
1008:
1005:
1003:
1000:
999:
995:
980:
976:
970:
968:
966:
962:
950:
946:
940:
937:
932:
919:
905:
901:
897:
893:
889:
885:
878:
875:
870:
857:
843:
839:
832:
829:
817:
813:
806:
803:
798:
794:
790:
786:
782:
778:
771:
768:
764:
751:
747:
741:
738:
725:
721:
714:
711:
707:
703:
699:
695:
689:
686:
680:
676:
673:
670:
667:
665:
662:
660:
657:
655:
652:
650:
647:
645:
642:
637:
636:Handle System
634:
631:
628:
625:
622:
621:
619:
618:
614:
612:
608:
606:
600:
598:
592:
585:
583:
580:
576:
572:
570:
566:
562:
561:http-range-14
558:
554:
550:
544:
542:
538:
532:
528:
525:
514:
511:
508:
507:
503:
500:
497:
496:
492:
489:
486:
485:
481:
478:
475:
474:
470:
467:
464:
463:
459:
456:
453:
452:
448:
445:
442:
441:
437:
434:
431:
430:
426:
423:
420:
419:
415:
412:
409:
408:
405:HTTP meaning
404:
402:PURL meaning
401:
398:
397:
391:
384:
379:
375:
371:
368:
364:
360:
359:
358:
356:
352:
348:
344:
340:
332:
330:
326:
322:
320:
316:
312:
308:
303:
299:
295:
293:
285:
283:
280:
274:
273:purl.oclc.org
268:
262:
256:
250:
244:
239:
237:
232:
230:
226:
221:
218:
212:
206:
200:
199:purl.oclc.org
195:
191:
186:
184:
180:
176:
172:
166:
164:
160:
156:
152:
148:
140:
138:
136:
132:
130:
125:
121:
113:
112:PURL resolver
109:
106:
102:
95:
91:
84:
80:
79:
78:
76:
75:PURL resolver
72:
64:
59:
57:
53:
49:
45:
41:
37:
33:
29:
22:
983:. Retrieved
981:. 2001-02-06
953:. Retrieved
939:
918:cite journal
907:. Retrieved
877:
856:cite journal
845:. Retrieved
831:
820:. Retrieved
805:
780:
776:
770:
761:
754:. Retrieved
740:
728:. Retrieved
723:
713:
692:Services as
688:
609:
604:
601:
593:
589:
581:
577:
573:
553:Semantic Web
545:
533:
529:
520:
388:
377:
373:
366:
362:
347:web resource
342:
336:
327:
323:
317:(LSIDs) and
304:
300:
296:
289:
240:
233:
222:
187:
179:Beta testing
167:
144:
127:
123:
117:
111:
104:
93:
82:
74:
71:PURL concept
70:
60:
48:web resource
31:
27:
25:
1047:Identifiers
1042:URI schemes
730:17 December
638:identifiers
557:linked data
394:PURL types
351:domain name
202:as well as
120:URI schemes
1036:Categories
985:2008-03-01
955:2008-03-01
909:2008-03-01
847:2011-01-05
822:2011-01-05
681:References
493:Not Found
471:See Other
355:time scale
131:resolution
77:) that:
706:Permalink
654:Permalink
363:permalink
339:permalink
319:INFO URIs
261:purl.info
114:services.
904:30973664
818:ESW Wiki
797:33219560
756:10 April
750:Archived
644:Link rot
615:See also
524:end user
454:Partial
313:(DOIs),
279:purl.org
267:purl.com
255:purl.net
249:purl.org
236:w3id.org
217:purl.com
211:purl.net
205:purl.org
155:Zepheira
83:resolver
63:purl.org
44:redirect
694:URN LEX
567:of the
378:decades
141:History
129:SEF URL
34:) is a
902:
795:
605:et al.
509:Clone
460:Found
449:Found
443:Chain
438:Found
264:, and
214:, and
900:S2CID
793:S2CID
671:(URN)
632:(DOI)
626:(ARK)
504:Gone
399:Type
385:Types
367:years
337:Both
94:names
949:IETF
931:help
888:IETF
869:help
758:2023
732:2021
700:and
649:OPAC
555:and
515:N/A
498:410
487:404
476:307
465:303
432:302
421:301
410:200
374:PURL
353:and
343:PURL
341:and
194:OCLC
190:HTTP
147:OCLC
135:OCLC
105:name
67:purl
52:HTTP
32:PURL
892:doi
785:doi
702:DOI
698:ELI
416:OK
276:to
58:.
1038::
977:.
964:^
947:.
922::
920:}}
916:{{
898:.
886:.
860::
858:}}
854:{{
814:.
791:.
781:23
779:.
760:.
722:.
704:,
696:,
571:.
372:A
361:A
357::
282:.
258:,
252:,
220:.
208:,
100:);
89:);
26:A
988:.
958:.
933:)
929:(
912:.
894::
871:)
867:(
850:.
825:.
799:.
787::
734:.
380:.
369:.
169:(
30:(
23:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.