Все для Joomla. Беспланые шаблоны и расширения.

Семантический разрыв

 

Представление понятий и связей в обычной семантической сети и в CWH

Как известно - семантическая сеть представляет из себя граф, вершины которого соответствуют объектам предметной области, а ребра - отношениям между ними.

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

С одной стороны это машинное представление семантической сети должно быть достаточно выразительным для представления именно взвешенного ориентированного графа.

Машинным представлением графа является матрица смежности вершин, матрица инцидентности, список ребер.

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

Например, широко применяемое отношение AKO (A Kind of, отношение между надмножеством и подмножеством), отображенное как обычно в виде надписи над стрелкой в графическом представлении, и в виде одной строки в матрице инцидентности в машинном представлении, выражает только тот факт, что "множество Y является надмножеством по отношению к множеству X".

В то время как отношение "X AKO Y", подразумевает две равноправные интерпретации
 - "множество Y является надмножеством по отношению к множеству X"
 - "множество X является подмножеством по отношению к множеству Y".

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

То же самое относится и к другим двуместным отношениям,

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

Проблему представления многоместных отношений решают концептуальные графы,

 

 

Двуместные и многоместные отношения.

(отношения и аспекты, двунаправленные связи, проблемы двунаправленных связей, "полуторанаправленные связи")

 

 

Организация хранилища

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

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

 

Примитивы хранения

сБД - совокупность контекстов. Предполагается, что могут существовать приложения, работающие одновременно с несколькими разными сБД, хотя бы для целей импорта-экспорта данных или бэкапа.
Контекст - группа хранения узлов семантической сети, состоит из дерева понятий и дерева имен.
Изначальное применение - распределение данных по предметным областям: контекст про химию, про физику, про бухучёт, про бизнес-процессы в компании X.
Альтернативное применение - разделение на части для преодоления ограничений по объёму, которые могут быть вызваны разрядностью адресов в случае бинарной базы данных или длиной идентификаторов в случае построения базы данных на тексктовых файлах, как XML.
Узел семантической сети - совокупность идентификатора, человеко-понятного описания смысла узла и список инцидентности других узлов семантической сети. В оригинальной семантической сети описанием инцидентности было бы словесное указание типа связи и адрес связанного узла.
В CWH для описания связи между узлами семантической сети используется четверка "Ключ" - "Тип связи" - "Тип адреса" - "Адрес".
                                  тип связи на данный момент реализован только "s"
                                  возможные форматы адресов:Примитивы обработки

Курсор - структура данных , предназначенная для сохранения результатов поиска, т.е. множества узлов сети. Особо важна, поскольку планируется практически все операции и вычисления свести к поиску на семантической сети.
             количество узлов сети, на которые указывает курсор может изменяться в ходе поиска.      

 

 

Команды обработки

Команды, прямого управления примитивами.
Эти команды не могут быть описаны на языке управления сБД, исполняемом интерпретатором, поскольку оперируют структурами данных, непредставимыми в текстовом виде.

Function MkSubDir(Path:String;Module,Sub:Longint):String;
Function ParseAddr(Cursor:TsDBCursor;Addr:String;Var CtxName,NodeID:String):String;
Function LookupFQ(DBName,CtxName:String;Var DB:TsDB;Var Ctx:TsDBCtx):String;
Function IDToPath(ID,Module,Depth:Longint):String;
Function GetCursorByName(Name:String):TsDBCursor;
Function Read2Cache(Var CacheObject:TCacheObject;var Error:String):String;    //а не может ли здесь тоже мгновенно устаревать кэш?
Function Read2CacheByID(Var Error:String;Var Ctx:TsDBCtx;Var Tree:TDataTree;ID:String):TCacheObject;
Function FlushCacheObject(Var CacheObject:TCacheObject):String;
Function CreateNode(Var Ctx:TSDBCtx;Var Tree:TDataTree;InternalName:String;Var Error:String):TCacheObject;
Function WriteValue(CacheObject:TCacheObject;Key,Value:String;List:TStringList):String;

