Skip to content

Commit 0eb5d51

Browse files
committed
Fix odd case in fromRdf where rdf:nil is not used in a list, but is a vocabulary item, such as in the RDF vocabulary definition.
1 parent 1c13fcb commit 0eb5d51

File tree

3 files changed

+140
-1
lines changed

3 files changed

+140
-1
lines changed

example-files/arnaud-lang.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#!/usr/bin/env ruby
2+
require 'json/ld'
3+
4+
context = JSON.parse %({
5+
"@vocab": "http://schema.org/" ,
6+
"dc": "http://purl.org/dc/elements/1.1/",
7+
"doag": "http://academy.dior.com/doag#",
8+
"dior": "http://academy.dior.com/terms#",
9+
"name": {
10+
"@container": "@language"
11+
}
12+
})
13+
14+
puts JSON::LD::API.compact("http://semio.dydra.com/arnaudlevy/dior-academy/seasons.jsonld?auth_token=rcelIAhAcmnYXv2A2rZ7", context).to_json(JSON::LD::JSON_STATE)

example-files/rdf.ttl

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
2+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
3+
@prefix owl: <http://www.w3.org/2002/07/owl#> .
4+
@prefix dc: <http://purl.org/dc/elements/1.1/> .
5+
6+
<http://www.w3.org/1999/02/22-rdf-syntax-ns#> a owl:Ontology ;
7+
dc:title "The RDF Concepts Vocabulary (RDF)" ;
8+
dc:description "This is the RDF Schema for the RDF vocabulary terms in the RDF Namespace, defined in RDF 1.1 Concepts." .
9+
10+
rdf:HTML a rdfs:Datatype ;
11+
rdfs:subClassOf rdfs:Literal ;
12+
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
13+
rdfs:seeAlso <http://www.w3.org/TR/rdf11-concepts/#section-html> ;
14+
rdfs:label "HTML" ;
15+
rdfs:comment "The datatype of RDF literals storing fragments of HTML content" .
16+
17+
rdf:langString a rdfs:Datatype ;
18+
rdfs:subClassOf rdfs:Literal ;
19+
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
20+
rdfs:seeAlso <http://www.w3.org/TR/rdf11-concepts/#section-Graph-Literal> ;
21+
rdfs:label "langString" ;
22+
rdfs:comment "The datatype of language-tagged string values" .
23+
24+
rdf:PlainLiteral a rdfs:Datatype ;
25+
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
26+
rdfs:subClassOf rdfs:Literal ;
27+
rdfs:seeAlso <http://www.w3.org/TR/rdf-plain-literal/> ;
28+
rdfs:label "PlainLiteral" ;
29+
rdfs:comment "The class of plain (i.e. untyped) literal values, as used in RIF and OWL 2" .
30+
31+
rdf:type a rdf:Property ;
32+
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
33+
rdfs:label "type" ;
34+
rdfs:comment "The subject is an instance of a class." ;
35+
rdfs:range rdfs:Class ;
36+
rdfs:domain rdfs:Resource .
37+
38+
rdf:Property a rdfs:Class ;
39+
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
40+
rdfs:label "Property" ;
41+
rdfs:comment "The class of RDF properties." ;
42+
rdfs:subClassOf rdfs:Resource .
43+
44+
rdf:Statement a rdfs:Class ;
45+
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
46+
rdfs:label "Statement" ;
47+
rdfs:subClassOf rdfs:Resource ;
48+
rdfs:comment "The class of RDF statements." .
49+
50+
rdf:subject a rdf:Property ;
51+
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
52+
rdfs:label "subject" ;
53+
rdfs:comment "The subject of the subject RDF statement." ;
54+
rdfs:domain rdf:Statement ;
55+
rdfs:range rdfs:Resource .
56+
57+
rdf:predicate a rdf:Property ;
58+
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
59+
rdfs:label "predicate" ;
60+
rdfs:comment "The predicate of the subject RDF statement." ;
61+
rdfs:domain rdf:Statement ;
62+
rdfs:range rdfs:Resource .
63+
64+
rdf:object a rdf:Property ;
65+
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
66+
rdfs:label "object" ;
67+
rdfs:comment "The object of the subject RDF statement." ;
68+
rdfs:domain rdf:Statement ;
69+
rdfs:range rdfs:Resource .
70+
71+
rdf:Bag a rdfs:Class ;
72+
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
73+
rdfs:label "Bag" ;
74+
rdfs:comment "The class of unordered containers." ;
75+
rdfs:subClassOf rdfs:Container .
76+
77+
rdf:Seq a rdfs:Class ;
78+
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
79+
rdfs:label "Seq" ;
80+
rdfs:comment "The class of ordered containers." ;
81+
rdfs:subClassOf rdfs:Container .
82+
83+
rdf:Alt a rdfs:Class ;
84+
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
85+
rdfs:label "Alt" ;
86+
rdfs:comment "The class of containers of alternatives." ;
87+
rdfs:subClassOf rdfs:Container .
88+
89+
rdf:value a rdf:Property ;
90+
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
91+
rdfs:label "value" ;
92+
rdfs:comment "Idiomatic property used for structured values." ;
93+
rdfs:domain rdfs:Resource ;
94+
rdfs:range rdfs:Resource .
95+
96+
rdf:List a rdfs:Class ;
97+
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
98+
rdfs:label "List" ;
99+
rdfs:comment "The class of RDF Lists." ;
100+
rdfs:subClassOf rdfs:Resource .
101+
102+
rdf:nil a rdf:List ;
103+
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
104+
rdfs:label "nil" ;
105+
rdfs:comment "The empty list, with no items in it. If the rest of a list is nil then the list has no more items in it." .
106+
107+
rdf:first a rdf:Property ;
108+
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
109+
rdfs:label "first" ;
110+
rdfs:comment "The first item in the subject RDF list." ;
111+
rdfs:domain rdf:List ;
112+
rdfs:range rdfs:Resource .
113+
114+
rdf:rest a rdf:Property ;
115+
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
116+
rdfs:label "rest" ;
117+
rdfs:comment "The rest of the subject RDF list after the first item." ;
118+
rdfs:domain rdf:List ;
119+
rdfs:range rdf:List .
120+
121+
rdf:XMLLiteral a rdfs:Datatype ;
122+
rdfs:subClassOf rdfs:Literal ;
123+
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
124+
rdfs:label "XMLLiteral" ;
125+
rdfs:comment "The datatype of XML literal values." .

lib/json/ld/from_rdf.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ def from_statements(input)
6262
next unless nil_var = graph_object[RDF.nil.to_s]
6363

6464
# For each item usage in the usages member of nil, perform the following steps:
65-
nil_var[:usages].each do |usage|
65+
nil_var.fetch(:usages, []).each do |usage|
6666
node, property, head = usage[:node], usage[:property], usage[:value]
6767
list, list_nodes = [], []
6868

0 commit comments

Comments
 (0)