DanielSwift commited on
Commit
df59efe
·
1 Parent(s): e0845f9

Enhance UI with detailed instructions, Russian localization, and examples

Browse files
Files changed (1) hide show
  1. app.py +214 -42
app.py CHANGED
@@ -136,71 +136,232 @@ def run_proof_construction(input_json_str, source_concept, target_concept):
136
  return f"An error occurred: {e}", ""
137
 
138
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  # --- Gradio Interface Definition ---
140
 
141
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
142
  gr.Markdown(
143
  """
144
- # SFOSR: Semantic Formal Ontology Structure Representation
145
- Interact with the SFOSR system to analyze, verify semantic structures,
146
- and construct formal proofs based on input vectors.
147
- Provide input data in the specified JSON format.
148
- [Link to GitHub Repo - Placeholder]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
149
  """
150
  )
151
 
152
  with gr.Tabs():
153
- with gr.TabItem("Analyze & Verify"):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
  with gr.Row():
155
  with gr.Column(scale=1):
156
- gr.Markdown("### Input Data (JSON)")
157
  input_json_av = gr.Textbox(
158
  lines=15,
159
- label="SFOSR JSON Input",
160
- info="Paste the JSON containing 'text' (optional) and 'vectors' (required list).",
161
- placeholder='{\n "text": "Example context...",\n "vectors": [\n {\n "id": "V1",\n "source": "ConceptA",\n "target": "ConceptB",\n "type": "Causality",\n "axis": "relationship",\n "justification": "A causes B based on evidence X."\n }\n // ... more vectors\n ],\n "instance_definitions": {\n "Inst1": {"is_a": "ConceptA", "label": "My Instance"}\n }\n}'
162
  )
163
- av_button = gr.Button("Run Analysis & Verification", variant="primary")
164
  with gr.Column(scale=1):
165
- gr.Markdown("### Analysis Summary")
166
  analysis_output = gr.Markdown()
167
- gr.Markdown("### Verification Summary")
168
  verification_output = gr.Markdown()
169
- gr.Markdown("### Vector Verification Details")
170
- vector_details_output = gr.JSON(label="Vector Details")
171
- gr.Markdown("### Concept Graph (Placeholder)")
172
- graph_placeholder_output = gr.Textbox(label="Graph Info") # Placeholder
173
-
174
- # Add examples later using gr.Examples
175
- # gr.Examples(
176
- # examples=[
177
- # [sample_json_1],
178
- # [sample_json_2]
179
- # ],
180
- # inputs=input_json_av
181
- # )
182
-
183
- with gr.TabItem("Construct Proof"):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
  with gr.Row():
185
  with gr.Column(scale=1):
186
- gr.Markdown("### Input Data & Query (JSON)")
187
  input_json_p = gr.Textbox(
188
  lines=10,
189
- label="SFOSR JSON Context",
190
- info="Paste the JSON containing 'vectors' to be used as premises.",
191
- placeholder='{\n "vectors": [\n {\n "id": "V1", "source": "A", "target": "B", "type": "Implication", "axis": "logic", "is_valid": true \n },\n {\n "id": "V2", "source": "B", "target": "C", "type": "Implication", "axis": "logic", "is_valid": true \n }\n ]\n}'
 
 
 
 
 
192
  )
193
- source_concept_input = gr.Textbox(label="Source Concept", info="The starting concept for the proof.")
194
- target_concept_input = gr.Textbox(label="Target Concept", info="The concept to prove reachability for.")
195
- p_button = gr.Button("Find Proof", variant="primary")
 
 
 
196
  with gr.Column(scale=1):
197
- gr.Markdown("### Proof Result")
198
  proof_status_output = gr.Markdown()
199
- gr.Markdown("### Proof Details / Path")
200
- proof_details_output = gr.JSON(label="Proof Structure")
201
-
202
- # Add examples later using gr.Examples
203
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
204
  # --- Event Handlers ---
205
  if sfosr_instance: # Only wire up buttons if the system initialized
