Search in sources :

Example 1 with SnakGroup

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

the class WbStatementExpr method evaluate.

public StatementEdit evaluate(ExpressionContext ctxt, EntityIdValue subject, PropertyIdValue propertyId) throws SkipSchemaExpressionException {
    Snak mainSnak = null;
    if (mainSnakValueExpr != null) {
        Value mainSnakValue = mainSnakValueExpr.evaluate(ctxt);
        mainSnak = Datamodel.makeValueSnak(propertyId, mainSnakValue);
    } else {
        // hack to make sure we have a non-null snak
        mainSnak = Datamodel.makeNoValueSnak(propertyId);
    }
    // evaluate qualifiers
    List<Snak> qualifiers = new ArrayList<Snak>(getQualifiers().size());
    for (WbSnakExpr qExpr : getQualifiers()) {
        try {
            qualifiers.add(qExpr.evaluate(ctxt));
        } catch (SkipSchemaExpressionException e) {
            QAWarning warning = new QAWarning("ignored-qualifiers", null, QAWarning.Severity.INFO, 1);
            warning.setProperty("example_entity", subject);
            warning.setProperty("example_property_entity", mainSnak.getPropertyId());
            ctxt.addWarning(warning);
        }
    }
    List<SnakGroup> groupedQualifiers = groupSnaks(qualifiers);
    Claim claim = Datamodel.makeClaim(subject, mainSnak, groupedQualifiers);
    // evaluate references
    List<Reference> references = new ArrayList<Reference>();
    for (WbReferenceExpr rExpr : getReferences()) {
        try {
            references.add(rExpr.evaluate(ctxt));
        } catch (SkipSchemaExpressionException e) {
            QAWarning warning = new QAWarning("ignored-references", null, QAWarning.Severity.INFO, 1);
            warning.setProperty("example_entity", subject);
            warning.setProperty("example_property_entity", mainSnak.getPropertyId());
            ctxt.addWarning(warning);
        }
    }
    StatementRank rank = StatementRank.NORMAL;
    return new StatementEdit(Datamodel.makeStatement(claim, references, rank, ""), merger, mode);
}
Also used : Snak(org.wikidata.wdtk.datamodel.interfaces.Snak) SkipSchemaExpressionException(org.openrefine.wikidata.schema.exceptions.SkipSchemaExpressionException) Reference(org.wikidata.wdtk.datamodel.interfaces.Reference) StatementRank(org.wikidata.wdtk.datamodel.interfaces.StatementRank) ArrayList(java.util.ArrayList) StatementEdit(org.openrefine.wikidata.updates.StatementEdit) EntityIdValue(org.wikidata.wdtk.datamodel.interfaces.EntityIdValue) Value(org.wikidata.wdtk.datamodel.interfaces.Value) PropertyIdValue(org.wikidata.wdtk.datamodel.interfaces.PropertyIdValue) SnakGroup(org.wikidata.wdtk.datamodel.interfaces.SnakGroup) QAWarning(org.openrefine.wikidata.qa.QAWarning) Claim(org.wikidata.wdtk.datamodel.interfaces.Claim)

Example 2 with SnakGroup

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

the class ConstraintTest method setUp.

@BeforeMethod
public void setUp() {
    Snak qualifierSnak1 = Datamodel.makeValueSnak(constraintException, exceptionValue);
    List<Snak> qualifierSnakList1 = Collections.singletonList(qualifierSnak1);
    Snak qualifierSnak2 = Datamodel.makeValueSnak(constraintStatus, statusValue);
    List<Snak> qualifierSnakList2 = Collections.singletonList(qualifierSnak2);
    SnakGroup qualifier1 = Datamodel.makeSnakGroup(qualifierSnakList1);
    SnakGroup qualifier2 = Datamodel.makeSnakGroup(qualifierSnakList2);
    List<SnakGroup> snakGroupList = Arrays.asList(qualifier1, qualifier2);
    PropertyIdValue propertyIdValue = Datamodel.makeWikidataPropertyIdValue("P2302");
    Snak mainSnak = Datamodel.makeValueSnak(propertyIdValue, itemIdValue);
    Claim claim = Datamodel.makeClaim(itemIdValue, mainSnak, snakGroupList);
    Reference reference = Datamodel.makeReference(snakGroupList);
    List<Reference> referenceList = Collections.singletonList(reference);
    statement = Datamodel.makeStatement(claim, referenceList, StatementRank.NORMAL, "P2302$77BD7FE4-C051-4776-855C-543F0CE697D0");
    constraint = new Constraint(statement);
}
Also used : PropertyIdValue(org.wikidata.wdtk.datamodel.interfaces.PropertyIdValue) Snak(org.wikidata.wdtk.datamodel.interfaces.Snak) Reference(org.wikidata.wdtk.datamodel.interfaces.Reference) SnakGroup(org.wikidata.wdtk.datamodel.interfaces.SnakGroup) Claim(org.wikidata.wdtk.datamodel.interfaces.Claim) BeforeMethod(org.testng.annotations.BeforeMethod)