Function sDB_FQGetConceptHandleByID(DBName,CtxName,ConceptID:String):TCacheObject;
Function CreateSLink(Var CacheObject:TCacheObject;Key,AddrType,Addr:String):String;
Function SlideByKey(Source:TCacheObject;Key:String):TCacheObject;
Function BranchBySingleKey(Source:TCacheObject;Key:String;Var List:TStringList;Var EvalResult:TStringList):String;
Function BranchByKey(Source:TCacheObject;Key:String;Var List:TStringList;Var EvalResult:TStringList):String;

Команды-обертки
аналоги некоторых команд прямого управления, доступные для описания на интерпретируемом языке

Function sDB_FQFlushCacheObject(DBName,CtxName,ObjectID:String):String;
Function sDB_CRWriteValue(CursorName,SourceAddr,Key,Value:String;List:TStringList):String;

 

Команды для манипуляции с БД.

Function sDB_CreateDB(DBName,Path:String):String;
Function sDB_DeleteDB(Path:String):String;
Function sDB_OpenDB(Path:String):String;
Function sDB_CloseDB(DBName:String):String;

 

Команды для манипуляции с контекстами.

Function sDB_FQCreateCtx(DBName,CTXName,Module,Depth,CacheSize,CachePolicy,NModule,NDepth,NCacheSize,NCachePolicy:String):String;
Function sDB_FQDeleteCtx(DBName,CtxName:String):String;

 

Команды для манипуляции с курсорами.

Function sDB_CreateCursor(Name:String):String;
Function sDB_SetCursor(CursorName,DBName,Addr:String):String;
Function sDB_DeleteCursor(Name:String):String;
Function sDB_CopyCursor(Name1,Name2:String):String;

 

Команды 1-го уровня для манипуляции с понятиями и отношениями.

Function sDB_CRCreateConcept(CursorName,InternalName:String):String;
Function sDB_FQDeleteConcept(DBName,CtxName,ConceptID:String):String;
Function sDB_CRCreateRelation(CursorName,InternalName:String):String;
Function sDB_FQWriteName(DBName,CtxName,Name,ConceptID:String):String;      записывает имя в дерево имен
Function sDB_CRCreateSLink(CursorName,SourceAddr,Key,AddrType,Addr:String):String;
Function sDB_CRCreateALink(CursorName,SourceAddr,Key,AddrType,Addr:String):String;
Function sDB_FQFindConceptByName(DBName,CtxName,Name:String):String;
Function sDB_CRFindConcept(CursorName,Addr:String):String;
Function sDB_CRSearchByName(CursorName,Name:String):String;
Function sDB_CRSearchByChain(CursorName,Chain:String):String;
Function sDB_CREvalByChain(CursorName,Addr,Chain:String;Var Value:TStringList):String;


Команды 2-го уровня для манипуляции с понятиями и отношениями.

Function sDB_CRCreateBinRel(CursorName,Addr1,Addr2,RelIntName,Aspect1,Aspect2:String):String;

Function sDB_CRFilterByChain(CursorName,Chain:String):String;

 

Команды для манипуляции с группами (множествами).

Function sDB_CRAddToGroup(CursorName,GroupAddr:String):String;

 

Команды для манипуляции с таксонами и объектами.

Function sDB_CRSetAttrValue(CursorName,ConceptAddr,AttrName,Value:String):String;
Function sDB_CRImportObject(CursorName,Addr,FileName:String):String;

Function sDB_CREnumAttrs(CursorName,Name:String;Var AttrList:TStringList):String;
Function sDB_CRActivateMethod(CursorName,Name:String):String;

 

 
Рубрика Непосредственные Обертки 1-й уровень 2-й уровень 3-й уровень
Вспомогательные Function MkSubDir
(Path:String;Module,Sub:Longint):String;
       
  Function IDToPath
(ID,Module,Depth:Longint):String;
       
Манипуляции
БД
    Function sDB_CreateDB
(DBName,Path:String):String;
   
      Function sDB_DeleteDB
(Path:String):String;
   
      Function sDB_OpenDB
(Path:String):String;
   
      Function sDB_CloseDB
(DBName:String):String;
   
Манипуляции
контекстами
    Function sDB_FQCreateCtx
(DBName,CTXName,Module,Depth,
CacheSize,CachePolicy,NModule,NDepth,
NCacheSize,NCachePolicy:String):String;
   
      Function sDB_FQDeleteCtx
