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

es.weso.schema.RDFReport.scala Maven / Gradle / Ivy

package es.weso.schema

import es.weso.rdf.RDFBuilder
import es.weso.shacl.report.ValidationReport
import cats.effect._
import cats.implicits._
import es.weso.rdf.jena.RDFAsJenaModel
import org.apache.jena.rdf.model.Model

sealed abstract class RDFReport extends Product with Serializable {
  def toRDF(builder: RDFBuilder): IO[RDFBuilder]
}

case object EmptyReport extends RDFReport {
    override def toRDF(builder: RDFBuilder) = builder.pure[IO]
}

case class ShaclexReport(vr: ValidationReport) extends RDFReport {
    override def toRDF(builder: RDFBuilder) = vr.toRDF(builder)
}

case class JenaShaclReport(model: Model) extends RDFReport {
    override def toRDF(builder: RDFBuilder) = builder match {
        case rdfJena: RDFAsJenaModel => RDFAsJenaModel.fromModel(model).flatMap(m => rdfJena.merge(m))
        case _ => IO.raiseError(new RuntimeException(s"Builder in JenaShaclReport.toRDF must be RDFAsJenaModel"))
    }
}

object RDFReport {
  def empty: RDFReport = EmptyReport
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy