[evolvis-commits] r17045: OSLC Core V2 ServiceProviderCatalogs in RDF/XML.
mirabilos at evolvis.org
mirabilos at evolvis.org
Tue Mar 1 01:58:18 CET 2011
Author: mirabilos
Date: 2011-03-01 01:58:18 +0100 (Tue, 01 Mar 2011)
New Revision: 17045
Modified:
trunk/gforge_base/evolvisforge-5.1/src/plugins/oslc/include/oslc-zend/application/views/scripts/fusionforgecm/_service-catalog_xml.php
Log:
OSLC Core V2 ServiceProviderCatalogs in RDF/XML.
Modified: trunk/gforge_base/evolvisforge-5.1/src/plugins/oslc/include/oslc-zend/application/views/scripts/fusionforgecm/_service-catalog_xml.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/src/plugins/oslc/include/oslc-zend/application/views/scripts/fusionforgecm/_service-catalog_xml.php 2011-03-01 00:58:14 UTC (rev 17044)
+++ trunk/gforge_base/evolvisforge-5.1/src/plugins/oslc/include/oslc-zend/application/views/scripts/fusionforgecm/_service-catalog_xml.php 2011-03-01 00:58:18 UTC (rev 17045)
@@ -1,7 +1,7 @@
<?php
/*
- * This file is (c) Copyright 2009 by Olivier BERGER, Institut
+ * This file is (c) Copyright 2009 by Olivier BERGER & Sabri LABBENE, Institut
* TELECOM
*
* This program is free software; you can redistribute it and/or
@@ -25,105 +25,168 @@
/* $Id$ */
-// Generate a OSLC-CM V1 Service Catalog document
-// (http://open-services.net/bin/view/Main/OslcServiceProviderCatalogV1)
-// for a project, pointing to its trackers' Service Description documents
-
-function project_trackers_to_service_catalog($base_url, $trackers, $project) {
+// Generate an OSLC Core V2 ServiceProviderCatalog that lists trackers inside a FusionForge project as OSLC-CM Service Providers.
+function project_trackers_to_service_catalog($server_url, $base_url, $trackers, $project) {
$doc = new DOMDocument();
$doc->formatOutput = true;
- $root = $doc->createElementNS("http://open-services.net/xmlns/discovery/1.0/", "oslc_disc:ServiceProviderCatalog");
+ $root = $doc->createElementNS("http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdf:RDF");
$root = $doc->appendChild($root);
+ $root->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#');
+ $root->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:dcterms', 'http://purl.org/dc/terms/');
+ $root->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:foaf', 'http://xmlns.com/foaf/0.1/');
+ $root->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:oslc', 'http://open-services.net/ns/core#');
- $child = $doc->createAttributeNS("http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdf:about");
- $about = $root->appendChild($child);
- $child = $doc->createTextNode("");
- $child = $about->appendChild($child);
+ $provider = $doc->createElement("oslc:ServiceProvider");
+ $provider->setAttribute("rdf:about", $base_url.'/cm/oslc-cm-services/'.$project);
+
+ // Title of the ServiceProvider.
+ $titlenode = $doc->createElement("dcterms:title", "FusionForge OSLC Core V2 ServiceProvider corresponding to project ".$project);
+ $provider->appendChild($titlenode);
+
+ // Description of the ServiceProvider.
+ $descriptionnode = $doc->createElement("dcterms:description", "Lists all trackers as Service Providers");
+ $provider->appendChild($descriptionnode);
+
+ // Add rdf:type ressource to the ServiceProvider node.
+ $rdftype = $doc->createElement("rdf:type");
+ $rdftyperessource = $doc->createElement("rdf:ressource", "http://open-services.net/ns/core#ServiceProvider");
+ $rdftype->appendChild($rdftyperessource);
+ $provider->appendChild($rdftype);
+
+ // Add oslc:Publisher ressource inside a dcterms:publisher node.
+ $publishernode = $doc->createElement("dcterms:publisher");
+ $publishernodecontent = $doc->createElement("oslc:Publisher");
+ $publishernodecontentid = $doc->createElement("dcterms:identifier", $base_url);
+ $publishernodecontenttitle = $doc->createElement("dcterms:title", "FusionForge OSLC V2 plugin");
+ $publishernodecontent->appendChild($publishernodecontentid);
+ $publishernodecontent->appendChild($publishernodecontenttitle);
+ $publishernode->appendChild($publishernodecontent);
+ // Add created dcterms:publisher node in the ServiceProvider node.
+ $provider->appendChild($publishernode);
+
+ $root->appendChild($provider);
- $child = $doc->createElementNS("http://purl.org/dc/terms/", "dc:title");
- $title = $root->appendChild($child);
-
- $child = $doc->createTextNode(TRACKER_TYPE. " Change management service provider catalog for project " . $project);
- $child = $title->appendChild($child);
-
+ // We list trackers as Services or ServiceProvider (s) ???????????
foreach ($trackers as $tracker) {
- // entry
- $child = $doc->createElementNS("http://open-services.net/xmlns/discovery/1.0/", "oslc_disc:entry");
- $entry = $root->appendChild($child);
+ // oslc:service node.
+ $service = $doc->createElement("oslc:service");
+ $service->setAttribute("rdf:about", $base_url.'/cm/oslc-cm-service/'.$tracker['group_id'].'/tracker/'.$tracker['id']);
- $child = $doc->createElementNS("http://open-services.net/xmlns/discovery/1.0/", "oslc_disc:ServiceProvider");
- $sp = $entry->appendChild($child);
-
- $child = $doc->createElementNS("http://purl.org/dc/terms/", "dc:identifier");
- $title = $sp->appendChild($child);
- $child = $doc->createTextNode($tracker['id']);
- $child = $title->appendChild($child);
+ // dcterms:title
+ $stitle = $doc->createElement("dcterms:title", "OSLC-CM Service for ".$tracker['name']);
+ $service->appendChild($stitle);
- $child = $doc->createElementNS("http://purl.org/dc/terms/", "dc:title");
- $title = $sp->appendChild($child);
- $child = $doc->createTextNode($tracker['name']);
- $child = $title->appendChild($child);
-
- $child = $doc->createElementNS("http://purl.org/dc/terms/", "dc:description");
- $title = $sp->appendChild($child);
- $child = $doc->createTextNode($tracker['description']);
- $child = $title->appendChild($child);
+ // dcterms:description
+ $sdesc = $doc->createElement("dcterms:description", $tracker['description']);
+ $service->appendChild($sdesc);
- $child = $doc->createElementNS("http://open-services.net/xmlns/discovery/1.0/", "oslc_disc:services");
- $services = $sp->appendChild($child);
- $child = $doc->createAttributeNS("http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdf:resource");
- $resource = $services->appendChild($child);
- $child = $doc->createTextNode($base_url.'/cm/oslc-cm-service/'.$tracker['group_id'].'/tracker/'.$tracker['id']);
- $child = $resource->appendChild($child);
+ // rdf:type
+ $rdftype = $doc->createElement("rdf:type");
+ $rdftyperessource = $doc->createElement("rdf:ressource", "http://open-services.net/ns/core#Service");
+ $rdftype->appendChild($rdftyperessource);
+ $service->appendChild($rdftype);
+ // oslc:domain
+ $sdomain = $doc->createElement("oslc:domain");
+ $sdomainressource = $doc->createElement("rdf:ressource", "http://open-services.net/ns/cm#");
+ $sdomain->appendChild($sdomainressource);
+ $service->appendChild($sdomain);
+
+ // oslc:details
+ $tracker_url = $server_url."/tracker/index.php?group_id=".$tracker['group_id']."&atid=".$tracker['id'];
+ $sdetails = $doc->createElement("oslc:details", htmlentities($tracker_url));
+ $service->appendChild($sdetails);
+
+ $provider->appendChild($service);
+ $root->appendChild($provider);
+
}
return $doc->saveXML();
}
-// Generate a Service Catalog that points to each project's own Service catalog
+
+// Generate an OSLC Core V2 ServiceProviderCatalog that lists projects as OSLC Service Providers.
function projects_to_service_catalog($base_url, $projects) {
$doc = new DOMDocument();
$doc->formatOutput = true;
- $root = $doc->createElementNS("http://open-services.net/xmlns/discovery/1.0/", "oslc_disc:ServiceProviderCatalog");
+ // Generate namespaces for root rdf:RDF node.
+ $root = $doc->createElementNS("http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdf:RDF");
$root = $doc->appendChild($root);
+ $root->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#');
+ $root->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:dcterms', 'http://purl.org/dc/terms/');
+ $root->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:foaf', 'http://xmlns.com/foaf/0.1/');
+ $root->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:oslc', 'http://open-services.net/ns/core#');
- $child = $doc->createAttributeNS("http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdf:about");
- $about = $root->appendChild($child);
- $child = $doc->createTextNode("");
- $child = $about->appendChild($child);
-
- $child = $doc->createElementNS("http://purl.org/dc/terms/", "dc:title");
- $title = $root->appendChild($child);
+ $catalog = $doc->createElement("oslc:ServiceProviderCatalog");
+ $catalog->setAttribute("rdf:about", util_make_uri($base_url.'/cm/oslc-services/'));
- // TODO ? : MAY have an oslc_disc:details child element.
+ // Title of the ServiceProviderCatalog.
+ $titlenode = $doc->createElement("dcterms:title", "FusionForge OSLC Core V2 Service Provider Catalog");
+ $catalog->appendChild($titlenode);
- $child = $doc->createTextNode(TRACKER_TYPE. " Change management service provider catalog");
- $child = $title->appendChild($child);
-
+ // Description of the ServiceProviderCatalog.
+ $descriptionnode = $doc->createElement("dcterms:description", "Lists all projects as Service (trackers) Providers");
+ $catalog->appendChild($descriptionnode);
+
+ // Add rdf:type ressource to the ServiceProviderCatalog node.
+ $rdftype = $doc->createElement("rdf:type");
+ $rdftyperessource = $doc->createElement("rdf:ressource", "http://open-services.net/ns/core#ServiceProviderCatalog");
+ $rdftype->appendChild($rdftyperessource);
+ $catalog->appendChild($rdftype);
+
+ // Add oslc:Publisher ressource inside a dcterms:publisher node.
+ $publishernode = $doc->createElement("dcterms:publisher");
+ $publishernodecontent = $doc->createElement("oslc:Publisher");
+ $publishernodecontentid = $doc->createElement("dcterms:identifier", $base_url);
+ $publishernodecontenttitle = $doc->createElement("dcterms:title", "FusionForge OSLC V2 plugin");
+ $publishernodecontent->appendChild($publishernodecontentid);
+ $publishernodecontent->appendChild($publishernodecontenttitle);
+ $publishernode->appendChild($publishernodecontent);
+ // Add created dcterms:publisher node in the ServiceProviderCatalog node.
+ $catalog->appendChild($publishernode);
+
+ $root->appendChild($catalog);
+
foreach ($projects as $proj) {
+ $sp = $doc->createElement("oslc:ServiceProvider");
+ $sp->setAttribute("rdf:about", util_make_uri($base_url.'/cm/oslc-cm-services/'.$proj['id']));
+
+ // dcterms:title
+ $sptitle = $doc->createElement("dcterms:title", "Project: ".$proj["name"]);
+ $sp->appendChild($sptitle);
+
+ // dcterms:description
+ $spdescription = $doc->createElement("dcterms:description", "FusionForge project ".$proj['name']." as an OSLC-CM ServiceProvider");
+ $sp->appendChild($spdescription);
+
+ // rdf:type
+ $rdftype = $doc->createElement("rdf:type");
+ $rdftyperessource = $doc->createElement("rdf:ressource", "http://open-services.net/ns/core#ServiceProvider");
+ $rdftype->appendChild($rdftyperessource);
+ $sp->appendChild($rdftype);
+
+ // dcterms:publisher
+ $sppublisher = $doc->createElement("dcterms:publisher");
+ $sppublishercontent = $doc->createElement("oslc:Publisher");
+ $sppublishercontentid = $doc->createElement("dcterms:identifier", $base_url);
+ $sppublishercontenttitle = $doc->createElement("dcterms:title", "FusionForge OSLC V2 plugin");
+ $sppublishercontent->appendChild($sppublishercontentid);
+ $sppublishercontent->appendChild($sppublishercontenttitle);
+ $sppublisher->appendChild($sppublishercontent);
+ $sp->appendChild($sppublisher);
- if(count($proj)>0)
- {
- // entry
- $child = $doc->createElementNS("http://open-services.net/xmlns/discovery/1.0/", "oslc_disc:entry");
- $entry = $root->appendChild($child);
+ // ServiceProvider should lis at least one oslc:service.
+ // Telling about the oslc:domain of the service is mandatory.
+ $service = $doc->createElement("oslc:Service");
+ $servicedomain = $doc->createElement("oslc:domain", "http://open-services.net/ns/core#Service");
+ $service->appendChild($servicedomain);
+ $sp->appendChild($service);
- $child = $doc->createElementNS("http://open-services.net/xmlns/discovery/1.0/", "oslc_disc:ServiceProviderCatalog");
- $spc = $entry->appendChild($child);
- $child = $doc->createAttributeNS("http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdf:about");
- $about = $spc->appendChild($child);
- $child = $doc->createTextNode($base_url.'/cm/oslc-cm-services/'.$proj['id']);
- $child = $about->appendChild($child);
-
- $child = $doc->createElementNS("http://purl.org/dc/terms/", "dc:title");
- $title = $spc->appendChild($child);
- $child = $doc->createTextNode($proj['name']);
- $child = $title->appendChild($child);
-
- }
+ $catalog->appendChild($sp);
+ $root->appendChild($catalog);
}
return $doc->saveXML();
}
More information about the evolvis-commits
mailing list