File Coverage

blib/lib/RDF/NS/Curated.pm
Criterion Covered Total %
statement 42 42 100.0
branch 8 8 100.0
condition n/a
subroutine 8 8 100.0
pod 5 5 100.0
total 63 63 100.0


line stmt bran cond sub pod time code
1             package RDF::NS::Curated;
2              
3 2     2   1546 use 5.006000;
  2         8  
4 2     2   12 use strict;
  2         4  
  2         39  
5 2     2   8 use warnings;
  2         4  
  2         1395  
6              
7             our $AUTHORITY = 'cpan:KJETILK';
8             our $VERSION = '1.006';
9              
10             sub new {
11 1     1 1 554 my $class = shift;
12 1         35 my %prefix_ns = (
13             acl => 'http://www.w3.org/ns/auth/acl#',
14             adms => 'http://www.w3.org/ns/adms#',
15             as => 'https://www.w3.org/ns/activitystreams#',
16             bibo => 'http://purl.org/ontology/bibo/',
17             cc => 'http://creativecommons.org/ns#',
18             csvw => 'http://www.w3.org/ns/csvw#',
19             ctag => 'http://commontag.org/ns#',
20             dbo => 'http://dbpedia.org/ontology/',
21             dbp => 'http://dbpedia.org/property/',
22             dc => 'http://purl.org/dc/terms/',
23             dc11 => 'http://purl.org/dc/elements/1.1/',
24             dcat => 'http://www.w3.org/ns/dcat#',
25             dctype => 'http://purl.org/dc/dcmitype/',
26             deps => 'http://ontologi.es/doap-deps#',
27             doap => 'http://usefulinc.com/ns/doap#',
28             dqv => 'http://www.w3.org/ns/dqv#',
29             duv => 'http://www.w3.org/ns/duv#',
30             earl => 'http://www.w3.org/ns/earl#',
31             event => 'http://purl.org/NET/c4dm/event.owl#',
32             foaf => 'http://xmlns.com/foaf/0.1/',
33             frbr => 'http://purl.org/vocab/frbr/core#',
34             gn => 'http://www.geonames.org/ontology#',
35             gr => 'http://purl.org/goodrelations/v1#',
36             grddl => 'http://www.w3.org/2003/g/data-view#',
37             hydra => 'http://www.w3.org/ns/hydra/core#',
38             ical => 'http://www.w3.org/2002/12/cal/icaltzd#',
39             jsonld => 'http://www.w3.org/ns/json-ld#',
40             ldp => 'http://www.w3.org/ns/ldp#',
41             ma => 'http://www.w3.org/ns/ma-ont#',
42             oa => 'http://www.w3.org/ns/oa#',
43             odrl => 'http://www.w3.org/ns/odrl/2/',
44             og => 'http://ogp.me/ns#',
45             org => 'http://www.w3.org/ns/org#',
46             owl => 'http://www.w3.org/2002/07/owl#',
47             pos => 'http://www.w3.org/2003/01/geo/wgs84_pos#',
48             prov => 'http://www.w3.org/ns/prov#',
49             qb => 'http://purl.org/linked-data/cube#',
50             rel => 'http://purl.org/vocab/relationship/',
51             rev => 'http://purl.org/stuff/rev#',
52             rif => 'http://www.w3.org/2007/rif#',
53             rdf => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
54             rdfa => 'http://www.w3.org/ns/rdfa#',
55             rdfs => 'http://www.w3.org/2000/01/rdf-schema#',
56             rr => 'http://www.w3.org/ns/r2rml#',
57             schema => 'http://schema.org/',
58             sd => 'http://www.w3.org/ns/sparql-service-description#',
59             sioc => 'http://rdfs.org/sioc/ns#',
60             skos => 'http://www.w3.org/2004/02/skos/core#',
61             skosxl => 'http://www.w3.org/2008/05/skos-xl#',
62             solid => 'http://www.w3.org/ns/solid/terms#',
63             sosa => 'http://www.w3.org/ns/sosa/',
64             ssn => 'http://www.w3.org/ns/ssn/',
65             time => 'http://www.w3.org/2006/time#',
66             v => 'http://rdf.data-vocabulary.org/#',
67             vann => 'http://purl.org/vocab/vann/',
68             vcard => 'http://www.w3.org/2006/vcard/ns#',
69             void => 'http://rdfs.org/ns/void#',
70             vs => 'http://www.w3.org/2003/06/sw-vocab-status/ns#',
71             wdr => 'http://www.w3.org/2007/05/powder#',
72             wdrs => 'http://www.w3.org/2007/05/powder-s#',
73             xhv => 'http://www.w3.org/1999/xhtml/vocab#',
74             xml => 'http://www.w3.org/XML/1998/namespace',
75             xsd => 'http://www.w3.org/2001/XMLSchema#',
76             yago => 'http://yago-knowledge.org/resource/',
77             );
78              
79 1         2 my $self = {
80             prefix_namespace => \%prefix_ns
81             };
82 1         5 return bless($self, $class);
83             }
84              
85             sub uri {
86 2     2 1 404 my $self = shift;
87 2         5 my $prefix = shift;
88 2         12 return $self->{prefix_namespace}->{$prefix};
89             }
90              
91             sub prefix {
92 3     3 1 7 my $self = shift;
93 3         6 my $namespace = shift;
94 3         4 my $ns_prefix = $self->{namespace_prefix};
95 3 100       9 unless ($ns_prefix) {
96 1         2 $ns_prefix = {reverse %{$self->{prefix_namespace}}};
  1         65  
97 1         6 $self->{namespace_prefix} = $ns_prefix;
98             }
99 3         14 return $ns_prefix->{$namespace};
100             }
101              
102             sub qname {
103 5     5 1 623 my $self = shift;
104 5         10 my $uri = shift;
105              
106             # regexpes copied from RDF::Trine::Node::Resource
107 5         16 my $r_PN_CHARS_BASE = qr/([A-Z]|[a-z]|[\x{00C0}-\x{00D6}]|[\x{00D8}-\x{00F6}]|[\x{00F8}-\x{02FF}]|[\x{0370}-\x{037D}]|[\x{037F}-\x{1FFF}]|[\x{200C}-\x{200D}]|[\x{2070}-\x{218F}]|[\x{2C00}-\x{2FEF}]|[\x{3001}-\x{D7FF}]|[\x{F900}-\x{FDCF}]|[\x{FDF0}-\x{FFFD}]|[\x{10000}-\x{EFFFF}])/;
108 5         114 my $r_PN_CHARS_U = qr/(_|${r_PN_CHARS_BASE})/;
109 5         100 my $r_PN_CHARS = qr/${r_PN_CHARS_U}|-|[0-9]|\x{00B7}|[\x{0300}-\x{036F}]|[\x{203F}-\x{2040}]/;
110 5         196 my $r_PN_LOCAL = qr/((${r_PN_CHARS_U})((${r_PN_CHARS}|[.])*${r_PN_CHARS})?)/;
111              
112 5         14 my $ln;
113             my $pr;
114 5         9 while (my ($prefix, $namespace) = each(%{$self->{prefix_namespace}})) {
  170         687  
115 168 100       21080 if($uri =~ m/^$namespace(${r_PN_LOCAL})$/) {
116 3         11 $ln = $1;
117 3         6 $pr = $prefix;
118 3         5 my $n = scalar keys (%{$self->{prefix_namespace}}); # reset iterator
  3         6  
119 3         9 last;
120             }
121             }
122 5 100       35 return unless defined($ln);
123 3 100       46 return wantarray ? ($pr, $ln) : "$pr:$ln";
124             }
125              
126             sub all {
127 1     1 1 2 my $self = shift;
128 1         7 return $self->{prefix_namespace};
129             }
130              
131             1;
132              
133             __END__