Search in sources :

Example 61 with Statement

use of org.wikidata.wdtk.datamodel.interfaces.Statement in project OpenRefine by OpenRefine.

the class RestrictedValuesScrutinizerTest method testAllowedValueFailing.

@Test
public void testAllowedValueFailing() {
    Snak mainSnak = Datamodel.makeSomeValueSnak(allowedPropertyIdValue);
    Statement statement = new StatementImpl("P1622", mainSnak, qid);
    Snak qualifierSnak = Datamodel.makeValueSnak(itemParameterPID, allowedValue);
    List<SnakGroup> constraintQualifiers = makeSnakGroupList(qualifierSnak);
    List<Statement> constraintDefinitions = constraintParameterStatementList(allowedValueEntity, constraintQualifiers);
    ConstraintFetcher fetcher = mock(ConstraintFetcher.class);
    when(fetcher.getConstraintsByType(allowedPropertyIdValue, ALLOWED_VALUES_CONSTRAINT_QID)).thenReturn(constraintDefinitions);
    when(fetcher.getConstraintsByType(allowedPropertyIdValue, DISALLOWED_VALUES_CONSTRAINT_QID)).thenReturn(new ArrayList<>());
    setFetcher(fetcher);
    scrutinize(statement);
    assertWarningsRaised(RestrictedValuesScrutinizer.type);
}
Also used : Snak(org.wikidata.wdtk.datamodel.interfaces.Snak) ConstraintFetcher(org.openrefine.wikidata.qa.ConstraintFetcher) Statement(org.wikidata.wdtk.datamodel.interfaces.Statement) StatementImpl(org.wikidata.wdtk.datamodel.implementation.StatementImpl) SnakGroup(org.wikidata.wdtk.datamodel.interfaces.SnakGroup) Test(org.testng.annotations.Test)

Example 62 with Statement

use of org.wikidata.wdtk.datamodel.interfaces.Statement in project OpenRefine by OpenRefine.

the class WbStatementExprTest method testEvaluateWithoutReference.

@Test
public void testEvaluateWithoutReference() {
    setRow("not reconciled", "2010-07-23", "3.898,4.389");
    Statement statement = Datamodel.makeStatement(fullClaim, Collections.emptyList(), StatementRank.NORMAL, "");
    evaluatesTo(new StatementEdit(statement, StatementMerger.FORMER_DEFAULT_STRATEGY, StatementEditingMode.ADD_OR_MERGE), new Wrapper(statementExpr));
}
Also used : Statement(org.wikidata.wdtk.datamodel.interfaces.Statement) StatementEdit(org.openrefine.wikidata.updates.StatementEdit) JacksonSerializationTest(org.openrefine.wikidata.testing.JacksonSerializationTest) Test(org.testng.annotations.Test)

Example 63 with Statement

use of org.wikidata.wdtk.datamodel.interfaces.Statement in project OpenRefine by OpenRefine.

the class QuickStatementsExporterTest method testQualifier.

@Test
public void testQualifier() throws IOException {
    Statement baseStatement = TestingData.generateStatement(qid1, qid2);
    Statement otherStatement = TestingData.generateStatement(qid2, qid1);
    Snak qualifierSnak = otherStatement.getClaim().getMainSnak();
    SnakGroup group = Datamodel.makeSnakGroup(Collections.singletonList(qualifierSnak));
    Claim claim = Datamodel.makeClaim(qid1, baseStatement.getClaim().getMainSnak(), Collections.singletonList(group));
    Statement statement = Datamodel.makeStatement(claim, Collections.emptyList(), StatementRank.NORMAL, "");
    StatementEdit statementUpdate = new StatementEdit(statement, StatementMerger.FORMER_DEFAULT_STRATEGY, StatementEditingMode.ADD_OR_MERGE);
    TermedStatementEntityEdit update = new TermedStatementEntityEditBuilder(qid1).addStatement(statementUpdate).build();
    assertEquals("Q1377\tP38\tQ865528\tP38\tQ1377\n", export(update));
}
Also used : Snak(org.wikidata.wdtk.datamodel.interfaces.Snak) TermedStatementEntityEditBuilder(org.openrefine.wikidata.updates.TermedStatementEntityEditBuilder) Statement(org.wikidata.wdtk.datamodel.interfaces.Statement) SnakGroup(org.wikidata.wdtk.datamodel.interfaces.SnakGroup) TermedStatementEntityEdit(org.openrefine.wikidata.updates.TermedStatementEntityEdit) Claim(org.wikidata.wdtk.datamodel.interfaces.Claim) StatementEdit(org.openrefine.wikidata.updates.StatementEdit) Test(org.testng.annotations.Test) WikidataRefineTest(org.openrefine.wikidata.testing.WikidataRefineTest)

