Monthly Archives: October 2010

Semantic Web на .NET

Не зря я последний месяц почитывал разные вещи про онтологизирование и про Semantic Web в частности. Похоже, в одном из проектов это пригодится.

А значит пора выбирать инструменты. Нужен triple-store и движок запросов к нему. Всё это должно вставать на Windows Server 2008 R2 и иметь интерфейс для .NET. Еще желательно чтобы бесплатно или за не сильно большие деньги.

Технология глубокого гугления дала следующие результаты.

 

http://code.google.com/p/linqtordf/

«LinqToRdf is a Semantic Web framework for .NET. It provides an easy way to integrate Semantic Web queries into your software. At the core of the system sits a LINQ query provider (like LINQ to SQL) that converts your queries into the SPARQL query language. You don’t have to know that much SPARQL or RDF to be able to use it. It also provides a UML-style design surface allowing you to create RDF files, and to generate compatible C# code to work with the RDF.

It provides developers with an intuitive way to make queries on semantic web databases. The project has been going for a year and it’s starting to be noticed by semantic web early adopters in the .NET community. LINQ provides a standardised query language and platform enabling any developer to understand systems using semantic web technologies via LinqToRdf. It will help those who don’t have the time to ascend the semantic web learning curve to become productive quickly.»

«LinqToRdf uses the SemWeb.NET framework by Joshua Tauberer, which provides a platform for working with OWL and SPARQL. It also uses the .NET 3.5 namespace System.Linq which will be released as part of Visual Studio .NET 2008.»

Интересная разработка.

 

http://www.intellidimension.com/products/semantics-platform/

«Semantics Platform is a family of products for building medium and large scale semantics-based applications using the Microsoft .NET framework. It provides semantic technology for the storage, services and presentation layers of an application.

  • RDF Data Storage
  • SPARQL Query and Inference Rule Processing
  • Class libraries for the Microsoft .NET Framework
  • Microsoft SQL Server Support
  • Microsoft ASP.NET Web Components
  • Microsoft Silverlight Libraries
  • Developer Tools»

Со слов разработчика: «We just pushed out the v2.0 of our Semantics Platform. It’s a complete product family built on the .NET Framework for loading, storing, query and reasoning on small or very large sets of RDF data. We offer a storage solution built on SQL Server that supports SPARQL and reasoning or our distributed store that can be deployed across multiple servers in a cluster.

We offer a free evaluation to any of the technology and a free express edition for the core RDF .NET libraries that include all the parsers, streams, SPARQL and inference rule processing. The express edition is actually quite powerful since it contains all the core SPARQL processing algorithms that are in our high-end products. The express edition also contains some visual development tools to make it simple to load RDF data and query it.»

Пожалуй, самая зрелая Semantic Web платформа для .NET. Но стоит денег :)

 

http://razor.occams.info/code/semweb/

«SemWeb.NET is a Semantic Web/RDF library written in C# for Mono or Microsoft’s .NET. The library can be used for reading and writing RDF (XML, N3), keeping RDF in persistent storage (memory, MySQL, etc.), querying persistent storage via simple graph matching and SPARQL, and making SPARQL queries to remote endpoints. Limited RDFS and general-purpose inferencing is also possible. SemWeb’s API is straight-forward and flexible.»

«SemWeb is used in ROWLEX, F-Spot (Gnome photo management), Beagle (Gnome desktop search) for its experimental RDF access layer, and (at least at one time) Sentient Knowledge Explorer (a commercial data visualizer).»

«SemWeb was first released in June 2005 and has been more recently tested with triple stores of over 1 billion statements»

Интересная вещь. Позволяет в т.ч. сесть на SQL Server.

 

http://rowlex.nc3a.nato.int/

«ROWLEX is a powerful open source toolkit for software developers. It has been built to simplify the use of fundamental semantic web technologies (RDF and OWL) under Microsoft’s .NET platform.
ROWLEX stands for Relaxed OWL EXperience. That is exactly what it is. It allows programmers to create and browse RDF documents while keeping the focus on the business objects. It abstracts away the level of RDF triples and elevates the level of the programming work to (OWL) classes and properties. ROWLEX opens the way to experience the beauty of the open world assumptions within the reliable .NET environment.»

