Skip to content

Commit 9a8c3c2

Browse files
committed
Added some binary sugar and symbolic complementation.
1 parent 1918ffe commit 9a8c3c2

File tree

1 file changed

+25
-0
lines changed
  • core/src/main/scala/uk/co/turingatemyhamster/owl2/examples

1 file changed

+25
-0
lines changed

core/src/main/scala/uk/co/turingatemyhamster/owl2/examples/UsingAst.scala

+25
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,12 @@ object UsingAst {
6161
def ## (anns: Annotation*): examples.##[I] = examples.##(_i, anns.to[List])
6262

6363
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
6470
}
6571
}
6672

@@ -148,6 +154,15 @@ object ⊓ {
148154
DataIntersectionOf(dataRanges = oi.i1 :: oi.i2 :: oi.is map iDR)
149155
}
150156

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+
151166
case class [I](i1: I, i2: I, is: List[I])
152167

153168
object {
@@ -199,6 +214,15 @@ object ≡ {
199214
EquivalentDataProperties(Nil, (equiv.i1 :: equiv.i2 :: equiv.is) map iP)
200215
}
201216

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+
202226
case class [I](i1: I, i2: I, is: List[I])
203227

204228
object {
@@ -503,4 +527,5 @@ class UsingAst {
503527
lit"Meggan")
504528

505529

530+
pl"a:ChildlessPerson" (pl"a:Person" pl"a:Parent"¬)
506531
}

0 commit comments

Comments
 (0)