SlideShare une entreprise Scribd logo
1  sur  11
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
•   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
$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);
$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>
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.

...
$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#"
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.
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
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
'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:
•    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.

Contenu connexe

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

Tool-uri java pentru RDF
Tool-uri java pentru RDFTool-uri java pentru RDF
Tool-uri java pentru RDF
ioanaciprian
 
Procesarea RDF pentru platforma Java
Procesarea RDF pentru platforma JavaProcesarea RDF pentru platforma Java
Procesarea RDF pentru platforma Java
RalucaGheorghita
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
teodora001
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
teodora001
 
Un site cu si despre muzica
Un site cu si despre muzicaUn site cu si despre muzica
Un site cu si despre muzica
Georgia Papp
 
Un site cu si despre muzica2
Un site cu si despre muzica2Un site cu si despre muzica2
Un site cu si despre muzica2
Georgia Papp
 
Un site cu si despre muzica
Un site cu si despre muzicaUn site cu si despre muzica
Un site cu si despre muzica
Georgia Papp
 

Similaire à Studiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHP (20)

Procesare Rdf Sub .Net Framework
Procesare Rdf Sub .Net FrameworkProcesare Rdf Sub .Net Framework
Procesare Rdf Sub .Net Framework
 
Tool-uri java pentru RDF
Tool-uri java pentru RDFTool-uri java pentru RDF
Tool-uri java pentru RDF
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
Procesarea RDF pentru platforma Java
Procesarea RDF pentru platforma JavaProcesarea RDF pentru platforma Java
Procesarea RDF pentru platforma Java
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...
WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...
WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...
 
WADe 2017-2018 (6/12) RDF Data Management. Accessing RDF Data via SPARQL
WADe 2017-2018 (6/12) RDF Data Management. Accessing RDF Data via SPARQLWADe 2017-2018 (6/12) RDF Data Management. Accessing RDF Data via SPARQL
WADe 2017-2018 (6/12) RDF Data Management. Accessing RDF Data via SPARQL
 
Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...
Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...
Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...
 
WADe 2017-2018 (5/12) Data Modeling in RDF (Resource Description Framework)
WADe 2017-2018 (5/12) Data Modeling in RDF (Resource Description Framework)WADe 2017-2018 (5/12) Data Modeling in RDF (Resource Description Framework)
WADe 2017-2018 (5/12) Data Modeling in RDF (Resource Description Framework)
 
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
 
diSparql
diSparqldiSparql
diSparql
 
WADe 2017-2018 Tutorial (3/3): Data Modeling in HTML by Using RDFa Constructs
WADe 2017-2018 Tutorial (3/3): Data Modeling in HTML by Using RDFa ConstructsWADe 2017-2018 Tutorial (3/3): Data Modeling in HTML by Using RDFa Constructs
WADe 2017-2018 Tutorial (3/3): Data Modeling in HTML by Using RDFa Constructs
 
Catalog online
Catalog onlineCatalog online
Catalog online
 
Webappdev
WebappdevWebappdev
Webappdev
 
Un site cu si despre muzica
Un site cu si despre muzicaUn site cu si despre muzica
Un site cu si despre muzica
 
Un site cu si despre muzica2
Un site cu si despre muzica2Un site cu si despre muzica2
Un site cu si despre muzica2
 
Un site cu si despre muzica
Un site cu si despre muzicaUn site cu si despre muzica
Un site cu si despre muzica
 

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

  • 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.