Pull to refresh
178
0
Алик Кириллович @Alik_Kirillovich

Пользователь

Send message
Этот код исправляет глюк с Font boosting или же отключает Font boosting вообще?
Индивидуал — это объект.
Мне не всегда легко понять то, что вы имеете в виду. Но я снова попробую :-)

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

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

Пример:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если какие-то конкретные моменты кажутся непонятными — скажите, буду рад их доработать.
Спасибо за идею! Про SlideWiki я, конечно, знаю. Особенно приятно, что ее ведущий разработчик — наш человек, Дарья Тарасова. Но сделать курс на SlideWiki, я, действительно, не догадался. Попробую перенести его туда. Единственная проблема, «Хабр» поддерживает слайды только со SlideShare.
Считаю нужным добавить, что два года спустя Джоэл все-же признал, что переписывание кода с нуля в некоторых случаях бывает оправдано:
… Наконец, с .NET поставляются замечательные библиотеки классов. Было переработано все — от доступа к данным и веб-разработки до GUI, поэтому создалось редкостное единообразие, сверху до низу. <...> Да, я согласен: .NET нарушает закон «никогда не переписывай с чистого листа». Microsoft это сошло с рук по двум причинам. Во-первых, у них был лучший в мире конструктор языков, человек, которому имы обязаны 90% прироста эффективности разработки программ за последние 20 лет, Андерс Гейльзберг, давший нам Turbo Pascal (спасибо!), Delphi (спасибо!), WFC (отлично!) и теперь .NET (сногсшибательно). ВО-вторых, они посадили за эту работу тьму инженеров на целых три года, в какой-то мере ослабив на это время свое участие в конкурентной борьбе. Запомните: если Microsoft может что-то себе позволить, это не значит, что то же самое можете вы.

Джоэл Спольски. Джоэл о программировании, 2006. Глава 44. Наша стратегия .NET. Стр. 321-322.

Оригинал: Joel Spolsky. Our .NET Strategy, 11 April 2002.

Оригинальный текст
… Finally, the class libraries that ship with .NET are great. The fact that everything, from data access to web development to GUI development, was redesigned means that there is incredible consistency from top to bottom. <...> OK, I admit it — .NET violated the Never Rewrite From Scratch rule. Microsoft got away with it because they had two things. First, they had the world's best language designer, the man who was responsible for 90% of the productivity gains in software development in the last 20 years: Anders Hejlsberg, who gave us Turbo Pascal (thank you!), Delphi (thank you!), WFC (nice try!) and now .NET (smacked the ball outta the park). Second, they put about a zillion engineers on it for about three years, during a period where much of their competition was more-or-less stalled. Remember, just because Microsoft can do something, doesn't mean you can.


Полнота и существование алгоритма, который решает истинно утверждение или нет, это одно и то же.
Это совершенно точно неверно. Об этом говорит, хотя бы, существование, с одной стороны, теоремы о полноте исчисления предикатов (Гёдель), и, с другой стороны, доказательство неразрешимости исчисления предикатов (Тьюринг и Чёрч).

Если для любого утверждения существует доказательство истинности или ложности, то элементарный переборный алгоритм его найдет.
Честно говоря, точно не помню, в чем тут дело, но, по-моему, это объясняется тем, что исчисление предикатов содержит бесконечное число сигнатур.
Да, именно так. В логике второго порядка можно квантифицировать не только переменные, но и предикаты.

Вообще, в «обычной» математике логика второго порядка используется не очень часто, но иногда в ней возникает потребность. Например она используется при формулировке аксиомы математической индукции, которая выглядит примерно так: для любого предиката, если этот предикат истинен для 0, а также если из его истинности для n следует его истинность для n+1, то тогда он истинен для любого числа.
Суть её в том, что вот есть у нас некий формальный язык, на котором можно написать какое-либо утверждение. Существует ли алгоритм, за конечное число шагов определяющий его истинность или ложность? Ответ был найден двумя великими учёными того времени Алонзо Чёрчем и Аланом Тьюрингом.


Вообще-то за несколько лет до Тьюринга и Черча был Гедель со своими теоремами о неполноте.


Вы в данном случае не совсем правы. Проблема разрешимости (Чёрч и Тьюринг) и проблема полноты (Гёдель) — это совсем разные проблемы. Полнота формальной системы означает только сам факт того, что для любого утверждения из данной системы существует доказательство его истинности или ложности. А разрешимость — наличие алгоритма, способного такое доказательство построить.

Так, например, исчисление предикатов является полным, но не является разрешимым. Т.е. для любого утверждения есть доказательство его истинности или ложности, но принципиально не существует алгоритма, способного для любого утверждения это доказательство построить.
После reflow — возможно и фича. Но после reflow и изменения цвета (!) для inline-block'ов — это, уже, скорее всего, баг.
Я для больших статей меньше литературы использую, чем ты для небольшой заметки.

А какие из источников Вы считаете лишними:

ГОСТ, статья ГК — первичные источники;

Мильчин — одно из наиболее авторитетных справочных изданий в области русскоязычной типографики;

Heath — первый, кто поднял данную тему на Хабре.

В принципе, можно, конечно, ограничиться работой Мильчина (там уже содержится вся необходимая информация), но, на сколько я знаю, она доступна только в бумажном виде.
Не совсем. Данная конструкция выведет текущую дату, а статья, как раз, посвящена тому, что нужна не текущая дата, а дата публикации последнего материала. В принципе, вывод этой даты действительно можно автоматизировать, но для этого потребуется уже запрос к базе данных, или что-то в этом роде.
Пользуясь случаем, поздравляю всех с наступающим (или даже наступившим) Новом Годом. Сделаем Хабр в новом году еще полезнее и интереснее!
Не поспоришь. Но это был совсем хардкор и экзотика.
Да, существовали и экзотические решения. Но была и ASP — абсолютно мейнстримовая технология, занимавшая до трети рынка. Кстати, во многом похожая на PHP.

Никогда до NodeJS не видел вакансии серверный JavaScript разработчик. А сейчас регулярно вижу.
Вакансий было полно, просто они назывались по другому: не «серверный JavaScript-разработчик», а просто «ASP-разработчик». А ASP-разработчики (до ASP.NET), как правило, использовали либо VBScript (чуть чаще), либо JScript (чуть реже).

Но, я, конечно, нисколько не отрицаю, что Node.js вдохнул в серверный JavaScript новую жизнь и перевел его на новый уровень.
1
23 ...

Information

Rating
Does not participate
Location
Казань, Татарстан, Россия
Date of birth
Registered
Activity