Vladimír Laš



Báze znalostí

Prvky báze znalostí

Báze znalostí v sobě zahrnuje výše uvedených 5 „tříd znalostí“ (atributy, výroky, pravidla, kontexty, integritní omezení). Dále obsahuje tyto globální vlastnosti:

  • popis báze;
  • jméno experta, od něhož byly získány znalosti obsažené v bázi;
  • jméno znalostního inženýra, který bázi sestavil;
  • datum vytvoření báze;
  • rozsah vah;
  • globální práh platnosti kontextů;
  • globální práh platnosti předpokladů;
  • standardní inferenční mechanismus;
  • standardní implicitní váha výroků;
  • globální priorita.

Báze znalostí je uložena v souboru, jehož je založená na jazyku XML.

Základní syntaxe báze

 <base>
  <global>
  ...
  </global>
  <attributes>
  ...
  </attributes>
  <contexts>
  ...
  </contexts>
  <rules>
   <apriori_rules>
   ...
   </apriori_rules>
   <logical_rules>
   ...
   </logical_rules>
   <compositional_rules>
   ...
   </compositional_rules>
  </rules>
  <integrity_constraints>
  ...
  </integrity_constraints>
</base>

Syntaxe globální vlastností

<global>
 <description> string </description> <!-- baze -->
 <expert> string </expert> <!-- jméno experta -->
 <knowledge_engineer> string </knowledge_engineer> <!-- jméno znalostního inženýra -->
 <date> date </date> <!-- datum vytvoření báze -->
 <inference_mechanism>standard | logical | neural | hybrid</inference_mechanism>
  <!-- inferenční mechanismus -->
 <weight_range> number </weight_range> <!-- rozsah vah -->
 <default_weight>unknown | irrelevant</default_weight><!-- implicitní váha výroků -->
 <global_priority>first | last | minlength | maxlength | type | user</global_priority>
 <!-- globální priorita -->
 <context_global_threshold> number </context_global_threshold> 
 <!-- globální práh platnosti kontextů -->
 <condition_global_threshold> number </condition_global_threshold> 
 <!-- globální práh platnosti předpokladů -->
</global>    

Syntaxe atributů

<attribute>
 <id> string </id>
 <name> string </name>
 <type>binary | single | multiple | numeric</type>
 <scope>case | environment</scope> <!-- case - atribut ke konkretnimu pripadu ; 
 environment - atribut prostredi (pri nulovani se nemusi mazat, zatim bych pouzival jen case -->
 <sources>
  <source>
   <source_type>infer | user | external_file | external_function | calculation</source_type>
   <source_file> string </source_file>
   <function> string </function>
   <parameters> string </parameters>
   <calculation>
    <expression>
     <entry1> string </entry1>
     <entry2> string </entry2>
     <operand> 1 | 2 | 3 | 4 </operand> <!-- 1 - sčítání, 2 - odčítání, 3 - násobení, 4 - dělení -->
    </expression>
    ...
   </calculation>
  </source>
  ...
 </sources>
 <comment> string </comment>
 <actions>
  <action>
   <function> string </function>
   <parameters> string </parameters>
   <action_threshold> string </action_threshold>
  </action>
 </actions> 
 
 <propositions><!-- není u binární atributů -->
  <proposition>
   <id> string </id>
   <name> string </name>
   <weight_function><!-- pouze u numerických atributů -->
    <fuzzy_lower_bound> number </fuzzy_lower_bound>
    <crisp_lower_bound> number </crisp_lower_bound>    
    <crisp_upper_bound> number </crisp_upper_bound>    
    <fuzzy_upper_bound> number </fuzzy_upper_bound>        
   </weight_function>
   <comment> string </comment>
   <actions>
    <action>
     <function>string</function>
     <parameters>string</parameters>
     <action_threshold> string </action_threshold>     
    </action>
   </actions> 
  </proposition>
  ...
 </propositions>
</attribute>
    

Syntaxe pravidel

Apriori pravidla

<apriori_rule>
 <id> string </id>
 <priority> number </priority> 
 <conclusions>
  <conclusion>
   <id_attribute> string </id_attribute>   
   <id_proposition> string </id_proposition>
   <negation> binary </negation>
   <weight> number </weight>
  </conclusion>
  ...
 </conclusions>
 <actions>
  <action>
   <function> string </function>
   <parameters> string </parameters>
  </action>
 </actions> 
 <comment> string </comment>
</apriori_rule>
    

Logické a kompozicionální pravidla

<logical_rule> / <compositional_rule>
 <id> string </id>
 <priority> number </priority> 
 <id_context> string </id_context>
 <context_threshold> number </context_threshold>
 <condition_threshold> number </condition_threshold> <!--  jen u logických pravidel  -->
 <condition>
  <conjunction>
   <literal>
    <id_attribute> string </id_attribute>
    <id_proposition> string </id_proposition>
    <negation> binary </negation>
   </literal>
   ...
  </conjunction>
  ...
 </condition>
 <conclusions>
  <conclusion>
   <id_attribute> string </id_attribute>
   <id_proposition> string </id_proposition>
   <negation> binary </negation>
   <weight> number </weight>
  </conclusion>
  ...
 </conclusions>
 <actions>
  <action>
   <function> string </function>
   <parameters> string </parameters>
  </action>
 </actions> 
 <comment> string </comment>
</logical_rule> / </compositional_rule>
    

Syntaxe kontextů

<context>
 <id> string </id>
 <comment> string </comment>
 <condition>
  <conjunction>
   <literal>
    <id_attribute> string </id_attribute>
    <id_proposition> string </id_proposition>
    <negation> binary </negation>
   </literal>
   ...
  </conjunction>
  ...
 </condition>
</context>    
    

Syntaxe integritních omezení

<integrity_constraint>
 <id> string </id>
 <name> string </name>
 <condition>
  <conjunction>
   <literal>
    <id_attribute> string </id_attribute>
    <id_proposition> string </id_proposition>
    <negation> binary </negation>
   </literal>
   ...
  </conjunction>
  ...
 </condition>
 <conclusions>
  <conclusion>
   <id_attribute> string </id_attribute>
   <id_proposition> string </id_proposition>
   <negation> binary </negation>
   <weight> number </weight>
  </conclusion>
  ...
 </conclusions>
 <comment> string </comment>
</integrity_constraint>