ld4l-foaf_rdf 0.0.2
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 +7 -0
- data/.gitignore +23 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +8 -0
- data/LICENSE.txt +14 -0
- data/README.md +134 -0
- data/Rakefile +2 -0
- data/ld4l-foaf_rdf.gemspec +42 -0
- data/lib/ld4l/foaf_rdf/configuration.rb +41 -0
- data/lib/ld4l/foaf_rdf/person.rb +11 -0
- data/lib/ld4l/foaf_rdf/version.rb +5 -0
- data/lib/ld4l/foaf_rdf.rb +53 -0
- data/spec/ld4l/foaf_rdf/configuration_spec.rb +174 -0
- data/spec/ld4l/foaf_rdf/person_rdf_spec.rb +263 -0
- data/spec/ld4l/foaf_rdf_spec.rb +53 -0
- data/spec/spec_helper.rb +20 -0
- metadata +165 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 37e6858b4b5355b65a2e3157a2db5f280ff586fe
|
4
|
+
data.tar.gz: bc856fe13754c5bf584773d7d4a1a905c95fc892
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c36fae03f1eef58e1270f7aedb48592904108d07c32c712394ab0766ea8685b46bb06fd8ec8a2f2d26e858d586db6dfe1418849b0fb295c1c0855f5ae07c4cfb
|
7
|
+
data.tar.gz: cc03aa43c5c8981576eafa823fcad3dda079514c719ed871ad93d9d2b1beefb294a4405f6d48ceca40168115678e4ba985d178116e3258b83e09ff97ae7b319d
|
data/.gitignore
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
*.bundle
|
19
|
+
*.so
|
20
|
+
*.o
|
21
|
+
*.a
|
22
|
+
mkmf.log
|
23
|
+
.idea
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ld4l-foaf-gem_no-rails
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.1.2
|
data/Gemfile
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gemspec
|
4
|
+
|
5
|
+
# GETTING FROM GEMFILE UNTIL ActiveTriples master CODE IS RELEASED (>0.4.0), THEN MOVE THIS BACK TO *.gemspec FILE
|
6
|
+
# Use active-triples for handling of triple persistence
|
7
|
+
gem 'active-triples', :git => 'git@github.com:ActiveTriples/ActiveTriples.git', :branch => 'master'
|
8
|
+
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
Copyright (c) 2014 Cornell University
|
2
|
+
|
3
|
+
##########################################################################
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
data/README.md
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
#LD4L::FoafRDF
|
2
|
+
|
3
|
+
LD4L FOAF RDF provides tools for modeling person triples based on the FOAF ontology and persisting to a triplestore.
|
4
|
+
|
5
|
+
|
6
|
+
## Installation
|
7
|
+
|
8
|
+
Temporary get the gem from github until the gem is released publicly.
|
9
|
+
|
10
|
+
Add this line to your application's Gemfile:
|
11
|
+
|
12
|
+
<!-- gem 'ld4l-foaf_rdf' -->
|
13
|
+
gem 'ld4l-foaf_rdf', '~> 0.0.3', :git => 'git@github.com:ld4l/foaf_rdf.git'
|
14
|
+
|
15
|
+
|
16
|
+
And then execute:
|
17
|
+
|
18
|
+
$ bundle install
|
19
|
+
|
20
|
+
<!--
|
21
|
+
Or install it yourself as:
|
22
|
+
|
23
|
+
$ gem install ld4l-foaf_rdf
|
24
|
+
-->
|
25
|
+
|
26
|
+
|
27
|
+
## Usage
|
28
|
+
|
29
|
+
**Caveat:** This gem is part of the LD4L Project and is being used in that context. There is no guarantee that the
|
30
|
+
code will work in a usable way outside of its use in LD4L Use Cases.
|
31
|
+
|
32
|
+
### Examples
|
33
|
+
|
34
|
+
Setup required for all examples.
|
35
|
+
```
|
36
|
+
require 'ld4l/foaf_rdf'
|
37
|
+
|
38
|
+
# create an in-memory repository
|
39
|
+
ActiveTriples::Repositories.add_repository :default, RDF::Repository.new
|
40
|
+
```
|
41
|
+
|
42
|
+
Example creating a person.
|
43
|
+
```
|
44
|
+
p = LD4L::FoafRDF::Person.new('p4')
|
45
|
+
|
46
|
+
puts p.dump :ttl
|
47
|
+
```
|
48
|
+
|
49
|
+
Example triples created for a person.
|
50
|
+
```
|
51
|
+
<http://localhost/p4> a <http://xmlns.com/foaf/0.1/Person> .
|
52
|
+
```
|
53
|
+
|
54
|
+
|
55
|
+
### Configurations
|
56
|
+
|
57
|
+
* base_uri - base URI used when new resources are created (default="http://localhost/")
|
58
|
+
* localname_minter - minter function to use for creating unique local names (default=nil which uses default minter in active_triples-local_name gem)
|
59
|
+
|
60
|
+
*Setup for all examples.*
|
61
|
+
|
62
|
+
* Restart your interactive session (e.g. irb, pry).
|
63
|
+
* Use the Setup for all examples in main Examples section above.
|
64
|
+
|
65
|
+
*Example usage using configured base_uri and default localname_minter.*
|
66
|
+
```
|
67
|
+
LD4L::FoafRDF.configure do |config|
|
68
|
+
config.base_uri = "http://example.org/"
|
69
|
+
end
|
70
|
+
|
71
|
+
p = LD4L::FoafRDF::Person.new(ActiveTriples::LocalName::Minter.generate_local_name(
|
72
|
+
LD4L::FoafRDF::Person, 10, {:prefix=>'p'} ))
|
73
|
+
|
74
|
+
puts p.dump :ttl
|
75
|
+
```
|
76
|
+
NOTE: If base_uri is not used, you need to restart your interactive environment (e.g. irb, pry). Once the
|
77
|
+
Person class is instantiated the first time, the base_uri for the class is set. If you ran
|
78
|
+
through the main Examples, the base_uri was set to the default base_uri.
|
79
|
+
|
80
|
+
|
81
|
+
*Example triples created for a person with configured base_uri and default minter.*
|
82
|
+
```
|
83
|
+
<http://example.org/p45c9c85b-25af-4c52-96a4-cf0d8b70a768> a <http://xmlns.com/foaf/0.1/Person> .
|
84
|
+
```
|
85
|
+
|
86
|
+
*Example usage using configured base_uri and configured localname_minter.*
|
87
|
+
```
|
88
|
+
LD4L::FoafRDF.configure do |config|
|
89
|
+
config.base_uri = "http://example.org/"
|
90
|
+
config.localname_minter = lambda { |prefix=""| prefix+'_configured_'+SecureRandom.uuid }
|
91
|
+
end
|
92
|
+
|
93
|
+
p = LD4L::FoafRDF::Person.new(ActiveTriples::LocalName::Minter.generate_local_name(
|
94
|
+
LD4L::FoafRDF::Person, 10, 'p',
|
95
|
+
&LD4L::FoafRDF.configuration.localname_minter ))
|
96
|
+
|
97
|
+
puts p.dump :ttl
|
98
|
+
```
|
99
|
+
NOTE: If base_uri is not used, you need to restart your interactive environment (e.g. irb, pry). Once the
|
100
|
+
Person class is instantiated the first time, the base_uri for the class is set. If you ran
|
101
|
+
through the main Examples, the base_uri was set to the default base_uri.
|
102
|
+
|
103
|
+
|
104
|
+
*Example triples created for a person with configured base_uri and configured minter.*
|
105
|
+
```
|
106
|
+
<http://example.org/p_configured_6498ba05-8b21-4e8c-b9d4-a6d5d2180966> a <http://xmlns.com/foaf/0.1/Person> .
|
107
|
+
```
|
108
|
+
|
109
|
+
|
110
|
+
### Models
|
111
|
+
|
112
|
+
The LD4L::FoafRDF gem provides model definitions using the
|
113
|
+
[ActiveTriples](https://github.com/ActiveTriples/ActiveTriples) framework extension of
|
114
|
+
[ruby-rdf/rdf](https://github.com/ruby-rdf/rdf). The following models are provided:
|
115
|
+
|
116
|
+
1. LD4L::FoafRDF::Person - Implements the Person class in the FOAF ontology. (extremely simple for holding rdf_subject only)
|
117
|
+
|
118
|
+
|
119
|
+
### Ontologies
|
120
|
+
|
121
|
+
The listed ontologies are used to represent the primary metadata about the person.
|
122
|
+
Other ontologies may also be used that aren't listed.
|
123
|
+
|
124
|
+
* [FOAF](http://xmlns.com/foaf/spec/)
|
125
|
+
* [RDF](http://www.w3.org/TR/rdf-syntax-grammar/)
|
126
|
+
|
127
|
+
|
128
|
+
## Contributing
|
129
|
+
|
130
|
+
1. Fork it ( https://github.com/[my-github-username]/ld4l-foaf_rdf/fork )
|
131
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
132
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
133
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
134
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'ld4l/foaf_rdf/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "ld4l-foaf_rdf"
|
8
|
+
spec.version = LD4L::FoafRDF::VERSION
|
9
|
+
spec.authors = ["E. Lynette Rayle"]
|
10
|
+
spec.email = ["elr37@cornell.edu"]
|
11
|
+
spec.platform = Gem::Platform::RUBY
|
12
|
+
spec.summary = %q{FOAF RDF models.}
|
13
|
+
spec.description = %q{LD4L FOAF RDF provides tools for modeling a person triples based on the FOAF ontology and persisting to a triplestore.}
|
14
|
+
spec.homepage = "https://github.com/ld4l/foaf_rdf"
|
15
|
+
spec.license = "APACHE2"
|
16
|
+
spec.required_ruby_version = '>= 2.1.2'
|
17
|
+
|
18
|
+
spec.files = `git ls-files -z`.split("\x0")
|
19
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
|
+
# spec.test_files = `git ls-files -- {spec}/*`.split("\n") # FROM ActiveTriples gemspec file
|
21
|
+
# spec.require_paths = ["lib"] # NOT IN ActiveTriples gemspec file
|
22
|
+
|
23
|
+
# spec.add_dependency('ffi', '~> 1.9.5')
|
24
|
+
spec.add_dependency('rdf', '~> 1.1')
|
25
|
+
|
26
|
+
# GETTING FROM GEMFILE UNTIL ActiveTriples master CODE IS RELEASED (>0.4.0), THEN MOVE THIS BACK TO *.gemspec FILE
|
27
|
+
# spec.add_dependency('active-triples', '~> 0.4')
|
28
|
+
|
29
|
+
spec.add_dependency('active_triples-local_name', '~> 0.1')
|
30
|
+
|
31
|
+
spec.add_development_dependency('pry')
|
32
|
+
spec.add_development_dependency('rdoc')
|
33
|
+
spec.add_development_dependency('rspec')
|
34
|
+
spec.add_development_dependency('guard-rspec')
|
35
|
+
spec.add_development_dependency('webmock')
|
36
|
+
|
37
|
+
spec.extra_rdoc_files = [
|
38
|
+
"LICENSE.txt",
|
39
|
+
"README.md"
|
40
|
+
]
|
41
|
+
end
|
42
|
+
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module LD4L
|
2
|
+
module FoafRDF
|
3
|
+
class Configuration
|
4
|
+
|
5
|
+
attr_reader :base_uri
|
6
|
+
attr_reader :localname_minter
|
7
|
+
|
8
|
+
def self.default_base_uri
|
9
|
+
@default_base_uri = "http://localhost/".freeze
|
10
|
+
end
|
11
|
+
private_class_method :default_base_uri
|
12
|
+
|
13
|
+
def self.default_localname_minter
|
14
|
+
# by setting to nil, it will use the default minter in the minter gem
|
15
|
+
@default_localname_minter = nil
|
16
|
+
end
|
17
|
+
private_class_method :default_localname_minter
|
18
|
+
|
19
|
+
def initialize
|
20
|
+
@base_uri = self.class.send(:default_base_uri)
|
21
|
+
@localname_minter = self.class.send(:default_localname_minter)
|
22
|
+
end
|
23
|
+
|
24
|
+
def base_uri=(new_base_uri)
|
25
|
+
@base_uri = new_base_uri
|
26
|
+
end
|
27
|
+
|
28
|
+
def reset_base_uri
|
29
|
+
@base_uri = self.class.send(:default_base_uri)
|
30
|
+
end
|
31
|
+
|
32
|
+
def localname_minter=(new_minter)
|
33
|
+
@localname_minter = new_minter
|
34
|
+
end
|
35
|
+
|
36
|
+
def reset_localname_minter
|
37
|
+
@localname_minter = self.class.send(:default_localname_minter)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module LD4L
|
2
|
+
module FoafRDF
|
3
|
+
class Person < ActiveTriples::Resource
|
4
|
+
|
5
|
+
class << self; attr_reader :localname_prefix end
|
6
|
+
@localname_prefix="p"
|
7
|
+
|
8
|
+
configure :type => RDF::FOAF.Person, :base_uri => LD4L::FoafRDF.configuration.base_uri, :repository => :default
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'rdf'
|
2
|
+
require 'active_triples'
|
3
|
+
require 'active_triples/local_name'
|
4
|
+
require 'linkeddata'
|
5
|
+
require 'ld4l/foaf_rdf/version'
|
6
|
+
|
7
|
+
|
8
|
+
module LD4L
|
9
|
+
module FoafRDF
|
10
|
+
|
11
|
+
# Methods for configuring the GEM
|
12
|
+
class << self
|
13
|
+
attr_accessor :configuration
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.configuration
|
17
|
+
@configuration ||= Configuration.new
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.reset
|
21
|
+
@configuration = Configuration.new
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.configure
|
25
|
+
yield(configuration)
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
# RDF vocabularies
|
30
|
+
# none - uses RDF::FOAF vocabulary
|
31
|
+
|
32
|
+
# autoload classes
|
33
|
+
autoload :Configuration, 'ld4l/foaf_rdf/configuration'
|
34
|
+
autoload :Person, 'ld4l/foaf_rdf/person'
|
35
|
+
|
36
|
+
def self.class_from_string(class_name, container_class=Kernel)
|
37
|
+
container_class = container_class.name if container_class.is_a? Module
|
38
|
+
container_parts = container_class.split('::')
|
39
|
+
(container_parts + class_name.split('::')).flatten.inject(Kernel) do |mod, class_name|
|
40
|
+
if mod == Kernel
|
41
|
+
Object.const_get(class_name)
|
42
|
+
elsif mod.const_defined? class_name.to_sym
|
43
|
+
mod.const_get(class_name)
|
44
|
+
else
|
45
|
+
container_parts.pop
|
46
|
+
class_from_string(class_name, container_parts.join('::'))
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
@@ -0,0 +1,174 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'LD4L::FoafRDF' do
|
4
|
+
|
5
|
+
describe '#configuration' do
|
6
|
+
describe "base_uri" do
|
7
|
+
context "when base_uri is not configured" do
|
8
|
+
before do
|
9
|
+
class DummyPerson < LD4L::FoafRDF::Person
|
10
|
+
configure :type => RDF::FOAF.Person, :base_uri => LD4L::FoafRDF.configuration.base_uri, :repository => :default
|
11
|
+
end
|
12
|
+
end
|
13
|
+
after do
|
14
|
+
Object.send(:remove_const, "DummyPerson") if Object
|
15
|
+
end
|
16
|
+
it "should generate a Person URI using the default base_uri" do
|
17
|
+
expect(DummyPerson.new('1').rdf_subject.to_s).to eq "http://localhost/1"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context "when uri ends with slash" do
|
22
|
+
before do
|
23
|
+
LD4L::FoafRDF.configure do |config|
|
24
|
+
config.base_uri = "http://localhost/test_slash/"
|
25
|
+
end
|
26
|
+
class DummyPerson < LD4L::FoafRDF::Person
|
27
|
+
configure :type => RDF::FOAF.Person, :base_uri => LD4L::FoafRDF.configuration.base_uri, :repository => :default
|
28
|
+
end
|
29
|
+
end
|
30
|
+
after do
|
31
|
+
Object.send(:remove_const, "DummyPerson") if Object
|
32
|
+
LD4L::FoafRDF.reset
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should generate a Person URI using the configured base_uri" do
|
36
|
+
expect(DummyPerson.new('1').rdf_subject.to_s).to eq "http://localhost/test_slash/1"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "when uri does not end with slash" do
|
41
|
+
before do
|
42
|
+
LD4L::FoafRDF.configure do |config|
|
43
|
+
config.base_uri = "http://localhost/test_no_slash"
|
44
|
+
end
|
45
|
+
class DummyPerson < LD4L::FoafRDF::Person
|
46
|
+
configure :type => RDF::FOAF.Person, :base_uri => LD4L::FoafRDF.configuration.base_uri, :repository => :default
|
47
|
+
end
|
48
|
+
end
|
49
|
+
after do
|
50
|
+
Object.send(:remove_const, "DummyPerson") if Object
|
51
|
+
LD4L::FoafRDF.reset
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should generate a Person URI using the configured base_uri" do
|
55
|
+
expect(DummyPerson.new('1').rdf_subject.to_s).to eq "http://localhost/test_no_slash/1"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should return value of configured base_uri" do
|
60
|
+
LD4L::FoafRDF.configure do |config|
|
61
|
+
config.base_uri = "http://localhost/test_config/"
|
62
|
+
end
|
63
|
+
expect(LD4L::FoafRDF.configuration.base_uri).to eq "http://localhost/test_config/"
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should return default base_uri when base_uri is reset" do
|
67
|
+
LD4L::FoafRDF.configure do |config|
|
68
|
+
config.base_uri = "http://localhost/test_config/"
|
69
|
+
end
|
70
|
+
expect(LD4L::FoafRDF.configuration.base_uri).to eq "http://localhost/test_config/"
|
71
|
+
LD4L::FoafRDF.configuration.reset_base_uri
|
72
|
+
expect(LD4L::FoafRDF.configuration.base_uri).to eq "http://localhost/"
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should return default base_uri when all configs are reset" do
|
76
|
+
LD4L::FoafRDF.configure do |config|
|
77
|
+
config.base_uri = "http://localhost/test_config/"
|
78
|
+
end
|
79
|
+
expect(LD4L::FoafRDF.configuration.base_uri).to eq "http://localhost/test_config/"
|
80
|
+
LD4L::FoafRDF.reset
|
81
|
+
expect(LD4L::FoafRDF.configuration.base_uri).to eq "http://localhost/"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe "localname_minter" do
|
86
|
+
context "when minter is nil" do
|
87
|
+
before do
|
88
|
+
class DummyPerson < LD4L::FoafRDF::Person
|
89
|
+
configure :type => RDF::FOAF.Person, :base_uri => LD4L::FoafRDF.configuration.base_uri, :repository => :default
|
90
|
+
end
|
91
|
+
end
|
92
|
+
after do
|
93
|
+
Object.send(:remove_const, "DummyPerson") if Object
|
94
|
+
end
|
95
|
+
it "should use default minter in minter gem" do
|
96
|
+
localname = ActiveTriples::LocalName::Minter.generate_local_name(
|
97
|
+
LD4L::FoafRDF::Person, 10, {:prefix=>'default_'},
|
98
|
+
LD4L::FoafRDF.configuration.localname_minter )
|
99
|
+
expect(localname).to be_kind_of String
|
100
|
+
expect(localname.size).to eq 44
|
101
|
+
expect(localname).to match /default_[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}/
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
context "when minter is configured" do
|
106
|
+
before do
|
107
|
+
LD4L::FoafRDF.configure do |config|
|
108
|
+
config.localname_minter = lambda { |prefix=""| prefix+'_configured_'+SecureRandom.uuid }
|
109
|
+
end
|
110
|
+
class DummyPerson < LD4L::FoafRDF::Person
|
111
|
+
configure :type => RDF::FOAF.Person, :base_uri => LD4L::FoafRDF.configuration.base_uri, :repository => :default
|
112
|
+
end
|
113
|
+
end
|
114
|
+
after do
|
115
|
+
Object.send(:remove_const, "DummyPerson") if Object
|
116
|
+
LD4L::FoafRDF.reset
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should generate an Person URI using the configured localname_minter" do
|
120
|
+
localname = ActiveTriples::LocalName::Minter.generate_local_name(
|
121
|
+
LD4L::FoafRDF::Person, 10,
|
122
|
+
LD4L::FoafRDF::Person.localname_prefix,
|
123
|
+
&LD4L::FoafRDF.configuration.localname_minter )
|
124
|
+
expect(localname).to be_kind_of String
|
125
|
+
expect(localname.size).to eq 49
|
126
|
+
expect(localname).to match /p_configured_[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}/
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
|
133
|
+
describe "LD4L::FoafRDF::Configuration" do
|
134
|
+
describe "#base_uri" do
|
135
|
+
it "should default to localhost" do
|
136
|
+
expect(LD4L::FoafRDF::Configuration.new.base_uri).to eq "http://localhost/"
|
137
|
+
end
|
138
|
+
|
139
|
+
it "should be settable" do
|
140
|
+
config = LD4L::FoafRDF::Configuration.new
|
141
|
+
config.base_uri = "http://localhost/test"
|
142
|
+
expect(config.base_uri).to eq "http://localhost/test"
|
143
|
+
end
|
144
|
+
|
145
|
+
it "should be re-settable" do
|
146
|
+
config = LD4L::FoafRDF::Configuration.new
|
147
|
+
config.base_uri = "http://localhost/test/again"
|
148
|
+
expect(config.base_uri).to eq "http://localhost/test/again"
|
149
|
+
config.reset_base_uri
|
150
|
+
expect(config.base_uri).to eq "http://localhost/"
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
describe "#localname_minter" do
|
155
|
+
it "should default to nil" do
|
156
|
+
expect(LD4L::FoafRDF::Configuration.new.localname_minter).to eq nil
|
157
|
+
end
|
158
|
+
|
159
|
+
it "should be settable" do
|
160
|
+
config = LD4L::FoafRDF::Configuration.new
|
161
|
+
config.localname_minter = lambda { |prefix=""| prefix+'_configured_'+SecureRandom.uuid }
|
162
|
+
expect(config.localname_minter).to be_kind_of Proc
|
163
|
+
end
|
164
|
+
|
165
|
+
it "should be re-settable" do
|
166
|
+
config = LD4L::FoafRDF::Configuration.new
|
167
|
+
config.localname_minter = lambda { |prefix=""| prefix+'_configured_'+SecureRandom.uuid }
|
168
|
+
expect(config.localname_minter).to be_kind_of Proc
|
169
|
+
config.reset_localname_minter
|
170
|
+
expect(config.localname_minter).to eq nil
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
@@ -0,0 +1,263 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'LD4L::FoafRDF::Person' do
|
4
|
+
# it_behaves_like 'an ActiveTriple::Resource'
|
5
|
+
|
6
|
+
subject { LD4L::FoafRDF::Person.new } # new virtual collection without a subject
|
7
|
+
|
8
|
+
describe 'rdf_subject' do
|
9
|
+
it "should be a blank node if we haven't set it" do
|
10
|
+
expect(subject.rdf_subject.node?).to be true
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should be settable when it has not been set yet" do
|
14
|
+
subject.set_subject! RDF::URI('http://example.org/moomin')
|
15
|
+
expect(subject.rdf_subject).to eq RDF::URI('http://example.org/moomin')
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should append to base URI when setting to non-URI subject" do
|
19
|
+
subject.set_subject! '123'
|
20
|
+
expect(subject.rdf_subject).to eq RDF::URI("#{LD4L::FoafRDF::Person.base_uri}123")
|
21
|
+
end
|
22
|
+
|
23
|
+
describe 'when changing subject' do
|
24
|
+
before do
|
25
|
+
subject << RDF::Statement.new(subject.rdf_subject, RDF::DC.title, RDF::Literal('Comet in Moominland'))
|
26
|
+
subject << RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::DC.isPartOf, subject.rdf_subject)
|
27
|
+
subject << RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::DC.relation, 'http://example.org/moomin_land')
|
28
|
+
subject.set_subject! RDF::URI('http://example.org/moomin')
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should update graph subjects' do
|
32
|
+
expect(subject.has_statement?(RDF::Statement.new(subject.rdf_subject, RDF::DC.title, RDF::Literal('Comet in Moominland')))).to be true
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'should update graph objects' do
|
36
|
+
expect(subject.has_statement?(RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::DC.isPartOf, subject.rdf_subject))).to be true
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'should leave other uris alone' do
|
40
|
+
expect(subject.has_statement?(RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::DC.relation, 'http://example.org/moomin_land'))).to be true
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe 'created with URI subject' do
|
45
|
+
before do
|
46
|
+
subject.set_subject! RDF::URI('http://example.org/moomin')
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'should not be settable' do
|
50
|
+
expect{ subject.set_subject! RDF::URI('http://example.org/moomin2') }.to raise_error
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
# -------------------------------------------------
|
57
|
+
# START -- Test attributes specific to this model
|
58
|
+
# -------------------------------------------------
|
59
|
+
|
60
|
+
describe 'type' do
|
61
|
+
it "should be an RDF::FOAF.Person" do
|
62
|
+
expect(subject.type.first.value).to eq RDF::FOAF.Person.value
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe '#localname_prefix' do
|
67
|
+
it "should return default prefix" do
|
68
|
+
prefix = LD4L::FoafRDF::Person.localname_prefix
|
69
|
+
expect(prefix).to eq "p"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
# -----------------------------------------------
|
74
|
+
# END -- Test attributes specific to this model
|
75
|
+
# -----------------------------------------------
|
76
|
+
|
77
|
+
|
78
|
+
describe "#persisted?" do
|
79
|
+
context 'with a repository' do
|
80
|
+
before do
|
81
|
+
# Create inmemory repository
|
82
|
+
repository = RDF::Repository.new
|
83
|
+
allow(subject).to receive(:repository).and_return(repository)
|
84
|
+
end
|
85
|
+
|
86
|
+
context "when the object is new" do
|
87
|
+
it "should return false" do
|
88
|
+
expect(subject).not_to be_persisted
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
context "when it is saved" do
|
93
|
+
before do
|
94
|
+
subject.persist!
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should return true" do
|
98
|
+
expect(subject).to be_persisted
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
describe "#persist!" do
|
105
|
+
context "when the repository is set" do
|
106
|
+
context "and the item is not a blank node" do
|
107
|
+
|
108
|
+
subject {LD4L::FoafRDF::Person.new("123")}
|
109
|
+
|
110
|
+
before do
|
111
|
+
# Create inmemory repository
|
112
|
+
@repo = RDF::Repository.new
|
113
|
+
allow(subject.class).to receive(:repository).and_return(nil)
|
114
|
+
allow(subject).to receive(:repository).and_return(@repo)
|
115
|
+
subject.persist!
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should persist to the repository" do
|
119
|
+
expect(@repo.statements.first).to eq subject.statements.first
|
120
|
+
end
|
121
|
+
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
describe '#destroy!' do
|
127
|
+
before do
|
128
|
+
subject << RDF::Statement(RDF::DC.LicenseDocument, RDF::DC.title, 'LICENSE')
|
129
|
+
end
|
130
|
+
|
131
|
+
subject { LD4L::FoafRDF::Person.new('456')}
|
132
|
+
|
133
|
+
it 'should return true' do
|
134
|
+
expect(subject.destroy!).to be true
|
135
|
+
expect(subject.destroy).to be true
|
136
|
+
end
|
137
|
+
|
138
|
+
it 'should delete the graph' do
|
139
|
+
subject.destroy
|
140
|
+
expect(subject).to be_empty
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
describe '#type' do
|
145
|
+
it 'should return the type configured on the parent class' do
|
146
|
+
expect(subject.type).to eq [LD4L::FoafRDF::Person.type]
|
147
|
+
end
|
148
|
+
|
149
|
+
it 'should set the type' do
|
150
|
+
subject.type = RDF::URI('http://example.org/AnotherClass')
|
151
|
+
expect(subject.type).to eq [RDF::URI('http://example.org/AnotherClass')]
|
152
|
+
end
|
153
|
+
|
154
|
+
it 'should be the type in the graph' do
|
155
|
+
subject.query(:subject => subject.rdf_subject, :predicate => RDF.type).statements do |s|
|
156
|
+
expect(s.object).to eq RDF::URI('http://example.org/AnotherClass')
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
describe '#rdf_label' do
|
162
|
+
subject {LD4L::FoafRDF::Person.new("123")}
|
163
|
+
|
164
|
+
it 'should return an array of label values' do
|
165
|
+
expect(subject.rdf_label).to be_kind_of Array
|
166
|
+
end
|
167
|
+
|
168
|
+
it 'should return the default label as URI when no title property exists' do
|
169
|
+
expect(subject.rdf_label).to eq ["#{LD4L::FoafRDF::Person.base_uri}123"]
|
170
|
+
end
|
171
|
+
|
172
|
+
it 'should prioritize configured label values' do
|
173
|
+
custom_label = RDF::URI('http://example.org/custom_label')
|
174
|
+
subject.class.configure :rdf_label => custom_label
|
175
|
+
subject << RDF::Statement(subject.rdf_subject, custom_label, RDF::Literal('New Label'))
|
176
|
+
expect(subject.rdf_label).to eq ['New Label']
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
describe '#solrize' do
|
181
|
+
it 'should return a label for bnodes' do
|
182
|
+
expect(subject.solrize).to eq subject.rdf_label
|
183
|
+
end
|
184
|
+
|
185
|
+
it 'should return a string of the resource uri' do
|
186
|
+
subject.set_subject! 'http://example.org/moomin'
|
187
|
+
expect(subject.solrize).to eq 'http://example.org/moomin'
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
describe 'big complex graphs' do
|
192
|
+
before do
|
193
|
+
class DummyPerson < ActiveTriples::Resource
|
194
|
+
configure :type => RDF::URI('http://example.org/Person')
|
195
|
+
property :foafname, :predicate => RDF::FOAF.name
|
196
|
+
property :publications, :predicate => RDF::FOAF.publications, :class_name => 'DummyDocument'
|
197
|
+
property :knows, :predicate => RDF::FOAF.knows, :class_name => DummyPerson
|
198
|
+
end
|
199
|
+
|
200
|
+
class DummyDocument < ActiveTriples::Resource
|
201
|
+
configure :type => RDF::URI('http://example.org/Document')
|
202
|
+
property :title, :predicate => RDF::DC.title
|
203
|
+
property :creator, :predicate => RDF::DC.creator, :class_name => 'DummyPerson'
|
204
|
+
end
|
205
|
+
|
206
|
+
LD4L::FoafRDF::Person.property :item, :predicate => RDF::DC.relation, :class_name => DummyDocument
|
207
|
+
end
|
208
|
+
|
209
|
+
subject { LD4L::FoafRDF::Person.new }
|
210
|
+
|
211
|
+
let (:document1) do
|
212
|
+
d = DummyDocument.new
|
213
|
+
d.title = 'Document One'
|
214
|
+
d
|
215
|
+
end
|
216
|
+
|
217
|
+
let (:document2) do
|
218
|
+
d = DummyDocument.new
|
219
|
+
d.title = 'Document Two'
|
220
|
+
d
|
221
|
+
end
|
222
|
+
|
223
|
+
let (:person1) do
|
224
|
+
p = DummyPerson.new
|
225
|
+
p.foafname = 'Alice'
|
226
|
+
p
|
227
|
+
end
|
228
|
+
|
229
|
+
let (:person2) do
|
230
|
+
p = DummyPerson.new
|
231
|
+
p.foafname = 'Bob'
|
232
|
+
p
|
233
|
+
end
|
234
|
+
|
235
|
+
let (:data) { <<END
|
236
|
+
_:1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/SomeClass> .
|
237
|
+
_:1 <http://purl.org/dc/terms/relation> _:2 .
|
238
|
+
_:2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/Document> .
|
239
|
+
_:2 <http://purl.org/dc/terms/title> "Document One" .
|
240
|
+
_:2 <http://purl.org/dc/terms/creator> _:3 .
|
241
|
+
_:2 <http://purl.org/dc/terms/creator> _:4 .
|
242
|
+
_:4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/Person> .
|
243
|
+
_:4 <http://xmlns.com/foaf/0.1/name> "Bob" .
|
244
|
+
_:3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/Person> .
|
245
|
+
_:3 <http://xmlns.com/foaf/0.1/name> "Alice" .
|
246
|
+
_:3 <http://xmlns.com/foaf/0.1/knows> _:4 ."
|
247
|
+
END
|
248
|
+
}
|
249
|
+
|
250
|
+
after do
|
251
|
+
Object.send(:remove_const, "DummyDocument")
|
252
|
+
Object.send(:remove_const, "DummyPerson")
|
253
|
+
end
|
254
|
+
|
255
|
+
it 'should allow access to deep nodes' do
|
256
|
+
document1.creator = [person1, person2]
|
257
|
+
document2.creator = person1
|
258
|
+
person1.knows = person2
|
259
|
+
subject.item = [document1]
|
260
|
+
expect(subject.item.first.creator.first.knows.first.foafname).to eq ['Bob']
|
261
|
+
end
|
262
|
+
end
|
263
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "LD4L::FoafRDF" do
|
4
|
+
describe "#configure" do
|
5
|
+
|
6
|
+
before do
|
7
|
+
LD4L::FoafRDF.configure do |config|
|
8
|
+
config.base_uri = "http://localhost/test/"
|
9
|
+
config.localname_minter = lambda { |prefix=""| prefix+'_configured_'+SecureRandom.uuid }
|
10
|
+
end
|
11
|
+
class DummyPerson < LD4L::FoafRDF::Person
|
12
|
+
configure :type => RDF::FOAF.Person, :base_uri => LD4L::FoafRDF.configuration.base_uri, :repository => :default
|
13
|
+
end
|
14
|
+
end
|
15
|
+
after do
|
16
|
+
LD4L::FoafRDF.reset
|
17
|
+
Object.send(:remove_const, "DummyPerson") if Object
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should return configured value" do
|
21
|
+
config = LD4L::FoafRDF.configuration
|
22
|
+
expect(config.base_uri).to eq "http://localhost/test/"
|
23
|
+
expect(config.localname_minter).to be_kind_of Proc
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should use configured value in Person sub-class" do
|
27
|
+
p = DummyPerson.new('1')
|
28
|
+
expect(p.rdf_subject.to_s).to eq "http://localhost/test/1"
|
29
|
+
|
30
|
+
p = DummyPerson.new(ActiveTriples::LocalName::Minter.generate_local_name(
|
31
|
+
LD4L::FoafRDF::Person, 10, 'foo',
|
32
|
+
&LD4L::FoafRDF.configuration.localname_minter ))
|
33
|
+
expect(p.rdf_subject.to_s.size).to eq 73
|
34
|
+
expect(p.rdf_subject.to_s).to match /http:\/\/localhost\/test\/foo_configured_[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}/
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe ".reset" do
|
39
|
+
before :each do
|
40
|
+
LD4L::FoafRDF.configure do |config|
|
41
|
+
config.base_uri = "http://localhost/test/"
|
42
|
+
config.localname_minter = lambda { |prefix=""| prefix+'_configured_'+SecureRandom.uuid }
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
it "resets the configuration" do
|
47
|
+
LD4L::FoafRDF.reset
|
48
|
+
config = LD4L::FoafRDF.configuration
|
49
|
+
expect(config.base_uri).to eq "http://localhost/"
|
50
|
+
expect(config.localname_minter).to eq nil
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
Bundler.setup
|
3
|
+
|
4
|
+
require 'ld4l/foaf_rdf'
|
5
|
+
require 'pry'
|
6
|
+
|
7
|
+
Dir['./spec/support/**/*.rb'].each { |f| require f }
|
8
|
+
|
9
|
+
RSpec.configure do |config|
|
10
|
+
config.color = true
|
11
|
+
config.tty = true
|
12
|
+
|
13
|
+
# Uncomment the following line to get errors and backtrace for deprecation warnings
|
14
|
+
# config.raise_errors_for_deprecations!
|
15
|
+
|
16
|
+
# Use the specified formatter
|
17
|
+
config.formatter = :progress
|
18
|
+
end
|
19
|
+
|
20
|
+
ActiveTriples::Repositories.add_repository :default, RDF::Repository.new
|
metadata
ADDED
@@ -0,0 +1,165 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ld4l-foaf_rdf
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- E. Lynette Rayle
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-01-07 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rdf
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: active_triples-local_name
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.1'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.1'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rdoc
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: guard-rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: webmock
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: LD4L FOAF RDF provides tools for modeling a person triples based on the
|
112
|
+
FOAF ontology and persisting to a triplestore.
|
113
|
+
email:
|
114
|
+
- elr37@cornell.edu
|
115
|
+
executables: []
|
116
|
+
extensions: []
|
117
|
+
extra_rdoc_files:
|
118
|
+
- LICENSE.txt
|
119
|
+
- README.md
|
120
|
+
files:
|
121
|
+
- ".gitignore"
|
122
|
+
- ".ruby-gemset"
|
123
|
+
- ".ruby-version"
|
124
|
+
- Gemfile
|
125
|
+
- LICENSE.txt
|
126
|
+
- README.md
|
127
|
+
- Rakefile
|
128
|
+
- ld4l-foaf_rdf.gemspec
|
129
|
+
- lib/ld4l/foaf_rdf.rb
|
130
|
+
- lib/ld4l/foaf_rdf/configuration.rb
|
131
|
+
- lib/ld4l/foaf_rdf/person.rb
|
132
|
+
- lib/ld4l/foaf_rdf/version.rb
|
133
|
+
- spec/ld4l/foaf_rdf/configuration_spec.rb
|
134
|
+
- spec/ld4l/foaf_rdf/person_rdf_spec.rb
|
135
|
+
- spec/ld4l/foaf_rdf_spec.rb
|
136
|
+
- spec/spec_helper.rb
|
137
|
+
homepage: https://github.com/ld4l/foaf_rdf
|
138
|
+
licenses:
|
139
|
+
- APACHE2
|
140
|
+
metadata: {}
|
141
|
+
post_install_message:
|
142
|
+
rdoc_options: []
|
143
|
+
require_paths:
|
144
|
+
- lib
|
145
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
146
|
+
requirements:
|
147
|
+
- - ">="
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: 2.1.2
|
150
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
|
+
requirements:
|
152
|
+
- - ">="
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: '0'
|
155
|
+
requirements: []
|
156
|
+
rubyforge_project:
|
157
|
+
rubygems_version: 2.2.2
|
158
|
+
signing_key:
|
159
|
+
specification_version: 4
|
160
|
+
summary: FOAF RDF models.
|
161
|
+
test_files:
|
162
|
+
- spec/ld4l/foaf_rdf/configuration_spec.rb
|
163
|
+
- spec/ld4l/foaf_rdf/person_rdf_spec.rb
|
164
|
+
- spec/ld4l/foaf_rdf_spec.rb
|
165
|
+
- spec/spec_helper.rb
|