|
From: <cw...@us...> - 2007-08-13 17:26:51
|
Revision: 519
http://rdfapi-php.svn.sourceforge.net/rdfapi-php/?rev=519&view=rev
Author: cweiske
Date: 2007-08-13 10:26:48 -0700 (Mon, 13 Aug 2007)
Log Message:
-----------
Fix bug when nesting blank node at the end
Modified Paths:
--------------
trunk/rdfapi-php/api/syntax/N3Serializer.php
trunk/rdfapi-php/test/unit/Syntax/n3Serializer_test.php
Modified: trunk/rdfapi-php/api/syntax/N3Serializer.php
===================================================================
--- trunk/rdfapi-php/api/syntax/N3Serializer.php 2007-08-13 16:35:51 UTC (rev 518)
+++ trunk/rdfapi-php/api/syntax/N3Serializer.php 2007-08-13 17:26:48 UTC (rev 519)
@@ -342,6 +342,9 @@
$ts = $this->model->find($r, null, null);
if (count($ts->triples) == 0) {
+ if ($bEmbedded) {
+ $this->resourcetext[$r->getURI()] = '_:' . $r->getLabel();
+ }
return;
}
Modified: trunk/rdfapi-php/test/unit/Syntax/n3Serializer_test.php
===================================================================
--- trunk/rdfapi-php/test/unit/Syntax/n3Serializer_test.php 2007-08-13 16:35:51 UTC (rev 518)
+++ trunk/rdfapi-php/test/unit/Syntax/n3Serializer_test.php 2007-08-13 17:26:48 UTC (rev 519)
@@ -193,5 +193,200 @@
$this->assertTrue($mod2->containsAll($mod), 'Loaded model should contain all triples of original model');
}
- }
+
+
+ function testCompressOneBlank()
+ {
+ $mod = new MemModel();
+ $b1 = new BlankNode($mod);
+ $mod->add(new Statement(
+ $b1,
+ new Resource("http://example.org/bar1"),
+ new Literal('baz')
+ ));
+
+ $ser = new N3Serializer();
+ $ser->setCompress(true);
+ $ser->setNest(true);
+ $str = $ser->serialize($mod);
+ //var_dump($str);//, $mod2->triples);
+
+ //test if it can be loaded
+ $par = new N3Parser();
+ $mod2 = $par->parse2model($str, false);
+
+ $this->assertEqual($mod->size(), $mod2->size(), 'Original model size and loaded model size should equal');
+ $this->assertTrue($mod->containsAll($mod2), 'Original model should contain all triples of loaded model');
+ $this->assertTrue($mod2->containsAll($mod), 'Loaded model should contain all triples of original model');
+ }
+
+
+
+ function testCompressTwoBlanks()
+ {
+ $mod = new MemModel();
+ $b1 = new BlankNode($mod);
+ $b2 = new BlankNode($mod);
+ $mod->add(new Statement(
+ $b1,
+ new Resource("http://example.org/bar1"),
+ new Literal('baz1')
+ ));
+ $mod->add(new Statement(
+ $b2,
+ new Resource("http://example.org/bar2"),
+ new Literal('baz2')
+ ));
+
+ $ser = new N3Serializer();
+ $ser->setCompress(true);
+ $ser->setNest(true);
+ $str = $ser->serialize($mod);
+
+ //test if it can be loaded
+ $par = new N3Parser();
+ $mod2 = $par->parse2model($str, false);
+ //var_dump($str, $mod2->triples);
+
+ $this->compareModelsIgnoringBlankNodes($mod, $mod2);
+ }
+
+
+
+ function testCompressBlankAtEnd()
+ {
+ $mod = new MemModel();
+ $b3 = new BlankNode($mod);
+ $mod->add(new Statement(
+ new Resource('http://example.org/foo'),
+ new Resource("http://example.org/bar2"),
+ $b3
+ ));
+
+ $ser = new N3Serializer();
+ $ser->setCompress(true);
+ $str = $ser->serialize($mod);
+
+ //test if it can be loaded
+ $par = new N3Parser();
+ $mod2 = $par->parse2model($str, false);
+ //var_dump($str, $mod2->triples);
+
+ $this->compareModelsIgnoringBlankNodes($mod, $mod2);
+ }
+
+
+
+ function testNest()
+ {return;
+ $mod = new MemModel();
+ $b100 = new BlankNode($mod);
+ $b110 = new BlankNode($mod);
+ $b120 = new BlankNode($mod);
+ $b111 = new BlankNode($mod);
+ $mod->add(new Statement(
+ new Resource("http://example.org/foo"),
+ new Resource("http://example.org/bar"),
+ $b100
+ ));
+ $mod->add(new Statement(
+ $b100,
+ new Resource("http://example.org/bar2"),
+ $b110
+ ));
+ $mod->add(new Statement(
+ $b110,
+ new Resource("http://example.org/bar4"),
+ $b111
+ ));
+ $mod->add(new Statement(
+ $b100,
+ new Resource("http://example.org/bar3"),
+ $b120
+ ));
+
+ $ser = new N3Serializer();
+ $ser->setCompress(true);
+ $ser->setNest(true);
+ $str = $ser->serialize($mod);
+
+ //test if it can be loaded
+ $par = new N3Parser();
+ $mod2 = $par->parse2model($str, false);
+ var_dump($str);//, $mod2->triples);
+
+ $this->assertEqual($mod->size(), $mod2->size(), 'Original model size and loaded model size should equal');
+ $this->assertTrue($mod->containsAll($mod2), 'Original model should contain all triples of loaded model');
+ $this->assertTrue($mod2->containsAll($mod), 'Loaded model should contain all triples of original model');
+ }
+
+
+
+ function testNestBlankAtEnd()
+ {
+ $mod = new MemModel();
+ $b3 = new BlankNode($mod);
+ $mod->add(new Statement(
+ new Resource('http://example.org/foo'),
+ new Resource("http://example.org/bar2"),
+ $b3
+ ));
+
+ $ser = new N3Serializer();
+ $ser->setCompress(true);
+ $ser->setNest(true);
+ $str = $ser->serialize($mod);
+
+ //test if it can be loaded
+ $par = new N3Parser();
+ $mod2 = $par->parse2model($str, false);
+ //var_dump($str, $mod2->triples);
+
+ $this->compareModelsIgnoringBlankNodes($mod, $mod2);
+ }
+
+
+
+
+
+
+
+
+
+ function compareModelsIgnoringBlankNodes($mod1, $mod2)
+ {
+ $this->assertEqual($mod1->size(), $mod2->size(), 'Original model size and loaded model size should equal');
+
+ foreach ($mod1->triples as &$triple) {
+ $s = $p = $o = null;
+ if (!$triple->subj instanceof BlankNode) {
+ $s = $triple->subj;
+ }
+ if (!$triple->pred instanceof BlankNode) {
+ $p = $triple->pred;
+ }
+ if (!$triple->obj instanceof BlankNode) {
+ $o = $triple->obj;
+ }
+ $res = $mod2->find($s, $p, $o);
+ $this->assertTrue($res->size() > 0);
+ }
+
+ foreach ($mod2->triples as &$triple) {
+ $s = $p = $o = null;
+ if (!$triple->subj instanceof BlankNode) {
+ $s = $triple->subj;
+ }
+ if (!$triple->pred instanceof BlankNode) {
+ $p = $triple->pred;
+ }
+ if (!$triple->obj instanceof BlankNode) {
+ $o = $triple->obj;
+ }
+ $res = $mod1->find($s, $p, $o);
+ $this->assertTrue($res->size() > 0);
+ }
+ }//function compareModelsIgnoringBlankNodes($mod1, $mod2)
+
+}
?>
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|