Практические применения семантических вычислений. Поиск по графу, контролируемый естественный язык Сергей Горшков, «Бизнес Семантика» 1. Концепция и технологии Semantic Web 2. Создание семантических моделей. Контролируемый естественный язык 3. Применение семантических технологий в бизнес-приложениях. Аналитические возможности Semantic Web Принцип Semantic Web Кодирование информации в семантическую форму Подлежащее – сказуемое – определение Подлежащее: универсальный идентификатор объекта (URI) Сказуемое: связь объекта с другим объектом, или название его свойства Определение: объект или литерал Возможные типы объектов, свойств, связей хранятся в онтологии Примеры стандартных онтологий: Dublin Core (DC) FOAF микроформаты (μF) Стандарт ISO 15926 Можно также создать свою онтологию – «с нуля», или путем расширения существующей. Технологии, необходимые для работы с информацией в семантической форме: RDF RDFS OWL SPARQL Являются стандартами или рекомендациями W3C Взаимосвязь семантических технологий Интерфейсы и аналитическое ПО Редакторы Форматы файлов: RDF, RDFS, OWL Средства конвертации данных Triple store и точка доступа SPARQL (аналог БД) Ключевые понятия семантического моделирования Индивидуальный объект Класс: совокупность индивидуальных объектов Животные Собаки #Дружок #Снежок Ключевые понятия семантического моделирования Литерал Свойство Связь объект-объект Связь объект-литерал значение: литерал значение: объект #ЖивоеСущество range ИмеетИмя ЯвляетсяРодителем domain Собаки Организации Простейшая онтология Клиент (класс) Название (свойство) Дочерний клиент (свойство) Пример для программистов Синтаксис RDFS. Определение класса и его свойств <rdfs:Class rdf:ID="Customer"> <rdfs:subClassOf rdf:resource="http://purl.org/dc/terms/Agent"/> </rdfs:Class> <rdf:Property rdf:ID="Name"> <rdfs:domain rdf:resource="#Customer"/> <rdfs:range rdf:resource="&xsd;string"/> </rdf:Property> <rdf:Property rdf:ID="Child"> <rdfs:domain rdf:resource="#Customer"/> <rdfs:range rdf:resource="#Customer"/> </rdf:Property> Пример для программистов Получившиеся триплеты: <rdfs:Class rdf:ID="Customer"> <rdfs:subClassOf rdf:resource="http://purl.org/dc/terms/Agent"/> </rdfs:Class> <http://example.com/#Customer> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> <http://example.com/#Customer> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://purl.org/dc/terms/Agent> Пример для программистов Синтаксис RDF. Определение индивидуального объекта <Customer rdf:about="http://example.com/#alpha" > <Name>Alpha, JSC</Name> </Customer> <Customer rdf:about="http://example.com/#beta" > <Name>Beta, LLC</Name> <Child rdf:resource= "http://example.com/#alpha" /> </Customer> Получившаяся онтология dc:Agent #Customer domain domain #Name #Child range range xsd:string Alpha, JSC Beta, LLC Name Name type #Alpha #Beta Child type Получившиеся триплеты <http://example.com/#Name> <http://www.w3.org/1999/02 /22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/ 22-rdf-syntax-ns#Property> <http://example.com/#Name> <http://www.w3.org/2000/01 /rdf-schema#range> <http://www.w3.org/2001/XML Schema#string> <http://example.com/#Name> <http://www.w3.org/2000/01 /rdf-schema#domain> <http://example.com/#Custom er> <http://example.com/#Customer> <http://www.w3.org/1999/02 /22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/r df-schema#Class> <http://example.com/#Customer> <http://www.w3.org/2000/01 /rdf-schema#subClassOf> <http://purl.org/dc/terms/Age nt> <http://example.com/#Child> <http://www.w3.org/1999/02 /22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/ 22-rdf-syntax-ns#Property> <http://example.com/#Child> <http://www.w3.org/2000/01 /rdf-schema#range> <http://example.com/#Custom er> <http://example.com/#Child> <http://www.w3.org/2000/01 /rdf-schema#domain> <http://example.com/#Custom er> <http://example.com/#beta> <http://www.w3.org/1999/02 /22-rdf-syntax-ns#type> <http://example.com/#Custom er> <http://example.com/#beta> <http://example.com/#Child> <http://example.com/#alpha> <http://example.com/#beta> <http://example.com/#Name > "Beta, LLC" <http://example.com/#alpha> <http://www.w3.org/1999/02 /22-rdf-syntax-ns#type> <Customer> <http://example.com/#alpha> <http://example.com/#Name > "Alpha, JSC" Средства моделирования: Protégé Средства моделирования: TopBraid Composer Средства моделирования: OWLGrEd Средства моделирования: i1 Альфа-тестирование http://editor.business-semantic.ru Чем занимается «Бизнес Семантика»? Интерфейсы и аналитическое ПО Редакторы Форматы файлов: RDF, RDFS, OWL Средства конвертации данных Triple store и точка доступа SPARQL (аналог БД) Средства моделирования: FluentEditor Статья про контролируемый язык: http://habrahabr.ru/post/173015/ Создание онтологии на CNL Every customer is an agent[dc]. Every customer has-name (some-string-value). Every customer has-child customer. Alpha is a customer. Beta is a customer. Alpha has-name equal-to 'Alpha, LLC'. Beta has-name equal-to 'Beta, JSC'. Beta has-child Alpha. Применения семантических технологий в корпоративной среде: Интеграция информационных систем, обмен данными Аналитика Управление знаниями (wiki) Статья про применение семантики для интеграции данных: http://habrahabr.ru/post/167419/ Что такого можно делать на графах, чего нельзя сделать на реляционной БД? Работать с нетипизированным контентом, в условиях меняющейся модели данных Анализировать связи между объектами (Facebook Graph Search) Работать со множественными значениями атрибутов Язык SPARQL Получим список всех клиентов: SELECT * WHERE { ?customer <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.com/#Customer> } Результат: Получить весь граф: ?customer --------------------------------------<http://example.com/#Alpha> <http://example.com/#Beta> SELECT * WHERE { ?object ?prop ?value } Статья про анализ семантических моделей: http://habrahabr.ru/post/178973/ Язык SPARQL Усложняем запрос: SELECT ?customer WHERE { ?customer <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.com/#Customer> . ?customer <http://example.com/#hasName> “Alpha, LLC”^^xsd:string FILTER (CONTAINS(STR(?customer),”Alpha”)) } ORDER BY ASC(?customer) LIMIT 5 OFFSET 10 Reasoner на контролируемом языке 620075, Россия, г. Екатеринбург, ул. Бажова, д. 89 +7 (343) 2-110-220 [email protected] http://www.business-semantic.ru http://www.business-semantic.com http://serge-index.livejournal.com