[Nepomuk] Problem when storing properties with the DMS
Christian Mollekopf
chrigi_1 at fastmail.fm
Thu Jun 23 20:58:23 CEST 2011
Hey,
Today I faced a problem when setting the nie:isPartOf property on a
SimpleResource item.
In the akonadi feeder storing would always fail with a message like:
"http://www.semanticdesktop.org/ontologies/2007/01/19/nie#isPartOf has a
rdfs:range of
http://www.semanticdesktop.org/ontologies/2007/01/19/nie#InformationElement."
which is at least a correct statement, but I made sure that all resources
have the types informationelement and DataObject, so it should work.
Second I wrote a little test app:
SimpleResourceGraph graph;
SimpleResource res;
res.setProperty( Soprano::Vocabulary::NAO::prefLabel(), "testresource"
);
res.setTypes(QList <QUrl>() << Vocabulary::NIE::DataObject() <<
Vocabulary::NIE::InformationElement());
graph.insert(res);
SimpleResource res2;
res2.setProperty( Soprano::Vocabulary::NAO::prefLabel(),
"testresource2" );
res2.setTypes(QList <QUrl>() << Vocabulary::NIE::DataObject() <<
Vocabulary::NIE::InformationElement());
res2.addProperty( Vocabulary::NIE::isPartOf(), res );
graph.insert(res2);
KJob *job = graph.save();
This actually worked without errors, but the property ended up on the
wrong resource (testresource instead of tesetresource2).
Vishesh had a quick look at this one.
He then put this into a unittest in datamanagementmodeltest.cpp, here we
both experienced the same issue:
QDEBUG : DataManagementModelTest::testStoreResource_nieIsPartOf()
qttest(30079)/nepomuk (storage service) Nepomuk::ResourceMerger::merge:
Invalid resource range. QUrl( "_:zb" ) has types
(QUrl("http://www.semanticdesktop.org/ontologies/2007/01/19/nie#DataObject")
, QUrl(
"http://www.semanticdesktop.org/ontologies/2007/01/19/nie#InformationElement"
) )
QDEBUG : DataManagementModelTest::testStoreResource_nieIsPartOf()
"/home/chrigi/devel/kde/build/kde-runtime/nepomuk/services/storage/test/datamanagementmodeltest(30079)"
Soprano: "Invalid argument (1)":
"http://www.semanticdesktop.org/ontologies/2007/01/19/nie#isPartOf has a
rdfs:range of
http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#FileDataObject."
QDEBUG : DataManagementModelTest::testStoreResource_nieIsPartOf()
qttest(30079)/nepomuk (storage service)
Nepomuk::DataManagementModel::storeResources: MERGING FAILED!
QDEBUG : DataManagementModelTest::testStoreResource_nieIsPartOf()
"/home/chrigi/devel/kde/build/kde-runtime/nepomuk/services/storage/test/datamanagementmodeltest(30079)"
Soprano: "Invalid argument (1)":
"http://www.semanticdesktop.org/ontologies/2007/01/19/nie#isPartOf has a
rdfs:range of
http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#FileDataObject."
The reported range is actually wrong, as nie:isPartOf has a range of
nie:InformationElement, and not nie:DataObject (repectively
nfo:FileDataObject).
Here are the tests I used: http://paste.kde.org/86809/
The first one doesn't work it seems. It is very well possible that it is
also not supposed to work this way.
Anyways, I'm stuck, any help appreciated =)
Cheers,
Chris
More information about the Nepomuk
mailing list