Kaynak Tanımlama Çerçevesi

**Kaynak Tanımlama Çerçevesi** (**KTÇ**, İngilizce **' (**')), metadata model olarak tasarlanmış bir World Wide Web Consortium (W3C) spesifikasyonu olmasına rağmen, çeşitli sözdizim biçemlerinde bilgi modellemek için kullanılan genel bir metoda dönüşmüştür.

KTÇ metadata model, kaynaklar hakkında, KTÇ terminolojisinde üçlüler (**') olarak adlandırılan, özne-yüklem-nesne şeklinde ifadeler üretme fikri üzerine kurulmuştur. Özne kaynağı, yüklem, kaynağın özelliğini veya durumunu gösterir ve özne ve nesne arasındaki ilişkiyi açıklar. Mesela "Gökyüzü mavi renge sahiptir" bilgisini KTÇ olarak gösterilişi, özellikle formatlanmış bir metin üçlüsü olarak ifade edilebilir: özne "gökyüzü", yüklem "renge sahiptir" ve nesne "mavi".

Kaynakların ifade edilmesini sağlayan bu mekanizma, W3C'nin [[anlamsal ağ]] etkinliğinin amaçlarındaki temel bileşenlerden biridir:

World Wide Web'in evrimsel safhasında otomatikleştirilmiş yazılımlar Web'de dağıtılmış olan, kullanıcıların daha verimli ve güvenilir bir şekilde kullanabileceği, makinalar tarafından okunabilir bilgiyi, depolayabilir, paylaşabilir ve kullanabilir. KTÇ'nin basit data modeli ve birbirine benzemeyen ve soyut kavramları modelleyebilme yetisi, Anlamsal Ağ etkinliğinden bağımsız olarak, bilgi yönetimi uygulamalarında kullanımını artırmaktadır.

== Tarihçe ==

W3C'nin KTÇ'nin birçok öncüsü bulunmaktadır. Teknik olarak en yakını, Ramanathan V. Guha'nın Apple'dayken başlattığı ve Tim Bray'in Netscape Communications Corporation'daki çalışma süresindeki yardımlarıyla devam ettirdiği MCF'dir. Ayrıca Dublin Core Community'nin ve PICS'nin fikirlerine dayanan, **' (W3C'nin erken dönem Web içerik etiketleme sistemi) KTÇ projesinin yönünün şekillenmesinde anahtar niteliğindeydi.

W3C 1999 yılında KTÇ'nin data modeli ve XML sözdizimi hakkında bir spesifikasyon yayınladı. Böylece çalışmalar 2004 yılında yayınlanan yeni spesifikasyon versiyonu üzerinde başladı.

1999 spesifikasyonuna dayanan birkaç uygulama olması ve bunların tamamen güncellenmesi gerekmesine rağmen, diğer bazı W3C teknolojilerine nazaran, yeni geliştirilmiş spesifikasyonlar herkesin görebileceği şekilde geliştirildiği için sahiplenilme süreci oldukça hızlı oldu.

MIME çokluortam tipi application/rdf+xml, RFC 3870 ile tescillendi. Bu RFC, yeni KTÇ spesifikasyonlarının kullanılmasını önerir.

## Ontolojiler
Bir dizi KTÇ ifadesi, asıl olarak etiketlenmiş, yönlendirilmiş sahte çigedir (**'). KTÇ-tabanlı bir data model belirli türde bilgi gösterimlerine, günümüzde bilişimde kullanılan [[ilişkisel model]] ve diğer ontolojik modellere nazaran daha iyi uyacaktır. Bunun yanında, uygulamada, KTÇ verisi üçlü saklama (**') olarak da adlandırılabilen ilişkisel veritabanlarında sıkça tutulmaktadır. RDFS ve OWL un gösterdiği gibi, RDF üzerinde, ek ontoloji dilleri geliştirilebilir.

## Kaynak tanımlama

Bir KTÇ ifadesi, muhtemelen bir URI (Uniform Resource Identifier) ile isimlendirilmiş bir kaynaktır. Bazı kaynaklar isimlendirilmemiştir, bunları boş uçlar (blank nodes) veya sahipsiz kaynaklar (anonymous resources) olarak isimlendiririz. Bunlar direkt olarak tanınamazlar. Aynı zamanda yüklem de bir ilişkiyi gösteren bir kaynaktır. Nesne bir kaynak da, bir Unicode string öbeği de olabilir.

Semantic Web uygulamalarında ve nispeten popüler, RSS ve FOAF gibi KTÇ uygulamalarında kaynaklar, World Wide Web üzerinden erişilebilir, gerçek verileri gösteren URI ler tarafından ifade edilirler. Fakat genel olarak KTÇ İnternet tabanlı kaynakların açıklaması ile sınırlı değildir. Gerçekte, kaynağa işaret eden URI, tekrar gösterilebilir olmak zorunda değildir. Mesela "http:" ile başlayan ve bir KTÇ ifadesinin nesnesini ifade eden URI, ağ üzerinden erişilebilir, gerçek bir kaynağı göstermek zorunda olmadığı gibi, HTTP üzerinden erişilebilir bir kaynağı göstermek zorunda da değildir. İstenirse böyle bir URI, "barış" gibi soyut bir kavramı da gösterebilir.

Bu yüzden KTÇ ifadelerinin üreticilerinin ve kullanıcılarının kaynak belirteçlerinin anlamı konusunda mutabık olmaları gerekir. Bu anlaşma KTÇ'ye kendiliğinden aktarılamadığından, ortak kullanım için bir takım kontrollü sözcük grupları vardır. KTÇ'de kullanılmak üzere, Kısmen bir URI uzayına eşlenmiş Dublin Core Metadata bunlara örnek verilebilir.

## Örnekler

**Örnek 1: New York'un posta kodu kısaltması**

KTÇ'deki belirli kavramlar, bu kavramların KTÇ'deki kullanımları, özne-yüklem ve özne-yüklem-nesne yapıları benzer, fakat yine de farklı anlamlara sahip olmasına rağmen, mantık ve dilbiliminden alınmıştır. Örnek verecek olursak:

Türkçedeki şu ifadede 'New York, NY kısaltılmış posta koduna sahiptir.', 'New York' özne, 'kısaltılmış posta koduna sahiptir' yüklem, 'NY' ise nesne olarak kabul edilebilir.

KTÇ üçlüsü olarak kodlandığında, özne ve yüklemin URI'ler ile ifade edilen kaynaklar olması gerekir. Nesne, bir kaynak veya literal bir element olabilir. Mesela, KTÇ'nin N-Triples formunda ifade şuna benzeyebilir:

:`<urn:states:New%20York> <> "NY" .`

Bu örnekte, "urn:states:New%20York", ABD eyaleti olan New York'u, işaret eder, "", yüklem için URI'dir ve "NY" literal stringdir. Burada seçilen URI'ler standart değildir ve okuyan taraf anlamını bildiği sürece standart olmak zorunda değildir.

N-Triplets KTÇ'nin standart serializasyon formatlarından sadece biridir. Yukarıdaki üçlü, RDF/XML standardına göre aşağıdaki şekilde gösterilebilir:

 
 	
 		NY
 	
 

Bunun yanında QNames'in sözdizimi kısıtları sebebiyle (yukarıdaki terms: alternative gibi), bazı KTÇ çizgeleri RDF/XML ile gösterilemezler.

**Örnek 2: Tony Benn ile ilgili bir Wikipedia makalesi**

Benzer şekilde,  ifadesi belirli bir kaynağı tanımlar(buradaki URI'nin hyperlink olarak ele alınabilmesini veya kaynağın aslında Tony Benn hakkında bir Wikipedia makalesi olduğu göz önüne alınmadan). Kaynağın başlığının "Tony Benn" ve yayıncısının "Wikipedia" olduğu bilgileri, KTÇ ifadeleri olarak gösterilebilir. KTÇ'nin n üçlü (**') biçiminde, bu ifadeler aşağıdaki gibi yazılabilir:

:<code></code>
:<code></code>

Ve bu ifadeler, RDF/XML olarak şu şekilde gösterilebilir:

<pre>
<rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/elements/1.1/">
	<rdf:Description rdf:about="http://en.wikipedia.org/wiki/Tony_Benn">
		<dc:title>Tony Benn</dc:title>
		<dc:publisher>Wikipedia</dc:publisher>
	</rdf:Description>
</rdf:RDF>
</pre>

Tabii ki, insan dili olarak, aynı bilgi basitçe şu şekilde ifade edilebilir:
	<code>Wikipedia tarafından yayınlanan bu kaynağın başlığı "Tony Benn"dir.</code>

KTÇ, bilgiyi makinanın anlayabileceği bir biçimsel bir yolla ifade eder. KTÇ'nin amacı, kaynakların belirli bir yazılımın anlayabileceği bir şekilde, başka bir deyişle, veriye erişip veriyi kullanabileceği şekilde ifade edilmesini sağlayan kodlama ve çevirme mekanizmaları sağlamaktır.

Yukarıdaki ifadelerin her iki hali de gereğinden fazla kelimeden oluşuyor gibi görünüyor, çünkü KTÇ kaynağı için bir şart da (özne ya da yüklem olarak) tekil olmasıdır. Özne kaynağı, ifade edilen asıl kaynağı tam olarak işaret edebilmek için tekil olmak zorundadır. Yüklem, açıklama üzerinde işlem yapan yazılım için, Başlık ya da Yayıncı fikrinin muğlak olması ihtimalini düşürmek için tekil olmak zorundadır. Eğer yazılım <code>http://purl.org/dc/elements/1.1/title</code> ı tanırsa, aynı zamanda bunun kıyafet olan başlık veya füze başlığı veya sadece b-a-ş-l-ı-k harflerinin yan yana diziliminden farklı br kavram olduğunu algılayacaktır.

Aşağıdaki örnek, böyle basit bir isteğin, çeşitli KTÇ sözcük kümelerinin birleşimi şeklinde, ne kadar ayrıntılı olarak ele alındığı gösterir. Burada, Wikipedia sayfasının temel konusunun adı "Tony Benn" olan bir kişi olduğunu vurgulayalım:

<pre><rdf:RDF
        xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
        xmlns:foaf="http://xmlns.com/foaf/0.1/" 
        xmlns:dc="http://purl.org/dc/elements/1.1/">
        <rdf:Description rdf:about="http://en.wikipedia.org/wiki/Tony_Benn">
                <dc:title>Tony Benn</dc:title>
                <dc:publisher>Wikipedia</dc:publisher>
                <foaf:primaryTopic>
                     <foaf:Person>
                          <foaf:name>Tony Benn</foaf:name>  
                     </foaf:Person>
                </foaf:primaryTopic>
        </rdf:Description>
</rdf:RDF>
</pre>

== İfadeyi maddeleştirme ve bağlam ==

Bilginin bir ifadeler bütünü ile modellenmiş (body)si maddeleştirmeye bağlı olabilir, öyle ki her ifade (yani özne-yüklem-nesne halinde bir üçlünün tamamı) bir URI ye atanmış ve ek olarak ne gibi ifadelerin yapılabileceği hakkında bir kaynak gibi kullanılabilir. Mesela "Jane, John'un X dokümanının yazarı olduğunu söylüyor.". Maddeleştirme her ifadenin güvenilirlik seviyesini ve işe yararlık derecesini anlamak açısından bazen önemlidir.

Maddeleştirilmiş bir KTÇ veritabanında, her orijinal ifade, bir kaynak olarak, genellikle kendisi hakkında yapılmış üç ek ifadeye sahiptir: birincisi bu ifadenin öznesinin bir kaynak olduğunu beyan etmek içindir, ikincisi, yükleminin bir kaynak olduğunu ifade etmek için, üçüncüsü de nesnesinin bir kaynak veya bir literal olabileceğini ifade etmek içindir. Uygulamanın ihtiyacına göre, orijinal ifade ile ilgili daha fazla ifade var olabilir.

Mantıktaki uygun ifadeleri ödünç alarak, bazı KTÇ model uygulamaları, ifadeleri bazen, KTÇ spesifikasyonu editörü Graham Klyne'ın makalesinde tartışıldığı üzere, durumlar, bağlamlar ve kapsamlar gibi farklı kriterlere göre gruplamanın uygun olduğunu onaylamıştır. Mesela, bir ifade, bir "durumunda doğru"("is true in") ilişkisini ifade etmek için bir URI ile isimlendirilmiş bir bağlamla ilişkilendirilebilir. Başka bir örnek olarak, bazen, belirli bir RDF/XML dokumanının URI'si olan bir URI ile tanımlanan, ifadeleri kaynaklarına göre gruplamak uygundur. Böylece, kaynakta güncelleme yapıldığında, denk düşen ifadeler de modelleri içinde değişir.

Kapsamların(scope) uygulanması için tam olarak maddeleştirilmiş ifadeler gerekmeyebilir. Bazı uygulamalar, tek bir kapsam tanımlayıcının, herhangi bir URI'ye atanmamış bir ifade ile ilişkilendirilmesine izin verir.

Kapsam içermeyen KTÇ ile sağlandığı şekliyle, first-order logic'de, tek metalevel ilişkisi olumsuzlamadır, ama iç içe bağlamlar hakkındaki genel durum önermeleri, KTÇ'nin, modal ve high-order logic i ifade edebilmek için kullanılan bir metalanguage i kapsamasına izin verir.

== Sorgu ve çıkarsama dilleri ==

KTÇ çizgeleri (**') birçok sorgu dili ortaya çıkarmıştır. KTÇ sorgu dilleri, ifadelerin, bir dizi ifadeye karşı değerlendirilebilmesine, mesela daraltılmış ifade seti, kaynaklar veya nesne değerleri üretmek için veya bu ögeler üzerinde karşılaştırma ve işlemler gerçekleştirmek için, izin verir. KTÇ sorguları, çıkarsama faaliyetleri için temel olarak, bilgi yönetimi uygulamaları tarafından kullanılır.

SQL'den sonra daha esnek olarak modellenen sorgu dili SPARQL, KTÇ'nin en yaygın sorgulama dili olmuştur. SPARQL, Aday Öneri olarak yayınlanmış fakat daha sonra, açık sorunlar nedeniyle durumu Çalışma Taslağı'na çekilmiştir.

Diğer önemli KTÇ sorgu ve çıkarsama dilleri şunlardır:

* RDQL, SPARQL in öncüsü, SQL'e benzer
* Versa, yoğun sözdizim (SQL'e benzemez), sadece 4Suite'te (Python) kullanılmıştır
* XUL, KTÇ'deki verileri eşlemek için kurallar tanımlamak için, bir kalıp elemanına sahiptir. XUL veri eşleme için büyük ölçüde KTÇ kullanır.

## Dış bağlantılar
### Haberler ve kaynaklar
* W3C's RDF at W3C : tanımlamalar, rehberler ve kaynaklar (İngilizce)
* Dave Beckett'in KTÇ kaynak rehberi  (İngilizce)
* W3C tanımlamalarına ve Mozilla'nın dokümanlarına göre KTÇ  (İngilizce)

### Belgeler ve eğitseller
* KTÇ modellemeye giriş  (İngilizce)
* KTÇ nedir? (İngilizce)
* KTÇ hakkında bir giriş örneği  (İngilizce)
* RDF ve XUL , örneklerle. (İngilizce)

### KTÇ yazılım araçları
* W3C Wiki'de KTÇ ve OWL araçları  (İngilizce)
* SemWebCentral Açık kaynak semantik Web araçları
* xml.com'da KTÇ araçları listesi
* Rhodonite : Ücretsiz sürükle bırak (**) arayüzünde KTÇ editörü ve KTÇ tarayıcısı.

### KTÇ veri kaynakları
* RDF Datasources: Mozilla'da KTÇ kaynakları