4 Replies Latest reply on Mar 26, 2011 11:06 PM by alwu-Oracle

    user rule with filter clause - how to?

      I am trying to create user rulebase that merges "similar" nodes via owl:sameAs but I hit a problem which I cannot resolve by reading the documentation.
      The IF clause of my rule:
      (?cluster1 hasRoot ?root1) (?cluster1 hasRoot ?root2)
      The THEN clause:
      (?root1 owl:sameAs ?root2)

      I have to filter out two things:
      - creating link r1 owl:sameAs r2
      - and processing roots which are already linked with sameAs

      I tried to use the FILTER argument in the mdsys.SEMR_MERGE_CLUSTERS_RULEBASE table, but for whatever reason cannot make it work when I need negation - I cannot understand which syntax can be used there and which not to check for equality. If I use
      (?root1 != ?root2)'
      as filter clause in the FILTER column of the rule table I get

      Error report:
      ORA-29532: Java call terminated by uncaught Java exception: java.sql.SQLException: Missing IN or OUT parameter at index:: 1
      ORA-06512: at "MDSYS.SDO_SEM_INF_INTERNAL", line 12469
      ORA-06512: at "MDSYS.SDO_SEM_INFERENCE", line 108
      ORA-06512: at "MDSYS.RDF_APIS", line 72
      ORA-06512: at line 1
      29532. 00000 - "Java call terminated by uncaught Java exception: %s"
      *Cause:    A Java exception or error was signaled and could not be
      resolved by the Java code.
      *Action:   Modify Java code, if this behavior is not intended.

      when creating the entailment. I am completely lost how to do some sort of negation here...