Semantic Web (он же Web of Data, Linked Data, Linking Open Data) — это направление развития Всемирной паутины, позволяющее машинам не только отображать информацию в интернете, но и понимать ее смысл.



Несколько лет назад Semantic Web вырвался за пределы исследовательских лабораторий и стал достоянием широкого круга разработчиков. К сожалению, в русскоязычном сообществе SW распространен пока слабо. Мало русскоязычных наборов данных. Мало приложений, которые с ними работают.

Одна из причин — отсутствие на русском языке полноценного открытого обучающего материала. Есть хорошие узкоспециализированные статьи. Есть хорошие обзоры. Но нет систематического обучающего курса.

Мы с коллегами из ИТИС КФУ при поддержке Computer Science клуба и сообщества SWUG решили сделать такой курс, который я хочу представить хабралюдям. Он состоит из шести частей:

  1. Введение в семантику и Semantic Web;
  2. Формат представления данных RDF;
  3. Формальные онтологии;
  4. Язык описания онтологий OWL;
  5. Язык запросов SPARQL;
  6. Semantic Web в дикой природе: популярные ресурсы, онтологии и сервисы.

Я решил оформить курс не в виде сплошного текста, а виде слайдов с примерами и картинками. Надеюсь, его будет интереснее читать, чем традиционные учебники. (См. ответ на замечание ivanych относительно выбора формата).

Смотрите первые две части под катом.

Часть I. Введение в семантику и Semantic Web
Показать оглавление
  1. Мотивация Semantic Web: семантический поиск, интеграция данных, логический вывод, интеллектуальные агенты;
  2. Введение в семантику: язык, знак, семантика, денотат, концепт, формальная, явная и неявная семантика, метаязык;
  3. Семантика во Всемирной паутине и в Semantic Web;
  4. Технологии Semantic Web: RDF, OWL, SPARQL.

Скачать в PDF.

Часть II. Формат представления данных RDF
Показать оглавление
  1. Ресурс;
  2. URI;
  3. Триплет;
  4. RDF-граф;
  5. Облако Linked Data;
  6. Ресурс, задаваемый по URI;
  7. Анонимный ресурс (blank node);
  8. Литерал;
  9. RDF-классы;
  10. Реификация;
  11. Контейнеры и списки;
  12. Форматы сериализации RDF: RDF/XML, N-Triples, Turtle, Microdata.

Скачать в PDF.

Буду рад ответить на любые вопросы.

Подпишитесь на наш блог на «Хабре», чтобы не пропустить следующие части курса.
Хочу поблагодарить Сергея shcherbak Щербака (КрНУ), Павла klextor Клинова (Universitat Ulm) и Наталью Кеберле (ЗНУ) из сообщества SWUG за ценные замечания, а также коллег из ИТИС и ребят из Computer Science клуба за поддержку.
Курс доступен по свободной лицензии Creative Commons Attribution-ShareAlike.

Комментарии (42)


  1. iradche
    25.05.2015 16:56
    +1

    Спасибо большое, Алик!

    Было бы здорово портировать этот курс на платформу SlideWiki: slidewiki.org
    Тем более, что эта платформа использует Linked Data (вот здесь можно узнать об этом больше: slidewiki.org/documentation/#tree-618-slide-17295-2-view).


    1. Alik_Kirillovich Автор
      25.05.2015 17:21
      +1

      Спасибо за идею! Про SlideWiki я, конечно, знаю. Особенно приятно, что ее ведущий разработчик — наш человек, Дарья Тарасова. Но сделать курс на SlideWiki, я, действительно, не догадался. Попробую перенести его туда. Единственная проблема, «Хабр» поддерживает слайды только со SlideShare.


  1. nzhiltsov
    25.05.2015 18:10
    +1

    Алик, отлично! Интересно, будут ли в курсе раскрыты следующие практические темы:

    • Крупнейшие базы знаний типа Google Knowledge Graph (Freebase), Microsoft Satori, Facebook Open Graph, WikiData — их структура и примеры использования
    • Применение технологий Semantic Web для Search Engine Optimization (SEO).


  1. ivanych
    25.05.2015 21:09
    +2

    Почему слайды-то? Это же профанация. Нужно внятное последовательное изложение — текст, а не картинки.


    1. Alik_Kirillovich Автор
      26.05.2015 10:07

      Михаил, спасибо за замечание. Действительно, я выбрал несколько необычный формат, поэтому нужно было более подробно пояснить его выбор.

      Слайды сами по себе никак не связаны с последовательностью изложения — вопрос в том, что на них содержится. Традиционно, слайды используют как дополнительный материал к устному выступлению докладчика. Разумеется, такие слайды в отрыве от устной речи связанного изложения не содержат. Но слайды из данного курса полностью самостоятельны. Они уже содержат последовательное изложение без всякого докладчика.

      Если какие-то конкретные моменты кажутся непонятными — скажите, буду рад их доработать.


      1. ivanych
        26.05.2015 10:19
        +2

        Извиняюсь, был напуган. В файлах PDF нормальный текст, не картинки.


  1. allter
    25.05.2015 21:27
    +2

    Очень хотелось бы, услышать о том, что реально нового-хорошего достигнуто в SW за последний год-два.

    В своё время очень интересовался SW как пользователь, но, насколько я смог в итоге рассудить, SW «завис» на сценарии использования «Пролог с функцией позднего связывания для использования в университетах и в специализированных базах знаний». Т.к. в SW так и не появилось элементов, присущих той степени децентрализованности, которая присуща реальному миру, где информация у различных поставщиков может быть противоречива и неполна. ( К примеру, когда я интересовался, в SW не было стандартной возможности выразить отрицание факта ). Соответственно, очень хотелось бы узнать, что было сделано «Web-ного» в SW за последнее время.


    1. nzhiltsov
      25.05.2015 23:19
      +2

      Вы не поверите, но вы во всю пользуетесь Semantic Web: во-первых, это разметка schema.org, которая распознается всеми ведущими поисковиками. А также Google Knowledge Graph: виджет справа на странице поисковых результатов не что иное как реализация entity search over Web of Data. Просто в последнее время, особенно в индустрии, сделан ребрендинг этой темы на более практичные сценарии под маркой Web of Data. Google, который многое сделал для извлечения надежных фактов полуавтоматическими методами, анонсировал вложить Freebase в WikiData.

      Если говорить про ядровой SW, то мощно развивается RDF triple store Stardog, которая имеет хорошие возможности логического вывода и становится по сути уже отраслевым стандартом. Основное применение эти возможности находят в domain-specific applications типа медицинского IT.


      1. nzhiltsov
        25.05.2015 23:37
        +1

        Наконец, в смысле исследований отдельное интересное направление сейчас — это Machine Learning with Knowledge Graphs. Это попытка снизить выразительность логического вывода в угоду масштабируемости (основная проблема при reasoning) тоже находит свои практичные применения. Кому интересно, могу описать это здесь в блоге на русском языке.


        1. klextor
          28.05.2015 11:14

          Пиши, конечно. ML уже появился у нас в roadmap на Stardog 4+. Правда не в топе приоритетов пока.


        1. klextor
          28.05.2015 11:32
          +2

          Единственное что, ML (на knowledge graphs или на других данных) — это не попытка выиграть масштабируемость за счет выразительности. Для этого есть специальные «легковесные» подмножества OWL, т.н. profiles (OWL EL, OWL QL, OWL RL). Они имеют полиномиальную сложность и отлично масштабируются для своих задач (например, data complexity для запросов в OWL QL аналогична SQL). Выразительности там немного.

          ML интересен потому что сами основы вывода другие. Логика становится индуктивной т.е. из больших наборов данных выводятся некие знания, например, предсказания как в докладе в твоем блоге, которые дедуктивно, как в стандартных логиках, оттуда никак не следуют, какая бы масштабируемость ни была.

          PS. Только не путать индуктивную логику с мат. индукцией. Смысл термина «индукция» у них абсолютно разный.


          1. nzhiltsov
            28.05.2015 15:40

            Да, согласен. Просто для краткости завернул в основную проблему DL reasoners и мотивацию применения ML (об этом те же авторы RESCAL пишут). Но так — да, link prediction & knowledge discovery.

            По поводу ML в Stardog — очень интересно, good to know! Вы в Stardog — молодцы, конечно, что следите за трендами. Проблема Virtuoso в том, что они как-то остановились на каком-то этапе развития. Ну и хаос в их документации, конечно…


      1. ru7701
        31.05.2015 00:49

        Это ведь не ответ на заданный вопрос. Понятно, что что-то где-то работает, но идея графовых СУБД кажется достойна куда большего. Нужны совсем другие темпы развития (SW-энтузиасты вообще согласны с этим?). Так что, ниже по ветке вынужден повторить вопрос.

        зы. Полностью согласен про необходимость «стандартной возможности выразить отрицание факта».


        1. nzhiltsov
          31.05.2015 18:30
          +1

          Хм, вы странно формулируете. Я не знаю, кто с чем согласен, но убежден, что SW community — это все мы. Хотите, что бы область быстрее развивалась — участвуйте, предлагайте, создавайте. Голой критикой делу не поможешь.


          1. ru7701
            31.05.2015 22:53

            Если честно, то вопрос вызван тупо информационным голодом по поводу происходящего с SW. Реально интересно, что успели доделать, каковы тренды. Кстати, есть у русскоязычного сообщества SW какие-то сайты, форумы, новостные ленты?

            Сам то я давно уже пилю некий аналог RDF.
            Там:
            — не будет идеи дополнительного слоя над интернетом: предполагается создание централизованного ресурса-базы
            — не будет возможность в одном файле фиксировать структуры из многих триплов: один трипл = один файл/id + индексация
            — не будет blank_nodes
            — предикатом может быть литерал
            — списки будут устроены много проще и их идентификаторы могут напрямую быть указаны в роли object.
            — триплы можно будет активировать и деактивировать (почти «возможность выразить отрицание факта»)
            — изменения будут прикрепляться к юзерам-авторам
            — весь синаксис будет самым простым
            — будет REST-API ввода/вывода триплов
            — будет оптимизация под новую бизнес-модель дающую semantic-кодерам коммерческие преимущества
            и т.д.

            Это все ответ на фундаментальные слабости RDF. Просто странно, что приходится этим заниматься. Обычно действующие стандарты закрывают все повседневные потребности.


  1. maxstroy
    26.05.2015 09:32
    +1

    Спасибо огромное за труд! Однако, я столкнулся с ограничениями OWL. И это ограничение пока не разрешили ни наши сотрудники, ни сторонние помощники. Терзает меня чувство, что OWL — промежуточный этап в понимании онтологического моделирования. Задача же была такая: как описывать группы объектов? например: половина объектов данной группы белого цвета. Или распределение по значениям параметра «высота» такое: и далее ссылка на распределение.


  1. maxstroy
    26.05.2015 10:50

    солнце воздух и вода — укрепляют организм. Моделирования этого тезиса в OWL сводится к трем тезисам. ОДнако, в реальности — это один тезис. Причина в том, что в OWL рассматриваются только триплеты. Но в реальности надо иметь возможность строить более сложные конструкции (тапплы). ИМХО.


    1. Alik_Kirillovich Автор
      26.05.2015 11:28
      +1

      Марк, спасибо за комментарии!

      Но в этом вот комментарии вы не совсем правы.

      1.

      Причина в том, что в OWL рассматриваются только триплеты. Но в реальности надо иметь возможность строить более сложные конструкции (тапплы).
      В OWL вообще нет понятия триплета, есть только аксиомы (триплет — это понятие RDF). А аксиомы могут связывать любое количество сущностей. Например аксиома о том, что класс «мать-одиночка» эквивалентен пересечению трех классов: класса «женщина», класса «не имеющий мужа» и класса «имеющий больше трех детей».

      2.
      солнце воздух и вода — укрепляют организм. Моделирования этого тезиса в OWL сводится к трем тезисам. Однако, в реальности — это один тезис.
      Не совсем понял, что вы имеете в виду.

      Если солнце, воздух и вода укрепляют организм по отдельности и независимо друг от друга, то это и нужно выразить с помощью трех отдельных аксиом. Если очень грубо, то что-то типа: 1. «солнце» относится к классу «укрепляющая субстанция», 2. «воздух» относится к классу «укрепляющая субстанция» и 3. «вода» относится к классу «укрепляющая субстанция».

      Если организм укрепляет смесь, то надо для этой смеси определить отдельную сущность. Эта сущность будет относиться к классу «укрепляющая субстанция» и находится в отношении часть-целое к «солнцу», «воздуху» и «воде» соответственно.

      В любом случае, не вижу никаких проблем с тем, чтобы это выразить на OWL.


      1. maxstroy
        26.05.2015 13:38
        +1

        Я могу еще раз повторить, что я снимаю шляпу перед Вашим трудом? Спасибо Вам за ответ. Действительно белое пятно в образовании, которое надо закрывать. Поэтому ошибки в терминах.

        В онтомоделировании можно описать многое, но кое-что все-таки мне не удается. Например, я хочу связать именно три сущности в одном предложении, а не разделять предложение на дублирующие части. Или формально я хочу рассматривать не только связи между двумя сущностями, но и связи между сущностями в количестве больше двух. В книге www.brunel.ac.uk/~cssrcsp/BusObj.pdf такие объекты названы тапплами.

        и мне бы хотелось моделировать свойства группы объектов. Например, я хочу сказать, что объекты данной группы имеют вот такое распределение по скоростям, например.


        1. maxstroy
          26.05.2015 13:44

          Возможно, мои вопросы вызваны плохим знанием стандарта.


          1. Alik_Kirillovich Автор
            28.05.2015 04:17
            +1

            Я могу еще раз повторить, что я снимаю шляпу перед Вашим трудом? Спасибо Вам за ответ. Действительно белое пятно в образовании, которое надо закрывать. Поэтому ошибки в терминах.
            Марк, еще раз спасибо за теплый отзыв. Постараюсь ответить по порядку в меру своих сил.

            Однако, я столкнулся с ограничениями OWL. И это ограничение пока не разрешили ни наши сотрудники, ни сторонние помощники. Терзает меня чувство, что OWL — промежуточный этап в понимании онтологического моделирования. Задача же была такая: как описывать группы объектов? например: половина объектов данной группы белого цвета. Или распределение по значениям параметра «высота» такое: и далее ссылка на распределение.

            1.
            OWL не предназначен для подобного рода утверждений. OWL описывает концептуальные модели, а не произвольные научные теории.

            Пример: OWL-онтология определяет, что мать-одиночка — это женщина без мужа с тремя и более детьми. А также, что ей причитается пособие. Но не определяет формулу для вычисления этого пособия.

            Для описания произвольных теорий существуют более выразительные формализмы, например Semantic Web Rule Language или просто логика первого порядка.

            «Ограниченность» OWL — это не баг, а фича. Благодаря своей «ограниченности» OWL обладает свойством разрешимости. Т.е. машина может автоматически осуществлять логический вывод.

            2.
            Тем не менее, условие «половина объектов данной группы — белого цвета» в OWL смоделировать можно.

            Я могу ошибиться в деталях, но идея примерно такая:

            1. Класс шаров разбивается на два непересекающихся подкласса: белые и небелые.
              EquivalentClasses(
                :Ball
                ObjectUnionOf( :WhiteBall :NonwhiteBall  )
                )

              DisjointClasses( :WhiteBall :NonwhiteBall )

            2. Каждый белый шар связан свойством r с одним черным шаром и наоборот.
              InverseFunctionalObjectProperty(:r)

              SubClassOf( 
                 :WhiteBall
                 ObjectExactCardinality( 1 :r :NonwhiteBall )
               )

              SubClassOf( 
                 :NonwhiteBall
                 ObjectExactCardinality( 1 :r :WhiteBall )
               )
              Отсюда видно, что если число шаров конечно, то количество белых, действительно, составляет ровно половину.

            3. Для того, чтобы это работало на практике, нужно определить класс шаров, явно перечислив его элементы. А также, указать, что все шары отличны друг от друга.
              EquivalentClasses(
                :Ball
                ObjectOneOf( :ball1 :ball2 :ball3 :ball4 :ball5 :ball6)
              )

              DifferentIndividuals( :ball1 :ball2 )
              DifferentIndividuals( :ball1 :ball3 )
              ...

              Без этого, грубо говоря, будет непонятно, сколько всего шаров, и от какого количества считать половину.

            Возможно, «распределение по скоростям» можно смоделировать похожим образом. Но еще раз повторю, даже если OWL справляется с решением этой задачи, предназначен он для решения других задач.


        1. klextor
          28.05.2015 07:00
          +1

          Во-первых, в OWL действительно можно выразить не все. Это тривиально следует из того, что OWL DL — подмножество логики первого порядка (более того — разрешимого фрагмента FOL). Соответственно, все что невыразимо в FOL, невыразимо и в OWL. Кроме того, есть известные конструкции, выразимые в FOL, но невыразимые в OWL, например, ограничения кардинальности на транзитивных свойствах.

          Во-вторых, не совсем справедливо утверждать что в OWL рассматриваются только триплеты (это так в RDF). Связь OWL и RDF несколько сложнее, чем обычно объясняется в курсах (я пока не читал как Алик ее объяснял). Обычно n-арные отношения выражаются через реификацию, т.е. промежуточные сущности для представления аксиом. Подробнее можно почитать здесь:

          Defining N-ary Relations on the Semantic Web


          1. maxstroy
            28.05.2015 07:07

            Спасибо! Но есть еще одна проблема, с которой я столкнулся — это переход от индивидуального учета объектов с их ID к коллективному учету объектов.То есть, сначала мы отличаем гвозди друг от друга, но потом — сваливаем их в кучу и не учитываем их индивидуально. Попытка построить сквозную модель для этого кейса у меня провалилась. Но, возможно, потому что я мало знаю. Тот пример, что привел автор статьи, в котором для подсчета количества белых объектов, мне надо завести их айдишники, меня не устраивает. Я хочу выразить знание о группе объектов без обращения к знаниям об объектах группы.


            1. Alik_Kirillovich Автор
              28.05.2015 07:36

              Условие «половина объектов данной группы — белого цвета» мы выразили (1) и (2), без всякого «обращения к знаниям об объектах группы». Аксиомы из этих пунктов говорят ровно то, что вам нужно: если шаров конечное число, то половина из них — белые.

              Другое дело, это знание обычно нам нужно не само по себе, а для того, чтобы автоматически выводить новые факты относительно конкретных объектов. Например, у нас есть информация о 20 шарах. Про шары №1-10 мы знаем, что они черные, про шары №11-19 мы знаем, что они белые, а цвет 20-го шара неизвестен. И если мы точно знаем что всего шаров — 20, то мы можем автоматически сделать вывод, что этот 20-й шар — белый. Но чтобы сделать этот вывод, мы должны быть уверены, что других шаров нет. Вот это знание о том, что шаров всего 20 мы и выразили в аксиомах из пункта (3).

              Если же выводить новые факты относительно конкретных объектов вам не нужно, то вам достаточно (1) и (2).


              1. maxstroy
                28.05.2015 07:58

                Задача такая: мы выпускаем шары. Каждый выпущенный шар — либо белый, либо черный. Мы на бумажке ведем счет черным и белым шарам. Все они валятся в общую кучу, где теряют номера (айдишники), и все признаки индивидуальности. Однако, какая-то информация все-таки осталась. Эта информация о группе шаров в куче. Мы вычислили, что белых шаров в куче в среднем в Пи (3,14..) раз больше, чем черных. Повторюсь, шары не нумерованы. Теперь я задаю вопрос: какова вероятность того, что вытащенный мной наугад шар из кучи будет белого цвета. Ответ на это мне даст информация о группе шаров, которую я хочу сохранить в модели и к чему-то привязать. Вопрос: к чему и как?


                1. Alik_Kirillovich Автор
                  28.05.2015 08:48

                  Вы не очень аккуратно формулируете задачу. Во-первых, черных шаров не может быть в среднем больше, их просто больше или меньше во сколько-то раз. Во-вторых, белых шаров не может больше в Пи раз, т.к. Пи — иррациональное число. В-третьих, неверно использован термин «группа».

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

                  Если так, то отлично. В (1) и (2) я выразил это условие при n = 1 (белых шаров столько же сколько и черных, т.е. половина). Аналогичным образом можно выразить это условие и для других n.

                  P.S. Другое дело, что, как я говорил выше, онтологии не очень подходят для моделирования подобного рода условий. Это почти то же самое, что вычислять с помощью онтологии давление нефтяных пластов или подъемную силу самолета. Может быть теоретически это и возможно, но очень неудобно. У онтологий своя, специфическая область применения. И помимо онтологий есть множество других, более подходящих для той или иной задачи инструментов моделирования.


                  1. maxstroy
                    28.05.2015 08:54

                    Я хочу выразить тот факт, что распределение случайной величины в группе объектов такое: и далее само распределение. Очень хочется найти тот объект, к которому можно и нужно приаттачить этот параметр. Я занимаюсь моделированием бизнес-процессов и там необходимо найти тот объект, у которого появится распределение времен выполнения операций. Этот объект — группа, класс, множество операций, но при этом операции не имеют никакой индивидуальности и даже не посчитаны. Я понимаю, что онтомодель такие задачи, возможно, не решает. Просто надо понять, что онтомодель не моделирует свойства группы, множества, класса. Но моделирует свойства и отношения между объектами.


                    1. Alik_Kirillovich Автор
                      28.05.2015 09:57

                      Мне не всегда легко понять то, что вы имеете в виду. Но я снова попробую :-)

                      Возможно, вы хотите сделать утверждение не об отдельных элементах класса, а о самом классе. Хотите присвоить классу некоторый атрибут.

                      В OWL это сделать можно, но только в OWL-Full, где класс может рассматриваться и как собственно класс, и как индивидуал.

                      Пример:

                      #мяч1 относится к классу БелыйМяч (здесь БелыйМяч выступает в роли класса)
                      :ball1 rdf:type :WhiteBall.
                      
                      #Класс БелыйМяч имеет свойство «вероятность» со значением «0.5» (БелыйМяч выступает в роли индивидуала)
                      :WhiteBall :probability "0.5". 

                      Единственная проблема — OWL-Full является неразрешимым, т.е. в нем не будет гарантированно работать логический вывод. Но если вам он не требуется, то можете, как вариант, использовать OWL-Full.


                      1. maxstroy
                        28.05.2015 10:10

                        Спасибо! Теперь вопрос: что такое индивидуал? Если я не замучил вопросами


                        1. Alik_Kirillovich Автор
                          28.05.2015 10:16

                          Индивидуал — это объект.


                          1. maxstroy
                            28.05.2015 10:34

                            Но группа объектов — не есть объект. Или я не понимаю… В теории множеств есть элементы и классы. Это объекты разной природы. Или, в OWL попытка создать свойство для класса приводит к тому, что его надо связать с объектом, к которому уже можно будет привязать свойство? Или один и тот же объект будет одновременно с одной точки зрения считаться классом, а с другой — объектом?


                            1. klextor
                              28.05.2015 10:42
                              +1

                              Семантика OWL DL целиком выражается в наивной теории множеств, где есть множества, отношения и элементы. Т.е. individual интерпретируется как элемент. Класс — как множество. Свойство — как бинарное отношение.

                              Есть тонкость под названием punning: когда один и тот же IRI используется и для класса и для элемента. Но это чисто синтаксическая фича.


                              1. maxstroy
                                28.05.2015 10:49

                                Ага, спасибо! Но получается, что указать свойство класса объектов прямо и честно я не могу?


                                1. klextor
                                  28.05.2015 11:08
                                  +2

                                  Не сможете, т.к. это утверждение уже второго порядка, а не первого. Есть всякие трюки мета-моделирования, от примитивных (аннотации в OWL) до хитрых (Henkin semantics), но в стандарте этого нет.

                                  Можно выражать свойства всех объектов данного класса (тем самым определяя класс как множество объектов с определенными свойствами), но не свойство класса как такогого.

                                  Хорошо это описано в статье On the Properties of Metamodeling in OWL, см. пример с орлами и Красной Книгой в начале. В КК занесены именно орлы как сущность, а не каждый живущий в мире орел как объект.


                                  1. maxstroy
                                    28.05.2015 11:31

                                    СПАСИБО! Вы мне очень помогли!


            1. klextor
              28.05.2015 11:01
              +1

              Не получится. Единственный способ ограничить сверху количество элементов класса — это использовать номиналы (явное перечисление объектов класса), что заставит таки присвоить идентификаторы. По-другому никак не получится выразить конечность множества. Собственно без equality (а номиналы в OWL — это фактически equality в логике первого порядка + синтаксический сахар) в логике первого порядка нельзя выразить конечность интерпретации унарного предиката. Это следует, например, из теоремы Lowenheim–Skolem

              Если логический вывод не нужен, то можно в RDF использовать blank nodes для ваших шаров. Это фактически способ выразить факт о существовании объекта, не генерируя для него идентификатор. Но в любом случае считать вероятности придется с помощью каких-то своих методов, в стандартном стеке (RDF, RDFS, OWL) таких инструментов нет.


  1. Alik_Kirillovich Автор
    28.05.2015 07:36

    del


  1. ru7701
    31.05.2015 00:32
    +1

    А может кто-нибудь рассказать о прогрессе внутри Semantic Web за последние 4 года??
    Дело в том, что некоторые члены профильного сообщества выражали недоумение по поводу запущенности ряда проблем. Вот здесь, например. Или здесь. Да и существенный раздел «Критика» в «официальной» статье про Semantic-web не уменьшается много лет.

    Все же, если технического прогресса мало, то может в этом проблема с «в русскоязычном сообществе SW распространен пока слабо»? Есть вероятность того, что местные прогеры слишком циничны для восприятия хороших идей с плохими реализациями. ;)


  1. maxstroy
    31.05.2015 18:43

    информацию можно сделать понятной не только людям, но и машинам

    Психическая функция субъекта (понимание) приписывается неживому объекту (вычислительной машине) — это ИМХО, перебор. (Тезис взят из вашего учебного материала).
    Знак соотносится с объектом благодаря наличию у знака концепта
    •Концепт(? понятие, десигнат, интенсионал, смысл) —это некоторый набор условий, которые должен удовлетворять объект или ситуация, чтобы соотноситься со знаком

    Знак соотносится с объектом в воображении субъекта, там же правила. У другого субъекта — другой знак и другие правила.


  1. Ermak
    03.06.2015 00:27

    А можно пару слов о сравнении Stardog vs Neo4j vs AllegroGraph? Пользуетесь мармоттой, сезамом?


    1. klextor
      24.06.2015 00:57
      +1

      Можно. Stardog и AllegroGraph — это RDF СУБД. Neo4j — это графовая СУБД. Различия эти на уровне API постепенно стираются мульти графы и RDF (как модели данных) в общем-то отображаются друг в друга. Поэтому neo4j может хранить RDF и поддерживает SPARQL (по-моему для этого есть плагин), а Stardog скоро будет поддерживать TinkerPop API 3.0 для работы с произвольными property graphs (я как раз над этим сейчас работаю).

      Но надо понимать что несмотря на близость на уровне API физически хранилища все равно оптимизированы под немного разные задачи. RDF ближе к реляционной модели, просто менее жестко структурированной и легче модифицируемой, и SPARQL удобен как аналог SQL, т.е. для запросов по шаблону, которые возвращают часть RDF графа, соответствующую шаблону. Графовая модель и языки запросов лучше приспособлены для вычислений на графах, всяческих traversals, shortest paths, PageRank и тому подобного. Но поддержка TinkerPop'a скоро позволит эти вещи делать и над графами в Stardog (но храниться они все равно будут как RDF).

      Отличительная особенность Stardog'a — reasoning. О нем можно говорить долго.

      Stardog сделан на собственном движке хранения данных. Sesame поддерживается в клиентских API (т.е. можно работать с БД в Stardog как с репозиториями Sesame) + в качестве парсера RDF (т.н. Sesame Rio но эту часть мы перепишем как дойдут руки). Marmotta не используется.


  1. Ermak
    24.06.2015 09:45

    Спасибо