user rule with filter clause - how to?
629738Mar 25 2011 — edited Mar 26 2011hi,
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...
Cheers,
Georgi