Skip to content
This repository has been archived by the owner on Oct 8, 2020. It is now read-only.

Commit

Permalink
Utils simplified
Browse files Browse the repository at this point in the history
  • Loading branch information
LorenzBuehmann committed Jun 27, 2019
1 parent 3dd33b9 commit d5e6b6c
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 19 deletions.
@@ -1,33 +1,21 @@
package net.sansa_stack.inference.utils

import org.apache.jena.graph.Triple
import org.apache.jena.shared.PrefixMapping
import org.apache.jena.sparql.util.FmtUtils


/**
* Convert a Jena Triple to an N-Triples string.
*
* @note it turns out, that it might be more efficient to use the Jena stream based writer API per partition.
*
* @author Lorenz Buehmann
*/
class JenaTripleToNTripleString
extends Function[Triple, String]
with java.io.Serializable {
override def apply(t: Triple): String = {
val subStr =
if (t.getSubject.isBlank) {
s"_:${t.getSubject.getBlankNodeLabel}"
} else {
s"<${t.getSubject.getURI}>"
}

val objStr =
if (t.getObject.isLiteral) {
t.getObject
} else if (t.getObject.isBlank) {
s"_:${t.getObject}"
} else {
s"<${t.getObject}>"
}
s"$subStr <${t.getPredicate}> $objStr ."
}
override def apply(t: Triple): String = s"${FmtUtils.stringForTriple(t, null.asInstanceOf[PrefixMapping])} ."
}

Expand Up @@ -2,7 +2,6 @@ package net.sansa_stack.inference.utils

import java.io.ByteArrayInputStream

import org.apache.jena.graph.Triple
import org.apache.jena.riot.{Lang, RDFDataMgr}

import net.sansa_stack.inference.data.RDFTriple
Expand All @@ -13,7 +12,7 @@ import net.sansa_stack.inference.data.RDFTriple
* @author Lorenz Buehmann
*/
class NTriplesStringToRDFTriple
extends Function1[String, Option[RDFTriple]]
extends ((String) => Option[RDFTriple])
with java.io.Serializable {
override def apply(s: String): Option[RDFTriple] = {
val t = RDFDataMgr.createIteratorTriples(new ByteArrayInputStream(s.getBytes), Lang.NTRIPLES, null).next()
Expand Down
@@ -0,0 +1,40 @@
package net.sansa_stack.inference.utils

/**
* Some utils for logical combinations of boolean functions.
*/
object PredicateUtils {

implicit class RichPredicate[A](f: A => Boolean) extends (A => Boolean) {
def apply(v: A): Boolean = f(v)

/**
* Logical 'and'.
*
* @param g
* @return
*/
def &&(g: A => Boolean): A => Boolean = { x: A =>
f(x) && g(x)
}

/**
* Logical 'or'.
*
* @param g
* @return
*/
def ||(g: A => Boolean): A => Boolean = { x: A =>
f(x) || g(x)
}

/**
* Logical 'not'
*
* @return
*/
def unary_! : A => Boolean = { x: A =>
!f(x)
}
}
}

0 comments on commit d5e6b6c

Please sign in to comment.