server/src/app/Libraries/Mergers/CocoonAbstractRdfMerger.php
changeset 169 8fddc113095e
parent 19 eadaf0b8f02e
--- a/server/src/app/Libraries/Mergers/CocoonAbstractRdfMerger.php	Thu Jun 02 18:24:19 2016 +0200
+++ b/server/src/app/Libraries/Mergers/CocoonAbstractRdfMerger.php	Sun Jun 05 00:28:45 2016 +0200
@@ -47,7 +47,7 @@
                 $this->mergedArray[$baseResource->getUri()] = $baseGraph->toRdfPhp()[$baseResource->getUri()];
             }
             foreach($srcGraph->allOfType($nodeType) as $srcResource) {
-                if($baseResource->isBNode()) {
+                if($srcResource->isBNode()) {
                     continue;
                 }
                 if(empty($baseGraph->propertyUris($srcResource->getUri()))) {
@@ -69,10 +69,12 @@
             $baseUrl = isset($bnodeDef['base_url'])?$bnodeDef['base_url']:null;
 
             if(is_null($srcUrl) && !is_null($baseUrl)) {
-                $this->mergedArray[$bnodeId] = $this->copyResource($baseGraph->toRdfPhp()[$baseUrl],CocoonAbstractRdfMerger::ORIGIN_BASE);
+                $copyResource = $this->copyResource($baseGraph->toRdfPhp()[$baseUrl],CocoonAbstractRdfMerger::ORIGIN_BASE);
+                $this->mergedArray[$bnodeId] = $copyResource;
             }
             elseif (is_null($baseUrl) && !is_null($srcUrl)) {
-                $this->mergedArray[$bnodeId] = $this->copyResource($srcGraph->toRdfPhp()[$srcUrl],CocoonAbstractRdfMerger::ORIGIN_SRC);
+                $copyResource = $this->copyResource($srcGraph->toRdfPhp()[$srcUrl],CocoonAbstractRdfMerger::ORIGIN_SRC);
+                $this->mergedArray[$bnodeId] = $copyResource;
             }
             elseif (!is_null($baseUrl) && !is_null($srcUrl)) {
 
@@ -190,7 +192,7 @@
         $srcArray = array_key_exists($srcRes->getUri(), $srcRdfPhp)?$srcRdfPhp[$srcRes->getUri()]:[];
         $baseRdfPhp = $this->baseGraph->toRdfPhp();
         $baseArray = array_key_exists($baseRes->getUri(), $baseRdfPhp)?$baseRdfPhp[$baseRes->getUri()]:[];
-        foreach($srcRes->propertyUris() as $prop) {
+        foreach(array_unique(array_merge($srcRes->propertyUris(), $baseRes->propertyUris())) as $prop) {
             if(in_array($prop, $singleBNodeProperties)) {
                 $this->mergePropertySingleBNode($prop, $targetArray, $baseArray, $srcArray);
             }