-
Notifications
You must be signed in to change notification settings - Fork 30
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Definition of specific resources: @Type #137
Comments
I respectfully disagree. Setting the type for resources where this is not necessary is an extra load on users where this does not add any relevant information. That section of the document has a number of examples where the type information is not present. Implementers may find the type of the resources based on the properties that are used. In the RDF world, this is a fairly standard approach if the vocabulary clearly specifies the domain and/or the range or predicates. (There may be ambiguous cases where having the type information is good to have.) Having the vocabulary and its usage be simpler for users has a higher priority than saving some extra work for implementers... |
well ... should every parser and serializer implement some complicated rules in order to extract type which is already explicit in the client applications that create the annotation? Yes, I agree that type is not mandatory for Body and Targets, but I would expect that in this case, the default one should be used ... which is the simple resource identified by @id. Maybe this issue is closely related to the one indicated in the text: If this change will be implemented and all resources are considered by default Specific Resources, the situation will be changed. In support to that change: |
This discussion already took place with the outcome that is currently in the documents that @type/rdf:type was not mandatory for SpecificResource. I don't see any new information to reopen that issue beyond feedback that type is expected by implementers. I'm going to leave this open, but I do not think we need to discuss it until there's additional feedback from the community. |
|
Actually I’m a developer implementing the WA standard. Given the definition of the type attribute, I would expect that this holds the information I need to decide when I have to parse the body to a SimpleResource and when to parse to a SpecificResource. @type I don’t think that every client should implement custom rules to identify the class of the body… If the missing of @type attribute should imply the body is a SimpleResource, this is reasonable implication. I would suggest that @type property is not mandatory for SimpleResource but it should be mandatory for SpecificResource. In any case, I think that the standard should write at least a non-normative Note to clarify this issue (how to identify the @type if this is missing). From: Rob Sanderson [mailto:notifications@github.com] This discussion already took place with the outcome that is currently in the documents that @type/rdf:type was not mandatory for SpecificResource. I don't see any new information to reopen that issue beyond feedback that type is expected by implementers. I'm going to leave this open, but I do not think we need to discuss it until there's additional feedback from the community. — |
@gsergiu, without going into details: the question is whether it is possible or whether it is impossible to implement what is necessary. What I hear from you is that it is possible, though a bit awkward. I understand that, but what we have to weight against it is how awkward is it for a user to add those typing information in cases where, for the user, this step is not really obvious and does not "feel" necessary. Maybe we have to look at each case separately to have a feeling for it but, as a general rule, I believe wherever something can be implemented without too much complication, and it does simplify the life of the end user, than the latter takes it... |
Only meant to add/expand @iherman 's above; we need to weigh in the cost of publishing and the cost of consuming with one another. |
Now I understand your concern. And I would add to it, that the annotation applications work a kind of "write once - read many" scenario. If publishing here, means creation, and consumption means read, I would like to mention that the worflow actually includes more actions and processing needs to happen at each of them. So ... I'm writing this, becasue it is important to understand how a typical environment looks like and how the resposabilities are separated between the User Informantion, Client Application and Server:
(I think that the standard must ensure the consistency between the representation and interpretation of the annotations in all of these 5 steps) By Annotation "type" here, I mean something like an "annotation having a Semantic Tag in the body". As you can see in the workflow the parse/serialize is called several times by each client and server, and these clients must "understand" in the same way the content of the annotations. Consequently the "@type" property is very important for ensuring the "common understanding" between the server and different clients. An this is why I would recommend that for each property of the annotation that holds an object the "@type" must/should be specified if it is not the default one (including, body, target, selectors, agents, etc.). The standard should also explicity state which is the default "@type". So .. these are my expectations as an implementor of the standard. |
Keep an eye on this Social WG Editor's Draft from @tantek |
Well … I don’t say it is impossible. I say it is complicated and it is a must (one way or the other).
Br, Von: Benjamin Goering [mailto:notifications@github.com] @gsergiuhttps://github.com/gsergiu well ... should every parser and serializer implement some complicated rules in order to extract type which is already explicit in the client applications that create the annotation? Keep an eye on this Social WG Editor's Draft from @tantekhttps://github.com/tantek — |
I do not want to go into all details of your client-server description. Suffices it to say that I agree with what you describe in general, although I may not agree with all the details (e.g., you say "server must parse the annotation": I am not sure the "must" is really a must in all cases). But this is a detail. My concern comes from a very different viewpoint. I think that, first of all, we can agree that there are and will be much more clients than servers. These clients may be fully automated programs (like the one you describe) but may also be humans: for example, the annotation model is referred to by such documents as the Metadata Vocabulary for Tabular Data, whereby the "author" of a dataset may want to add extra, essentially unstructured metadata in the form of an annotation using our model (do not be confused by a, alas!, different terminology: that document uses the term "annotation" in a very different way, but has a field for "notes" which corresponds to an annotation as we refer to in this WG). If there are (many) more clients (humans or machines) then we clearly have to optimize on what clients should do, and minimize the load on them even if this means a slightly more complicated processing on the server side. I hope we can agree on that. So the question is: is adding a "type" to a structure (the full annotation, a specific resource, or whatever) such a big deal? Is it an acceptable requirement for the user? Well... the answer depends. You or I, or some others in the group who have gone through the blessings or the curses (depends whom you ask:-) of learning and being familiar with Semantic Web concepts have no problems with the concept of a type, and we may not consider it a problem to add such and information explicitly. However, we have to realize and accept that this may be an alien concept and an extra cognitive load for many. This includes not only the human clients, but also the implementers of the clients running as programs. “Why adding a type when it is obvious?” is the question they would ask. And, you know what? They are right in asking that. Why indeed, if a human, or a program, can easily deduce a type information? (The Tantek’s document is a great example: let a program discover the type instead of imposing the extra load of setting it on the client...) The underlying issue is actually more general. We must realize (this has been an issue with the work in the group ever since it started) that we are shaping a JSON vocabulary that is (also) supposed to be used by people (humans and implementers) who are not Semantic Web people, and who may, God Forbid!, be actually very averse to the Semantic Web. Hence we have to think twice before pushing something "Semantic Webby" (and package it nicely). We have to do this while we do maintain a strict adherence to Semantic Web for those who care. Ie, we are trying to satisfy two sometimes very different communities by trying to find compromises. Hence the approach I am trying to defend: add a type if and only if the type cannot be deduced. Ie, when it is an essential information that is absolutely necessary for processing to properly happen. Yes, server implementers may be unhappy, but they can do it nevertheless. But if this leads to a more diverse set of clients, it is worth it. (B.t.w., this approach is not sooo alien for Semantic Web people either. This is why one sets domains and ranges for properties: by using RDFS inferencing a SW client can deduce the type of the object or the subject, respectively, so that the client would not have to bother. This is the same concept, after all, but which has been often forgotten because RDF environment rarely implement RDFS inferencing. Unfortunately...) |
Hi Ivan,
See https://en.wikipedia.org/wiki/Instance_%28computer_science%29 The meaning of the term "type" in computer science is rather similar to the meaning of the word "type" in everyday language. For example, a barman can ask a client what type of beverage does he or she want – coffee, tea or beer? A particular cup of coffee that the client receives is in the role of an instance, while two cups of coffee would form a set of two instances of coffee, determining its type at the same time.
“Yes, server implementers may be unhappy, but they can do it nevertheless. But if this leads to a more diverse set of clients, it is worth it.”
“But if this leads to a more diverse set of clients, it is worth it.”
Br, Sergiu From: Ivan Herman [mailto:notifications@github.com] @gsergiuhttps://github.com/gsergiu, I do not want to go into all details of your client-server descriptionhttps://github.com//issues/137#issuecomment-172481249. Suffices it to say that I agree with what you describe in general, although I may not agree with all the details (e.g., you say "server must parse the annotation": I am not sure the "must" is really a must in all cases). But this is a detail. My concern comes from a very different viewpoint. I think that, first of all, we can agree that there are and will be much more clients than servers. These clients may be fully automated programs (like the one you describe) but may also be humans: for example, the annotation model is referred to by such documents as the Metadata Vocabulary for Tabular Datahttp://www.w3.org/TR/tabular-metadata/, whereby the "author" of a dataset may want to add extra, essentially unstructured metadata in the form of an annotation using our model (do not be confused by a, alas!, different terminology: that document uses the term "annotation" in a very different way, but has a field for "notes" which corresponds to an annotation as we refer to in this WG). If there are (many) more clients (humans or machines) then we clearly have to optimize on what clients should do, and minimize the load on them even if this means a slightly more complicated processing on the server side. I hope we can agree on that. So the question is: is adding a "type" to a structure (the full annotation, a specific resource, or whatever) such a big deal? Is it an acceptable requirement for the user? Well... the answer depends. You or I, or some others in the group who have gone through the blessings or the curses (depends whom you ask:-) of learning and being familiar with Semantic Web concepts have no problems with the concept of a type, and we may not consider it a problem to add such and information explicitly. However, we have to realize and accept that this may be an alien concept and an extra cognitive load for many. This includes not only the human clients, but also the implementers of the clients running as programs. “Why adding a type when it is obvious?” is the question they would ask. And, you know what? They are right in asking that. Why indeed, if a human, or a program, can easily deduce a type information? (The Tantek’s documenthttps://www.w3.org/wiki/Post-type-discovery is a great example: let a program discover the type instead of imposing the extra load of setting it on the client...) The underlying issue is actually more general. We must realize (this has been an issue with the work in the group ever since it started) that we are shaping a JSON vocabulary that is (also) supposed to be used by people (humans and implementers) who are not Semantic Web people, and who may, God Forbid!, be actually very averse to the Semantic Web. Hence we have to think twice before pushing something "Semantic Webby" (and package it nicely). We have to do this while we do maintain a strict adherence to Semantic Web for those who care. Ie, we are trying to satisfy two sometimes very different communities by trying to find compromises. Hence the approach I am trying to defend: add a type if and only if the type cannot be deduced. Ie, when it is an essential information that is absolutely necessary for processing to properly happen. Yes, server implementers may be unhappy, but they can do it nevertheless. But if this leads to a more diverse set of clients, it is worth it. (B.t.w., this approach is not sooo alien for Semantic Web people either. This is why one sets domains and ranges for properties: by using RDFS inferencing a SW client can deduce the type of the object or the subject, respectively, so that the client would not have to bother. This is the same concept, after all, but which has been often forgotten because RDF environment rarely implement RDFS inferencing. Unfortunately...) — |
let's take a practicle example from the real world .. inspired from the wikipedia example. If an italian is comming to Vienna and orders a coffee, and the waiter is bringing an American coffee, this will results in an emberasing situation both for italian customer and waiter. In the most cases, though "a coffee" the italian means and expreso: and being in Vienna the default coffee should be Melange: And it is rather an exception for Europeans to drink Cafe Americano: This is why I claim that the type of the coffe is a "must" both during the ordering process (creation time) and in the billing process (delivery time). I also want to claim that this is the natural behaviour for any customer! |
Proposal: SHOULD for type: SpecificResource instead of MAY. Can we live with that? |
Fine. I believe we are running in circles, repeating the same arguments. This is an acceptable compromise. |
Thanks for openess on compromises. :) |
Here is the current definition for Type of Specific resources:
https://www.w3.org/TR/annotation-model/#specific-resources
@type
The class of the Specific Resource
The Specific Resource MAY have the SpecificResource.
I would expect that the Specific Resource "MUST have" a Type what is one of SpecificResource and its derivates/chlidren (in contrast to "MAY have")
I would also imply that @type is mandatory for the Specific Resources (in order to make it clear for all implementors)
The text was updated successfully, but these errors were encountered: