Fix expansion for nested keys with local context.

Julien LepillerSat Nov 28 20:43:56+0100 2020

3c890a2

Fix expansion for nested keys with local context.

jsonld.scm

5353
      ;; 4
5454
      (when (json-has-key? context "@context")
5555
        (set! context (assoc-ref context "@context")))
56-
      (pk expanded-input)
57-
      (pk context)
5856
      (let* ((base-iri (or (jsonld-options-base options)
5957
                           (and (jsonld-options-compact-to-relative? options)
6058
                                (string? input)

7270
                           #:ordered? (jsonld-options-ordered? options)
7371
                           #:processing-mode
7472
                           (jsonld-options-processing-mode options))))
75-
        (pk 'compacted-output compacted-output)
7673
        (if (equal? compacted-output #())
7774
            (set! compacted-output '())
7875
            (when (json-array? compacted-output)

195192
      (expand-with-base input #:options options))
196193
    ;; 2 and 3
197194
    (lambda (expanded-input context-base)
198-
      (pk 'expanded expanded-input)
199195
      (let* ((generate-blank-node (get-generate-blank-node-identifier))
200196
             (generate-node-map (get-node-map-generation generate-blank-node))
201197
             (node-map (generate-node-map expanded-input '()))
202198
             (node-map (assoc-ref node-map "node-map")))
203-
        (pk node-map)
204199
        (deserialize-jsonld
205200
          generate-blank-node node-map (make-rdf-dataset '() '())
206201
          #:produce-generalized-rdf?

jsonld/expansion.scm

681681
                         (not (json-key-expanded-to? active-context nested-value "@value")))
682682
              (throw 'invalid-@nest-value))
683683
            ;; 14.2.2
684-
            (let ((exec-result
685-
                    (execute-13 active-context active-property
686-
                                nested-value property-scoped-context
687-
                                type-scoped-context result '()
688-
                                input-type base-url options)))
684+
            (let* ((active-property nesting-key)
685+
                   (active-property-term-definition
686+
                     (term-definition-ref active-context active-property))
687+
                   (property-scoped-context
688+
                     (if (and (term-definition? active-property-term-definition)
689+
                              (not (equal? (term-definition-context active-property-term-definition) #f)))
690+
                         (term-definition-context active-property-term-definition)
691+
                         property-scoped-context))
692+
                   (active-context
693+
                     (if property-scoped-context
694+
                         (context-processing active-context property-scoped-context
695+
                                             base-url
696+
                                             #:override-protected? #t
697+
                                             #:options options)
698+
                         active-context))
699+
                   (exec-result
700+
                     (execute-13 active-context active-property
701+
                                 nested-value property-scoped-context
702+
                                 type-scoped-context result '()
703+
                                 input-type base-url options)))
689704
              (set! result (assoc-ref exec-result "result"))
690705
              (set! nests (assoc-ref exec-result "nests"))
691706
              (let ((exec-result