On 11/23/2012 11:17 AM, Vishesh Handa wrote:
On Fri, Nov 23, 2012 at 3:30 PM, Jörg Ehrichs <[email protected]
<mailto:[email protected]>> wrote:
2012/11/23 Marco Martin <[email protected] <mailto:[email protected]>>:
> On Friday 23 November 2012, Vishesh Handa wrote:
>
>> <nepomuk:/res/23161f9c-8839-4de3-bba0-affdd6d654ef>
>> rdf:type
>> nmm:MusicPiece
>> rdf:type
>> nfo:FileDataObject
>> rdf:type
>> nfo:Audio
>> rdf:type
>> nie:InformationElement
>> nie:url
>> file:///home/vishesh/Music/where_does_the_good_go.mp3
>>
>> Storing this URL makes accessing file resources quite
convenient. But I
>> fear it has been a terrible design decision. By storing the url
we face the
>> following problems -
>
> uhm, probably is right, keeping the full file url consistent is a
mess,
> however...
>
> a very common use case is in the c++ code, doing
Nepomuk2::Resource(file path)
>
> needing a fast way to obtain the resource associated to a
particular file
> (like in https://bugs.kde.org/show_bug.cgi?id=310525)
>
> otherwise how could be done quickly to have the metadata of a
file given we
> have the file, and the other way around?
It would be slightly more expensive, but not too hard. One would have to
retrieve the resource for each file resource till the root element. So
if you give me something like this
Resource("/home/vishesh/kde/src/file.cpp")
I'll have to do either multiple queries -
select ?r where { ?r nfo:filename "home" ; nie:isPartOf <rootElement> .
} -> homeRes
select ?r where { ?r nfo:filename "vishesh" ; nie:isPartOf <homeRes> . }
-> visheshRes
..
..
or maybe it can be done in one query?
I think so:
select ?r where { ?r nfo:filename "file.cpp" ; nie:isPartOf [
nfo:filename "src" ; nie:isPartOf [ nfo:filename "kde" ... ] ] }
I am, however, not sure which is faster.
In general I like the idea to get rid of file URL, a lot actually. This
could even mean that you get rid of nie:url alltogether. In the end
there is really no need to use nie:url for http or any other remote
resource...
As for your (3): that should actually be fairly simple. I wrote the
code, which feels very hacky (not the code itself, but the need for its
existance) and it could easily be adapted to only update nfo:filename
and nie:isPartOf. Much simpler in the end.
All in all: +10 from me if you can get the direct file resource access fast.
Cheers,
Sebastian
You get the gist. These all could be cached in memory so it shouldn't be
a big problem. This is actually quite analogous to what the kernel does
in the file system later, except that it matches inodes to their
filename. We will be matching resource uris.
I'd say retrieving metadata from a file is a "one-time" job of the
file-indexer.
Afterwards, we should rely on the data inside Nepomuk and only get
more once this fails.
In addition, the nepomuk-core part could offer a convenient method to
create the file url for the end-user and also cache this information
for a while to speed up the query. I assume its faster to check
QFile::exists() than creating the url with every query again.
Of course. This all should be transparently handled in the resource class.
Other than that, I like the idea. It seems there are several problems
with remove able media, which doesn't seem to get solved with the
current way.
Yeah. I think so as well.
But it's a BIG change. All the previous data will first need to be ported.
_______________________________________________
Nepomuk mailing list
[email protected] <mailto:[email protected]>
https://mail.kde.org/mailman/listinfo/nepomuk
--
Vishesh Handa
_______________________________________________
Nepomuk mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/nepomuk
_______________________________________________
Nepomuk mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/nepomuk