OWL Time (OWL Zaman, Web Varlıkbilim Dili Zaman)
Yazan : Åžadi Evren ÅžEKER
Gelişen zamanlama ihtiyaçları ile birlikte zamanın gösterimi ve formüllenmesi de bir ihtiyaç haline gelmiştir. Örneğin yapılan her siparişte, siparişin zamanının tutulması, basir bir kiralama işleminde veya bilet satış işleminde yapılan işlemin hangi tarih ve saatler için yapıldığının tutulması artık sıradan birer gereksinim haline gelmiştir. Bu amaçla doğmuş olan OWL Time , Web Ontology Language (Baş harflerinin sırası okunmasını kolaylaştırmak için değiştirilmiş ve OWL olarak kısaltılmıştır) altında zaman göstermek amacıyla XML üzerine kurulu bir dil olarak tasarlanmıştır. Projenin daha önceki ismi DAML-Time olarak geçmekteydi.
Dilin yapısında varlıklar TemporalEntity (zaman varlığı veya fânî varlık olarak isimlendirilmektedir) ve her TemporalEntity altında Instant (kesin, ânî ) veya Interval (aralık, zaman aralığı) olarak iki farklı varlık bulunur.
:Instant
a owl:Class ;
rdfs:subClassOf :TemporalEntity .
:Interval
a owl:Class ;
rdfs:subClassOf :TemporalEntity .
:TemporalEntity
a owl:Class ;
rdfs:subClassOf :TemporalThing ;
owl:equivalentClass
[ a owl:Class ;
owl:unionOf (:Instant :Interval)
] .
Bu durum yukarıdaki RDF/XML gösterimi ile temsil edilmiştir. Dikkat edilirse Instant ve Interval sınıfları (Class) , TemporalEntity sınıfının (Class) birer alt sınıfıdır (subclass)
Sürelerin İfade edilmesi
OWL-Time kullanılarak sürelerin ifade edilmesi de ayrı bir problemdir. Örneğin bir eylemin süresi 1 gün ve 2 saat veya 26 saat veya 1560 dakika olabilir ve bütün bu zamanlar aynı süreye işaret etmektedir. Dolayısıyla sağlıklı bir zaman gösteriminde Yıl, Ay, Hafta, Gün, Saat, Dakika, Saniye olmak üzere 7 farklı zaman gösterimi gerekmektedir. Ayrıca bu zaman gösterimini belirli eden ilave bir gösterici ile toplam 8lik gösterici kullanılmaktadır. Bu durum aşağıdaki sınıf yapısında gösterilmiştir:
urationDescription a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty :seconds ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty :minutes ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty :hours ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty :days ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty :weeks ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty :months ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty :years ] .
Yukarıda gösterilen sınıf DurationDescription yani Süre Tanımlayıcı sınıfının yapısıdır. Bu sınıftan üretilen bir örnek aşağıda verilmiştir:
duration
a
urationDescription ;
:seconds 20 ;
:hours 5 ;
:days 15 .
Yukarıdaki örnekte 15 gün 5 saat ve 20 saniyelik bir zaman dilimi temsil edilmiştir.
Yukarıda Süre Tanılmayıcısı (DurationDescription) sınıfının tanımına dikkat edilirse her zaman birimi için ayrıca bir de maxCardinality (azami sayısallık) tanımı yapılmış ve bütün zaman birimleri için bu değer 1 atanmıştır. Bunun OWL dili açısından anlamı bu değerlerin sayısal olarak istedikleri gibi atanabilecekleridir. Ancak OWL dili bilindiği üzere varlıkbilimsel bir dildir ve her zamanın bütün bu birimleri ifade etmesi beklenemez. Örneğin üniversite eğitiminin saniyeler dakikalar cinsinden ifadesi beklenmedik bir durumdur, genelde üniversite eğitimi 2,3,4,5,6 gibi yıllar ile ifade edilir. Veya bir yemek süresi dakika ve saatler mertebesindedir bu sürenin yıllar ile ifade edilmesi beklenmedik bir durumdur. İşte OWL-Time bu gibi durumlarda diğer zaman birimlerinin kapatılmasına imkan verir ve yapılması gereken basitçe bu zaman birimlerinin maxCardinality bilgisini 0 yapmaktır:
:Year
a owl:Class ;
rdfs:subClassOf
urationDescription ;
rdfs:subClassOf
[ a owl:Restriction ;
owl:cardinality 1 ;
owl:onProperty :years
] ;
rdfs:subClassOf
[ a owl:Restriction ;
owl:cardinality 0 ;
owl:onProperty :months
] ;
...
rdfs:subClassOf
[ a owl:Restriction ;
owl:cardinality 0 ;
owl:onProperty :seconds
] .
Örneğin yukarıda bir yıl sınıfı tanımı yapılmıştır ve yıl dışındaki bütün zaman birimlerinin cardinality (sayısallık) bilgisi 0 yapılmıştır.
Tarih ve Saat kavramı
OWL-Time kullanılarak belirli bir tarihin veya saatin ifade edilmesi de gerekmektedir. ÖrneÄŸin 10:30 bir saat ifade etmektedir buna karşılık 26 mart 2008 ise bir tarih ifade etmektedir. Dolayısıyla herhangi bir zamanı ifade etmek için öncelikle hangi birimden ifadenin yapılacağına karar verilmelidir. Yani ifade edilecek olan zaman bir dakikayı mı bir günü mü yada bir saati mi ifade etmek amacındadır belirlenmelidir. ( “saat 10″ önermesi bir saat ifade ederken “26 mayıs” bir günü ifade etmektedir). Bu belirlenen birime unitType (birim tipi) denilirse geriye zaman diliminin ifade edilmesi sorunu kalmaktadır. Yani istenilen saat acaba hangi zaman dilimine göre (örneÄŸin GMT, EST, PST ) belirtilmektedir.
Son olarak tarih ve saati ifade eden zaman birimleri aşağıdaki şekilde tanımlanabilir:
ateTimeDescription a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; owl:onProperty :unitType ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty :second ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty :minute ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty :hour ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty :day ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty :dayOfWeek ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty :dayOfYear ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty :week ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty :month ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty :year ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty :timeZone ] . :hasDateTimeDescription a owl:ObjectProperty ; rdfs:domain
ateTimeInterval ; rdfs:range
ateTimeDescription .
Görüldüğü üzere yukarıdaki gösterimde haftanın günleri veya yılın günü gibi kavramlar da ilave edilerek bir tarih/saat ifadesine yer verilmiştir. İlk eklenen alt sınıf (subclass) bir zaman birmini gösterirken son alt sınıf ise zaman dilimini (timeZone) göstermektedir.
Bu bilgiler paralelinde aşağıdaki toplantı varlığını inceleyelim:
:meetingStart
a :Instant ;
:inDateTime
:meetingStartDescription ;
:inXSDDateTime
2006-01-01T10:30:00-5:00 .
:meetingStartDescription
a
ateTimeDescription ;
:unitType :unitMinute ;
:minute 30 ;
:hour 10 ;
:day 1 ;
:dayOfWeek :Sunday ;
:dayOfYear 1 ;
:week 1 ;
:month 1 ;
:timeZone tz-us:EST ;
:year 2006 .
Yukarıda aynı toplantı varlığı için iki farklı gösterim bulunmaktadır. İlk gösterimde XSD zamanı denilen XML Scheme Definition kelimelerinin kısaltılmışı olan ve XML üzerinde tanımlama yapılan dilin biçemine uygun olarak yazılmış gösterime yer verilmiÅŸtir. Aynı tarih deÄŸeri altta bizim tanımladığımız tarih saat yapısına uygun olarak tekrar gösterilmiÅŸtri. Buna göre toplantı dakika cinsinden bir zamana iÅŸaret etmekte olup zaman birimi EST’dir ve toplantının zamanı: 1/1/2006 saat 10:30′dur.
OWL Time kullanarak zaman aralığı gösterimi
Bilindiği üzere zaman gösterimlerinde her zaman kesin ve belirli zamanları ifade etmek mümkün değildir. Örneğin bir kargo firmasının teslim süresi olarak 2-3 gün arasında demesi, teslimin en az 2 en çok 3 günde gerçekleşeceğini ifade etmektedir. Bu durum OWL Time kullanılarak aşağıdaki şekilde ifade edilebilir:
eliveryDuration a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; owl:onProperty :maxDeliveryDuration ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; owl:onProperty :minDeliveryDuration ] . :maxDeliveryDuration a rdf:Property ; rdfs:domain
eliveryDuration ; rdfs:range time:Interval . :minDeliveryDuration a rdf:Property ; rdfs:domain
eliveryDuration ; rdfs:range time:Interval .
Yukarıdaki gösterimde bir teslim tarihi için iki alt bilgi girilmiş bunlardan birisi minDelivery (asgari teslim) diğeri ise maxDelivery (azami teslim) süresi olarak belirlenmiştir.
Bu belirlemenin yanında 2 günlük ve 3 günlük sürelerde aşağıdaki şekilde tanımlanabilir:
:Interval2Days
a owl:Class ;
rdfs:subClassOf time:Interval ;
owl:subClassOf
[ a owl:Restriction ;
owl:hasValue P2D ;
owl:onProperty time:durationDescriptionDataType
] .
:Interval3Days
a owl:Class ;
rdfs:subClassOf time:Interval ;
owl:subClassOf
[ a owl:Restriction ;
owl:hasValue P3D ;
owl:onProperty time:durationDescriptionDataType
] .
Artık bu tanımlamalardan sonra kargo firmasının teslim süresi tanımlanabilir:
:Cargo2-3dayDuration
a owl:Class ;
rdfs:subClassOf
eliveryDuration ;
rdfs:subClassOf
[ a owl:Restriction ;
owl:allValuesFrom :Interval3Days ;
owl:onProperty :maxDeliveryDuration
] ;
rdfs:subClassOf
[ a owl:Restriction ;
owl:allValuesFrom :Interval2Days ;
owl:onProperty :minDeliveryDuration
] .
yukarıda görüldüğü üzere kargo firmasının teslim süresi 2 günlük zaman diliminde asgari ve 3günlük zaman diliminde azami süreler olarak tanımlanmıştır.
OWL-Time kullanarak ne yazık ki belirsiz iki eylemin göreceli zamanlarını tanımlamak mümkün değildir. Örneğin A olayı B olayından sonra olmuştur önermesi OWL-Time kullanımıyla gösterilemez.
« TTML (Time Tabling Markup Language, Zaman Çizelgeleme İşaretleme Dili) | HTML+TIME »
Yorumlar
Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'OWL Time (OWL Zaman, Web Varlıkbilim Dili Zaman)' isimli yazı 28 Apr 2008 tarihinde, saat: 10:09 'de Şadi Evren ŞEKER tarafından gönderilmiş, toplam 503 defa okunmuştur.
Benzer yazıları Automata (otomatlar, özdevinirler), Bilgisayar Matematiği, Bilgisayar Standartları, Doğal Dil İşleme (NLP), algoritma analizi (teory of algorithms), yapay zeka (artificial intelligence) kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.
Yazarın Kitabı
Bu yazının yazarı Şadi Evren ŞEKER'in son çıkan kitabı "Programlama ve Veri Yapılarına giriş (C, C++ ve JAVA ile)" hakkında bilgi almak için Buraya tıklayabilirsiniz.
Eklenen Son Yazılar
- Visual Basic ile Gösterici (Pointer) Kullanımı
- Hasse Çizgeleri (Hasse Diagrams)
- Zeki Vekiller (Akıllı Ajanlar, Intelligent Agents, Zeki Etmenler )
- Integral Kriptoanalizi ( Toplam Tecessüsü , Integral Cryptoanalysis)
- Diferansiyel Kriptoanalizi ( Fark Tecessüsü , Differential Cryptoanalysis)
- Sierpinski Üçgeni (Sierpinski Triangle)
- C ile programlamaya giriş final sınavı çözümleri
- Çok Seviyeli Sıralar (Multi Level Queues)
- Çift Özetleme (Double Hashing)
- İkinci Dereceden Sondalama (Quadratic Probing)
Yapılan Son Yorumlar
- Åžadi Evren ÅžEKER: Null, NULL, nil veya null olarak...
- Fatih Kabakci: hocam merhabalar,...
- kara: Çok güzel anlatılmış gerçekten teşekkürler...
- Şadi Evren ŞEKER: Bahsettiğiniz şekil dönüşümü...
- Caner: Kullanıcıdan açı girdisi almıyorsanız...
- Furkan Yediyildiz: Algoritmanin mantigi cok güzel...
- havva: çok sağolun çok güzel açıklamalar var tşk...
- Şadi Evren ŞEKER: typedef komutu, bir yapıdan yeni bir...
- fatih kabakci: hocam ben structures ile ilgili bir sorum...
- Şadi Evren ŞEKER: evet, yukarıda açıklanan, herhangi...
- Abdurrahman ulusoy: fi açısından teta kadar döndürme...
- Şadi Evren ŞEKER: Hayır yok, bir noktanın, herhangi...
- Abdurrahman ulusoy: Bu durumda yukarıdaki formüllerin...
- Abdurrahman ulusoy: Merhaba hocam Üstteki mesajımda...
- mustafa ekmekcioÄŸlu: merhaba ÅŸadi bey ben hacettepe...
- Şadi Evren ŞEKER: Talebiniz üzerine...
- Evren Kocaturk: ve bunu matlab üzerinde, gerekli...
- Evren Kocaturk: teşekkürler, işime yarayacak gibi,...
- tuncay çavuşoğlu: Şadi bey teşekkürler.Kısa ve...
- attila: hocam bunun bir örneginide Visual Basic diliyle...
Yakın Yazılar
OWL Time (OWL Zaman, Web Varlıkbilim Dili Zaman)
zaman bölmeli çoklama (time division multiplexing, tdm)
TTML (Time Tabling Markup Language, Zaman Çizelgeleme İşaretleme Dili)
STTL (A standard timetabling language (standart bir zaman çizelgeleme dili))
Zamanın Gerçekdışılığı (Unreality of Time, Hayal-i Vakit)
Zamani (Temporal, Zamansal, Zamane, Mevkut)
Devre deÄŸiÅŸimli (Circuit Switching) aÄŸlar
Allen Fasıla Mantığı (Allen's Interval Logic)
Çift Yölü İletişim (Duplex Communication)
Kelime Bilim (lexicology, vocabulary)
Veri Tanımlama Dili (Data Definition Language)
Stokastik Süreç (Stochastic Process)
frekans bölmeli çoklama (sıklık bölmeli çoklayıcı, frequency division multiplexing, fdm)
Bağlantılar
[...] AÄ?açlar bilindiÄ?i üzere gösterici kullanan veri yapılarıdır. Ancak verinin dizi(array) üzerinde saklanması durumunda aÄ?acın bu gösterici özelliÄ?inin kullanılması ne yazık ki mümkün olamamaktadır. Bunun yerine dizinin indis numaralarını kullanan bir matematiksel fonksiyon ile benzer bir yapı elde edilebilir. [...]