You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lenya.apache.org by Andreas Hartmann <an...@apache.org> on 2006/11/14 08:57:25 UTC

[1.4] Storing and resolving document references

Hi Lenya devs,

the new link URI syntax allows to omit the target language
of a link. The actual target translation depends on the existence
of a particular language version and on the fallback mode of
the link resolver.

The other aspect of the issue is that, with a big number of
documents, we need an efficient lookup mechanism which documents
are referenced by a specific document, and which documents
reference a specific document.

Because link resolving includes a dynamic factor, we can't store
the references on a document-to-document basis, which would be
necessary if we store them in document meta (dc:references,
dc:isReferencedBy).

I see the following solutions:

1. Links must include a specific language version (no dynamics).
   But this wouldn't be a real solution, since fallback to the
   default language could still be active, so the dynamic factor
   would still be there.

2. References are stored in a global table.
   This would certainly work, but it would require a lookup and
   wouldn't scale well accross multiple instances (a centralized
   link management service would be required).

3. We introduce language-independent meta data and store all
   references there. We couldn't use the references/isReferencedBy
   meta data, since we need source-target pairs, but this is not
   really a problem thanks to the new configurable meta data.

   So, the values of the "links" meta data could look like this:

     de lenya-document:<uuid>,lang=...
     en lenya-document:<uuid>

   Or we could add an arrow to clarify the syntax:

     de -> lenya-document:<uuid>,lang=...
     en -> lenya-document:<uuid>

   IMO this looks like the most convenient and efficient approach.
   Language-independent meta data would be convenient anyway.


WDYT?

-- Andreas


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org


Re: [1.4] Storing and resolving document references

Posted by Josias Thoeny <jo...@wyona.com>.
> Josias Thoeny schrieb:
>> Hi Andreas,
>>
>>> Hi Lenya devs,
>>>
>>> the new link URI syntax allows to omit the target language
>>> of a link. The actual target translation depends on the existence
>>> of a particular language version and on the fallback mode of
>>> the link resolver.
>>>
>>> The other aspect of the issue is that, with a big number of
>>> documents, we need an efficient lookup mechanism which documents
>>> are referenced by a specific document, and which documents
>>> reference a specific document.
>>>
>>> Because link resolving includes a dynamic factor, we can't store
>>> the references on a document-to-document basis, which would be
>>> necessary if we store them in document meta (dc:references,
>>> dc:isReferencedBy).
>>>
>>> I see the following solutions:
>>>
>>> 1. Links must include a specific language version (no dynamics).
>>>    But this wouldn't be a real solution, since fallback to the
>>>    default language could still be active, so the dynamic factor
>>>    would still be there.
>>
>> What do you mean exactly with 'fallback to the default language'?
>
> The link resolving could be implemented/configured that the default
> language is chosen if the target document doesn't exist in the
> explicitely requested language.
>
>> Does the reference management component have to know about this?
>
> The problem occurs e.g. in the following scenario (en is the
> default language):
>
> - 123[de] contains a link to 456[de]
> - 456[de] doesn't exist
> - 456[en] shall be deleted
>
> This would cause a dead link in 123[de] if fallback to the default
> language is enabled, otherwise the link is already dead. Should
> the delete screen show a warning?

Thanks for the explanation.
Perhaps the link 123[de] -> 456[de] could be considered as dead even
though the fallback to 456[en] exists. But that would not really solve the
problem either... so forget my comment.

josias

>
>
>>> 2. References are stored in a global table.
>>>    This would certainly work, but it would require a lookup and
>>>    wouldn't scale well accross multiple instances (a centralized
>>>    link management service would be required).
>>>
>>> 3. We introduce language-independent meta data and store all
>>>    references there. We couldn't use the references/isReferencedBy
>>>    meta data, since we need source-target pairs, but this is not
>>>    really a problem thanks to the new configurable meta data.
>>>
>>>    So, the values of the "links" meta data could look like this:
>>>
>>>      de lenya-document:<uuid>,lang=...
>>>      en lenya-document:<uuid>
>>>
>>>    Or we could add an arrow to clarify the syntax:
>>>
>>>      de -> lenya-document:<uuid>,lang=...
>>>      en -> lenya-document:<uuid>
>>>
>>>    IMO this looks like the most convenient and efficient approach.
>>>    Language-independent meta data would be convenient anyway.
>>>
>>>
>>> WDYT?
>>
>> The third option probably makes the most sense for scalability and
>> flexibility reasons. And as you say, language-independent meta-data
>> would
>> be useful anyway. However it's not the easiest to implement...
>>
>> About the editor integration, it would require to scan the document for
>> links after saving, and to update the reference meta-data.
>
> Yes, I guess this is the only universal approach.
>
>> In the editor, the links probably have to be displayed as links with a
>> normal path like 'foo/bar_de.html'. This means that before the document
>> is
>> displayed in the editor, it has to be transformed and the links have to
>> be
>> resolved. After saving, the links have to be transformed back to the
>> uuid
>> form (and that's where the reference data could be updated).
>> Another question is how to set a link without language in the editor
>> gui.
>> Maybe there could be a checkbox to select 'link to default language' or
>> something like that.
>
> Good points ...
> Thanks for your comments!
>
> -- Andreas
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
> For additional commands, e-mail: dev-help@lenya.apache.org
>
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org


Re: [1.4] Storing and resolving document references

Posted by Andreas Hartmann <an...@apache.org>.
Josias Thoeny schrieb:
> Hi Andreas,
> 
>> Hi Lenya devs,
>>
>> the new link URI syntax allows to omit the target language
>> of a link. The actual target translation depends on the existence
>> of a particular language version and on the fallback mode of
>> the link resolver.
>>
>> The other aspect of the issue is that, with a big number of
>> documents, we need an efficient lookup mechanism which documents
>> are referenced by a specific document, and which documents
>> reference a specific document.
>>
>> Because link resolving includes a dynamic factor, we can't store
>> the references on a document-to-document basis, which would be
>> necessary if we store them in document meta (dc:references,
>> dc:isReferencedBy).
>>
>> I see the following solutions:
>>
>> 1. Links must include a specific language version (no dynamics).
>>    But this wouldn't be a real solution, since fallback to the
>>    default language could still be active, so the dynamic factor
>>    would still be there.
> 
> What do you mean exactly with 'fallback to the default language'?

The link resolving could be implemented/configured that the default
language is chosen if the target document doesn't exist in the
explicitely requested language.

> Does the reference management component have to know about this?

The problem occurs e.g. in the following scenario (en is the
default language):

- 123[de] contains a link to 456[de]
- 456[de] doesn't exist
- 456[en] shall be deleted

This would cause a dead link in 123[de] if fallback to the default
language is enabled, otherwise the link is already dead. Should
the delete screen show a warning?


>> 2. References are stored in a global table.
>>    This would certainly work, but it would require a lookup and
>>    wouldn't scale well accross multiple instances (a centralized
>>    link management service would be required).
>>
>> 3. We introduce language-independent meta data and store all
>>    references there. We couldn't use the references/isReferencedBy
>>    meta data, since we need source-target pairs, but this is not
>>    really a problem thanks to the new configurable meta data.
>>
>>    So, the values of the "links" meta data could look like this:
>>
>>      de lenya-document:<uuid>,lang=...
>>      en lenya-document:<uuid>
>>
>>    Or we could add an arrow to clarify the syntax:
>>
>>      de -> lenya-document:<uuid>,lang=...
>>      en -> lenya-document:<uuid>
>>
>>    IMO this looks like the most convenient and efficient approach.
>>    Language-independent meta data would be convenient anyway.
>>
>>
>> WDYT?
> 
> The third option probably makes the most sense for scalability and
> flexibility reasons. And as you say, language-independent meta-data would
> be useful anyway. However it's not the easiest to implement...
> 
> About the editor integration, it would require to scan the document for
> links after saving, and to update the reference meta-data.

Yes, I guess this is the only universal approach.

> In the editor, the links probably have to be displayed as links with a
> normal path like 'foo/bar_de.html'. This means that before the document is
> displayed in the editor, it has to be transformed and the links have to be
> resolved. After saving, the links have to be transformed back to the uuid
> form (and that's where the reference data could be updated).
> Another question is how to set a link without language in the editor gui.
> Maybe there could be a checkbox to select 'link to default language' or
> something like that.

Good points ...
Thanks for your comments!

-- Andreas


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org


Re: [1.4] Storing and resolving document references

Posted by Josias Thoeny <jo...@wyona.com>.
Hi Andreas,

> Hi Lenya devs,
>
> the new link URI syntax allows to omit the target language
> of a link. The actual target translation depends on the existence
> of a particular language version and on the fallback mode of
> the link resolver.
>
> The other aspect of the issue is that, with a big number of
> documents, we need an efficient lookup mechanism which documents
> are referenced by a specific document, and which documents
> reference a specific document.
>
> Because link resolving includes a dynamic factor, we can't store
> the references on a document-to-document basis, which would be
> necessary if we store them in document meta (dc:references,
> dc:isReferencedBy).
>
> I see the following solutions:
>
> 1. Links must include a specific language version (no dynamics).
>    But this wouldn't be a real solution, since fallback to the
>    default language could still be active, so the dynamic factor
>    would still be there.

What do you mean exactly with 'fallback to the default language'?
Does the reference management component have to know about this?

>
> 2. References are stored in a global table.
>    This would certainly work, but it would require a lookup and
>    wouldn't scale well accross multiple instances (a centralized
>    link management service would be required).
>
> 3. We introduce language-independent meta data and store all
>    references there. We couldn't use the references/isReferencedBy
>    meta data, since we need source-target pairs, but this is not
>    really a problem thanks to the new configurable meta data.
>
>    So, the values of the "links" meta data could look like this:
>
>      de lenya-document:<uuid>,lang=...
>      en lenya-document:<uuid>
>
>    Or we could add an arrow to clarify the syntax:
>
>      de -> lenya-document:<uuid>,lang=...
>      en -> lenya-document:<uuid>
>
>    IMO this looks like the most convenient and efficient approach.
>    Language-independent meta data would be convenient anyway.
>
>
> WDYT?

The third option probably makes the most sense for scalability and
flexibility reasons. And as you say, language-independent meta-data would
be useful anyway. However it's not the easiest to implement...

About the editor integration, it would require to scan the document for
links after saving, and to update the reference meta-data.
In the editor, the links probably have to be displayed as links with a
normal path like 'foo/bar_de.html'. This means that before the document is
displayed in the editor, it has to be transformed and the links have to be
resolved. After saving, the links have to be transformed back to the uuid
form (and that's where the reference data could be updated).
Another question is how to set a link without language in the editor gui.
Maybe there could be a checkbox to select 'link to default language' or
something like that.

josias

>
> -- Andreas
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
> For additional commands, e-mail: dev-help@lenya.apache.org
>
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org


Re: [1.4] Storing and resolving document references

Posted by Andreas Hartmann <an...@apache.org>.
Andreas Hartmann schrieb:

[...]

> 3. We introduce language-independent meta data and store all
>    references there. We couldn't use the references/isReferencedBy
>    meta data, since we need source-target pairs, but this is not
>    really a problem thanks to the new configurable meta data.
> 
>    So, the values of the "links" meta data could look like this:
> 
>      de lenya-document:<uuid>,lang=...
>      en lenya-document:<uuid>
> 
>    Or we could add an arrow to clarify the syntax:
> 
>      de -> lenya-document:<uuid>,lang=...
>      en -> lenya-document:<uuid>

BTW - to avoid scanning all documents when deleting a document,
we would need to store links to the document as well:

  lenya-document:<uuid>,lang=... -> de

Maybe dc:references and dc:isReferencedBy is not that bad.

The question is how to integrate this with the editors ...

-- Andreas


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org