|
From: Dicheva, D. <dic...@ws...> - 2008-06-11 15:17:10
|
Lars - thank you so much!! This is so helpful.
All the very best,
Darina
> -----Original Message-----
> From: Lars Heuer [mailto:he...@se...]
> Sent: Wednesday, June 11, 2008 11:10 AM
> To: Dicheva, Darina
> Cc: tm4...@li...; Lars Johnsen;
> tm4...@li...
> Subject: Re: Problem to create a new topic using the name of
> a deleted topic
>
> Hi Darina,
>
> > Thanks for your idea - it seems good; what do you mean by item
> > identifiers/source locators - subjectIdentifier? subjectLocator?
>
> I meant "source locators" which have been renamed into "item
> identifiers" in the TMDM.
>
> The "TopicMapObject" base class has the methods
> "addSourceLocator(Locator)", "removeSourceLocator(Locator)"
> and "getSourceLocators()".
>
> I assume that your code (with topic name merging enabled) looks like
> this:
>
> Fragment A:
>
> Topic topicA = tm.createTopic();
> TopicName nameA = topic.createTopicName("Foo", null);
> // Here some occurrences, assocs etc.
>
>
> Fragment B:
>
> Topic topicB = tm.createTopic();
> TopicName nameB = topic.createTopicName("Foo", null);
>
>
> Result: The topics "topicA" and "topicB" are merged since
> they have the same name "Foo".
>
>
> The equivalent code using my solution would look like this
> (topic name merging NOT enabled!):
>
> Fragment A:
> Topic topicA = tm.createTopic();
> Locator iidA = tm.createLocator("http://www.example.org/#" +
> "Foo");
> topicA.addSourceLocator(iidA);
> TopicName nameA = topic.createTopicName("Foo", null);
> // Here some occurrences, assocs etc.
>
>
> Fragment B:
> Topic topicB = tm.createTopic();
> Locator iidB = tm.createLocator("http://www.example.org/#" +
> "Foo");
> topicB.addSourceLocator(iidB);
>
> Result: The topics "topicA" and "topicB" are merged because
> they have the same source locator (<http://www.example.org/#Foo>).
>
> Maybe you have to catch the "TopicMustMergeException" if you
> add the source locator to the topics, that depends on your "automerge"
> setting. If "automerge" is not enabled, you can catch that
> exception and merge the topics manually via Topic#mergeIn(Topic).
>
> > In other orders, how the merge algorithm works in case merge by
> > topicName is false?
>
> Merging is done, if two topic have:
> * at least one equal locator in their [subject identifiers]
> properties,
> * at least one equal locator in their [source locators] properties,
> * at least one equal locator in their [subject locators] properties,
>
> See also: <http://www.isotopicmaps.org/sam/sam-model/#d0e739>
>
> (In TM4J, the [subject locators] property does not exists,
> since it can handle max. one subject locator (XTM 1.0 legacy)).
>
> Best regards,
> Lars
> --
> Semagia
> <http://www.semagia.com>
>
>
>
|