From a61a82a118cae6b31ba2411e5066fc80a19009df Mon Sep 17 00:00:00 2001 From: Zoran Varadinsky Date: Fri, 29 Jan 2016 14:18:30 +0100 Subject: [PATCH 1/4] Update SPARQLHTML serializer to return HTML links for IRIs #54 --- lib/AtteanX/Serializer/SPARQLHTML.pm | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lib/AtteanX/Serializer/SPARQLHTML.pm b/lib/AtteanX/Serializer/SPARQLHTML.pm index 5fab5942..3075ab1e 100644 --- a/lib/AtteanX/Serializer/SPARQLHTML.pm +++ b/lib/AtteanX/Serializer/SPARQLHTML.pm @@ -141,6 +141,22 @@ Serializes the L object as HTML. s/namespaces) { + my $abr = $map->abbreviate($html); + + if ($abr) { + return qq[$abr]; + } else { + return $html; + } + + } else { + + return $html; + } + + # if ($link) { # $html = qq[$html]; # } @@ -162,6 +178,7 @@ Serializes the L object as HTML. } } with 'Attean::API::ResultSerializer'; + with 'Attean::API::AbbreviatingSerializer'; } 1; From bcc5e07b66872a384b984242b3bded4b317c9f42 Mon Sep 17 00:00:00 2001 From: Zoran Varadinsky Date: Fri, 29 Jan 2016 14:26:06 +0100 Subject: [PATCH 2/4] Add tests for issue: #54 --- t/issue_54.t | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 t/issue_54.t diff --git a/t/issue_54.t b/t/issue_54.t new file mode 100644 index 00000000..ceaf62a6 --- /dev/null +++ b/t/issue_54.t @@ -0,0 +1,34 @@ +use strict; +use warnings; + +use Test::More tests => 4; +use Attean; +use Attean::IRI; + +my $sclass = Attean->get_serializer('SPARQLHTML'); + +my $map = URI::NamespaceMap->new( { + foaf => 'http://xmlns.com/foaf/0.1/' + }); + +my $n1 = Attean::IRI->new('http://xmlns.com/foaf/0.1/Person'); +my $n2 = Attean::IRI->new('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'); + +NAMESPACEMAP:{ + + my $s = $sclass->new(namespaces => $map); + + is ($s->node_as_html($n1), 'foaf:Person', 'Return HTML link for IRI'); + is ($s->node_as_html($n2), 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type', 'Return plain IRI - 1'); + +} + +NO_NAMESPACEMAP:{ + + my $s = $sclass->new(); + + is ($s->node_as_html($n1), 'http://xmlns.com/foaf/0.1/Person', 'Return plain IRI - 2'); + is ($s->node_as_html($n2), 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type', 'Return plain IRI - 3'); + +} + From b4294fd321a7304462582f3fb803db1dba7cc714 Mon Sep 17 00:00:00 2001 From: Varadinsky Date: Fri, 29 Jan 2016 20:17:37 +0100 Subject: [PATCH 3/4] Return HTML link instead of plain IRI #54 --- lib/AtteanX/Serializer/SPARQLHTML.pm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/AtteanX/Serializer/SPARQLHTML.pm b/lib/AtteanX/Serializer/SPARQLHTML.pm index 3075ab1e..d5ef9728 100644 --- a/lib/AtteanX/Serializer/SPARQLHTML.pm +++ b/lib/AtteanX/Serializer/SPARQLHTML.pm @@ -140,13 +140,13 @@ Serializes the L object as HTML. s/&/&/g; s/$uri]; if (my $map = $self->namespaces) { - my $abr = $map->abbreviate($html); + my $abr = $map->abbreviate($uri); if ($abr) { - return qq[$abr]; + return qq[$abr]; } else { return $html; } @@ -160,7 +160,6 @@ Serializes the L object as HTML. # if ($link) { # $html = qq[$html]; # } - return $html; } elsif ($node->does('Attean::API::Literal')) { my $html = $node->value; for ($html) { From 98724f74aca32230f732f188b6187e921c7085e6 Mon Sep 17 00:00:00 2001 From: Varadinsky Date: Fri, 29 Jan 2016 20:21:01 +0100 Subject: [PATCH 4/4] Update plain IRIs to HTML links in tests #54 --- t/issue_54.t | 8 ++++---- t/serializer-sparqlhtml.t | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/t/issue_54.t b/t/issue_54.t index ceaf62a6..cc21f025 100644 --- a/t/issue_54.t +++ b/t/issue_54.t @@ -18,8 +18,8 @@ NAMESPACEMAP:{ my $s = $sclass->new(namespaces => $map); - is ($s->node_as_html($n1), 'foaf:Person', 'Return HTML link for IRI'); - is ($s->node_as_html($n2), 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type', 'Return plain IRI - 1'); + is ($s->node_as_html($n1), 'foaf:Person', 'Return HTML link for IRI with abbrev'); + is ($s->node_as_html($n2), 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type', 'Return HTML link for IRI - 1'); } @@ -27,8 +27,8 @@ NO_NAMESPACEMAP:{ my $s = $sclass->new(); - is ($s->node_as_html($n1), 'http://xmlns.com/foaf/0.1/Person', 'Return plain IRI - 2'); - is ($s->node_as_html($n2), 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type', 'Return plain IRI - 3'); + is ($s->node_as_html($n1), 'http://xmlns.com/foaf/0.1/Person', 'Return HTML link for IRI - 2'); + is ($s->node_as_html($n2), 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type', 'Return HTML link for IRI - 3'); } diff --git a/t/serializer-sparqlhtml.t b/t/serializer-sparqlhtml.t index 4c0b9a2d..74c49ce7 100644 --- a/t/serializer-sparqlhtml.t +++ b/t/serializer-sparqlhtml.t @@ -41,11 +41,11 @@ END my @rows = ($b =~ /(=', 4, 'at least 1 header row and 3 data rows'); like($b, qr[x]); - like($b, qr[http://example.org/p]); + like($b, qr[http://example.org/p]); like($b, qr[1]); like($b, qr[x]); like($b, qr[2]); - like($b, qr[http://perlrdf.org/]); + like($b, qr[http://perlrdf.org/]); }; subtest 'serialize_iter_to_io' => sub { @@ -58,11 +58,11 @@ END my @rows = ($b =~ /(=', 4, 'at least 1 header row and 3 data rows'); like($b, qr[x]); - like($b, qr[http://example.org/p]); + like($b, qr[http://example.org/p]); like($b, qr[1]); like($b, qr[x]); like($b, qr[2]); - like($b, qr[http://perlrdf.org/]); + like($b, qr[http://perlrdf.org/]); }; }