rdf 3.0.13 → 3.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/AUTHORS +1 -1
- data/README.md +46 -11
- data/VERSION +1 -1
- data/etc/doap.nt +74 -80
- data/lib/rdf.rb +32 -23
- data/lib/rdf/changeset.rb +87 -19
- data/lib/rdf/cli.rb +6 -6
- data/lib/rdf/format.rb +17 -10
- data/lib/rdf/mixin/enumerable.rb +3 -2
- data/lib/rdf/mixin/mutable.rb +5 -15
- data/lib/rdf/mixin/queryable.rb +12 -4
- data/lib/rdf/mixin/writable.rb +9 -14
- data/lib/rdf/model/dataset.rb +1 -1
- data/lib/rdf/model/graph.rb +5 -2
- data/lib/rdf/model/list.rb +5 -5
- data/lib/rdf/model/statement.rb +30 -7
- data/lib/rdf/model/uri.rb +42 -23
- data/lib/rdf/nquads.rb +6 -6
- data/lib/rdf/ntriples.rb +6 -4
- data/lib/rdf/ntriples/reader.rb +32 -7
- data/lib/rdf/ntriples/writer.rb +10 -1
- data/lib/rdf/query.rb +27 -35
- data/lib/rdf/query/hash_pattern_normalizer.rb +14 -12
- data/lib/rdf/query/pattern.rb +51 -18
- data/lib/rdf/query/solution.rb +20 -1
- data/lib/rdf/query/solutions.rb +15 -5
- data/lib/rdf/query/variable.rb +17 -5
- data/lib/rdf/reader.rb +76 -25
- data/lib/rdf/repository.rb +32 -18
- data/lib/rdf/transaction.rb +1 -1
- data/lib/rdf/util.rb +6 -5
- data/lib/rdf/util/cache.rb +2 -2
- data/lib/rdf/util/coercions.rb +60 -0
- data/lib/rdf/util/file.rb +2 -2
- data/lib/rdf/util/logger.rb +7 -7
- data/lib/rdf/vocab/owl.rb +401 -86
- data/lib/rdf/vocab/rdfs.rb +81 -18
- data/lib/rdf/vocab/rdfv.rb +147 -1
- data/lib/rdf/vocab/writer.rb +43 -4
- data/lib/rdf/vocab/xsd.rb +203 -2
- data/lib/rdf/vocabulary.rb +108 -14
- data/lib/rdf/writer.rb +32 -10
- metadata +28 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ecf8b966bcaf7510f41e9abcfa06b9fc2ba8bf6f135452055d4070374d8d277
|
4
|
+
data.tar.gz: 040d4fd90f753fb7775de4faa323dbdf611b72b106c2d739fe49da2782654bf2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6fef455fbd5119f38c8591b88efd49856fb595ad2a1a35d0aa8124d7ca42f19e30a2e655829b633e362e5fba9723acbb2bb171aa6f0e2176ddd721a18e147ce7
|
7
|
+
data.tar.gz: ff5f59ab46447637a367f3355aadd005944457c6832264130ab9b9d6566f0ca0eff6a71245562d68de05e46e7cc6a97d74e447df1ff9918b0f4135d3e402f350
|
data/AUTHORS
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
* Arto Bendiken <[email protected]>
|
2
2
|
* Ben Lavender <[email protected]>
|
3
|
-
* Gregg Kellogg <gregg@
|
3
|
+
* Gregg Kellogg <gregg@greggkellogg.net>
|
data/README.md
CHANGED
@@ -4,10 +4,6 @@ This is a pure-Ruby library for working with [Resource Description Framework
|
|
4
4
|
(RDF)][RDF] data.
|
5
5
|
|
6
6
|
* <https://ruby-rdf.github.com/rdf>
|
7
|
-
* <https://blog.datagraph.org/2010/12/rdf-for-ruby>
|
8
|
-
* <https://blog.datagraph.org/2010/03/rdf-for-ruby>
|
9
|
-
* <https://blog.datagraph.org/2010/04/parsing-rdf-with-ruby>
|
10
|
-
* <https://blog.datagraph.org/2010/04/rdf-repository-howto>
|
11
7
|
|
12
8
|
[](https://badge.fury.io/rb/rdf)
|
13
9
|
[](https://travis-ci.org/ruby-rdf/rdf)
|
@@ -29,9 +25,11 @@ This is a pure-Ruby library for working with [Resource Description Framework
|
|
29
25
|
not modify any of Ruby's core classes or standard library.
|
30
26
|
* Based entirely on Ruby's autoloading, meaning that you can generally make
|
31
27
|
use of any one part of the library without needing to load up the rest.
|
32
|
-
* Compatible with Ruby Ruby >= 2.
|
28
|
+
* Compatible with Ruby Ruby >= 2.4, Rubinius and JRuby 9.0+.
|
29
|
+
* Note, changes in mapping hashes to keyword arguments for Ruby 2.7+ may require that arguments be passed more explicitly, especially when the first argument is a Hash and there are optional keyword arguments. In this case, Hash argument may need to be explicitly included within `{}` and the optional keyword arguments may need to be specified using `**{}` if there are no keyword arguments.
|
33
30
|
* Performs auto-detection of input to select appropriate Reader class if one
|
34
31
|
cannot be determined from file characteristics.
|
32
|
+
* Provisional support for [RDF*][].
|
35
33
|
|
36
34
|
### HTTP requests
|
37
35
|
|
@@ -189,7 +187,7 @@ Note that no prefixes are loaded automatically, however they can be provided as
|
|
189
187
|
FOAF.name => :name,
|
190
188
|
FOAF.mbox => :email,
|
191
189
|
}
|
192
|
-
})
|
190
|
+
}, **{})
|
193
191
|
|
194
192
|
query.execute(graph) do |solution|
|
195
193
|
puts "name=#{solution.name} email=#{solution.email}"
|
@@ -222,6 +220,46 @@ A separate [SPARQL][SPARQL doc] gem builds on basic BGP support to provide full
|
|
222
220
|
foaf[:name] #=> RDF::URI("http://xmlns.com/foaf/0.1/name")
|
223
221
|
foaf['mbox'] #=> RDF::URI("http://xmlns.com/foaf/0.1/mbox")
|
224
222
|
|
223
|
+
## RDF* (RDFStar)
|
224
|
+
|
225
|
+
[RDF.rb][] includes provisional support for [RDF*][] with an N-Triples/N-Quads syntax extension that uses inline statements in the _subject_ or _object_ position.
|
226
|
+
|
227
|
+
Internally, an `RDF::Statement` is treated as another resource, along with `RDF::URI` and `RDF::Node`, which allows an `RDF::Statement` to have a `#subject` or `#object` which is also an `RDF::Statement`.
|
228
|
+
|
229
|
+
**Note: This feature is subject to change or elimination as the standards process progresses.**
|
230
|
+
|
231
|
+
### Serializing a Graph containing embedded statements
|
232
|
+
|
233
|
+
require 'rdf/ntriples'
|
234
|
+
statement = RDF::Statement(RDF::URI('bob'), RDF::Vocab::FOAF.age, RDF::Literal(23))
|
235
|
+
graph = RDF::Graph.new << [statement, RDF::URI("ex:certainty"), RDF::Literal(0.9)]
|
236
|
+
graph.dump(:ntriples, validate: false)
|
237
|
+
# => '<<<bob> <http://xmlns.com/foaf/0.1/age> "23"^^<http://www.w3.org/2001/XMLSchema#integer>>> <ex:certainty> "0.9"^^<http://www.w3.org/2001/XMLSchema#double> .'
|
238
|
+
|
239
|
+
### Reading a Graph containing embedded statements
|
240
|
+
|
241
|
+
By default, the N-Triples reader will reject a document containing a subject resource.
|
242
|
+
|
243
|
+
nt = '<<<bob> <http://xmlns.com/foaf/0.1/age> "23"^^<http://www.w3.org/2001/XMLSchema#integer>>> <ex:certainty> "0.9"^^<http://www.w3.org/2001/XMLSchema#double> .'
|
244
|
+
graph = RDF::Graph.new do |graph|
|
245
|
+
RDF::NTriples::Reader.new(nt) {|reader| graph << reader}
|
246
|
+
end
|
247
|
+
# => RDF::ReaderError
|
248
|
+
|
249
|
+
Readers support a `rdfstar` option with either `:PG` (Property Graph) or `:SA` (Separate Assertions) modes. In `:PG` mode, statements that are used in the subject or object positions are also implicitly added to the graph:
|
250
|
+
|
251
|
+
graph = RDF::Graph.new do |graph|
|
252
|
+
RDF::NTriples::Reader.new(nt, rdfstar: :PG) {|reader| graph << reader}
|
253
|
+
end
|
254
|
+
graph.count #=> 2
|
255
|
+
|
256
|
+
When using the `:SA` mode, only one statement is asserted, although the reified statement is contained within the graph.
|
257
|
+
|
258
|
+
graph = RDF::Graph.new do |graph|
|
259
|
+
RDF::NTriples::Reader.new(nt, rdfstar: :SA) {|reader| graph << reader}
|
260
|
+
end
|
261
|
+
graph.count #=> 1
|
262
|
+
|
225
263
|
## Documentation
|
226
264
|
|
227
265
|
<https://rubydoc.info/github/ruby-rdf/rdf>
|
@@ -248,8 +286,6 @@ A separate [SPARQL][SPARQL doc] gem builds on basic BGP support to provide full
|
|
248
286
|
|
249
287
|
### RDF Serialization
|
250
288
|
|
251
|
-
<https://blog.datagraph.org/2010/04/parsing-rdf-with-ruby>
|
252
|
-
|
253
289
|
* {RDF::Format}
|
254
290
|
* {RDF::Reader}
|
255
291
|
* {RDF::Writer}
|
@@ -294,8 +330,6 @@ from BNode identity (i.e., they each entail the other)
|
|
294
330
|
|
295
331
|
### RDF Storage
|
296
332
|
|
297
|
-
<https://blog.datagraph.org/2010/04/rdf-repository-howto>
|
298
|
-
|
299
333
|
* {RDF::Repository}
|
300
334
|
* {RDF::Countable}
|
301
335
|
* {RDF::Enumerable}
|
@@ -418,7 +452,7 @@ see
|
|
418
452
|
[YARD-GS]: https://rubydoc.info/docs/yard/file/docs/GettingStarted.md
|
419
453
|
[PDD]: https://lists.w3.org/Archives/Public/public-rdf-ruby/2010May/0013.html
|
420
454
|
[JSONLD doc]: https://rubydoc.info/github/ruby-rdf/json-ld
|
421
|
-
[LinkedData doc]: https://rubydoc.info/github/
|
455
|
+
[LinkedData doc]: https://rubydoc.info/github/ruby-rdf/linkeddata
|
422
456
|
[Microdata doc]: https://rubydoc.info/github/ruby-rdf/rdf-microdata
|
423
457
|
[N3 doc]: https://rubydoc.info/github/ruby-rdf/rdf-n3
|
424
458
|
[RDFa doc]: https://rubydoc.info/github/ruby-rdf/rdf-rdfa
|
@@ -441,6 +475,7 @@ see
|
|
441
475
|
[RDF::TriX]: https://ruby-rdf.github.com/rdf-trix
|
442
476
|
[RDF::Turtle]: https://ruby-rdf.github.com/rdf-turtle
|
443
477
|
[RDF::Raptor]: https://ruby-rdf.github.com/rdf-raptor
|
478
|
+
[RDF*]: https://lists.w3.org/Archives/Public/public-rdf-star/
|
444
479
|
[LinkedData]: https://ruby-rdf.github.com/linkeddata
|
445
480
|
[JSON::LD]: https://ruby-rdf.github.com/json-ld
|
446
481
|
[RestClient]: https://rubygems.org/gems/rest-client
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.1.4
|
data/etc/doap.nt
CHANGED
@@ -1,85 +1,79 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
_:g6720 <http://xmlns.com/foaf/0.1/name> "Hellekin O. Wolf" .
|
2
|
+
_:g6720 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "c69f3255ff0639543cc5edfd8116eac8df16fab8" .
|
3
|
+
_:g6720 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
|
4
|
+
_:g6680 <http://xmlns.com/foaf/0.1/name> "Fumihiro Kato" .
|
5
|
+
_:g6680 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "d31fdd6af7a279a89bf09fdc9f7c44d9d08bb930" .
|
6
|
+
_:g6680 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
|
7
|
+
<https://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/homepage> <https://bhuga.net/> .
|
8
|
+
<https://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/name> "Ben Lavender" .
|
9
|
+
<https://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/mbox> <mailto:[email protected]> .
|
10
|
+
<https://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "dbf45f4ffbd27b67aa84f02a6a31c144727d10af" .
|
11
|
+
<https://bhuga.net/#ben> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
|
12
|
+
_:g6660 <http://xmlns.com/foaf/0.1/name> "Joey Geiger" .
|
13
|
+
_:g6660 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "f412d743150d7b27b8468d56e69ca147917ea6fc" .
|
14
|
+
_:g6660 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
|
15
|
+
_:g6740 <http://xmlns.com/foaf/0.1/name> "John Fieber" .
|
16
|
+
_:g6740 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "f7653fc1ac0e82ebb32f092389bd5fc728eaae12" .
|
17
|
+
_:g6740 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
|
18
|
+
_:g6640 <http://xmlns.com/foaf/0.1/name> "Danny Gagne" .
|
19
|
+
_:g6640 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "6de43e9cf7de53427fea9765706703e4d957c17b" .
|
20
|
+
_:g6640 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
|
21
|
+
_:g6780 <http://xmlns.com/foaf/0.1/name> "Pius Uzamere" .
|
22
|
+
_:g6780 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "bedbbf2451e5beb38d59687c0460032aff92cd3c" .
|
23
|
+
_:g6780 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
|
24
|
+
_:g6700 <http://xmlns.com/foaf/0.1/name> "Naoki Kawamukai" .
|
25
|
+
_:g6700 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "5bdcd8e2af4f5952aaeeffbdd371c41525ec761d" .
|
26
|
+
_:g6700 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
|
3
27
|
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#homepage> <https://rubygems.org/gems/rdf> .
|
4
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#license> <http://creativecommons.org/licenses/publicdomain/> .
|
5
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#shortdesc> "A Ruby library for working with Resource Description Framework (RDF) data."@en .
|
6
28
|
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#description> "RDF.rb is a pure-Ruby library for working with Resource Description Framework (RDF) data."@en .
|
7
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#created> "2007-10-23" .
|
8
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#platform> "Ruby" .
|
9
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#category> <http://dbpedia.org/resource/Resource_Description_Framework> .
|
10
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#category> <http://dbpedia.org/resource/Ruby_(programming_language)> .
|
11
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#implements> <http://www.w3.org/TR/rdf11-concepts/> .
|
12
29
|
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#implements> <http://www.w3.org/TR/n-quads/> .
|
30
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#implements> <http://www.w3.org/TR/rdf11-concepts/> .
|
13
31
|
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#implements> <http://www.w3.org/TR/n-triples/> .
|
32
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#documenter> <https://bhuga.net/#ben> .
|
33
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#documenter> <https://greggkellogg.net/foaf#me> .
|
34
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#documenter> <https://ar.to/#self> .
|
14
35
|
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#download-page> <https://rubygems.org/gems/rdf/> .
|
15
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#
|
16
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#
|
17
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#
|
18
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#
|
19
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#
|
20
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#
|
21
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#
|
22
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#
|
23
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#
|
24
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#
|
25
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#
|
26
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#
|
27
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
<https://
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
<https://
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
<https://
|
52
|
-
|
53
|
-
_:
|
54
|
-
_:
|
55
|
-
<
|
56
|
-
_:
|
57
|
-
_:
|
58
|
-
_:
|
59
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:g70186319319640 .
|
60
|
-
_:g70186321063140 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
|
61
|
-
_:g70186321063140 <http://xmlns.com/foaf/0.1/name> "Pius Uzamere" .
|
62
|
-
_:g70186321063140 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "bedbbf2451e5beb38d59687c0460032aff92cd3c" .
|
63
|
-
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:g70186321063140 .
|
64
|
-
<https://rubygems.org/gems/rdf> <http://xmlns.com/foaf/0.1/maker> <http://ar.to/#self> .
|
65
|
-
<https://rubygems.org/gems/rdf> <http://purl.org/dc/terms/creator> <http://ar.to/#self> .
|
66
|
-
<http://ar.to/#self> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
|
67
|
-
<http://ar.to/#self> <http://xmlns.com/foaf/0.1/name> "Arto Bendiken" .
|
68
|
-
<http://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox> <mailto:[email protected]> .
|
69
|
-
<http://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "a033f652c84a4d73b8c26d318c2395699dd2bdfb" .
|
70
|
-
<http://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "d0737cceb55eb7d740578d2db1bc0727e3ed49ce" .
|
71
|
-
<http://ar.to/#self> <http://xmlns.com/foaf/0.1/homepage> <http://ar.to/> .
|
72
|
-
<http://ar.to/#self> <http://xmlns.com/foaf/0.1/made> <https://rubygems.org/gems/rdf> .
|
73
|
-
<http://ar.to/#self> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://datagraph.org/bendiken/foaf> .
|
74
|
-
<http://bhuga.net/#ben> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
|
75
|
-
<http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/name> "Ben Lavender" .
|
76
|
-
<http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/mbox> <mailto:[email protected]> .
|
77
|
-
<http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "dbf45f4ffbd27b67aa84f02a6a31c144727d10af" .
|
78
|
-
<http://bhuga.net/#ben> <http://xmlns.com/foaf/0.1/homepage> <http://bhuga.net/> .
|
79
|
-
<http://bhuga.net/#ben> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://datagraph.org/bhuga/foaf> .
|
80
|
-
<http://greggkellogg.net/foaf#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
|
81
|
-
<http://greggkellogg.net/foaf#me> <http://xmlns.com/foaf/0.1/name> "Gregg Kellogg" .
|
82
|
-
<http://greggkellogg.net/foaf#me> <http://xmlns.com/foaf/0.1/mbox> <mailto:[email protected]> .
|
83
|
-
<http://greggkellogg.net/foaf#me> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "35bc44e6d0070e5ad50ccbe0d24403c96af2b9bd" .
|
84
|
-
<http://greggkellogg.net/foaf#me> <http://xmlns.com/foaf/0.1/homepage> <http://greggkellogg.net/> .
|
85
|
-
<http://greggkellogg.net/foaf#me> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://greggkellogg.net/foaf> .
|
36
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#developer> <https://bhuga.net/#ben> .
|
37
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#developer> <https://greggkellogg.net/foaf#me> .
|
38
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#developer> <https://ar.to/#self> .
|
39
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#created> "2007-10-23" .
|
40
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#shortdesc> "A Ruby library for working with Resource Description Framework (RDF) data."@en .
|
41
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#blog> <https://ar.to/> .
|
42
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#blog> <https://greggkellogg.net/> .
|
43
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#license> <https://unlicense.org/1.0/> .
|
44
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#category> <http://dbpedia.org/resource/Ruby_(programming_language)> .
|
45
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#category> <http://dbpedia.org/resource/Resource_Description_Framework> .
|
46
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#name> "RDF.rb" .
|
47
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#programming-language> "Ruby" .
|
48
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:g6720 .
|
49
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:g6680 .
|
50
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:g6660 .
|
51
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:g6740 .
|
52
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:g6640 .
|
53
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:g6780 .
|
54
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:g6700 .
|
55
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:g6560 .
|
56
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#helper> _:g6760 .
|
57
|
+
<https://rubygems.org/gems/rdf> <http://xmlns.com/foaf/0.1/maker> <https://ar.to/#self> .
|
58
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#maintainer> <https://greggkellogg.net/foaf#me> .
|
59
|
+
<https://rubygems.org/gems/rdf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://usefulinc.com/ns/doap#Project> .
|
60
|
+
<https://rubygems.org/gems/rdf> <http://usefulinc.com/ns/doap#bug-database> <https://github.com/ruby-rdf/rdf/issues> .
|
61
|
+
<https://rubygems.org/gems/rdf> <http://purl.org/dc/terms/creator> <https://ar.to/#self> .
|
62
|
+
<https://greggkellogg.net/foaf#me> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://greggkellogg.net/foaf> .
|
63
|
+
<https://greggkellogg.net/foaf#me> <http://xmlns.com/foaf/0.1/homepage> <https://greggkellogg.net/> .
|
64
|
+
<https://greggkellogg.net/foaf#me> <http://xmlns.com/foaf/0.1/name> "Gregg Kellogg" .
|
65
|
+
<https://greggkellogg.net/foaf#me> <http://xmlns.com/foaf/0.1/mbox> <mailto:gregg@greggkellogg.net> .
|
66
|
+
<https://greggkellogg.net/foaf#me> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "35bc44e6d0070e5ad50ccbe0d24403c96af2b9bd" .
|
67
|
+
<https://greggkellogg.net/foaf#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
|
68
|
+
<https://ar.to/#self> <http://xmlns.com/foaf/0.1/homepage> <https://ar.to/> .
|
69
|
+
<https://ar.to/#self> <http://xmlns.com/foaf/0.1/name> "Arto Bendiken" .
|
70
|
+
<https://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox> <mailto:arto@bendiken.net> .
|
71
|
+
<https://ar.to/#self> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "a033f652c84a4d73b8c26d318c2395699dd2bdfb" .
|
72
|
+
<https://ar.to/#self> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
|
73
|
+
<https://ar.to/#self> <http://xmlns.com/foaf/0.1/made> <https://rubygems.org/gems/rdf> .
|
74
|
+
_:g6760 <http://xmlns.com/foaf/0.1/name> "Keita Urashima" .
|
75
|
+
_:g6760 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "2b4247b6fd5bb4a1383378f325784318680d5ff9" .
|
76
|
+
_:g6760 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
|
77
|
+
_:g6560 <http://xmlns.com/foaf/0.1/name> "Călin Ardelean" .
|
78
|
+
_:g6560 <http://xmlns.com/foaf/0.1/mbox_sha1sum> "274bd18402fc773ffc0606996aa1fb90b603aa29" .
|
79
|
+
_:g6560 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
|
data/lib/rdf.rb
CHANGED
@@ -59,16 +59,18 @@ module RDF
|
|
59
59
|
# RDF vocabularies
|
60
60
|
autoload :Vocabulary, 'rdf/vocabulary'
|
61
61
|
autoload :StrictVocabulary, 'rdf/vocabulary'
|
62
|
-
VOCABS = Dir.glob(File.expand_path("../rdf/vocab/*.rb", __FILE__)).map { |f| File.basename(f)[0...-(File.extname(f).size)].to_sym } rescue []
|
63
62
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
63
|
+
VOCABS = {
|
64
|
+
owl: {uri: "http://www.w3.org/2002/07/owl#", class_name: "OWL"},
|
65
|
+
rdfs: {uri: "http://www.w3.org/2000/01/rdf-schema#", class_name: "RDFS"},
|
66
|
+
rdfv: {uri: "http://www.w3.org/1999/02/22-rdf-syntax-ns#", class_name: "RDFV"},
|
67
|
+
xsd: {uri: "http://www.w3.org/2001/XMLSchema#", class_name: "XSD"},
|
68
|
+
}
|
69
|
+
|
70
|
+
# Autoload vocabularies
|
71
|
+
VOCABS.each do |id, params|
|
72
|
+
v = (params[:class_name] ||= id.to_s.upcase).to_sym
|
73
|
+
autoload v, File.expand_path("../rdf/vocab/#{id}", __FILE__)
|
72
74
|
end
|
73
75
|
|
74
76
|
# Utilities
|
@@ -79,8 +81,8 @@ module RDF
|
|
79
81
|
#
|
80
82
|
# @param (see RDF::Resource#initialize)
|
81
83
|
# @return [RDF::Resource]
|
82
|
-
def self.Resource(*args
|
83
|
-
Resource.new(*args
|
84
|
+
def self.Resource(*args)
|
85
|
+
Resource.new(*args)
|
84
86
|
end
|
85
87
|
|
86
88
|
##
|
@@ -88,8 +90,8 @@ module RDF
|
|
88
90
|
#
|
89
91
|
# @param (see RDF::Node#initialize)
|
90
92
|
# @return [RDF::Node]
|
91
|
-
def self.Node(*args
|
92
|
-
Node.new(*args
|
93
|
+
def self.Node(*args)
|
94
|
+
Node.new(*args)
|
93
95
|
end
|
94
96
|
|
95
97
|
##
|
@@ -97,8 +99,15 @@ module RDF
|
|
97
99
|
#
|
98
100
|
# @param (see RDF::URI#initialize)
|
99
101
|
# @return [RDF::URI]
|
100
|
-
def self.URI(
|
101
|
-
|
102
|
+
def self.URI(*args)
|
103
|
+
if args.first.respond_to?(:to_uri)
|
104
|
+
args.first.to_uri
|
105
|
+
elsif args.first.is_a?(Hash)
|
106
|
+
URI.new(**args.first)
|
107
|
+
else
|
108
|
+
opts = args.last.is_a?(Hash) ? args.pop : {}
|
109
|
+
URI.new(*args, **opts)
|
110
|
+
end
|
102
111
|
end
|
103
112
|
|
104
113
|
##
|
@@ -106,10 +115,10 @@ module RDF
|
|
106
115
|
#
|
107
116
|
# @param (see RDF::Literal#initialize)
|
108
117
|
# @return [RDF::Literal]
|
109
|
-
def self.Literal(literal,
|
118
|
+
def self.Literal(literal, **options)
|
110
119
|
case literal
|
111
120
|
when RDF::Literal then literal
|
112
|
-
else Literal.new(literal,
|
121
|
+
else Literal.new(literal, **options)
|
113
122
|
end
|
114
123
|
end
|
115
124
|
|
@@ -119,7 +128,7 @@ module RDF
|
|
119
128
|
# @param (see RDF::Graph#initialize)
|
120
129
|
# @return [RDF::Graph]
|
121
130
|
def self.Graph(**options, &block)
|
122
|
-
Graph.new(options, &block)
|
131
|
+
Graph.new(**options, &block)
|
123
132
|
end
|
124
133
|
|
125
134
|
##
|
@@ -171,11 +180,11 @@ module RDF
|
|
171
180
|
# @option options [RDF::Resource] :graph_name (nil)
|
172
181
|
# @return [RDF::Statement]
|
173
182
|
#
|
174
|
-
def self.Statement(*args)
|
175
|
-
if args.empty?
|
183
|
+
def self.Statement(*args, **options)
|
184
|
+
if args.empty? && options.empty?
|
176
185
|
RDF[:Statement]
|
177
186
|
else
|
178
|
-
Statement.new(*args)
|
187
|
+
Statement.new(*args, **options)
|
179
188
|
end
|
180
189
|
end
|
181
190
|
|
@@ -193,8 +202,8 @@ module RDF
|
|
193
202
|
#
|
194
203
|
# @param (see RDF::Vocabulary#initialize)
|
195
204
|
# @return [Class]
|
196
|
-
def self.StrictVocabulary(
|
197
|
-
StrictVocabulary.create(
|
205
|
+
def self.StrictVocabulary(uri)
|
206
|
+
StrictVocabulary.create(uri)
|
198
207
|
end
|
199
208
|
|
200
209
|
##
|
data/lib/rdf/changeset.rb
CHANGED
@@ -31,10 +31,11 @@ module RDF
|
|
31
31
|
#
|
32
32
|
# @since 2.0.0
|
33
33
|
class Changeset
|
34
|
-
include RDF::Mutable
|
34
|
+
# include RDF::Mutable
|
35
|
+
include RDF::Util::Coercions
|
35
36
|
|
36
37
|
##
|
37
|
-
# Applies a changeset to the given
|
38
|
+
# Applies a changeset to the given {RDF::Mutable} object.
|
38
39
|
#
|
39
40
|
# @param [RDF::Mutable] mutable
|
40
41
|
# @param [Hash{Symbol => Object}] options
|
@@ -42,7 +43,7 @@ module RDF
|
|
42
43
|
# @yieldparam [RDF::Changeset] changes
|
43
44
|
# @return [void]
|
44
45
|
def self.apply(mutable, **options, &block)
|
45
|
-
self.new(&block).apply(mutable, options)
|
46
|
+
self.new(&block).apply(mutable, **options)
|
46
47
|
end
|
47
48
|
|
48
49
|
##
|
@@ -98,6 +99,24 @@ module RDF
|
|
98
99
|
false
|
99
100
|
end
|
100
101
|
|
102
|
+
##
|
103
|
+
# Returns `false` as changesets are not {RDF::Writable}.
|
104
|
+
#
|
105
|
+
# @return [Boolean]
|
106
|
+
# @see RDF::Writable#writable?
|
107
|
+
def writable?
|
108
|
+
false
|
109
|
+
end
|
110
|
+
|
111
|
+
##
|
112
|
+
# Returns `false` as changesets are not {RDF::Mutable}.
|
113
|
+
#
|
114
|
+
# @return [Boolean]
|
115
|
+
# @see RDF::Mutable#mutable?
|
116
|
+
def mutable?
|
117
|
+
false
|
118
|
+
end
|
119
|
+
|
101
120
|
##
|
102
121
|
# Applies this changeset to the given mutable RDF::Enumerable.
|
103
122
|
#
|
@@ -127,35 +146,84 @@ module RDF
|
|
127
146
|
|
128
147
|
##
|
129
148
|
# Outputs a developer-friendly representation of this changeset to
|
130
|
-
#
|
149
|
+
# `$stderr`.
|
131
150
|
#
|
132
151
|
# @return [void]
|
133
152
|
def inspect!
|
134
153
|
$stderr.puts(self.inspect)
|
135
154
|
end
|
136
155
|
|
137
|
-
protected
|
138
|
-
|
139
156
|
##
|
140
|
-
#
|
157
|
+
# Returns the sum of both the `inserts` and `deletes` counts.
|
141
158
|
#
|
142
|
-
# @
|
143
|
-
|
144
|
-
|
145
|
-
def insert_statement(statement)
|
146
|
-
self.inserts << statement
|
159
|
+
# @return [Integer]
|
160
|
+
def count
|
161
|
+
inserts.count + deletes.count
|
147
162
|
end
|
148
163
|
|
164
|
+
# Append statements to `inserts`. Statements _should_ be constant
|
165
|
+
# as variable statements will at best be ignored or at worst raise
|
166
|
+
# an error when applied.
|
167
|
+
#
|
168
|
+
# @param statements [Enumerable, RDF::Statement] Some statements
|
169
|
+
# @return [self]
|
170
|
+
def insert(*statements)
|
171
|
+
coerce_statements(statements) do |stmts|
|
172
|
+
append_statements :inserts, stmts
|
173
|
+
end
|
174
|
+
|
175
|
+
self
|
176
|
+
end
|
177
|
+
alias_method :insert!, :insert
|
178
|
+
alias_method :<<, :insert
|
179
|
+
|
180
|
+
# Append statements to `deletes`. Statements _may_ contain
|
181
|
+
# variables, although support will depend on the {RDF::Mutable}
|
182
|
+
# target.
|
183
|
+
#
|
184
|
+
# @param statements [Enumerable, RDF::Statement] Some statements
|
185
|
+
# @return [self]
|
186
|
+
def delete(*statements)
|
187
|
+
coerce_statements(statements) do |stmts|
|
188
|
+
append_statements :deletes, stmts
|
189
|
+
end
|
190
|
+
|
191
|
+
self
|
192
|
+
end
|
193
|
+
alias_method :delete!, :delete
|
194
|
+
alias_method :>>, :delete
|
195
|
+
|
196
|
+
private
|
197
|
+
|
149
198
|
##
|
150
|
-
#
|
199
|
+
# Append statements to the appropriate target. This is a little
|
200
|
+
# shim to go in between the other shim and the target.
|
151
201
|
#
|
152
|
-
# @param
|
153
|
-
# @
|
154
|
-
#
|
155
|
-
def
|
156
|
-
|
202
|
+
# @param target [Symbol] the method to send
|
203
|
+
# @param arg [Enumerable, RDF::Statement]
|
204
|
+
#
|
205
|
+
def append_statements(target, arg)
|
206
|
+
# coerce to an enumerator
|
207
|
+
stmts = case
|
208
|
+
when arg.is_a?(RDF::Statement)
|
209
|
+
[arg]
|
210
|
+
when arg.respond_to?(:each_statement)
|
211
|
+
arg.each_statement
|
212
|
+
when arg.respond_to?(:each)
|
213
|
+
arg
|
214
|
+
else
|
215
|
+
raise ArgumentError, "Invalid statement: #{arg.class}"
|
216
|
+
end
|
217
|
+
|
218
|
+
stmts.each { |s| send(target) << s }
|
219
|
+
end
|
220
|
+
|
221
|
+
# This simply returns its argument as a query in order to trick
|
222
|
+
# {RDF::Mutable#delete} into working.
|
223
|
+
def query(stmt)
|
224
|
+
RDF::Query.new RDF::Query::Pattern.from(stmt)
|
157
225
|
end
|
158
226
|
|
159
|
-
undef_method :load
|
227
|
+
undef_method :load
|
160
228
|
end # Changeset
|
161
229
|
end # RDF
|