Studiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHP

  • 1,065 views
Uploaded on

In acest studiu vom prezenta cateva API- uri pentru procesare RDF in PHP. Aceste instrumente pot si folosite atat in PHP4 cel putin versiunea 4.2 cat si in PHP5 cel putin versiunea 5.0.1. Majoritatea …

In acest studiu vom prezenta cateva API- uri pentru procesare RDF in PHP. Aceste instrumente pot si folosite atat in PHP4 cel putin versiunea 4.2 cat si in PHP5 cel putin versiunea 5.0.1. Majoritatea API-uri pot fi folosite sub licente GNU.

More in: Education , Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,065
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
15
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Studiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHP Budai Steliana: steliana@infoiasi.ro Gorea Alexandra Diana: alexandra.gorea@infoiasi.ro In acest studiu vom prezenta cateva API- uri pentru procesare RDF in PHP. Aceste instrumente pot si folosite atat in PHP4 cel putin versiunea 4.2 cat si in PHP5 cel putin versiunea 5.0.1. Majoritatea API-uri pot fi folosite sub licente GNU. Testele pentru unele api le-am executat pe pagina http://alex.seosite.ro. Pentru fiecare API am creat un director unde am copiat fisierele sursa precum si exemplele. 1 RAP RAP este un instrument Semantic Web pentru parsare, interogare manipulare si serializare si folosire de modele RDF. A fost creat la Freie Universität Berlin in 2002 si tot a fost modificat de atunci. Ultima versiune lansate contine: • Un API bazat pe obiecte pentru manipularea grafurilor RDF ca un set de obiecte • API bazat pe resurse • Parsere N-TRIPLE si N3 pentru RDF/XML • Serializari N-TRIPLE si N3 pentru RDF/XML • Suport pentru limbajul de interogare RDLQ • Elemente OWL • Interogari baze de date Mysql • Interfata grafice petru lucrul cu DbModels • Acest API contine si suport pentru SPARQL Rap poate fi folosit sub licenta GNU LESSER GENERAAL PUBLIC LICENCE Se poate downloada de la adresa: http://sourceforge.net/projects/rdfapi-php/ La adresa mentionata mai sus am instalat toate sursele oferite de RAP. Problema este la configurare. Nu sunt oferite suficiente detalii de instalare si utilizare. Instalare: • se downloadeaza pachetul de la adresa mentionata mai sus
  • 2. • se dezarhiveaza • se va include RDF API in scripturi: define('RDFAPI_INCLUDE_DIR' , '/ home/seosite/public_html/alex/RAP/rdfapi-php/api/'); include(RDFAPI_INCLUDE_DIR . "RDFAPI.php"); • constanta 'RDFAPI_INCLUDE_DIR va contine calea catre unde am dezarhivat continutul arfivei. Urmand acesti pasi, nu am obtinut rezultatul dorit. Adica macar sa pot rula exemplele oferite de autori ceea ce nu am reusit. La inceput fara sa modific ceva... unele exemple au mers dar in momentul cand am vrut sa le vad pe toate, si am inceput sa fac setarile necesare am scapat de unele warninguri dar nu am putut sa le rulez. Observand acest lucru am inceput sa studiez exemplele deja date de ei. E frustrant mai ales pentru un incepator sa nu poata rula un script sa zicem „hello world”. Pentru memorarea triplelor de foloseste Mysql sau baze de date relationale folosind doua tipuri de modele: InfModelF si InfModelB. $mysql_database = ModelFactory::getDbStore('MySQL', 'host', 'db_name', 'user_name', 'password'); $oracle_database = ModelFactory::getDbStore('Oracle', FALSE, 'db_name', 'username', 'password'); Unul din exemplele care l-am putut vedea este cel de manipulare a unui model: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Test Manipulate and Search RDF Model</title> </head> <body> <?php // Include RAP define("RDFAPI_INCLUDE_DIR", "./../api/"); include(RDFAPI_INCLUDE_DIR . "RdfAPI.php"); // Filename of an RDF document
  • 3. $base="example1.rdf"; // Create a new MemModel $model = new MemModel(); // Load and parse document $model->load($base); // Output model as HTML table $model->writeAsHtmlTable(); echo "<P>"; // Ceate new statements and add them to the model $statement1 = new Statement(new Resource("http://www.w3.org/Home/Lassila"), new Resource("http://description.org/schema/Description"), new Literal("Lassila's personal Homepage", "en")); $statement2 = new Statement(new Resource ("http://www.w3.org/Home/Lassila"), new Resource("http://description.org/schema/Description"), new Literal("Lassilas persönliche Homepage ", "de")); $model->add($statement1); $model->add($statement2); $model->writeAsHtmlTable(); echo "<P>"; // Search model 1 $homepage = new Resource("http://www.w3.org/Home/Lassila"); $res = $model->find($homepage, NULL, NULL);
  • 4. $res->writeAsHtmlTable(); echo "<P>"; // Search model 2 $description = new Resource("http://description.org/schema/Description"); $statement = $model->findFirstMatchingStatement ($homepage, $description, NULL); // Check if something was found and output result if ($statement) { echo $statement->toString(); } else { echo "Sorry, I didn't find anything."; } echo "<P>"; // Search model 3 $res3 = $model->findVocabulary ("http://example.org/stuff/1.0/"); $res3->writeAsHtmlTable(); echo "<P>"; // Write model as RDF $model->writeAsHtml(); // Save model to file $model->saveAs("Output.rdf"); ?> </body> </html>
  • 5. Exemplul poate fi vizualizat aici: http://alex.seosite.ro/RAP/rdfapi- php/test/test_ManipulateMemModel.php si face parte din documentatia proiectului. Suport oferit programatorilor: • documentatie: http://www.seasr.org/wp-content/plugins/meandre/rdfapi-php/ doc/tests.html • documentatia API-ului: http://www.seasr.org/wp- content/plugins/meandre/rdfapi-php/doc/phpdoc/index.html 2 ARC ARC este un sistem RDF open source si poate fi rulat in majoritatea serverelor web. • lucreaza cu PHP4 si cu PHP5 • nu se folosesc variabile globale, constante, etc ce pot cauza probleme de integrare. Componente: dintre componente putem enumera: • parseri pentru RDF/XML, SPARQL+SPOG, RSS, etc. • Serializari N-Triples, RDF/JSON, RDF/XML • 2 structuri interne: precesare bazata pe resurse si bazata pe obiecte • Clasa SPARQL Endpoint: compilator SPARQL endpoint • Clasa RemoteStore: interogheaza in mod remote ca si cum ele s-ar afla pastrate local. • SPARQLScript • Suport pentru formatari date Web 2.0 (microformate, RSS2, Atom, JSON) • Instrumente ce pot fi usor combinate cu un soft existent Sursele sunt disponibile la: http://arc.semsol.org/download Suport pentru programatori: Documentatie: http://arc.semsol.org/docs . Exemple nu am reusit sa gasesc. In pachetul de instalare am gasit doar sursele de procesare si utilizare RDF. Nu am gasit nici un exemplu de folosire acestui api. Din vizitare site si din exemplele de situri ce foloseste acest suport RDF am descoperit ca poate fi folosit si ca plugin wordpress. In schimb pe site la documentatii, sunt diferite exemple de cum pot fi folosite componentele acestui API. Tripletele sunt de fapt niste vectori ce contin in mod asociativ 3 vectori ce pot fi procesati printr-o bucla simpla. Triplele sunt stocate intr-o baza de date mysql. ...
  • 6. $triples = $parser->getTriples(); for ($i = 0, $i_max = count($triples); $i < $i_max; $i++) { $triple = $triples[$i]; ... } http://semsol.org/dooit/sparql - aici se gaseste un instrument pentru interogari SPARQL folosind ARC. Pe pagina http://arc.semsol.org/sites se gasesc mai multe exemple de situri ce utilizeaza acest api. Este mai usor de utilizat observand asta din portofoliul de situri ce utilizeaza acest api, ofera suficienta documentatie pentru a putea dezvolta un site si poate fi utilizat ca plugin pentru wordpress utilizand pluginul wp-arc-1-1, acesta fiind ultimul lansat cu niste modificari facute si anumite bug-uri rezolvate. ARC este disponibil sub licenta W3C Software Licence si din 2009 deasemeni sub licenta GPL Mai multe detalii despre acest API se gasesc aici: http://arc.semsol.org/ 3 PHP XML Classes Informatii http://phpxmlclasses.sourceforge.net/ Un API dezvoltat sub licenta GNU/GPL in php ce proceseaza atat xml cat si rdf. Se poate downloada de la adresa http://sourceforge.net/projects/phpxmlclasses/files/ . Pe langa fisierele sursa sunt si exemple precum si tutoriale cu exemple in utilizarea acestui api. Clasa care se ocupa de procesare RDF este class_rdf_parser. Fisierele RDF sunt reprezentate folosind XML sub forma urmatoare: <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" </rdf:RDF> In RDF se vor descrie resursele si proprietatile precum si valorile resurselor. Proprietatile sunt reprezentate ca elemente XML si obiectele reprezinta continutul proprietatilor ca de exemplu: <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  • 7. xmlns:s="http://description.org/schema/"> <rdf:Description about="http://www.w3.org/Home/Lassila"> <s:Creator>Ora Lassila</s:Creator> </rdf:Description> </rdf:RDF> Pentru a parsa aceste tipuri de fisiere se utilizeaza clasa class_rdf_parser.php, care la baza de va defini un handler pentru obiecte RDF si doar parseaza documentul, in momentul cand se identifica un obiect RDF functia de callback va fi apelata Un exemplu de cum se poate folosi clasa: /* Se pune URI documentului de parsare, se poate folosi un nume de fisier */ $base="http://luigi.melpomenia.com.ar/example5.rdf"; $statements=0; $input = fopen($base,"r"); $rdf=new Rdf_parser(); $rdf->rdf_parser_create( NULL ); $rdf->rdf_set_user_data( $statements ); $rdf- >rdf_set_statement_handler( "my_statement_handler" ); $rdf- $rdf->rdf_set_base($base ); $done=false; while(!$done) { $buf = fread( $input, 512 ); $done = feof($input); if ( ! $rdf->rdf_parse( $buf, strlen($buf), feof($input) ) ) { die(" O eroare a fost detectata in timp ce s-a incercat parsarea. Se poate din cauza ca documentul nu este formatat cum trebuie"); } } /* close file. */ fclose( $input ); $rdf->rdf_parser_free(); printf( "Total statements: ". $statements ); Aceste exemple sunt luate din tutorialele ce se regasesc in arhiva. Parsarea se realizeaza prin chuncks de cate 512 bytes. Se seteaza lungimea bufferului cum se doreste. Acest lucru permite parsarea unui fisier RDF mare consumand memorie constant ceea ce nu duce la terminarea nedorita a serverului.
  • 8. Acest api contine o documentatie destul de ampla ce se gaseste in arhiva downloadata. De asemenea ofera o suita de exemple si explicatii pentru metodele clasei. Usor de inteles si de implementat. Nu suporta interogari SPARQL. Binenteles cu bug-uri. Intrand pe Browse bugs am observat persoane care au obtinut diferite erori si care nu au stiut cum sa le refaca. Nu prea este vizitat si downloadat si nu se specifica versiunea. Comparatie intre RAP ARC si PHPXML Classes http://www4.wiwiss.fu-berlin.de/bizer/toolkits/index.htm#php PHPXML RAP 0.9.4 ARC Classes 1.1 Ultimul release 6/2006 5/2006 07/2002 Numar 8 1 1 dezvoltatori Lista mail activa + - - Licenta LGPL Licenta W3C GPL Centrat pe obiecte Centrat pe resurse Centrat pe Paradigma Api Centrat pe model Centrat pe ontologie obiecte Quad-centric Limbaj de SPARQL SPARQL RDQL interogare RDQL Memorare in Memorare in baze Pastrare modele Memorare in baze de date baze de date de date Baza de date ADOdb compliant MySQL MySQL suportate databases (30+) RDF/XML Parser N-Triples RDF/XML, Formate de N3 serializare N3, serializare RDF/XML TriX JSON pentru suportate GRDDL SPARQL RSS/ATOM results RDFS Suport reguli - - cateva reguli OWL SPARQL RDF Server SPARQL protocol - protocol Alte GUI pentru utilizare modele
  • 9. pastrate in baza de date, modul vizualizari grafuri, imbunatatiri Client pentru remote SPARQL endpoints 4 PHP RDF Parser PHP RDF Parser este o clasa PHP ca parseaza si afiseaza fisiere rdf si rss in nescape. Poate fi integrat in aplicatii web. Este disponibil sub licenta GNU/GPL Se poate downloada de aici: http://www.jasonandann.com/php_rdf/ sectiunea Downloading (pur si simplu fisierul rdf_class.php). Aceasta clasa este folosita doar pentru parsare feeduri rdf . Trebuie trecut doar adresa de unde trebuie downloadat fisierul rdf. Pe pagina parserului gasim putina documentatie referitoare la elementele clasei de parsare. Sunt explicate fiecare functie si variabile. 5 POWL POWL este o platforma de dezvoltare web semantic si contine mai multe componente: • RAP-RDF pt PHP un proiect prezentat mai sus • API RDFS si OWL pentru PHP – parte integrala a lui POWL • CMS • Framework pentru aplicatii web Se poate downloada de la adresa: http://sourceforge.net/projects/powl/. Acest program este oferit sub licenta GNU general public license. Termenii si conditiile se gasesc un sursa programului. Programul este web-based Instalare: • se copiaza fisierele pe server • se creaza o baza de date si un user dupa care se vor trece datele in fisierul config.inc.php-dist dupa care se redenumeste acest fisier config.inc.php • se deschide adresa unde s-au copiat sursele /powl. • s-a deschis o pagina de administrare unde se poate introduce modele noi se pot edita, se poate interoga. Incercand sa instalez la adresa http://alex.seosite.ro/powl/index.php , nu am apucat sa vad mare lucru ca deja am obtinut un warning: „Unknown column 'id' in
  • 10. 'field list'Unknown column 'id' in 'field list'Unknown column 'id' in 'field list'Unknown column 'id' in 'field list'Unknown column 'id' in 'field list'Unknown column 'id' in 'field list'”. Am incercat sa gasesc fisierul error.log de pe server pentru a vedea de unde am obtinut eroarea. Dar si acest fisier lipseste. O bila neagra. Nu suporta interogari SPARQL. In ceea ce priveste documentatia, este foarte putina. Incercand sa fac un exemplu, nu am gasit nimic in fisiere si nici pe internet exemple care sa le pot utiliza cu acest api. Documentatia doar explica pe scurt clasele acestui program. Este dificil sa inveti utilizat acest api deoarece nu contine o documentatie suficienta. 6 RDFTP Rdftp este un server ce suporta operatii de interogare asupra unui fisier RDF si este dezvoltat sub licenta GNU/GPL creat de Vangelis Vassiliadis. Este o implementare experiment a unui protocol de transmisie RDF scris in php. Informatii sumare se gasesc la adresa http://www.semanticweb.gr/rdftp/#_Toc19086344 Tripletele RDF sunt pastrate in baza de date relationale si in format graf. Problema este ca nu am gasit un link de unde as putea copia sursele pentru a le putea instala pe un server ce utilizeaza php si baza de date. Dar in schimb ofera un demo online: http://www.semanticweb.gr/rdftp/rdftp.php care are unele probleme la conectarea la baza de date. Neavand documentatii si exemple concrete, este greu de utilizat si de invatat. 7 Rdfworld Rdfworld.php este un convertor din obiecte RDF in obiecte PHP. Este gratis di este distribuit sub licenta Gnu GPL. Se downloadeaza de la adresa http://chxo.com/ rdfworld/index.htm unde se pot gasi si unele informatii referitoare la aceasta clasa. El foloseste anumite module din RAP pentru a executa parsarea. Acest program este distribuit gratuit sub licenta GNU/GPL. Prentru programatori ofera o documentatie catusi de cat ok si de asemenea ofera posibilitate de testare online aici: http://chxo.com/rdfworld/rdfworld-test.php . Tripele sunt de tip obiect. Nu detine suport pentru SPARQL. 8 EasyRdf 0.2 Este o librarie scrisa in PHP orientat obiect ce lucreaza cu fisiere RDF. A fost creat pentru pezvolatori web cu sau fara experienta. In timpul parsarii, programul construieste un graf cu obiecte PHP. Suporta interogari SPARQL. Se downloadeaza de la adresa: http://linux.softpedia.com/get/Programming/Libraries/EasyRdf-51534.shtml Cateva adaugiri:
  • 11. • Este documentat cu documentatie scrisa in phpdoc • Unitati de testare folosinf phpuni • Alegerea parsarii RDF • Contine o serie de exemple Este distribuit gratis sub licenta BSD. Documentatie : http://www.aelius.com/njh/easyrdf/docs/li_EasyRdf.html si exte inclusa si in sursele disponibile. Exemple: in sursa. Pentru a rula exemplele trebuie instalat si unele module din RAP. Aceasta este versiunea a doua a acestui proiect. Prima versiune EasyRdf 0.1 contine suport pentru ARC2 si Rapper, documentatie, unitati testare pentru fiecare clasa, si cateva exemple. Versiunea curenta ii este adaugat suport si pentru legaturi Redland PHP, suport pentru n-trible, imbunatatit utilizarea blank note si adaugat newBNode() pentru EasyRdf_Graph, adaugat stiluri pentru exemple. In surse nu se gasesc informatii pentru instalare si de aceea obtin erori in executarea exemplelor, in plus nu se dau informatii despre cum se pot rula exemplele. 9 Trice Este un framework dezvoltat pentru web ce utilizeaza tehnologia RDF. Este scris in PHP. Este gratis, open source, bazat pe ARC, un toolkit usor de utilizat ce ofera suport pentru SPARQL. Sursele sunt disponibile la adresa http://code.semsol.org/source/trice/ . Momentan nu exista documentatie pentru acest proiect si nici exemple de utilizare a acestui API. Informatii despre acest API se gasesc la adresa: http://trice.semsol.org/ Referinte: Pentru fiecare API este specificat locul de unde s-au luat informatiile, in general de pe pagina librariei respective.