Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / docx53 / note - 7.docx
Скачиваний:
31
Добавлен:
01.08.2013
Размер:
457.93 Кб
Скачать

Заключение

Предоставленное решение импонирует своей простотой и качеством исполнения, подход к реализации и гибкое использование современных технологий в разработке красиво вписываются в общую картину проекта. Однако есть множество векторов развития предоставленного пакетного менеджера для увеличения удобство разработчиков при работе с ним:

  1. Изменение способа хранения информации о пакетах, на данный момент это формулы представляющие собой python-модули, как оказалось это не самый удобный способ, есть ряд причин по которым на данный момент кажется наиболее удачным переход на json, одна из причин и наверное наиболее неудобная это необходимость прописывать переменную окружения PYTHONPATH на директорию где лежат формулы.

  2. Добавление возможности автоматического разрешения зависимостей устанавливаемого пакета.

  3. Отказ от использования пакета GitPython, в пользу непосредственного вызова команд git’a напрямую или написать легкую обертку для этого.

Приложение А. Расчетная работа

  1. Условие расчетной работы

Трансляция freebase, wikidb в scs.

  1. Анализ используемых технологий

WikiDBрасширение MediaWiki, которое используется для добавления в wiki функционал баз данных. Основной принцип WikiDB – работа с данными в wiki-стиле. Данные представляют в контексте веб-страниц, процесс их изменения происходит в том же стиле, и, как, например, вы можете указывать ссылки на несуществующие страницы, так же вы можете добавлять данные в несуществующие таблицы, есть возможно представления данных без запросов определенной формальной структуры.

При создании таблицы, вы в любом случае получаете фиксированные требования по заполнению полей, разрешены лишь определенные типы данных, объявление псевдонимов для полей, легкую отладку проблем с добавлением данных несоответствующих типов. Изменение определения поля сразу же обновляет все способы вывода информации в вики, хзотя сама информация остается неизменной. Это значит, что изменение данных о самих таблицах (table schemes) никак не скажется на хранимых данных.

Так как WikiBD позволяет определять данные на любой странице, данные могу храниться непосредственно вместе со связанными статьями. Это существенно облегчает поиск.

Рассмотрим пример внедрения БД контекста в wiki-страницы, чтобы показать, насколько это доступно и просто.

Допустим, у нас есть Template:Infobox элемент. В стандартной вики-разметке задаваться он будет следующим образом:

{{Infobox company

|name=Microsoft

|founded=1492

|revenue=$8

}}

Что дает нам вот такой результат:

Но если добавить эти данные в БД, то отображать их можно будет следующим образом:

<data table="Companies" template="Infobox company">

name=Microsoft

founded=1492

revenue=$8

</data>

И результат останется прежним:

Только сопровождать такою систему будет значительно проще.

Freebase — большая коллаборативная база знаний, содержащаяметаданные, собранные, в основном,сообществом. Этоонлайн коллекция структурированных данных, собранных из множества источников, например, отдельныхвики-проектов. Целью Freebase является создание глобального ресурса, который позволит людям (и машинам) иметь более эффективный доступ к общеизвестной информации. Разрабатывается американской софтверной компаниейMetawebи работает публично с марта 2007.

Freebase содержит более 23 млн. статей на момент написания записки по курсовому проекту, чтобы узнать актуальное число статей, посетите сайт проекта. В базе содержится более сотни миллионов фактов о всех предметах статей.

Freebase является частью Semantic Web.

Технологии используемые Freebase: MQL, Freebase API Reference,RABJ,RDF.

Работа с Freebase строится через использование библиотек, которые, к счастью, написаны под все популярные платформы:

  • JavaScript

  • Flash

  • Python

  • Perl

  • PHP

  • Ruby

  • Clojure

  • Java

  • .Net

  • Objective-C

Пример кода для запроса информации об альбомах, используя Python:

import freebase

freebase = freebase.HTTPMetawebSession("api.freebase.com")

albums_by_bob = [{'type':'/music/album',

'artist':'Bob Dylan',

'name':None }]

for album in freebase.mqlreaditer(albums_by_bob):

print album["name"]

Для данного примера возврат данных возможен в JSON и др.

  1. Подходы к решению задачи

Трансляция исходных текстов статей в форматах, предоставляемых WikiDB и Freebase в SCs представляет нетривиальную задачу.

Для начала требуется дать определение трансляции и транслятору.

Трансля́тор — программаили техническое средство, выполняющее трансляцию программы.[5]

Трансляция программы — преобразование программы, представленной на одном из языков программирования, в программу на другом языке и, в определённом смысле, равносильную первой.

Транслятор обычно выполняет также диагностику ошибок, формирует словари идентификаторов, выдаёт для печати тексты программы и т. д.

Язык, на котором представлена входная программа, называется исходным языком, а сама программа — исходным кодом. Выходной язык называется целевым языком илиобъектным кодом.

В общем случае понятие трансляции относится не только к языкам программирования, но и к другим языкам — как формальным компьютерным(вродеязыков разметкитипаHTML), так иестественным(русскому,английскомуи т. п.).

Так как работа будет в большинстве своем состоять в обработке строковых данных и преобразовании их в строковых семантический код, инструментарий должен быть подобран в расчете на удобную работу со строками. Такое удобство предоставляет Python с обширным набором библиотек. Кроме того, многие другие модули проекта OSTIS написаны на Python, следовательно, поддержка транслятора будет значительно проще.

Возможно использование следующих пакетов при построении транслятора:

  • re

  • struct

  • difflib

  • stringIO

  • textwrap

  • codecs

  • unicodedata

  • stringprep

  • fpformat

  1. Заключениие

Трансляция исходных кодов Freebase и WikiDB в SCs – задача нетривиальная и требующая вдумчивого подхода. Реализация желательна на высокоуровневом языке с предоставлением удобного инструментария для работы со строковыми данными.

Соседние файлы в папке docx53