Ето малко описание на това което правя в момента. Нещата не са фирмена тайна, защото повечето са по различни сайтове така или иначе. Както писах преди, работя като студент за Software AG – една от най-големите софтуерни компании в Европа и една от първите в пазара със SOA базирани продукти. Не съм точно стажант, но е подобно – werkstudent.
SOA е съкращение за Service Oriented Archtecture. Системи базирани на SOA, фокусират функционалността си в различни интернет услуги (web services). Въпросните web services са най-новата тенденция в мрежата и комуникацията в и между компаниите (т.н. B2B). Базирани са изцяло на XML, като обикновено сървърната част е на java.
Миналата година Software AG пусна един пакет с продукти – crossvision, който има за цел обръщането на системите на една корпорация в SOA-базирани и улесняване поддръжката и въвеждането на нови стандарти и процеси. Няма да се впускам в детайли за този пакет. Аз работя по единият от шестте продукта – CentraSite – който действа като централен регистър и библиотека (registry and repository). Използва се от всички останали продукти и е централен хъб на всички данни и процеси.
Това което правя има общо и с европейския проект NEON (http://www.neon-project.org/ и малко описание по проекта). Целта му е създаването на стандарти, методики и инструменти за създаване, търсене и адаптиране на онтологии. Онтологиите са градивна част от т.н. семантични мрежи (Sematic web).
Това, с което конкретно се занимавам в момента, е да интегрирам OMV в CentraSite. OMV е език за вид онтологии, които описват други онтологии. Нещо като мета данни за онтологии. Надеждата е, че ще помогнат за по-лесно откриване и адаптиране на онтологиите и съдържат пълна история на участниците, инструментите, методите, целите и лицензите в създаването на една онтология. Ето тук може да намерите повече информация.
Задачата ми е да допълня информационния модел в регистъра на CentraSite, така че да може да съдържа OMV обекти (вече има поддръжка за онтологии). Tрябва да създам и web service базиран на ebXML стандарта, чрез който да се използва api функционалността на CentraSite. След това трябва да се разшири ebXML модела за да съдържа направо OMV обекти и да се разшири web service-а за да позволи работата с тях. В крайна сметка този web service трябва да се използва заедно с Oyster – OMV сървър разработен по проекта NEON – и да позволи лесно и бързо намиране на онтологии в мрежа.
Вече съм почти привършил с тези задачи. Остава само да тествам и да напиша кратка документация. Големият проблем при писането беше, че api-то на CentraSite e базирано на JAXR, а web service-а е на ebXML. На пръв поглед разликите в информационния модел не са големи, но като започнеш да превеждаш обекти от едното на другото става доста мътно. Още повече, че OMV само по себе си има тотално различна структура, която трябва да се напасне и на ebXML и на модела в регистъра, за да могат и двете да я разбират. Във същото време не трябва да се обърква работата на регистъра и да се променя модела така, че да не може да се използва от други продукти, като Information Integrator, който също работи с онтологии, както и ebXML-а и OMV данните да отговарят на всички стандарти, за да могат да се разбират от чужди програми.
Въобще много приятна история. А като си помисля, че допреди няколко месеца не бях работил въобще с web service-и, wsdl, owl, omv, soap и т.н., а някой от тях не ги бях и чувал. Нещо което отне много време в началото беше, че като взех ebXML схемите и wsdl-ите от OASIS, се оказа, че не са съвсем стандартни и даваха един куп грешки в XmlSpy. Когато ги оправих, което не беше лесно при условие, че за първи път виждам wsdl, използвах Axis2 за да генерирам web service-а. Всичко изглеждаше лесно, докато не открих, че axis2 има един куп грешки вътре, които трябваше да оправям на ръка, а класовете са бая. Тъкмо го оправих и написах доста от service-а и се оказа, че от apache са пуснали разни nightly builds на axis2, в които грешките са оправени. Започнах да използвам тях за да съм сигурен, че кода не е генериран грешно, но трябваше да променям бая от service-а. Въобще много приятна история.
Хубавото от всичко това разбира се е, че научих страшно много за web service-и, стандартите и проблемите, които могат са възникнат около тях. Освен това има надежда в някой момент това, което съм написал (с много ревизии и допълнения, разбира се) да влезе в официалния продукт или поне да се използва като концепция в тази насока. За мен остава опита, който в случая е най-важен.
Когато ми свършат изпитите този семестър, имам намерение да напиша и да допълня няколко статии в bg.wikipedia.com във връзка с онтологиите и семантичните мрежи. Докато пишех тази статия, забелязах че в българската версия има много малко по въпроса. Не съм специалист по въпроса, но поне ще сложа началото.
[tags]software ag, crossvision, centrasite, information integrator, neon, ontology, web service, axis2, jaxr, ebxml, owl, omv, oyster, soa, semantic web, семантични мрежи, онтологии, wikipedia[/tags]
SOA e budeshteto, dobre si se orientiral!
Много се радвам на AJAX и си го действам в свободното време, но в SOA има страшно много хляб и много по-малко хора разбират от такива системи. С AJAX се занимават много хора, но се получава като в ония виц за ООП и тинейджърския секс:
1. Всеки си мисли за него.
2. Всеки говори за него.
3. Всеки си мисли, че другите го правят.
4. Почти никой не го прави в действителност.
5. Тези които го правят, го правят неадекватно, мислят си, че следващия път ще е по-добре и не го правят безопасно.
С AXAJ се получава същото нещо сега, защото е новото „велико“ нещо. Също като ООП като преди бая години.
Настрана от грешките в обяснението за семантичните мрежи, ето една новина, която илюстрира колко им се отдава важност: . Дори ги наричат Web 3.0.
То за Semantic Web се говори от 10 години, и все си оставаме близо до говоренето и далече от една реална и дълбока промяна. Целият досега разработен фреймуърк на SW добавя малко към съществуващите технологии. Една онтология добавя малко към една XML схема или към една схема на DB.
Наистина, семантичната насока е бъдещето на Web, както и на информационните технологии въобще, но чак след още един цикъл на развитие, когато започне да се обхваща и смисъла на съдържанието, докато сега се занимаваме все още главно със структурата. RDF и OWL, тройките, не могат да направят революция, но могат да послужат като основа за следващо ниво, което да извърши революция във Web и IT, по-голяма от Web 3.0.
Основният проблем сега наистина е структурата, технологиите и най-вече стандартите. Няма още добре установени технологии, които да описват знанието. Говори се за онтологии, но OWL е нещо ново. Един от професорите ни по информатика каза, че допреди няколко години са разработвали система, която описвала онтологиите директно като java класове. XML обаче се наложил.
Това, което лисва сега е нещо аналогично на dns сървърите в сферата на онтологиите. Няма централни регистри за онтологии и web services и много малко фирми ги използват. Лоша е инфраструктурата. Това е проблем, защото semantic web за разлика от досегашните технологии, разчита на акумулирането на данни. Когато се достигне до една критична точка, данните стават полезни и системата ще работи както трябва.
Когато разбрах за sematic web и за тези неща като цяло малко се стреснах. Практически идеята е да се обучи машината да осмисля всичко в най-широкият смисъл на думата. Имаме начални нива на AI, но не можеше да се акумулират данни, за да е полезен в реалният живот. Сега това го има вече. Малко се плаша.
Нещо аналогично на dns-сървърите в сферата на онтологиите няма, но нещо като google има – .
В момента си разработвам нещо, и когато стане, ще може да се използва и като dns-сървър. Става дума за огромен каталог на всякакви неща, или на ресурси, както ги нарича RDF. Но лошото е, че такъв каталог е много по-голям и много по-сложен от един списък на web-адреси, каквото представлява dns-сървъра. Всеки ресурс трябва най-малкото да получи URI, да се определи типа му (типовете му), да се определят имената му на различни езици (поне на английски). Източниците на информация са много, но рядко са структурирани добре, и разбира се, всеки е структуриран по различен начин. Английската Wikipedia има над 2,000,000 статии за всякакви неща, но е нужна много допълнителна работа за да се постигне прецизност, подходяща за SW. DBLP ) – за книги и публикации, към 1,000,000 позиции; freedb (http://www.freedb.org/) – за музикални албуми, към 2,000,000 позиции; geonames (http://www.geonames.org/) – за географски обекти, над 6,500,000 позиции; imdb (http://www.imdb.com/) – за филми и артисти, над 1,000,000 филма; Musicbrainz (http://musicbrainz.org/) – за музикални албуми, над 500,000 албума; и много други.
Може би най-големият проблем с технологиите на SW е, че не е много ясно какво им е семантичното. „Семантика“ е понятие от лингвистиката, тоест науката за естествените езици. А в технологиите на SW не се говори нищо за естествените езици. За да се говори за семантика, тоест за смисъл, трябва да има и дума или изречение или текст, които да имат смисъл. Вместо това, в RDF, OWL, SPARQL и OMV се говори за ресурси, URI-та и графове. Е, един ресурс може да се приравни на една дума (един термин), една тройка може да се приравни към едно просто изречение, а един граф може да се приравни към едно сложно изречение, но май (почти?) никой не разглежда нещата така. На практика сега технологиите на SW се използват като технологии за изграждане на бази данни във Web. Нещо което може да се свърши и от XML.
За да изградим наистина семантичен Web, трябва смисълът зад думите, изреченията и текстовете в Web-страниците, който сега присъства индиректно (представен само от побуквен стринг, който трябва да четем с очите си и да тълкуваме), да се вкара явно в Web – като URI-та организирани в структури, подходящи за представяне на смисъла на фактите, събитията, съобщенията и т.н. Най-общо, това е структура, в която явно се представят действието, извършителя, мястото, времето и други смислови съставки на изреченията и текстовете.
Та, с тези неща се занимавам в момента.
Значи с две думи правиш регистър базиран на RDF с интернационална поддръжка. Ще ти препоръчам безплатната версия на CentraSite на Software AG – як reg/rep с доста възможности.
Идеята на семантичните WS е да описват действието на истинските WS. Трябва до такава степен да разбият аксиомите ни, че машините да ги разберат. Затова се използват и онтологии и не може да не се съгласиш, че има достатъчно мощни reasoner-и, които да си вадят широки изводи от тях.
Ясно е, че не става дума за семантика в смисъла на нашите езици, но метафората с изреченията е добра. Машината няма да разбере смисъла, но може да я накараш да си изкарва изводи на достатъчно висока абстракция, че да не си личи. Prolog или Flogic. Въпрос на време е да се разработят достатъчно много онтологии, които описват определен subset на познанието, за да можем да си говорим с машината на почти свободен език. И тук нямам в предвид онези предварително записани отговори.
Може ли да ми пратиш твоя емайл или друг начин за контакт.