RU2707708C2 - System and method of searching data in database of graphs - Google Patents
System and method of searching data in database of graphs Download PDFInfo
- Publication number
- RU2707708C2 RU2707708C2 RU2015112157A RU2015112157A RU2707708C2 RU 2707708 C2 RU2707708 C2 RU 2707708C2 RU 2015112157 A RU2015112157 A RU 2015112157A RU 2015112157 A RU2015112157 A RU 2015112157A RU 2707708 C2 RU2707708 C2 RU 2707708C2
- Authority
- RU
- Russia
- Prior art keywords
- data
- objects
- search
- autotag
- data objects
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Настоящее изобретение относится к способам поиска данных и, в частности, к способу поиска данных в базах данных на основе графов.The present invention relates to data retrieval methods and, in particular, to a graph search method of data in databases.
Компьютерные системы часто используются для хранения больших объемов данных, отдельные записи которых должны быть извлечены в соответствии с некоторым критерием поиска. Таким образом, эффективное хранение данных для обеспечения быстрого поиска и извлечения является важнейшим вопросом.Computer systems are often used to store large amounts of data, individual records of which must be extracted in accordance with some search criteria. Therefore, efficient storage of data to enable fast retrieval and retrieval is a critical issue.
Поиск данных неразрывно связан с понятием фильтрации данных. В целом, относительно данных, поиск означает процедуру, используемую для проверки больших объемов данных с целью найти неочевидные, скрытые или потерянные части. Поиск данных обычно ассоциируется с обработкой хранилища данных. В зависимости от характера данных для поиска данных используется большое количество поисковых алгоритмов.Data mining is inextricably linked to the concept of data filtering. In general, with respect to data, a search means a procedure used to check large volumes of data in order to find non-obvious, hidden or lost parts. Data retrieval is usually associated with data warehouse processing. Depending on the nature of the data, a large number of search algorithms are used to search for data.
Поиск данных может подразумевать поиск файлов на хранилище данных, поиск данных в файлах/документах, данных/информации в интернете, данных в базе данных и так далее. Обычно поиск данных (т.е. поиск объекта) осуществляется на основе различных параметров данных, которые отличают одни данные от других данных (т.е. поиск по параметру(ам), который однозначно характеризует искомые данные). Например, имя файла, тип файла, размер файла могут быть использованы в качестве таких отличительных характеристик; название таблицы, табличный идентификатор - для базы данных; количество символов в слове, часть речи - для слов и так далее. Для облегчения и оптимизации поиска данных могут быть использованы теги.Data search may include searching for files in a data warehouse, searching for data in files / documents, data / information on the Internet, data in a database, and so on. Typically, a data search (i.e., an object search) is based on various data parameters that distinguish one data from other data (i.e., search by parameter (s), which uniquely characterizes the desired data). For example, file name, file type, file size can be used as such distinguishing characteristics; table name, table identifier - for the database; the number of characters in a word, part of speech for words, and so on. Tags can be used to facilitate and optimize data retrieval.
Обычно тег может быть назначен документу вручную во время процесса создания данных или документов, сохранения и/или добавления в базу данных. Теги характеризуют данные, так что эти теги могут быть использованы для поиска данных. Теги является неиерархическим ключевым словом или понятием, назначенным части информации (таким как интернет-закладка, цифровым изображением или компьютерным файлом). Этот вид метаданных помогает описать данные и позволяет им снова быть найденными путем поиска. Теги обычно выбираются неформально и лично создателем данных или теми, кто их просматривает в зависимости от системы, структуры данных, типа данных, содержания данных, контекста данных и так далее. Например, данные, относящиеся к компьютерным наукам, могут быть охарактеризованы по тегам "компьютер", "наука", "информация", "программное обеспечение", "оборудование" и др. Для создания тегов могут быть использованы различные алгоритмы.Typically, a tag can be manually assigned to a document during the process of creating data or documents, saving and / or adding to the database. Tags characterize data, so these tags can be used to search for data. Tags is a non-hierarchical keyword or concept assigned to a piece of information (such as an Internet bookmark, digital image or computer file). This kind of metadata helps describe the data and allows it to be found again by searching. Tags are usually selected informally and personally by the data creator or by those who view them, depending on the system, data structure, data type, data content, data context, and so on. For example, data related to computer science can be characterized by the tags "computer", "science", "information", "software", "hardware", etc. Various algorithms can be used to create tags.
Например, теги могут быть созданы на основе результатов анализа текста документа. Теги могут быть созданы автоматически (упоминаемые ниже как "автотеги") для документа и могут быть в дальнейшем ассоциированы с ним. Автотеги могут быть созданы не только для поиска данных/документа, но и для поиска Объекта, например, в базе данных (БД). Объект представляет собой сущность, например, бизнес-сущность: задача "Добавить описание для изображения животного" является Объектом, служащий "Билл" - Объект, так же как и запрос на "Постройку моста", запись в БД для пользователя, ИТ-отдел, отдел кадров или любая другая сущность. Такие сущности в области программирования называются экземплярами класса. Так, пользователь "Билл" - это экземпляр Класса "Пользователь"; ИТ-отдел, отдел кадров являются экземплярами Класса "департамент" и т.д. Такие Объекты являются искомыми данными, которые интересны пользователю, и которые должны быть найдены в базе данных.For example, tags can be created based on the analysis of the text of a document. Tags can be created automatically (referred to below as "auto-tags") for a document and can be further associated with it. Auto tags can be created not only for data / document search, but also for searching for an Object, for example, in a database (DB). An object is an entity, for example, a business entity: the task “Add a description for an animal’s image” is an Object serving “Bill” - an Object, as well as a request for “Building a bridge”, an entry in the database for the user, IT department, personnel department or any other entity. Such entities in the field of programming are called class instances. So, the user "Bill" is an instance of the class "User"; The IT department, human resources department are instances of Class "department", etc. Such Objects are the searched data that are of interest to the user and which should be found in the database.
Теги могут быть созданы для любого типа данных, хранимых в различных формах, например, в форме троек/n-tuples. Тройки, например, могут быть сохранены в различных типах баз данных, например, реляционных, иерархических, сетевых, объектно-ориентированных БД и т.д.Tags can be created for any type of data stored in various forms, for example, in the form of triples / n-tuples. For example, triples can be stored in various types of databases, for example, relational, hierarchical, network, object-oriented databases, etc.
Как правило, тройки хранятся в хранилищах троек. Хранилище троек является специальной базой данных для хранения и получения троек. Хранилище троек - это созданная для определенных целей база данных для хранения и получения троек, тройка, являясь сущностью данных (также известная как утверждение), состоит из Подлежащего-Сказуемого-Дополнения, как "Джону есть 35 лет" или "Джон знает Хелен".As a rule, triples are stored in triples stores. The triples repository is a special database for storing and receiving triples. The treasury is a database created for certain purposes for storing and receiving triples, a triple being a data entity (also known as a statement) consists of a Subject-Predictable-Addition, like "John is 35 years old" or "John knows Helen."
В отличие от реляционной базы данных, хранилище троек оптимизировано для хранения и получения троек. Для доступа к тройкам, хранящимся в хранилище данных, используется язык запросов. В дополнение к запросам обычно тройки могут быть импортированы/экспортированы при помощи Среды Описания Ресурса (RDF) и других форматов. Некоторые хранилища построены как СУБД с нуля, в то время как остальные построены поверх существующих коммерческих реляционных СУБД (например, основанные на SQL). Подобно ранним разработкам аналитическая обработка в реальном времени (OLAP) баз данных, этот промежуточных подход позволил создать большие и мощные СУБД с небольшими затратами на программирование на начальных фазах разработки хранилищ данных.Unlike a relational database, the triples storage is optimized for storing and retrieving triples. To access the triples stored in the data warehouse, the query language is used. In addition to queries, triples can usually be imported / exported using the Resource Description Framework (RDF) and other formats. Some storages are built as a DBMS from scratch, while others are built on top of existing commercial relational DBMSs (for example, based on SQL). Like the early development of real-time analytic processing (OLAP) of databases, this intermediate approach made it possible to create large and powerful DBMSs with low programming costs in the initial phases of data warehouse development.
Однако в долгосрочной перспективе вполне вероятно, что нативные хранилища данных будут иметь преимущества в плане производительности перед. Сложность в реализацией хранилищ данных поверх SQL заключается в том, что хотя тройки могут быть сохранены, реализация эффективных запросов RDF модели на основе графов в запросы SQL - достаточно сложна.However, in the long run, it is likely that native data warehouses will have performance advantages over. The difficulty with implementing data warehouses on top of SQL is that although triples can be stored, implementing efficient graph-based RDF queries into SQL queries is quite complex.
Количество тегов растет с ростом объема данных. Сохраненные данные со временем меняются, так что старые теги удаляются или заменяются новыми тегами. Необходимо создавать новые теги. Обычно, объекты данных пересекаются друг с другом, и изменение одной части данных может повлиять на другие. Создание тегов вручную для новых данных и обновление изменившихся данных - это очень трудоемкий и дорогостоящий процесс.The number of tags grows with data volume. The stored data changes over time, so old tags are deleted or replaced with new tags. You must create new tags. Typically, data objects intersect each other, and changing one piece of data can affect the other. Manually creating tags for new data and updating changed data is a very laborious and expensive process.
Соответственно, требуется способ для автоматического создания тегов и ранжирования данных на основе весов тегов для облегчения получения данных.Accordingly, a method is required for automatically creating tags and ranking data based on tag weights to facilitate data acquisition.
Настоящее изобретение относится к способу для поиска данных в графовых базах данных, который существенно перекрывает недостатки уровня техники.The present invention relates to a method for searching data in graph databases, which substantially overcomes the disadvantages of the prior art.
В одном аспекте изобретения предложен способ автоматического генерирования тегов и получения данных из графовой базы данных. Согласно примерному варианту реализации тройки хранятся в хранилище данных. Хранилище данных - это специальная база данных для хранения и получения троек. Хранилище троек - это специально разработанная база данных для хранения и получения троек, где тройка является сущностью данных (также известной как утверждение) состоящей из Подлежащего-Сказуемого-Дополнения.In one aspect of the invention, a method for automatically generating tags and retrieving data from a graph database is provided. According to an exemplary embodiment, triples are stored in a data warehouse. A data warehouse is a special database for storing and receiving triples. A triple storage is a specially designed database for storing and retrieving triples, where a triple is a data entity (also known as a statement) consisting of a Subject-Predictable-Addition.
В отличие от реляционной базы данных хранилище троек оптимизировано для хранения и получения троек. Язык запросов используется для доступа к тройкам, хранящимся в хранилище троек. В дополнение к запросам тройки, как правило, могут быть импортированы/экспортированы с помощью RDF и других форматов. Искомые Объекты необходимо пометить тегами для поиска и извлечения. Количество тегов растет с ростом объема данных. Сохраненные данные меняются со временем, так что старые теги удаляются или заменяются новыми тегами. Должны быть созданы новые теги. Теги создаются автоматически (т.е. автотеги) для обеспечения эффективного извлечения данных.Unlike a relational database, the triples storage is optimized for storing and retrieving triples. The query language is used to access triples stored in the triples repository. In addition to queries, triples can usually be imported / exported using RDF and other formats. Searched Objects must be tagged for search and retrieval. The number of tags grows with the growth of data volume. The stored data changes over time, so old tags are deleted or replaced with new tags. New tags must be created. Tags are created automatically (i.e. auto tags) to ensure efficient data retrieval.
Дополнительные особенности и преимущества изобретения будут изложены в последующем описании и частично будут очевидны из описания или могут быть познаны при практическом применении изобретения. Преимущества изобретения будут реализованы и достигнуты по структуре, в частности, в указанных в письменном описании и формуле изобретении, а также на приложенных чертежах.Additional features and advantages of the invention will be set forth in the following description, and in part will be apparent from the description, or may be learned by practice of the invention. The advantages of the invention will be realized and achieved in structure, in particular in those indicated in the written description and claims, as well as in the attached drawings.
Следует понимать, что и вышеописанное общее описание и следующее далее подробное описание являются примерными и поясняющими и предназначены для обеспечения дальнейшего объяснения изобретения, как оно заявлено.It should be understood that both the above-described general description and the following detailed description are exemplary and explanatory and are intended to provide further explanation of the invention as claimed.
Сопроводительные чертежи, которые включены для обеспечения дальнейшего понимания изобретения, и которые составляют часть данного описания, иллюстрируют варианты реализации изобретения, совместно с описанием служат для объяснения принципов изобретения.The accompanying drawings, which are included to provide a further understanding of the invention, and which form part of this description, illustrate embodiments of the invention, together with the description, serve to explain the principles of the invention.
На рисунках:In the figures:
ФИГ. 1 иллюстрирует пример графа, согласно примерному варианту реализации;FIG. 1 illustrates an example graph according to an exemplary embodiment;
ФИГ. 2 иллюстрирует часть семантической сети, согласно примерному варианту реализации;FIG. 2 illustrates part of a semantic network, according to an exemplary embodiment;
ФИГ. 3 иллюстрирует алгоритм обработки данных, согласно одному варианту реализации изобретения;FIG. 3 illustrates a data processing algorithm according to one embodiment of the invention;
ФИГ. 4 иллюстрирует блок-схему поиска автотегов для измененного Объекта и для связанных Объектов, согласно одному варианту реализации изобретения;FIG. 4 illustrates a block diagram of a search for autotags for a modified Object and for related Objects, according to one embodiment of the invention;
ФИГ. 5 иллюстрирует пример связей данных, применимо к поиску Объектов;FIG. 5 illustrates an example of data relationships, applicable to searching for Objects;
ФИГ. 6 иллюстрирует процесс обработки данных при создании Объекта;FIG. 6 illustrates the data processing process when creating an Object;
ФИГ. 7 иллюстрирует пример различных бизнес-приложений, использующихся в различных отделах компании, и обработку данных в них в примерном случае;FIG. 7 illustrates an example of various business applications used in various departments of a company, and data processing in them in an example case;
ФИГ. 8 иллюстрирует систему согласно примерному варианту реализации;FIG. 8 illustrates a system according to an exemplary embodiment;
ФИГ. 9 иллюстрирует компьютер или сервер, который может быть использован в примерном варианте реализации.FIG. 9 illustrates a computer or server that may be used in an exemplary embodiment.
Язык запросов используется для доступа к тройкам, хранящимся в хранилище троек. В дополнение к запросам тройки, как правило, могут быть импортированы/экспортированы с использованием RDF и других форматов. Искомые Объекты необходимо пометить тегами для поиска и извлечения. Количество тегов растет с ростом объема данных. Сохраненные данные меняются со временем, так что старые теги удаляются или заменяются новыми тегами. Должны быть созданы новые теги. Теги создаются автоматически (т.е. автотеги) для обеспечения эффективного извлечения данных.The query language is used to access triples stored in the triples repository. In addition to queries, triples can usually be imported / exported using RDF and other formats. Searched Objects must be tagged for search and retrieval. The number of tags grows with data volume. The stored data changes over time, so old tags are deleted or replaced with new tags. New tags must be created. Tags are created automatically (i.e. auto tags) to ensure efficient data retrieval.
Далее приведены два примера представления RDF-графов в XML формате (который часто является более удобным для компьютерной обработки) и в форме N-троек или N3 (который используется в существующем подходе, и который является более удобным для человеческого понимания).The following are two examples of representing RDF graphs in XML format (which is often more convenient for computer processing) and in the form of N-triples or N3 (which is used in the existing approach, and which is more convenient for human understanding).
Таким образом, XML синтаксис гораздо многословней, чем N3 синтаксис, но более легок для обработки компьютерами.Thus, the XML syntax is much more verbose than the N3 syntax, but is easier to handle by computers.
Тройка является базовой единицей RDF и состоит из Подлежащего, Сказуемого (Предиката) и Дополнения. Набор троек обычно связан с RDF-графом, пример которого представлен на ФИГ. 1. Направление стрелки (т.е. (110а, 110b) в любой представленной тройке (т.е. 120) указывает от Подлежащего (130) к Дополнению (140). RDF-модель данных похожа на подходы классического концептуального моделирования, такие как связь сущностей или диаграммы классов, поскольку в его основе лежит идея создания утверждений о ресурсах (в частности, веб-ресурсов) в форме выражений Подлежащее-Предикат-Дополнение.The triple is the basic unit of RDF and consists of Subject, Predicate (Predicate) and Addition. A set of triples is usually associated with an RDF graph, an example of which is presented in FIG. 1. The direction of the arrow (ie (110a, 110b) in any triple presented (ie 120) indicates from Subject (130) to Appendix (140). The RDF data model is similar to classical conceptual modeling approaches, such as the relationship of entities or class diagrams, since it is based on the idea of creating statements about resources (in particular, web resources) in the form of expressions Subject-Predicate-Addition.
Эти выражения рассматриваются как тройки в RDF-терминологии. Подлежащее обозначает ресурс, а предикат обозначает черты или аспекты ресурса и выражает отношение между Подлежащим и Дополнением. Коллекция RDF утверждений, по сути, представляет собой маркированный направленный мульти-граф. Как таковая, основанная на RDF модель данных более естественно подходит для некоторых видов представления графов, чем реляционная модель и другие онтологические модели.These expressions are considered triples in RDF terminology. Subject denotes a resource, and a predicate denotes features or aspects of a resource and expresses the relationship between Subject and Addition. The collection of RDF statements is essentially a labeled directional multi-graph. As such, the RDF-based data model is more naturally suited to some types of graph representations than the relational model and other ontological models.
Как было сказано выше, RDF данные часто хранятся в реляционной базе данных или нативных хранилищах троек или хранилищах четверок, если также хранится контекст (т.е. именованный граф) для каждой RDF-тройки. Именованные графы являются ключевой концепцией архитектуры Семантической Сети, в которой набор утверждения (граф) Среды описания Ресурсов (RDF) идентифицируется при помощи URI, позволяя создавать описания для данного набора утверждений, такие как контекст, информация о происхождении и другие метаданные.As mentioned above, RDF data is often stored in a relational database or in native repositories of triples or repositories of quadruples, if the context (i.e., named graph) for each RDF triple is also stored. Named graphs are a key concept of the Semantic Web architecture in which the Resource Description Framework (RDF) assertion set (graph) is identified by a URI, allowing you to create descriptions for a given set of statements, such as context, origin information, and other metadata.
Именованные графы являются простым расширением RDF-модели данных, через которые могут быть созданы графы, но, по большому счету, модель не располагает эффективными средствами различия между ними после публикации в сети. В то время как именованные графы могут появиться в Сети в качестве простых связанных документов (т.е. Связанных Данных), они также крайне полезны для управления наборами RDF-данных внутри RDF хранилища.Named graphs are a simple extension of the RDF data model through which graphs can be created, but by and large, the model does not have effective means of distinguishing between them after being published on the network. While named graphs can appear on the Web as simple related documents (i.e., Linked Data), they are also extremely useful for managing sets of RDF data within an RDF repository.
На ФИГ. 1 дополнения "Человек", "Менеджер" 140 и подлежащие "Джон" 130, "Майкл", "Морган", "Мона", "Алекс" RDF утверждения являются Унифицированный Идентификатор Ресурса (URI), который обозначает ресурсы. Ресурсы также могут быть показаны узлами с неизвестным потоком. Узлы с неизвестным потоком не напрямую идентифицируются из RDF утверждений. Узел с неизвестным потоком является узлом в RDF-графе, отражая ресурс, для которого не задан URI или литерал. Ресурс, представленный узлом с неизвестным потоком, также называется анонимным ресурсом. В соответствии с RDF-стандартом, узел с неизвестным потоком может быть использован только в качестве Подлежащего или Дополнения RDF-тройки. Узлы с неизвестным потоком могут быть обозначены посредством идентификаторов узлов с неизвестным потоком в следующих форматах, RDF/XML, Turtle, N3 и N-тройках. Следующий пример показывает, как это работает в RDF/XML:In FIG. 1 additions of "Man", "Manager" 140 and the subject "John" 130, "Michael", "Morgan", "Mona", "Alex" RDF statements are the Unified Resource Identifier (URI), which designates resources. Resources can also be shown by nodes with an unknown stream. Nodes with an unknown stream are not directly identified from RDF statements. A node with an unknown stream is a node in an RDF graph, reflecting a resource for which no URI or literal is specified. A resource represented by a node with an unknown stream is also called an anonymous resource. According to the RDF standard, a node with an unknown stream can only be used as a Subordinate or Supplement to an RDF triple. Nodes with an unknown stream can be designated by identifiers of nodes with an unknown stream in the following formats, RDF / XML, Turtle, N3 and N-triples. The following example shows how this works in RDF / XML:
Идентификаторы узла с неизвестным потоком ограничены только областью сериализации определенного RDF графа, т.е. узел "_:b" в последующем примере не представляет один и тот же узел с именем "_:b" в любом другом графе. Узлы с неизвестным потоком рассматриваются как простое свидетельство существования предмета без использования URI (Uniform Resource Identifier) для идентификации любого конкретного предмета. Это не является тем же самым, как предположение, что узел с неизвестным потоком обозначает "неизвестный" URI.The identifiers of a node with an unknown stream are limited only by the serialization area of a certain RDF graph, i.e. the node "_: b" in the following example does not represent the same node with the name "_: b" in any other graph. Units with an unknown flow are considered as simple evidence of the existence of an item without using a Uniform Resource Identifier (URI) to identify any specific item. This is not the same as the assumption that a node with an unknown stream denotes an “unknown” URI.
Предикат ("это" 110а, "должность" 110b) - это URI, который также обозначает ресурс, отражающий связь. Дополнение ("Менеджер", "Разработчик", "Генеральный директор" и в частных случаях "Джон", "Майкл", "Морган", "Мона", "Алекс") - это URI, узел с неизвестным потоком или строковый литерал в Юникоде. Троечный подход является тем, что используется в данном изобретении для обработки информации из различных источников.A predicate ("this" 110a, "position" 110b) is a URI that also indicates a resource reflecting the relationship. Addition ("Manager", "Developer", "General Manager" and in special cases "John", "Michael", "Morgan", "Mona", "Alex") is a URI, a node with an unknown stream, or a string literal in Unicode. The triple approach is what is used in this invention to process information from various sources.
На ФИГ. 2 показан семантический стек примерного варианта реализации. Семантический стек, используемый в примерном варианте реализации, включает URI 201. Стоит отметить, что все, что может быть идентифицировано с помощью URI, может быть описано, так что семантическая сеть может относиться к животным, людям, местам, идеям и т.д.. Семантическая разметка чаще генерируется автоматически, чем вручную. URIs могут быть классифицированы как указатели (URLs), как имена (URNs) или и тем и другим.In FIG. 2 shows a semantic stack of an exemplary embodiment. The semantic stack used in the exemplary embodiment includes
Единообразное Название Ресурса (URN) служит в качестве имени человека, в то время как Единый Указатель Ресурсов (URL) похож на почтовый адрес человека. URN определяет индивидуальность Объекта, в то время как URL обеспечивает метод для его поиска. CmwL (Язык Comindware) 211 описывает функцию и связь каждого из этих компонентов стека семантической сети; XML 203 обеспечивает элементарный синтаксис для структуры содержимого внутри документов, а также связывает несемантическое со значением содержимого; RDF 205 является простым языком для моделей описания данных, которые относятся к объектам ("ресурсам") и их связей. Основанная на RDF модель может быть представлена в XML- синтаксисе. RDF-схема 207 расширяет RDF и является словарем для описания свойств и классов основанных на RDF ресурсов и семантики для обобщенных иерархий таких свойств и классов.A Uniform Resource Name (URN) serves as the person’s name, while a Unified Resource Index (URL) looks like a person’s mailing address. URN defines the personality of an Object, while a URL provides a method for finding it. CmwL (Comindware Language) 211 describes the function and relationship of each of these components of the semantic network stack;
Формально, онтология 215 представляет знание в виде набора концепций внутри домена с использованием совместного словаря для обозначения типов, свойств и взаимосвязей этих концепций. Онтологии являются структурными рамками для организации информации. Онтологии описываются (Языком Описания Онтологий) OWL или CmwL, которые позволяют описывать Классы и их связи друг с другом и другими сущностями (см. ниже). Онтологии могут расширять предопределенный словарь (например, RDF или OWL словари). Словарь представляет собой коллекцию данных/информации неких терминов, которые имеют общее значение во всех контекстах.Formally,
Онтология использует предопределенный зарезервированный словарь/глоссарий терминов для понятий и связей, определенных для конкретного домена/предметной области. Онтологии могут быть использованы для выражения семантики терминов словаря, их связей и контекста использования. Таким образом RDF-Схема является словарем для RDF. OWL или CmwL и может быть использована для записи семантики предметных областей в онтологии. По сути, любые данные, например, онтологии или таксономии, могут быть выражены в тройках. Тройка представляет собой факт.The ontology uses a predefined reserved glossary / glossary of terms for concepts and relationships defined for a specific domain / subject area. Ontologies can be used to express the semantics of vocabulary terms, their relationships and context of use. Thus, the RDF Schema is a dictionary for RDF. OWL or CmwL and can be used to write semantics of subject areas in ontology. In fact, any data, such as ontologies or taxonomies, can be expressed in triples. The triple is a fact.
Таксономия 209 является иерархическим способом категоризации всех объектов в данном мире: книг, продуктов, видов, понятий и т.д. В семантической сети таксономия является словарем понятий и их точных определений. Когда словарь логически упорядочен внутри иерархии, он называется таксономией. Он является общим ресурсом, собравшим все в информационную экосистему, использующимся для синхронизации смысле терминов.
Язык Comindware 211 используется вместо Языка Описания Онтологий (OWL) в семантическом стеке. Язык Comindware представляет собой ограниченную версию OWL с целью повысить производительность и избавиться от функциональности и операций, в которых нет необходимости для целей бизнес-приложений и/или для использования с онтологиями (однако используя OWL-словарь и некоторые его правила 213).The
В плане хранения данных реляционная база данных является не лучшим выбором для RDF хранилища, поскольку она плохо подходит для работы со слабо структурированными данными. В реляционных базах данных MySQL-поиск информации по тегам решается путем введения промежуточной таблицы, так что может быть получена следующая структура:In terms of data storage, a relational database is not the best choice for RDF storage, since it is poorly suited for working with poorly structured data. In relational databases, MySQL-search for information by tags is solved by introducing an intermediate table, so that the following structure can be obtained:
Если Таблица Задач, Таблица пользователей, таблица учетных записей и другие таблицы используются в дополнение к таблице Статей, так что должны быть созданы Таблицы связей (Таблица связей 2, Таблица связей 3 и т.д.). В данном случае, если один добавляет, удаляет или редактирует какие-либо данные в одной из таблиц, связанные данные в остальных таблицах должны быть также изменены. Если нам нужно получить доступ к данным из нескольких таблиц, должен быть использован оператор SQL ОБЪЕДИНИТЬ. Оператор SQL ОБЪЕДИНИТЬ объединяет записи из двух или более таблиц в базе данных. Он создает набор, который может быть сохранен в виде таблицы или использован как есть. ОБЪЕДИНЕНИЕ - это средство для объединения полей из двух таблиц с использованием значений, общих для каждой из них (например, идентификаторы). Эта и другие связанные операции требуют большого количества времени.If the Task Table, User Table, Account Table, and other tables are used in addition to the Articles table, so the Link Tables must be created (Link Table 2, Link Table 3, etc.). In this case, if one adds, deletes or edits any data in one of the tables, the related data in the other tables must also be changed. If we need to access data from several tables, the SQL CONNECT statement should be used. The SQL JOIN statement joins records from two or more tables in a database. It creates a set that can be saved as a table or used as is. JOINT is a tool for combining fields from two tables using values common to each of them (for example, identifiers). This and other related operations are time consuming.
Реляционные базы данных обеспечивают достаточно высокую скорость поиска только для тех данных, для которых был настроен/отрегулирован поиск. Например, поиск в SQL-базах данных использует SQL-запросы, которые необходимо переписывать каждый раз, как только в базу данных добавляются новые данные или используются новые типы данных, которые отличаются от данных, хранящихся в базе данных. Еще одним примером является добавление отдела (отделы ранее не добавлялись и такой Объект не использовался) в базу данных. В данном случае при добавлении нового отдела должны быть доступны для добавления: Информационные технологии (ИТ), Отдел управления персоналом (HR), Исследования и разработка (R&D) и другие. Так что должны быть создано несколько новых таблиц, в которых, по крайней мере, одна из них хранит данные отдела и в которых, по крайней мере, другая таблица хранит связи между другими таблицами базы данных.Relational databases provide a sufficiently high search speed only for the data for which the search has been configured / adjusted. For example, a search in SQL databases uses SQL queries that need to be rewritten each time new data is added to the database or new data types are used that are different from the data stored in the database. Another example is the addition of a department (departments have not been added before and such an Object has not been used) in the database. In this case, when adding a new department, the following should be available for adding: Information Technology (IT), Human Resources Department (HR), Research and Development (R&D) and others. So several new tables must be created in which at least one of them stores department data and in which at least the other table stores relationships between other database tables.
Большое количество SQL-запросов (включая запросы поиска) должны быть изменены/переписаны, чтобы разрешить поиск сохраненных данных. Такое переписывание/изменения запросов является чрезвычайно дорогостоящим и ресурсоемким действием, ассоциирующимся с привлечением оператора базы данных и/или разработчика. Примерный вариант реализации обеспечивает систему, которая автоматически адаптируется к изменениям данных внутри базы данных, и которая реализует поисковые запрос(ы), которые просты для пользователя, такие как: "Что мне следует найти?" -> "Ошибки" + "Высокий приоритет" или "менеджер" + "Алекс"). Такие поисковые пользовательские запросы могут использовать текстовые поля, в которые можно вывести поисковый запрос. Также система должна обеспечивать выбор типов данных/поисковых наборов, в которых будет выполнен поиск.A large number of SQL queries (including search queries) must be modified / rewritten to allow searching for stored data. Such a rewrite / change of requests is an extremely expensive and resource-intensive action associated with involving a database operator and / or developer. An example implementation provides a system that automatically adapts to data changes within the database and that implements search query (s) that are simple for the user, such as: "What should I find?" -> "Errors" + "High priority" or "manager" + "Alex"). Such user search queries may use text fields into which a search query may be displayed. Also, the system should provide a choice of data types / search sets in which the search will be performed.
Приложение для реализации примерного варианта включает Графический Интерфейс Пользователя (ГИП), текстовый интерфейс пользователя, консоль и другие элементы для взаимодействия человека с системой/приложением. ГИП может включать текстовое поле, в котором пользователь может ввести условие поиска, чтобы начать процесс поиска Объектов (иногда именуемых "объектами данных"). Стоит отметить, что ГИП может содержать более одного текстового поля. В текстовое поле пользователь может ввести часть поискового слова, и система обеспечит варианты автоматического заполнения данного слова. Например, пользователь может ввести первые символы слова (или символы из середины слова) "Морган", т.е. "Мо" в текстовое поле.An application for implementing an exemplary embodiment includes a Graphical User Interface (GUI), a text user interface, a console, and other elements for human interaction with the system / application. The GUI can include a text box in which the user can enter a search term to begin the process of searching for Objects (sometimes referred to as "data objects"). It is worth noting that the GUI can contain more than one text field. In the text field, the user can enter part of the search word, and the system will provide options for automatically filling this word. For example, the user can enter the first characters of the word (or characters from the middle of the word) "Morgan", i.e. "Mo" in the text box.
Система предоставить возможный вариант автоматического заполнения (окончания слов, т.е. слов, где будет найдена такая последовательность или где эти символы будут встречаться в любой последовательности), "Морган" и "Мона". Далее система способна обеспечить область поиска пользователю, например, с использованием ГИП. Область поиска представлена троечными предикатами, которые ассоциируются с поисковым словом. Например, для слова "Морган" система обеспечит следующим области поиска: "Создатель", "Корректор ошибок " и другие, если они были найдены в базе данных. Такие варианты областей поиска представлены предикатами автотегов для найденных автотегов для слова "Морган". Если пользователь выберет область поиска "Создатель", то результат поиска будет включать "Ошибка Номер 2121", согласно ФИГ. 1.The system provides a possible option for automatic completion (word endings, that is, words where such a sequence will be found or where these characters will appear in any sequence), Morgan and Mona. Further, the system is able to provide a search area to the user, for example, using the GUI. The search area is represented by triple predicates that are associated with the search word. For example, for the word "Morgan" the system will provide the following search areas: "Creator", "Error Corrector" and others, if they were found in the database. Such variants of search fields are represented by predicates of autotags for found autotags for the word "Morgan". If the user selects the search area "Creator", the search result will include "
Здесь "Ошибка" является Классом, а "Ошибка 2121" является экземпляром этого Класса. Стоит отметить, что область поиска может быть идентифицирована/определена и еще более сужена. Примеры Классов и их экземпляров для конкретных случаев будут обсуждаться ниже. ГИП позволяет пользователю выбрать, как минимум, одну область поиска для ввода поискового слова или его части. Пользователь может пропустить выбор определенных областей поиска, например "Создатель" или "Корректор ошибок". Пользователь может отклонить выбранные/предоставленные области поиска. В этом случае такое решение равнозначно выбору всех областей поиска. Если выбрана, по крайней мере, одна область поиска, то поиск будет проведен в данной области поиска. Экземпляры Классов выступают в роли искомых Объектов (которые ассоциируются с поисковым словом). "Майкл", "Морган" (ФИГ. 1) являются еще одним примером экземпляров Класса "Человек"; "продукты:Продукт1", " продукты:Продукт2", "продукты:Продукт3" из кода ниже являются экземплярами Класса "пример:Продукт".Here, "Error" is a Class, and "
Как было сказано выше, система предлагает пользователю два варианта автоматического заполнения: "Морган" и "Мона" (см ФИГ. 1) после того, как пользователь ввел часть или поисковое слово, например, несколько символов "Мо" (предполагая, что пользователь имел ввиду слово "Морган"). Пользователь может выбрать, как минимум, один из них (или все), так что система запустит процесс поиска Объектов для выбранных вариантов.As mentioned above, the system offers the user two options for automatic filling: "Morgan" and "Mona" (see FIG. 1) after the user entered a part or a search word, for example, several characters "Mo" (assuming that the user had in view of the word "Morgan"). The user can select at least one of them (or all), so that the system starts the process of searching for Objects for the selected options.
Как было сказано выше, данные могут храниться в виде троек или n-кортежей. Условия поиска данных могут быть реализованы в тройках, однако для поиска должны быть известны все тройки, связанные с данными. Использование автотегов является более удобным способом поиска данных. Далее приведен пример описания/определения автотега, и пример процесса поиска значений автотегов. Также приведен пример поиска Объекта по значениям автотегов. Следующий исходный код написан на N3. N3 основывается на стандартах RDF и эквивалентен синтаксису RDF/XML, однако обладает дополнительными особенностями, такими как правилами и формулами.As mentioned above, data can be stored as triples or n-tuples. Data search conditions can be implemented in triples, however, all triples associated with data must be known for the search. Using autotags is a more convenient way to search for data. The following is an example of a description / definition of an autotag, and an example of a process for finding autotag values. An example of searching the Object by the values of autotags is also given. The following source code is written in N3. N3 is based on RDF standards and is equivalent to the RDF / XML syntax, however, it has additional features such as rules and formulas.
Ниже приведены примеры реализации изобретения в форме исходного кода, где каждая строка начинается с символаThe following are examples of implementation of the invention in the form of source code, where each line begins with a symbol
- @префикс cmw:<http://comindware.com/logics#>. Здесь определяется "http://comindware.com/logics#" для префикса "cmw". Указание @префикс связывает префикс с пространством имен URI. Это указывает на то, что определенное имя (qname) с этим префиксом далее будет сокращением для URI и состоит из объединения идентификатора пространства имен и части qname справа от двоеточия.- @ cmw prefix: <http://comindware.com/logics#>. This defines "http://comindware.com/logics#" for the prefix "cmw". Specifying @ prefix associates the prefix with the URI namespace. This indicates that a specific name (qname) with this prefix will further be abbreviated for URI and consists of combining the namespace identifier and the qname part to the right of the colon.
<"http://comindware.com/logics#"> является унифицированный идентификатор ресурса (URI), который представлен Единый Указатель Ресурсов URL, который ссылается на ресурс, идентифицированный как comindware.com/logics#, представление которого в форме HTML можно получить посредством Протокол Передачи Гипертекста (http) из сетевого хоста, доменное имя которого - comindware.com. Установленный единожды префикс может быть использован для остального исходного кода. Все, будь то Подлежащее, Предикат или Дополнение идентифицируется посредством URI.<"http://comindware.com/logics#"> is a Uniform Resource Identifier (URI), which is represented by a Unified Resource URL, which refers to a resource identified as comindware.com/logics#, which can be represented in HTML form via Hypertext Transfer Protocol (http) from a network host whose domain name is comindware.com. Once installed, the prefix can be used for the rest of the source code. Everything, be it Subject, Predicate or Addition, is identified by a URI.
- @префикс автотег: <http://comindware.com/ontology/autotag#>.- @ autotag prefix: <http://comindware.com/ontology/autotag#>.
- @префикс xsd: <http://www.w3.org/2001/XMLSchema#>.- @ xsd prefix: <http://www.w3.org/2001/XMLSchema#>.
- # онтология автотега. Отсюда начинается пример онтологии для автотега.- # ontology of autotag. This is where the ontology example for autotag begins.
В соответствии с синтаксисом языка, комментарии, описывающие конкретный блок документа, следуют за знаком "#". Комментарии также могут быть заключены в "##".According to the syntax of the language, comments describing a particular block of the document follow the "#" sign. Comments can also be enclosed in "##".
- автотег:Автотег a cmw:Класс;- Auto tag: Auto tag a cmw: Class;
При необходимости добавления нового словаря существует возможность определить новые классы предметов и новые свойства. Свойство, которое сообщает, что типом чего-то является rdf:тип может быть сокращено в N3 просто до "а".If you need to add a new dictionary, it is possible to define new classes of objects and new properties. A property that reports that the type of something is rdf: the type can be reduced in N3 simply to "a".
Классы просто говорят о предмете, который содержится в них. Дополнение может быть представлено/описано множеством классов. Какой либо иерархической связи не требуется. Если между двумя классами существует связь, то это можно утверждать. См. свойства классов в RDF-Схеме (http://www.w3.org/TR/rdf-schema/) и OWL-словарях (http://www.w3.org/TR/owl-guide/ или http://www.w3.org/TR/owl2-overview/). Как станет понятно, изобретение может быть использовано с тройками, четверками и так далее. В качестве примера используются тройки.Classes just talk about the subject that they contain. Addition can be represented / described by many classes. No hierarchical relationship is required. If there is a connection between the two classes, then this can be argued. See class properties in the RDF Scheme (http://www.w3.org/TR/rdf-schema/) and OWL dictionaries (http://www.w3.org/TR/owl-guide/ or http: //www.w3.org/TR/owl2-overview/). As it becomes clear, the invention can be used with triples, quadruples, and so on. As an example, triples are used.
-cmw:свойство автотег:имя,-cmw: autotag property: name,
Для одинаковых объектов используется сокращение: точка с запятой ";" представляет еще одно свойство того же объекта.For identical objects, the abbreviation is used: semicolon ";" represents another property of the same object.
- автотег:предикат,- auto tag: predicate,
- автотег:значение.- auto tag: value.
Для одинаковых объектов используется сокращение: запятая представляет еще одно Дополнение с тем же Предикатом и Подлежащим.For identical objects, the abbreviation is used: the comma represents another Addition with the same Predicate and Subject.
Далее приведены примеры для определения автотегов:The following are examples for determining auto tags:
- ## Авто-тег перечисляющего типа (enum) ##. Автотег со свойством в виде типа автотега и свойство данного автотега является списком конкретных значений (другими словами автотег для свойства, а свойство содержит список значений). Перечислитель (enum) может быть использован в качестве списка значений. Примером такого enum является ошибка или важность/приоритет задачи:- ## Auto-tag of enumeration type (enum) ##. An autotag with a property in the form of an autotag type and a property of a given autotag is a list of specific values (in other words, an autotag for a property, and the property contains a list of values). An enum can be used as a list of values. An example of such an enum is an error or the importance / priority of a task:
Здесь критичность ошибки является свойством. В компьютерной терминологии "критичностьОшибки" является экземпляром Класса "Свойство". Имя свойства (серьезности ошибки) - "Критичность Ошибки". Тип свойства - "свойство Enum". Свойство может иметь описание, такое как "Критичность ошибки", которое может быть использовано для отображения посредством ГИП в виде подсказки/дополнительной информации для пользователя. Данная подсказка может быть представлена в виде текста, который может быть видим, когда пользователь удерживает курсор мыши поверх какого-либо элемента ГИП, не нажимая на него. Критичность ошибки имеет значения ("вариантЗначения"). В данном случае ошибка может иметь низкую критичность, среднюю критичность и высокую критичность (которая может быть представлена как "критичностьОшибки:низкая," "критичностьОшибки:средняя" и "критичностьОшибки:высокая").Here, the criticality of the error is a property. In computer terminology, the criticality of Errors is an instance of the Property class. The name of the property (severity of the error) is Criticality of the Error. The type of the property is "Enum Property". The property may have a description, such as “Error Criticality,” which can be used to display through the GUI as a hint / additional information for the user. This tooltip can be presented in the form of text that can be seen when the user holds the mouse cursor over any GUI element without clicking on it. The criticality of the error matters ("VariantValues"). In this case, the error can have low criticality, medium criticality and high criticality (which can be represented as “criticality Errors: low,” “criticality Errors: medium” and “criticality Errors: high”).
Каждое значение серьезности ошибки (низкая, средняя и высокая, представленные как критичностьОшибки:низкая, критичностьОшибки:средняя, критичностьОшибки:высокая) является экземпляром Класса "ВариантЗначения":Each value of the severity of the error (low, medium and high, presented as criticality Errors: low, criticality Errors: medium, criticality Errors: high) is an instance of the Class "VariantValues":
Каждое значение серьезности ошибки может иметь имя (также как и свойство из блока исходного кода, представленного выше):Each error severity value can have a name (as well as a property from the source block above):
Далее для серьезности ошибки будет создан автотег.Next, an autotag will be created for the severity of the error.
- пример: критичностьОшибкиАвтотег а автотег:Автотег;- example: criticality Errors Auto tag and auto tag: Auto tag;
Здесь автотег для серьезности ошибки объевлен как автотег.Here the autotag is sealed as autotag for the severity of the error.
- автотег:имя "Критичность";- autotag: name "Criticality";
- автотег:предикат пример:критичностьОшибки;- autotag: predicate example: criticality Errors;
Теперь критичность ошибки будет использована в качестве предиката автотега.Now the criticality of the error will be used as an autotag predicate.
- автотег:значение критичностьОшибки:низкая, критичностьОшибки:средняя, критичностьОшибки:высокая.- auto tag: criticality value Errors: low, criticality Errors: medium, criticality Errors: high.
Здесь каждое значение серьезности ошибки (низкая, средняя, высокая) является значением автотега верьезности автотега.Here, each value of the severity of the error (low, medium, high) is the value of the autotag of the autotag fidelity.
Здесь был объявлен/создан продукт для автотега ошибки. В компьютерной терминологии данная тройка может быть интерпретирована как: продукт для ошибки является экземпляром Класса автотег.Here was announced / created a product for autotag errors. In computer terminology, this triple can be interpreted as: the product for error is an instance of the AutoTag Class.
- автотег:имя "Продукт";- auto tag: name "Product";
- автотег:предикат пример:продукт.- autotag: predicate example: product.
Теперь продукт является предикатом автотега.Now the product is an autotag predicate.
- # Первый вариант определения значений автотега для ссылок (свойств enum)- # The first option to determine autotag values for links (enum properties)
- # прямое определение- # direct definition
- @префикс продукты: <http://comindware.com/examples/products#>.- @ prefix products: <http://comindware.com/examples/products#>.
В следующих строках Продукт1, Продукт2 и Продукт3 будет определен как экземпляр Класса Продукт. Им также будут назначены заголовки (имена).In the following lines, Product1, Product2, and Product3 will be defined as an instance of the Product Class. They will also be assigned headers (names).
Значения автотега могут быть определены вручную или могут быть найдены автоматически. В приведенных выше строках Продукт1, Продукт2 и Продукт3 были определены напрямую/вручную в качестве значений автотега. Вручную созданные значения автотега должны быть созданы каждый раз, как только создается новый Объект или меняется. Также, если Объект удален по автотегу(ам), значения автотега также должны быть удалены. Правила могут быть использованы для того, чтобы избежать ручного создания/определения значений автотега.Auto tag values can be determined manually or can be found automatically. In the above lines, Product1, Product2, and Product3 have been defined directly / manually as auto tag values. Manually created autotag values must be created each time a new Object is created or changed. Also, if an Object is deleted by autotag (s), autotag values must also be deleted. Rules can be used to avoid manually creating / defining autotag values.
- # второй вариант определения значений автотега для ссылок (свойства enum)- # second option for determining autotag values for links (enum properties)
Определение посредством правил значений автотегов может быть использовано вместо прямого определения значений автотегов. Метод определения посредством правил является более приемлемым методом для определения значений автотегов.Defining auto-tag values through rules can be used instead of directly defining auto-tag values. The rule-based method is a more acceptable method for determining auto-tag values.
Стоит отметить, что значение выражений, написанных на N3 в фактах и правилах может быть с легкостью понято без знания программирования. В данном описании изобретения части утверждений именованы в виде описательных названий. Так "создательАвтотег" является автотегом для автора; "пример:создательАвтотег а автотег:Автотег;" означает, что "пример:создательАвтотег" является автотегом, "cmw:создатель а cmw:Свойство;" означает, что создатель является свойством; "cmw:создатель cmw:имяСвойства "Кем создано:"; означает, что "Кем создано:" является именем свойства; "cmw:создатель cmw:типСвойства cmw:свойствоАккаунта;" является аккаунтом, который является типом свойства; пример:создательАвтотег автотег:имя "Кем создано" означает, что "Кем создано" является именем автотега и т.д. Поэтому код, описанный в данном изобретении, может быть использован в качестве описания особенностей изобретения.It is worth noting that the meaning of expressions written in N3 in facts and rules can be easily understood without programming knowledge. In this description of the invention, parts of the statements are referred to as descriptive names. So "creatorAutoteg" is an autotag for the author; "example: creatorAuto tag and auto tag: Auto tag;" means that "example: creatorAutotag" is an autotag, "cmw: creator and cmw: Property;" means the creator is a property; "cmw: creator cmw: property name" Created by: "; means" Created by: "is the name of the property;" cmw: creator cmw: type Property cmw: Property of the Account; "is the account that is the type of property; example: creator Auto tag: the name "Created by" means that "Created by" is the name of the autotag, etc. Therefore, the code described in this invention can be used as a description of the features of the invention.
Например, часть "продуктДляОшибкиАвтотег" утверждения может быть интерпретирована как "Автотег для продукта для ошибки" или как "Автотег с именем "Продукт для Ошибки". Другими словами, "Автотег, который ассоциирует Продукт с Ошибкой". Другим примером является "cmw:автрибутыСвойства", которые могут быть интерпретированы как атрибуты свойства или атрибуты свойств. Еще один пример: часть "создательАвтотег" утверждения может быть интерпретирована как Автотег с именем "Создатель" или автор, т.е. человек, который что-то создает: например, задачу или ошибку.For example, the “Product For Errors Auto Tag” part of the statement could be interpreted as “Auto tag for the product for error” or “Auto tag with the name“ Product for Error. ”In other words,“ Auto tag that associates the Product with a Error. ”Another example is“ cmw: auto attributes Properties ", which can be interpreted as property attributes or property attributes. Another example: the" creator Auto tag "part of a statement can be interpreted as an Auto tag with the name" Creator "or the author, that is, the person who creates something: for example, a task or Errors.
Как было сказано выше, N3 основана на стандартах RDF и эквивалентна синтаксису RDF/XML, однако обладает дополнительными особенностями, такими как правила и формулы. Правила могут быть записаны в N3, OWL, XNL и других.As mentioned above, N3 is based on RDF standards and is equivalent to RDF / XML syntax, but it has additional features such as rules and formulas. Rules can be written in N3, OWL, XNL and others.
Простое правило (N3 правило) может гласить что-то вроде: если X является частью Y, и, если Y является частью Z, значит X является частью Z, или A simple rule (rule N3) might say something like: if X is part of Y, and if Y is part of Z, then X is part of Z, or
Комбинация скобок "{" и "}" и "=>" является правилом. Фигурные скобки заключают набор утверждений и представляют собой формулу. Все формулы заключены в фигурные скобки. Помимо того, что Подлежащее и Дополнение (Подлежащее в формуле представлено двумя утверждениями, а Дополнение в формуле представлено одним утверждением) тройки являются формулой, пример, показанный выше, является одиночным утверждением. Формула является частью правила и может быть представлена набором утверждений (как минимум одним утверждением), где правило также является утверждением, и где утверждение является тройкой.The combination of brackets "{" and "}" and "=>" is the rule. Curly braces enclose a set of statements and represent a formula. All formulas are enclosed in braces. Besides the fact that the Subject and the Addendum (the Subject in the formula is represented by two statements, and the Addendum in the formula is represented by one statement) the triples are the formula, the example shown above is a single statement. The formula is part of the rule and can be represented by a set of statements (at least one statement), where the rule is also a statement, and where the statement is a triple.
В приведенном выше примере утверждения, "?х" является переменной (или неизвестной величиной, искомым значением). Стоит отметить, что "?х" не всегда представлена неизвестной величиной, напротив, известная часть утверждений (в виде URI) "?х" может быть использована для проверки подлинности факта. Как было сказано выше, любые данные, такие как сущность, событие и другие могут быть описаны тройкой. Тройка может также описывать факт, например, "Билл это Человек", "Джон это Человек", "Позиция Джона - менеджер".In the above statement example, "? X" is a variable (or an unknown value, the desired value). It is worth noting that "? X" is not always represented by an unknown quantity, on the contrary, a known part of the statements (in the form of URIs) of "? X" can be used to verify the authenticity of the fact. As mentioned above, any data, such as an entity, an event, and others can be described by a triple. The troika can also describe a fact, for example, “Bill is Man,” “John is Man,” “John’s position is manager.”
Если тройка похожа на эту: "?х это Человек", значит будут найдены все предметы (которые удовлетворяют утверждению). Но, если часть утверждения, такого как "Билл" и "Джон" будут использованы в качестве входных данных для "?х", то данное утверждение может быть проверен на "истину" или "ложь", т.е. хранится ли эта тройка(тройки) среди троек. Для текущего примера после замещения "Билла" и "Джона" на "?х", следующие утверждения: "Билл это Человек" и "Джон это Человек будут правдивы, поскольку эти тройки хранятся в базе данных. Если используется утверждение "?х позиция менеджер" и "Джон" и "Билл" будут использоваться в качестве входных параметров для "?х", то только утверждение "Джон позиция менеджер" интерпретируется как правда, но утверждение "Билл позиция менеджер" является ложью, поскольку данная тройка не хранится в базе данных (и не выведена из тройки(троек)). Если ни одна из переменных "?х" не связана со значением в тройке "?х это Человек", значит данная тройка используется для поиска всего, что подходит под данную тройку, т.е. будут найдены "Билл" и "Джон".If the triple is similar to this: “? X is Man,” then all objects (which satisfy the statement) will be found. But, if part of a statement such as “Bill” and “John” is used as input for “? X”, then this statement can be checked for “true” or “false”, i.e. whether this triple (triples) is stored among triples. For the current example, after replacing "Bill" and "John" with "? X", the following statements: "Bill is a Man" and "John is a Man will be true, because these triples are stored in the database. If you use the statement"? X position manager "and" John "and" Bill "will be used as input parameters for"? x ", then only the statement" John position manager "is interpreted as true, but the statement" Bill position manager "is false, because this triple is not stored in the database data (and not derived from triples (triples)). If none of the variables "? X" is not associated with the value in the top three "? X is a man", then this trio is used to find anything that fits into the top three this, that will be found, "Bill" and "John."
В описанном выше примере "=>", использованный здесь в качестве специального предиката, означает "следует". Она используется для связи формул. На самом деле - это короткая запись URI лог:следует или: http://www.w3.org/2000/10/swap/log#implies. Когда две формулы связаны посредством "лог:следует", они являются правилами, как было сказано выше, все правила являются различными видами утверждений. Формула обеспечивает предметы, которые могут быть представлены с использованием текущих RDF/XML; эти правила не являются частью стандартного RDF синтаксиса.In the above example, "=>", used here as a special predicate, means "follows". It is used to relate formulas. In fact, this is a short URI log: it follows either: http://www.w3.org/2000/10/swap/log#implies. When two formulas are connected by means of “log: follows”, they are rules, as mentioned above, all rules are different kinds of statements. The formula provides items that can be represented using current RDF / XML; these rules are not part of the standard RDF syntax.
Левая часть данного правила гласит, что все экземпляры Класса Продукт ищутся во всех сохраненных тройках. В правой части уравнения сказано, что все найденные значения в левой части формулы являются приемлемыми/возможными значениями для автотега "продуктДляОшибки Автотег".The left side of this rule states that all instances of the Product Class are searched in all saved triples. The right side of the equation says that all the values found on the left side of the formula are acceptable / possible values for the product "For Error AutoTag" autotag.
В данном случае будут найдены следующие экземпляры: "продукты:Продукт1.", "продукты:Продукт2" и " продукты:Продукт3", т.е. экземпляры, которые были описаны тройками выше: "продукты:Продукт1 а пример:Продукт;", "продукты:Продукт2 а пример:Продукт;", "продукты:Продукт3 а пример:Продукт;".In this case, the following instances will be found: "products: Product1.", "Products: Product2" and "products: Product3", i.e. instances that have been described by the triples above: "products: Product1 as an example: Product;", "products: Product2 as an example: Product;", "products: Product3 as an example: Product;".
Другими словами, это является непрямым определением значения для автотега "продуктДляОшибки Автотег."In other words, this is an indirect definition of the value for the autotag "productFor AutoTag Errors."
Как было сказано выше, напрямую определенные значения для автотегов должны быть обновлены разработчиком программного обеспечения (или кем-нибудь еще с необходимыми полномочиями) каждый раз после создания или изменения объекта. Эти значения должны быть удалены после удаления соответствующих Объектов. Таким образом, если объект "Продукт4" будет добавлен (например, если создается или автоматически генерируется новая тройка "- продукты:Продукт1 а пример:Продукт;" и опционально добавляется в базу данных), то тройка "пример:пример:продуктДляОшибкиАвтотег автотег:значение продукты:Продукт1, продукты:Продукт2, продукты: Продукт3." должна быть заменена на тройку "пример:пример:продуктДляОшибкиАвтотег автотег:значение продукты: Продукт1, продукты:Продукт2, продукты:Продукт3, продукты:Продукт4." После того как будет создан новый Объект пользователем, для автотега ищутся новые значения посредством движка 305 с использованием метода "определения посредством правил" (здесь значения автотега являются результатом обработки данных/троек программным обеспечением).As mentioned above, directly defined values for autotags must be updated by the software developer (or by someone else with the necessary permissions) each time an object is created or modified. These values must be deleted after the removal of the corresponding Objects. Thus, if the object "Product4" is added (for example, if a new triple is created or automatically generated - products: Product1 and example: Product; "and optionally added to the database), then the triple" example: example: productFor Errors Auto tag: value Products: Product1, Products: Product2, Products: Product3. " should be replaced by the three "example: example: productFor Errors Auto tag: value products: Product1, products: Product2, products: Product3, products: Product4." After a new Object is created by the user, new values are searched for for the autotag using the
Например, если создается новый продукт, то он преобразовывается движком 305 как минимум в одну тройку, например в следующую тройку: "продукты:Продукт4 а пример:Продукт;", и другие необходимые тройки, такие как "продукты:Продукт4 cmw:заголовок " Программное обеспечение для управления событиями, версия 2.5". "Фильтр-Перехватчик Событий Действий с Объектом" 310, который является частью движка 305, перехватывает все события с Объектами. "Модуль Обработки Структурированных Данных" 315, который также является частью движка 305, переводит все события с Объектами в тройки). Во время создания Объекта для автотега ищутся приемлемые/возможные значения, соответствующие добавленному Объекту.For example, if a new product is created, it is converted by the
Стоит отметить, что тройки для нового или измененного Объекта могут быть добавлены в базу данных (или в ОЗУ и/или закэшированы) во время настройки параметров Объекта, т.е., если, как минимум, один из объектов создается или изменяется, то может быть сгенерирована одна или более троек и сохранена в базу данных до сохранения Объекта. Данный набор троек описывает объект, связи объекта с другими Объектами, хранилищем данных, где хранятся тройки объектов. Стоит отметить, что эти упомянутые тройки могут быть созданы/записаны вручную разработчиком, пользователем, администратором базы данных и т.д. Также такие тройки могут быть созданы программным обеспечением.It is worth noting that triples for a new or changed Object can be added to the database (or in RAM and / or cached) during the configuration of the Object parameters, i.e., if at least one of the objects is created or changed, it can one or more triples are generated and saved to the database before the Object is saved. This set of triples describes an object, relations of an object with other Objects, a data warehouse where triples of objects are stored. It is worth noting that these mentioned triples can be created / recorded manually by the developer, user, database administrator, etc. Also, such triples can be created by software.
Сохранение Объекта (хранение в ОЗУ, на жесткий диск, на Сетевое/Облачное хранилище и т.д.) может представлять собой промежуточное сохранение, например, когда параметры и атрибуты Объекта сохраняются во время настройки объекта. Также может быть выполнено полное сохранение, когда пользователь, системный администратор, разработчик, пользователь базы данных или администратор решает достаточно ли Объект модифицирован/настроен/сконфигурирован для текущих целей. Стоит отметить, что объект и его параметры могут быть изменены/переконфигурированы в будущем, например, может быть добавлена новая онтология, Объект может быть помечен как автотег и так далее.Saving the Object (storage in RAM, hard disk, Network / Cloud storage, etc.) can be an intermediate saving, for example, when the parameters and attributes of the Object are saved during the configuration of the object. Full saving can also be performed when the user, system administrator, developer, database user or administrator decides whether the Object is sufficiently modified / configured / configured for current purposes. It is worth noting that the object and its parameters can be changed / reconfigured in the future, for example, a new ontology can be added, the Object can be marked as an autotag, and so on.
Стоит отметить, что приемлемые/возможные значения для автотега могут быть найдены не только после создания Объекта, но и во время поискового запроса (поисковый запрос(ы) будет обсуждаться ниже) от пользователя (на самом деле, система отправляет запрос на поиск данных (преобразованный из пользовательского поискового запроса) -> для этих данных ищутся автотеги -> значения автотегов ищутся с использованием предикатов автотегов -> значения автотегов используются для поиска Объектов для формирования ответа в запрос от системы на поиск). Так что, как было описано выше, правило используется для поиска значений автотегов (так называемое вычисление автотегов), которые необходимы для поиска Объектов по поисковым словам.It is worth noting that acceptable / possible values for the autotag can be found not only after creating the Object, but also during the search request (search request (s) will be discussed below) from the user (in fact, the system sends a request to search for data (converted from a user search query) -> auto-tags are searched for this data -> auto-tag values are searched using auto-tag predicates -> auto-tag values are used to search for Objects to form a response to a search request from the system). So, as described above, the rule is used to search for auto-tag values (the so-called auto-tag calculation), which are necessary for searching for Objects using search words.
Таким образом, метод определения посредством правил (метод непрямого определения) заменяет ручное добавление значений автотегов. Стоит отметить, что метод определения посредством правил не ограничивает возможность ручного добавления троек, включая части утверждений, включая свойства/атрибуты и значения. Также стоит отметить, что ручное добавление троек не ограничивает возможность автоматического добавления троек, включая части утверждений, включая свойства/атрибуты и значения.Thus, the rule-based determination method (indirect determination method) replaces the manual addition of auto-tag values. It is worth noting that the method of determining by rules does not limit the ability to manually add triples, including parts of statements, including properties / attributes and values. It is also worth noting that manually adding triples does not limit the ability to automatically add triples, including parts of statements, including properties / attributes and values.
Комбинация ручного и автоматического/программного методов добавления/создания троек может быть использована для тонкой настройки/более детального описания Объектов или системы в целом (например, такой системой может быть система отслеживания и исправления ошибок в пользовательской сервисной системе, система управления персоналом и т.д.). Также, она может быть использована для автоматизации описания/определения объекта, например, в случае дублирующихся параметров Объектов с использованием параметром похожих/связанных объектов, похожих троек, включая онтологии. Онтологии используются для описательной информации Объекта, которая может быть получена путем вычисления (из правил) и может быть прописана в коде в виде аксиом. Для Объекта возможно использовать несколько онтологий, а для нескольких Классов может быть использована одна онтология, например, для похожих Классов.The combination of manual and automatic / software methods for adding / creating triples can be used to fine-tune / more detailed description of Objects or the system as a whole (for example, such a system can be a system for tracking and correcting errors in a user service system, a personnel management system, etc. .). Also, it can be used to automate the description / definition of an object, for example, in the case of duplicate parameters of Objects using the parameter of similar / related objects, similar triples, including ontologies. Ontologies are used for descriptive information of the Object, which can be obtained by calculation (from the rules) and can be written in the code as axioms. It is possible to use several ontologies for an Object, and one ontology can be used for several Classes, for example, for similar Classes.
Касательно метода определения посредством правил, следует отметить, что в особом случае может быть использовано другое правило, а именно для автотега серьезности ошибки: . Данное правило используется для поиска следующих значений автотега: критичностьОшибки:низкая, критичностьОшибки:средняя и критичностьОшибки:высокая для автотега серьезности ошибка.Regarding the method of determining by rules, it should be noted that in a special case, another rule can be used, namely for the autotag of the severity of the error: . This rule is used to search for the following auto-tag values: criticality Errors: low, criticality Errors: medium and criticality Errors: high for auto-tag severity error.
Далее, еще один пример автотега (для автора) включает поиск значений автотега:Further, another example of an autotag (for an author) includes a search for autotag values:
В этих двух строках вводится атрибут свойства (некий вид флага) для атрибутАккаунтаТег. Каздый создатель ошибки отмечается данным флагом, т.е. у каждого создателя будет атрибут свойства атрибутАккаунтаТег. These two lines introduce the property attribute (some kind of flag) for the AccountAttribute tag. Each error creator is flagged with this flag, i.e. each creator will have an attribute attribute AccountTag.
В левой части данного правила находится формула, и формула состоит из двух утверждений. В первом утверждении выполняется поиск всех предметов с атрибутАккаунтаТег в качестве атрибута свойства. Во втором утверждении выполняется поиск всех предметов, которые связаны с предикатом имяСвойства, и эти предметы сохраняются в переменные "?свойство" и "?имя". Таким образом, все предметы, найденные и сохраненные в переменные, передаются в правую часть правила. Другими словами, будут найдены все пары для предиката имяСвойства и переданы в правую часть правила.On the left side of this rule is a formula, and the formula consists of two statements. The first statement searches for all items with the AttributeTag attribute as a property attribute. The second statement searches for all objects that are associated with the predicate name Property, and these objects are stored in the variables "? Property" and "? Name". Thus, all objects found and stored in variables are transferred to the right side of the rule. In other words, all pairs for the predicate PropertyName will be found and passed to the right side of the rule.
Первые два утверждения в правой части правила гласят, что все вещи, найденные в левой части правила, являются автотегами и предикатами автотегов. Третье утверждение состоит из использования данных, сохраненных в переменной ?имя в качестве автотегов. Четвертое утверждение объявляет Аккаунт в качестве типа автотега.The first two statements on the right side of the rule state that all things found on the left side of the rule are auto-tags and predicates of auto-tags. The third statement consists of using the data stored in the variable? Name as autotags. The fourth statement declares the Account as a type of autotag.
Как было сказано выше, такой метод позволяет определять/объявлять свойства, имена, типы, предикаты и т.д. автотега.As mentioned above, this method allows you to define / declare properties, names, types, predicates, etc. autotag.
Ниже описан пример непрямого определения значений автотегов:The following is an example of indirectly determining auto-tag values:
В первом утверждении левой части правила выполняется поиск всех предметов с автотегами типа аккаунт. Во втором утверждении правила выполняется поиск всех предметов, которые являются аккаунтами, т.е. Объектов, используемых в качестве экземпляров Класса аккаунт:Аккаунт.In the first statement of the left part of the rule, a search is performed for all items with auto-tags like account. The second statement of the rule searches for all items that are accounts, i.e. Objects used as instances of the Class account: Account.
Все предметы, сохраненные в "?аккаунт" в левой части правила являются значениями автотега в правой части правила.All items stored in the "? Account" on the left side of the rule are auto-tag values on the right side of the rule.
До этого момента для автотега был описан только один предикат, однако у автотега может быть больше одного предиката, так что область поиска по автотегу может быть значительно расширена. Все предикаты автотега принадлежат одной общей группе, которая, в свою очередь, может быть разделена на нескоько групп для расширения возможностей поиска.Up to this point, only one predicate has been described for an autotag, however, an autotag can have more than one predicate, so the search area for an autotag can be significantly expanded. All autotag predicates belong to one common group, which, in turn, can be divided into several groups to expand search capabilities.
Пример определения нескольких предикатов для одного автотега (в данном случае для "пример:пользовательСвязанныйсОшибкойАвтотег"):An example of defining several predicates for a single autotag (in this case for "example: user Associated with an Error AutoTag"):
Здесь создается автотег с URI "пример:пользовательСвязанныйсОшибкойАвтотег". Этот автотег используется для установления связи(ей) между человеком и ошибкой. Такие связи могут быть представлены ошибкой и создателем ошибки (в некоторых вариантах изобретения создатель ошибки является человеком, который обнаружил ошибку и/или создал Объект Ошибка). Разработчик, корректор ошибок, пользователь, администратор БД или системный администратор, оператор и другие могут быть такими людьми. Следующие утверждения показывают, что некоторые люди могут быть связаны с ошибкой, например, создатель ошибки и разработчик/или корректор ошибок, которые исправят данную ошибку. Другими словами, в данном случае ошибка может быть связана с или назначена человеку, отвечающему за данную ошибку.This creates an autotag with the URI "example: user Associated with Error AutoTag". This autotag is used to establish the connection (s) between the person and the error. Such relationships may be represented by the error and the error creator (in some embodiments of the invention, the error creator is the person who discovered the error and / or created the Error Object). A developer, an error corrector, a user, a DBA, or a system administrator, an operator, and others can be such people. The following statements show that some people may be associated with the error, for example, the error creator and the developer / or error corrector that will correct the error. In other words, in this case, the error can be associated with or assigned to the person responsible for this error.
Здесь для автотега "пример:пользовательСвязанныйсОшибкойАвтотег." определены два предиката автотега "cmw:создатель" и "пример:корректорОшибок". Предикаты автотега являются характеристиками автотега. На основе предикатов можно сказать, какой области поиска принадлежит автотег. Другими словами, предикаты автотега определенного предиката принадлежат одному типу. В данном примере предикаты автотега cmw:создатель и пример:корректорОшибок, который идентифицируют лицо/человека (например, для автотега "пользовательСвязанныйсОшибкойАвтотег"). В предыдущем примере видно, что значения ?свойство были получены с использованием тройки "?свойство cmw:атрибутыСвойства автотепатрибутАккаунтаТег" и используется один тип ?свойство. Далее в примере значения ?свойство используются в качестве предикатов автотега.Here for the autotag "example: user Associated with Error AutoTag." two predicates of the autotag "cmw: creator" and "example: error corrector" are defined. Auto tag predicates are auto tag features. Based on predicates, you can tell which search region an autotag belongs to. In other words, the autotag predicates of a particular predicate belong to the same type. In this example, the predicates of the cmw auto tag: creator and example: Error corrector that identifies a person / person (for example, for the user tag "User Associated with Error AutoTag"). The previous example shows that the values of the? Property were obtained using the triple "? Property cmw: attributesProperties auto-attributeAccountTag" and one type? Property is used. In the following example, the values of the? Property are used as autotag predicates.
Все предметы (здесь - аккаунты) ищутся в левой части правила. Все найденные предметы (которые были записаны в "Раккаунт") являются значениями автотега для автотега пример:пользовательСвязанныйсОшибкойАвтотег в правой части правила.All items (here - accounts) are searched on the left side of the rule. All items found (which were recorded in the "Raccount") are auto-tag values for the auto-tag example: user Associated with Error Auto-tag on the right side of the rule.
- # Примеры запросов. Информация, введенная пользователем (в ГИП) для поиска, будет преобразована в запрос, например, после того как пользователь щелкнет на кнопке "Поиск".- # Examples of queries. Information entered by the user (in the GUI) for the search will be converted into a query, for example, after the user clicks on the "Search" button.
- @префикс запрос: <http://comindware.com/ontology/query#>.- @ prefix request: <http://comindware.com/ontology/query#>.
- # Пример запроса для "Или" и "И"- # Example request for "Or" and "And"
- # Найти по Продукту1 или Продукту2 и КритичностьОшибки:Высокая//точное- # Find by Product1 or Product2 and Criticality Errors: High // Exact
Далее представлен пример поискового запроса ошибок со статусом высокой серьезности и связанных с продуктами "Продукт1" и "Продукт2".The following is an example of a search query for errors with high severity status and associated with Products1 and Product2.
В первом утверждении левой части правила ищутся все пары с общим предикатом "пример:продукт". Второе утверждение представляет собой сложное утверждение и написан с использованием Языка Comindware. В данном примере Язык Comindware позволяет использовать логический оператор "или" для "продукты:Продукт1" и " продукты:Продукт2" в качестве переменной "?продукт". Другими словами, первые утверждения, записанные выше, могут быть описаны как: найти все пары "?х + ?продукт" с предикатом "пример:продукт", где переменная "?продукт" может быть значением "продукты:Продукт1" или значением "продукты:Продукт2". Все предметы (в данном случае ошибки) с со статусом высокой серьезности будут найдены в третьем утверждении правила (в левой части правила).In the first statement of the left part of the rule, all pairs with the common predicate "example: product" are searched. The second statement is a complex statement and is written using the Comindware Language. In this example, the Comindware language allows you to use the logical operator "or" for "products: Product1" and "products: Product2" as the variable "? Product". In other words, the first statements written above can be described as: find all pairs "? X +? Product" with the predicate "example: product", where the variable "? Product" can be the value "products: Product1" or the value "products" : Product2 ". All items (in this case errors) with a status of high severity will be found in the third statement of the rule (on the left side of the rule).
В правой части правила все найденные предметы записываются в переменную "?х" и являются результатом запроса "запрос:42".On the right side of the rule, all items found are recorded in the variable "? X" and are the result of the query "query: 42".
Здесь "запрос:42" является интерпретацией поиска пользовательским поисковым запросом. Приведенный выше пример описывает поиск всех ошибок для "Продукт1" и "Продукт2". Данный пример может рассматриваться как: пользователь вводит "высокая" в качестве поискового слова в текстовое поле ГИП; система ассоциирует введенное слово, по крайней мере, с одним элементом утверждения (в данном случае с "критичностьОшибки:высокая"), основываясь на анализе утверждения. Утверждение "критичностьОшибки:высокая cmw:имяЗначения "Высокая" может быть одним из таких проанализированных утверждений. Элемент утверждения будет связан системой с предикатом "автотег:значение" (это видно из утверждения "пример:критичностьОшибкиАвтотег автотег:значение критичностьОшибки:низкая, критичностьОшибки:средняя, критичностьОшибки:высокая.").Here, “query: 42” is an interpretation of a search by a user search query. The above example describes the search for all errors for "Product1" and "Product2". This example can be considered as: the user enters "high" as a search word in the GUI text field; the system associates the entered word with at least one element of the statement (in this case, “criticality Errors: high”) based on the analysis of the statement. The criticality statement Errors: high cmw: highValue name can be one of the following assertions. The statement element will be associated with the predicate “autotag: value” (this can be seen from the statement “example: criticality Errors Auto tag: value criticality Errors: low, criticality Errors: medium , criticality Errors: high. ").
Далее система найдет все Объекты с помощью указанного правила, как минимум, для одного из упомянутых предикатов автотега (в данном случае предикат "пример:критичностьОшибки" из утверждения "пример:критичностьОшибкиАвтотег автотег:предикат пример:критичностьОшибки;"). Стоит отметить, что может быть использован любой тип запроса читаемого компьютером/процессором/приложением. Здесь запрос характеризует и описывает запрос от пользователя, а результат(ы) поиска автотегов сохраняются в переменную "?х".Then the system will find all the Objects using the specified rule, for at least one of the mentioned autotag predicates (in this case, the predicate "example: criticality Errors" from the statement "example: criticality Errors Auto tag: predicate example: criticality Errors;"). It is worth noting that any type of request read by a computer / processor / application can be used. Here, the request characterizes and describes the request from the user, and the result (s) of the search for autotags are stored in the variable "? X".
Следующий пример является альтернативной реализацией поискового запроса для ошибок, имеющих статус высокой серьезности и относящихся к продуктам "Продукт1" и "Продукт2".The following example is an alternative implementation of a search query for errors of high severity status that relate to Products1 and Product2.
Здесь реализован метод с использованием "список:член" вместо "или". Как в приведенном выше примере, первые два утверждения могут быть описаны как: найти все пары "?х + ?продукт" с предикатом "пример:продукт", где переменная "?продукт" может иметь значения "продукты:Продукт1" или "продукты:Продукт2".A method is implemented here using list: member instead of or. As in the example above, the first two statements can be described as: find all pairs "? X +? Product" with the predicate "example: product", where the variable "? Product" can have the values "products: Product1" or "products: Product2 ".
Далее следует пример поиска всех предикатов автотегов, которые связаны с поисковым словом, и всех значений автотегов, которые используются для поиска Объекта.The following is an example of searching for all autotag predicates that are associated with a search word, and all autotag values that are used to search for an Object.
В данном примере строка "в ?тег, ?значения." в соответствии с используемым синтаксисом означает, что значения "?тег" и "?значения" должны быть определены до того, как будут использованы в формулах. Другими словами, в приведенном ниже примере эти переменные определяются в утверждении "(пример:критичностьОшибкиАвтотег (критичностьОшибки:высокая)) запрос: автотегЗапрос ?х.".In this example, the string "in? Tag,? Values." according to the syntax used, means that the values of "? tag" and "? values" must be defined before they are used in formulas. In other words, in the example below, these variables are defined in the statement "(example: criticality Errors Auto tag (criticality Errors: high)) query: auto tag Request? X.".
Второе правило схоже с приведенным выше примером запроса/поискового запроса на поиск Объекта. Сам поиск Объекта выполняется в первой формуле, в которой найденные объекты сохраняются в "?х"; и "?значения" и "?тег" из второго правила используются в качестве входных параметров. Другими словами, первое правило вызывается из второго правила с определенными параметрами - значениями "?тег" и "?значения".The second rule is similar to the above example query / search query to search for an Object. The search for the Object itself is performed in the first formula, in which the found objects are stored in "? X"; and "? values" and "? tag" from the second rule are used as input parameters. In other words, the first rule is called from the second rule with certain parameters - the values "? Tag" and "? Values".
В левой части первого правила: выполняется поиск пар с общим предикатом "автотег:предикат". И элементы утверждения ("пример:пример:продуктДляОшибкиАвтотег" и URI "пример:критичностьОшибкиАвтотег") используются в качестве входных параметров для ?тег. В связи с тем, что приведенный выше исходный код содержит тройку "пример:критичностьОшибкиАвтотег автотег:предикат пример:критичностьОшибки;", пара "пример:критичностьОшибкиАвтотег + пример:критичностьОшибки" будет одной из найденных пар, а пара "пример:пример:продуктДляОшибкиАвтотег + пример:продукт" будет второй найденной парой, как это можно увидеть из представленного исходного кода.In the left part of the first rule: pairs with the common predicate "autotag: predicate" are searched. And the statement elements ("example: example: product For Errors Auto tag" and URI "example: criticality Errors Auto tag") are used as input parameters for the? Tag. Due to the fact that the above source code contains the triple “example: criticality Errors Auto tag auto tag: predicate example: critical Error Errors;”, couple “example: criticality Errors Auto tag + example: criticality Errors” will be one of the found pairs, and couple “example: example: product For Errors Auto tag + example: product "will be the second pair found, as you can see from the source code provided.
В правой части первого правила содержимое скобок (?тег ?значения) являются массивом/списком из двух элементов/переменных. Стоит отметить, что список или последовательность - являются абстрактными типами данных, которые реализуют конечный упорядоченный набор значений, где одинаковые значения могут встречаться более одного раза. Экземпляр списка является компьютерные представлением математической концепции конечной последовательности; бесконечным (потенциально) аналогом списка является стрим. Все найденные предметы (и сохраненные в переменную "?х") в левой части второго правила являются результатом поискового запроса "запрос:42".On the right side of the first rule, the contents of the brackets (? Tag? Values) are an array / list of two elements / variables. It is worth noting that a list or sequence is an abstract data type that implements a finite ordered set of values, where the same values can occur more than once. An instance of a list is a computer representation of the mathematical concept of a finite sequence; an infinite (potentially) counterpart to a list is a stream. All items found (and stored in the variable “? X”) on the left side of the second rule are the result of the search query “query: 42”.
Стоит отметить, что в первом утверждении левой части второго правила "(пример:пример:продуктДляОшибкиАвтотег (продукты:Продукт1 продукты:Продукт2))" является списком из двух элементов, где первый элемент - это "пример:пример:продуктДляОшибкиАвтотег" и второй элемент - список/массив, состоящий из элементов "продукты:Продукт1", "продукты:Продукт2".It is worth noting that in the first statement of the left part of the second rule "(example: example: productFor ErrorsAutotag (products: Product1 products: Product2))" is a list of two elements, where the first element is "example: example: productFor ErrorsAutotag" and the second element - list / array consisting of the elements "products: Product1", "products: Product2".
Ниже приведен пример транзитивного автотега. Транзитивный автотег может быть использован для поиска Объекта, где Объекты связаны с другими Объектами. Например, такие автотеги могут быть использованы для поиска Объектов в группе Объектов. Группа Объектов может быть создана для нескольких Объектов с целью обеспечения связей/отношений между Объектами. В данном случае такие связанные Объекты (например, связанные, как минимум, одной группой/семейством) могут быть найдены по характеристике, которая далее может быть использована в качестве предиката автотега. В данном случае предикаты "пример:семействоПродуктов" могут быть использованы для установления принадлежности объекта, как минимум, к одной группе/семейству. Стоит отметить, что некоторые общие атрибуты/свойства Объектов могут быть описаны и использованы для всех Объектов, входящих в группу, например, для серьезности/приоритета ошибки или задачи, принадлежащих одному продукту и т.д.The following is an example of a transitive autotag. Transitive autotag can be used to search for an Object where the Objects are linked to other Objects. For example, such autotags can be used to search for Objects in the Object group. A group of Objects can be created for several Objects in order to provide links / relationships between Objects. In this case, such related Objects (for example, related by at least one group / family) can be found by the characteristic, which can then be used as a predicate of an autotag. In this case, the predicates “example: family of Products” can be used to establish that an object belongs to at least one group / family. It is worth noting that some common attributes / properties of Objects can be described and used for all Objects in the group, for example, for the severity / priority of an error or task belonging to the same product, etc.
В данной части кода элемент утверждения "пример:СемействоПродуктов" определен как Класс. Далее "семействаПродуктов:Семейство1" и "семействаПродуктов: Семейство1" определено как экземпляры "пример:СемействоПродуктов". Также вводится понятие семейства продуктов. Такие семейства могут быть использованы для поиска Объектов (продуктов в данном случае), которые включаются в семейство. Это может быть реализовано путем декларирования свойства элемента утверждения и использовано для поиска ошибок, которые связаны с семейством, например, продуктов, которые относятся к Корпоративным продуктам. Такие свойства могут быть использованы в качестве значений автотегов для поиска Объектов. Как было сказано выше, Объект имеет упомянутые атрибуты, такие как имя, свойства атрибутов, типы свойств и т.д. Стоит отметить, что некоторые атрибуты могут быть назначены Объекту по умолчанию, например, путем использования онтологий, которые могут содержать факты и/или правила.In this part of the code, the statement element “Example: Product Family” is defined as Class. The following are “Product families: Family1” and “Product families: Family1” are defined as instances of “Example: Product Family”. The concept of a product family is also introduced. Such families can be used to search for Objects (products in this case) that are included in the family. This can be implemented by declaring the properties of the approval element and used to search for errors that are associated with the family, for example, products that relate to Corporate products. Such properties can be used as auto tag values for searching for Objects. As mentioned above, the Object has the mentioned attributes, such as name, attribute properties, property types, etc. It is worth noting that some attributes can be assigned to the Object by default, for example, by using ontologies that may contain facts and / or rules.
Также стоит отметить, что могут быть использованы дополнительные правила (вне онтологий). Например, имя атрибута Объекта может быть назначено из системных данных, внешнего приложения/модуля, объединены из другого имени Объекта или атрибута или свойства. Например, счетчик (каждый Объект может быть пронумерован согласно счетчику) или текущая дата могут быть использованы для добавления в атрибут Объекта, например, Объект 001, Объект 002 или Ошибка_10_10_2014.It is also worth noting that additional rules can be used (outside ontologies). For example, the attribute name of the Object can be assigned from system data, an external application / module, combined from another name of the Object or attribute or property. For example, a counter (each Object can be numbered according to the counter) or the current date can be used to add to the attribute of the Object, for example, Object 001, Object 002 or Error_10_10_2014.
Результат данного правила будет состоять из связи ошибок "?ошибка" с продуктами (или точнее семейство продуктов "?семейство") по предикату "пример:транзитивныйОшибкаВПродуктВСемействоПредикат", и кроме этого в левой части правила выполняется поиск "?ошибка" "?семейство".The result of this rule will consist of associating errors "? Error" with products (or more precisely family of products "? Family") using the predicate "example: transitive Error in Product in Family Predicate", and besides this, the search for "? Error" "? Family" is performed in the left part of the rule.
Далее приведен пример определения автотега для свойства, представленного выше.The following is an example of the definition of autotag for the property presented above.
Данное правило является еще одной демонстрацией автоматического поиска значений автотегов без необходимости определять их вручную, хотя реализация данного изобретения также позволяет использование вручную написанных автотегов и их предикатов, значений и т.д. Стоит отметить, что одна из реализаций данного изобретения позволяет комбинирование всех их. В приведенных выше примерах поиск Объектов выполняется среди всех возможных автотегов и всех автотегов, которые ассоциируются с поисковым словом. Однако, пользователь может выбрать, по крайней мере, одну из поисковых областей (ФИГ. 5), которая может быть использована для поиска Объектов. Поиск Объектов в обозначенной области поиска может быть реализован с помощью использования правил.This rule is another demonstration of the automatic search for autotag values without the need to define them manually, although the implementation of the present invention also allows the use of manually written autotags and their predicates, values, etc. It is worth noting that one of the implementations of this invention allows the combination of all of them. In the above examples, the Search for Objects is performed among all possible autotags and all autotags that are associated with the search word. However, the user can select at least one of the search areas (FIG. 5), which can be used to search for Objects. Search for Objects in the designated search area can be implemented using rules.
Согласно примерному варианту реализации имена предикатов автотегов могут быть отображены пользователю в виде областей поиска посредством ГИП. Например, введенное пользователем слово "высокая" является именем "критичностьОшибки:высокая" (как видно из утверждения "пример:критичностьОшибки cmw:вариантЗначения (критичностьОшибки:низкая критичностьОшибки:средняя критичностьОшибки:высокая)." и "критичностьОшибки:высокая cmw:вариантЗначения "Высокая"."). В свою очередь, свойство важность/критичность ошибки имеет имя "Критичность Ошибки" (см. утверждение выше: "пример:критичностьОшибки cmw:имяСвойства "Критичность Ошибки ";"). Это имя может быть использовано в качестве области поиска. Также, как видно из исходного кода, критичность ошибки является предикатом автотега (см. утверждение выше: "пример: критичностьОшибкиАвтотег автотег:предикат пример: критичностьОшибки;"), и автотег имеет имя "Критичность" (утверждение из исходного кода: "пример: критичностьОшибкиАвтотег автотег:имя "Критичность";"), которое также может быть показано пользователю в качестве области поиска.According to an exemplary embodiment, the names of the autotag predicates can be displayed to the user in the form of search areas using the GUI. For example, the word “high” entered by the user is the name “criticality Errors: high” (as seen from the statement “example: criticality Errors cmw: optionValues (criticality Errors: low criticality Errors: medium criticality Errors: high).” And “criticality Errors: high cmw: variant Values“ High "."). In turn, the importance / criticality of the error property has the name "Error Criticality" (see the statement above: "example: criticality Errors cmw: property name" Error Criticalism ";"). This name can be used as a search field. Also, as can be seen from the source code, the criticality of the error is a predicate of the autotag (see the statement above: “example: criticality Errors Auto tag: auto predicate: predicate example: critical Errors;”), and the automatic tag is named “Critical” (statement from source code: “example: criticality Errors Auto tag autotag: name "Criticality"; "), which can also be shown to the user as a search area.
Поиск по автотегам может быть выполнен, по крайней мере, тремя способами:Auto tag searches can be performed in at least three ways:
- пользователь знает свойство объекта, по которому он желает произвести поиск; напри мер, по "исполнителю" или "менеджеру". Если пользователь выбирает "менеджер", то система предложит пользователю один из автотегов, ассоциирующихся с выбранным свойством Объекта, например, "ИмяМенеджера". После того как пользователь выбирает соответствующий автотег и затем выбирает из списка имя пользователя, то систем а сохранит автотег и значение автотега (также может быть сохранен предикат автотега). Эти сохраненные данные могут быть использованы для дальнейшего поиска Объектов и/или для поиска всех объектов, связанных с текущим Объектом.- the user knows the property of the object by which he wants to search; for example, by “executor” or “manager”. If the user selects "manager", the system will offer the user one of the autotags associated with the selected property of the Object, for example, "ManagerName". After the user selects the corresponding autotag and then selects the username from the list, the system will save the autotag and autotag value (the autotag predicate can also be saved). This stored data can be used to further search for Objects and / or to search for all objects associated with the current Object.
- пользователь знает точно, кого/что необходимо найти (т.е. он знает имя Объекта). Пользователь может ввести "Билл", и система предоставит ему такие автотеги, как "исполнитель", "менеджер" и другие автотеги, ассоциирующиеся с введенным поисковым словом "Билл". В данном случае известно имя объекта, и для него ищутся соответствующие автотеги. Затем процесс поиска выполняется, как было описано в предыдущем параграфе.- the user knows exactly who / what needs to be found (i.e., he knows the name of the Object). The user can enter “Bill”, and the system will provide him with auto tags such as “artist”, “manager” and other auto tags associated with the entered search word “Bill”. In this case, the name of the object is known, and the corresponding auto tags are searched for it. Then the search process is performed as described in the previous paragraph.
- Пользователь может ввести поисковое слово, но он не знает, какая область поиска ему подходит, так что он может выбрать поиск во всех автотегах, используя логический оператор "ИЛИ". В данном случае пользователю будут показаны все результаты поиска (предикаты которых связаны с поисковым словом).- The user can enter the search word, but he does not know which search area suits him, so he can select the search in all autotags using the logical operator "OR". In this case, the user will be shown all the search results (whose predicates are associated with the search word).
Часть несколько автотегов может принадлежать набору(ам) автотегов. Другими словами, набор автотегов может быть создан/описан для серьезности ошибки, для продукта и так далее. Значения автотегов из набора автотегов будут принадлежать этому набору автотегов. В зависимости от того, осуществляется ли поиск по Объектам, принадлежащим одному или нескольким разным наборам, поиск автотегов выполняется с использованием логических операторов "И" и "ИЛИ". Оператор "ИЛИ" используется для поиска Объектов со значениями автотегов из того же набора автотегов. Например, если пользователь хочет найти ошибку с критичностью "Высокая" и "Низкая", то будет использован оператор "ИЛИ", и запрос может быть интерпретирован как "поиск по всем ошибкам, приоритет которых Высокий ИЛИ Низкий". Оператор "И" обычно используется для объединения поисковых запросов из различных наборов автотегов. В рамках данного изобретения автотег может быть определен предикатом автотега, свойством автотега, свойством Объекта.A portion of several auto tags may belong to a set (s) of auto tags. In other words, a set of autotags can be created / described for the severity of the error, for the product, and so on. The autotag values from the autotag set will belong to this autotag set. Depending on whether a search is performed on Objects belonging to one or several different sets, the search for autotags is performed using the logical operators "AND" and "OR". The OR operator is used to search for Objects with autotag values from the same autotag set. For example, if the user wants to find an error with the criticality of "High" and "Low", then the "OR" operator will be used, and the query can be interpreted as "search for all errors whose priority is High OR Low." The AND operator is typically used to combine search queries from various sets of autotags. In the framework of this invention, an autotag can be defined by an autotag predicate, an autotag property, an Object property.
Содержимое Объекта может быть проанализировано в процессе поиска Объекта, т.е. текст основного тела Объекта, содержимое текстовых полей Объекта, прикрепленные документы могут быть разобраны во время поиска Объекта. Разбор или синтаксический анализ является процессом анализа строки символов, либо на естественном языке, либо на компьютерных языках, в соответствии с правилами формальной грамматики. Взамен разбора может быть проведен поиск в таких элементах на этих языках. Такой поиск или разбор может быть обеспечен сторонними модулями (в дополнение к поисковой системе, которая, например, может предоставить полный поиск в Объектах). Однако для такого поиска могут быть созданы автотеги, например, для поиска данных в содержимом Объекта.The contents of the Object can be analyzed in the process of searching for the Object, i.e. the text of the main body of the Object, the contents of the text fields of the Object, attached documents can be parsed during the search for the Object. Parsing or parsing is the process of analyzing a string of characters, either in natural language or in computer languages, in accordance with the rules of formal grammar. Instead of parsing, a search can be made in such elements in these languages. Such a search or parsing can be provided by third-party modules (in addition to a search engine, which, for example, can provide a full search in Objects). However, for such a search, auto tags can be created, for example, to search for data in the contents of the Object.
Такие автотеги могут отражать характер или эмоции данных/содержимого. Такие значения автотегов могут быть описаны на основе анализа данных объекта, например, такие данные могут содержаться в описании Объекта, во вложениях Объекта и т.д. Так что, если данные объекта или вложения содержат элементы содержимого (слов или набор слов) "А", "В", "С" и "D," то "ABCDE" можно рассматривать в качестве значения Автотега. Такое суммарное содержимое может быть ужато перед использованием в качестве значения автотега, например, оно может быть закэшировано. Такие элементы содержимого могут являться общими элементами в различных содержимых Объектов. Так что выводы могут быть сделаны на основе данных Объекта, и эти выводы могут быть использованы в качестве значений автотегов. Для анализа, описанного выше, может быть использован семантический анализ данных объектов.Such autotags may reflect the nature or emotions of the data / content. Such autotag values can be described based on an analysis of the object's data, for example, such data can be contained in the description of the Object, in the attachments of the Object, etc. So, if the data of an object or attachment contains content elements (words or a set of words) of "A", "B", "C" and "D," then "ABCDE" can be considered as the AutoTag value. Such summarized content may be shrunk before being used as an autotag value, for example, it may be cached. Such content elements may be common elements in various Content Objects. So conclusions can be made based on the data of the Object, and these conclusions can be used as values of autotags. For the analysis described above, semantic analysis of these objects can be used.
Следует отметить, что описанный выше пример изобретения (когда пользователь инициирует процесс поиска Объектов) также называется поиском по требованию и налету. Стоит отметить, что ранее найденные автотеги, значений автотегов и предикаты автотегов могут быть использованы в дальнейшем поиске данных/предметов, который может быть инициирован пользователем или системой. Такие найденные автотеги, предикаты автотегов и значения автотегов могут быть использованы для поиска Объектов (которые соответствуют пользовательским поисковым словам и выбранным параметрам), которые не менялись после последнего поискового запроса.It should be noted that the above-described example of the invention (when the user initiates the process of searching for Objects) is also called on-demand and on-demand search. It is worth noting that previously found autotags, autotag values, and autotag predicates can be used in a further search for data / items that can be initiated by the user or the system. Such found auto-tags, auto-tag predicates, and auto-tag values can be used to search for Objects (which correspond to custom search words and selected parameters) that have not changed since the last search query.
В данном случае метод поиска по требованию обеспечивает релевантные результаты поиска, и нет необходимости запускать новый процесс поиска. Стоит отметить, что изменившиеся после последнего поиска объекты могут быть отмечены в списке изменившихся Объектов. Список изменившихся объектов может быть использован во время поиска по требованию для сигнала системе - для каких Объектов требуется найти заново значения автотегов, а для каких Объектов значения автотегов являются релевантными.In this case, the on-demand search method provides relevant search results, and there is no need to start a new search process. It is worth noting that objects that changed after the last search can be marked in the list of changed Objects. The list of changed objects can be used during an on-demand search for a signal to the system - for which Objects it is necessary to find the values of autotags again, and for which Objects the values of autotags are relevant.
ФИГ. 3 иллюстрирует алгоритм обработки данных, согласно одному варианту реализации изобретения. Система Обработки Объекта 305 в сочетании с ГИП используется для того, чтобы позволить пользователю создавать, удалять и редактировать Объекты. Система 305 посредством использования Модуль 315 преобразует действия пользователя над Объектами в тройки и сохраняет их в Базу данных 390.FIG. 3 illustrates a data processing algorithm according to one embodiment of the invention. The
Тройки хранятся в базе(ах) данных, которая может храниться на хранилище данных, таком как локальное хранилище данных, облачное хранилище в облачных сервисах, SAN, NAS, различные веб-сервисы и другие. Также стоит отметить, что любая известная система хранения данных (например, сериализация данных может быть использована для хранения данных, например, в формате xml) может быть использована вместо Базы данных. Тройки могут быть сохранены в формате базы данных или в формате троек.The triples are stored in the database (s) that can be stored on a data warehouse, such as a local data warehouse, cloud storage in cloud services, SAN, NAS, various web services and others. It is also worth noting that any known data storage system (for example, data serialization can be used to store data, for example, in xml format) can be used instead of the Database. The triples can be saved in database format or in triples format.
Пользователь может создать новую задачу с заголовком "Добавить новое цветное изображение с мобильным устройством в папку продукта" для сотрудника "Максим" (который является ее исполнителем) и связать данную задачу с продуктом, например, "Comindware Process,", т.е. это свяжет задачу с продуктом, которому принадлежит задача. Также пользователь может изменить статус (с "Открыта" на "Закрыта"), заголовок и другие свойства Объекта. В данном случае, Система 305 преобразует результат действий пользователя в тройки, так что, например, будет создана тройка "Задача статус Закрыта" и заменит тройку " Задача статус Открыта" в базе данных 390. Действия с объектами (например, редактирование, создание, удаление, перемещение Объекта между группами и т.д. пользователем; или системой, например, удаление Объекта после трех лет после его создания; или приложением, например, сторонним приложением/модулем, таким как "Comindware Project") отслеживаются модулем Фильтр Событий-Перехватчик Действий С Объектом 310. Одной из задач данного модуля является отслеживание необходимости маркирования/снятия маркировки с Объекта как потенциального для генерирования автотега. В качестве примера действий, инициированных системой/приложением, может быть рассмотрено автоматическое закрытие ошибки после прекращения технической поддержки продукта (для которого была создана ошибка). Еще одним примером таких действий является создание ошибки (и/или создание задачи для данной ошибки) системой/приложением после обнаружения ошибки пользователем или программным отладчиком, или посредством функции "try-catch".The user can create a new task with the heading "Add a new color image with a mobile device to the product folder" for the employee "Maxim" (who is its executor) and associate this task with the product, for example, "Comindware Process," i.e. this will associate the task with the product to which the task belongs. Also, the user can change the status (from "Open" to "Closed"), the title and other properties of the Object. In this case,
Система 305 также отправляет, как минимум, один запрос к Системе Обработки Автотегов 320 для поиска Объекта, согласно поисковому слову. Запрос инициирует процесс поиска Объекта (в Системе 320) путем использования правил, упомянутых выше, для поиска значений автотегов. "Запрос" может рассматриваться в качестве примера такого запроса. Результатом работы Системы 320 является, как минимум, один найденный Объект. Стоит отметить, что "нулевой" результат может быть получен от Системы 320 в том случае, если в процессе поиска Объектов не будет найден ни один Объект.
Согласно примерному варианту реализации, автотеги, предикаты автотегов и значения автотегов могут быть сохранены в ОЗУ, включая опциональное их кэширование. Такие, сохраненные в ОЗУ данные, могут быть использованы, например, ГИП для отображения найденных Объектов и для дальнейшего поиска Объектов, который может быть инициирован пользователем посредством использования других поисковых слов и тех же или другой области(ей) поиска. Поисковые области могут быть расширены пользователем.According to an exemplary embodiment, auto-tags, auto-tag predicates, and auto-tag values can be stored in RAM, including their optional caching. Such data stored in RAM can be used, for example, by the GUI to display the found Objects and to further search for Objects, which can be initiated by the user by using other search words and the same or different search field (s). Search areas can be expanded by the user.
Модуль для Определения Связанных Объектов 330 отвечает за выявление связей Объектами друг с другом. Примером связей Объектов является "транзитивный автотег", который используется для установления прямых или непрямых связей между Объектами. Прямая связь объекта может быть представлена в виде ссылки между двумя объектами, а непрямая связь Объекта является ссылкой на другой Объект через, как минимум, один другой Объект. Связи между объектами могут быть установлены посредством использования правил и использования описания объектов, свойств Объекта и могут быть представлены в виде автотега и предикатов автотегов.The Module for Defining
Поскольку Объект или свойства Объекта могут быть изменены в течение времени его жизни, то одни и те же значения автотегов для Объекта должны быть найдены заново. Здесь приведен пример случая, когда необходимо заново найти значения автотега: ошибка была обнаружена в Продукте 1, который является частью Семейства 1. По прошествии определенного количества времени Продукт 1 был перемещен в Семейство 2. В данном случае все найденные значения для автотегов для ошибки необходимо найти заново, поскольку его связи с Продуктом 1 и Продуктом 2 изменились. Стоит отметить, что ранее были найдены значения автотега для Объектов (Продукт 1 и Продукт 2), связанных с текущим Объектом (ошибкой в данном случае).Since the Object or the properties of the Object can be changed during its lifetime, the same values of autotags for the Object must be found again. Here is an example of a case where it is necessary to find the autotag values again: an error was found in Product 1, which is part of Family 1. After a certain amount of time, Product 1 was moved to Family 2. In this case, all the values found for autotags for the error must be found again because his relationship with Product 1 and Product 2 has changed. It is worth noting that earlier autotag values were found for the Objects (Product 1 and Product 2) associated with the current Object (an error in this case).
Поиск автотегов, предикатов автотегов и значений автотегов для связанных Объектов выполняется на базе данных, полученных из модуля 330 (и данных из ОЗУ) и из базы данных 390. Как было сказано выше, результат ранее найденных объектов и всех данных, ассоциирующихся с ними, может быть сохранен в ОЗУ. Использование данных из ОЗУ может увеличить скорость выполнения дальнейших поисковых запросов. Данные из базы данных 390 могут быть получены (и использованы Системой 305 и Системой 320) в форме троек, списка Объектов со связями и в других формах. Данные связей Объектов (и связанных с ними автотегов, значений автотегов, предикатов автотегов) опционально могут быть сохранены в базе данных 390 (или в другой базе данных, которая может быть использована для хранения троек связанных объектов) или в ОЗУ для дальнейшей обработки. Например, такие данные связей Объектов могут быть использованы для второго поискового запроса от пользователя или от системы.The search for autotags, autotag predicates, and autotag values for related Objects is performed on the basis of the data received from module 330 (and data from RAM) and from
Система обработки Автотегов 320 использует данные из модуля 330 и из базы данных 390 через опциональный модуль обработки троек 360. Опциональный модуль 360 отвечает за представление данных из базы данных 390 в приемлемую для системы подсчета автотегов форму, например, если такие данные были сохранены не в формате Подлежащее-Предикат-Дополнение, а в формате БД. Данные могут быть преобразованы средствами БД или модулей вместо преобразования в модуле 360. Стоит отметить, что модуль 360 отвечает за применение правил к фактам из базы данных. Модуль 360 может быть частью Семантического процессора 840 (ФИГ. 8) и исполнять все его функции или часть из них. Также, модуль 360 отвечает за представление данных из Системы Обработки Объектов 305 в формат базы данных. Если это необходимо данные из Системы Обработки Объектов 305 могут быть записаны в базу данных 390 после преобразования данных в соответствующий формат базы данных.The
ФИГ. 4 иллюстрирует блок-схему части процесса поиска Объекта (406), содержащую поиск автотегов для измененных или созданных Объектов. Как упоминалось выше, автотеги и другие данные, которые необходимы для процесса поиска Объектов, могут быть найдены для связанных объектов. Вариант реализации изобретения, в котором не используется поиск по требованию автотегов, значений автотегов и предикатов автотегов изображен на ФИГ. 4. Как было сказано выше, автотеги, значения автотегов и предикаты автотегов могут быть найдены, когда пользователь просит найти предметы с использованием поисковых слов (здесь автотег и другие данные будут найдены по требованию) или когда Объект изменяется или создается новый Объект. После создания или изменения объекта (например, пользователем) в шаге 405 процесс переходит к шагу 410.FIG. 4 illustrates a flowchart of a part of an Object search process (406) containing a search for autotags for modified or created Objects. As mentioned above, auto tags and other data that are necessary for the Object search process can be found for related objects. An embodiment of the invention that does not use on-demand search for auto-tags, auto-tag values and auto-tag predicates is shown in FIG. 4. As mentioned above, auto-tags, auto-tag values and auto-tag predicates can be found when the user asks to find objects using search words (here auto-tag and other data will be found on demand) or when the Object changes or a new Object is created. After creating or modifying the object (for example, by the user) in
В шаге 410 процесс определяет, связан ли текущий Объект с другими Объектами. Связи устанавливаются во время создания нового Объекта и во время ассоциирования и переассоциирования Объектов друг с другом (например, задача может быть переназначена другому пользователю или связана со вторым Продуктом, или Продукт может быть перемещен в другой Проект или Семейство и т.д.). Если текущий Объект не связан с другими Объектами, то в шаге 430 процесс выполняет поиск автотега, предикатов и значений автотегов для текущих поисковых слов. Далее процесс переходит к шагу 455, в котором найденный автотег, предикаты автотегов и значения автотегов для Объекта сохраняются в ОЗУ или базу данных. Стоит отметить, что шаги 410, 430 и 440 являются шагами процесса поиска объекта. Также стоит отметить, что найденные предикаты автотегов и значения автотегов могут быть отправлены во внешнее приложение, например, если поисковый запрос был отправлен внешним приложением или результат поиска необходимо обработать внешним приложением (например, для отображения пользователям после преобразования в отображаемый формат). Также стоит отметить, что предикаты автотегов и значения автотегов могут быть преобразованы в формат внешнего приложения.At
Если в шаге 410 определен хотя бы один связанный Объект, то процесс переходит в шаг 440, в котором ищутся значения и предикаты автотегов для связанных Объектов. Далее процесс переходит к шагу 430. Стоит отметить, что предварительно найденные значения и предикаты автотегов удаляются, если пользователь или система удаляет соответствующий им Объект. Если Объект изменяется, предикаты и значения автотегов должны быть найдены заново. Также, для связанных Объектов требуется найти заново предикаты и значения автотегов.If at least one related Object is defined in
Стоит отметить, что к вышесказанной реализации поиска Объекта может быть добавлен метод пропагации автотегов с весами, т.е. предикату автотега может быть назначен вес. Данный вес используется для поиска объектов за пределами найденных предикатов автотегов посредством ранее описанного метода поиска Объектов с использованием предикатов автотегов.It is worth noting that the method of propagating autotags with weights, i.e. an autotag predicate can be assigned a weight. This weight is used to search for objects outside the found autotag predicates using the previously described method for searching for Objects using autotag predicates.
Здесь описываются веса предикатов автотегов и их использование. Для описания примера использования весов предикатов автотегов используется множество предикатов. В данном примере множество предикатов описывает семейные связи внутри семьи. Например, у человека есть мать, отец, сестра, двоюродный брат и троюродный брат."связиАвтотег" создается для описания типа связи между членами семьи: "матьЧеловекаСвязь", "отецЧеловекаСвязь", "двоюродныйБратЧеловекаСвязь" "троюродныйБратЧеловекаСвязь" и "сестраЧеловекаСвязь" являются предикатами для этого автотега.Here we describe the weights of the autotag predicates and their use. To describe an example of using autotag predicate weights, many predicates are used. In this example, many predicates describe family relationships within a family. For example, a person has a mother, father, sister, cousin, and second cousin. “ConnectionsAutotag” is created to describe the type of connection between family members: “MotherMan Communication”, “CousinMan Communication”, “second cousinMan Communication”, “second cousinMan Communication” and “sisterMan Communication” of this autotag.
Мать, отец и сестра являются близкими родственниками, двоюродный брат является дальним родственником, а троюродный брат является самым дальним родственником. Расстояние по генеалогическому древу Объекта (человека в данном случае) может быть описано весом предикатов автотегов. Чем ближе данная связь с Объектом, тем выше вес предиката автотега. Таким образом, предикаты матьЧеловекаСвязь, отецЧеловекаСвязь и сестраЧеловекаСвязь имеют больший вес (например, вес равен 1), чем предикат двоюродныйБратЧеловекаСвязь (вес равен 0.7), но вес предиката троюродныйБратЧеловекаСвязь будет самым маленьким и будет равен 0.3. В приведенном выше примере сестра, двоюродный брат, брат являются Объектами.Mother, father and sister are close relatives, a cousin is a distant relative, and a second cousin is the farthest relative. The distance along the family tree of the Object (a person in this case) can be described by the weight of the autotag predicates. The closer this relationship with the Object, the higher the weight of the autotag predicate. Thus, the predicates mother of the person Communication, the father of the person Communication and sister of the Communication person have more weight (for example, the weight is 1) than the predicate cousin Human Brother Communication (weight 0.7), but the weight of the predicate the second cousin Human Brother Communication will be the smallest and will be equal to 0.3. In the above example, sister, cousin, brother are Objects.
Веса, описанные выше, могут быть использованы для поиска таких Объектов, т.е. возможно найти Объекты по предикатам автотегов с весами, которые больше чем 0.5. В описываемом примере поиск Объектов выполняется посредством следующих предикатов автотегов: матьЧеловекаСвязь, отецЧеловекаСвязь, сестраЧеловекаСвязь и двоюродныйБратЧеловекаСвязь, а предикат автотега троюродныйБратЧеловекаСвязь не будет участвовать в этом поиске.The weights described above can be used to search for such Objects, i.e. it is possible to find Objects by predicates of autotags with weights that are more than 0.5. In the described example, the Search for Objects is performed using the following predicates of autotags: the mother of the PersonSvyaz, the father of the PersonSvyaz, the sister of the PersonSvyaz and the first cousin Brother of the PersonSvyaz, and the predicate of the autotag the second cousin of the HumanSvyaz will not participate in this search.
Стоит отметить, что веса могут быть назначены предикатам автотегов вручную и сохранены (т.е., например, они могут быть сохранены в базу данных пользователем разработчиком, администратором базы данных и т.д.) во время процесса создания и настройки Объекта. Также веса предикатов автотегов могут быть подсчитаны и назначены/добавлены им. Подсчет весов предикатов автотегов может быть осуществлен с использованием правил и окружающего контекста, таких как онтологии, данные текущего Объекта и данные других Объектов. Например, если ошибка была создана Пятницу, то вес предиката для данной ошибки может быть выше. Подсчитанный вес может быть добавлен предикату автотега. В одном варианте реализации вычисление веса предиката автотега может привести к добавлению, увеличению, уменьшению веса предиката автотега (включая снижение веса до нуля, означающее что у предиката автотега нет веса или что вес бесконечно мал).It is worth noting that weights can be assigned to autotag predicates manually and saved (i.e., for example, they can be saved to the database by the user, developer, database administrator, etc.) during the process of creating and configuring the Object. Also, autotag predicate weights can be calculated and assigned / added to them. Autotag predicate weights can be calculated using rules and the surrounding context, such as ontologies, data of the current Object, and data of other Objects. For example, if the error was created Friday, then the weight of the predicate for this error may be higher. The calculated weight can be added to the autotag predicate. In one embodiment, calculating the weight of an autotag predicate can lead to adding, increasing, decreasing the weight of an autotag predicate (including reducing the weight to zero, meaning that the autotag predicate has no weight or that the weight is infinitely small).
Имя предиката автотега может содержать вес в явном или неявном виде: вес предиката большойВесМатьЧеловекаСвязь может иметь вес равный 1 ("большойВес" в имени предиката ассоциируется с единицами веса), а среднийВесДругЧеловекаСвязь может иметь вес, равный 0.5 ("среднийВес"). Стоит отметить, что вес в имени предиката может быть определен напрямую, например, ВесОдинМатьЧеловекаСвязь, Вес1МатьЧеловекаСвязь, ВесПоловинаДругЧеловекаСвязь, Вес0Точка5ДругЧеловекаСвязь.The autotag predicate name can contain the weight in explicit or implicit form: the predicate weight is bigMessManCommunication can have a weight of 1 (the "bigWeight" in the predicate name is associated with units of weight), and the average Weight of a HumanCommunication can have a weight of 0.5 ("MediumWeight"). It is worth noting that the weight in the name of the predicate can be determined directly, for example, WeightOneMotherManConnection, Weight1MotherManConnection, WeightHalfOtherManManConnection, Weight0 Point5FriendManConnection.
Также стоит отметить, что наличие определенных слов или фраз в имени предиката может влиять на вес предиката автотега. Например, такие слова как мать, отец, жена, сестра, брат, важно, интересно, ВАУ, ослепительный, великий и т.д. могут реализовывать более высокие веса для предикатов автотегов, в то время как маленький, слабый, вялый, темный, двоюродный брат могут реализовывать низкие веса. Другими словами, семантика (значение) части имен предикатов автотегов может определять вес предикатов автотегов.It is also worth noting that the presence of certain words or phrases in the name of the predicate can affect the weight of the autotag predicate. For example, words such as mother, father, wife, sister, brother, important, interesting, WOW, dazzling, great, etc. can realize higher weights for autotag predicates, while a small, weak, listless, dark, cousin can realize lower weights. In other words, the semantics (meaning) of the part of the autotag predicate names can determine the weight of the autotag predicates.
Здесь приведен пример использования весов предикатов автотегов для порядка поиска Объектов. Поиск родственников Майкла (который является троюродным братом человека Вильяма) выполняется с использованием весов предикатов автотегов. Например, поиск Объектов (в данном случае Объекты являются родственниками) выполняется в порядке убывания весов предикатов автотегов. В данном случае сначала будет найден ближайший родственник (мать, отец, брат и т.д.). После этого будут найдены дальние родственники (свекровь, двоюродные братья, второй племянник дяди и т.д.). Также, как было сказано ранее, после того как будут найдены, эти найденные Объекты могут быть использованы или могут быть сохранены в виде элементов массива (ArrayList) в ОЗУ или хранилище данных.Here is an example of using autotag predicate weights for the search order of Objects. The search for relatives of Michael (who is the second cousin of William's man) is performed using predicate weights for autotags. For example, the search for Objects (in this case, Objects are relatives) is performed in descending order of the autotag predicate weights. In this case, the closest relative will be found first (mother, father, brother, etc.). After that, distant relatives will be found (mother-in-law, cousins, second uncle's nephew, etc.). Also, as was said earlier, after being found, these found Objects can be used or can be saved as array elements (ArrayList) in RAM or data storage.
Пропагация может быть использована для определения, по крайней мере, одного дополнительного предиката, который также вовлечен в поиск Объектов. Предикат автотега может быть использован в качестве параметра пропагации (т.е. дополнительного дескриптора). Например, предикат автотега "cmw:создатель" может быть дополнен дескриптором "пропагС", который означает, что предикат пропагируется посредством следующих предикатов "основнойПредикат пропагС цельПредикаты", через предикат "пример:корректоОшибок".Propagation can be used to define at least one additional predicate that is also involved in the search for Objects. An autotag predicate can be used as a propagation parameter (i.e., an additional descriptor). For example, the predicate of the autotag "cmw: creator" can be supplemented with the descriptor "propag", which means that the predicate is propagated by the following predicates "main predicate predicate propagate target predicates", through the predicate "example: correct Error".
Вес для пропагации может быть настроен для избегания подсчета весов для дублирующихся связей с Объектами. Например, ошибка имеет текстовое поле "такое же_как_эта_ошибка", т.е. дублирующиеся связи существуют и хранятся в базе данных или представлены в виртуальном виде подсчитанных по требованию связей/ссылок. Виртуальные связи в данном контексте означают отношения, которые могут быть найдены с использованием правил, онтологий и т.д. Например, Билл меняет похожие/идентичные ошибки, так что Биллу (если пропагация не настроена, т.е. использована пропагация по умолчанию) могут быть назначены большие веса, поскольку каждая ошибка влияет на другую.Propagation weight can be configured to avoid calculating weights for duplicate links to Objects. For example, an error has the text field "same_as_this_error", i.e. Duplicate links exist and are stored in a database or presented in a virtual form of links / links calculated on demand. Virtual connections in this context mean relationships that can be found using rules, ontologies, etc. For example, Bill changes similar / identical errors, so that Bill (if propaganda is not configured, i.e. default propagation is used) can be assigned large weights, since each error affects a different one.
Для того чтобы этого избежать, дубликаты могут быть проигнорированы и не использованы при поиске Объектов. Другими словами, поисковая система может рассматривать такие ошибки-дубликаты как одну ошибку или считать эти связи между ошибками за одну связь. Стоит отметить, что в данном контексте рассматриваются веса связей, а не веса предикатов, т.е. рассматривается предполагаемый вес предиката. Также стоит отметить, что таким дубликатам также могут быть назначены маленькие веса, например, значение веса может быть равно 0.00001, так что она имеет незначительное влияние на сортировку найденных Объектов. Стоит отметить, что путем настройки значений весов можно построить гибкую систему поиска Объектов с учетом значений для веса. Такая поисковая система способна автоматически распределять веса на основании алгоритмов и/или ранее полученных данных.In order to avoid this, duplicates can be ignored and not used when searching for Objects. In other words, the search system can consider such duplicate errors as one error or consider these links between errors as one link. It is worth noting that in this context weights of relations are considered, and not the weights of predicates, i.e. the estimated weight of the predicate is considered. It is also worth noting that such duplicates can also be assigned small weights, for example, the weight value can be equal to 0.00001, so that it has little effect on the sorting of the found Objects. It is worth noting that by adjusting the values of the weights, you can build a flexible system for searching Objects taking into account the values for the weight. Such a search engine is able to automatically distribute weights based on algorithms and / or previously obtained data.
Вес Объекта (и позиция в сортированном списке найденных объектов) зависит от предиката автотега, который был использован при поиске Объектов, т.е. Объекты с маленькими весами (для предикатов автотегов с маленькими весами) располагаются ближе к концу отсортированного списка Объектов, чем Объекты с большими значениями весов. Стоит отметить, что веса предикатов автотегов также используются для установления глубины поиска Объектов. Вес предикатов автотегов и параметры поиска определяют, будет ли найден конкретный Объект, или какой-либо другой Объект, или ничего не будет найдено.The weight of the Object (and its position in the sorted list of found objects) depends on the autotag predicate that was used when searching for Objects, i.e. Objects with small weights (for predicates of autotags with small weights) are located closer to the end of the sorted list of Objects than Objects with large weights. It is worth noting that the predicate weights of autotags are also used to establish the depth of the Search for Objects. The weight of autotag predicates and search parameters determine whether a particular Object will be found, or some other Object, or nothing will be found.
В одном примерном варианте реализации могут быть использованы описанные выше пропагации для автомобиля и частей автомобиля. Автомобиль состоит из следующих частей: двери, бамперы, багажник, капот, крылья и т.д. Каждый из них является экземпляром Класса, названного по имени части Автомобиля и являются Объектами. Цвет является свойством объекта. Скажем, что Цвет пропагируется через части автомобиля. Объект Автомобиль 1 является экземпляром Класса Автомобиль. Цвет Красный может быть использован в качестве условия поиска Объектов, т.е. пользователь хочет найти Красный Автомобиль. В данном случае цветные части автомобиля могут определять цвет всего автомобиля, т.е. если одна из частей автомобиля имеет красную часть, то цвет автомобиля - красный.In one exemplary embodiment, the propaganda described above for an automobile and automobile parts can be used. The car consists of the following parts: doors, bumpers, trunk, hood, wings, etc. Each of them is an instance of the Class, named for the part of the Car and are Objects. Color is a property of an object. Let's say that Color is propagated through parts of the car. The Car 1 object is an instance of the Car Class. Color Red can be used as a search term for Objects, i.e. user wants to find Red Car. In this case, the colored parts of the car can determine the color of the entire car, i.e. if one of the parts of the car has a red part, then the color of the car is red.
В другом примере изобретения цвет может быть пропагирован, по крайней мере, через один предикат, например, предикат двери (предикат левая_передняя_дверь, предикат правая_задняя_дверь), предикат бампер, предикат багажник, предикат капот, предикат крылья и т.д. Например, бампер составляет 5 процентов от всего автомобиля, так что вес данного предиката равен 0.05. Вес предиката двери равен 0.1, вес багажника - 0.2, кузова - 0.5 и т.д. Предполагается, что в БД содержатся следующие данные для Автомобиля 1: передний и задний бамперы имеют Зеленый цвет, кузов - Зеленый, багажник - Красный и дверь - Черный.In another example of the invention, the color can be propagated through at least one predicate, for example, a door predicate (left_front_door predicate, right_back_door predicate), bumper predicate, trunk predicate, hood predicate, wing predicate, etc. For example, a bumper is 5 percent of the entire car, so the weight of this predicate is 0.05. The weight of the door predicate is 0.1, the weight of the trunk is 0.2, the body is 0.5, etc. The database is supposed to contain the following data for Car 1: the front and rear bumpers are Green, the body is Green, the trunk is Red and the door is Black.
В таком случае Автомобиль 1 имеет 60 процентов окрашенных в Зеленый цвет частей, 20 процентов окрашенных в Красный цвет частей и 10 процентов окрашенных в Черный цвет частей (передняя левая дверь была заменена и не была еще окрашена). Другой Объект, Автомобиль 2, может содержать 40 процентов окрашенных в Зеленый цвет частей (окрашенный в Зеленый Цвет багажник и две передние окрашенные в зеленый цвет двери), а также содержит 50 процентов окрашенных в Красный цвет частей (в данном случае кузов автомобиля имеет Красный цвет), и 10 процентов автомобиля составляют окрашенные в Черный цвет бамперы.In this case, Car 1 has 60 percent of the parts painted Green, 20 percent of the parts painted Red and 10 percent of the parts painted Black (the front left door has been replaced and has not been painted yet). Another Object, Car 2, may contain 40 percent of the parts painted in Green (painted in trunk Green and two front doors painted in green), and also contains 50 percent of parts painted in Red (in this case, the car body is Red ), and 10 percent of the car is black-painted bumpers.
Когда пользователь инициирует процесс поиска Объектов по Цвету (например, здесь используется Зеленый цвет), БД может хранить (в форме онтологий и/или правил) тот факт, что автомобиль - Зеленый, если окрашенных в Зеленый цвет частей автомобиля более 50 процентов (т.е. общий вес предикатов автотегов больше 0.5), и автомобиль - Красный, если общий вес предикатов более 0.4, и автомобиль окрашен в Черно-Красный, если вес предикатов более чем 0.5 для Красного цвета и 0.09 для Черного цвета.When a user initiates the process of searching for Objects by Color (for example, Green is used here), the database can store (in the form of ontologies and / or rules) the fact that the car is Green, if the parts of the car painted in Green are more than 50 percent (i.e. e. the total weight of autotag predicates is more than 0.5), and the car is Red if the total weight of predicates is more than 0.4, and the car is painted Black and Red if the weight of predicates is more than 0.5 for Red and 0.09 for Black.
В данном случае, если процесс Поиска Объектов инициирован по Цвету (1) Зеленый цвет, (2) Красный цвет или (3) Красно-Белый цвет, то система поиска во время процесса поиска объединит предикаты автотегов частей автомобиля, так что Автомобиль 1 будет найден как окрашенный в Зеленый цвет автомобиль, а Автомобиль 2 будет найден как Красный и Красно-Черный Автомобиль. Стоит отметить, что вес предиката автотега является частью общего значения (в данном случае 0.1 - это 10% от цвета автомобиля, 0.5-50% и т.д.). Ввод и операции с весами могут меняться, поскольку вес может представлять значение определенного предиката, высокий приоритет и т.д. так что пропагация является неявной/косвенной связью между Объектами.In this case, if the Object Search process is initiated by Color (1) Green, (2) Red or (3) Red-White, the search system will combine the predicates of the auto parts of the car parts during the search process, so that Car 1 will be found like a Green-painted car, and Car 2 will be found as a Red and Red-Black Car. It is worth noting that the weight of the autotag predicate is part of the total value (in this case, 0.1 is 10% of the color of the car, 0.5-50%, etc.). The input and operations with weights may vary, since weights may represent the value of a specific predicate, high priority, etc. so propaganda is an implicit / indirect relationship between Objects.
ФИГ. 7 иллюстрирует пример различных бизнес-приложений, используемых в различных отделах компании, и схему обработки данных в них. Данные из базы данных могут быть разделены на пользовательские данные в виде аксиом, фактов, правил и онтологий (представленных также в виде аксиом, но которые могут быть различимы по N3 синтаксису). Другими словами, онтологии содержат информацию о том, что за данные и как данные должны быть представлены конкретному пользователю в конкретном бизнес-приложении. Факты и онтологии обрабатываются Ядром, и результатом обработки являются данные в определенном контексте в соответствии с онтологиями.FIG. 7 illustrates an example of various business applications used in various departments of a company, and a data processing scheme therein. Data from the database can be divided into user data in the form of axioms, facts, rules, and ontologies (also represented as axioms, but which can be distinguished by the N3 syntax). In other words, ontologies contain information about what kind of data and how data should be presented to a specific user in a particular business application. Facts and ontologies are processed by the Kernel, and the result of processing is data in a certain context in accordance with ontologies.
Благодаря использованию RDF (Среды Описания Ресурса) можно работать с различными источниками данных (т.е. базами данных, локальными хранилищами данных, расположенными в корпоративной сети или расположенными в Интернете). Возможно использовать URI общего словаря, что позволяет интегрировать данные из различных серверов. Также, основываясь на данных и правилах, возможно обеспечить представление данных на лету (в отличие от статичных срезов (например, слепков), как это делается в OLAP кубах).Using RDF (Resource Description Environment), you can work with various data sources (i.e. databases, local data stores located on the corporate network or located on the Internet). It is possible to use the URI of a common dictionary, which allows you to integrate data from various servers. Also, based on data and rules, it is possible to provide data on-the-fly (unlike static slices (e.g. snapshots), as is done in OLAP cubes).
Пул информации (например, данные со всех департаментов: ИТ (705), Разработка (не показано), ЧР (701), Администрирование (не показано), Сбыт (не показано), Бухгалтерия (703) могут быть сохранены в различных базах данных или других хранилищах. Элемент 707 позволяет отображение контекстуализированной бизнес-информации для конкретного приложения. "Глобальная" является сущностью для представления данных в конкретном контексте бизнес-приложения.A pool of information (for example, data from all departments: IT (705), Development (not shown), Czech Republic (701), Administration (not shown), Sales (not shown), Accounting (703) can be stored in various databases or other repositories.
Контекст может рассматриваться в качестве среды окружения конкретного события, объекта или индивида, который определяет интерпретацию данных и действий/операций над данными в конкретной ситуации. Опционально, контекст определяет метод обработки данных в конкретной ситуации. Например, чей-то адрес электронной почты может считаться информацией для входа в систему в одном контексте и в качестве контактной информации в профиле пользователя в другом контексте. Он может использоваться в качестве запрашивающей стороны в заявке в техническую поддержку в третьем контексте - все зависит от интерпретации данных.The context can be considered as the environment of a particular event, object or individual, which determines the interpretation of data and actions / operations on data in a particular situation. Optionally, the context determines the data processing method in a particular situation. For example, someone's email address can be considered login information in one context and as contact information in a user profile in another context. It can be used as a requesting party in the application for technical support in the third context - it all depends on the interpretation of the data.
Обмен информацией между серверами выполняется автоматически, поскольку все серверы используют общий словарь. Например:Information exchange between servers is performed automatically, since all servers use a common dictionary. For example:
http://<company_name>.com/tracker/ontology/global/hr, илиhttp: // <company_name> .com / tracker / ontology / global / hr, or
http://<company_name>.com/tracker/ontology/global/it илиhttp: // <company_name> .com / tracker / ontology / global / it or
http://<company_name>.com/tracker/ontology/global/acc, все они объединены вhttp: // <company_name> .com / tracker / ontology / global / acc, all of them are combined in
http://<company_name>.com/tracker/ontology/globalhttp: // <company_name> .com / tracker / ontology / global
Даже в случае, когда бухгалтерия при создании вручную записи о сотруднике использует свой собственный словарь, возможно написать правило , тем самым обеспечив механизм перевода между словарем бухгалтерии и глобальным словарем.Even in the case when the accounting department uses its own dictionary when creating the employee record manually, it is possible to write a rule thereby providing a translation mechanism between the accounting dictionary and the global dictionary.
Из этого примера видно, что предлагаемая архитектура позволяет каждой отдельной группе или отделу в рамках бизнеса работать со своей собственной базой данных/хранилищем и своей собственной серверной системой, в то время как глобальный сервер с движком может представлять собой объединенное представление данных из всех отделов. Это осуществляется на лету и без дублирования данных, что особенно важно с точки зрения безопасности информации, а также с точки зрения поддержания актуальности информации (в данном случае, когда данные на одном хранилище меняются, то нет необходимости менять данные на других хранилищах).This example shows that the proposed architecture allows each individual group or department within the business to work with its own database / storage and its own server system, while a global server with an engine can be a combined representation of data from all departments. This is done on the fly and without duplication of data, which is especially important from the point of view of information security, as well as from the point of view of maintaining the relevance of information (in this case, when data on one storage is changing, there is no need to change data on other storage).
Основанные на подсчитанных автотегах результаты представления поиска, полученные на лету, могут быть проиллюстрированы следующем примером. Рассмотрим данные онтологий (т.е. данные, которые описывают управляемые сущности) в контексте бизнес-приложений, например, управления проектами, отслеживания проблем, отслеживания ошибок, CRM и т.д. Каждый из них хранится в своей собственной базе данных (или, альтернативно, в общей базе данных), и которые объединены на более высоком уровне. При помощи логического ядра можно комбинировать различные доступные данные в различные комбинации и наборы онтологий, например, используя специальные онтологии. Разработчик может видеть контекст представления ошибки, представленный Отделу качества в виде назначенной ему задачи. Другими словами, является возможным проследить, к какой задаче относится конкретная ошибка.Based on counted auto tags, search results obtained on the fly can be illustrated by the following example. Consider ontology data (i.e., data that describes managed entities) in the context of business applications, for example, project management, problem tracking, error tracking, CRM, etc. Each of them is stored in its own database (or, alternatively, in a common database), and which are combined at a higher level. Using the logical core, you can combine various available data into various combinations and sets of ontologies, for example, using special ontologies. The developer can see the context of the presentation of the error presented to the Quality Department in the form of the assigned task. In other words, it is possible to trace which task a particular error relates to.
Различия между представлением на лету, доступным благодаря описанному здесь подходу, и статичным представлением, предоставляемым поиском данных с использованием OLAP кубов (сетевая аналитическая обработка в реальном времени) также заслуживают рассмотрения. OLAP является общепринятой техникой для генерирования отчетов и различных статистических документов. OLAP кубы часто используются аналитиками для быстрой обработки сложных запросов к базе данных, и они особенно часто встречаются в маркетинговых отчетах, отчетам по продажам, анализе данных и так далее.The differences between the on-the-fly view available through the approach described here and the static view provided by data mining using OLAP cubes (real-time network analytic processing) are also worth considering. OLAP is a common technique for generating reports and various statistical documents. OLAP cubes are often used by analysts to quickly process complex database queries, and they are especially common in marketing reports, sales reports, data analysis, and so on.
Причина, по которой OLAP кубы настолько распространены, кроется в скорости, с которой может быть выполнена обработка. Реляционные базы данных хранят информацию о различных сущностях в отдельных таблицах, которые обычно хорошо нормализованы. Эта структура удобна для большинства операционных систем баз данных, однако сложные многотабличные запросы обычно сложно быстро выполнить. Хорошей моделью для таких запросов (в отличие от изменений) является таблица, построенная с использованием фактов из OLAP кубов.The reason OLAP cubes are so common is because of the speed with which processing can be performed. Relational databases store information about various entities in separate tables, which are usually well normalized. This structure is convenient for most database operating systems, but complex multi-table queries are usually difficult to quickly complete. A good model for such queries (as opposed to changes) is a table built using facts from OLAP cubes.
Сложность использования OLAP в качестве методологии заключается в генерировании запросов, выборе базовых данных и генерировании соответствующей схемы, которая является причиной, по которой большинство современных OLAP продуктов обычно поставляются вместе с большим количеством предопределенных запросов.The difficulty of using OLAP as a methodology is to generate queries, select the baseline data, and generate the appropriate schema, which is the reason why most modern OLAP products usually come with a lot of predefined queries.
Другая проблема заключается в базовых знаниях OLAP куба, которые должны быть завершенными и непротиворечивыми. Таким образом, основной проблемой с OLAP кубами является то, что процесс анализа обычно требует пересоздания самого куба или частого генерирования срезов. В отличие от OLAP кубов предложенный подход выигрышно позволяет перегенерирование представления данных (результатов поиска) на лету без сложностей предопределения и предварительного генерирования запросов. Вкратце, процесс обсуждаемого здесь подхода может быть описан следующим образом:Another problem is the basic knowledge of the OLAP cube, which must be complete and consistent. Thus, the main problem with OLAP cubes is that the analysis process usually requires re-creating the cube itself or frequently generating slices. Unlike OLAP cubes, the proposed approach advantageously allows the regeneration of the presentation of data (search results) on the fly without the difficulties of predefining and preliminary generating queries. In short, the process of the approach discussed here can be described as follows:
- бизнес-слой запрашивает данные из ядра;- the business layer requests data from the kernel;
- логическое ядро собирает данные из различных источников;- the logical core collects data from various sources;
- логическое ядро распознает природу данных и делит данные на аксиомы и правила. Например, для баг-трекера аксиомой может быть "решение это "нужно больше информации"", в правилом может быть ;- the logical core recognizes the nature of the data and divides the data into axioms and rules. For example, for a bug tracker, the axiom may be "the solution is" you need more information "", the rule may be ;
- движок, необходимый для выполнения запроса бизнес слоя, собирает вместе скомпилированные правила (например, в С# коде, хотя изобретение не ограничено каким либо конкретным языком программирования). У движка могут быть правила, которые были собраны и скомпилированы ранее, так же как и новые правила для правил, которые еще не были обработаны. Таким образом, компилирование должно быть выполнено только для новых правил. Поэтому ядру нет необходимости постоянно работать с данными, а только лишь адресовать данные в ответ на запросы из бизнес слоя;- the engine necessary to fulfill the request of the business layer collects compiled rules together (for example, in C # code, although the invention is not limited to any particular programming language). An engine can have rules that were compiled and compiled earlier, as well as new rules for rules that have not yet been processed. Thus, compilation should only be done for new rules. Therefore, the kernel does not need to constantly work with data, but only to address data in response to requests from the business layer;
- движок обрабатывает аксиомы, и генерируются новые вытекающие из этого аксиомы;- the engine processes axioms, and new axioms arising from this are generated;
- ядро возвращает запрошенные данные в бизнес слой.- the kernel returns the requested data to the business layer.
Некоторые типы правил могут существовать для обработки данных. Правило типа фильтр часто используется в случаях трекера, например, получение списка тикетов службы поддержки/ошибок/задач от конкретного пользователя и для конкретного проекта с конкретными атрибутами. Поэтому, информация должна быть отфильтрована из общего пула задач/ошибок/тикетов для конкретного пользователя и проекта, и представлена в форме отдельных аксиом.Some types of rules may exist for data processing. A rule such as a filter is often used in tracker cases, for example, receiving a list of support / error / task tickets from a specific user and for a specific project with specific attributes. Therefore, the information should be filtered out from a common pool of tasks / errors / tickets for a specific user and project, and presented in the form of separate axioms.
Преобразующие правила относятся к той же информации, которая может быть представлена в иной манере. Например, ИТ отдел рассматривает людей как пользователей ИТ-системы. С другой стороны, менеджер проектов может рассматривать этих же людей в виде ресурсов, работающих над конкретными задачами. В другом примере преобразующие правила могут включать следующее: на входе получаются данные (аксиомы), которые описывают конкретный тикет (т.е. запрос от конкретного конечного пользователя) и его представление данных. Следовательно движок получит на выходе аксиомы в виде определенного пользовательского интерфейса, заполненного данными.Converting rules apply to the same information that may be presented in a different manner. For example, the IT department sees people as users of an IT system. On the other hand, the project manager can consider these same people in the form of resources working on specific tasks. In another example, the transforming rules may include the following: at the input, data (axioms) are obtained that describe a specific ticket (i.e., a request from a specific end user) and its presentation of data. Therefore, the engine will receive axioms at the output in the form of a specific user interface filled with data.
Другим примером типов правил является генерирующее правило. Например, в конкретном проекте, в котором содержится более 50% критичных ошибок и более 50% критичных задач, система автоматически сгенерирует факт о статусе проекта (т.е. статус проекта будет отмечен как "Критический").Another example of rule types is a generating rule. For example, in a specific project, which contains more than 50% of critical errors and more than 50% of critical tasks, the system will automatically generate a fact about the status of the project (that is, the status of the project will be marked as "Critical").
Пример применения правил выглядит следующим образом. Информация преобразуется из баг-трекера и исправления проектами в данные для проекта ABC. Далее фильтруются только ошибки со статусом "критичная", которые останутся, и движок подсчитает общее количество ошибок, и далее, если количество "критичных" ошибок - больше половины общего количества ошибок, то будет сгенерировано критическое состояние ошибок вы проекте:An example of applying the rules is as follows. Information is converted from the bug tracker and project fixes into data for the ABC project. Further, only errors with the “critical” status that will remain are filtered, and the engine will calculate the total number of errors, and then, if the number of “critical” errors is more than half the total number of errors, then the critical error state will be generated in the project:
Те же самые операции выполняются с данными (задачами) из систем управления проектами:The same operations are performed with data (tasks) from project management systems:
Далее выполняется автоматическое генерирование статуса проекта "Критичный", если в проекте есть задачи и ошибки в состояниях "Критичный":Next, automatic generation of the Critical project status is performed if the project has tasks and errors in the Critical states:
То же самое происходит со статусом, но с другим условием: автоматическое генерирование статуса "Критичный" для проекта, когда "критичных" ошибок или задач становится больше половины.The same thing happens with the status, but with a different condition: automatic generation of the “Critical” status for the project, when more than half of the “critical” errors or tasks become.
Как будет понятно специалистам в данном уровне техники, примеры из жизни обычно более сложные, чем описанные здесь, и может существовать намного больше типов правил в большинстве случаев из реальной жизни, однако, принцип остается тем же самым.As will be understood by those skilled in the art, life examples are usually more complex than those described here, and there may be many more types of rules in most cases from real life, however, the principle remains the same.
Пример конъюнкции аксиом зачастую является самым легким в понимании, например, при комбинировании информации, относящейся к требованиям проекта (аксиома "требования" - требования, определенные аналитиками), и ошибок из баг-трекера (аксиома "ошибки" - ошибки, обнаруженные тестировщиками, которые, как правило, являются специалистами по контролю качества, и заполненные формы отслеживания ошибок на основе определенных требований), результаты "результирующая аксиома", которые в сущности являются комбинацией количества ошибок связанных с одним функциональным требованием.An example of a conjunction of axioms is often the easiest to understand, for example, when combining information related to project requirements (axiom “requirements” - requirements defined by analysts) and errors from the bug tracker (axiom “errors” - errors discovered by testers who as a rule, are quality control specialists, and filled out error tracking forms based on certain requirements), the results are the "resulting axiom", which in essence is a combination of the number of errors associated with one functional requirement.
ФИГ. 8 иллюстрирует систему в одном варианте реализации изобретения. JSON/Ajax API 822 является модулем для реализации протокола вызовов методов API (Интерфейса Программирования Приложений) с использованием формата сообщений JSON и передачей данных посредством HTTP с использованием запросов Ajax. WCF API 824 является модулем, который реализует протокол вызова методов API с использованием формата представления XML/SOAP и передачи данных посредством HTTP.FIG. 8 illustrates a system in one embodiment of the invention. JSON /
Модуль менеджера API 826:
- ищет требуемый метод API,- Searches for the required API method,
- реализует сериализацию аргументов в структуры данных, использующуюся в онтологиях бизнес-логики,- implements serialization of arguments into data structures used in ontologies of business logic,
- реализует вызовы метода API,- implements API method calls,
- десериализует результаты, возвращенные методом.- deserializes the results returned by the method.
Модуль менеджера API 826 использует N3-файлы 830 (которые содержат тройки в формате N3) для поиска реализации метода 828, где онтология "арi:Метод" (например) содержит все методы, типы аргументов и возвращает значения. Реализация метода является программным кодом. Например, он может сохранять данные в базу данных или закрыть или открыть задачу, и другие операции.The
Например, API метод "СоздатьЗадачу" используется для создания задачи. Метод принимает данные задачи в виде аргумента и возвращает идентификатор для созданной задачи. JSON-обработчик получает имя метода и аргументы (данные задачи) в JSON-формате, где метод вызывается посредством JSON-протокол. Далее аргументы преобразуются во внутреннее представление данных в памяти и передаются в API-менеджер. API-менеджер (у которого есть список методов) может найти требуемый метод "СоздатьЗадачу" по имени. Далее API-менеджер проверяет аргументы (количество и тип) и реализует метод "СоздатьЗадачу". После создания задачи методом "СоздатьЗадачу", API-менеджер возвращает результат JSON-обработчику. JSON-обработчик преобразует результат в JSON-формат и отправляет его обратно клиенту (например, в клиент MS Outlook или в приложение мобильного устройства).For example, the CreateTask API method is used to create a task. The method takes the task data as an argument and returns the identifier for the created task. The JSON handler receives the method name and arguments (task data) in the JSON format, where the method is called using the JSON protocol. Next, the arguments are converted to an internal representation of the data in memory and passed to the API manager. The API manager (which has a list of methods) can find the required Create Task task by name. Next, the API manager checks the arguments (quantity and type) and implements the "Create Task" method. After creating a task using the Create Task method, the API manager returns the result to the JSON handler. The JSON handler converts the result to JSON format and sends it back to the client (for example, to MS Outlook client or to a mobile device application).
API-менеджер загружает API-спецификацию и модули расширения из Базы данных во время запуска приложения (MS Outlook расширение 807). Данная спецификация может быть запрошена Outlook расширением/плагином 807 MS Outlook клиента 806 или посредством специального Ajax-запроса или в виде схемы в WSDL-формате с использованием SOAP-протокола.The API manager loads the API specification and extension modules from the Database during application startup (MS Outlook extension 807). This specification can be requested by Outlook extension /
Веб-клиент 802 (например, на базе JavaScript или на HTML5) или Клиент Командной Строки 804 могут быть использованы вместо MS Outlook. Консольный клиент является клиентским приложением, которое может вызывать методы API с использованием командной строки. Также может быть использовано мобильное приложение на мобильном устройстве 801.Web Client 802 (for example, based on JavaScript or HTML5) or
Клиент JavaScript является клиентским приложением, которое исполняется в пользовательском веб-браузере и которое может вызывать методы API с использованием языка JavaScript.The JavaScript client is a client application that runs in a custom web browser and that can call API methods using the JavaScript language.
Outlook расширение (Outlook-клиент) является клиентским приложением, которое исполняется в приложении MS-Outlook и которое может вызывать методы API с использованием WCF-протокола.The Outlook extension (Outlook client) is a client application that runs in MS-Outlook and can call API methods using the WCF protocol.
Язык Описания Веб-сервисов (WSDL) является основанным на XML языке описания интерфейсов, который используется для описания функциональности, предоставляемой веб-сервисом.The Web Services Description Language (WSDL) is an XML-based interface description language that is used to describe the functionality provided by the web service.
WSDL-описание веб-сервиса (также называемое WSDL-файлом) обеспечивает машиночитаемое описание того, как сервис может быть вызван, какие параметры он ожидает и какие структуры данных он ожидает. Таким образом, он служит той же цели, что, которая примерно соответствует цели сигнатуры метода в языке программирования.The WSDL description of the web service (also called the WSDL file) provides a machine-readable description of how the service can be called, what parameters it expects and what data structures it expects. Thus, it serves the same purpose as that which roughly corresponds to the purpose of a method signature in a programming language.
Далее клиентские приложения могут осуществлять вызовы с использованием отчетности запросов Ajax в формате протокола JSON или SOAP.Client applications can then make calls using the reporting of Ajax requests in either JSON or SOAP protocol format.
Основными стадиями обработки запросов являются:The main stages of request processing are:
1. Входящий запрос обрабатывается HTTP-сервером (или Внешним сервером, или MS Exchange Сервером). Выполняется JSON сериализация или SOAP преобразование во внутренний формат.1. The incoming request is processed by the HTTP server (or an External server, or MS Exchange Server). JSON serialization or SOAP conversion to internal format is performed.
2. API-менеджер 826 принимает входные данные и проверяет входные аргументы на соответствие описанию метода.2. The
3. API-менеджер 826 загружает и подготавливает необходимую модель данных и создает слепок модели для изоляции от других запросов и операций. Транзакция записи открыта, если операция меняет данные модели.3.
4. Вызывается программный код (или правила с онтологиями и Язык Comindware®), который выполняет метод.4. The program code (or rules with ontologies and Comindware ® Language) is called that executes the method.
5. Транзакция закрывается, если операция является модифицирующей операцией, и выполняется проверка изменения в безопасности, определение конфликтов, обновление истории транзакций.5. A transaction is closed if the operation is a modifying operation, and the security change is checked, conflicts are determined, and transaction history is updated.
6. Результат сериализуется в формат, требуемый клиентом и передается в HTTP-запрос.6. The result is serialized to the format required by the client and passed to the HTTP request.
Бизнес логика приложения 820 реализует объектный слой поверх хранилища данных. Доступ к данным обеспечивается посредством клиентского API, который содержит методы для чтения/записи объектов (т.е. шаблоны объектов, бизнес-правила и т.д.) Вызовы клиентами методов API реализованы посредством сессий, которые создаются после авторизации клиента. Этот слой содержит несколько системных онтологий, таких как, например, "шаблон пользовательского объекта" или "бизнес-правило". Онтологии используются в API для сериализации и проверки данных.The
Хранилище данных 842 обеспечивает физическое хранилище для модели данных на жестком диске. Данные оправляются в хранилище данных 842 и обратно в форме фактов (троек). Факт является тройкой, которая хранится в модели. Также, факт может быть получен путем применения правил или запросов. Хранилище данных состоит из:
- потокового хранилища троек 858 позволяет записывать и запрашивать тройки специального файлового формата. Потоковое хранение троек поддерживает несколько типов запросов по различным компонентам;- the stream storage of
- менеджер транзакций и слепков 854 позволяет создавать:- The transaction manager and casts 854 allows you to create:
а. транзакции. Транзакции являются объектами с интерфейсом для атомарной модификации троек хранилища. Изменение модели возможно только в рамках такой транзакции, гарантируя атомарную модификацию троек хранилища (подтверждение всех изменений, сделанных внутри транзакции, или ни одной из них);but. transactions. Transactions are objects with an interface for atomic modification of storage triples. Changing the model is possible only within the framework of such a transaction, guaranteeing the atomic modification of the warehouse triples (confirmation of all changes made within the transaction, or none of them);
б. слепки. Слепки представляют собой обладающие интерфейсом объекты для консистентного чтения из хранилища троек. Это гарантирует, что ни одна из транзакций (которые были подтверждены во время выполнения слепка) не повлияет на его содержимое.b. casts. Snapshots are objects with an interface for consistent reading from the triples repository. This ensures that none of the transactions (which were confirmed during the execution of the snapshot) will affect its contents.
- тройки, хранящиеся в репозитории, являются простыми, небольшими объектами (числами, строками, именами). Менеджер бинарных потоков 856 используется для сохранения больших значений (файлов, потоков данных) в хранилище. Поток хранится в отдельном файле, и хранится ссылка на поток сохраняется в этом файле;- triples stored in the repository are simple, small objects (numbers, lines, names). The
- Модель хранилища данных 850 представляет набор интерфейсов для управления хранилищем данных 851. Такие интерфейсы могут включать транзакции, слепки, интерфейс для запроса фактов (троек) из слепка и интерфейс для записи фактов в транзакцию.- The
- Семантический процессор 840 содержит описание интерфейсов, таких как имя, факты (тройки) и правило модели.- The
N3-конвертер 849 позволяет генерировать модель данных на основе содержимого N3-файла 830. (Стоит отметить, что тройки могут быть сохранены в базе данных в любом формате, как говорилось выше). Объединение с хранилищем данных является еще одним методом формирования паттерна. Кроме того, могут быть сформированы объединенные модели, так что несколько моделей объединяются в одну. Запросы к таким моделям приводят к запросу фактов из каждой объединенной модели. Запись данных при этом продолжает производиться только в одну из моделей.N3-
Обработчик бизнес-правил 844 является опциональным дополнением поверх модели данных. После подключения обработчика 844 к модели, он позволяет вычислять производные на основе существующих фактов и правил.The 844 business rule engine is an optional add-on on top of the data model. After attaching the 844 handler to the model, it allows you to calculate derivatives based on existing facts and rules.
Интерфейс модели данных 846 является набором интерфейсов для запроса фактов из модели, для записи в модель, создания транзакция и слепков модели. Сериализатор онтологий 848 создает запросы на получение объектов из всей модели на основании онтологий (описание структуры объектов хранится в модели).The 846 data model interface is a set of interfaces for querying facts from a model, for writing to a model, creating a transaction, and model snapshots. The 848 ontology serializer creates requests for obtaining objects from the entire model based on ontologies (a description of the structure of objects is stored in the model).
Транзакции и запросы изолированы с использованием транзакций. После открытия транзакции на запись или чтение, транзакция полностью изолирована от других транзакций. Любые изменения в модели данных, сделанные другими транзакциями, не отражаются в ней. Определение конфликтов и разрешение конфликтов выполняется при закрытии транзакции, которая была открыта на запись. Используется так называемая модель оптимистичного параллелизма. Определения конфликтов происходит на уровне отдельных семантических фактов. Конфликт возникает, когда факт был модифицирован двумя транзакциями после создания слепка модели и до закрытия транзакции. Во время определения конфликта будет сгенерировано исключение. В этом случае пользователь может попробовать обновить сохраненные изменения и попробовать еще раз подтвердить изменения.Transactions and queries are isolated using transactions. After opening a transaction for writing or reading, the transaction is completely isolated from other transactions. Any changes to the data model made by other transactions are not reflected in it. Conflict detection and conflict resolution is performed when closing a transaction that has been opened for writing. The so-called optimistic concurrency model is used. Definitions of conflicts occur at the level of individual semantic facts. The conflict occurs when a fact has been modified by two transactions after creating a model nugget and before closing the transaction. An exception will be thrown during conflict detection. In this case, the user can try to update the saved changes and try to confirm the changes again.
Оптимистическое управление параллелизмом (ОСС) является методом управления параллелизмом для систем управления реляционными базами данных, который предполагает, что несколько транзакций могут быть завершены без влияния друг на друга и, следовательно, транзакции могут быть обработаны без блокировки ресурсов данных, которые они затрагивают. Перед подтверждением, каждая транзакция проверяет, что ни одна другая транзакция не изменила данные. Если проверка выявляет конфликтующие модификации, то подтверждающая транзакция откатывается.Optimistic Concurrency Management (OSS) is a concurrency management method for relational database management systems that assumes that several transactions can be completed without affecting each other and, therefore, transactions can be processed without blocking the data resources that they affect. Before confirming, each transaction verifies that no other transaction has changed the data. If the check reveals conflicting modifications, then the confirming transaction is rolled back.
ОСС, как правило, используется в средах с низкими конфликтами данных. Когда конфликты редки, транзакции могут быть завершены без затрат на управление блокировками и без необходимости транзакциям ожидать очистки других блокировок транзакций, что приводит к повышению пропускной способности по сравнению с другими методами управления параллелизмом. Однако, если конфликты происходят часто, то цена неоднократного перезапуска транзакций значительно влияет на производительность, и другие методы управления параллелизмом обладают большей производительностью при таких условиях.OSS is typically used in environments with low data conflicts. When conflicts are rare, transactions can be completed without the expense of managing locks and without the need for transactions to wait for other transaction locks to be cleared, resulting in higher throughput compared to other concurrency management methods. However, if conflicts occur frequently, the cost of repeatedly restarting transactions significantly affects performance, and other concurrency management methods have better performance under such conditions.
Более конкретно, ОСС транзакции включают следующие фазы:More specifically, OSS transactions include the following phases:
Начало: запись метки времени, отмечающей начало транзакции.Start: Record a timestamp marking the start of a transaction.
Модифицирование: чтение значений из базы данных и предварительная запись изменений.Modification: reading values from the database and pre-recording changes.
Проверка: Проверка, модифицировали ли другие транзакции данные, которые используются текущей транзакцией (запись или чтение). Это включает транзакции, которые были завершены после даты начала текущей транзакции и опционально транзакции, которые еще активны на момент проверки.Check: Check if other transactions modified the data used by the current transaction (write or read). This includes transactions that were completed after the start date of the current transaction, and optionally transactions that are still active at the time of verification.
Подтверждение/Откат: Если конфликта нет, сделать все изменения имеющими силу. Если конфликт существует, разрешить его, обычно путем отмены транзакции, хотя возможны другие схемы разрешения. Стоит позаботиться об избегании ошибки TOCTTOU (Time-Of-Check-To-Time-Of-Use), особенно если текущая фаза и предыдущая не выполнены в виде одной атомарной операции (см. также обсуждение механизмов разрешения конфликтов между транзакциями, т.е. транзакциями, не влияющими друг на друга, упомянутым выше.)Confirmation / Rollback: If there is no conflict, make all changes effective. If a conflict exists, resolve it, usually by canceling the transaction, although other resolution schemes are possible. It is worth taking care to avoid the TOCTTOU (Time-Of-Check-To-Time-Of-Use) error, especially if the current phase and the previous one are not performed as a single atomic operation (see also a discussion of conflict resolution mechanisms between transactions, i.e. transactions not affecting each other mentioned above.)
Со ссылкой на ФИГ. 9, типичная система для реализации изобретения включает в себя многоцелевое вычислительное устройство в виде компьютера 20 или сервера, включающего в себя процессор 21, системную память 22 и системную шину 23, которая связывает различные системные компоненты, включая системную память с процессором 21.With reference to FIG. 9, a typical system for implementing the invention includes a multi-purpose computing device in the form of a
Системная шина 23 может быть любого из различных типов структур шин, включающих шину памяти или контроллер памяти, периферийную шину и локальную шину, использующую любую из множества архитектур шин. Системная память включает постоянное запоминающее устройство (ПЗУ) 24 и оперативное запоминающее устройство (ОЗУ) 25. В ПЗУ 24 хранится базовая система ввода/вывода 26 (БИОС), состоящая из основных подпрограмм, которые помогают обмениваться информацией между элементами внутри компьютера 20, например, в момент запуска.The
Компьютер 20 также может включать в себя накопитель 27 на жестком диске для чтения с и записи на жесткий диск, не показан, накопитель 28 на магнитных дисках для чтения с или записи на съемный магнитный диск 29, и накопитель 30 на оптическом диске для чтения с или записи на съемный оптический диск 31 такой, как компакт-диск, цифровой видео-диск и другие оптические средства. Накопитель 27 на жестком диске, накопитель 28 на магнитных дисках и накопитель 30 на оптических дисках соединены с системной шиной 23 посредством, соответственно, интерфейса 32 накопителя на жестком диске, интерфейса 33 накопителя на магнитных дисках и интерфейса 34 оптического накопителя. Накопители и их соответствующие читаемые компьютером средства обеспечивают энергонезависимое хранение читаемых компьютером инструкций, структур данных, программных модулей и других данных для компьютера 20.
Хотя описанная здесь типичная конфигурация использует жесткий диск, съемный магнитный диск 29 и съемный оптический диск 31, специалист примет во внимание, что в типичной операционной среде могут также быть использованы другие типы читаемых компьютером средств, которые могут хранить данные, которые доступны с помощью компьютера, такие как магнитные кассеты, карты флеш-памяти, цифровые видеодиски, картриджи Бернулли, оперативные запоминающие устройства (ОЗУ), постоянные запоминающие устройства (ПЗУ) и т.п.Although the typical configuration described here uses a hard disk, a removable
Различные программные модули, включая операционную систему 35, могут быть сохранены на жестком диске, магнитном диске 29, оптическом диске 31, ПЗУ 24 или ОЗУ 25. Компьютер 20 включает в себя файловую систему 36, связанную с операционной системой 35 или включенную в нее, одно или более программное приложение 37, другие программные модули 38 и программные данные 39. Пользователь может вводить команды и информацию в компьютер 20 при помощи устройств ввода, таких как клавиатура 40 и указательное устройство 42. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, геймпад, спутниковую антенну, сканер или любое другое.Various software modules, including operating system 35, may be stored on a hard disk,
Эти и другие устройства ввода соединены с процессором 21 часто посредством интерфейса 46 последовательного порта, который связан с системной шиной, но могут быть соединены посредством других интерфейсов, таких как параллельный порт, игровой порт или универсальная последовательная шина (УПШ). Монитор 47 или другой тип устройства визуального отображения также соединен с системной шиной 23 посредством интерфейса, например видеоадаптера 48. В дополнение к монитору 47, персональные компьютеры обычно включают в себя другие периферийные устройства вывода (не показано), такие как динамики и принтеры.These and other input devices are connected to the
Компьютер 20 может работать в сетевом окружении посредством логических соединений к одному или нескольким удаленным компьютерам 49. Удаленный компьютер (или компьютеры) 49 может представлять собой другой компьютер, сервер, роутер, сетевой ПК, пиринговое устройство или другой узел единой сети, а также обычно включает в себя большинство или все элементы, описанные выше, в отношении компьютера 20, хотя показано только устройство хранения информации 50. Логические соединения включают в себя локальную сеть (ЛВС) 51 и глобальную компьютерную сеть (ГКС) 52. Такие сетевые окружения обычно распространены в учреждениях, корпоративных компьютерных сетях, Интранете и Интернете.
Компьютер 20, используемый в сетевом окружении ЛВС, соединяется с локальной сетью 51 посредством сетевого интерфейса или адаптера 53. Компьютер 20, используемый в сетевом окружении ГКС, обычно использует модем 54 или другие средства для установления связи с глобальной компьютерной сетью 52, такой как Интернет.The
Модем 54, который может быть внутренним или внешним, соединен с системной шиной 23 посредством интерфейса 46 последовательного порта. В сетевом окружении программные модули или их части, описанные применительно к компьютеру 20, могут храниться на удаленном устройстве хранения информации. Надо принять во внимание, что показанные сетевые соединения являются типичными, и для установления коммуникационной связи между компьютерами могут быть использованы другие средства.The
Claims (50)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2015112157A RU2707708C2 (en) | 2015-04-03 | 2015-04-03 | System and method of searching data in database of graphs |
PCT/RU2015/000237 WO2016159819A1 (en) | 2015-04-03 | 2015-04-10 | System and method for data search in a graph database |
EP15771496.5A EP3095052A1 (en) | 2015-04-03 | 2015-04-10 | System and method for data search in a graph database |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2015112157A RU2707708C2 (en) | 2015-04-03 | 2015-04-03 | System and method of searching data in database of graphs |
Publications (3)
Publication Number | Publication Date |
---|---|
RU2015112157A RU2015112157A (en) | 2016-10-20 |
RU2015112157A3 RU2015112157A3 (en) | 2018-09-11 |
RU2707708C2 true RU2707708C2 (en) | 2019-11-28 |
Family
ID=54366492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2015112157A RU2707708C2 (en) | 2015-04-03 | 2015-04-03 | System and method of searching data in database of graphs |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP3095052A1 (en) |
RU (1) | RU2707708C2 (en) |
WO (1) | WO2016159819A1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2783782C1 (en) * | 2021-12-24 | 2022-11-17 | Общество С Ограниченной Ответственностью "Кейс Студио" | System and method for managing notifications |
WO2023121504A1 (en) * | 2021-12-24 | 2023-06-29 | Общество С Ограниченной Ответственностью "Кейс Студио" | System and method for managing notifications |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2670781C9 (en) * | 2017-03-23 | 2018-11-23 | Илья Николаевич Логинов | System and method for data storage and processing |
US10592557B2 (en) | 2017-03-31 | 2020-03-17 | Microsoft Technology Licensing, Llc | Phantom results in graph queries |
WO2020046159A1 (en) * | 2018-08-31 | 2020-03-05 | Илья Николаевич ЛОГИНОВ | System and method for storing and processing data |
US11783131B2 (en) | 2020-09-10 | 2023-10-10 | International Business Machines Corporation | Knowledge graph fusion |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7890518B2 (en) * | 2007-03-29 | 2011-02-15 | Franz Inc. | Method for creating a scalable graph database |
US8244772B2 (en) * | 2007-03-29 | 2012-08-14 | Franz, Inc. | Method for creating a scalable graph database using coordinate data elements |
RU2490702C1 (en) * | 2012-05-02 | 2013-08-20 | Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." | Method of accelerating processing of multiple select-type request to rdf database using graphics processor |
US8606807B2 (en) * | 2008-02-28 | 2013-12-10 | Red Hat, Inc. | Integration of triple tags into a tagging tool and text browsing |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8478766B1 (en) * | 2011-02-02 | 2013-07-02 | Comindware Ltd. | Unified data architecture for business process management |
-
2015
- 2015-04-03 RU RU2015112157A patent/RU2707708C2/en not_active IP Right Cessation
- 2015-04-10 EP EP15771496.5A patent/EP3095052A1/en not_active Withdrawn
- 2015-04-10 WO PCT/RU2015/000237 patent/WO2016159819A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7890518B2 (en) * | 2007-03-29 | 2011-02-15 | Franz Inc. | Method for creating a scalable graph database |
US8244772B2 (en) * | 2007-03-29 | 2012-08-14 | Franz, Inc. | Method for creating a scalable graph database using coordinate data elements |
US8606807B2 (en) * | 2008-02-28 | 2013-12-10 | Red Hat, Inc. | Integration of triple tags into a tagging tool and text browsing |
RU2490702C1 (en) * | 2012-05-02 | 2013-08-20 | Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." | Method of accelerating processing of multiple select-type request to rdf database using graphics processor |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2783782C1 (en) * | 2021-12-24 | 2022-11-17 | Общество С Ограниченной Ответственностью "Кейс Студио" | System and method for managing notifications |
WO2023121504A1 (en) * | 2021-12-24 | 2023-06-29 | Общество С Ограниченной Ответственностью "Кейс Студио" | System and method for managing notifications |
RU2818494C1 (en) * | 2023-05-16 | 2024-05-02 | Публичное акционерное общество "Транснефть" (ПАО "Транснефть") | Information search system and method |
Also Published As
Publication number | Publication date |
---|---|
WO2016159819A1 (en) | 2016-10-06 |
RU2015112157A3 (en) | 2018-09-11 |
EP3095052A1 (en) | 2016-11-23 |
RU2015112157A (en) | 2016-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11921751B2 (en) | Technologies for data capture and data analysis | |
Ding et al. | Ontology Library Systems: The key to successful Ontology Reuse. | |
US10019537B1 (en) | System and method for data search in a graph database | |
US9569725B2 (en) | Techniques for extracting semantic data stores | |
US9684699B2 (en) | System to convert semantic layer metadata to support database conversion | |
US9213698B1 (en) | Unified data architecture for business process management and data modeling | |
RU2707708C2 (en) | System and method of searching data in database of graphs | |
López et al. | An efficient and scalable search engine for models | |
AU2019284618B2 (en) | Multi-source-type interoperability and/or information retrieval optimization | |
Mosca et al. | Ontology learning from relational database: a review | |
RU2708939C2 (en) | System and method of processing graph data | |
US12093289B2 (en) | Relationship-based display of computer-implemented documents | |
El Malki et al. | Querying heterogeneous data in graph-oriented NoSQL systems | |
Lee et al. | Ontology management for large-scale e-commerce applications | |
Sharma et al. | FLASc: a formal algebra for labeled property graph schema | |
Frosini et al. | Optimisation techniques for flexible SPARQL queries | |
Bassiliades et al. | InterBase-KB: Integrating a knowledge base system with a multidatabase system for data warehousing | |
Schuchardt et al. | Applying content management to automated provenance capture | |
Heine et al. | A DSL for Automated Data Quality Monitoring | |
Salles | Pay-as-you-go information integration in personal and social dataspaces | |
Peukert et al. | LEAP Data and Knowledge Integration Infrastructure | |
Majka | An Evaluation of Knowledge Discovery Techniques for Big Transportation Data | |
Fiedler et al. | CHRISTIAN-ALBRECHTS-UNIVERSITAT KIEL | |
Arnold | The Basics of Complex Correspondences and Functions and their Implementation and Semi-automatic Detection in COMA++ | |
Weippl et al. | Improving storage concepts for semantic models and ontologies |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FA92 | Acknowledgement of application withdrawn (lack of supplementary materials submitted) |
Effective date: 20190121 |
|
FZ9A | Application not withdrawn (correction of the notice of withdrawal) |
Effective date: 20190405 |
|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20190714 |