jekyll-rdf 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/jekyll-rdf.rb +19 -0
- data/lib/jekyll/drops/rdf_literal.rb +18 -0
- data/lib/jekyll/drops/rdf_resource.rb +153 -0
- data/lib/jekyll/drops/rdf_statement.rb +37 -0
- data/lib/jekyll/drops/rdf_term.rb +60 -0
- data/lib/jekyll/filters/rdf_property.rb +22 -0
- data/lib/jekyll/filters/rdf_property_list.rb +16 -0
- data/lib/jekyll/filters/rdf_sparql_query.rb +20 -0
- data/lib/jekyll/rdf_main_generator.rb +85 -0
- data/lib/jekyll/rdf_page_data.rb +35 -0
- data/lib/jekyll/rdf_template_mapper.rb +40 -0
- metadata +186 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 110cb3800452fb5622a7f01dd39c367ed6d4a181
|
4
|
+
data.tar.gz: d7bd153e3055b51569e85fcaae039db8b44e60ad
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8ace2caa161e8103fdb6d2de6f60fb570a0103fba2c9e6a16e571e68fbab0ba67d7a6d865d97aa5fa470d851998edaa60853015278824b74660c60dc7596c2ee
|
7
|
+
data.tar.gz: eeef2100f84e9d3b2272ed15e41f95f8386d8319e87068102ea29d50dd529c1ab35cbea5c48e0a4761511b0aef64fa98e6f082389a48bf8ac67deca61cdbb08c
|
data/lib/jekyll-rdf.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
##
|
2
|
+
# JekyllRdf converts RDF data into static websites
|
3
|
+
#
|
4
|
+
#
|
5
|
+
require 'jekyll'
|
6
|
+
require 'linkeddata'
|
7
|
+
require 'sparql'
|
8
|
+
|
9
|
+
|
10
|
+
require 'jekyll/drops/rdf_term'
|
11
|
+
require 'jekyll/drops/rdf_statement'
|
12
|
+
require 'jekyll/drops/rdf_literal'
|
13
|
+
require 'jekyll/drops/rdf_resource'
|
14
|
+
require 'jekyll/filters/rdf_sparql_query'
|
15
|
+
require 'jekyll/filters/rdf_property'
|
16
|
+
require 'jekyll/filters/rdf_property_list'
|
17
|
+
require 'jekyll/rdf_main_generator'
|
18
|
+
require 'jekyll/rdf_page_data'
|
19
|
+
require 'jekyll/rdf_template_mapper'
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module Drops
|
3
|
+
|
4
|
+
##
|
5
|
+
# Represents an RDF literal to the Liquid template engine
|
6
|
+
#
|
7
|
+
class RdfLiteral < RdfTerm
|
8
|
+
|
9
|
+
##
|
10
|
+
# Return a user-facing string representing this RdfLiteral
|
11
|
+
#
|
12
|
+
def name
|
13
|
+
term.to_s
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,153 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module Drops
|
3
|
+
class RdfResource < RdfTerm
|
4
|
+
|
5
|
+
##
|
6
|
+
# The Jekyll::Site of this Jekyll::Drops::RdfResource
|
7
|
+
#
|
8
|
+
attr_accessor :site
|
9
|
+
|
10
|
+
##
|
11
|
+
# The Jekyll::RdfPageData of this Jekyll::Drops::RdfResource
|
12
|
+
#
|
13
|
+
attr_accessor :page
|
14
|
+
|
15
|
+
##
|
16
|
+
# Return a list of Jekyll::Drops::RdfStatements whose subject, predicate or object is the RDF resource represented by the receiver
|
17
|
+
#
|
18
|
+
def statements
|
19
|
+
@statements ||= statements_as_subject + statements_as_predicate + statements_as_object
|
20
|
+
end
|
21
|
+
|
22
|
+
##
|
23
|
+
# Return a list of Jekyll::Drops::RdfStatements whose subject is the RDF resource represented by the receiver
|
24
|
+
#
|
25
|
+
def statements_as_subject
|
26
|
+
@statements_as_subject ||= statements_as :subject
|
27
|
+
end
|
28
|
+
|
29
|
+
##
|
30
|
+
# Return a list of Jekyll::Drops::RdfStatements whose predicate is the RDF resource represented by the receiver
|
31
|
+
#
|
32
|
+
def statements_as_predicate
|
33
|
+
@statements_as_predicate ||= statements_as :predicate
|
34
|
+
end
|
35
|
+
|
36
|
+
##
|
37
|
+
# Return a list of Jekyll::Drops::RdfStatements whose object is the RDF resource represented by the receiver
|
38
|
+
#
|
39
|
+
def statements_as_object
|
40
|
+
@statements_as_object ||= statements_as :object
|
41
|
+
end
|
42
|
+
|
43
|
+
##
|
44
|
+
# Return a filename corresponding to the RDF resource represented by the receiver. The mapping between RDF resources and filenames should be bijective.
|
45
|
+
#
|
46
|
+
def filename(domain_name, baseurl)
|
47
|
+
@filename ||= generate_file_name(domain_name, baseurl)
|
48
|
+
end
|
49
|
+
|
50
|
+
##
|
51
|
+
# types finds the type and superclasses of the resource
|
52
|
+
#
|
53
|
+
def types
|
54
|
+
@types ||= begin
|
55
|
+
types = [ term.to_s ]
|
56
|
+
t = statements_as(:subject).find{ |s| s.predicate.term.to_s=="http://www.w3.org/1999/02/22-rdf-syntax-ns#type" }
|
57
|
+
if t
|
58
|
+
types << t.object.term.to_s
|
59
|
+
t = t.object
|
60
|
+
while t.super_class
|
61
|
+
s = t.super_class
|
62
|
+
types << s.term.to_s
|
63
|
+
t = s
|
64
|
+
end
|
65
|
+
end
|
66
|
+
types
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
##
|
71
|
+
# Return the first super class resource of the receiver or nil, if no super class resource can be found
|
72
|
+
#
|
73
|
+
def super_class
|
74
|
+
s = statements_as(:subject).find{ |s| s.predicate.term.to_s=="http://www.w3.org/2000/01/rdf-schema#subClassOf" }
|
75
|
+
if s
|
76
|
+
s.object
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
##
|
81
|
+
# Return a user-facing string representing this RdfResource
|
82
|
+
#
|
83
|
+
def name
|
84
|
+
@name ||= begin
|
85
|
+
n = statements_as(:subject).find{ |s| s.predicate.term.to_s=="http://xmlns.com/foaf/0.1/name" }
|
86
|
+
n ? n.object.name : term.to_s
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
##
|
91
|
+
# Return the URL of the page representing this RdfResource
|
92
|
+
#
|
93
|
+
def page_url
|
94
|
+
page ? page.url.chomp('index.html') : term.to_s
|
95
|
+
end
|
96
|
+
|
97
|
+
##
|
98
|
+
# Return a list of RDF statements where the represented RDF resource plays a role
|
99
|
+
# * +role+ - which role the represented RDF resource should play:
|
100
|
+
# :subject ::
|
101
|
+
# Return a list of Jekyll::Drops::RdfStatements whose subject is the RDF resource represented by the receiver
|
102
|
+
# :predicate ::
|
103
|
+
# Return a list of Jekyll::Drops::RdfStatements whose predicate is the RDF resource represented by the receiver
|
104
|
+
# :object ::
|
105
|
+
# Return a list of Jekyll::Drops::RdfStatements whose object is the RDF resource represented by the receiver
|
106
|
+
#
|
107
|
+
def statements_as(role)
|
108
|
+
graph.query(role.to_sym => term).map do |statement|
|
109
|
+
RdfStatement.new(statement, graph, site)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
private
|
114
|
+
##
|
115
|
+
# Generate a filename corresponding to the RDF resource represented by the receiver. The mapping between RDF resources and filenames should be bijective. If the url of the rdf is the same as of the hosting site it will be omitted.
|
116
|
+
# * +domain_name+
|
117
|
+
#
|
118
|
+
def generate_file_name(domain_name, baseurl)
|
119
|
+
begin
|
120
|
+
uri = URI::split(term.to_s)
|
121
|
+
file_name = "rdfsites/" # in this directory all external RDF sites are stored
|
122
|
+
if (uri[2] == domain_name)
|
123
|
+
file_name = ""
|
124
|
+
uri[0] = nil
|
125
|
+
uri[2] = nil
|
126
|
+
uri[5] = uri[5].sub(baseurl,'')
|
127
|
+
end
|
128
|
+
(0..8).each do |i|
|
129
|
+
if uri[i]
|
130
|
+
case i
|
131
|
+
when 2
|
132
|
+
file_name += "#{uri[i].gsub('.','/')}/"
|
133
|
+
when 8
|
134
|
+
file_name = file_name[0..-2]
|
135
|
+
file_name += "##{uri[i]}"
|
136
|
+
else
|
137
|
+
file_name += "#{uri[i]}/"
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
unless file_name[-1] == '/'
|
142
|
+
file_name += '/'
|
143
|
+
end
|
144
|
+
file_name += 'index.html'
|
145
|
+
file_name.gsub('//','/')
|
146
|
+
rescue URI::InvalidURIError
|
147
|
+
file_name = "rdfsites/blanknode/#{term.to_s}/index.html"
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module Drops
|
3
|
+
|
4
|
+
##
|
5
|
+
# Represents an RDF statement to the Liquid template engine
|
6
|
+
#
|
7
|
+
class RdfStatement < Liquid::Drop
|
8
|
+
|
9
|
+
##
|
10
|
+
# The subject RdfTerm of this RDF statement
|
11
|
+
#
|
12
|
+
attr_reader :subject
|
13
|
+
|
14
|
+
##
|
15
|
+
# The predicate RdfTerm of this RDF statement
|
16
|
+
#
|
17
|
+
attr_reader :predicate
|
18
|
+
|
19
|
+
##
|
20
|
+
# The object RdfTerm of this RDF statement
|
21
|
+
#
|
22
|
+
attr_reader :object
|
23
|
+
|
24
|
+
##
|
25
|
+
# Create a new Jekyll::Drops::RdfStatement
|
26
|
+
#
|
27
|
+
# * +statement+ - The statement to be represented
|
28
|
+
# * +graph+ - The RDF::Graph which contains the +statement+
|
29
|
+
# * +site+ - The Jekyll::Site to be enriched
|
30
|
+
def initialize(statement, graph, site)
|
31
|
+
@subject ||= Jekyll::Drops::RdfTerm.build_term_drop(statement.subject, graph, site)
|
32
|
+
@predicate ||= Jekyll::Drops::RdfTerm.build_term_drop(statement.predicate, graph, site)
|
33
|
+
@object ||= Jekyll::Drops::RdfTerm.build_term_drop(statement.object, graph, site)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module Drops
|
3
|
+
|
4
|
+
##
|
5
|
+
# Represents an RDF term to the Liquid template engine
|
6
|
+
#
|
7
|
+
class RdfTerm < Liquid::Drop
|
8
|
+
|
9
|
+
##
|
10
|
+
# The represented RDF term
|
11
|
+
#
|
12
|
+
attr_reader :term
|
13
|
+
|
14
|
+
##
|
15
|
+
# The RDF::Graph which contains the represented +term+
|
16
|
+
#
|
17
|
+
attr_reader :graph
|
18
|
+
|
19
|
+
##
|
20
|
+
# Create a new Jekyll::Drops::RdfTerm
|
21
|
+
#
|
22
|
+
# * +term+ - The term to be represented
|
23
|
+
# * +graph+ - The RDF::Graph which contains the represented +term+
|
24
|
+
#
|
25
|
+
def initialize(term, graph)
|
26
|
+
@term ||= term
|
27
|
+
@graph ||= graph
|
28
|
+
end
|
29
|
+
|
30
|
+
##
|
31
|
+
# Convert this RdfTerm into a human-readable string
|
32
|
+
#
|
33
|
+
def to_s
|
34
|
+
name
|
35
|
+
end
|
36
|
+
|
37
|
+
##
|
38
|
+
# Convert an RDF term into a new Jekyll::Drops::RdfTerm
|
39
|
+
#
|
40
|
+
# * +term+ - The term to be represented
|
41
|
+
# * +graph+ - The RDF::Graph which contains the represented +term+
|
42
|
+
# * +site+ - The Jekyll::Site to be enriched
|
43
|
+
#
|
44
|
+
def self.build_term_drop(term, graph, site)
|
45
|
+
case term
|
46
|
+
when RDF::URI, RDF::Node
|
47
|
+
if site
|
48
|
+
resource = site.data['resources'].find{ |r| r.term == term }
|
49
|
+
end
|
50
|
+
resource ? resource : RdfResource.new(term, graph)
|
51
|
+
when RDF::Literal
|
52
|
+
return RdfLiteral.new(term, graph)
|
53
|
+
else
|
54
|
+
return nil
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module RdfProperty
|
3
|
+
|
4
|
+
def rdf_property(input, params)
|
5
|
+
return input unless input.is_a?(Jekyll::Drops::RdfResource)
|
6
|
+
begin
|
7
|
+
params = params.split(",")
|
8
|
+
results = input.page.data['rdf'].statements_as_subject.select{ |s| s.predicate.term.to_s == params[0] }
|
9
|
+
lang = params[1] || input.site.config['language']
|
10
|
+
if results.count > 1 && results.first.object.term.is_a?(RDF::Term)
|
11
|
+
p = results.find{ |s| s.object.term.language == lang }
|
12
|
+
end
|
13
|
+
p = results.first unless p
|
14
|
+
return unless p
|
15
|
+
(p.object.name).to_s
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
Liquid::Template.register_filter(Jekyll::RdfProperty)
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module RdfPropertyList
|
3
|
+
|
4
|
+
def rdf_property_list(input, property)
|
5
|
+
return input unless input.is_a?(Jekyll::Drops::RdfResource)
|
6
|
+
begin
|
7
|
+
result = input.page.data['rdf'].statements_as_subject.select{ |s| s.predicate.term.to_s == property }.map{|p| p.object.name}
|
8
|
+
return unless result
|
9
|
+
result
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
Liquid::Template.register_filter(Jekyll::RdfPropertyList)
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module RdfSparqlQuery
|
3
|
+
|
4
|
+
def sparql_query(input, query)
|
5
|
+
return input unless input.is_a?(Jekyll::Drops::RdfResource)
|
6
|
+
query.gsub!('?resourceUri', "<#{input.term.to_s}>")
|
7
|
+
begin
|
8
|
+
result = input.site.data['sparql'].query(query).map do |solution|
|
9
|
+
hsh = solution.to_hash
|
10
|
+
hsh.update(hsh){ |k,v| Jekyll::Drops::RdfTerm.build_term_drop(v, input.graph, input.site) }
|
11
|
+
hsh.collect{|k,v| [k.to_s, v]}.to_h
|
12
|
+
end
|
13
|
+
return result
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
Liquid::Template.register_filter(Jekyll::RdfSparqlQuery)
|
@@ -0,0 +1,85 @@
|
|
1
|
+
module Jekyll
|
2
|
+
|
3
|
+
##
|
4
|
+
#
|
5
|
+
# Jekyll::RdfMainGenerator enriches a Jekyll::Site with RDF triples
|
6
|
+
#
|
7
|
+
class RdfMainGenerator < Jekyll::Generator
|
8
|
+
safe true
|
9
|
+
priority :highest
|
10
|
+
|
11
|
+
##
|
12
|
+
# #generate performs the enrichment of a Jekyll::Site with rdf triples
|
13
|
+
#
|
14
|
+
# * +site+ - The Jekyll::Site whose #data is to be enriched
|
15
|
+
#
|
16
|
+
def generate(site)
|
17
|
+
config = site.config.fetch('jekyll_rdf')
|
18
|
+
|
19
|
+
graph = RDF::Graph.load(config['path'])
|
20
|
+
sparql = SPARQL::Client.new(graph)
|
21
|
+
|
22
|
+
# restrict RDF graph with restriction
|
23
|
+
resources = extract_resources(config['restriction'], config['include_blank'], graph, sparql)
|
24
|
+
|
25
|
+
site.data['sparql'] = sparql
|
26
|
+
site.data['resources'] = []
|
27
|
+
|
28
|
+
mapper = Jekyll::RdfTemplateMapper.new(config['template_mappings'], config['default_template'])
|
29
|
+
|
30
|
+
# create RDF pages for each URI
|
31
|
+
resources.each do |uri|
|
32
|
+
resource = Jekyll::Drops::RdfResource.new(uri, graph)
|
33
|
+
site.pages << RdfPageData.new(site, site.source, resource, mapper)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
##
|
38
|
+
# #extract_resources returns resources from an RDF graph.
|
39
|
+
#
|
40
|
+
# Literals are omitted.
|
41
|
+
# Blank nodes are only returned if +include_blank+ is true.
|
42
|
+
# Duplicate nodes are removed.
|
43
|
+
#
|
44
|
+
# * +selection+ - choose any of the following:
|
45
|
+
# nil ::
|
46
|
+
# no restrictions, return subjects, predicates, objects
|
47
|
+
# "subjects" ::
|
48
|
+
# return only subjects
|
49
|
+
# "predicates" ::
|
50
|
+
# return only predicates
|
51
|
+
# "objects" ::
|
52
|
+
# return only objects
|
53
|
+
# Otherwise ::
|
54
|
+
# consider +selection+ to be a SPARQL query and return answer set to this SPARQL query
|
55
|
+
# * +include_blank+ - If true, blank nodes are also returned, otherwise blank nodes are omitted
|
56
|
+
# * +graph+ - The RDF graph to restrict
|
57
|
+
# * +sparql+ - The SPARQL client to run queries against
|
58
|
+
#
|
59
|
+
def extract_resources(selection, include_blank, graph, sparql)
|
60
|
+
|
61
|
+
case selection
|
62
|
+
when nil # Config parameter not present
|
63
|
+
object_resources = extract_resources("objects", include_blank, graph, sparql)
|
64
|
+
subject_resources = extract_resources("subjects", include_blank, graph, sparql)
|
65
|
+
predicate_resources = extract_resources("predicates", include_blank, graph, sparql)
|
66
|
+
return object_resources.concat(subject_resources).concat(predicate_resources).uniq
|
67
|
+
when "objects"
|
68
|
+
graph.objects
|
69
|
+
when "subjects"
|
70
|
+
graph.subjects
|
71
|
+
when "predicates"
|
72
|
+
graph.predicates
|
73
|
+
else
|
74
|
+
# Custom query
|
75
|
+
sparql.query(selection).map{ |sol| sol[:resourceUri] }
|
76
|
+
end.reject do |s| # Reject literals
|
77
|
+
s.class <= RDF::Literal
|
78
|
+
end.select do |s| # Select URIs and blank nodes in case of include_blank
|
79
|
+
include_blank || s.class == RDF::URI
|
80
|
+
end.uniq
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Jekyll
|
2
|
+
|
3
|
+
##
|
4
|
+
# JekyllRdf::RdfPageData creates pages for each RDF resource using a given template
|
5
|
+
#
|
6
|
+
class RdfPageData < Jekyll::Page
|
7
|
+
|
8
|
+
##
|
9
|
+
# initialize initializes the page
|
10
|
+
# * +site+ - The Jekyll site we want to enrich with RDF data
|
11
|
+
# * +base+ - The base of the site
|
12
|
+
# * +resource+ - The RDF resource for which the page is rendered
|
13
|
+
# * +mapper+ - The layout-mapping
|
14
|
+
#
|
15
|
+
def initialize(site, base, resource, mapper)
|
16
|
+
@site = site
|
17
|
+
@base = base
|
18
|
+
@dir = ""
|
19
|
+
@name = resource.filename(URI::split(site.config['url'])[2], site.config['baseurl'])
|
20
|
+
self.process(@name)
|
21
|
+
|
22
|
+
template = mapper.map(resource)
|
23
|
+
self.read_yaml(File.join(base, '_layouts'), template)
|
24
|
+
|
25
|
+
self.data['title'] = resource.name
|
26
|
+
self.data['rdf'] = resource
|
27
|
+
|
28
|
+
resource.page = self
|
29
|
+
resource.site = site
|
30
|
+
site.data['resources'] << resource
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Jekyll
|
2
|
+
|
3
|
+
##
|
4
|
+
# Jekyll::RdfTemplateMapper maps resources to templates
|
5
|
+
#
|
6
|
+
class RdfTemplateMapper
|
7
|
+
|
8
|
+
##
|
9
|
+
# A Hash mapping a type resource to a template name
|
10
|
+
attr_accessor :resources_to_templates
|
11
|
+
|
12
|
+
##
|
13
|
+
# Default template name
|
14
|
+
attr_accessor :default_template
|
15
|
+
|
16
|
+
##
|
17
|
+
# Create a new Jekyll::RdfTemplateMapper
|
18
|
+
#
|
19
|
+
# * +resources_to_templates+ - A Hash mapping a type resource to a template name
|
20
|
+
# * +default_template+ - Default template name
|
21
|
+
def initialize(resources_to_templates, default_template)
|
22
|
+
@resources_to_templates = resources_to_templates
|
23
|
+
@default_template = default_template
|
24
|
+
end
|
25
|
+
|
26
|
+
##
|
27
|
+
# Maps a resource to a template name.
|
28
|
+
#
|
29
|
+
# Returns the template name of one of the +resource+'s types, if available. Returns the default template name otherwise.
|
30
|
+
def map(resource)
|
31
|
+
resource.types.each do |type|
|
32
|
+
tmpl = resources_to_templates[type]
|
33
|
+
return tmpl unless tmpl.nil?
|
34
|
+
end
|
35
|
+
return default_template
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
metadata
ADDED
@@ -0,0 +1,186 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jekyll-rdf
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Elias Saalmann
|
8
|
+
- Christian Frommert
|
9
|
+
- Simon Jakobi
|
10
|
+
- Arne Jonas Präger
|
11
|
+
- Maxi Bornmann
|
12
|
+
- Georg Hackel
|
13
|
+
- Eric Füg
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
date: 2016-05-25 00:00:00.000000000 Z
|
18
|
+
dependencies:
|
19
|
+
- !ruby/object:Gem::Dependency
|
20
|
+
name: linkeddata
|
21
|
+
requirement: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - "~>"
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '1.99'
|
26
|
+
type: :runtime
|
27
|
+
prerelease: false
|
28
|
+
version_requirements: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - "~>"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '1.99'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: sparql
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '1.99'
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '1.99'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: jekyll
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '3.1'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '3.1'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: rake
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '10.1'
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '10.1'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: coveralls
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0.8'
|
82
|
+
type: :runtime
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0.8'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: test-unit
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '3.0'
|
96
|
+
type: :runtime
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '3.0'
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: shoulda-context
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '1.1'
|
110
|
+
type: :runtime
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - "~>"
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '1.1'
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: rspec
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '3.0'
|
124
|
+
type: :development
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - "~>"
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '3.0'
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: pry-byebug
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - "~>"
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '3.4'
|
138
|
+
type: :development
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - "~>"
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '3.4'
|
145
|
+
description: Generate static sites with Jekyll based on RDF data
|
146
|
+
email: mail@esaalmann.de
|
147
|
+
executables: []
|
148
|
+
extensions: []
|
149
|
+
extra_rdoc_files: []
|
150
|
+
files:
|
151
|
+
- lib/jekyll-rdf.rb
|
152
|
+
- lib/jekyll/drops/rdf_literal.rb
|
153
|
+
- lib/jekyll/drops/rdf_resource.rb
|
154
|
+
- lib/jekyll/drops/rdf_statement.rb
|
155
|
+
- lib/jekyll/drops/rdf_term.rb
|
156
|
+
- lib/jekyll/filters/rdf_property.rb
|
157
|
+
- lib/jekyll/filters/rdf_property_list.rb
|
158
|
+
- lib/jekyll/filters/rdf_sparql_query.rb
|
159
|
+
- lib/jekyll/rdf_main_generator.rb
|
160
|
+
- lib/jekyll/rdf_page_data.rb
|
161
|
+
- lib/jekyll/rdf_template_mapper.rb
|
162
|
+
homepage: http://pcai042.informatik.uni-leipzig.de/~dtp16/
|
163
|
+
licenses:
|
164
|
+
- MIT
|
165
|
+
metadata: {}
|
166
|
+
post_install_message:
|
167
|
+
rdoc_options: []
|
168
|
+
require_paths:
|
169
|
+
- lib
|
170
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
175
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - ">="
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '0'
|
180
|
+
requirements: []
|
181
|
+
rubyforge_project:
|
182
|
+
rubygems_version: 2.4.5
|
183
|
+
signing_key:
|
184
|
+
specification_version: 4
|
185
|
+
summary: Hypertext Publication System for Templates Resource Rendering
|
186
|
+
test_files: []
|