v2.4.0
Minor Changes
-
#53
44da872Thanks @flyon! - ### New:.none()collection quantifierAdded
.none()onQueryShapeSetfor filtering where no elements match a condition:// "People who have NO friends that play chess" Person.select((p) => p.name).where((p) => p.friends.none((f) => f.hobby.equals("Chess")) );
Generates
FILTER(NOT EXISTS { ... })in SPARQL. Equivalent to.some(fn).not().Changed:
.equals()now returnsExpressionNode(wasEvaluation).equals()on query proxies now returnsExpressionNodeinstead ofEvaluation, enabling.not()chaining:// Now works — .equals() chains with .not() .where(p => p.name.equals('Alice').not()) .where(p => Expr.not(p.name.equals('Alice')))
Changed:
.some()/.every()now returnExistsCondition(wasSetEvaluation).some()and.every()on collections now returnExistsConditionwhich supports.not():.where(p => p.friends.some(f => f.name.equals('Alice')).not()) // same as .none()
Breaking:
Evaluationclass removedThe
Evaluationclass and related types (SetEvaluation,WhereMethods,WhereEvaluationPath) have been removed. Code that imported or depended on these types must migrate toExpressionNode/ExistsCondition. TheWhereClausetype now acceptsExpressionNode | ExistsCondition | callback.New exports
ExistsCondition— from@_linked/core/expressions/ExpressionNodeisExistsCondition()— type guard for ExistsCondition