コード例 #1
0
    def nest_predicate_fields(cls, values):
        """Move fields passed to the Fact model that really belong to the Predicate model."""
        type_str = values.pop("type", "")
        if type_str and type_str.lower() != "fact":
            raise ValidationError(f"type {type_str} was passed to Fact model")

        if isinstance(values.get("predicate"), str):
            values["predicate"] = Predicate(content=values["predicate"])
            if "truth" in values:
                values["predicate"].truth = values.pop("truth")

        for field_name in ["content", "truth", "sign", "expression"]:
            if field_name in values:
                values["predicate"] = values.get("predicate", {})
                values["predicate"][field_name] = values.pop(field_name)
        if isinstance(values.get("predicate"),
                      dict) and values["predicate"].get("content"):
            for sign in {
                    **QuantityRange.opposite_comparisons,
                    **QuantityRange.normalized_comparisons,
            }:
                if sign in values["predicate"]["content"]:
                    content, quantity_text = values["predicate"][
                        "content"].split(sign)
                    values["predicate"]["content"] = content.strip()
                    values["predicate"]["expression"] = quantity_text.strip()
                    values["predicate"]["sign"] = sign
                    break
        return values
コード例 #2
0
 def move_truth_to_predicate(cls, values):
     if isinstance(values["predicate"], str):
         values["predicate"] = Predicate(content=values["predicate"])
     if "truth" in values:
         values["predicate"].truth = values["truth"]
         del values["truth"]
     if isinstance(values.get("terms"), Mapping):
         values["terms"] = values[
             "predicate"].template.get_term_sequence_from_mapping(
                 values["terms"])
     if not values.get("terms"):
         values["terms"] = []
     elif isinstance(values["terms"], Term):
         values["terms"] = [values["terms"]]
     return values