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. |