All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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