[sc34wg3] Which set is the unconstrained scope? (SAM-issue 'scope-unconstrained-rep')
Marc de Graauw
sc34wg3@isotopicmaps.org
Sun, 9 Jun 2002 14:31:18 +0200
[Bernard Vatant]
> Marc
>
> > 1) It is kind of strange to put this in a standard like the SAM. It would
> > either require Topic Map authors to reify their Topic Map, or have a Topic
> > Map
> > merge process do it for them. While it is certainly often useful to reify
> > your
> > Topic Map, _requiring_ it would seem unnecessary.
>
> Reification might not be required. Another way would be (have been) to have
> <scope> as
> direct child of <topicMap> itself.
> And when this element is not explicited, then the default scope would be the
> reified
> <topicMap>. or something like that.
>
That's what I mean. A Topic Map engine would add topics (reified Topic Maps) to
my merged Topic Map that I haven't asked for.
> > 2) What if you really want to say something that is valid always and
> > everywhere? What if I want to express "The subject with identity 'MdG' has
> > as
> > its name 'Marc de Graauw', always and everywhere!" Your solution would
> > automatically scope it down to the containing Topic Map.
>
> Well ... "valid always and everywhere" is something I would never dare
> asserting.
Hmmm. There are statements that are very hard to scope. 'Marc de Graauw' is my
name in any context. While it is true that I did not exist in the past,
Nostradamus could have said 'There will be a man called "Marc de Graauw" one
day". And while not everybody knows me, saying 'Nobody in Buenos Aires knows
"Marc de Graauw"' is a maeningful statement. So if scope is an extent of
validity, how do I meaningfully scope the assignment of the name 'Marc de
Graauw' to a subject with a certain identity? I certainly want to assert much
more than 'The name of this subject is "Marc de Graauw" within the context of
this Topic Map', which your interpretation of the unconstrained scope would
imply if I do not scope my assertion explicitly. Yet what scope do I choose for
my assertion? Most scopes I can think of (region, language, time period,
profession etc.) are much more restrictive than I want. So what scope do I
choose?
Your interpretation of the unconstrained scope is at odds with XTM, where it
says "Assignments made in the unconstrained scope are always valid", though it
is not at odds with ISO 13250 where no such statement is made. (Of course being
at odds with XTM is not necessarily a problem as the XTM and ISO 13250 have
different positions on this subject.)
> Or publish a PSI for your notion of "always and everyhere" and use it as a
> scope.
I cannot publish PSI's as I am not an organization with the long-term
commitment that publishing PSI's requires, but maybe you could :-)
> I'm afraid I miss your point. Maybe we should test that on less academic
> examples :))
>
This was a very bad example on my part. Let's try another one:
In my 'Business Map' Topic Map (www.marcdegraauw.com/itm) I want to scope
associations by (among other things) Business Department: Sales, Marketing, et
cetera. The association I want to scope is a mapping between elements in
Business vocabularies, i.e. 'company_name can be used as CustomerName'.
CustomerName and company_name are (names of) topics themselves. I do not use
subject indicators because these assertions are unidirectional, i.e. I do not
know whether 'CustomerName can be used as company_name'. When I scope the
assignment with {Sales}, I want to assert that the mapping maybe used for the
business processes of the department Sales. When I scope with {Sales,
Marketing} I want to assert that the mapping maybe used for the business
processes of the department Sales and for those of Marketing. When I do not
scope explicitly, I want to assert that the mapping is valid for all Business
Departments, not only as a coincidence (all existing business departments to
have this this mapping) but as a general rule (the definition of CustomerName
is such that it is a subset of company_name and thus the mapping is always
valid). Now when I merge, I will often need to clean up the resulting topic
map. For instance, the resulting Topic Map might have two associations:
- 'CustomerName can be used as company_name' within scope {Sales}
- 'CustomerName can be used as company_name' within scope {Sales, Marketing}
The first association can be thrown away, since the second one already says
that the mapping is valid for business processes of the Sales department, and
if the Topic Maps are large this would result in an enormous clutter of
redundant associations. So my application needs a process that cleans up the
resulting Topic Map according to this rule: If there are two associations that
are equal in all respects except scope, and the scope of the former one is a
subset of the scope of the latter one, the former one can be removed. Now when
the unconstrained scope is the set of all topics, I could use the unconstrained
scope for associations that are valid for all business departments, and this
rule would work fine. For instance, when a Topic Map would contain:
- 'CustomerName can be used as company_name' within scope {Sales}
- 'CustomerName can be used as company_name'
the first association would be cleaned up because {Sales} is a subset of the
set of all topics, and this is what I want.
When your interpretation of the unconstrained scope were implemented in the
Topic Map engine I use for merging, I could no longer use the unconstrained
scope for this purpose, because the Topic Map engine would generate:
- 'CustomerName can be used as company_name' within scope {Sales}
- 'CustomerName can be used as company_name' within scope
{reified_originating_topic_map}
and {Sales} is not a subset of {reified_originating_topic_map}. This is what I
mean when I say your solution does not scale well when we expand scope.
I would thus be forced to scope associations that are valid for all business
departments with either:
1) all business departments, which is a maintenance nightmare when new business
departments are added, or,
2) a scope meaning all business departments, existing and future, i.e. scope it
with {this_thing_means_all_departments}.
Now the problem with this second option is that {Sales, Marketing} is not a
subset of {this_thing_means_all_departments} (since the second set only
contains a single element and not all departments). So I would need to build a
special rule into my cleanup process: If there are two associations that are
equal in all respects except scope, and the scope of the former one is a subset
of the scope of the latter one OR THE SCOPE OF THE LATTER ONE IS
{this_thing_means_all_departments} THEN the former one can be removed. This
would work, but the solution with the unconstrained scope is much more elegant.
Of course I do not want to argue the standard should define the unconstrained
scope as the set of all topics because this would solve my problem. The point
is that the behaviour of the Topic Map I described above is of a very general
type, and I think a lot of applications would want to have implement similar
behaviour. What I argue is that the unconstrained scope was intended for this
kind of behaviour, at least in XTM ("Assignments made in the unconstrained
scope are always valid") and that the representation of the unconstrained scope
as the set of all topics is in line with this behaviour.
Another point: you propose another solution as the representation of the
unconstrained scope, and I agree it's a viable and intelligent alternative,
though I'm not convinced yet it is the best solution. However, in your first
response you write:
> Saying that the unconstrained scope is an empty set is a non-sense, saying
it's the set of
> all topics in the topic map is as silly as can be, as you very well show ...
and saying
> it's universal is arrogant :))
You are a mathematician. So what is wrong with the alternative of saying the
unconstrained scope is the set of all topics? Does it lead to problems if we
use that solution?
Marc