dig-team / amie

Mavenized AMIE+Typing

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Seeking for suggestions

nxznm opened this issue · comments

Dear authors,
Sorry to bother you. Recently, I seek to use this tool in my project to find rules. However, I meet a confusing situation.
Here is the simplified situation. I construct triples with codes below:

triples = []
for i in range(0, 200):
    e1 = "a{}".format(i*3)
    e2 = "b{}".format(i*3+1)
    e3 = "c{}".format(i*3+2)
    triples.append([e1, "equalTo", e2])
    triples.append([e2, "biggestCity", e3])
    triples.append([e3, "country", e2])

Then, I use java -jar amie-milestone-intKB.jar rules.txt --minpca 0.8 --htr equalTo --maxad 5 to obtain 2 rules:

?m  biggestCity  ?g  ?g  country  ?b  ?a  equalTo  ?m   => ?a  equalTo  ?b      1       1       1      200      200     200     -1
?b  biggestCity  ?h  ?h  country  ?n  ?a  equalTo  ?n   => ?a  equalTo  ?b      1       1       1      200      200     200     -1

However, the 2 mined rules seem meaningless. I find that the instantiation of ?m always equals to ?b in the groundings of rule-1 and the instantiation of ?n always equals to ?b in the groundings of rule-2.
If we add a constraint that different variables (e.g., ?m and ?b) should obtain different instantiations, maybe these meaningless rules would not be found anymore. I am not sure about this, do you have any ideas? Thanks!

Hi,

Indeed, AMIE does not mine injective rules by default (rules where a value is allowed to appear once in a rule mapping). To do so, you have to run AMIE using the injective mappings assistant. You can find information on how to enable them in AMIE here: #30 (comment)

Do not hesitate to ask for more help if required.

Cheers,
Luis

I got it! Thanks for your patience :)