Example 3 with SnakGroup

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

the class DifferenceWithinScrutinizerTest method testTrigger.

@Test
public void testTrigger() {
    ItemIdValue idA = TestingData.existingId;
    TimeValue lowerYear = new TimeValueImpl(1800, (byte) 10, (byte) 15, (byte) 0, (byte) 0, (byte) 0, (byte) 11, 0, 0, 0, TimeValue.CM_GREGORIAN_PRO);
    TimeValue upperYear = new TimeValueImpl(2020, (byte) 10, (byte) 15, (byte) 0, (byte) 0, (byte) 0, (byte) 11, 0, 0, 0, TimeValue.CM_GREGORIAN_PRO);
    ValueSnak value1 = Datamodel.makeValueSnak(lowerBoundPid, lowerYear);
    ValueSnak value2 = Datamodel.makeValueSnak(upperBoundPid, upperYear);
    Statement statement1 = new StatementImpl("P569", value1, idA);
    Statement statement2 = new StatementImpl("P570", value2, idA);
    TermedStatementEntityEdit updateA = new TermedStatementEntityEditBuilder(idA).addStatement(add(statement1)).addStatement(add(statement2)).build();
    Snak propertyQualifier = Datamodel.makeValueSnak(propertyParameterPID, lowerBoundPid);
    Snak minValueQualifier = Datamodel.makeValueSnak(minimumValuePID, minValue);
    Snak maxValueQualifier = Datamodel.makeValueSnak(maximumValuePID, maxValue);
    List<SnakGroup> constraintQualifiers = makeSnakGroupList(propertyQualifier, minValueQualifier, maxValueQualifier);
    List<Statement> constraintDefinitions = constraintParameterStatementList(entityIdValue, constraintQualifiers);
    ConstraintFetcher fetcher = mock(ConstraintFetcher.class);
    when(fetcher.getConstraintsByType(upperBoundPid, DIFFERENCE_WITHIN_RANGE_CONSTRAINT_QID)).thenReturn(constraintDefinitions);
    setFetcher(fetcher);
    scrutinize(updateA);
    assertWarningsRaised(DifferenceWithinRangeScrutinizer.type);
}
Also used : TermedStatementEntityEditBuilder(org.openrefine.wikidata.updates.TermedStatementEntityEditBuilder) Snak(org.wikidata.wdtk.datamodel.interfaces.Snak) ValueSnak(org.wikidata.wdtk.datamodel.interfaces.ValueSnak) ConstraintFetcher(org.openrefine.wikidata.qa.ConstraintFetcher) Statement(org.wikidata.wdtk.datamodel.interfaces.Statement) ItemIdValue(org.wikidata.wdtk.datamodel.interfaces.ItemIdValue) StatementImpl(org.wikidata.wdtk.datamodel.implementation.StatementImpl) TermedStatementEntityEdit(org.openrefine.wikidata.updates.TermedStatementEntityEdit) SnakGroup(org.wikidata.wdtk.datamodel.interfaces.SnakGroup) TimeValueImpl(org.wikidata.wdtk.datamodel.implementation.TimeValueImpl) ValueSnak(org.wikidata.wdtk.datamodel.interfaces.ValueSnak) TimeValue(org.wikidata.wdtk.datamodel.interfaces.TimeValue) Test(org.testng.annotations.Test)

Example 4 with SnakGroup

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

the class DifferenceWithinScrutinizerTest method testNoIssue.