206
  av_button.click(
@@ -216,7 +377,18 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
216
  )
217
  else:
218
  # Display a persistent error if the system couldn't load
219
- gr.Markdown("**Error: SFOSR System failed to initialize. Cannot run operations. Check logs.**")
 
 
 
 
 
 
 
 
 
 
 
220
 
221
 
222
  # --- Launch the App ---
 
136
  return f"An error occurred: {e}", ""
137
 
138
 
139
+ # --- Example Input Formats ---
140
+ example_verify_json = '''{
141
+ "text": "Загрязнение воздуха вызывает респираторные заболевания. Загрязнение происходит из-за выбросов заводов.",
142
+ "vectors": [
143
+ {
144
+ "id": "V1",
145
+ "source": "ЗагрязнениеВоздуха",
146
+ "target": "РеспираторныеЗаболевания",
147
+ "type": "Causality",
148
+ "axis": "relationship",
149
+ "justification": "Многочисленные эпидемиологические исследования подтверждают эту связь."
150
+ },
151
+ {
152
+ "id": "V2",
153
+ "source": "ВыбросыЗаводов",
154
+ "target": "ЗагрязнениеВоздуха",
155
+ "type": "Causality",
156
+ "axis": "relationship",
157
+ "justification": "Промышленные выбросы - один из основных источников загрязняющих веществ."
158
+ }
159
+ ]
160
+ }'''
161
+
162
+ example_proof_json = '''{
163
+ "vectors": [
164
+ {
165
+ "id": "V1",
166
+ "source": "ВыбросыЗаводов",
167
+ "target": "ЗагрязнениеВоздуха",
168
+ "type": "Causality",
169
+ "axis": "relationship",
170
+ "justification": "Промышленные выбросы содержат вредные вещества."
171
+ },
172
+ {
173
+ "id": "V2",
174
+ "source": "ЗагрязнениеВоздуха",
175
+ "target": "РеспираторныеЗаболевания",
176
+ "type": "Causality",
177
+ "axis": "relationship",
178
+ "justification": "Вредные частицы попадают в дыхательную систему."
179
+ }
180
+ ]
181
+ }'''
182
+
183
  # --- Gradio Interface Definition ---
184
 
185
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
186
  gr.Markdown(
187
  """
188
+ # SFOSR: Система Формальной Оценки Смысла и Верификации
189
+
190
+ ## Что это такое?
191
+
192
+ SFOSR (Semantic Formal Ontology Structure Representation) - это система для анализа, верификации и формализации смысловых структур.
193
+ Она позволяет представить смысловые связи между концептами в виде векторов, проверить их структурную и логическую валидность,
194
+ и автоматически построить доказательства между концептами.
195
+
196
+ ## Для чего это нужно?
197
+
198
+ - **Формализация знаний** - представление утверждений в структурированном виде
199
+ - **Проверка валидности** - выявление логических ошибок и противоречий
200
+ - **Построение доказательств** - автоматическое нахождение логических цепочек между концептами
201
+ - **Оценка достоверности** - выявление слабых мест в структуре аргументации
202
+
203
+ ## Как это работает?
204
+
205
+ 1. Вы представляете утверждения в виде векторов между концептами (например: "A вызывает B")
206
+ 2. Система анализирует структуру этих векторов и соответствие контрактам
207
+ 3. Система верифицирует векторы, используя базу знаний и правила
208
+ 4. Вы можете построить доказательства между концептами, используя имеющиеся векторы
209
+
210
+ Выберите вкладку ниже, чтобы начать работу:
211
  """
212
  )
213
 
214
  with gr.Tabs():
