CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application is a 371 National Stage Application of PCT/EP2015/054296, filed Mar. 2, 2015. This application claims the benefit of European Application No. 14157487.1, filed Mar. 3, 2014, which is incorporated by reference herein in its entirety. 
       BACKGROUND OF THE INVENTION 
       [0002]    1. Field of the Invention 
         [0003]    The present invention relates to a rule-based reasoning method. 
         [0004]    2. Description of the Related Art 
         [0005]    Clinical decision support is a technique to help physicians with decision making tasks, such as obtaining a diagnosis for a patient. 
         [0006]    Clinical decision support systems generally execute queries on large data repositories of patient data. Clinical terminology is used in such queries in expressing the domain of interest. The success of retrieving the desired results is largely depending on understanding the used terminology, as well as its hierarchy. 
         [0007]    Terminology reasoning is thus required in executing such queries. Executing queries on a data repository by means of state of the art rule based reasoning techniques may take a large amount of computational effort, which might be unacceptable. 
         [0008]    It is thus an aspect of the present invention to provide a technique that results in a decrease of computational effort required to solve such a query by transforming the rule set that is used for querying. 
         [0009]    The present invention has been developed with the aim of optimizing the querying of data repositories of clinical patient information in a healthcare environment. The field of application of the present invention is however not limited thereto. 
       SUMMARY OF THE INVENTION 
       [0010]    The above-mentioned aspect is realized by a method as set out below. 
         [0011]    Specific features for preferred embodiments of the invention are also set out below. 
         [0012]    According to the present invention rules used in rule based reasoning are so-called ‘specialized’. In this context ‘specialisation of a rule’ is defined as described below. 
         [0013]    Consider a general rule 
         [0000]      ∀x, y : P(x)         Q(x, y)         C(x, y)
 
         [0014]    And consider an ontology containing statements P(a). 
         [0015]    This rule can be specialized for each value “a” of x as follows: 
         [0000]    
       
         
           
             
               
                 ∀ 
                 x 
               
               , 
               
                 
                   y 
                    
                   
                     : 
                   
                    
                   
                       
                   
                    
                   
                     P 
                      
                     
                       ( 
                       x 
                       ) 
                     
                   
                 
                 ⇒ 
                 
                   
                     ( 
                     
                       
                         Q 
                          
                         
                           ( 
                           
                             x 
                             , 
                             y 
                           
                           ) 
                         
                       
                       ⇒ 
                       
                         C 
                          
                         
                           ( 
                           
                             x 
                             , 
                             y 
                           
                           ) 
                         
                       
                     
                     ) 
                   
                    
                   
                     P 
                      
                     
                       ( 
                       a 
                       ) 
                     
                   
                 
               
             
             
               
                 ∀ 
                 
                   y 
                    
                   
                     : 
                   
                    
                   
                       
                   
                    
                   
                     Q 
                      
                     
                       ( 
                       
                         a 
                         , 
                         y 
                       
                       ) 
                     
                   
                 
               
               ⇒ 
               
                 C 
                  
                 
                   ( 
                   
                     a 
                     , 
                     y 
                   
                   ) 
                 
               
             
           
         
       
     
         [0016]    The rules ∀ y : Q(a,y)         C(a,y) are defined in the context of the present invention as specialized rules, in which the value of x is “materialized”. 
         [0017]    As a result of the above described specialization the statements P(a) and the rule ∀x,y : P(x)         Q(x,y)         C(x,y) can be eliminated from the knowledge base. 
         [0018]    The present invention is applicable to rules comprising at least two variables. 
         [0019]    It is important that the number of variables in the “P( ) part” is one lower than the total number of variables in the rule. That way, after the variables in the P( ) part are substituted with constant terms from the ontology, one variable remains unbound. 
         [0020]    Also, not all variables in P must occur in Q( ) or C( ). 
         [0000]    
       
         
           
             
               
                 ∀ 
                 x 
               
               , 
               y 
               , 
               
                 
                   z 
                    
                   
                     : 
                   
                    
                   
                       
                   
                    
                   
                     P 
                      
                     
                       ( 
                       
                         x 
                         , 
                         z 
                       
                       ) 
                     
                   
                 
                 ⇒ 
                 
                   
                     ( 
                     
                       
                         Q 
                          
                         
                           ( 
                           
                             x 
                             , 
                             y 
                             , 
                             z 
                           
                           ) 
                         
                       
                       ⇒ 
                       
                         C 
                          
                         
                           ( 
                           
                             x 
                             , 
                             y 
                             , 
                             z 
                           
                           ) 
                         
                       
                     
                     ) 
                   
                    
                   
                     P 
                      
                     
                       ( 
                       
                         a 
                         , 
                         b 
                       
                       ) 
                     
                   
                 
               
             
             
               
                 ∀ 
                 
                   y 
                    
                   
                     : 
                   
                    
                   
                       
                   
                    
                   
                     Q 
                      
                     
                       ( 
                       
                         a 
                         , 
                         y 
                         , 
                         b 
                       
                       ) 
                     
                   
                 
               
               ⇒ 
               
                 C 
                  
                 
                   ( 
                   
                     a 
                     , 
                     y 
                     , 
                     b 
                   
                   ) 
                 
               
             
           
         
       
     
         [0021]    The rdfs:subClassOf rule (used in the embodiment described below) is an example of rule which contains 3 variables. 
         [0022]    Specialisation according to the present invention differs from materialisation which operation is defined below (this materialization is not aimed at in the present invention). 
         [0000]    Consider a rule 
         [0000]      ∀x : P(x)         C(x)
 
         [0023]    And consider an ontology containing statements P(a). 
         [0024]    The ontology can be materialized using Modus Ponens: 
         [0000]    
       
         
           
             
               
                 ∀ 
                 
                   x 
                    
                   
                     : 
                   
                    
                   
                       
                   
                    
                   
                     P 
                      
                     
                       ( 
                       x 
                       ) 
                     
                   
                 
               
               ⇒ 
               
                 
                   C 
                    
                   
                     ( 
                     x 
                     ) 
                   
                 
                  
                 
                   P 
                    
                   
                     ( 
                     a 
                     ) 
                   
                 
               
             
             
               C 
                
               
                 ( 
                 a 
                 ) 
               
             
           
         
       
     
         [0025]    The statements C(a) are added to the ontology. 
         [0026]    The rule ∀x : P(x)         C(x) can be eliminated from the ontology. 
         [0027]    The rule specialisation method of the present invention is advantageous in that the computation speed of the terminology reasoning can be enhanced using specialised rules obtained by applying reasoning on generic rules as set out higher. 
         [0028]    The set of specialised rules can be computed in advance of querying a data repository and only needs to be adapted in case the ontology would change. 
         [0029]    The set of specialised rules can be compiled into an image, which is a binary, reasoner specific representation of a rule set. This representation is advantageous since the reasoner can load this binary representation much faster than a textual form of the rules. 
         [0030]    The method of the present invention is generally implemented in the form of a computer program product adapted to carry out the method steps of the present invention when run on a computer. The computer program product is commonly stored in a computer readable carrier medium such as a DVD. Alternatively the computer program product takes the form of an electric signal and can be communicated to a user through electronic communication. 
         [0031]    Further advantages and embodiments of the present invention will become apparent from the following description and drawing. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0032]      FIG. 1  is a schematic representation of an ontology describing bone fractures. 
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
       [0033]    While the present invention will hereinafter be described in connection with preferred embodiments thereof, it will be understood that it is not intended to limit the invention to those embodiments. 
         [0034]    The invention will be explained with regard to an application in the field of querying a repository of clinical data but is not limited to this application. The invention can be used in other applications based on rule-based reasoning as well as on data representing other types of information than clinical information. 
         [0035]    Consider an ontology describing bone fractures. The example shown in  FIG. 1  is taken from SNOMED—CT which is a Systematized Nomenclature of Medicine Clinical Terms and has a class hierarchy. 
         [0036]    The ontology schematically depicted in  FIG. 1  is described as follows:
       sct:FractureOfFemur rdfs:subClassOf sct:FractureOfLowerLimb.   sct:FractureOfFibula rdfs:subClassOf sct:FractureOfLowerLimb.   sct:FractureOfTibia rdfs:subClassOf sct:FractureOfLowerLimb.   sct:FractureOfLowerLimb rdfs:subClassOf sct:FractureOfBone.   sct:FractureOfUpperLimb rdfs:subClassOf sct:FractureOfBone.   sct:FractureOfBone rdfs:subClassOf sct:BoneInjury.       
 
         [0043]    The following instance data are considered: 
         [0044]    A patient with a hip fracture (i.e. a fracture of the “femur” or thigh bone).
       :patient :hasCondition :condition.   :condition a sct:FractureOfFemur.       
 
         [0047]    When we query for patients with “bone injuries”, the patient with the femoral fracture should be returned. 
         [0048]    Four possible cases are compared in the explanation below. 
         [0049]    The third case is the case according to the present invention, cases 1, 2 and 4 are described for comparative reasons. 
       Case 1: No Materialization/Specialization (Comparative Embodiment) 
       [0050]    In this case no materialisation, nor specialisation is performed on the rule sct. 
         [0051]    The rules contain variables which quantify over properties (e.g. “?p”) and classes (“?C”). 
         [0052]    At query time a reasoner reads the rules, the ontology and the instance data and produces the result. The reasoner has to calculate a (possibly huge) sct of statements containing the closure of the transitive properties. In this case this calculation is done each time a new query needs to answered. 
       Rules 
       [0000]    
       
         
           
             { ?C rdfs:subClassOf ?D. ?x a ?C }=&gt;{ ?x a ?D }. 
             { ?p a owl:TransitiveProperty. ?x ?p ?y. ?y ?p ?z }=&gt;{ ?x ?p ?z }. 
           
         
       
     
       Ontology 
       [0000]    
       
         
           
             rdfs:subClassOf a owl:TransitiveProperty. 
             sct:FractureOfFemur rdfs:subClassOf sct:FractureOfLowerLimb. 
             sct:FractureOfFibula rdfs:subClassOf sct:FractureOfLowerLimb. 
             sct:FractureOfTibia rdfs:subClassOf sct:FractureOfLowerLimb. 
             sct: FractureOfLowerLimb rdfs:subClassOf sct: FractureOfBone. 
             sct:FractureOfUpperLimb rdfs:subClassOf sct:FractureOfBone. 
             sct:FractureOfBone rdfs:subClassOf sct:BoneInjury. 
           
         
       
     
       Result 
       [0000]    
       
         
           
             sct:FractureOfFemur rdfs:subClassOf sct:FractureOfLowerLimb. 
             sct:FractureOfFemur rdfs:subClassOf sct:FractureOfBone, 
             sct:FractureOfFemur rdfs:subClassOf sct:BoneInjury. 
             sct:FractureOfFibula rdfs:subClassOf sct:FractureOfLowerLimb. 
             sct:FractureOfFibula rdfs:subClassOf sct:FractureOfBone. 
             sct:FractureOfFibula rdfs:subClassOf sct:BoneInjury. 
             sct:FractureOfTibia rdfs:subClassOf sct:FractureOfLowerLimb. 
             sct:FractureOfTibia rdfs:subClassOf sct:FractureOfBone. 
             sct:FractureOfTibia rdfs:subClassOf sct:BoneInjury. 
             sct:FractureOfLowerLimb rdfs:subClassOf sct:FractureOfBone. 
             sct:FractureOfLowerLimb rdfs:subClassOf sct:BoneInjury. 
             sct:FractureOfUpperLimb rdfs:subClassOf sct:FractureOfBone. 
             sct:FractureOfUpperLimb rdfs:subClassOf sct:BoneInjury. 
             sct:FractureOfBone rdfs:subClassOf sct:BoneInjury. 
             :patient :hasCondition :condition. 
             :condition a sct:FractureOfFemur. 
             :condition a sct:FractureOfLowerLimb. 
             :condition a sct:FractureOfBone. 
             :condition a sct:BoneInjury. 
           
         
       
     
       Case 2: Properties Specialization (Comparative Embodiment) 
       [0081]    In this case rules are eliminated using the specialization procedure explained, if in the resulting specialized rule, the variables no longer quantify over properties. This is done (manually) at development/deployment time. 
         [0082]    At query time the reasoner reads the rules, the ontology and the instance data and produces the result. 
         [0083]    This is state of the art technology. 
         [0084]    In this state of the art method the number of rules is small, but if the ontology and rules make use of transitive properties, the reasoner has to calculate a (possibly huge) sct of statements containing the closure of the transitive properties. 
         [0085]    This calculation is done each time a new query needs to answered. 
       Rules 
       [0000]    
       
         
           
             { ?c: rdfs:subClassOf ?D. ?x a ?C } =&gt; { ?x a ?D }. 
             { ?x rdfs:subClassOf ?y. ?y rdfs:subClassOf ?z } =&gt; { ?x rdfs:subClassOf ?z }. 
           
         
       
     
       Ontology 
       [0000]    
       
         
           
             sct: FractureOfFemur rdfs:subClassOf sct:FractureOfLowerLimb 
             sct:FractureOfFibula rdfs:subClassOf sct:FractureOfLowerLimb. 
             sct:FractureOfTibia rdfs:subClassOf sct:FractureOfLowerLimb. 
             sct:FractureOfLowerLimb rdfs:subClassOf sct:FractureOfBone. 
             sct:FractureOfUpperLimb rdfs:subClassOf sct:FractureOfBone. 
             sct:FractureOfBone rdfs:subClassOf sct:BoneInjury. 
           
         
       
     
       Result 
       [0000]    
       
         
           
             sct:FractureOfFemur rdfs:subClassOf sct:FractureOfLowerLimb. 
             sct: FractureOfFemur rdfs:subClassOf sct: FractureOfBone. 
             sct: FractureOfFemur rdfs:subClassOf sct: BoneInjury. 
             sct:FractureOfFibula rdfs:subClassOf sct:FractureOfBone. 
             sct:FractureOfFibula rdfs:subClassOf sct:BoneInjury. 
             sct:FractureOfTibia rdfs:subClassOf sct:FractureOfLowerLimb. 
             sct:FractureOfTibia rdfs:subClassOf sct:FractureOfBone. 
             sct:FractureOfTibia rdfs:subClassOf sct:BoneInjury. 
             sct:FractureOfLowerLimb rdfs:subClassOf sct:FractureOfBone. 
             sct:FractureOfLowerLimb rdfs:subClassOf sct:BoneInjury. 
             sct:FractureOfUpperLimb rdfs:subClassOf sct:FractureOfBone. 
             sct:FractureOfUpperLimb rdfs:subClassOf sct:BoneInjury. 
             sct:FractureOfBone rdfs:subClassOf sct:BoneInjury. 
             :patient :hasCondition :condition. 
             :condition a sct:FractureOfFemur. 
             :condition a sct:FractureOfLowerLimb. 
             :condition a sct:FractureOfBone. 
             :condition a sct:BoneInjury. 
           
         
       
     
         [0112]    This state of the art method wherein the transitive closures are calculated at query time by applying rules on the knowledge sct and the data set at query time, may result in an unacceptable long query time. 
       Case 3 Classes Specialization According To The Present Invention 
       [0113]    In this case rules are eliminated using the specialization procedure explained above, if in the resulting specialized rule, the variables no longer quantify over classes. 
         [0114]    This is done by an extra reasoning step that has to be done only once (or when the ontology changes, which is infrequently) at development/deployment time. 
       Example 
       [0115]    We can specialize rule
       { ?C rdfs:subClassOf ?D. ?x a ?C } =&gt; { ?x a ?D }.       
 
         [0117]    with statement
       sct:FractureOfFemur rdfs:subClassOf sct:FractureOfLowerLimb.       
 
         [0119]    In this case P is “rdfs:subClassOf”, Q and C are “a” which is a short notation for “rdf:type”, so we get (variables x,y,z are renamed to C,D,x)
       ∀C, D, x : subClassOf(C,D)         type(x,C)         type(x,D)   subClassOf (FractureOfFemur, FractureOfLowerLimb)   Unifying C with FractureOfFemur and D with FractureOfLowerLimb the reasoner derives the specialized rule   ∀x : type (x, FractureOfFemur)         type (x, FractureOfLowerLimb)   or in N3 format:   { ?x a sct:FractureOfFemur } =&gt; { ?x a sct:FractureOfLowerLimb }.       
 
         [0126]    Doing this for all “rdfs:subClassOf” statements in the ontology will generate all the rules below. 
         [0127]    The set of rules is large, but the size of the set is linear with the number of statements in the ontology. 
         [0128]    At query time the reasoner reads the rules, the instance data and produces the result. The advantage of this method of the present invention is that transitive closure does not need to be calculated, giving huge performance gains. 
       Rules 
       [0000]    
       
         
           
             { ?x a sct:FractureOfFemur } =&gt; { ?x a sct:FractureOfLowerLimb }. 
             { ?x a sct:FractureOfFibula } =&gt; { ?x a sct:FractureOfLowerLimb }. 
             { ?x a sct:FractureOfTibia } =&gt; { ?x a sct:FractureOfLowerLimb }. 
             { ?x a sct:FractureOfLowerLimb } =&gt; { ?x a sct:FractureOfBone }. 
             { ?x a sct:FractureOfUpperLimb } =&gt; { ?x a sct:FractureOfBone }. 
             { ?x a sct:FractureOfBone } =&gt; { ?x a sct:BoneInjury }. 
           
         
       
     
       Result 
       [0000]    
       
         
           
             :patient :hasCondition :condition. 
             :condition a sct:FractureOfFemur. 
             :condition a sct:FractureOfLowerLimb. 
             :condition a sct:FractureOfBone. 
             :condition a sct:BoneInjury. 
           
         
       
     
         [0140]    The method of the present invention as described higher applies rule specialisation on the knowledge sct resulting in a specialised rule sct that can be generated in advanced and used at query time. The specialisation method avoids calculating transitive closures and is computationally less expensive. The generated rule sct is re-usable and the size of the rule sct is reasonable. 
       Case 4 Transitive Closure Materialized 
       [0141]    In this state of the art case which is explained below for comparative purposes only, the ontology is expanded using the materialization procedure explained above. This is done by an extra reasoning step that has to be done only once (or when the ontology changes, which is infrequently) at development/deployment time. 
         [0142]    The set of statements in the ontology can become large, and contains the closure of the transitive properties. 
         [0143]    The number of statements is quadratic with the number of original statements in the ontology using transitive properties. 
         [0144]    E.g. The SNOMED-CT medical terminology, contains around 311000 concepts, in a hierarchy described with 435000 rdfs:subClassOf relations. The transitive closure consists of around 5285000 rdfs:subClassOf relations. 
         [0145]    The size can become too large for a reasoner to calculate the materialized ontology (memory and/or calculation time limitations) 
         [0146]    At query time the reasoner reads the rules, the ontology and the instance data and produces the result. The transitive closure does not need to be calculated, giving huge performance gains. However, the time spend on reading the large ontology cancels this benefit. 
       Rules 
       [0000]    
       
         
           
             { ?C rdfs:subClassOf ?D. ?x a ?C } =&gt; { ?x a ?D }. 
           
         
       
     
       Ontology 
       [0000]    
       
         
           
             sct:FractureOfFemur rdfs:subClassOf sct:FractureOfLowerLimb. 
             sct:FractureOfFemur rdfs:subClassOf sct:FractureOfBone. 
             sct:FractureOfFemur rdfs:subClassOf sct:BoneInjury. 
             sct:FractureOfFibula rdfs:subClassOf sct:FractureOfLowerLimb. 
             sct:FractureOfFibula rdfs:subClassOf sct:FractureOfBone. 
             sct:FractureOfFibula rdfs:subClassOf sct:BoneInjury. 
             sct: FractureOfTibia rdfs:subClassOf sct: FractureOfLowerLimb. 
             sct:FractureOfTibia rdfs:subClassOf sct:FractureOfBone. 
             sct:FractureOfTibia rdfs:subClassOf sct:BoneInjury. 
             sct:FractureOfLowerLimb rdfs:subClassOf sct:FractureOfBone. 
             sct:FractureOfLowerLimb rdfs:subClassOf sct:BoneInjury. 
             sct:FractureOfUpperLimb rdfs:subClassOf sct:FractureOfBone, 
             sct:FractureOfUpperLimb rdfs:subClassOf sct:BoneInjury. 
             sct:FractureOfBone rdfs:subClassOf sct:BoneInjury. 
             :patient :hasCondition :condition. 
             :condition a sct:FractureOfFemur. 
             :condition a sct:FractureOfLowerLimb. 
             :condition a sct:FractureOfBone. 
             :condition a sct:BoneInjury. 
           
         
       
     
         [0167]    This comparative method thus applies materialization on the rule sct. Transitive closures are calculated. Extended knowledge is generated by addition of these transitive closures. The extended knowledge sct is used at query time. Additional interpretation rules might be required at query time. The extended knowledge is reusable but its size is large due to the explicit statements that are created on the transitive closures.
A method for generating rules for rule-based reasoning includes the steps of starting from a set of generic reasoning rules generating a set of specific reasoning rules by substituting in at least one of the generic reasoning rules having more than one variable, at least one of the variables with (a) class(es) defined in an ontology.