@Test
public void testNoIssue() {
    ItemIdValue idA = TestingData.existingId;
    TimeValue lowerYear = new TimeValueImpl(2000, (byte) 10, (byte) 15, (byte) 0, (byte) 0, (byte) 0, (byte) 11, 0, 0, 0, TimeValue.CM_GREGORIAN_PRO);
    TimeValue upperYear = new TimeValueImpl(2020, (byte) 10, (byte) 15, (byte) 0, (byte) 0, (byte) 0, (byte) 11, 0, 0, 0, TimeValue.CM_GREGORIAN_PRO);
    ValueSnak value1 = Datamodel.makeValueSnak(lowerBoundPid, lowerYear);
    ValueSnak value2 = Datamodel.makeValueSnak(upperBoundPid, upperYear);
    Statement statement1 = new StatementImpl("P569", value1, idA);
    Statement statement2 = new StatementImpl("P570", value2, idA);
    TermedStatementEntityEdit updateA = new TermedStatementEntityEditBuilder(idA).addStatement(add(statement1)).addStatement(add(statement2)).build();
    Snak propertyQualifier = Datamodel.makeValueSnak(propertyParameterPID, lowerBoundPid);
    Snak minValueQualifier = Datamodel.makeValueSnak(minimumValuePID, minValue);
    Snak maxValueQualifier = Datamodel.makeValueSnak(maximumValuePID, maxValue);
    List<SnakGroup> constraintQualifiers = makeSnakGroupList(propertyQualifier, minValueQualifier, maxValueQualifier);
    List<Statement> constraintDefinitions = constraintParameterStatementList(entityIdValue, constraintQualifiers);
    ConstraintFetcher fetcher = mock(ConstraintFetcher.class);
    when(fetcher.getConstraintsByType(upperBoundPid, DIFFERENCE_WITHIN_RANGE_CONSTRAINT_QID)).thenReturn(constraintDefinitions);
    setFetcher(fetcher);
    scrutinize(updateA);
    assertNoWarningRaised();
}
Also used : TermedStatementEntityEditBuilder(org.openrefine.wikidata.updates.TermedStatementEntityEditBuilder) Snak(org.wikidata.wdtk.datamodel.interfaces.Snak) ValueSnak(org.wikidata.wdtk.datamodel.interfaces.ValueSnak) ConstraintFetcher(org.openrefine.wikidata.qa.ConstraintFetcher) Statement(org.wikidata.wdtk.datamodel.interfaces.Statement) ItemIdValue(org.wikidata.wdtk.datamodel.interfaces.ItemIdValue) StatementImpl(org.wikidata.wdtk.datamodel.implementation.StatementImpl) TermedStatementEntityEdit(org.openrefine.wikidata.updates.TermedStatementEntityEdit) SnakGroup(org.wikidata.wdtk.datamodel.interfaces.SnakGroup) TimeValueImpl(org.wikidata.wdtk.datamodel.implementation.TimeValueImpl) ValueSnak(org.wikidata.wdtk.datamodel.interfaces.ValueSnak) TimeValue(org.wikidata.wdtk.datamodel.interfaces.TimeValue) Test(org.testng.annotations.Test)

Example 5 with SnakGroup

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

the class FormatScrutinizerTest method generateFormatConstraint.

protected List<Statement> generateFormatConstraint(String regex) {
    Snak qualifierSnak = Datamodel.makeValueSnak(regularExpressionParameter, Datamodel.makeStringValue(regex));
    List<Snak> qualifierSnakList = Collections.singletonList(qualifierSnak);
    SnakGroup qualifierSnakGroup = Datamodel.makeSnakGroup(qualifierSnakList);
    List<SnakGroup> constraintQualifiers = Collections.singletonList(qualifierSnakGroup);
    return constraintParameterStatementList(entityIdValue, constraintQualifiers);
}
Also used : Snak(org.wikidata.wdtk.datamodel.interfaces.Snak) ValueSnak(org.wikidata.wdtk.datamodel.interfaces.ValueSnak) SnakGroup(org.wikidata.wdtk.datamodel.interfaces.SnakGroup)

Aggregations

SnakGroup (org.wikidata.wdtk.datamodel.interfaces.SnakGroup)49 Snak (org.wikidata.wdtk.datamodel.interfaces.Snak)48 Statement (org.wikidata.wdtk.datamodel.interfaces.Statement)41 Test (org.testng.annotations.Test)38 ConstraintFetcher (org.openrefine.wikidata.qa.ConstraintFetcher)36 TermedStatementEntityEdit (org.openrefine.wikidata.updates.TermedStatementEntityEdit)34 TermedStatementEntityEditBuilder (org.openrefine.wikidata.updates.TermedStatementEntityEditBuilder)34 ItemIdValue (org.wikidata.wdtk.datamodel.interfaces.ItemIdValue)32 StatementImpl (org.wikidata.wdtk.datamodel.implementation.StatementImpl)28 ValueSnak (org.wikidata.wdtk.datamodel.interfaces.ValueSnak)17 ArrayList (java.util.ArrayList)10 PropertyIdValue (org.wikidata.wdtk.datamodel.interfaces.PropertyIdValue)8 Claim (org.wikidata.wdtk.datamodel.interfaces.Claim)7 Reference (org.wikidata.wdtk.datamodel.interfaces.Reference)7 NoValueSnak (org.wikidata.wdtk.datamodel.interfaces.NoValueSnak)6 List (java.util.List)5 HashMap (java.util.HashMap)4 QAWarning (org.openrefine.wikidata.qa.QAWarning)4 StatementEdit (org.openrefine.wikidata.updates.StatementEdit)4 Value (org.wikidata.wdtk.datamodel.interfaces.Value)4