Похоже что это нечто для работы с данными в RDF как с custom business objects, позволяя сконвертить схему в библиотеку классов .NET.

 

http://sourceforge.net/projects/dotsesame/

«The dotSesame project is a C# port of the Sesame project, which is originally written in Java. It is an open source RDF database with support for RDF Schema inferencing and querying. Full documentation of Sesame can be found at http://www.openrdf.org/»

«Sesame is an open source RDF framework with support for RDF Schema inferencing and querying. Originally, it was developed by Aduna (then known as Aidministrator) as a research prototype for the EU research project On-To-Knowledge. Now, it is further developed and maintained by Aduna in cooperation with NLnet Foundation, developers from Ontotext, and a number of volunteer developers who contribute ideas, bug reports and fixes.

Sesame has been designed with flexibility in mind. It can be deployed on top of a variety of storage systems (relational databases, in-memory, filesystems, keyword indexers, etc.), and offers a large scala of tools to developers to leverage the power of RDF and RDF Schema, such as a flexible access API, which supports both local and remote (through HTTP or RMI) access, and several query languages, of which SeRQL is the most powerful one.»

Смущает природа проекта. Порт с Java на .NET – думаю, не лучшая идея.

 

http://virtuoso.openlinksw.com/

«Virtuoso is an innovative enterprise grade multi-model data server for agile enterprises & individuals. It delivers an unrivaled platform agnostic solution for data management, access, and integration.

The unique hybrid server architecture of Virtuoso enables it to offer traditionally distinct server functionality within a single product offering that covers the following areas:

  • Relational Data Management
  • RDF Data Management
  • XML Data Management
  • Free Text Content Management & Full Text Indexing
  • Document Web Server
  • Linked Data Server
  • Web Application Server
  • Web Services Deployment (SOAP or REST)»

Эта штука, похоже, умеет очень многое, явно больше того, что мне нужно. Но стоит ну очень приличных денег. Давно я не видел софт, который за unlimitied лицензию на один сервер требует 160 000 долларов :)

 

Этот пост больше для себя, чтобы собрать цитаты и ссылки и ничего не забыть. Но может кому-то из моих коллег тоже будет полезно.

 

Павел Сурменок

http://surmenok.ru/

 

Уход в облака

Ray Ozzie, недавно покинувший пост главного архитектора Microsoft, написал в блоге о том, куда IT-индустрия идёт: http://ozzie.net/docs/dawn-of-a-new-day/

Идёт она давно и верно в облака.

 

«Instead, to cope with the inherent complexity of a world of devices, a world of websites, and a world of apps & personal data that is spread across myriad devices & websites, a simple conceptual model is taking shape that brings it all together.  We’re moving toward a world of 1) cloud-based continuous services that connect us all and do our bidding, and 2) appliance-like connected devices enabling us to interact with those cloud-based services.»

 

Что-то, однако, такой подход, когда всё в облаках, душу не греет. По двум причинам: privacy и надежность.

 

Но, если подумать, то с надежностью не всё так плохо, как кажется. На той стороне риск каких-то происшествий, приводящих к out of service или к потере данных, достаточно мал, если выбирать серьезного облачного провайдера.

Остаётся риск проблем с интернет-соединением. Но это уже не такая проблема, как раньше. В США, как я понимаю, практически все места, где есть люди, покрыты сетями 3G и WiMAX, а с проводным интернетом так и вовсе никаких сложностей. В России и других странах третьего мира всё куда хуже, но по-тихоньку подтягиваются. В достаточно крупных российских городах (уровня Красноярска) хороший проводной интернет уже есть наверное везде, но с мобильной связью  достаточно туго: покрытие 3G, не говоря уже о WiMAX, оставляет желать лучшего.

Проблемы надежности, пожалуй, можно откинуть. Отсутствие интернета в наше время – такой же форс-мажор, как и отключение электричества :)

 

