Построение семантической сети с использованием алгоритмического языка программирования. Основные свойства и способы применения семантических сетей, страница 2

  O:=Query.FieldByName('id').AsInteger;

  Query.Close;

  ListBox3.Items.Clear;

  Query.SQL.Text:=

    'select name from attrs'+

    '  inner join objects on (objects.id = attrs.object_id)'+

    '  where (objects.name="'+ListBox2.Items[ListBox2.ItemIndex]+'")';

  Query.Open;

  Query.First;

  for i:=0 to Query.RecordCount-1 do

  begin

    ListBox3.Items.Add(Query.FieldByName('name').AsString);

    Query.Next;

  end;

  Query.Close;

end;

{Кнопка "ADD-Объект"}

procedure TForm1.Button2Click(Sender: TObject);

var

  id: String;

begin

  if (Edit2.Text<>'') then

  begin

    ListBox2.Items.Add(Edit2.Text);

    Query.SQL.Text:='select max(id) as max_id from Objects';

    Query.Open;

    Query.First;

    id:=IntToStr(Query.FieldByName('max_id').AsInteger+1);

    Query.Close;

    Query.SQL.Text:='insert into Objects (id, Cl, name) values ('+id+', '+IntToStr(C)+', "'+Edit2.Text+'")';

    Query.ExecSQL;

  end;

end;

{Вывод Tree с помощью нажатия кнопки}

procedure TForm1.Button5Click(Sender: TObject);

var

  i, j: integer;

  SL: TStringList;

  MS: TMemoryStream;

begin

  SL:=TStringList.Create;

  SL.Add(ListBox1.Items[ListBox1.ItemIndex]);

  Query.SQL.Text:='select id, name from objects where (cl='+IntToStr(C)+')';

  Query.Open;

  Query.First;

  for i:=0 to Query.RecordCount-1 do

  begin

    SL.Add(' '+Query.FieldByName('name').AsString);

    SubQuery.SQL.Text:='select name from attrs where (object_id='+Query.FieldByName('id').AsString+')';

    SubQuery.Open;

    SubQuery.First;

    for j:=0 to SubQuery.RecordCount-1 do

    begin

      SL.Add('  '+SubQuery.FieldByName('name').AsString);

      SubQuery.Next;

    end;

    SubQuery.Close;

    Query.Next;

  end;

  Query.Close;

  MS:=TMemoryStream.Create;

  SL.SaveToStream(MS);

  SL.Free;

  MS.Seek(0, soFromBeginning);

  TreeView1.LoadFromStream(MS);

  MS.Free;

end;

{Удалить все Атрибуты}

procedure TForm1.Button4Click(Sender: TObject);

begin

    Query.SQL.Text:='delete from Attrs';

    Query.ExecSQL;

    ListBox3.Items.Delete(ListBox3.ItemIndex);

end;

{Кнопка "View" выводит имеющиеся Структуры }

procedure TForm1.btnViewClassesClick(Sender: TObject);

var

  i: integer;

begin

  ListBox1.Items.Clear;

  Query.SQL.Text:='select name from cllist';

  Query.Open;

  Query.First;

  for i:=0 to Query.RecordCount-1 do

  begin

    ListBox1.Items.Add(Query.FieldByName('name').AsString);

    Query.Next;

  end;

  Query.Close;

end;

{Кнопка "ADD-Атрибутов"}

procedure TForm1.btnAddAttrClick(Sender: TObject);

var

  id: String;

begin

   if (Edit3.Text<>'') and (Edit4.Text<>'') then

  begin

    ListBox3.Items.Add(Edit3.Text+'_'+Edit4.Text);

    Query.SQL.Text:='select max(id) as max_id from attrs';

    Query.Open;

    Query.First;

    id:=IntToStr(Query.FieldByName('max_id').AsInteger+1);

    Query.Close;

    Query.SQL.Text:='insert into Attrs (id, object_id, name) values ('+id+', '+IntToStr(O)+', "'+Edit3.Text+'_'+Edit4.Text+'")';

    Query.ExecSQL;

  end;

end;

{Кнопка "Отчистить всю Базу"}

procedure TForm1.Button8Click(Sender: TObject);

begin

    ListBox1.Items.Clear;

    ListBox2.Items.Clear;

    ListBox3.Items.Clear;

    TreeView1.Items.Clear;

    Query.SQL.Text:='delete from ClList';

    Query.ExecSQL;

    Query.SQL.Text:='delete from Objects';

    Query.ExecSQL;

    Query.SQL.Text:='delete from Attrs';

    Query.ExecSQL;

end;

{Удаление Всех объектов и атрибутов}

procedure TForm1.Button3Click(Sender: TObject);

begin

    ListBox2.Items.Clear;

    ListBox3.Items.Clear;

    Query.SQL.Text:='delete from Objects';

    Query.ExecSQL;

    Query.SQL.Text:='delete from Attrs';

    Query.ExecSQL;

end;

end.

Пример работы программы.


Вывод.

Мы научились строить семантические сети и изучили основные свойства и способы применения семантических сетей.