- From: Henry Story <henry.story@bblfish.net>
- Date: Sun, 27 Jan 2013 12:37:13 +0100
- To: public-ldp-wg@w3.org
- Message-Id: <CABF62A8-06BD-490A-91FE-5932E83367F0@bblfish.net>
The thread on how to make containers is getting sidetracked into what Profiles are, which is an interesting topic. So I thought about it and tried to clarify it below. The basic general idea is that one may want to specify certain types of documents as satisfying some restrictions, so that for example an LDPC could say that it only accepts POSTS of graphs of certain types: perhaps something like a graph containing shopping artefacts. This idea would be to have something somewhat similar to http://tools.ietf.org/html/draft-wilde-profile-link-04#section-3.1 but with a more semantic twist to it, and completely orthogonal to syntactic issues as specified by a mime type. Any well formed document with a mime type should have semantics, and there may be different types of documents that have the same semantics ( say Atom/XML and a future atom/json version ). What is a Profile? ------------------ Having said that one could start very minimally by naming the class of Profiles { @prefix webarch: <http://sw.nokia.com/WebArch-1/> . :Profile a rdf:Class; rdfs:comment "the class of things that are profiles" . :profile a rdf:Property; rdfs:comment "the relation of a particular information resource to the Profile it satisfies"; rdfs:domain webarch:InformationResource ; rdfs:range :Profile . } One can think of many classes of Information Resources as being related implicitly to such a Profile. { ?x a foaf:PersonalProfileDocument } => { ?x :profile ?y } It is just that the profile of a foaf:PersonalProfile document has not been stated yet. What could it be? My guess is that for a foaf:PersonalProfileDocument the restriction is something like the following { @prefix log: <http://www.w3.org/2000/10/swap/log#>. # a foaf:PersonalProfileDocument states that it is a document and has a primary topic { ?x a foaf:PersonalProfileDocument } => { ?x log:semantics [ log:includes { ?x a foaf:PersalProfileDocument; foaf:primaryTopic ?y . } ] . } } A foaf:PersonalProfileDocument must have a primaryTopic. This is just a rough sketch of course. Similarly one could say that an LDPC states that it is an ldp:Container { @prefix log: <http://www.w3.org/2000/10/swap/log#>. # see http://www.w3.org/2000/10/swap/doc/CwmBuiltins # and http://www.w3.org/2000/10/swap/doc/Reach { ?c a ldp:Container . } => { ?c log:semantics [ log:includes { ?c a ldp:Container } ] } } The inverse is not true. It is not because something states that it is an ldp:Container that it is. The thing also needs to behave like one. So this is false: { { ?c a ldp:Container . } <= { ?c log:semantics [ log:includes { ?c a ldp:Container } ] } } Perhaps this is where the notion of a profile comes in: { ldp:ContainerProfile rdfs:subClassOf :Profile } we can now go the other way, and say that something that says it is a container satisfies the ContainerProfile { ?c log:profile ldp:ContainerProfile } <= { ?c log:semantics [ log:includes { ?c a ldp:Container } ] } Now here we relate an information resource to a containerProfile. Perhaps Container profiles are then graphs such that the following holds { ?g a ldp:ContainerProfile . } <=> { ?g log:includes { <> a ldp:Container . } } I am hoping it says: a graph is a ldp:ContainerProfile, if the graph contains a statement about it being a ldp:Container. ( I say I am hoping, because I am not sure if N3 allows <> to refer to the graph inside of which it is placed - perhaps an improvement for N3... ) In any case it seems quite clear that profiles are restrictions on graphs given what statements they contain, without it making a claim on the truth value of the claim. This then explains why people wish to add profiles to mime types: if something is not related to a truth evaluatable statement one may come to think that it is a syntactic one. But that is to forget that different languages can express the same thing, and so why profiles can be expressed semantically - in a somewhat modal manner I think. This is why I mentioned SPARQL as the obvious way to proceed to defined profiles, in a way that is independent of any syntax. One could then defined profiles for ldp:Containers, and if one has a GRDDL of Atom, one could independently of the media type assert that an atom Container satisfies an ldp:ContainerProfile. Henry Social Web Architect http://bblfish.net/
Attachments
- application/pkcs7-signature attachment: smime.p7s
Received on Sunday, 27 January 2013 11:37:44 UTC