- From: Jacob Jett <jjett2@illinois.edu>
- Date: Wed, 28 Oct 2015 12:45:53 -0500
- To: Randall Leeds <randall@bleeds.info>
- Cc: Robert Sanderson <azaroth42@gmail.com>, Web Annotation <public-annotation@w3.org>
- Message-ID: <CABzPtBJSDP2mxe=7VLR2QofNfRCpSp3-h=1+q1WZJRT=e=SktA@mail.gmail.com>
One further thing. It's very nitpicky but I think your json-ld serialization needs to differentiate between the RDF built-in vocabulary (rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#) the RDF schema vacabulary (rdfs: http://www.w3.org/2000/01/rdf-schema#) Regards, Jacob _____________________________________________________ Jacob Jett Research Assistant Center for Informatics Research in Science and Scholarship The Graduate School of Library and Information Science University of Illinois at Urbana-Champaign 501 E. Daniel Street, MC-493, Champaign, IL 61820-6211 USA (217) 244-2164 jjett2@illinois.edu On Wed, Oct 28, 2015 at 12:25 PM, Jacob Jett <jgjett@gmail.com> wrote: > Hi Randall, > > Let me see if I can navigate your questions inline below. > > On Tue, Oct 27, 2015 at 6:56 PM, Randall Leeds <randall@bleeds.info> > wrote: > >> On Tue, Oct 27, 2015 at 4:41 PM Robert Sanderson <azaroth42@gmail.com> >> wrote: >> >>> >>> Hi Randall, Jacob, >>> >>> There are three issues with the proposal that I can see. >>> >>> One concern about the proposal is that rdf:Statement reifies a single >>> triple, and an Annotation has significantly more flexibility. For example, >>> there may be no body to an Annotation, which would result in a statement >>> with no subject. Or for multiple bodies or multiple targets, there would >>> be multiple subjects or objects respectively. That's not the intent of >>> rdf:Statement and related predicates, and I would be hard pressed to argue >>> that it was kosher to subclass it. >>> >> >> I did suggest that Annotation could actually 1 or more rdfs:Statement >> associated with it, rather than being an rdfs:Statement itself, but I was >> trying to squeeze it into a shape that would be backward compatible with >> many existing annotations, to make it more palatable. >> > > IMO, annotations (and other structured data types) are always backwards > compatible, you just map one shape into another. This can be a lossy > process unless you're allowed to extend with additional vocabs as needed. > > More to the point though, since there is no semantic difference (that I > can see) between rdf:Statement or oa:Annotation (as a sub-class of > rdf:Statement) it's hard to predict exactly how an OWL-based reasoner is > going to treat it. As near as I can tell (and I'm not an expert here) one > of at least (there could be more permutations) three possible scenarios > might play out in the reasoner. > > Scenario 1: It may simply ignore the sub-class, i.e., all "annotations" > are instances of rdf:Statement. In this world there simply are no > annotations. > > Scenario 2: It may ignore the super-class (and thereby ignore the rdf and > rdfs vocabularies altogether), i.e., all rdf-triples are instances of > oa:Annotation (essentially replacing rdf with oa) since oa doesn't > replicate all of the rdf and rdfs vocabularies I would think that this > essentially breaks the whole thing because rdfs:Class is the lynchpin upon > which the whole shooting match revolves and that goes away. Your instance > of oa:Annotation is suddenly both an instance of rdfs:Class and not an > instance of rdfs:Class (after all, if it is an instance of rdfs:Class then > there isn't an rdf vocabulary in this case, as it gets replaced by the oa > vocabulary). I think this weirdly gets into a chicken/egg problem and > probably your reasoner loops itself straight to hell or large portions of > your data simply don't work anymore or disappear. > > Scenario 3: The reasoner simply can't decide if all rdf-triples are > instances of oa:Annotation or if all instances of oa:Annotation are just > rdf:Statements and so the reasoner simply loops itself straight to hell. > > RDF only really works when things are instances of classes of things it > already defines. An rdf-triple is an instance of an rdf:Statement and of no > other thing. The class of rdf:Statements is an instance of rdfs:Class > asserted by the rdf:predicate, rdf:type. > > I think maybe you're trying to treat RDF as though it were UML, which it > isn't. Likewise, we often discuss everything about this RDF-based model as > though RDF was a serialization format, which it also isn't. On the whole > the group frequently asks the wrong questions about the model, i.e., "what > does this data do?" Data is data, it just kind of is. The correct question > is "what can I do with this data?" > > I'm still not sure I'm convinced that an annotation without a body is a >> useful thing. I know we debated it and decided to include it. I can't >> remember why. It would seem to me any such annotation could have a stub >> body. Or, more likely, that there is no annotation, there is only the >> production of a SpecificResource. >> > > This proves my point about the questions. There are numerous use cases > surrounding highlighting, bookmarking, upvoting, etc. that nominally do not > have "bodies" as we traditionally think of them. I follow the rough notion > of "stub body" and frankly I'm of the opinion that if a youtube video can > be a body or an actionable edit can be a body then some actionable CSS can > also be a body (and so I'm somewhat sympathetic with an argument that > annotation's without bodies actually should (and do) have bodies). However, > I'm not too sympathetic with the notion that bodiless annotations are "not > useful" or that they are not annotations at all. Just because one person's > set of use cases doesn't call for them doesn't mean that someone else's > doesn't. Since our standard is a Web standard then it needs to have a broad > range of features that not every implementer is going to use, which in turn > is going to complicate implementation and interoperability but that's the > price we have to pay for a generalized approach. > > >> You could say that bookmarking is an annotation with the bookmarking >> motivation that has no body. Or you could just say that you have a bookmark >> (the body) and it refers to the target. Whether you even need an annotation >> as a separate resource here is questionable to me. >> > > But it's not questionable to others. The question is should the model be > inclusive of use cases (and communities) or exclusive? If the latter then > why is it in the W3C standards process? The beauty (and the high price) of > the Web (and Semantic Web) is that any community can develop data > vocabularies particular to their community's needs. The W3C standards are > supposed to be the backbone that supports those activities and makes it > possible for them work together at various levels. If we discount certain > positions as not worthy of support then I'm not certain how we'll ever > develop a standard that makes that backbone possible. > > >> >>> Secondly, motivation and predicate are not really the same thing, as has >>> become clearer with the adoption of the role proposal to allow motivations >>> to be associated per body. For example, if you had a single Annotation >>> with a motivation of bookmarking, and a body with a role of describing, >>> plus a second body with a role of tagging, the use of rdf:predicate seems >>> very difficult to work with. >>> >>> >> It seems easier to me, though difficult to put them all into a single >> annotation. Again, though, here I am confused about what the model is >> attempting to do. It seems like it's trying to double as a simple container >> when really the user could create a container and give it provenance and >> have it contain all the annotations, one which describes and another which >> tags. Or maybe you have a resource "Bookmark" which can have properties for >> tags and descriptions, and the predicate relates the bookmark and the >> annotation. >> > > The model is providing an "annotation kind of" container and promulgates > certain metadata specific to the "annotation kind of" container that > support both its findability and distinguishes it from other kinds of > containers. > > I get that you have a need for a container with some provenance but, an > annotation would be a sub-class of *that container*. There are other > kinds of containers too, like collections. Collections are much more > generic. There's actually a formalization that defines them quite well: > > ∀y(∃x isGatheredInto(x,y)↔ Collection(y)) > > You can read all about it in the following paper: Wickett, K. M., Renear, > A. H., & Furner, J. (2011). Are collections sets? *Proceedings of the > 74th ASIS&T Annual Meeting* (New Orleans, LA, 9-13 October 2011). > > The important thing is to avoid disenfranchising entire web-going > communities of practice simply because their needs are different. > > Why should we avoid instantiating a Bookmark and instead create an >> Annotation that refers to some tags, some text, and some link, and >> complicates the relationship between them? >> > > See above, but more generally simply because we're the web annotation > group and we're modeling annotations. > > In your example's case it just so happens that the annotation is a > bookmark. Could some other community develop a model particular to > bookmarks? Of course they could, but that's not our job. Our job is to > develop the model of annotations and allow enough affordances for those > communities who believe that bookmarking is one of the roles that an > annotation can play to serialize annotations motivated by bookmarking. > > >> And finally ... we already have rdf:Statement (and the recommendations >>> against its use) and named graphs. If an Annotation were restricted to just >>> a single statement, I'm not sure that we would need a new specification :) >>> >> >> Thanks for making my point for me. >> > > I think I missed the point where he made the point for you. The problem is > that your proposal doesn't actually create a sub-class of rdf:Statement > inasmuch as it simply makes an alias for it. The effects of aliasing > rdf:Statement are uncertain (but are probably calamitous if you don't alias > the rest of RDF). It isn't clear if oa:Annotation inherits the properties > of rdf:Statement or simply replaces it wholecloth vis-a-vis OWL-based > reasoners. This undermines the firmament upon which the model stands for > the Semantic Web side of this working group (and the Semantic Web > community). > > I feel like this is a problem for engineers in general and developers in > particular. You're reinventing the wheel by sub-classing. But we already > have plenty of wheels. Just pick one and stick with it. The container here > is the annotation-flavored one, if another container is required then this > may be the wrong standard for your use cases. > > >> SpecificResource and the selector vocabulary is great and I don't see >> anything that exists quite like that. >> > > Here I'm in total agreement with you. I've suggested to Rob in the past > that the Specific Resource / Specifiers generalizes to a broader set of > Web/Semantic Web use cases. Perhaps what is really needed is a more > generalized Web/Semantic Web container specification that exploits and > develops that part of the vocabulary. What is the procedure for proposing > that we spin that part out to a different, more general working/community > group? > > >> But we have mechanisms to distribute statements with attribution. I don't >> understand what the model adds to that other than, it seems, a way to >> obfuscate the semantics and avoid actually creating triples that relate the >> body and target. >> > > It's providing a framework where people who don't agree on the nature of > the relationship between body and target can still agree that body and > target are related and also provide their interpretation of that > relationship through motivation/role. Afterall what you call a comment, I > (rather intractably) call a remark. It prevents a combinatorial explosion > of predicates by dumping that information into an attribute value bucket. > > (Note that avoidance of these kinds of combinatorial explosions is the > hallmark of a quality ontology. Examples of ontologies that fail to do > this, e.g., Bibframe, Schema, etc., showcase where a failure to generalize > through the proper exploitation of metaproperties has occurred. In > Bibframe's case, it has many predicates particular to naming (identifier) > or other standards. Since we keep inventing more standards we can safely > expect that Bibframe will continue its expansion forever. We've avoided > that here by providing a framework where everyone agrees that the thing in > question is an annotation and other communities do the work of determining > its precise nature, e.g., is it a bookmark, comment, edit, etc. This is > great division of labor for vocab development but seems to be a major > complicating factor for JSON developers.) > > >> In a sense, it seems to me like the purpose of much of the model is to >> escape from having to model that which we want to model. >> > > In a sense that is correct. We're trying to provide a model that gives us > agnostic annotation-flavored containers. The precise relationships between > the bodies and targets is left for individual communities of practice to > define through the motivation/role attribute value. Rather than mandate > what kinds of annotations there are from on-high, we just give some high > level examples of how they can express this information themselves. > > I get that this makes like harder on JSON developers but I'm going to take > an extremely blunt tack and tell you that it's for your own good. The > end-users need to be the community that shapes the structure of the data. > What best captures the idiosyncracies of their intentions and needs. Not, > what is most convenient for us to parse and serialize. > > The outcomes of your proposal are completely unknown but the worst part > is, the unknown factor isn't one you need to worry about. You're asking > another community to pay the tab for changes just so that life is more > convenient for your community. That's the worst possible reason to make a > proposal. > > I apologize to everyone for the soapbox sermon but this working group > sometimes feels like a house divided. If we don't stop playing use case > trumpery and focus more broadly on the cost and benefits for all of the > communities involved, it's hard for me to see how this process will result > in something successful. >
Received on Wednesday, 28 October 2015 17:47:04 UTC