@@ -61,6 +61,12 @@ object UsingAst {
61
61
def ## (anns : Annotation * ): examples.## [I ] = examples.## (_i, anns.to[List ])
62
62
63
63
def =⨃ [J ](j1 : J , j2 : J , js : J * ): ⨃ [J , I ] = ⨃ (_i, j1, j2, js.to[List ])
64
+
65
+ def ≡ [J ](j : J ): ≡≡ [I ,J ] = ≡≡ (_i, j)
66
+
67
+ def ⊓ [J ](j : J ): ⊓⊓ [I , J ] = ⊓⊓ (_i, j)
68
+
69
+ def ¬ = _i.complement
64
70
}
65
71
}
66
72
@@ -148,6 +154,15 @@ object ⊓ {
148
154
DataIntersectionOf (dataRanges = oi.i1 :: oi.i2 :: oi.is map iDR)
149
155
}
150
156
157
+ case class ⊓⊓ [I , J ](i : I , j : J )
158
+
159
+ object ⊓⊓ {
160
+ implicit def objectIntersection [I , J ](oi : ⊓⊓ [I , J ])(implicit
161
+ iCE : I => ClassExpression ,
162
+ jCE : J => ClassExpression ): ObjectIntersectionOf =
163
+ ObjectIntersectionOf (iCE(oi.i):: jCE(oi.j):: Nil )
164
+ }
165
+
151
166
case class ⊔ [I ](i1 : I , i2 : I , is : List [I ])
152
167
153
168
object ⊔ {
@@ -199,6 +214,15 @@ object ≡ {
199
214
EquivalentDataProperties (Nil , (equiv.i1 :: equiv.i2 :: equiv.is) map iP)
200
215
}
201
216
217
+ case class ≡≡ [I , J ](i : I , j : J )
218
+
219
+ object ≡≡ {
220
+ implicit def toEquivalentClasses [I , J ](equiv : ≡≡ [I , J ])(implicit
221
+ iCE : I => ClassExpression ,
222
+ jCE : J => ClassExpression ): EquivalentClasses =
223
+ EquivalentClasses (Nil , iCE(equiv.i):: jCE(equiv.j):: Nil )
224
+ }
225
+
202
226
case class ≢ [I ](i1 : I , i2 : I , is : List [I ])
203
227
204
228
object ≢ {
@@ -503,4 +527,5 @@ class UsingAst {
503
527
lit " Meggan " )
504
528
505
529
530
+ pl " a:ChildlessPerson " ≡ (pl " a:Person " ⊓ pl " a:Parent " ¬ )
506
531
}
0 commit comments