w3c / json-ld-framing

JSON-LD 1.1 Framing Specification
https://w3c.github.io/json-ld-framing/
Other
25 stars 20 forks source link

Frame Matching & Blank Nodes #9

Closed gkellogg closed 6 years ago

gkellogg commented 6 years ago

The current draft for JSON-LD framing (January 2018) does not mention blank nodes in the frame matching algorithm specification and a strict interpretation of the first test goes a bit against the semantics of RDF in case a frame includes blank nodes:

1 Node matches if it has an @id property value which is also a value of the @id property in frame.

According to its definition, a frame is a JSON-LD document, meaning it can include blank nodes. if it happens, blank nodes in the frame will match blank nodes in a document only if they have the same ID and I believe that the Ruby implementation performs simple string comparison.

In RDF, shared blank nodes require a special handling and we loose that specificity here. It would be good to either redefine JSON-LD frames such that blank nodes are not allowed or precise the specification of frame matching. I would be in favor of the latter approach.

Blank nodes in JSON-LD frames might be useful when nodes have multiple relations to each other. For instance, nodes matching the following frame represent all alumni of a university who still work for that university:

{
  "@context": "http://schema.org",
  "@type": "Person",
  "alumniOf": {
    "@id": "_:univ",
    "@type": "CollegeOrUniversity"
  },
  "worksFor": { "@id": "_:univ" }
}

Original issue json-ld/json-ld.org#579.

elf-pavlik commented 6 years ago

Blank nodes in JSON-LD frames might be useful when nodes have multiple relations to each other. For instance, nodes matching the following frame represent all alumni of a university who still work for that university

I think N3 and SPARQL would use variables in such cases ?univ