[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