I was planning to have #3 ( no synchronization ), but I think #1 would be better. #2 is a compromise between the two that won't really help us. Relations are what define resources. Without them, they are just unique identifiers.<br>
<br>#1 seems interesting, but we'll have to implement a way to synchronize the offline metadata when the user comes online are performs another search. There is the added problem of privacy. Suppose user B contains A's metadata, and A marks its metadata as no longer sharable, we should probably delete A's metadata from B, but B could possible prevent this or make copies. <br>
<br>As the whole object being a resource problem. Yes, we'll have to copy everything about the object as well. There is no way to avoid it, but typically every resource contains a maximum of 20 properties, so it shouldn't be that much.<br>
<br>BTW, it would be better to have resource uris in the form of nepomuk:/telepathy/whatever instead of telepathy:/nepomuk/whatever. There are loads of checks in the Nepomuk Core and services which make decisions based on a url's scheme. So it would be better to stick to "nepomuk".<br>
<br><b>What relations should be copied?</b><br>One option would to be copy all the relations ( shouldn't be too much ), but I think we should only copy the relations returned by the result of a query. That way it would be a lot easier to determine what relations other users are allowed to access, and would prevent copying or relations the user doesn't want to share. Copying only the transfered relations would require less requests.<br>
<b><br>P2P Network</b><br>That was the whole idea behind metadata sharing. Hopefully I'll be able to implement some form of it. :)<br><b><br>Who to query?<br></b>One option is that we have select queries, where the user chooses the contact before performing the query. The other is to perform the query on all the contacts ( might be a little expensive )<br>
<br><b>Sharing others metadata </b><br>User A has a some fragment of B's metadata. If C queries A, should it also return B's metadata? If yes, how do we deal with privacy?<br><b><br>Forwarded Queries?</b><br>Should one contacts forward it's query to it's other clients? If we forget about privacy for a second, this would be amazing. This would be ideal for storing a huge knowledge base on multiple systems. <br>
<br>Just some random ideas<br><br>- Vishesh Handa<br><br><div class="gmail_quote">On Tue, Jun 29, 2010 at 7:01 PM, Daniele E. Domenichelli <span dir="ltr"><<a href="mailto:daniele.domenichelli@gmail.com">daniele.domenichelli@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div class="im">On 06/29/2010 12:57 PM, Artem Serebriyskiy wrote:<br>
> Can you please describe your idea in more detail?<br>
> What information is stored localy ?<br>
> And how to perform queries ? For example:<br>
> "Select all resources that have a label <string literal> "<br>
> and<br>
> " Select all [music]files that has a <NCO:Contact | where this nco:contact<br>
> is stored localy> as author".<br>
<br>
<br>
</div>Well, I have 3 different scenarios in my mind:<br>
<br>
<br>
1: during synchronization both resources and relations are copied:<br>
<br>
* resources on remote nepomuk server can be stored locally, but, in<br>
order to avoid conflicts between uri, the name can be replaced, for<br>
example:<br>
from: nepomuk:/<resource><br>
to: telepathy:/contact/<name>/nepomuk/<resource><br>
(or nepomuk:/telepathy/contact/<name>/<resource>)<br>
<br>
* relations can be copied modifying the name of the subject and of the<br>
object using the new name, for example<br>
from: nepomuk:/<resource1><br>
<relation><br>
nepomuk:/<resource2><br>
to: telepathy:/contact/<name>/nepomuk/<resource1><br>
<relation><br>
telepathy:/contact/<name>/nepomuk/<resource2><br>
<br>
In this way:<br>
* queries can be done locally even if the contact is offline<br>
* the uri for a resource will always be unequivocal (but it might<br>
require some relation to represent, for example that a resource<br>
representing a file on my pc corresponds to a resource that represents<br>
the same file on my contact's pc<br>
* When the contact is online you could use dbustubes to execute (and to<br>
listen for changes to) a specific query<br>
<br>
<br>
2: Same as 1, but only resources are copied<br>
<br>
In this way:<br>
* queries executed when the contact is online can return results using<br>
both local and remote nepomuk server (using dbustubes to execute queries<br>
on the remote server), but queries executed when the contact is offline<br>
can return results using local server only.<br>
* The local database will contain less informations, so it will probably<br>
be smaller and faster, but the times for remote queries will be probably<br>
longer due to network latency<br>
<br>
<br>
3: No synchronization at all<br>
<br>
In this way queries on remote server can be executed only if the contact<br>
is online.<br>
<br>
<br>
<br>
In all cases queries will just be a normal query that returns some<br>
resources of type "nepomuk:/" and some resources of type<br>
"telepathy:/contact/<name>/nepomuk/", but they might need to be executed<br>
both on local and on remote servers using dbustubes (and resource from<br>
remote servers must be modified to represent the name of the contact<br>
that created it)<br>
<div><div></div><div class="h5"><br>
<br>
<br>
Cheers,<br>
Daniele<br>
_______________________________________________<br>
Nepomuk mailing list<br>
<a href="mailto:Nepomuk@kde.org">Nepomuk@kde.org</a><br>
<a href="https://mail.kde.org/mailman/listinfo/nepomuk" target="_blank">https://mail.kde.org/mailman/listinfo/nepomuk</a><br>
</div></div></blockquote></div><br>