Re: rule to link two individuals having a similar value for the same dataProperty. Using JaccardIndex
I couldn't quite understand the algorithm, what exactly you want the result of the rule to be. But I think what you want can be done pretty straight forwardly in SWRL. Have you looked here:
https://www.w3.org/Submission/SWRL/#8.2 Those are the math built-ins. So essentially what you want to do is first bind a bunch of variables in a rule to things like ?cA, ?cB, etc. and then use the math builtins to compare them. Actually, besides the math builtins you would need the string builtins as well: https://www.w3.org/Submission/SWRL/#8.4 With the string builtins you can do things like find substrings, find the length of strings, etc.
So I'll use an example that I know isn't as complex as what you are trying to do but I think should give you the info you need to implement that algorithm. Suppose you have a property called hasLongerName that is a relation between two Persons where the first Person has a longer name than the second. You could find that in SWRL like this:
Where hasName is a functional data property that returns a string, ns1 stands for name string 1 and ns1l stands for name string 1 length. Note, you don't really need the two Person(?p1) expressions at the beginning unless there are other things that have names but you only want to compare names of Persons. But I like to include those kinds of expressions because I think it makes the rules more intuitive for others who might maintain them. Also, I'm not sure if you need to take the string length, I think the swrlb:greaterThan and other comparison builtins probably work on strings as well as numbers but I just included it to give you an idea how you can work back and forth between the math builtins and string builtins. Hope that helps.