215
+ with gr.TabItem("Анализ и Верификация"):
216
+ gr.Markdown(
217
+ """
218
+ ### Как пользоваться:
219
+
220
+ 1. **Введите JSON** с векторами в поле ниже (см. пример)
221
+ 2. **Нажмите кнопку** "Запустить Анализ и Верификацию"
222
+ 3. **Посмотрите результаты** анализа и верификации справа
223
+
224
+ #### Структура входных данных:
225
+ - `text`: Контекст (опционально)
226
+ - `vectors`: Массив векторов, каждый из которых содержит:
227
+ - `id`: Уникальный идентификатор вектора
228
+ - `source`: Исходный концепт
229
+ - `target`: Целевой концепт
230
+ - `type`: Тип связи (Causality, Implication, Definition и т.д.)
231
+ - `axis`: Ось связи (relationship, logic и т.д.)
232
+ - `justification`: Обоснование связи
233
+ """
234
+ )
235
  with gr.Row():
236
  with gr.Column(scale=1):
237
+ gr.Markdown("### Входные данные (JSON)")
238
  input_json_av = gr.Textbox(
239
  lines=15,
240
+ label="SFOSR JSON",
241
+ info="Введите JSON с векторами для анализа и верификации",
242
+ placeholder='{\n "text": "Загрязнение воздуха вызывает респираторные заболевания.",\n "vectors": [\n {\n "id": "V1",\n "source": "ЗагрязнениеВоздуха",\n "target": "РеспираторныеЗаболевания",\n "type": "Causality",\n "axis": "relationship",\n "justification": "Научные исследования подтверждают эту связь."\n }\n ]\n}'
243
  )
244
+ av_button = gr.Button("Запустить Анализ и Верификацию", variant="primary")
245
  with gr.Column(scale=1):
246
+ gr.Markdown("### Результаты Анализа")
247
  analysis_output = gr.Markdown()
248
+ gr.Markdown("### Результаты Верификации")
249
  verification_output = gr.Markdown()
250
+ gr.Markdown("### Детали Проверки Векторов")
251
+ vector_details_output = gr.JSON(label="Детали по Векторам")
252
+ gr.Markdown("### Граф Концептов")
253
+ graph_placeholder_output = gr.Textbox(label="Информация о Графе")
254
+
255
+ gr.Examples(
256
+ examples=[
257
+ [example_verify_json]
258
+ ],
259
+ inputs=input_json_av,
260
+ label="Примеры входных данных"
261
+ )
262
+
263
+ with gr.TabItem("Построение Доказательств"):
264
+ gr.Markdown(
265
+ """
266
+ ### Как пользоваться:
267
+
268
+ 1. **Введите JSON** с векторами-посылками (см. пример)
269
+ 2. **Укажите исходный концепт** (от которого начинается доказательство)
270
+ 3. **Укажите целевой концепт** (к которому нужно построить доказательство)
271
+ 4. **Нажмите кнопку** "Найти Доказательство"
272
+ 5. **Посмотрите результат** справа - система попытается найти цепочку рассуждений
273
+
274
+ #### Что такое дока��ательство?
275
+ Доказательство - это цепочка логических шагов, которая показывает, как от исходного концепта можно
276
+ прийти к целевому, используя имеющиеся векторы и правила вывода. Например, если у вас есть
277
+ векторы "A вызывает B" и "B вызывает C", система может вывести "A вызывает C".
278
+ """
279
+ )
280
  with gr.Row():
281
  with gr.Column(scale=1):
282
+ gr.Markdown("### Входные Данные и Запрос")
283
  input_json_p = gr.Textbox(
284
  lines=10,
285
+ label="SFOSR JSON с Векторами",
286
+ info="Введите JSON с векторами, которые будут использованы как посылки для доказательства",
287
+ placeholder='{\n "vectors": [\n {\n "id": "V1", "source": "ВыбросыЗаводов", "target": "ЗагрязнениеВоздуха", "type": "Causality", "axis": "relationship" \n },\n {\n "id": "V2", "source": "ЗагрязнениеВоздуха", "target": "РеспираторныеЗаболевания", "type": "Causality", "axis": "relationship" \n }\n ]\n}'
288
+ )
289
+ source_concept_input = gr.Textbox(
290
+ label="Исходный Концепт",
291
+ info="Введите имя концепта, от которого начинается доказательство",
292
+ placeholder="ВыбросыЗаводов"
293
  )
