
org.w3.banana.SparqlUpdateEngineTest.scala Maven / Gradle / Ivy
The newest version!
package org.w3.banana
import org.scalatest.{BeforeAndAfterAll, Matchers, TryValues, WordSpec}
import org.w3.banana.io._
import scala.util.Try
/* Sparql Update gets a special test as not all servers implement it.
*/
class SparqlUpdateEngineTest[Rdf <: RDF, A](
val store: A
)(implicit
val reader: RDFReader[Rdf, Try, RDFXML],
val ops: RDFOps[Rdf],
val comonad: scalaz.Comonad[scala.util.Try],
val monad: scalaz.Monad[scala.util.Try],
val sparqlOps: SparqlOps[Rdf],
val graphStore: GraphStore[Rdf, Try, A],
val sparqlUpdateEngine: SparqlEngine[Rdf, Try, A] with SparqlUpdate[Rdf,Try, A],
val lifecycle: Lifecycle[Rdf, A]
) extends WordSpec with SparqlEngineTesterTrait[Rdf, Try, A] with Matchers with BeforeAndAfterAll with TryValues {
import ops._
import org.w3.banana.diesel._
import sparqlOps._
import sparqlUpdateEngine.sparqlEngineSyntax._
import sparqlUpdateEngine.sparqlUpdateSyntax._
"Henry Story must have banana-rdf as current-project" in {
val updateQuery = parseUpdate(
"""
|prefix foaf:
|prefix xsd:
|
|INSERT {
| GRAPH {
| ?author foaf:currentProject
| }
|} WHERE {
| GRAPH {
| ?author foaf:name "Henry Story"^^xsd:string
| }
|}
""".stripMargin
).success.value
store.executeUpdate(updateQuery).get
val selectQuery = parseSelect(
"""
|prefix foaf:
|prefix xsd:
|
|SELECT ?currentProject
|WHERE {
| GRAPH {
| ?author foaf:name "Henry Story"^^xsd:string .
| ?author foaf:currentProject ?currentProject
| }
|}
""".stripMargin).success.value
val projects = store.executeSelect(selectQuery).get.iterator.to[Iterable]
val result = projects.map(row =>
row("currentProject").success.value.as[Rdf#URI].success.value
)
result should have size (2)
result should contain(URI("http://github.com/w3c/banana-rdf"))
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy