İnsanlar URL'ler , URI'ler ve URN'ler hakkında farklı şeylermiş gibi konuşuyorlar, ancak çıplak gözle aynı görünüyorlar.
Aralarındaki ayırt edilebilir farklılıklar nelerdir?
( URIs ( URLs ) )
İnsanlar URL'ler , URI'ler ve URN'ler hakkında farklı şeylermiş gibi konuşuyorlar, ancak çıplak gözle aynı görünüyorlar.
Aralarındaki ayırt edilebilir farklılıklar nelerdir?
( URIs ( URLs ) )
Yanıtlar:
Gönderen RFC 3986 :
Bir URI ayrıca bir konumlandırıcı, bir ad veya her ikisi olarak sınıflandırılabilir. "Tekdüzen Kaynak Konum Belirleyicisi" (URL) terimi, bir kaynağın tanımlanmasına ek olarak, birincil erişim mekanizmasını (ör. Ağ "konumu") tanımlayarak kaynağı bulmanın bir yolunu sağlayan URI'lerin alt kümesini ifade eder. "Tekdüzen Kaynak Adı" (URN) terimi, geçmişte her iki URI'ye "urn" şeması [RFC2141] kapsamında atıfta bulunmak için kullanılmıştır. bir adın özelliklerine sahip başka bir URI'ye.
Dolayısıyla tüm URL'ler URI'lardır (aslında tam olarak değil - aşağıya bakın) ve tüm URN'ler URI'lardır - ancak URN'ler ve URL'ler farklıdır, bu nedenle tüm URI'lerin URL'ler olduğunu söyleyemezsiniz.
DÜZENLEME: Daha önce tüm URL'lerin geçerli URI'ler olduğunu düşündüm, ancak yorumlara göre:
Değil "tüm URL'ler lerdir". RFC'nin yorumlanmasına bağlıdır. Örneğin Java'da URI ayrıştırıcısı hoşlanmaz
[
veya]
bunun nedeni spec'in "olmamalı" ve "olmamalı" yazmasıdır.
Maalesef suları daha da çamurluyor.
Roger Pate'in cevabını henüz okumadıysanız , bunu da yapmanızı tavsiye ederim.
[
veya ]
bunun nedeni spec'in "olmamalı" ve "olmamalı" yazmasıdır.
java.net.URI
Doc kendisi "Her URL soyut anlamda, bir URI, ancak her URI URL" diyor. Ve java.net.URL
garip şeyler (ilk etapta RFC 3986 sn 6 ile oran ve sanal konaklar w kesinti anlarında görünüyor) IP adreslerine ana bilgisayar adlarını çözümlemek tarafından URL'lerin eşitliğini kontrol sevmez. Bu sadece Java Standart Kütüphanesi bazı tutarsız sınıf davranışı var demektir düşünüyorum.
URI tespit s ve URL ler bulun ; ancak, konum belirleyiciler de tanımlayıcılardır , bu nedenle her URL aynı zamanda bir URI'dir, ancak URL olmayan URI'ler vardır.
Bu benim adım, tanımlayıcı. Bir URI gibidir, ancak size konumum veya benimle nasıl iletişim kuracağım hakkında hiçbir şey söylemediğinden URL olamaz. Bu durumda, yalnızca ABD'de en az 5 kişinin daha tanımlanması gerekir.
Bu, o fiziksel konumun tanımlayıcısı olan bir konumlandırıcıdır. Hem bir URL hem de URI gibidir (çünkü tüm URL'ler URI'lerdir) ve beni dolaylı olarak "ikamet eden .." olarak tanımlar . Bu durumda beni benzersiz bir şekilde tanımlar, ancak bir oda arkadaşı alırsam bu değişecektir.
"Beğen" diyorum çünkü bu örnekler gerekli sözdizimine uymuyor.
Gönderen Vikipedi :
Hesaplamada, Tekdüzen Kaynak Konum Belirleyicisi (URL), Tekdüzen Kaynak Tanımlayıcı'nın (URI), tanımlanmış bir kaynağın nerede kullanılabilir olduğunu ve onu alma mekanizmasını belirten bir alt kümedir. Popüler kullanımda ve birçok teknik belgede ve sözlü tartışmada URI ile eşanlamlı olarak yanlış kullanılır , ... [vurgu mayın]
Bu yaygın karışıklık nedeniyle, birçok ürün ve belge yanlış bir terimi diğeri yerine yanlış kullanır, kendi ayrımını belirler veya eş anlamlı olarak kullanır.
Benim adım Roger Pate, URN (Tekdüzen Kaynak Adı) gibi olabilir , ancak bunlar çok daha düzenlenmiş ve hem alan hem de zaman boyunca benzersiz olması amaçlanmıştır .
Şu anda bu adı başkalarıyla paylaştığım için, küresel olarak benzersiz değil ve bir URN olarak uygun olmayacak. Ancak, başka hiçbir aile bu adı kullanmasa bile, babamın dedesi tarafından isimlendirildim, bu yüzden zamanla benzersiz olmayacaktı. Ve hatta eğer o böyle değildi, benden sonra benim kökenini adlandırma olasılığı bir URN olarak bu uygunsuz kılmaktadır.
Her ikisi de URI'lerin sözdizimini paylaşsalar da, URN'ler bu katı benzersizlik kısıtlamasındaki URL'lerden farklıdır.
URNs are different from URLs in this rigid uniqueness constraint
Bu, URL'lerin bir konumu benzersiz bir şekilde tanımlamadığı anlamına mı geliyor?
URI'ler, kısa bir sayı dizisi, harf ve simge kullanarak belgeleri tanımlamak için bir standarttır. Bunlar RFC 3986 - Tekdüzen Kaynak Tanımlayıcısı (URI): Genel Sözdizimi tarafından tanımlanır . URL'ler, URN'ler ve URC'lerin tümü URI türleridir .
Bir kaynağın konumundan nasıl getirileceği hakkında bilgi içerir. Örneğin:
http://example.com/mypage.html
ftp://example.com/download.zip
mailto:user@example.com
file:///home/user/file.txt
tel:1-888-555-5555
http://example.com/resource?foo=bar#fragment
/other/link.html
(Göreli bir URL, yalnızca başka bir URL bağlamında yararlıdır)URL'ler her zaman bir protokol ( http
) ile başlar ve genellikle ağ ana bilgisayar adı ( example.com
) ve genellikle bir belge yolu ( /foo/mypage.html
) gibi bilgiler içerir. URL'lerde sorgu parametreleri ve parça tanımlayıcıları olabilir.
Bir kaynağı benzersiz ve kalıcı bir adla tanımlar, ancak mutlaka internette nasıl bulacağınızı söylemez. Genellikle önekle başlar urn:
Örneğin:
urn:isbn:0451450523
bir kitabı ISBN numarasına göre tanımlamak için kullanılır.urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66
global olarak benzersiz bir tanımlayıcıurn:publishing:book
- Belgeyi bir kitap türü olarak tanımlayan bir XML ad alanı.URN'ler fikirleri ve kavramları tanımlayabilir. Belgeleri tanımlamakla sınırlı değildirler. Bir URN bir belgeyi temsil ettiğinde, "çözümleyici" tarafından URL'ye çevrilebilir. Doküman daha sonra URL'den indirilebilir.
Belgenin kendisi yerine belgeyle ilgili meta verilere işaret eder. Bir URC örneği, aşağıdaki gibi bir sayfanın HTML kaynak koduna işaret eden bir örnektir:view-source:http://example.com/
Verileri internette bulmak veya adlandırmak yerine doğrudan bir URI'ye yerleştirilebilir. Buna bir örnek verilebilir data:,Hello%20World
.
HTML için W3 spesifikasyonu href
, bir bağlantı etiketinin yalnızca bir URL değil, bir URI içerebileceğini söylüyor . Gibi bir URN koyabilirsiniz <a href="urn:isbn:0451450523">
. Daha sonra tarayıcınız bu URN'yi bir URL'ye çözer ve kitabı sizin için indirir.
Bildiğimden değil, modern web tarayıcısı veri URI şemasını uyguluyor.
Hayır. Hem göreli hem de mutlak URL'ler URL'lerdir (ve URI'ler).
Hayır. Sorgu parametreleri olan ve olmayan her iki URL de URL'lerdir (ve URI'ler).
Hayır. Parça tanımlayıcıları olan ve olmayan her iki URL de URL'lerdir (ve URI'lerdir).
Hayır. URL'ler, URI'lerin katı bir alt kümesi olarak tanımlanır. Ayrıştırıcı URL'deki bir karaktere izin veriyor ancak URI'de izin vermiyorsa, ayrıştırıcıda bir hata var. Spesifikasyonlar, URL'lerin ve URI'lerin hangi bölümlerinde hangi karakterlere izin verildiği konusunda ayrıntılı olarak açıklanmaktadır. Bazı karakterlere URL'nin yalnızca bazı bölümlerinde izin verilebilir, ancak yalnızca karakterler URL'ler ve URI'ler arasında bir fark değildir.
Evet. W3C, bu konuda bir ton karışıklık olduğunu fark etti. URL ve URI terimlerini birbirinin yerine (URI anlamına gelir) kullanmanın artık uygun olduğunu söyleyen bir URI açıklama belgesi yayınladılar . Artık URI'leri URL, URN ve URC gibi farklı türlere bölmek artık yararlı değildir.
URN'nin tanımı artık yukarıda belirttiğimden daha gevşek. URI'larına son RFC herhangi URI şimdi (olursa olsun başlar olmadığı bir URN olabileceğini söylüyor urn:
) sahip olduğu sürece "bir adın özelliklerini." Yani, kaynak ortadan kalktığında veya mevcut olmadığında bile küresel olarak benzersiz ve kalıcıdır. Bir örnek: gibi HTML dokümanlarında kullanılan URI'ler http://www.w3.org/TR/html4/strict.dtd
. Bu URI, w3.org web sitesindeki sayfa silinmiş olsa bile HTML4 geçiş dokümanı adını vermeye devam edecektir.
file://
Öneki üzerine koymadığınız sürece dosya yolu bir URL veya URI değildir . Tarayıcılar genellikle URL biçimlendirilmemiş dosya yollarını işlese de. Mozilla, test URL'lerini dosya URL'leri için yayınlar .
mailto:user@example.com
URL olarak bahsettiniz , ancak aşağıdaki başka bir yanıt bunun bir URN olduğunu söylüyor? Hangisi doğru? Hem URN hem de URL mi?
Özetle: bir URI tanımlanır, bir URL tanımlanır ve bulunur.
Ev ağınızda dijital bir kopyası olan Shakespeare'in Romeo ve Juliet adlı oyununun belirli bir sürümünü düşünün .
Metni olarak tanımlayabilirsiniz urn:isbn:0-486-27557-4
.
Bu bir URI, ancak daha spesifik olarak bir URN * olacaktır çünkü metni adlandırır .
Metni olarak da tanımlayabilirsiniz file://hostname/sharename/RomeoAndJuliet.pdf
.
Bu aynı zamanda bir URI, ancak daha spesifik olarak bir URL olacaktır çünkü metni bulur .
* Tekdüzen Kaynak Adı
(Örneğimin Wikipedia'dan uyarlandığını unutmayın )
ISBN 0486275574
Metni adlandıran ve dolayısıyla bir URN olarak nitelendirilen benim anlayışım . Okuyuculara daha aşina olacağına inandığım bir format seçiyorum.
Bunlar çok iyi yazılmış ama uzun soluklu cevaplar. İşte CodeIgniter açısından fark :
URL - http://example.com/some/page.html
URI - /some/page.html
Basitçe söylemek gerekirse, URL herhangi bir kaynağı herhangi bir yerde tanımlamak için tam yoldur ve FTP, HTTP, SCP vb.Gibi farklı protokollere sahip olabilir.
URI, geçerli etki alanındaki bir kaynaktır, bu nedenle bulunması için daha az bilgiye ihtiyaç duyar.
CodeIgniter'ın URL veya URI kelimesini kullandığı her durumda, bahsettikleri fark budur, ancak web'in genel şemasında% 100 doğru değildir.
/some/page.html
bir URI değildir. Bu bir tür "URI-referansı" olan bir "göreceli-ref" dir. Temel URI bağlamıyla birlikte, bir URI'ye çözümlenebilir, ancak kendisi bir URI değildir. Bkz . RFC 3986, Bölüm 4.1 . CodeIgniter muhtemelen yanlış terimleri kullanıyor ve bu çağrılmalıdır; Q (şu anda düzenlendiği gibi) CodeIgniter'a özgü olarak çerçevelenmemiştir.
Her şeyden önce zihninizi karışıklıktan çıkarın ve basitleştirin ve anlayacaksınız.
URI => Tekdüzen Kaynak Tanımlayıcısı Kaynağın tam adresini, yani konumu, adı veya her ikisini de tanımlar.
URL => Tekdüzen Kaynak Konum Belirleyici Kaynağın konumunu tanımlar.
URN => Tekdüzen Kaynak Adı Kaynağın adını tanımlar
Misal
Https://www.google.com/folder/page.html adresimiz var ,
URI (Tekdüzen Kaynak Tanımlayıcısı) => https://www.google.com/folder/page.html
URL (Tekdüzen Kaynak Konum Belirleyici) => https://www.google.com/
URN (Tekdüzen Kaynak Adı) => /folder/page.html
URI => (URL + URN) veya yalnızca URL veya yalnızca URN
Daha önce gönderilen cevaplara küçük bir ek olarak, teoriyi özetlemek için bir Venn diyagramı (Prateek Joshi'nin güzel açıklamasından ):
Ve bir örnek (ayrıca Prateek'in web sitesinden):
#posts
parça kimliği URL'nin bir parçası olabilir
Bu, bir web profesyoneli olarak karşılaştığım en kafa karıştırıcı ve muhtemelen alakasız konulardan biridir.
Anladığım kadarıyla, bir URI, bir şeyin ve konumunun hem benzersiz adını (tanımlamasını) hem de tanımlayabilen kabul edilen bir formatı takip eden bir şeyin açıklamasıdır.
İki temel alt küme vardır - konumu tanımlayan URL'ler (özellikle bir web sayfasını aramaya çalışan bir tarayıcı için) ve bir şeyin benzersiz adını tanımlayan URN'ler.
URN'leri GUID'lere benzer olarak görme eğilimindeyim. Bunlar, sadece şeylere benzersiz isimler sağlamak için standartlaştırılmış bir metodolojidir. Bir şirketin adını kullanan ad alanı bildiriminde olduğu gibi - bir metin üzerinde o metin satırına karşılık gelen bir yerde oturan bir kaynak yok gibi değil - bir şeyi benzersiz bir şekilde tanımlar.
Ayrıca URI teriminden tamamen kaçınmaya ve şeyleri sadece URL veya URN açısından tartışmaya eğilimliyim, çünkü çok fazla karışıklığa neden oluyor. İnsanlar için gerçekten cevaplamaya çalışmamız gereken soru semantiğin çok fazla değil, ancak bir programlama durumuna yaklaşımını değiştirecek pratik bir fark olup olmadığı terimleriyle karşılaşıldığında nasıl tanımlanacağı. Örneğin, biri beni sohbette düzeltirse ve "oh, bu bir URL değil, bir URI" diyorsa onunla dolu olduğunu biliyorum. Birisi "kaynağı tanımlamak için bir URN kullanıyoruz" derse, bunu bir sunucuda bulamadığımız için yalnızca benzersiz bir şekilde adlandırdığımızı anlamam daha olasıdır.
Eğer üs dışına gidersem lütfen bana bildirin
redirect_url
Bunun yerine Google API kullanılıyorsa redirect_uri
, kimse gerçekten umursar mı?
Kimlik = Konum İçeren Ad
Her URL ( U niform R esource L ocator) bir URI (olan U niform R esource ben , dentifier) soyut anlamda, ama her URI URL değil. URI'nin başka bir alt kategorisi, adlandırılmış bir kaynak olan ancak mailto, news, ISBN gibi URI'lerin nasıl bulunacağını belirtmeyen URN'dir ( U niform R esource N ame). Kaynak
URN:
urn:[namespace identifier]:[namespace specific string]
arn:partition:service:region:account-id:resource
URL:
[scheme]://[Domain][Port]/[path]?[queryString]#[fragmentId]
Analoji:
Bir kişiye ulaşmak için: Sürüş (diğerlerinin SMS, e-posta, telefon protokolü), Adres (ana bilgisayar adı diğer telefon numarası, e-posta kimliği) ve kişi adı (göreceli yolu olan nesne adı)
URI => http://en.wikipedia.org/wiki/Uniform_Resource_Identifier
URL'ler, URI'lerin (ayrıca URN'leri de içeren) bir alt kümesidir.
Temel olarak, bir URI, bir URL'nin bir konumu ve bir URN'nin bir adı belirttiği genel bir tanımlayıcıdır.
[
ve ]
ancak bir URI.
URI'leri düşünürken kullanmak gibi başka bir örnek bir XML belgesinin xmlns özniteliğidir:
<rootElement xmlns:myPrefix="com.mycompany.mynode">
<myPrefix:aNode>some text</myPrefix:aNode>
</rootElement>
Bu durumda com.mycompany.mynode, XML belgemde kullanan tüm öğeler için "myPrefix" ad alanını benzersiz bir şekilde tanımlayan bir URI olacaktır. Bu bir URL DEĞİLDİR, çünkü yalnızca bir şeyi bulmak için kullanılır, kendi başına bir şeyi bulmak için kullanılmaz.
URI ve URL'yi açıkça ayırt etmekte güçlükler nedeniyle, hatırladığım kadarıyla W3C, URI ve URL arasında artık bir fark yaratmıyor ( http://www.w3.org/Addressing/ ).
Aynı şey . URI, bir URL'nin genelleştirilmesidir. Başlangıçta, URI'lerin URL'lere (adresler) ve URN'lere (adlar) bölünmesi planlanmıştı, ancak bir URL ile URI arasında çok az fark vardı ve http URI'lar, gerçekte herhangi bir kaynak bulamamış olsalar bile ad alanları olarak kullanılıyordu.
URI, URL, URN
Yukarıdaki görüntüden de anlaşılacağı gibi, burada ç farklı bileşen var. Bu gibi konuları tartışırken genellikle kaynağa gitmek en iyisidir, bu yüzden Tim Berners-Lee, et. ark. in RFC 3986: Tekdüzen Kaynak Tanımlayıcısı (URI): Genel Sözdizimi:
Tekdüzen Kaynak Tanımlayıcısı (URI), soyut veya fiziksel bir kaynağı tanımlayan küçük bir karakter dizisidir.
Bir URI ayrıca bir konumlandırıcı, bir ad veya her ikisi olarak sınıflandırılabilir. “Tekdüzen Kaynak Konum Belirleyicisi” (URL) terimi, bir kaynağın tanımlanmasına ek olarak, birincil erişim mekanizmasını (ör. Ağ “konumu”) tanımlayarak kaynağı bulmak için bir araç sağlayan URI'lerin alt kümesini ifade eder.
URI, URL'lerin ve URN'lerin süper sınıfıdır. Wikipedia'nın doğru RFC setine bağlantıları olan güzel bir makalesi var.
Wikipedia burada ihtiyacınız olan tüm bilgileri verecektir. Http://en.wikipedia.org/wiki/URI adresinden alıntı :
URL, bir kaynağın tanımlanmasına ek olarak, birincil erişim mekanizmasını veya ağ "konumunu" tanımlayarak kaynağın üzerinde hareket etme veya bir temsili elde etme aracı sağlayan bir URI'dır.
URL
URL, belirli bir kaynağın ağ konumunu tanımlayan bir URI uzmanlığıdır. Bir URN'den farklı olarak, URL kaynağın nasıl elde edileceğini tanımlar. URL'leri her gün http://example.com
vb. Biçiminde kullanırız. Ancak bir URL'nin HTTP URL olması gerekmez, ftp://example.com
vb. De olabilir .
URI
URI, kaynağı konuma, ada veya her ikisine göre tanımlar. Çoğu zaman, bir kaynağa konum tanımlayan URI'ları kullanırız. Bir URI'nin bir kaynağı hem isim hem de yere göre tanımlayabilmesi, bence çok fazla karışıklığa neden oldu. Bir URI'nin URL ve URN olarak bilinen iki uzmanlığı vardır.
URL ve URI arasındaki fark
URI bazı kaynakların tanımlayıcısıdır, ancak bir URL size bu kaynağı edinmeniz için belirli bilgiler verir. Bir URI bir URL'dir ve bir yorumcunun işaret ettiği gibi, artık uygulamaları açıklarken URL kullanmak yanlış kabul edilir. Genellikle, URL bir kaynağın hem konumunu hem de adını açıklarsa, kullanılacak terim URI olur. Çoğumuzun her gün karşılaştığı durum genellikle olduğundan, URI doğru terimdir.
RFC 3986 uyarınca , URI'ler aşağıdaki parçalardan oluşur:
scheme://authority/path?query
URI , bir sunucudaki ( yetki ) bir kaynağa ( yola ) veya uygulamaya ( sorguya ) erişim protokolünü açıklar .
Tüm URL'ler URI'lardır ve tüm URN'ler URI'lardır, ancak tüm URI'ler URL değildir.
Lütfen daha fazla ayrıntı için bakınız:
URI, kaynağı konuma, ada veya her ikisine göre tanımlar. Çoğu zaman, bir kaynağa konum tanımlayan URI'ları kullanırız. Bir URI'nin bir kaynağı hem isim hem de yere göre tanımlayabilmesi, bence çok fazla karışıklığa neden oldu. Bir URI'nin URL ve URN olarak bilinen iki uzmanlığı vardır.
URL, belirli bir kaynağın ağ konumunu tanımlayan bir URI uzmanlığıdır. Bir URN'den farklı olarak, URL kaynağın nasıl elde edileceğini tanımlar. URL'leri her gün http://stackoverflow.com vb . Şeklinde kullanırız . Ancak bir URL'nin HTTP URL olması gerekmez ftp://example.com
, olabilir , vb.
URI ve URL terimleri kesinlikle tanımlanmış olsa da, çoğu terim için tanımlandığından başka şeyler kullanır.
Örneğin Apache'yi ele alalım. Bir Apache sunucusundan http://example.com/foo istenirse, aşağıdaki ortam değişkenleri ayarlanır:
REDIRECT_URL
: /foo
REQUEST_URI
: /foo
Mod_rewrite etkinken, şu değişkenlere de sahip olacaksınız:
REDIRECT_SCRIPT_URL
: /foo
REDIRECT_SCRIPT_URI
: http://example.com/foo
SCRIPT_URL
: /foo
SCRIPT_URI
: http://example.com/foo
Bazı karışıklıkların nedeni bu olabilir.
Bu belgeye bakın . özellikle,
URL, bir kaynağı, sahip olabileceği diğer bazı özelliklerden ziyade, birincil erişim mekanizmasının (ör. ağ "konumu") temsili yoluyla tanımlayan bir URI türüdür.
Gerçekten çok açık bir terim değil.
Yazıları okuduktan sonra çok alakalı yorumlar buluyorum. Kısacası, URL ve URI tanımları arasındaki karışıklık kısmen hangi tanımın yazılım geliştirmede URI kelimesinin hangi ve gayri resmi kullanımına bağlı olduğuna bağlıdır.
Tanıma göre URL, URI'nin [RFC2396] bir alt kümesidir. URI URN ve URL içeriyor. Hem URI hem de URL'nin her biri, kendilerine URI veya URL olma durumunu sunan kendi sözdizimine sahiptir. URN, bir kaynağı benzersiz bir şekilde tanımlamak içindir, URL ise bir kaynağı bulmak içindir. Bir kaynağın birden fazla URL'ye ancak yalnızca tek bir URN'ye sahip olabileceğini unutmayın. [RFC2611]
Web geliştiricileri ve programcıları olarak neredeyse her zaman URL ve dolayısıyla URI ile ilgileneceğiz. Artık bir URL, tüm parça şemasına sahip olacak şekilde tanımlanmıştır: şemaya özgü bölüm, örneğin https://stackoverflow.com/questions . Bu bir URL ve aynı zamanda bir URI. Şimdi, sayfaya gömülü ../index.html gibi göreli bir bağlantı düşünün. Bu artık tanım gereği bir URL değil. Hala "URI referansı" olarak adlandırılan şeydir [RFC2396].
URI kelimesi göreceli yollara başvurmak için kullanıldığında, "URI-referansı" nın aslında düşünülen şey olduğuna inanıyorum. Dolayısıyla gayri resmi olarak, yazılım sistemleri mutlak adres için göreli yol ve URL'ye atıfta bulunmak için URI kullanır. Bu anlamda, göreli bir yol artık bir URL değil, yine de URI'dir.
İşte benim sadeleştirme:
URN: benzersiz kaynak adı, yani "ne" (ör. Urn: issn: 1234-5678). Bu benzersiz olmak içindir .. hiçbir farklı dokümanda aynı urn sahip olamaz gibi. Biraz "uuid" gibi
URL: bulmak için "nerede" (ör. Https://google.com/pub?issnid=1234-5678 .. veya ftp://somesite.com/doc8.pdf )
URI: bir URN veya URL olabilir. Bu bulanık tanım W3C ve IETF tarafından üretilen RFC 3986 sayesinde.
URI'nin tanımı yıllar içinde değişti, bu yüzden çoğu insanın kafasının karışması mantıklı. Ancak, http://somesite.com/something adresine bir URL veya URI olarak başvurabileceğiniz gerçeğinde şimdi tesadüfen alabilirsiniz ... an her iki şekilde de haklı olacaksınız (en azından şimdiye kadar olan zaman için .. .)
Aynı şeyi merak ediyordum ve bunu buldum: http://docs.kohanaphp.com/helpers/url .
url::current()
Yöntemi kullanarak net bir örnek görebilirsiniz . Bu URL'niz varsa : http://example.com/kohana/index.php/welcome/home.html?query=string
kullanarak , dokümantasyona göre: welcome / homeurl:current()
olan URI'yi size verir
URI'ler, Web'deki kaynakları ve elektronik posta kutuları gibi diğer İnternet kaynaklarını tekdüze ve tutarlı bir şekilde tanımlama ihtiyacından ortaya çıktı . Yani, yeni bir widget türü tanıtılabilir : widget kaynaklarını tanımlamak veya tel kullanmak için URI'ler : URI'ler veya web bağlantılarının çağrıldığında telefon görüşmeleri yapılmasına neden olmak URI'ler .
Bazı URI'ler bir kaynağı (DNS ana bilgisayar adı ve o makinedeki bir yol gibi) bulmak için bilgi sağlarken, bazıları saf kaynak adları olarak kullanılır. URL tanımlayıcıları için ayrılmıştır kaynak bulma vardır gibi 'http' URL'ler dahil, http://stackoverflow.com ana bilgisayarda verilen yolda web sayfasını tanımlar. Başka bir örnek, belirli bir adresteki posta kutusunu tanımlayan mailto: fred@mail.org gibi 'mailto' URL'leridir .
URN'ler , konumlandırıcılardan ziyade saf kaynak adları olarak kullanılan URI'lerdir . Örneğin, URI: mid: 0E4FC272-5C02-11D9-B115-000A95B55BC8@stackoverflow.com , 'İleti Kimliği' alanında onu içeren e-posta iletisini tanımlayan bir URN'dir . URI, bu mesajı diğer herhangi bir e-posta mesajından ayırt etmeye yarar. Ancak iletinin adresini herhangi bir mağazada sağlamaz.
Bunu cevaplamak için başka bir soruya değiştirdiğim bir cevaba yaslanacağım . Bir URI'ye iyi bir örnek, bir Amazon S3 kaynağını nasıl tanımladığınızdır. Hadi alalım:
s3://www-example-com/index.html
[incir. 1]
önbelleğe alınmış bir kopyası olarak oluşturduğum
http://www.example.com/index.html
[incir. 2]
Amazon'un S3-US-West-2 bölgesinde veri merkezinde.
StackOverflow s3://
protokol şemasına köprü oluşturmama izin verse bile , kaynağı bulmakta size hiçbir faydası olmaz . O Çünkü tanımlar bir kaynak , şek. 1 geçerli bir URI. Aynı zamanda geçerli bir URN'dir, çünkü Amazon, grubun ( authority
URI'nin kısmı için terimleri ) veri merkezleri arasında benzersiz olmasını gerektirir . Öyle yararlı onu bulma konusunda, ancak veri merkezi göstermez. Bu nedenle URL olarak çalışmaz.
Peki, bu durumda URI, URL ve URN arasındaki farklar nelerdir?
NOT: RFC 3986, URI'ları şu şekilde tanımlar :scheme://authority/path?query#fragment
Açıklanması kolay:
Aşağıdakileri varsayalım
URI Adınız
URL, sizinle iletişim kurabilmeniz için adınızı içeren adresinizdir.
benim adım Loyola
Loyola URI
adresim TN, Chennai 600001.
TN, Chennai 600 001, Loyola URL'dir
Umarım anlarsın,
Şimdi kesin bir örnek görelim
http://www.google.com/fistpage.html
yukarıda http://www.google.com/fistpage.html ( URL ) adresini kullanarak firstpage.html ( URI ) adlı bir sayfayla iletişim kurabilirsiniz .
Bu nedenle URI, URL'nin alt kümesidir ancak tersi değildir.
Tekdüzen Kaynak Tanımlayıcısı (URI), İnternet Kaynağını tanımlayan bir karakter dizesidir.
En yaygın URI, bir İnternet etki alanı adresini tanımlayan Tekdüzen Kaynak Konum Belirleyicisi'dir (URL). Çok yaygın olmayan başka bir URI türü de Evrensel Kaynak Adı'dır (URN).
Buldum:
Tekdüzen bir kaynak tanımlayıcısı (URI) büyük bir resimden ibarettir. URI'leri / URI'leri konum belirleyiciler (tekdüzen kaynak konumlandırıcıları-URL) veya adlar (tekdüzen kaynak adı-URN) veya her ikisi olarak sınıflandırılabilir. Temel olarak, bir URN bir kişinin adı gibi işlev görür ve URL o kişinin adresini gösterir. Uzun hikaye kısa, bir URN bir öğenin kimliğini tanımlarken, URL sağlar bulmak için yöntemi tanımlar, nihayet bu iki kavramı kapsüllemek URI olduğunu
En iyi (teknik) özet imo bu
IRI, URI, URL, URN ve Jan Martin Keil'den farkları :
Anlamsal Web ile uğraşan herkes tekrar tekrar IRI , URI , URL ve URN terimlerini karşılıyor . Bununla birlikte, tam anlamlarıyla ilgili bazı karışıklıklar olduğunu sık sık gözlemliyorum. Ve elbette, diğerleri de bunu fark etti (örneğin RFC3305 veya Google'da arama yapın). Dürüst olmak gerekirse, başlangıçta kendimi bile karıştırdım. Ama aslında mesele bu kadar karmaşık değil. Farklılıkların ne olduğunu görmek için belirtilen terimlerin tanımlarına bir göz atalım:
Bir Uniform Resource Identifier soyut veya fiziksel kaynağı tanımlayan bir karakter kompakt dizisidir. Karakter kümesi, bazı ayrılmış karakterler hariç olmak üzere US-ASCII ile sınırlıdır. İzin verilen karakter kümesinin dışındaki karakterler Yüzde Kodlaması kullanılarak temsil edilebilir. URI, konum belirleyici, ad veya her ikisi olarak kullanılabilir. URI bir konumlandırıcıysa, bir kaynağın birincil erişim mekanizmasını açıklar. URI bir adsa, kaynağı benzersiz bir ad vererek tanımlar. Bir URI'nin sözdizimi ve semantiğinin tam özellikleri, ilk iki noktadan önceki karakterler tarafından tanımlanan kullanılan Şemaya bağlıdır. [RFC3986]
Bir Tekdüzen Kaynak Adı şeması urn bir URI kalıcı, konumdan bağımsız, kaynak tanımlayıcı olarak hizmet amaçlanmıştır olduğunu. Tarihsel olarak, terim herhangi bir URI'ye de atıfta bulunur. [RFC3986] Bir URN, bir Ad Alanı Tanımlayıcısı (NID) ve bir Ad Alanına Özel Dize (NSS) içerir: urn :: NSS'nin sözdizimi ve semantiği, her NID için spesifiktir. Kayıtlı NID'lerin yanı sıra, resmi kayıt sürecinden geçmeyen birkaç NID daha var. [RFC2141]
Bir Uniform Resource Locator bir kaynak belirlenmesi ek olarak, birincil erişim mekanizması [RFC3986] anlatarak kaynak yerini belirlemek için bir araç sağlar, bir URI. Bir dizi Şema aracılığıyla URL'nin kesin bir tanımı olmadığından, "URL yararlı ancak gayri resmi bir kavramdır", genellikle URN içermeyen bir URI alt kümesine atıfta bulunur [RFC3305].
Bir Internationalized Kaynak Tanımlayıcısı bir URI benzer bir şekilde tanımlanır, ancak karakter kümesi Evrensel Kodlu Karakter Kümesi için uzatılır. Bu nedenle, ayrılmış karakterler dışında herhangi bir Latin ve Latin olmayan karakter içerebilir. URI tanımını genişletmek yerine, IRI terimi, net bir ayrımın yapılmasını sağlamak ve uyumsuzluklardan kaçınmak için tanıtıldı. IRI'lar, Evrensel Kodlu Karakter Kümesinin desteklendiği durumlarda kaynakları tanımlamak için URI'lerin yerini almayı amaçlamaktadır. Tanım olarak, her URI bir IRI'dir. Ayrıca, IRI'lerin URI'lara yönelik tanımlanmış bir hedef eşlemesi vardır: Her IRI tam olarak bir URI ile eşlenebilir, ancak farklı IRI'lar aynı URI ile eşlenebilir. Bu nedenle, bir URI'den bir IRI'ye dönüştürme orijinal IRI'yı üretmeyebilir. [RFC3987]
IRI is a superset of URI (IRI ⊃ URI)
URI is a superset of URL (URI ⊃ URL)
URI is a superset of URN (URI ⊃ URN)
URL and URN are disjoint (URL ∩ URN = ∅)
RDF, varlıkları adlandırmak için IRI'lerin kullanılmasına açıkça izin verir [RFC3987]. Bu, varlık adlarında hemen hemen her karakteri kullanabileceğimiz anlamına gelir. Öte yandan, genellikle erken durum yazılımlarıyla uğraşmak zorundayız. Bu nedenle, ASCII olmayan karakterler kullanarak sorun yaşaması pek olası değildir. Bu nedenle, varlıklar için URI olmayan adlardan kaçınmanızı ve http URI'leri [LINKED-DATA] kullanmanızı öneririz. Kısaca söylemek gerekirse: Varlıklarınızı adlandırmak için yalnızca URL'leri kullanın. Elbette, bir URN tarafından adlandırılan mevcut varlıkları ifade edebiliriz. Ancak, bu tür tanımlayıcıları yeni oluşturmaktan kaçınmalıyız.