(DBName,CtxName:String):String;
   
Манипуляции
курсорами
Function GetCursorByName
(Name:String):TsDBCursor;
       
      Function sDB_CreateCursor
(Name:String):String;
   
      Function sDB_DeleteCursor
(Name:String):String;
   
      Function sDB_SetCursor
(CursorName,DBName,Addr:String):String;
   
      Function sDB_CopyCursor
(Name1,Name2:String):String;
   
Манипуляции
примитивами
(узлами)
Function ParseAddr
(Cursor:TsDBCursor;Addr:String;Var CtxName,NodeID:String):String;
       
  Function LookupFQ
(DBName,CtxName:String;Var DB:TsDB;Var Ctx:TsDBCtx):String;
       
  Function CreateNode
(Var Ctx:TSDBCtx;Var Tree:TDataTree;InternalName:String;Var Error:String):TCacheObject;
       
  Function Read2Cache
(Var CacheObject:TCacheObject;var Error:String):String;
       
  Function Read2CacheByID
(Var Error:String;Var Ctx:TsDBCtx;Var Tree:TDataTree;ID:String):TCacheObject;
Function sDB_FQGetConceptHandleByID
(DBName,CtxName,ConceptID:String)
:TCacheObject;
     
  Function FlushCacheObject
(Var CacheObject:TCacheObject):String;
       
           
Манипуляции
понятиями и
отношениями
         
      Function sDB_CRCreateConcept
(CursorName,InternalName:String):String;
   
      Function sDB_FQDeleteConcept
(DBName,CtxName,ConceptID:String):String;
   
      Function sDB_CRCreateRelation
(CursorName,InternalName:String):String;
Function sDB_CRCreateBinRel
(CursorName,Addr1,Addr2,RelIntName,Aspect1,Aspect2:String):String;
 
      Function sDB_FQWriteName
(DBName,CtxName,Name,ConceptID:String):String;
   
  Function CreateSLink
(Var CacheObject:TCacheObject;Key,AddrType,Addr:String):String;
  Function sDB_CRCreateSLink
(CursorName,SourceAddr,Key,AddrType,Addr:String):String;
   
      Function sDB_CRCreateALink
(CursorName,SourceAddr,Key,AddrType,Addr:String):String;
   
      Function sDB_FQFindConceptByName
(DBName,CtxName,Name:String):String;
   
      Function sDB_CRFindConcept
(CursorName,Addr:String):String;
   
  Function SlideByKey
(Source:TCacheObject;Key:String):TCacheObject;
  Function sDB_CRSearchByName
(CursorName,Name:String):String;
   
  Function BranchBySingleKey
(Source:TCacheObject;Key:String;Var List:TStringList;Var EvalResult:TStringList):String;
  Function sDB_CRSearchByChain
(CursorName,Chain:String):String;
Function sDB_CRFilterByChain
(CursorName,Chain:String):String;
 
  Function BranchByKey
(Source:TCacheObject;Key:String;Var List:TStringList;Var EvalResult:TStringList):String;
  Function sDB_CREvalByChain
(CursorName,Addr,Chain:String;Var Value:TStringList):String;
   
           
  Function WriteValue
(CacheObject:TCacheObject;Key,Value:String;List:TStringList):String;
       
Манипуляции
группами
    Function sDB_CRAddToGroup
(CursorName,GroupAddr:String):String;
   
Манипуляции
таксонами
         
          Function sDB_CRSetAttrValue
(CursorName,ConceptAddr,AttrName,Value:String):String;
         

Function sDB_CRImportObject
(CursorName,Addr,FileName:String):String;

(в зависимости от реализации может рассматриваться как 4 уровня или мета )

       

Function sDB_CRActivateMethod
(CursorName,Name:String):String;

(мета-команда, т.к. ставит в очередь подкоманды + создает подкурсоры)

 
       

Function sDB_CREnumAttrs
(CursorName,Name:String;Var AttrList:TStringList):String;

пока недописана

 

 

Предсталвение понятия в семантической сети.

 

Представление отношения в семантической сети.

 

 Хранение значений в семантической сети.

 

Реализация объектной модели поверх семантической сети.