[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [nepomuk-core/feature/virtuosoInference] services/storage: Remove visibility support from ClassAndPr
From: Sebastian Trueg <trueg () kde ! org>
Date: 2012-03-31 19:00:30
Message-ID: 20120331190030.ED51CA60C8 () git ! kde ! org
[Download RAW message or body]
Git commit dded30ce71027815817007b1e854fdabad2774c8 by Sebastian Trueg.
Committed on 31/03/2012 at 20:58.
Pushed by trueg into branch 'feature/virtuosoInference'.
Remove visibility support from ClassAndPropertyTree.
Now that we changed the visibility handling and removed the crappy
inferencer 2 there is no need for the visibility handling anymore.
M +4 -77 services/storage/classandpropertytree.cpp
M +1 -6 services/storage/classandpropertytree.h
M +5 -38 services/storage/test/classandpropertytreetest.cpp
M +1 -3 services/storage/test/classandpropertytreetest.h
http://commits.kde.org/nepomuk-core/dded30ce71027815817007b1e854fdabad2774c8
diff --git a/services/storage/classandpropertytree.cpp \
b/services/storage/classandpropertytree.cpp index 046525b..98954ae 100644
--- a/services/storage/classandpropertytree.cpp
+++ b/services/storage/classandpropertytree.cpp
@@ -52,7 +52,6 @@ public:
ClassOrProperty()
: isProperty(false),
maxCardinality(0),
- userVisible(0),
defining(0) {
}
@@ -71,9 +70,6 @@ public:
/// the max cardinality if this is a property with a max cardinality set, 0 \
otherwise int maxCardinality;
- /// 0 - undecided, 1 - visible, -1 - non-visible
- int userVisible;
-
/// 0 - undecided, 1 - defining, -1 - non-defining
int defining;
@@ -148,15 +144,6 @@ int Nepomuk::ClassAndPropertyTree::maxCardinality(const QUrl \
&type) const return 0;
}
-bool Nepomuk::ClassAndPropertyTree::isUserVisible(const QUrl &type) const
-{
- QMutexLocker lock(&m_mutex);
- if(const ClassOrProperty* cop = findClassOrProperty(type))
- return cop->userVisible == 1;
- else
- return true;
-}
-
QUrl Nepomuk::ClassAndPropertyTree::propertyDomain(const QUrl &uri) const
{
QMutexLocker lock(&m_mutex);
@@ -345,14 +332,12 @@ void Nepomuk::ClassAndPropertyTree::rebuildTree(Soprano::Model* \
model)
"OPTIONAL { ?r rdfs:subPropertyOf ?p . ?p a \
rdf:Property . } . } " "OPTIONAL { ?r %1 ?mc . } . "
"OPTIONAL { ?r %2 ?c . } . "
- "OPTIONAL { ?r %3 ?v . } . "
- "OPTIONAL { ?r %4 ?domain . } . "
- "OPTIONAL { ?r %5 ?range . } . "
- "FILTER(?r!=%6) . "
+ "OPTIONAL { ?r %3 ?domain . } . "
+ "OPTIONAL { ?r %4 ?range . } . "
+ "FILTER(?r!=%5) . "
"}" )
.arg(Soprano::Node::resourceToN3(NRL::maxCardinality()),
Soprano::Node::resourceToN3(NRL::cardinality()),
- Soprano::Node::resourceToN3(NAO::userVisible()),
Soprano::Node::resourceToN3(RDFS::domain()),
Soprano::Node::resourceToN3(RDFS::range()),
Soprano::Node::resourceToN3(RDFS::Resource()));
@@ -381,10 +366,6 @@ void Nepomuk::ClassAndPropertyTree::rebuildTree(Soprano::Model* \
model)
r_cop->isProperty = it["pt"].isValid();
- if( v.isLiteral() ) {
- r_cop->userVisible = (v.literal().toBool() ? 1 : -1);
- }
-
if(mc > 0 || c > 0) {
r_cop->maxCardinality = qMax(mc, c);
}
@@ -420,7 +401,7 @@ void Nepomuk::ClassAndPropertyTree::rebuildTree(Soprano::Model* \
model) if(m_tree.contains(NAO::identifier()))
m_tree[NAO::identifier()]->range = XMLSchema::string();
- // make sure rdfs:Resource is visible by default
+ // add rdfs:Resource as parent for all top-level classes
ClassOrProperty* rdfsResourceNode = 0;
QHash<QUrl, ClassOrProperty*>::iterator rdfsResourceIt = \
m_tree.find(RDFS::Resource()); if( rdfsResourceIt == m_tree.end() ) {
@@ -431,10 +412,6 @@ void Nepomuk::ClassAndPropertyTree::rebuildTree(Soprano::Model* \
model) else {
rdfsResourceNode = rdfsResourceIt.value();
}
- if( rdfsResourceNode->userVisible == 0 ) {
- rdfsResourceNode->userVisible = 1;
- }
- // add rdfs:Resource as parent for all top-level classes
for ( QHash<QUrl, ClassOrProperty*>::iterator it = m_tree.begin();
it != m_tree.end(); ++it ) {
if( it.value() != rdfsResourceNode && it.value()->directParents.isEmpty() ) \
{ @@ -442,13 +419,6 @@ void \
Nepomuk::ClassAndPropertyTree::rebuildTree(Soprano::Model* model) }
}
- // update all visibility
- for ( QHash<QUrl, ClassOrProperty*>::iterator it = m_tree.begin();
- it != m_tree.end(); ++it ) {
- QSet<QUrl> visitedNodes;
- updateUserVisibility( it.value(), visitedNodes );
- }
-
// complete the allParents lists
for ( QHash<QUrl, ClassOrProperty*>::iterator it = m_tree.begin();
it != m_tree.end(); ++it ) {
@@ -508,36 +478,6 @@ bool Nepomuk::ClassAndPropertyTree::contains(const QUrl& uri) \
const
/**
- * Set the value of nao:userVisible.
- * A class is visible if it has at least one visible direct parent class.
- */
-int Nepomuk::ClassAndPropertyTree::updateUserVisibility( ClassOrProperty* cop, \
QSet<QUrl>& visitedNodes )
-{
- if ( cop->userVisible != 0 ) {
- return cop->userVisible;
- }
- else {
- for ( QSet<QUrl>::iterator it = cop->directParents.begin();
- it != cop->directParents.end(); ++it ) {
- // avoid endless loops
- if( visitedNodes.contains(*it) )
- continue;
- visitedNodes.insert(*it);
- if ( updateUserVisibility( m_tree[*it], visitedNodes ) == 1 ) {
- cop->userVisible = 1;
- break;
- }
- }
- if ( cop->userVisible == 0 ) {
- // default to invisible
- cop->userVisible = -1;
- }
- //kDebug() << "Setting nao:userVisible of" << cop->uri.toString() << ( \
cop->userVisible == 1 );
- return cop->userVisible;
- }
-}
-
-/**
* Set the value of defining.
* An defining property has at least one defining direct parent property.
*/
@@ -625,19 +565,6 @@ QList<Soprano::Statement> \
Nepomuk::ClassAndPropertyTree::simpleResourceGraphToSt return list;
}
-QList<QUrl> Nepomuk::ClassAndPropertyTree::visibleTypes() const
-{
- QList<QUrl> types;
- QHash<QUrl, ClassOrProperty*>::const_iterator end = m_tree.constEnd();
- for(QHash<QUrl, ClassOrProperty*>::const_iterator it = m_tree.constBegin(); it \
!= end; ++it) {
- const ClassOrProperty* cop = *it;
- if(!cop->isProperty && cop->userVisible == 1) {
- types << cop->uri;
- }
- }
- return types;
-}
-
Nepomuk::ClassAndPropertyTree * Nepomuk::ClassAndPropertyTree::self()
{
return s_self;
diff --git a/services/storage/classandpropertytree.h \
b/services/storage/classandpropertytree.h index b54daeb..508004a 100644
--- a/services/storage/classandpropertytree.h
+++ b/services/storage/classandpropertytree.h
@@ -1,6 +1,6 @@
/*
This file is part of the Nepomuk KDE project.
- Copyright (C) 2010 Sebastian Trueg <trueg@kde.org>
+ Copyright (C) 2010-2012 Sebastian Trueg <trueg@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -64,7 +64,6 @@ public:
*/
bool isChildOf(const QList<QUrl> & types, const QUrl& superClass) const;
int maxCardinality(const QUrl& type) const;
- bool isUserVisible(const QUrl& type) const;
QUrl propertyDomain(const QUrl& uri) const;
QUrl propertyRange(const QUrl& uri) const;
@@ -75,9 +74,6 @@ public:
/// \return \p true if \p uri is an defining property, \p false otherwise
bool isDefiningProperty(const QUrl& uri) const;
- /// \return A list of all known rdf classes that are visible (nao:userVisible)
- QList<QUrl> visibleTypes() const;
-
/// will try very hard to convert a variant into a node. Supports literal XML \
types and QUrl
Soprano::Node variantToNode(const QVariant& value, const QUrl& property) const;
QSet<Soprano::Node> variantListToNodeSet(const QVariantList& vl, const QUrl& \
property) const; @@ -94,7 +90,6 @@ private:
class ClassOrProperty;
const ClassOrProperty* findClassOrProperty(const QUrl& uri) const;
- int updateUserVisibility(ClassOrProperty *cop, QSet<QUrl> &visitedNodes);
int updateDefining(ClassOrProperty* cop, QSet<QUrl>& definingNodes);
QSet<QUrl> getAllParents(ClassOrProperty *cop, QSet<QUrl> &visitedNodes);
diff --git a/services/storage/test/classandpropertytreetest.cpp \
b/services/storage/test/classandpropertytreetest.cpp index 6d6ee75..acd2d5f 100644
--- a/services/storage/test/classandpropertytreetest.cpp
+++ b/services/storage/test/classandpropertytreetest.cpp
@@ -1,6 +1,6 @@
/*
This file is part of the Nepomuk KDE project.
- Copyright (C) 2010-2011 Sebastian Trueg <trueg@kde.org>
+ Copyright (C) 2010-2012 Sebastian Trueg <trueg@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -64,30 +64,24 @@ void ClassAndPropertyTreeTest::init()
// we create one fake ontology
//
// situations we need to test:
- // * class that is marked visible should stay visible
- // * class that is marked invisible should stay invisible
- // * non-marked subclass of visible should be visible, too
- // * non-marked subclass of invisible should be invisible, too
// * marked subclass should keep its own visiblity and not inherit from parent
// * whole branch should inherit from parent
- // * if one parent is visible the class is visible, too, even if N other parents \
are not
- // * if all parents are invisible, the class is invisible, even if higher up in \
the branch a class is visible // * properly handle loops (as in: do not run into an \
endless loop) //
// A
- // |- B - invisible
+ // |- B
// |- C
- // |- D - visible
+ // |- D
// |- E
// |- F
// |- G
//
- // AA - invisible
+ // AA
// | - F
// | - G
//
// X
- // |- Y - invisible
+ // |- Y
// |- Z
// |- X
@@ -146,21 +140,6 @@ void ClassAndPropertyTreeTest::init()
m_typeTree->rebuildTree(m_model);
}
-void ClassAndPropertyTreeTest::testVisibility()
-{
- QVERIFY(m_typeTree->isUserVisible(QUrl("onto:/A")));
- QVERIFY(!m_typeTree->isUserVisible(QUrl("onto:/B")));
- QVERIFY(!m_typeTree->isUserVisible(QUrl("onto:/C")));
- QVERIFY(m_typeTree->isUserVisible(QUrl("onto:/D")));
- QVERIFY(m_typeTree->isUserVisible(QUrl("onto:/E")));
- QVERIFY(m_typeTree->isUserVisible(QUrl("onto:/F")));
- QVERIFY(!m_typeTree->isUserVisible(QUrl("onto:/G")));
- QVERIFY(!m_typeTree->isUserVisible(QUrl("onto:/AA")));
- QVERIFY(!m_typeTree->isUserVisible(QUrl("onto:/X"))); // because only top-level \
classes inherit from rdfs:Resource
- QVERIFY(!m_typeTree->isUserVisible(QUrl("onto:/Y")));
- QVERIFY(!m_typeTree->isUserVisible(QUrl("onto:/Z")));
-}
-
void ClassAndPropertyTreeTest::testParents()
{
QCOMPARE(m_typeTree->allParents(QUrl("onto:/A")).count(), 1);
@@ -273,18 +252,6 @@ void ClassAndPropertyTreeTest::testProperties()
QCOMPARE(m_typeTree->maxCardinality(QUrl("prop:/D")), 1);
}
-void ClassAndPropertyTreeTest::testVisibleType()
-{
- const QList<QUrl> types = m_typeTree->visibleTypes();
- kDebug() << types;
- QCOMPARE(types.count(), 5);
- QVERIFY(types.contains(RDFS::Resource()));
- QVERIFY(types.contains(QUrl("onto:/A")));
- QVERIFY(types.contains(QUrl("onto:/D")));
- QVERIFY(types.contains(QUrl("onto:/E")));
- QVERIFY(types.contains(QUrl("onto:/F")));
-}
-
QTEST_KDEMAIN_CORE(ClassAndPropertyTreeTest)
#include "classandpropertytreetest.moc"
diff --git a/services/storage/test/classandpropertytreetest.h \
b/services/storage/test/classandpropertytreetest.h index 29d961b..f078d91 100644
--- a/services/storage/test/classandpropertytreetest.h
+++ b/services/storage/test/classandpropertytreetest.h
@@ -1,6 +1,6 @@
/*
This file is part of the Nepomuk KDE project.
- Copyright (C) 2010-2011 Sebastian Trueg <trueg@kde.org>
+ Copyright (C) 2010-2012 Sebastian Trueg <trueg@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -40,12 +40,10 @@ private Q_SLOTS:
void initTestCase();
void cleanupTestCase();
void init();
- void testVisibility();
void testParents();
void testVariantToNode_data();
void testVariantToNode();
void testProperties();
- void testVisibleType();
private:
KTempDir* m_storageDir;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic