[ { "@id": "https://w3id.org/np/RAOnWLLWap_Kn78gmGw1WdZoLmkjygxSe3ifqdXZ5DpGA/provenance", "@graph": [ { "@id": "https://w3id.org/np/RAOnWLLWap_Kn78gmGw1WdZoLmkjygxSe3ifqdXZ5DpGA/assertion", "http://www.w3.org/ns/prov#wasAttributedTo": [ { "@id": "https://orcid.org/0000-0001-8492-0354" } ] } ] }, { "@id": "https://w3id.org/np/RAOnWLLWap_Kn78gmGw1WdZoLmkjygxSe3ifqdXZ5DpGA/Head", "@graph": [ { "@id": "https://w3id.org/np/RAOnWLLWap_Kn78gmGw1WdZoLmkjygxSe3ifqdXZ5DpGA", "http://www.nanopub.org/nschema#hasAssertion": [ { "@id": "https://w3id.org/np/RAOnWLLWap_Kn78gmGw1WdZoLmkjygxSe3ifqdXZ5DpGA/assertion" } ], "http://www.nanopub.org/nschema#hasProvenance": [ { "@id": "https://w3id.org/np/RAOnWLLWap_Kn78gmGw1WdZoLmkjygxSe3ifqdXZ5DpGA/provenance" } ], "http://www.nanopub.org/nschema#hasPublicationInfo": [ { "@id": "https://w3id.org/np/RAOnWLLWap_Kn78gmGw1WdZoLmkjygxSe3ifqdXZ5DpGA/pubinfo" } ], "@type": [ "http://www.nanopub.org/nschema#Nanopublication" ] } ] }, { "@id": "https://w3id.org/np/RAOnWLLWap_Kn78gmGw1WdZoLmkjygxSe3ifqdXZ5DpGA/pubinfo", "@graph": [ { "@id": "https://orcid.org/0000-0001-8492-0354", "http://xmlns.com/foaf/0.1/name": [ { "@value": "Ashley Caselli" } ] }, { "@id": "https://w3id.org/np/RAOnWLLWap_Kn78gmGw1WdZoLmkjygxSe3ifqdXZ5DpGA", "http://purl.org/dc/terms/created": [ { "@value": "2026-09-14T10:19:34Z", "@type": "http://www.w3.org/2001/XMLSchema#dateTime" } ], "http://purl.org/dc/terms/creator": [ { "@id": "https://orcid.org/0000-0001-8492-0354" } ], "http://purl.org/dc/terms/license": [ { "@id": "https://creativecommons.org/licenses/by/4.0/" } ], "http://purl.org/nanopub/x/embeds": [ { "@id": "https://w3id.org/np/RAOnWLLWap_Kn78gmGw1WdZoLmkjygxSe3ifqdXZ5DpGA/get-smiley-svg" } ], "http://www.w3.org/2000/01/rdf-schema#label": [ { "@value": "Get smiley SVG" } ] }, { "@id": "https://w3id.org/np/RAOnWLLWap_Kn78gmGw1WdZoLmkjygxSe3ifqdXZ5DpGA/sig", "http://purl.org/nanopub/x/hasAlgorithm": [ { "@value": "RSA" } ], "http://purl.org/nanopub/x/hasPublicKey": [ { "@value": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+i9DV8ynzO944pYkYsDwtlqJHuk+b7FQt6Bb4TIQSDX3jGUURn6WpaNwESHmgMLWSydaH5XlabMzuqpPL4iyB+IAzvwIxdJBLhe39EQMu2j+FZ/5d/xu/gO3nZw2KoEvJ7cJisabuI05OylIRSJ+OG5CmzFxnjojUEJeCFi1njY1InhXrb0yHud9b1ifzweoN6YYOBecKs1gTOaT2bf+t4Wgzg3M0PmRVZ4F0OALsnh4T5+x7kFtiPcDKNpORi585JjKCZ4kczIF6oUKcwgC0kmIY97jtLqSLcXRkxHx5CDI6qz4XlRFs1ZbCUdSlzjdPZAkaBcNem1gIhWzkHkEnQIDAQAB" } ], "http://purl.org/nanopub/x/hasSignature": [ { "@value": "2ltofV4pUWVE3gSB65hSvn02Oq+Xc345xA3Nv8PFlPApDfL2vWqfWWrgR0e7uMWnqU8zhZH12XyEqBs2k6jn9ezoofwFDJMM7bwsseuH0AtS13MJ78JN4Svl6XaG4HJFSiPFyDEZdP5qOonGPVYJcNxZqTZfKhDKs8pICW1oruhhjuZ/x5ct9FveLcPnr5Pl+lTOWUUFhsHWjbqgQ2uXHbjs/MW3p83+hywDS16T0kOPxtzfEyprSajVvGm/LX/sWIOSp4MqpjjW6mM946G4b8HSRLF9OV4mhmbfLLEHR7yAFsaYa6CIx4IgtnHJ1Q44HEKwuZAF67SlsL/1lrNyXA==" } ], "http://purl.org/nanopub/x/hasSignatureTarget": [ { "@id": "https://w3id.org/np/RAOnWLLWap_Kn78gmGw1WdZoLmkjygxSe3ifqdXZ5DpGA" } ], "http://purl.org/nanopub/x/signedBy": [ { "@id": "https://orcid.org/0000-0001-8492-0354" } ] } ] }, { "@id": "https://w3id.org/np/RAOnWLLWap_Kn78gmGw1WdZoLmkjygxSe3ifqdXZ5DpGA/assertion", "@graph": [ { "@id": "https://w3id.org/np/RAOnWLLWap_Kn78gmGw1WdZoLmkjygxSe3ifqdXZ5DpGA/get-smiley-svg", "http://purl.org/dc/terms/description": [ { "@value": "Returns the smiley face from the OntoSVG repository as RDF, for an SVG view to render (see docs/svg-views.md in the nanodash repo). A CONSTRUCT query whose result graph describes the image in the OntoSVG vocabulary -- elements as resources typed with an OntoSVG class, attributes as the svg: properties holding literals, children as the numbered rdf:_1, rdf:_2, ... properties, and character data as a node carrying its string in xml:fragment -- which Nanodash serializes to SVG markup, sanitizes and embeds, instead of the query assembling that markup as a string itself. The figure is constant, so the query takes no parameters and its WHERE clause is empty: it is the smallest thing that exercises the RDF form of an SVG view end to end, and a worked reference for writing one. Note that the is svg:Title holding an svg:Text child, and that a text label is svg:TextElement (not svg:Text, which is the character data inside it)." } ], "http://purl.org/dc/terms/license": [ { "@id": "http://www.apache.org/licenses/LICENSE-2.0" } ], "@type": [ "https://w3id.org/kpxl/grlc/grlc-query" ], "http://www.w3.org/2000/01/rdf-schema#label": [ { "@value": "Get smiley SVG" } ], "https://w3id.org/kpxl/grlc/endpoint": [ { "@id": "https://w3id.org/np/l/nanopub-query-1.1/repo/spaces" } ], "https://w3id.org/kpxl/grlc/sparql": [ { "@value": "prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\nprefix svg: <http://www.w3.org/SVG/model/def/>\nprefix xml: <http://www.w3.org/XML/model/def/>\nprefix smiley: <https://w3id.org/kpxl/gen/svg/smiley#>\n\nconstruct {\n smiley:image a svg:Svg ;\n xml:xmlns \"http://www.w3.org/2000/svg\" ;\n svg:viewBox \"0 0 200 200\" ;\n svg:width \"200\" ;\n svg:height \"200\" ;\n rdf:_1 smiley:caption ;\n rdf:_2 smiley:face ;\n rdf:_3 smiley:left-eye ;\n rdf:_4 smiley:right-eye ;\n rdf:_5 smiley:mouth .\n\n smiley:caption a svg:Title ;\n rdf:_1 smiley:caption-text .\n smiley:caption-text a svg:Text ;\n xml:fragment \"A smiley face\" .\n\n smiley:face a svg:Circle ;\n svg:cx \"100\" ; svg:cy \"100\" ; svg:r \"90\" ;\n svg:fill \"yellow\" ; svg:stroke \"black\" ; svg:stroke-width \"2\" .\n\n smiley:left-eye a svg:Circle ;\n svg:cx \"70\" ; svg:cy \"70\" ; svg:r \"10\" ; svg:fill \"black\" .\n\n smiley:right-eye a svg:Circle ;\n svg:cx \"130\" ; svg:cy \"70\" ; svg:r \"10\" ; svg:fill \"black\" .\n\n smiley:mouth a svg:Path ;\n svg:d \"M 60 120 Q 100 150 140 120\" ;\n svg:fill \"none\" ; svg:stroke \"black\" ; svg:stroke-width \"3\" .\n}\nwhere {}" } ] } ] } ]