Skip to content

Commit cfe6b8c

Browse files
committed
simplify by removing bnode, lit, and typetests
1 parent 5385597 commit cfe6b8c

9 files changed

+6
-163
lines changed

java/testorg/BNode.java

Lines changed: 0 additions & 3 deletions
This file was deleted.

java/testorg/Lit.java

Lines changed: 0 additions & 3 deletions
This file was deleted.

java/testorg/factory/MkNodes.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,5 @@
33
import testorg.*;
44

55
public interface MkNodes {
6-
public BNode mkBNode();
76
public Uri mkUri(String u);
8-
public Lit mkLit(String u);
97
}

java/testorg/impl/SimpleNodeFactory.java

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import testorg.factory.*;
55

66
public class SimpleNodeFactory implements MkNodes {
7-
int counter = 0;
87
private static final SimpleNodeFactory shared = new SimpleNodeFactory();
98

109
protected SimpleNodeFactory() {
@@ -14,15 +13,6 @@ public static SimpleNodeFactory getInstance() {
1413
return shared;
1514
}
1615

17-
public BNode mkBNode() {
18-
String name = "bn_" + counter;
19-
counter = counter + 1;
20-
return new BNode() {
21-
public String value() {
22-
return name;
23-
}
24-
};
25-
}
2616

2717
public Uri mkUri(String u) {
2818
return new Uri() {
@@ -32,11 +22,4 @@ public String value() {
3222
};
3323
};
3424

35-
public Lit mkLit(String u) {
36-
return new Lit() {
37-
public String value() {
38-
return u;
39-
}
40-
};
41-
}
4225
}

scala/RDF.scala

Lines changed: 2 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ trait RDF:
1616
type rURI <: rNode
1717
type Node <: rNode
1818
type URI <: Node & rURI
19-
type BNode <: Node
20-
type Literal <: Node
2119

2220
given rops: ROps[R]
2321

@@ -36,69 +34,30 @@ object RDF:
3634
type URI[R <: RDF] <: Node[R] = R match
3735
case GetURI[u] => u & Node[R] & rURI[R]
3836

39-
type BNode[R <: RDF] <: Node[R] = R match
40-
case GetBNode[bn] => bn & Node[R]
41-
42-
type Literal[R <: RDF] <: Node[R] = R match
43-
case GetLiteral[l] => l & Node[R]
44-
4537
private type GetRelNode[N <: Matchable] = RDF { type rNode = N }
4638
private type GetNode[N] = RDF { type Node = N }
4739
private type GetRelURI[U] = RDF { type rURI = U }
4840
private type GetURI[U] = RDF { type URI = U }
49-
private type GetBNode[N] = RDF { type BNode = N }
50-
private type GetLiteral[L] = RDF { type Literal = L }
5141

5242
end RDF
5343

5444
trait ROps[R <: RDF]:
5545
def mkUri(str: String): Try[RDF.URI[R]]
56-
def mkBNode(): RDF.BNode[R]
57-
def mkLit(str: String): RDF.Literal[R]
58-
59-
given node2Uri: TypeTest[RDF.Node[R], RDF.URI[R]]
60-
given node2BN: TypeTest[RDF.Node[R], RDF.BNode[R]]
61-
given node2Lit: TypeTest[RDF.Node[R], RDF.Literal[R]]
6246

6347
// def mkRelURI(str: String): Try[RDF.rURI[R]]
6448
protected def nodeVal(node: RDF.Node[R]): String
6549
protected def auth(uri: RDF.URI[R]): Try[String]
6650

6751
extension (uri: URI[R])
6852
def authority: Try[String] = auth(uri)
69-
70-
extension (nd: RDF.Node[R])
71-
def value: String = nodeVal(nd)
72-
def fold[T](
73-
uF: RDF.URI[R] => T,
74-
bF: RDF.BNode[R] => T,
75-
lF: RDF.Literal[R] => T
76-
): T =
77-
nd match
78-
case u: RDF.URI[R] => uF(u)
79-
case b: RDF.BNode[R] => bF(b)
80-
case l: RDF.Literal[R] => lF(l)
81-
53+
8254
end ROps
8355

84-
object SomeObject:
85-
def calculate[R <: RDF](node: RDF.Node[R])(using ops: ROps[R]): String =
86-
node.value
8756

8857
class Test[R <: RDF](using rops: ROps[R]):
8958
import rops.given
9059
val uri: Try[RDF.URI[R]] = rops.mkUri("https://bblfish.net/#i")
91-
val x: Try[String] = uri.map((u: URI[R]) => SomeObject.calculate(u))
92-
val nodeU: RDF.Node[R] = uri.get
93-
val folded = nodeU.fold(
94-
u => "<" + u.value + ">",
95-
b => "_:" + b.value,
96-
l => l
97-
)
98-
val matched = nodeU match
99-
case bn: RDF.BNode[R] => "isBNode " + bn
100-
case l: RDF.Literal[R] => "literal " + l
101-
case u: RDF.URI[R] => "isURI " + u + "with authority " + u.authority
60+
val x: String = "uri authority="+uri.flatMap(u => u.authority)
10261

10362
end Test
10463

scala/RDF_Class.scala

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -39,42 +39,17 @@ object ClassRDF extends generic.RDF:
3939
override opaque type rURI <: rNode = cz.Uri
4040
override opaque type Node <: rNode = cz.Node
4141
override opaque type URI <: Node & rURI = cz.Uri
42-
override opaque type BNode <: Node = cz.BNode
43-
override opaque type Literal <: Node = cz.Lit
4442

4543
given rops: generic.ROps[R] with
4644
override def mkUri(str: String): Try[RDF.URI[R]] = Try(
4745
cz.getFactory.mkUri(str)
4846
)
49-
override def mkBNode(): RDF.BNode[R] = cz.getFactory.mkBNode()
50-
override def mkLit(str: String): RDF.Literal[R] = cz.getFactory.mkLit(str)
5147
override protected def nodeVal(node: RDF.Node[R]): String = node.value
5248
override protected def auth(uri: RDF.URI[R]): Try[String] =
5349
Try(java.net.URI.create(nodeVal(uri)).getAuthority())
54-
55-
given node2Uri: TypeTest[RDF.Node[R], RDF.URI[R]] with
56-
def unapply(x: RDF.Node[R]): Option[x.type & RDF.URI[R]] =
57-
x match
58-
case u: (x.type & cz.Uri) => Some(u)
59-
case _ => None
60-
61-
given node2BN: TypeTest[RDF.Node[R], RDF.BNode[R]] with
62-
def unapply(x: RDF.Node[R]): Option[x.type & RDF.BNode[R]] =
63-
x match
64-
case u: (x.type & cz.BNode) => Some(u)
65-
case _ => None
66-
67-
given node2Lit: TypeTest[RDF.Node[R], RDF.Literal[R]] with
68-
def unapply(x: RDF.Node[R]): Option[x.type & RDF.Literal[R]] =
69-
x match
70-
case u: (x.type & cz.Lit) => Some(u)
71-
case _ => None
72-
7350
end ClassRDF
7451

7552
@main def run =
7653
import generic.Test
7754
val test = Test[ClassRDF.type]
7855
println(test.x)
79-
println("folded=" + test.folded)
80-
println("matched should be uri" + test.matched)

scala/RDF_Java_Interface.scala

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -12,42 +12,19 @@ object JavaInterfaceRDF extends RDF:
1212
override opaque type rURI <: rNode = testorg.Uri
1313
override opaque type Node <: rNode = testorg.TstNode
1414
override opaque type URI <: Node & rURI = testorg.Uri
15-
override opaque type BNode <: Node = testorg.BNode
16-
override opaque type Literal <: Node = testorg.Lit
1715

1816
given rops: ROps[R] with
1917
override def mkUri(str: String): Try[RDF.URI[R]] = Try(
2018
factory.mkUri(str)
2119
)
22-
override def mkBNode(): RDF.BNode[R] = factory.mkBNode()
23-
override def mkLit(str: String): RDF.Literal[R] = factory.mkLit(str)
2420
override protected def nodeVal(node: RDF.Node[R]): String = node.value()
2521
override protected def auth(uri: RDF.URI[R]): Try[String] =
2622
Try(java.net.URI.create(nodeVal(uri)).getAuthority())
2723

28-
given node2Uri: TypeTest[RDF.Node[R], RDF.URI[R]] with
29-
def unapply(x: RDF.Node[R]): Option[x.type & RDF.URI[R]] =
30-
x match
31-
case u: (x.type & testorg.Uri) => Some(u)
32-
case _ => None
33-
34-
given node2BN: TypeTest[RDF.Node[R], RDF.BNode[R]] with
35-
def unapply(x: RDF.Node[R]): Option[x.type & RDF.BNode[R]] =
36-
x match
37-
case u: (x.type & testorg.BNode) => Some(u)
38-
case _ => None
39-
40-
given node2Lit: TypeTest[RDF.Node[R], RDF.Literal[R]] with
41-
def unapply(x: RDF.Node[R]): Option[x.type & RDF.Literal[R]] =
42-
x match
43-
case u: (x.type & testorg.Lit) => Some(u)
44-
case _ => None
45-
24+
4625
end JavaInterfaceRDF
4726

4827
@main def run =
4928
val test = Test[JavaInterfaceRDF.type]
5029
println(test.x)
51-
println("folded=" + test.folded)
52-
println("matched should be uri" + test.matched)
5330

scala/RDF_Traits.scala

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,12 @@ package rdfscala
22

33
trait TstNode:
44
def value(): String
5-
6-
trait Lit extends TstNode
7-
trait BNode extends TstNode
85
trait URI extends TstNode
96

107
trait ScalaMkNodes:
11-
def mkBNode(): BNode
128
def mkUri(uriStr: String): URI
13-
def mkLit(lit: String): Lit
14-
end ScalaMkNodes
159

1610
object SimpleScalaNodeFactory extends ScalaMkNodes:
17-
var counter = 0
18-
def mkBNode(): BNode = new BNode{
19-
val c = {
20-
val oldc = counter
21-
counter = counter+1
22-
oldc
23-
}
24-
def value(): String = "_:"+c
25-
}
26-
def mkLit(lit: String): Lit = new Lit{
27-
def value(): String = lit
28-
}
29-
def mkUri(uriStr: String): URI = new URI{
11+
def mkUri(uriStr: String): URI = new URI {
3012
def value(): String = uriStr
31-
}
32-
end SimpleScalaNodeFactory
13+
}

scala/RDF_UsingScalaTrait.scala

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -12,41 +12,17 @@ object TraitBasedRDF extends RDF:
1212
override opaque type rURI <: rNode = rdfscala.URI
1313
override opaque type Node <: rNode = rdfscala.TstNode
1414
override opaque type URI <: Node & rURI = rdfscala.URI
15-
override opaque type BNode <: Node = rdfscala.BNode
16-
override opaque type Literal <: Node = rdfscala.Lit
1715

1816
given rops: ROps[R] with
1917
override def mkUri(str: String): Try[RDF.URI[R]] = Try(
2018
factory.mkUri(str)
2119
)
22-
override def mkBNode(): RDF.BNode[R] = factory.mkBNode()
23-
override def mkLit(str: String): RDF.Literal[R] = factory.mkLit(str)
2420
override protected def nodeVal(node: RDF.Node[R]): String = node.value()
2521
override protected def auth(uri: RDF.URI[R]): Try[String] =
2622
Try(java.net.URI.create(nodeVal(uri)).getAuthority())
27-
28-
given node2Uri: TypeTest[RDF.Node[R], RDF.URI[R]] with
29-
def unapply(x: RDF.Node[R]): Option[x.type & RDF.URI[R]] =
30-
x match
31-
case u: (x.type & rdfscala.URI) => Some(u)
32-
case _ => None
33-
34-
given node2BN: TypeTest[RDF.Node[R], RDF.BNode[R]] with
35-
def unapply(x: RDF.Node[R]): Option[x.type & RDF.BNode[R]] =
36-
x match
37-
case u: (x.type & rdfscala.BNode) => Some(u)
38-
case _ => None
39-
40-
given node2Lit: TypeTest[RDF.Node[R], RDF.Literal[R]] with
41-
def unapply(x: RDF.Node[R]): Option[x.type & RDF.Literal[R]] =
42-
x match
43-
case u: (x.type & rdfscala.Lit) => Some(u)
44-
case _ => None
45-
23+
4624
end TraitBasedRDF
4725

4826
@main def run =
4927
val test = Test[TraitBasedRDF.type]
5028
println(test.x)
51-
println("folded=" + test.folded)
52-
println("matched should be uri" + test.matched)

0 commit comments

Comments
 (0)