- From: Ivan Herman via GitHub <sysbot+gh@w3.org>
- Date: Sun, 24 Jan 2016 12:31:41 +0000
- To: public-annotation@w3.org
@jjett
Thanks for this. Yes, it is very much of an edge case, but it is,
nevertheless, useful (imho) to see it to make a better decision.
Forgive me, however, but I had real difficulties to grasp the
structure of the extracts; I am a visual type, so I need an formatted
code. So I did re-format the codes, and I reproduce the "direct" (let
us call this way) and the "inverse" examples; please check whether I
made a mistake. Actually, I think there were some issues in formatting
with the "inverse", as far as I remember not there was an extra
bracket somewhere...
Here how I summarize for myself the pro-s and cons.
* (At least in this example) the "inverse" structure is definitely
more DRY and also more compact (there goes my spaghetti!:-). Which is,
in general, considered to be a good thing.
* Maybe it is a price to pay for DRY-ness, but I can imagine that, in
practice, defining an "inverse" structure for a given task is less
intuitive. Indeed, in the case of a "direct" approach everything that
is related to selection is part of a (possibly giant) selector,
meaning that there is a strict separation between *what* is being
selected and *how* it is selected. The "inverse" seems to spread the
various selections either to an explicit "selector" and or the
"source", which may require more thinking (more work...) for the human
as well as the programmatic user to get it right.
* I must admit that, at first, I tried to reproduce the "direct"
example in "inverse" myself, without looking at your code, and I
failed/gave up
* (I did not try to go all possible variations to be sure that the
"inverse" part does the same as the "direct" one, I just trust you on
that.)
* (As we said before) the "inverse" require less (if any) change on
the current model. The "direct" approach requires a new predicate (or
some sort of an OWL-like trick on the vocabulary to be able to reuse
"selector").
* The "inverse" approach "feels" more elegant in some sense...:-)
Did I forget any pros and/or cons?
As we all said before, both work and, actually, I have the impression
that everyone of us could live either way. Personally, at this moment,
my (mild) preference still goes to the "direct" approach that I
continue to find more intuitive.
Ivan
P.S. Here are the formatted examples:
The "direct" structure:
```json
{
"type": "SpecificResource",
"source": "http://example.org",
"selector": [{
"type": "foo:QuerySelectorAlt",
"value": "knownItem",
"subSelector": [{
"type": "foo:PageSelector",
"value": "desiredPage",
"subSelector": [{
"type": "FragmentSelector",
"value": "namedSection",
"subSelector": [{
"type": "TextPositionSelector",
"start": 5,
"end": 28
},{
"type": "TextPositionSelectorAlt",
"start": 45,
"end": 68
}]
},{
"type": "TextQuoteSelector",
"exact": "quote in namedSelection"
}]
},{
"type": "foo:PageSelectorAlt",
"value": "desiredPage",
"subSelector": {
"type": "FragmentSelector",
"value": "namedSection",
"subSelector": {
"type": "TextPositionSelector",
"start": 5,
"end": 28
}
}
}]
},{
"type": "foo:QuerySelector",
"value": "knownItemAlt",
"subSelector": {
"type": "foo:PageSelector",
"value": "desiredPage",
"subSelector": {
"type": "FragmentSelector",
"value": "namedSection",
"subSelector": {
"type": "TextPositionSelector",
"start": 5,
"end": 28
}
}
}
}]
}
```
The "inverse" structure:
```json
{
"type": "SpecificResource",
"selector" : [{
"type": "SpecificResource",
"selector" :[{
"type": "TextPositionSelector",
"start": 5,
"end": 28
},{
"type": "TextPositionSelectorAlt",
"start": 45,
"end": 68
}],
"source": {
"selector": {
"type": "FragmentSelector",
"value": "namedSection"
}
}
},{
"type": "TextQuoteSelector",
"exact": "quote in namedSelection"
}],
"source": {
"selector": [{
"type": "foo:PageSelector",
"value": "desiredPage"
},{
"type": "foo:PageSelectorAlt",
"value": "desiredPage"
}],
"source" : {
"selector": [{
"type": "foo:QuerySelector",
"value": "knownItem"
},{
"type": "foo:QuerySelectorAlt",
"value": "knownItem"
}],
"source": "http://example.org"
}
}
}
```
--
GitHub Notification of comment by iherman
Please view or discuss this issue at
https://github.com/w3c/web-annotation/issues/93#issuecomment-174291171
using your GitHub account
Received on Sunday, 24 January 2016 12:31:43 UTC