Example 64 with Statement

use of org.wikidata.wdtk.datamodel.interfaces.Statement in project OpenRefine by OpenRefine.

the class QuickStatementsExporterTest method testReferences.

/**
 * issue #2320
 *
 * A statement with different references should be duplicated, but each with a different reference.
 */
@Test
public void testReferences() throws IOException {
    Statement baseStatement = TestingData.generateStatement(qid1, qid2);
    Statement otherStatement = TestingData.generateStatement(qid2, qid1);
    Snak snak1 = baseStatement.getClaim().getMainSnak();
    Snak snak2 = otherStatement.getClaim().getMainSnak();
    SnakGroup group1 = Datamodel.makeSnakGroup(Collections.singletonList(snak1));
    SnakGroup group2 = Datamodel.makeSnakGroup(Collections.singletonList(snak2));
    Claim claim = Datamodel.makeClaim(qid1, baseStatement.getClaim().getMainSnak(), Collections.singletonList(group2));
    Reference reference1 = Datamodel.makeReference(Collections.singletonList(group1));
    Reference reference2 = Datamodel.makeReference(Collections.singletonList(group2));
    Statement statement = Datamodel.makeStatement(claim, Arrays.asList(reference1, reference2), StatementRank.NORMAL, "");
    StatementEdit statementUpdate = new StatementEdit(statement, StatementMerger.FORMER_DEFAULT_STRATEGY, StatementEditingMode.ADD_OR_MERGE);
    TermedStatementEntityEdit update = new TermedStatementEntityEditBuilder(qid1).addStatement(statementUpdate).build();
    assertEquals("Q1377\tP38\tQ865528\tP38\tQ1377\tS38\tQ865528\n" + "Q1377\tP38\tQ865528\tP38\tQ1377\tS38\tQ1377\n", export(update));
}
Also used : Snak(org.wikidata.wdtk.datamodel.interfaces.Snak) TermedStatementEntityEditBuilder(org.openrefine.wikidata.updates.TermedStatementEntityEditBuilder) Statement(org.wikidata.wdtk.datamodel.interfaces.Statement) Reference(org.wikidata.wdtk.datamodel.interfaces.Reference) SnakGroup(org.wikidata.wdtk.datamodel.interfaces.SnakGroup) TermedStatementEntityEdit(org.openrefine.wikidata.updates.TermedStatementEntityEdit) Claim(org.wikidata.wdtk.datamodel.interfaces.Claim) StatementEdit(org.openrefine.wikidata.updates.StatementEdit) Test(org.testng.annotations.Test) WikidataRefineTest(org.openrefine.wikidata.testing.WikidataRefineTest)

Example 65 with Statement

use of org.wikidata.wdtk.datamodel.interfaces.Statement in project OpenRefine by OpenRefine.

the class QualifiersStatementMerger method merge.

@Override
public Statement merge(Statement existing, Statement added) {
    List<SnakGroup> finalQualifiers = new ArrayList<>(existing.getQualifiers());
    for (SnakGroup addedSnakGroup : added.getQualifiers()) {
        PropertyIdValue pid = addedSnakGroup.getProperty();
        // otherwise:
        if (!pids.contains(pid.getId())) {
            OptionalInt index = IntStream.range(0, finalQualifiers.size()).filter(i -> finalQualifiers.get(i).getProperty().getId().equals(pid.getId())).findFirst();
            if (index.isEmpty()) {
                finalQualifiers.add(addedSnakGroup);
            } else {
                finalQualifiers.set(index.getAsInt(), mergeSnakGroups(finalQualifiers.get(index.getAsInt()), addedSnakGroup));
            }
        }
    }
    List<Reference> allReferences = new ArrayList<>(existing.getReferences());
    Set<Reference> seenReferences = new HashSet<>(existing.getReferences());
    for (Reference reference : added.getReferences()) {
        if (!seenReferences.contains(reference)) {
            seenReferences.add(reference);
            allReferences.add(reference);
        }
    }
    Statement merged = Datamodel.makeStatement(Datamodel.makeClaim(existing.getSubject(), existing.getMainSnak(), finalQualifiers), allReferences, existing.getRank(), existing.getStatementId());
    return merged;
}
Also used : PropertyIdValue(org.wikidata.wdtk.datamodel.interfaces.PropertyIdValue) IntStream(java.util.stream.IntStream) Reference(org.wikidata.wdtk.datamodel.interfaces.Reference) JsonProperty(com.fasterxml.jackson.annotation.JsonProperty) PropertyIdValue(org.wikidata.wdtk.datamodel.interfaces.PropertyIdValue) Set(java.util.Set) SnakGroup(org.wikidata.wdtk.datamodel.interfaces.SnakGroup) Statement(org.wikidata.wdtk.datamodel.interfaces.Statement) OptionalInt(java.util.OptionalInt) Collectors(java.util.stream.Collectors) SomeValueSnak(org.wikidata.wdtk.datamodel.interfaces.SomeValueSnak) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Objects(java.util.Objects) List(java.util.List) Snak(org.wikidata.wdtk.datamodel.interfaces.Snak) Datamodel(org.wikidata.wdtk.datamodel.helpers.Datamodel) JsonCreator(com.fasterxml.jackson.annotation.JsonCreator) Optional(java.util.Optional) ValueSnak(org.wikidata.wdtk.datamodel.interfaces.ValueSnak) NoValueSnak(org.wikidata.wdtk.datamodel.interfaces.NoValueSnak) Collections(java.util.Collections) Value(org.wikidata.wdtk.datamodel.interfaces.Value) Reference(org.wikidata.wdtk.datamodel.interfaces.Reference) Statement(org.wikidata.wdtk.datamodel.interfaces.Statement) SnakGroup(org.wikidata.wdtk.datamodel.interfaces.SnakGroup) ArrayList(java.util.ArrayList) OptionalInt(java.util.OptionalInt) HashSet(java.util.HashSet)

Aggregations

Statement (org.wikidata.wdtk.datamodel.interfaces.Statement)82 Test (org.testng.annotations.Test)61 Snak (org.wikidata.wdtk.datamodel.interfaces.Snak)59 ConstraintFetcher (org.openrefine.wikidata.qa.ConstraintFetcher)56 TermedStatementEntityEdit (org.openrefine.wikidata.updates.TermedStatementEntityEdit)56 TermedStatementEntityEditBuilder (org.openrefine.wikidata.updates.TermedStatementEntityEditBuilder)56 ItemIdValue (org.wikidata.wdtk.datamodel.interfaces.ItemIdValue)53 StatementImpl (org.wikidata.wdtk.datamodel.implementation.StatementImpl)48 SnakGroup (org.wikidata.wdtk.datamodel.interfaces.SnakGroup)42 ValueSnak (org.wikidata.wdtk.datamodel.interfaces.ValueSnak)25 PropertyIdValue (org.wikidata.wdtk.datamodel.interfaces.PropertyIdValue)17 QAWarning (org.openrefine.wikidata.qa.QAWarning)12 Claim (org.wikidata.wdtk.datamodel.interfaces.Claim)8 HashSet (java.util.HashSet)7 Value (org.wikidata.wdtk.datamodel.interfaces.Value)7 ArrayList (java.util.ArrayList)6 NoValueSnak (org.wikidata.wdtk.datamodel.interfaces.NoValueSnak)6 HashMap (java.util.HashMap)5 Set (java.util.Set)5 StatementEdit (org.openrefine.wikidata.updates.StatementEdit)5