А вот что делать с безопасностью – не ясно :( Облако могут поломать. Или оно может само куда-то слить ваши данные, хотя бы государственным службам. А иногда облако может дотянуться до вашего железа и, скажем, стереть с вашего iPhone какую-нибудь программу или данные. Что, естественно, мало кого устроит.

 

Павел Сурменок

http://surmenok.ru/

 

LINQ

В данный момент я руковожу несколькими проектами на платформе .NET. Давно я не писал о разработке. Технологии разработки ПО за последние годы серьёзно развились.

Чего только стоит Microsoft LINQ. Эта штука – фактически язык запросов для данных, независимо от их источника. Можно и для БД применять (это LINQ to SQL), можно для XML, можно для списков/массивов. На днях пришлось накидать простенькую софтину на пару сот строк кода, и для работы с данными (который в БД SQL Server 2008 лежат) решил применить LINQ. Ниже кусочек кода:

using (DataClassesDataContext dc = new DataClassesDataContext())

{

dc.Names.InsertAllOnSubmit(names

.Where(n => n != “”)

.Distinct()

.Except(dc.Names.Select(n => n.Title))

.Select(n => new Name() { Title = n }));

dc.SubmitChanges();

}

Здесь я беру string[] и закидываю эти данные в БД, для каждого элемента массива создавая отдельную строку в таблице Names. При этом тут же делается проверка на уникальность, как в исходном массиве (если строка в массиве встречается дважды, то обрабатывается только один раз), так и в БД ( если в таблице уже есть строка с таким значением в поле Title, то я её не добавляю). Также проверяем на то, что строка не пустая.

Просто, кратко и удобно. На всё 10 строк простого хорошо читаемого кода.

С решениями Microsoft приятно работать.

Павел Сурменок

http://surmenok.ru/

Об iPhone

Много разговоров про Apple и её продукцию. В т.ч. недавняя серия постов в блоге http://dz.livejournal.com/ (там в данный момент как раз идёт мегасрач в комментах :) ).

http://dz.livejournal.com/606046.html

http://dz.livejournal.com/606431.html

http://dz.livejournal.com/606914.html

http://dz.livejournal.com/607059.html

 

«Вспомнилось, как одну даму спросили, где хранится текст, который мы выделили мышкой и нажали copy, но перед тем, как нажали paste.

- “Конечно в мышке!“, – сказала она, посмотрев на вопрошающего как на идиота.

Вы реально не представляете себе уровень юзеров.»

 

В целом из этих дискуссий выходит, что Apple целит в неграмотных пользователей.

Такому пользователю не нужен буфер обмена – он реально не понимает, для чего он и как им пользоваться. Ему не нужны файлы – он не понимает такую абстракцию. Ему много чего не нужно.

 

Но вот чего я не понимаю: зачем все эти возможности  Apple блокирует вовсе?

Подход Android, на мой взгляд, более здравый: http://dz.livejournal.com/606914.html?thread=12383426#t12383426

Android даёт людям удобно и без напряжения мозга делать простые вещи: позвонить, СМС отправить, календарь, музыка, фото и прочее. Но при этом не закрывает более хитрые возможности.

Я сам пользуюсь HTC Desire. И меня радует, что скажем нет ограничения на интерфейсы. Я телефон к компьютеру вообще не подключаю шнурком. Всё через мобильный интернет и WiFi (причём сеть WiFi он сам нашел и подключился). Программы с маркета качаются через интернет. Файлы тоже сливаются с интернета. Без лишних ограничений. Даже OS телефон обновил сам, без подключения к компьютеру.

 

Еще любопытно будет на Win Phone 7 глянуть. Но судя по обзорам, они ближе к Apple :( Например, софт можно только из маркетплэйса ставить, каждая программа в своей песочнице, а при разработке софта для связи с серверам даже сокеты недоступны. Поурезали всё, что можно. Но маркетинг могуч, видимо продавят  платформу. Да и по UI, говорят, приятен весьма.

 

Павел Сурменок

http://surmenok.ru/

 

Ian Alexander

Искал, что же хорошего почитать об инженерии требований. И нашел.

На международной конференции по проблемам системной инженерии RuSEC 2010 в Москве присутствовал Ian Alexander, уже не один десяток лет занимающийся проблемами инженерии требований. Жаль, что я не смог поприсутствовать на конференции, потому что судя по слайдам, доклад был замечательный.

На сайте Яна можно найти его публикации.

А еще он автор трёх книг о требованиях: Writing Better Requirements (2002)Scenarios, Stories, Use Cases (2004)Discovering Requirements (2009). Их можно без проблем найти в интернете. Я сейчас читаю последнюю, надо сказать, очень полезно и практично.

 

Павел Сурменок

http://surmenok.ru/