<https://w3id.org/rdfp/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/vocommons/voaf#Vocabulary> . <https://w3id.org/rdfp/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#NamedIndividual> . <https://w3id.org/rdfp/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Ontology> . <https://w3id.org/rdfp/> <http://purl.org/dc/terms/creator> <http://maxime-lefrancois.info/me#> . <https://w3id.org/rdfp/> <http://purl.org/vocab/vann/preferredNamespacePrefix> "rdfp" . <https://w3id.org/rdfp/> <http://purl.org/vocab/vann/preferredNamespaceUri> <https://w3id.org/rdfp/> . <https://w3id.org/rdfp/> <http://www.w3.org/2002/07/owl#versionIRI> <https://w3id.org/rdfp/rdfp-1.0> . <https://w3id.org/rdfp/> <http://purl.org/dc/terms/modified> "2016-09-08"^^<http://www.w3.org/2001/XMLSchema#date> . <https://w3id.org/rdfp/> <http://www.w3.org/2002/07/owl#versionInfo> "v1.0" . <https://w3id.org/rdfp/> <http://creativecommons.org/ns#license> <https://www.apache.org/licenses/LICENSE-2.0/> . <https://w3id.org/rdfp/> <http://purl.org/dc/terms/description> "## RDF Presentation and RDF Presentation Negotiation\n\nAn RDF graph can be presented in several ways, using different media types. Examples of RDF media types include `application/rdf+xml`, `text/turtle`, `application/json+ld`.\n\nToday, most of the content consumed/produced/published, on the Web is not presented in RDF. \n\nIn the Web of Things, HTTP servers and clients would rather exchange lightweight documents, potentially binary. \nCurrently, most existing RDF Presentations generically apply to any RDF graph, at the cost of being heavy text-based documents.\nYet, lightweight HTTP servers/clients could be better satisfied with consuming/producing/publishing lightweight documents, may its structure be application-specific.\n\nOn the other hand, various formalisms have been developed:\n\n- to lift documents to RDF. Examples include [RML mappings](http://rml.io), [XSPARQL](http://xsparql.deri.org/), [SPARQL-Generate](http://w3id.org/sparql-generate/);\n- to lower RDF to documents. Examples include [XSPARQL](http://xsparql.deri.org/), [STTL, aka SPARQL-Template](https://ns.inria.fr/sparql-template/);\n- to validate RDF graphs. Examples include simple [SPIN](http://spinrdf.org/), [ShEx](http://shexspec.github.io), [SHACL](https://www.w3.org/TR/shacl/). \n\nFor a given range of RDF graphs and a specific media types, an RDF Presentation is a combination of lifting, lowering, and validation rules. With these rules, one can coherently interpret a representation as RDF (lift), validate the RDF graph, and generate back the representation from the RDF graph (lower).\n\nWhile sending any kind of document, potentially lightweight, an HTTP server/client may refer to the specific RDF Presentation that is used. Then, the HTTP client/server can lift the document to RDF, and validate it.\n\nSimilarly, while requesting for an RDF graph, an HTTP server/client may inform the client/server what representation it prefers. Then, the client/server can validate the RDF graph, then lower it into a document.\n\n### RDF Presentation description \n\nFollowing the Linked Data principles, RDF Presentations are given uniform identifiers (URIs), and an RDF description of these presentations can be retrieved at their URI.\n\nThe RDFP vocabulary can be used to describe RDF Presentations and the range of RDF graphs they apply to. It can be accessed at this URI: https://w3id.org/rdfp/ using content negotiation (i.e., set HTTP Header field `Accept` to one of the RDF syntaxes media types, or access it directly in [turtle](index.ttl), or in [RDF/XML](index.rdf).\n\nFor example, the RDF Presentation identified by https://w3id.org/rdfp/example/graph/xml 303 redirects to https://w3id.org/rdfp/example/description where it is described as follows:\n\n```\n@prefix rdfp: <https://w3id.org/rdfp/>.\n@base <https://w3id.org/rdfp/>.\n\n<example/graph/xml> a rdfp:Presentation ;\n rdfp:mediaType \"application/xml\" ; \n rdfp:liftingRule <example/graph/xml/liftingRule> ;\n rdfp:loweringRule <example/graph/xml/loweringRule> ;\n rdfs:isDefinedBy <example/description> .\n```\n\nA full example RDF graph that uses this vocabulary can be found at URI https://w3id.org/rdfp/example/description. Use content negotiation, or access it directly in [turtle](https://w3id.org/rdfp/example/description.ttl), or in [RDF/XML](https://w3id.org/rdfp/example/description.rdf).\n\n\nThe RDFP vocabulary describes web resources, RDF graphs, ontologies, and their representations.\n\n The URI of a named graph is the identification of that graph in the sense of the W3C Architecture of the World Wide Web, Volume One.\n The graph is the content, and that graph can be represented by many different documents that can then be exchanged on the Web.\n\n## Referring to an RDF Presentation\n\nThe RDF Presentation qualifies the representation type. Following the general architecture principles defined in [W3C Architecture of the World Wide Web, Volume One](https://www.w3.org/TR/2004/REC-webarch-20041215/), we keep orthogonal the identification and representation concepts. Arguably, the representation type (the media type) should be annotated with a link to the RDF Presentation used. \n\nAlthough new media types could have a parameter that refers to its presentation, such as: `application/seas;p=\"https://w3id.org/rdfp/example/graph/xml\"`. \nThis link cannot be set by a global media type parameter, as per [RFC 2045, Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies](https://tools.ietf.org/html/rfc2045):\n\n> There are NO globally-meaningful parameters that apply to all media types. Truly global mechanisms are best addressed, in the MIME model, by the definition of additional Content-* header fields.\n\nWe hence introduce HTTP header field `Content-Presentation` for this purpose. The value of this field is any absolute URI, that identifies the RDF Presentation of the represented RDF graph. \n\nUsing this header properly, any existing server can be adapted to behave \"as if\" it was producing RDF: the client simply needs to dereference the presentation link, and use the associated lifting rule to interpret the retrieved document as RDF.\n\nEqually important, a lightweight client/server can send lightweight binary messages, while still letting its server/client the chance to interpret the message body as RDF.\n\n## RDF Presentation Negotiation\n\nRDF Presentation Negotiation is a way for the client to state its presentation preferences for the response message body. \n\nTo achieve this, we introduce HTTP header field `Accept-Presentation`. The value of this field is any (absolute) URI, that identifies the RDF Presentation the clients would like the server to use to encode the response RDF graph. \n\nUsing this header properly, a lightweight client can request a compliant server to encode its responses in a specific format, hence transferring all the computation cost on the server.\n\n\n## Directly referring to the lowering rule, validation rule, or lifting rule\n\nIn some situations, it may seem unreasonable to expect the client/server to:\n\n1. dereference the RDF Presentation URI,\n1. parse the RDF document,\n1. navigate to the lifting, validation, or lowering rule of the RDF Presentation.\n\nHence, in a future version of RDFP, we may introduce additional HTTP header fields to directly refer to these rules. For example:\n\n- HTTP header field `Content-Lifting-Rule` would mean that the receiver may use this lifting to generate RDF from the content;\n- HTTP header field `Accept-Lowering-Rule` would mean that the client expects the server to use this lowering rule to generate a content it can process.\n\n## Implementation over Jersey\n\n[`rdfp-jersey-server`](get-started.html) is an extension of Jersey that eases the development of RESTful services that produce and consume RDF. It hides the RDF Presentation description and RDF Presentation Negotiation parts, and lets the end developer focus on manipulating RDF graphs as [Apache Jena](http://jena.apache.org/) models.\n\n\n## Related projects\n\nThe RDFP vocabulary is used in the following related projects:\n\n- [ONTOP - Ontology Platform](https://w3id.org/ontop/);\n\n`rdfp-jersey-server` is used in the following related projects:\n\n- [PEP - Process Execution Platform](https://w3id.org/pep/);\n- [CNR Smart Charging Provider SEAS pilot platform](http://cnr-seas.cloudapp.net/scp/).\n\n## Contact\n\nmaxime.lefrancois.86@gmail.com\n\nhttp://maxime-lefrancois.info/\n"@en . <https://w3id.org/rdfp/> <http://purl.org/dc/terms/issued> "2016-08-31"^^<http://www.w3.org/2001/XMLSchema#date> . <https://w3id.org/rdfp/> <http://purl.org/dc/terms/title> "The RDF Presentation ontology"@en . <https://w3id.org/rdfp/> <http://purl.org/vocab/vann/preferredNamespaceUri> <https://w3id.org/rdfp/> . <https://w3id.org/rdfp/Graph> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> . <https://w3id.org/rdfp/GraphDescription> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> . <https://w3id.org/rdfp/GraphPresentation> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> . <https://w3id.org/rdfp/GraphValidationRule> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> . <https://w3id.org/rdfp/LiftingRule> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> . <https://w3id.org/rdfp/LoweringRule> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> . <https://w3id.org/rdfp/Representation> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> . <https://w3id.org/rdfp/RepresentationValidationRule> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> . <https://w3id.org/rdfp/Resource> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> . <https://w3id.org/rdfp/alias> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> . <https://w3id.org/rdfp/describedBy> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> . <https://w3id.org/rdfp/liftingRule> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> . <https://w3id.org/rdfp/loweringRule> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> . <https://w3id.org/rdfp/mediaType> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> . <https://w3id.org/rdfp/presentationFor> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> . <https://w3id.org/rdfp/presentedBy> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> . <https://w3id.org/rdfp/representedBy> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> . <https://w3id.org/rdfp/validationRule> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/vocommons/voaf#Vocabulary> .
<https://w3id.org/rdfp/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#NamedIndividual> .
<https://w3id.org/rdfp/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Ontology> .
<https://w3id.org/rdfp/> <http://purl.org/dc/terms/creator> <http://maxime-lefrancois.info/me#> .
<https://w3id.org/rdfp/> <http://purl.org/vocab/vann/preferredNamespacePrefix> "rdfp" .
<https://w3id.org/rdfp/> <http://purl.org/vocab/vann/preferredNamespaceUri> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/> <http://www.w3.org/2002/07/owl#versionIRI> <https://w3id.org/rdfp/rdfp-1.0> .
<https://w3id.org/rdfp/> <http://purl.org/dc/terms/modified> "2016-09-08"^^<http://www.w3.org/2001/XMLSchema#date> .
<https://w3id.org/rdfp/> <http://www.w3.org/2002/07/owl#versionInfo> "v1.0" .
<https://w3id.org/rdfp/> <http://creativecommons.org/ns#license> <https://www.apache.org/licenses/LICENSE-2.0/> .
<https://w3id.org/rdfp/> <http://purl.org/dc/terms/description> "## RDF Presentation and RDF Presentation Negotiation\n\nAn RDF graph can be presented in several ways, using different media types. Examples of RDF media types include `application/rdf+xml`, `text/turtle`, `application/json+ld`.\n\nToday, most of the content consumed/produced/published, on the Web is not presented in RDF. \n\nIn the Web of Things, HTTP servers and clients would rather exchange lightweight documents, potentially binary. \nCurrently, most existing RDF Presentations generically apply to any RDF graph, at the cost of being heavy text-based documents.\nYet, lightweight HTTP servers/clients could be better satisfied with consuming/producing/publishing lightweight documents, may its structure be application-specific.\n\nOn the other hand, various formalisms have been developed:\n\n- to lift documents to RDF. Examples include [RML mappings](http://rml.io), [XSPARQL](http://xsparql.deri.org/), [SPARQL-Generate](http://w3id.org/sparql-generate/);\n- to lower RDF to documents. Examples include [XSPARQL](http://xsparql.deri.org/), [STTL, aka SPARQL-Template](https://ns.inria.fr/sparql-template/);\n- to validate RDF graphs. Examples include simple [SPIN](http://spinrdf.org/), [ShEx](http://shexspec.github.io), [SHACL](https://www.w3.org/TR/shacl/). \n\nFor a given range of RDF graphs and a specific media types, an RDF Presentation is a combination of lifting, lowering, and validation rules. With these rules, one can coherently interpret a representation as RDF (lift), validate the RDF graph, and generate back the representation from the RDF graph (lower).\n\nWhile sending any kind of document, potentially lightweight, an HTTP server/client may refer to the specific RDF Presentation that is used. Then, the HTTP client/server can lift the document to RDF, and validate it.\n\nSimilarly, while requesting for an RDF graph, an HTTP server/client may inform the client/server what representation it prefers. Then, the client/server can validate the RDF graph, then lower it into a document.\n\n### RDF Presentation description \n\nFollowing the Linked Data principles, RDF Presentations are given uniform identifiers (URIs), and an RDF description of these presentations can be retrieved at their URI.\n\nThe RDFP vocabulary can be used to describe RDF Presentations and the range of RDF graphs they apply to. It can be accessed at this URI: https://w3id.org/rdfp/ using content negotiation (i.e., set HTTP Header field `Accept` to one of the RDF syntaxes media types, or access it directly in [turtle](index.ttl), or in [RDF/XML](index.rdf).\n\nFor example, the RDF Presentation identified by https://w3id.org/rdfp/example/graph/xml 303 redirects to https://w3id.org/rdfp/example/description where it is described as follows:\n\n```\n@prefix rdfp: <https://w3id.org/rdfp/>.\n@base <https://w3id.org/rdfp/>.\n\n<example/graph/xml> a rdfp:Presentation ;\n  rdfp:mediaType \"application/xml\" ; \n  rdfp:liftingRule <example/graph/xml/liftingRule> ;\n  rdfp:loweringRule <example/graph/xml/loweringRule> ;\n  rdfs:isDefinedBy <example/description> .\n```\n\nA full example RDF graph that uses this vocabulary can be found at URI https://w3id.org/rdfp/example/description. Use content negotiation, or access it directly in [turtle](https://w3id.org/rdfp/example/description.ttl), or in [RDF/XML](https://w3id.org/rdfp/example/description.rdf).\n\n\nThe RDFP vocabulary describes web resources, RDF graphs, ontologies, and their representations.\n\n  The URI of a named graph is the identification of that graph in the sense of the W3C Architecture of the World Wide Web, Volume One.\n  The graph is the content, and that graph can be represented by many different documents that can then be exchanged on the Web.\n\n## Referring to an RDF Presentation\n\nThe RDF Presentation qualifies the representation type. Following the general architecture principles defined in [W3C Architecture of the World Wide Web, Volume One](https://www.w3.org/TR/2004/REC-webarch-20041215/), we keep orthogonal the identification and representation concepts. Arguably, the representation type (the media type) should be annotated with a link to the RDF Presentation used. \n\nAlthough new media types could have a parameter that refers to its presentation, such as: `application/seas;p=\"https://w3id.org/rdfp/example/graph/xml\"`. \nThis link cannot be set by a global media type parameter, as per [RFC 2045, Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies](https://tools.ietf.org/html/rfc2045):\n\n> There are NO globally-meaningful parameters that apply to all media types.  Truly global mechanisms are best addressed, in the MIME model, by the definition of additional Content-* header fields.\n\nWe hence introduce HTTP header field `Content-Presentation` for this purpose. The value of this field is any absolute URI, that identifies the RDF Presentation of the represented RDF graph. \n\nUsing this header properly, any existing server can be adapted to behave \"as if\" it was producing RDF: the client simply needs to dereference the presentation link, and use the associated lifting rule to interpret the retrieved document as RDF.\n\nEqually important, a lightweight client/server can send lightweight binary messages, while still letting its server/client the chance to interpret the message body as RDF.\n\n## RDF Presentation Negotiation\n\nRDF Presentation Negotiation is a way for the client to state its presentation preferences for the response message body. \n\nTo achieve this, we introduce HTTP header field `Accept-Presentation`.  The value of this field is any (absolute) URI, that identifies the RDF Presentation the clients would like the server to use to encode the response RDF graph. \n\nUsing this header properly, a lightweight client can request a compliant server to encode its responses in a specific format, hence transferring all the computation cost on the server.\n\n\n## Directly referring to the lowering rule, validation rule, or lifting rule\n\nIn some situations, it may seem unreasonable to expect the client/server to:\n\n1. dereference the RDF Presentation URI,\n1. parse the RDF document,\n1. navigate to the lifting, validation, or lowering rule of the RDF Presentation.\n\nHence, in a future version of RDFP, we may introduce additional HTTP header fields to directly refer to these rules. For example:\n\n- HTTP header field `Content-Lifting-Rule` would mean that the receiver may use this lifting to generate RDF from the content;\n- HTTP header field `Accept-Lowering-Rule` would mean that the client expects the server to use this lowering rule to generate a content it can process.\n\n## Implementation over Jersey\n\n[`rdfp-jersey-server`](get-started.html) is an extension of Jersey that eases the development of RESTful services that produce and consume RDF. It hides the RDF Presentation description and RDF Presentation Negotiation parts, and lets the end developer focus on manipulating RDF graphs as [Apache Jena](http://jena.apache.org/) models.\n\n\n## Related projects\n\nThe RDFP vocabulary is used in the following related projects:\n\n- [ONTOP - Ontology Platform](https://w3id.org/ontop/);\n\n`rdfp-jersey-server` is used in the following related projects:\n\n- [PEP - Process Execution Platform](https://w3id.org/pep/);\n- [CNR Smart Charging Provider SEAS pilot platform](http://cnr-seas.cloudapp.net/scp/).\n\n## Contact\n\nmaxime.lefrancois.86@gmail.com\n\nhttp://maxime-lefrancois.info/\n"@en .
<https://w3id.org/rdfp/> <http://purl.org/dc/terms/issued> "2016-08-31"^^<http://www.w3.org/2001/XMLSchema#date> .
<https://w3id.org/rdfp/> <http://purl.org/dc/terms/title> "The RDF Presentation ontology"@en .
<https://w3id.org/rdfp/> <http://purl.org/vocab/vann/preferredNamespaceUri> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/Graph> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/GraphDescription> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/GraphPresentation> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/GraphValidationRule> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/LiftingRule> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/LoweringRule> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/Representation> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/RepresentationValidationRule> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/Resource> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/alias> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/describedBy> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/liftingRule> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/loweringRule> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/mediaType> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/presentationFor> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/presentedBy> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/representedBy> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> .
<https://w3id.org/rdfp/validationRule> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <https://w3id.org/rdfp/> .