fix issue #2320
This commit is contained in:
parent
ffc8f5b63a
commit
ab0c625f94
@ -151,21 +151,38 @@ public class QuickStatementsExporter implements WriterExporter {
|
|||||||
Value val = claim.getValue();
|
Value val = claim.getValue();
|
||||||
ValueVisitor<String> vv = new QSValuePrinter();
|
ValueVisitor<String> vv = new QSValuePrinter();
|
||||||
String targetValue = val.accept(vv);
|
String targetValue = val.accept(vv);
|
||||||
if (targetValue != null) {
|
if (targetValue != null) { // issue #2320
|
||||||
if (!add) {
|
if (!add) {
|
||||||
|
// According to: https://www.wikidata.org/wiki/Help:QuickStatements#Removing_statements,
|
||||||
|
// Removing statements won't be followed by qualifiers or references.
|
||||||
writer.write("- ");
|
writer.write("- ");
|
||||||
}
|
writer.write(qid + "\t" + pid + "\t" + targetValue);
|
||||||
writer.write(qid + "\t" + pid + "\t" + targetValue);
|
writer.write("\n");
|
||||||
for (SnakGroup q : claim.getQualifiers()) {
|
} else { // add statements
|
||||||
translateSnakGroup(q, false, writer);
|
if (statement.getReferences().isEmpty()) {
|
||||||
}
|
writer.write(qid + "\t" + pid + "\t" + targetValue);
|
||||||
for (Reference r : statement.getReferences()) {
|
for (SnakGroup q : claim.getQualifiers()) {
|
||||||
for (SnakGroup g : r.getSnakGroups()) {
|
translateSnakGroup(q, false, writer);
|
||||||
translateSnakGroup(g, true, writer);
|
}
|
||||||
|
writer.write("\n");
|
||||||
|
} else {
|
||||||
|
// According to: https://www.wikidata.org/wiki/Help:QuickStatements#Add_statement_with_sources
|
||||||
|
// Existing statements with an exact match (property and value) will not be added again;
|
||||||
|
// however additional references might be added to the statement.
|
||||||
|
|
||||||
|
// So, to handle multiple references, we can duplicate the statement just with different references.
|
||||||
|
for (Reference r : statement.getReferences()) {
|
||||||
|
writer.write(qid + "\t" + pid + "\t" + targetValue);
|
||||||
|
for (SnakGroup q : claim.getQualifiers()) {
|
||||||
|
translateSnakGroup(q, false, writer);
|
||||||
|
}
|
||||||
|
for (SnakGroup g : r.getSnakGroups()) {
|
||||||
|
translateSnakGroup(g, true, writer);
|
||||||
|
}
|
||||||
|
writer.write("\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break; // QS only supports one reference
|
|
||||||
}
|
}
|
||||||
writer.write("\n");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user