Author: reto
Date: Mon Jun 20 16:19:58 2011
New Revision: 1137682
URL: http://svn.apache.org/viewvc?rev=1137682&view=rev
Log:
CLEREZZA-510: added a test-class to test implicit conversions
Added:
incubator/clerezza/trunk/parent/rdf.scala.utils/src/test/scala/org/apache/clerezza/rdf/scala/utils/TypeConversionTest.scala
- copied, changed from r1135953,
incubator/clerezza/trunk/parent/rdf.scala.utils/src/test/scala/org/apache/clerezza/rdf/scala/utils/EasyGraphTest.scala
Modified:
incubator/clerezza/trunk/parent/rdf.scala.utils/src/main/scala/org/apache/clerezza/rdf/scala/utils/EasyGraph.scala
Modified:
incubator/clerezza/trunk/parent/rdf.scala.utils/src/main/scala/org/apache/clerezza/rdf/scala/utils/EasyGraph.scala
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/rdf.scala.utils/src/main/scala/org/apache/clerezza/rdf/scala/utils/EasyGraph.scala?rev=1137682&r1=1137681&r2=1137682&view=diff
==============================================================================
---
incubator/clerezza/trunk/parent/rdf.scala.utils/src/main/scala/org/apache/clerezza/rdf/scala/utils/EasyGraph.scala
(original)
+++
incubator/clerezza/trunk/parent/rdf.scala.utils/src/main/scala/org/apache/clerezza/rdf/scala/utils/EasyGraph.scala
Mon Jun 20 16:19:58 2011
@@ -34,7 +34,13 @@ object EasyGraph {
private val litFactory = LiteralFactory.getInstance
- implicit def string2lit(str: String) = new PlainLiteralScala(str)
+ implicit def string2litBuilder(str: String) = new LiteralBuilder(str)
+
+ implicit def string2lit(str: String) =
litFactory.createTypedLiteral(str)
+
+ implicit def lit2String(lit: Literal) = lit.getLexicalForm
+
+ implicit def litBuilder2lit(litBuilder: LiteralBuilder) =
litFactory.createTypedLiteral(litBuilder.lexicalForm)
implicit def date2lit(date: Date) = litFactory.createTypedLiteral(date)
@@ -101,24 +107,29 @@ object EasyGraph {
}
/**
- * An implementation of PlainLiteral for Scala that allows some automatic
conversions to happen
- * when combined with the implicit defs in the EasyGraph object
+ * A builder for creating RDF resources from a String. provides method to
created literals as well as a UriRef.
+ *
+ * When a language is added a PlainLiteral is returned, otherwise the
conversion to literal results in a Literal with
+ * datatype xsd:String.
*/
-class PlainLiteralScala(string: String) extends PlainLiteralImpl(string) {
+case class LiteralBuilder(lexicalForm: String) {
/**
* @return a plain literal with language specified by lang
*/
- def apply(lang: String) = new PlainLiteralImpl(string, new
Language(lang))
+ def apply(lang: String) = new PlainLiteralImpl(lexicalForm, new
Language(lang))
/**
* @return a plain literal with language specified by lang
*/
- def apply(lang: Symbol) = new PlainLiteralImpl(string, new
Language(lang.name))
+ def apply(lang: Symbol) = new PlainLiteralImpl(lexicalForm, new
Language(lang.name))
+
+ //TODO get a better name for this
+ def `@`(lang: String) = apply(lang)
- def ^^(typ: UriRef) = new TypedLiteralImpl(string, typ)
+ def ^^(typ: UriRef) = new TypedLiteralImpl(lexicalForm, typ)
- def uri = new UriRef(string)
+ def uri = new UriRef(lexicalForm)
}
Copied:
incubator/clerezza/trunk/parent/rdf.scala.utils/src/test/scala/org/apache/clerezza/rdf/scala/utils/TypeConversionTest.scala
(from r1135953,
incubator/clerezza/trunk/parent/rdf.scala.utils/src/test/scala/org/apache/clerezza/rdf/scala/utils/EasyGraphTest.scala)
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/rdf.scala.utils/src/test/scala/org/apache/clerezza/rdf/scala/utils/TypeConversionTest.scala?p2=incubator/clerezza/trunk/parent/rdf.scala.utils/src/test/scala/org/apache/clerezza/rdf/scala/utils/TypeConversionTest.scala&p1=incubator/clerezza/trunk/parent/rdf.scala.utils/src/test/scala/org/apache/clerezza/rdf/scala/utils/EasyGraphTest.scala&r1=1135953&r2=1137682&rev=1137682&view=diff
==============================================================================
---
incubator/clerezza/trunk/parent/rdf.scala.utils/src/test/scala/org/apache/clerezza/rdf/scala/utils/EasyGraphTest.scala
(original)
+++
incubator/clerezza/trunk/parent/rdf.scala.utils/src/test/scala/org/apache/clerezza/rdf/scala/utils/TypeConversionTest.scala
Mon Jun 20 16:19:58 2011
@@ -1,3 +1,5 @@
+package org.apache.clerezza.rdf.scala.utils
+
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -16,66 +18,49 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.clerezza.rdf.scala.utils
-
-import org.apache.clerezza.rdf.utils._
-import org.apache.clerezza.rdf.core._
-import org.apache.clerezza.rdf.core.impl._
-import org.apache.clerezza.rdf.ontologies._
import org.junit._
-import Preamble._
+import org.apache.clerezza.rdf.core._
+import impl.{TripleImpl, PlainLiteralImpl, TypedLiteralImpl}
-class EasyGraphTest {
+class TypeConversionTest {
+ private val literalFactory = LiteralFactory.getInstance()
- private val tinyGraph: Graph = {
- val gr = new SimpleMGraph
- val subj= new BNode()
- gr.add(new TripleImpl(subj,RDF.`type`, FOAF.Person))
- gr.add(new TripleImpl(subj,FOAF.knows, new
UriRef("http://bblfish.net/#hjs")))
- gr.add(new TripleImpl(subj,FOAF.name, new
PlainLiteralImpl("Henry Story", new Language("en"))))
- val other = new BNode()
- gr.add(new TripleImpl(subj,FOAF.knows, other))
- gr.add(new TripleImpl(subj,FOAF.name,new
PlainLiteralImpl("Danny Ayers")))
- gr.getGraph
- }
+ import EasyGraph._
@Test
- def plainChracter {
- /*val simpleMGraph = new SimpleMGraph
- val g = new EasyGraph(simpleMGraph)
- val sub = g.bnode
- ( g.u("http://bblfish.net/#hjs") a FOAF.Person
- has FOAF.name to {"Henry Story"}
- )
-
- Assert.assertEquals(tinyGraph, simpleMGraph.getGraph)*/
+ def useStringAsObject {
+ val t = new TripleImpl(new
UriRef(("http://example.org/subject")), new
UriRef(("http://example.org/predicate")), "a value")
+ Assert.assertEquals(literalFactory.createTypedLiteral("a
value"), t.getObject)
}
- @Test
- def usingArrows {
+ /*@Test
+ def useStringWithLanguageTag {
+ val t = new TripleImpl(new
UriRef(("http://example.org/subject")), new
UriRef(("http://example.org/predicate")), "a value"("en"))
+ Assert.assertEquals(new PlainLiteralImpl("a value", new
Language("en")), t.getObject)
+ }*/
+
+ def useStringWithLanguageTag {
+ val t = new TripleImpl(new
UriRef(("http://example.org/subject")), new
UriRef(("http://example.org/predicate")), "a value"`@`"en")
+ Assert.assertEquals(new PlainLiteralImpl("a value", new
Language("en")), t.getObject)
+ }
- /*
- // example using arrows
- (
- sub â FOAF.Person
- â FOAF.knows â¶ "http://bblfish.net/#hjs".uri
- â FOAF.name â¶ "Henry Story"(en)
- â FOAF.title â¶ "Software"+" Architect"
- â FOAF.knows â¶ ( g.bnode â FOAF.name â¶ "Danny Ayers" )
- )
- */
+ def useStringWithType {
+ val typeUri = new UriRef("http://example.org/dt")
+ val t = new TripleImpl(new
UriRef(("http://example.org/subject")), new
UriRef(("http://example.org/predicate")), "a value"^^typeUri)
+ Assert.assertEquals(new TypedLiteralImpl("a value", typeUri),
t.getObject)
}
- @Test
- def usingBrackets {
- /*
- // example using just brackets ( the apply() method )
- (
g.bnode(FOAF.knows)("http://bblfish.net/#hjs".uri,"http://farewellutopia.com/#me".uri)
- (FOAF.knows)(g.bnode(FOAF.name)("Danny Ayers"('en)))
- )
- */
+ def literaToString {
+ val lit = literalFactory.createTypedLiteral("a value")
+ val s: String = lit
+ Assert.assertEquals("a value", s)
}
+ @Test
+ def dotUri {
+ val t = new TripleImpl(new
UriRef(("http://example.org/subject")), new
UriRef(("http://example.org/predicate")), "http://example.org".uri)
+ Assert.assertEquals(new UriRef("http://example.org"),
t.getObject)
+ }
}