jekyll-rdf 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d437bb55ab5b1de0a9ab46821413726b54f999cd
|
4
|
+
data.tar.gz: 06cacb32344903476f740d2e2c94417128bbf4ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac26c4881a6e16baf237ddca55ccddd118277c206350b848f11ba4224b10fb03f878049d60d770c81f362a465149aae46e967e5634d323133a73dc4d196e509d
|
7
|
+
data.tar.gz: 339fd31d9dd6345d0f7a422f1d4af3ae00b6eda2e51c168867818bd69be29a3ec53748eca3e4bb0daaec08867be15ba5266abe0207127d52983e23df0cf389ec
|
@@ -1,19 +1,23 @@
|
|
1
|
-
module Jekyll
|
2
|
-
module Drops
|
1
|
+
module Jekyll #:nodoc:
|
2
|
+
module Drops #:nodoc:
|
3
|
+
|
4
|
+
##
|
5
|
+
# Represents an RDF resource to the Liquid template engine
|
6
|
+
#
|
3
7
|
class RdfResource < RdfTerm
|
4
|
-
|
8
|
+
|
5
9
|
##
|
6
10
|
# The Jekyll::Site of this Jekyll::Drops::RdfResource
|
7
11
|
#
|
8
12
|
attr_accessor :site
|
9
|
-
|
13
|
+
|
10
14
|
##
|
11
15
|
# The Jekyll::RdfPageData of this Jekyll::Drops::RdfResource
|
12
16
|
#
|
13
17
|
attr_accessor :page
|
14
18
|
|
15
19
|
##
|
16
|
-
# Return a list of Jekyll::Drops::RdfStatements whose subject, predicate or object is the RDF resource represented by the receiver
|
20
|
+
# Return a list of Jekyll::Drops::RdfStatements whose subject, predicate or object is the RDF resource represented by the receiver
|
17
21
|
#
|
18
22
|
def statements
|
19
23
|
@statements ||= statements_as_subject + statements_as_predicate + statements_as_object
|
@@ -53,14 +57,18 @@ module Jekyll
|
|
53
57
|
def types
|
54
58
|
@types ||= begin
|
55
59
|
types = [ term.to_s ]
|
56
|
-
|
57
|
-
|
60
|
+
selection = statements_as(:subject).select{ |s| s.predicate.term.to_s=="http://www.w3.org/1999/02/22-rdf-syntax-ns#type" }
|
61
|
+
unless selection.empty?
|
62
|
+
t = selection.first
|
63
|
+
if selection.count > 1
|
64
|
+
Jekyll.logger.warn "Resource #{name} has multiple RDFS types. Will use #{t.object.term.to_s} for template mapping. "
|
65
|
+
end
|
58
66
|
types << t.object.term.to_s
|
59
67
|
t = t.object
|
60
|
-
|
61
|
-
|
68
|
+
s = t.super_class
|
69
|
+
while s
|
62
70
|
types << s.term.to_s
|
63
|
-
|
71
|
+
s = s.super_class
|
64
72
|
end
|
65
73
|
end
|
66
74
|
types
|
@@ -71,9 +79,13 @@ module Jekyll
|
|
71
79
|
# Return the first super class resource of the receiver or nil, if no super class resource can be found
|
72
80
|
#
|
73
81
|
def super_class
|
74
|
-
|
75
|
-
|
76
|
-
|
82
|
+
selection = statements_as(:subject).select{ |s| s.predicate.term.to_s=="http://www.w3.org/2000/01/rdf-schema#subClassOf" }
|
83
|
+
unless selection.empty?
|
84
|
+
super_class = selection.first
|
85
|
+
if selection.count > 1
|
86
|
+
Jekyll.logger.warn "Type #{name} has multiple RDFS super classes. Will use #{super_class.object.term.to_s} for template mapping. "
|
87
|
+
end
|
88
|
+
super_class.object
|
77
89
|
end
|
78
90
|
end
|
79
91
|
|
@@ -86,14 +98,14 @@ module Jekyll
|
|
86
98
|
n ? n.object.name : term.to_s
|
87
99
|
end
|
88
100
|
end
|
89
|
-
|
101
|
+
|
90
102
|
##
|
91
103
|
# Return the URL of the page representing this RdfResource
|
92
104
|
#
|
93
105
|
def page_url
|
94
106
|
page ? page.url.chomp('index.html') : term.to_s
|
95
107
|
end
|
96
|
-
|
108
|
+
|
97
109
|
##
|
98
110
|
# Return a list of RDF statements where the represented RDF resource plays a role
|
99
111
|
# * +role+ - which role the represented RDF resource should play:
|
@@ -1,14 +1,24 @@
|
|
1
1
|
module Jekyll
|
2
|
+
|
3
|
+
##
|
4
|
+
# Internal module to hold the medthod #rdf_property
|
5
|
+
#
|
2
6
|
module RdfProperty
|
3
7
|
|
4
|
-
|
8
|
+
##
|
9
|
+
# Computes all objects for which statements exist containing the given subject and predicate and returns any of them
|
10
|
+
#
|
11
|
+
# * +input+ - is the subject of the statements to be matched
|
12
|
+
# * +predicate+ - is the predicate of the statements to be matched
|
13
|
+
# * +lang+ - (optional) preferred language of a the returned object. The precise implementation of choosing which object to returned (both in case a language is supplied and in case is not supplied) is undefined
|
14
|
+
#
|
15
|
+
def rdf_property(input, predicate, lang = nil)
|
5
16
|
return input unless input.is_a?(Jekyll::Drops::RdfResource)
|
6
17
|
begin
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
p = results.find{ |s| s.object.term.language == lang }
|
18
|
+
results = input.page.data['rdf'].statements_as_subject.select{ |s| s.predicate.term.to_s == predicate }
|
19
|
+
lang ||= input.site.config['jekyll_rdf']['language']
|
20
|
+
if results.count > 1 && results.first.object.term.is_a?(RDF::Term) && lang != nil
|
21
|
+
p = results.find{ |s| s.object.term.language == lang.to_sym }
|
12
22
|
end
|
13
23
|
p = results.first unless p
|
14
24
|
return unless p
|
@@ -1,12 +1,29 @@
|
|
1
1
|
module Jekyll
|
2
|
+
|
3
|
+
##
|
4
|
+
# Internal module to hold the method #rdf_property
|
5
|
+
#
|
2
6
|
module RdfPropertyList
|
3
7
|
|
4
|
-
|
8
|
+
##
|
9
|
+
# Computes all objects for which statements exist containing the given subject and predicate and returns an Array of them
|
10
|
+
#
|
11
|
+
# * +input+ - is the subject of the statements to be matched
|
12
|
+
# * +predicate+ - is the predicate of the statements to be matched
|
13
|
+
# * +lang+ - (optional) preferred language of the returned objects. If 'cfg' is specified the preferred language is provides by the site configuration _config.yml
|
14
|
+
#
|
15
|
+
def rdf_property_list(input, predicate, lang = nil)
|
5
16
|
return input unless input.is_a?(Jekyll::Drops::RdfResource)
|
6
17
|
begin
|
7
|
-
result = input.page.data['rdf'].statements_as_subject.select{ |s| s.predicate.term.to_s ==
|
18
|
+
result = input.page.data['rdf'].statements_as_subject.select{ |s| s.predicate.term.to_s == predicate } # select all matching statements with given predicate
|
19
|
+
if lang != nil
|
20
|
+
if lang == 'cfg'
|
21
|
+
lang = input.site.config['jekyll_rdf']['language']
|
22
|
+
end
|
23
|
+
result = result.select{ |s| s.object.term.language == lang.to_sym } # select all statements with matching language
|
24
|
+
end
|
8
25
|
return unless result
|
9
|
-
result
|
26
|
+
result.map{|p| p.object.name}
|
10
27
|
end
|
11
28
|
end
|
12
29
|
|
@@ -1,6 +1,17 @@
|
|
1
1
|
module Jekyll
|
2
|
+
|
3
|
+
##
|
4
|
+
# Internal module to hold the medthod #sparql_query
|
5
|
+
#
|
2
6
|
module RdfSparqlQuery
|
3
7
|
|
8
|
+
##
|
9
|
+
# Executes a SPARQL query. The supplied query is augmented by replacing each occurence of '?resourceUri' by the URI of the context RDF resource.
|
10
|
+
# Returns an Array of bindings. Each binding is a Hash mapping variables to their values.
|
11
|
+
#
|
12
|
+
# * +input+ - the context RDF resource
|
13
|
+
# * +query+ - the SPARQL query
|
14
|
+
#
|
4
15
|
def sparql_query(input, query)
|
5
16
|
return input unless input.is_a?(Jekyll::Drops::RdfResource)
|
6
17
|
query.gsub!('?resourceUri', "<#{input.term.to_s}>")
|