294
+ target_concept_input = gr.Textbox(
295
+ label="Целевой Концепт",
296
+ info="Введите имя концепта, к которому нужно построить доказательство",
297
+ placeholder="РеспираторныеЗаболевания"
298
+ )
299
+ p_button = gr.Button("Найти Доказательство", variant="primary")
300
  with gr.Column(scale=1):
301
+ gr.Markdown("### Статус Доказательства")
302
  proof_status_output = gr.Markdown()
303
+ gr.Markdown("### Детали Доказательства / Путь")
304
+ proof_details_output = gr.JSON(label="Структура Доказательства")
305
+
306
+ gr.Examples(
307
+ examples=[
308
+ [example_proof_json, "ВыбросыЗаводов", "РеспираторныеЗаболевания"]
309
+ ],
310
+ inputs=[input_json_p, source_concept_input, target_concept_input],
311
+ label="Пример построения доказательства"
312
+ )
313
+
314
+ with gr.TabItem("Справка"):
315
+ gr.Markdown(
316
+ """
317
+ ## Подробная документация по SFOSR
318
+
319
+ ### Типы Векторов
320
+
321
+ SFOSR поддерживает различные типы векторов, каждый из которых представляет определенный вид связи между концептами:
322
+
323
+ - **Causality** - причинно-следственная связь ("A вызывает B")
324
+ - **Implication** - логическое следование ("Если A, то B")
325
+ - **Definition** - определение ("A определяется как B")
326
+ - **PartOf** - отношение ча��ть-целое ("A является частью B")
327
+ - **IsA** - отношение типа ("A является типом B")
328
+ - **Action** - действие ("A выполняет действие над B")
329
+ - **Dependency** - зависимость ("A зависит от B")
330
+ - **И другие** (см. документацию)
331
+
332
+ ### Оси Векторов
333
+
334
+ Каждый вектор относится к определенной оси, которая указывает на область применения связи:
335
+
336
+ - **relationship** - связь между объектами в реальном мире
337
+ - **logic** - логическая связь
338
+ - **classification** - таксономическая связь
339
+ - **process** - связь в процессе
340
+ - **И другие** (см. документацию)
341
+
342
+ ### Процесс Верификации
343
+
344
+ Система проводит несколько уровней проверки для каждого вектора:
345
+
346
+ 1. **Синтаксическая валидация** - проверка наличия всех необходимых полей
347
+ 2. **Структурная валидация** - проверка соответствия контрактам и правилам
348
+ 3. **Семантическая валидация** - проверка согласованности с базой знаний
349
+
350
+ ### Построение Доказательств
351
+
352
+ Для построения доказательств система использует правила вывода:
353
+
354
+ - **Chain Rule** - "A → B" и "B → C" дает "A → C"
355
+ - **Causality Transfer** - "A causes B" и "B implies C" дает "A causes C"
356
+ - **И другие правила**
357
+
358
+ ### Дополнительные Ресурсы
359
+
360
+ - [GitHub репозиторий](https://github.com/DanielSwift1992/SFOSR) (Скоро доступен)
361
+ - [Теоретическая база](https://lesswrong.com/) (Скоро доступен)
362
+ """
363
+ )
364
+
365
  # --- Event Handlers ---
366
  if sfosr_instance: # Only wire up buttons if the system initialized
367
  av_button.click(
 
377
  )
378
  else:
379
  # Display a persistent error if the system couldn't load
380
+ gr.Markdown(
381
+ """
382
+ ## Ошибка: Система SFOSR не инициализирована
383
+
384
+ Возможные причины:
385
+ 1. Файл базы данных `sfosr.db` не найден
386
+ 2. Проблема с импортом модулей `sfosr_core`
387
+ 3. Ошибка в коде системы
388
+
389
+ Пожалуйста, проверьте логи сервера для получения более подробной информации.
390
+ """
391
+ )
392
 
393
 
394
  # --- Launch the App ---