From d8791d58241fd76a720868299d86bf78760487a9 Mon Sep 17 00:00:00 2001 From: "M.Scholz" Date: Thu, 12 Jan 2012 13:42:35 +0100 Subject: [PATCH] SemanticWebApp --- .../Uebungen/1. Bonus Aufgabe/.DS_Store | Bin 12292 -> 12292 bytes .../1. Bonus Aufgabe/SemanticWebApp/.DS_Store | Bin 6148 -> 6148 bytes .../1. Bonus Aufgabe/SemanticWebApp/index.php | 92 +++------- .../{rdfLib => logic}/.DS_Store | Bin 6148 -> 6148 bytes .../SemanticWebApp/logic/controller.php | 163 +++++++++-------- .../logic/dbpediaController.php | 31 +++- .../logic/freebaseController.php | 31 ---- .../SemanticWebApp/logic/mdbController.php | 173 +++++++++++------- .../nbproject/private/private.properties | 4 +- .../nbproject/private/private.xml.0.nblh~ | 4 - .../nbproject/private/private.xml.1.nblh~ | 4 - .../SemanticWebApp/nbproject/project.xml | 2 +- .../SemanticWebApp/view/dbpedia.png | Bin 0 -> 18522 bytes .../{logos => view}/freebase.jpg | Bin .../SemanticWebApp/{logos => view}/mdb.png | Bin .../SemanticWebApp/view/view.php | 96 ++++++++++ 16 files changed, 345 insertions(+), 255 deletions(-) rename ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/{rdfLib => logic}/.DS_Store (89%) delete mode 100644 ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/logic/freebaseController.php delete mode 100644 ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/nbproject/private/private.xml.0.nblh~ delete mode 100644 ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/nbproject/private/private.xml.1.nblh~ create mode 100644 ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/view/dbpedia.png rename ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/{logos => view}/freebase.jpg (100%) rename ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/{logos => view}/mdb.png (100%) create mode 100644 ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/view/view.php diff --git a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/.DS_Store b/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/.DS_Store index 2e326c57100a3eba4fc330fac0dfa97d29deccd7..9b6bd0933bc2482f04a4820d35a4122d41862baa 100644 GIT binary patch delta 117 zcmZokXi1P@U|?W$DortDU=RQ@Ie-{MGqg=C6q~50$jCS`z?zY9GLL}u#xe)?#q1m$ zg3KU!pfYYC;R?iU8w887EzgV+7mrl&iti7|lqH0AX z;yX<}c|g)99uVc#qezV^A8AKnz*yGi->oV%suD+&bjyg&ON_-`NZWD9ss~# zMr{YMT}k}5rSjyN+R3&ilqN%+GqmA+`EA5qRv zT*zM(oWzIdSa26@$y}P!yp2>hPlXd^GG(JKHv8EI^E%IloT^;MOI3aNU6s5fSl!(d zqcp?W0Mivq%d#HDVmwAGxv20!!Zbo@mep7;MynEvp2&zKwpZ7~+BwFf2~*D`4L)eG zvzCnvb2Dvq7r;SHtj*hCj8@wl^rtM%H26`L=E8~_edMmKZ(6ODKDPk+d$+ax)NtP zRf)5#y@SZntWyg;SOmA!5P4AaASr6#HkKCzcXZ0~ar@ju3b*=G%n+Pj7Z2YpI1Smc zy{c+6YT483G__@q-*G4k5ibWH?1BLph6EUpgBx%YZozH13)Aozp2JIc1+(x5-oiWh z2%q2!e1&iD9e(5y(Tx>Yi5{%S25iJ8T!$O69Xl|9T^Ph3?8QFp$0!crFpi*#Ni@*J zvv>us;x)XEckmwG#|QWjpE;CVB^~xU^U{dVg;xP#V2}hw5Vc_HoVU`}VDV+S)PHJl z-_rek|4D-%-H!5>E~{-=wYDv=ZD;qd2L9EwKeba3jH8HxQc6lFX!8&KF?FtPkuA}c PWM+Ql;B)qu~2NHo}w@_0|Nsi1A_nqLvm7iaY0f}e$vLmm5lr#aaM*LhJ1!} zhD?U!$%1S}B8CP=Itqqn7PUGG)#k=#ItnJn29x{PEx2I{^BIaKuV5)+H#OH$Fg7rn ztjOxa4HQc$PR>cn&(GN`$RWluvB7RLI|n}p&YU7{yN$YvUiNLoFx{br3p~k_2lNr+^574x)>LAS9_(3B5JV;MS!NV93%p zaB&dw1nxe7PvPnqPeKAWflDrY=ls5Nzi+88^|!XNwi&&&qyFLU7JwSC1Kc2lK!CCB zCtvEjy2wf!=;MN=d$}xJ#}^K(bk(l;@22_3TjqGe6duNSrFVu$%xqtFkOiFc)YCLG zpbnpnC-k|pl5l+UtV(#it?b3W%A{c$y^d*~#CPgwL6bLkeMbmiW(mw?7IXfvT+KO! z!+ZgIKQpb1u - - - - - + -
- - This Page is only a small Semantic Web Application which allows you to find information - about movies using "Linked Movie Data Base" and "Freebase". -

- Which Movie are you interested in? -
- - -
- - Getting Infos for: " . $movieTitleByUser; - - echo '
searching . . .

'; - - - - $mainController = new controller(); - $mainController->getData($movieTitleByUser); - - - - } - - ?> - - - - -

- linkedmdb.org -
- freebase.com - -
- - + +include 'view/view.php'; +include 'logic/controller.php'; + +if(isset($_POST['buttonPressed'])){ + + + $movieTitleByUser =$_POST['movieTitleByUser']; + + //echo "

Getting Infos for: " . $movieTitleByUser; + + //echo '
searching . . .

'; + + + + $mainController = new controller(); + $mainController->getData($movieTitleByUser, 1); + + + + } + +?> \ No newline at end of file diff --git a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/rdfLib/.DS_Store b/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/logic/.DS_Store similarity index 89% rename from ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/rdfLib/.DS_Store rename to ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/logic/.DS_Store index 0b1b5236d1c482e6485a9e1a71e6c7007a575809..ad226433da83f71206841f2ac3a03fde5014fdc2 100644 GIT binary patch delta 360 zcmZoMXfc=|#>B)qu~2NHo+2ab!~pBf0*noeKvs`t{fz%$zyJb#49N`n40#MC3`IaX z2MAMvEIoz-h75)R&z$_^q@4UDpgI8{b^~G!B)y^xDGW(Km8n2FlOd78nK+Z`fySIc zGfIph4QOpD5GDZ)DhAR-8pgoD7=&h)AVV(LVYp0?#qb&94TKS!85y^;Y-Z=+=KzKu ckn^2+GQWtS03%RE0}umg5R+kZfXEhR0QEFnY5)KL delta 115 zcmZoMXfc=|#>CJ*u~2NHo+2aD!~pBb1|lqz`I*$@HU5JE0|@Xk6f+bsBr+5+6f)!h zVJ1V;getData($title, 3); //get persondata from dbpedia + + }else if($thing == "filmtitle"){ + + $controller->getData($title, 2); //get filmdata form linkedopenmdb + + }else{ + + //do nothing + + } + + } + + class controller { - - - - + + //Build the most important namespaces public function buildNamespaces(){ sparql_ns("owl", "http://www.w3.org/2002/07/owl#"); sparql_ns("xsd", "http://www.w3.org/2001/XMLSchema#"); @@ -28,81 +54,70 @@ class controller { sparql_ns("foaf", "http://xmlns.com/foaf/0.1/"); sparql_ns("dc", "http://purl.org/dc/elements/1.1/"); sparql_ns("linkedmdbRes", "http://data.linkedmdb.org/resource/movie/"); + sparql_ns("fn", "http://www.w3.org/2005/xpath-functions#"); } - - + /** - * Funktion organisiert die verschiedenen Quellen und gibt diese - * an die View weiter. - * + * + * Gets Data from the other controllers * + * @param type $searchString + * @param type $data */ - public function getData($movieTitle){ - - - - $resultsReady = false; - - $mdbC = new mdbController(); - $freebaseC = new freebaseController(); - $dbpediaC = new dbpediaController; - - $result = $mdbC->getMovieData($movieTitle); - - $resultsReady = true; - - //$this->printData($result); - - - //return resultsReady; - //$result = $freebaseC->getData($movieTitle); - - // $result = $dbpediaC->getPersonData($movieTitle); - - //$resultsReady = true; - - - - - if( !$result ) - { print sparql_errno() . ": " . sparql_error(). "\n"; exit; } - - - foreach($result as $result){ - - - - $fields = $result->field_array( $result ); - - - print("
"); - - foreach( $fields as $field ) - { - print "
$field:
"; - } - //print ""; - while( $row = sparql_fetch_array( $result ) ) - { - //print ""; - foreach( $fields as $field ) - { - if($field == "links"){ - print "$row[$field]
"; - }else - { - print "$row[$field], "; - } - - } - - } - } - } + public function getData($searchString, $data){ + + $view = new view(); + + if($data == 1){ + + $mdbC = new mdbController(); + + $result = $mdbC->getOriginalFilmtitle($searchString); + //ab hier schmiert es ab! + $view->printSparqlResult($result, 1); + + } + if($data == 2){ + + $mdbC = new mdbController(); + + $result = $mdbC->getDate($searchString); + $view->printSparqlResult($result, 0); + + $result = $mdbC->getRuntime($searchString); + $view->printSparqlResult($result, 0); + + $result = $mdbC->getActors($searchString); + $view->printSparqlResult($result, 1); + + $result = $mdbC->getWriters($searchString); + $view->printSparqlResult($result, 1); + + $result = $mdbC->getDirectors($searchString); + $view->printSparqlResult($result, 1); + + $result = $mdbC->getEditors($searchString); + $view->printSparqlResult($result, 1); + + $result = $mdbC->getLinks($searchString); + $view->printSparqlResult($result, 2); + } + if($data == 3){ + + $dbpC = new dbpediaController(); + $result = $dbpC->getPersonData($searchString); + $view->printSparqlResult($result, 0); + + $result = $dbpC->getPersonPicture($searchString); + $view->printSparqlResult($result, 3); + } + + } + } ?> diff --git a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/logic/dbpediaController.php b/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/logic/dbpediaController.php index 1f8d4ca4..72aada4a 100644 --- a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/logic/dbpediaController.php +++ b/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/logic/dbpediaController.php @@ -1,14 +1,10 @@ buildNamespaces(); - $sparql = "SELECT ?actors WHERE { ?film rdfs:label \"". $personName . "\" . - ?film linkedmdbRes:actor ?actor . - ?actor linkedmdbRes:actor_name ?actors} - "; + $sparql = "select ?text where { ?person foaf:name \"" . $personName . "\"@en ; + dbpedia-owl:abstract ?text . + FILTER langMatches(lang(?text), \"EN\") . + }"; return $result = $db->query( $sparql ); @@ -33,6 +29,21 @@ class dbpediaController extends controller{ } + public function getPersonPicture($personName){ + + $db = sparql_connect("http://dbpedia.org/sparql"); + $this->buildNamespaces(); + + + $sparql = "select ?personImage where { ?person foaf:name \"" . $personName . "\"@en ; + dbpedia-owl:thumbnail ?personImage . + }"; + + return $result = $db->query( $sparql ); + + } + + } diff --git a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/logic/freebaseController.php b/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/logic/freebaseController.php deleted file mode 100644 index 28e3090a..00000000 --- a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/logic/freebaseController.php +++ /dev/null @@ -1,31 +0,0 @@ -buildNamespaces(); - - - $sparql = ""; - - return $result = $db->query( $sparql ); - - - } -} - -?> diff --git a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/logic/mdbController.php b/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/logic/mdbController.php index 292c299c..90eeef89 100644 --- a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/logic/mdbController.php +++ b/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/logic/mdbController.php @@ -1,97 +1,138 @@ buildNamespaces(); + //film titles + $sparql = "SELECT ?filmtitle WHERE { ?film rdfs:label ?filmtitle . + FILTER regex(?filmtitle, \"" . $movieTitle . "\", \"i\") . + }"; + + + return $db->query( $sparql ); //returns a sparql result + + } + + + + public function getRuntime($movieTitle){ $db = sparql_connect("http://data.linkedmdb.org/sparql"); $this->buildNamespaces(); - //runtime - $sparql = "SELECT ?runtime WHERE { ?film rdfs:label \"". $movieTitle . "\" . - ?film linkedmdbRes:runtime ?runtime . }"; + $sparql = "SELECT ?runtime WHERE { ?film rdfs:label \"". $movieTitle . "\" ; + linkedmdbRes:runtime ?runtime . }"; + - $result[0] = $db->query( $sparql ); - + return $db->query( $sparql ); //returns a sparql result + } + + + + public function getWriters($movieTitle){ + $db = sparql_connect("http://data.linkedmdb.org/sparql"); + $this->buildNamespaces(); //writers - $sparql = "SELECT ?writers WHERE { ?film rdfs:label \"". $movieTitle . "\" . - ?film linkedmdbRes:writer ?writerL . + $sparql = "SELECT ?writers WHERE { ?film rdfs:label \"". $movieTitle . "\" ; + linkedmdbRes:writer ?writerL . ?writerL linkedmdbRes:writer_name ?writers . }"; + - $result[1] = $db->query( $sparql ); - - - - //actors - $sparql = "SELECT ?actors WHERE { ?film rdfs:label \"". $movieTitle . "\" . - ?film linkedmdbRes:actor ?actor . - ?actor linkedmdbRes:actor_name ?actors} - - - ORDER BY ?actors"; - - $result[2] = $db->query( $sparql ); - - - - //date - $sparql = "SELECT ?date WHERE { ?film rdfs:label \"". $movieTitle . "\" . - ?film linkedmdbRes:initial_release_date ?date .}"; - - $result[3] = $db->query( $sparql ); - - - - //director - $sparql = "SELECT ?director WHERE { ?film rdfs:label \"". $movieTitle . "\" . - ?film linkedmdbRes:director ?directorL . - ?directorL linkedmdbRes:director_name ?director . }"; - - $result[4] = $db->query( $sparql ); - - - - //editors - $sparql = "SELECT DISTINCT ?editor WHERE { ?film rdfs:label \"". $movieTitle . "\" . - ?film linkedmdbRes:editor ?editorL . - ?editorL linkedmdbRes:editor_name ?editor . }"; - - $result[5] = $db->query( $sparql ); - - - - //Links - $sparql = "SELECT ?links WHERE { ?film rdfs:label \"". $movieTitle . "\" . - ?film foaf:page ?links . }"; - - $result[6] = $db->query( $sparql ); - - - return $result; + return $db->query( $sparql ); //returns a sparql result } + public function getActors($movieTitle){ + + $db = sparql_connect("http://data.linkedmdb.org/sparql"); + $this->buildNamespaces(); + + //actors + $sparql = "SELECT ?actors WHERE { ?film rdfs:label \"". $movieTitle . "\" ; + linkedmdbRes:actor ?actor . + ?actor linkedmdbRes:actor_name ?actors} + ORDER BY ?actors"; + + + return $db->query( $sparql ); //returns a sparql result + + + } + public function getDate($movieTitle){ + + $db = sparql_connect("http://data.linkedmdb.org/sparql"); + $this->buildNamespaces(); + + //date + $sparql = "SELECT ?date WHERE { ?film rdfs:label \"". $movieTitle . "\" ; + linkedmdbRes:initial_release_date ?date .}"; + + return $db->query( $sparql ); //returns a sparql result + } + + + + public function getDirectors($movieTitle){ + + $db = sparql_connect("http://data.linkedmdb.org/sparql"); + $this->buildNamespaces(); + + //director + $sparql = "SELECT ?director WHERE { ?film rdfs:label \"". $movieTitle . "\" ; + linkedmdbRes:director ?directorL . + ?directorL linkedmdbRes:director_name ?director . }"; + + return $db->query( $sparql ); //returns a sparql result + } + + + + public function getEditors($movieTitle){ + + $db = sparql_connect("http://data.linkedmdb.org/sparql"); + $this->buildNamespaces(); + + //editors + $sparql = "SELECT DISTINCT ?editor WHERE { ?film rdfs:label \"". $movieTitle . "\" ; + linkedmdbRes:editor ?editorL . + ?editorL linkedmdbRes:editor_name ?editor . }"; + + return $db->query( $sparql ); //returns a sparql result + } + + + + public function getLinks($movieTitle){ + + $db = sparql_connect("http://data.linkedmdb.org/sparql"); + $this->buildNamespaces(); + + //Links + $sparql = "SELECT ?links WHERE { ?film rdfs:label \"". $movieTitle . "\" ; + foaf:page ?links . }"; + + return $db->query( $sparql ); //returns a sparql result + } + } ?> diff --git a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/nbproject/private/private.properties b/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/nbproject/private/private.properties index 49665daa..87dd3455 100644 --- a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/nbproject/private/private.properties +++ b/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/nbproject/private/private.properties @@ -1,5 +1,5 @@ -copy.src.files=true -copy.src.target=/Applications/XAMPP/htdocs/SemanticWebApp +copy.src.files=false +copy.src.target= index.file=index.php run.as=LOCAL url=http://localhost/SemanticWebApp/ diff --git a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/nbproject/private/private.xml.0.nblh~ b/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/nbproject/private/private.xml.0.nblh~ deleted file mode 100644 index c1f155a7..00000000 --- a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/nbproject/private/private.xml.0.nblh~ +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/nbproject/private/private.xml.1.nblh~ b/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/nbproject/private/private.xml.1.nblh~ deleted file mode 100644 index c1f155a7..00000000 --- a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/nbproject/private/private.xml.1.nblh~ +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/nbproject/project.xml b/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/nbproject/project.xml index 81dca232..60d3060a 100644 --- a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/nbproject/project.xml +++ b/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/nbproject/project.xml @@ -3,7 +3,7 @@ org.netbeans.modules.php.project - SemanticWebApp + PhpProject1 diff --git a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/view/dbpedia.png b/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/view/dbpedia.png new file mode 100644 index 0000000000000000000000000000000000000000..0dad221b61670c0084f9ff9a054190b617af2199 GIT binary patch literal 18522 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 Z@gK~mbieQ#_5uI^002ovPDHLkV1m>xd>8-# literal 0 HcmV?d00001 diff --git a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/logos/freebase.jpg b/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/view/freebase.jpg similarity index 100% rename from ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/logos/freebase.jpg rename to ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/view/freebase.jpg diff --git a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/logos/mdb.png b/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/view/mdb.png similarity index 100% rename from ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/logos/mdb.png rename to ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/view/mdb.png diff --git a/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/view/view.php b/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/view/view.php new file mode 100644 index 00000000..5eb8f35a --- /dev/null +++ b/ws2011/Semantic Web/Uebungen/1. Bonus Aufgabe/SemanticWebApp/view/view.php @@ -0,0 +1,96 @@ +"); + + if( !$result ) + { print sparql_errno() . ": " . sparql_error(). "\n"; exit; } + + + $fields = $result->field_array( $result ); + + + print("
"); + + foreach( $fields as $field ) + { + print "
$field:
"; + $info = $field; //save typ of object + } + while( $row = sparql_fetch_array( $result ) ) + { + foreach( $fields as $field ) + { + if($ref == 1){ + print "$row[$field]
"; + }else if($ref == 2){ + print "" . $row[$field] . "
"; + }else if($ref == 3){ + print "\"$row[$field]\""; + }else{ + print $row[$field] . "
"; + } + + + } + + } + + print("
"); + } + +} + +?> + + + + + + + + + +
+ + This Page is only a small Semantic Web Application which allows you to find information + about movies using "Linked Movie Data Base" and "DBpedia". +

+ Which Movie are you interested in? +
+ + +
+ + +

+ linkedmdb.org +
+ dbpedia.org + +
+ + + + + +