Difference between revisions of "Lab: Group project ideas / SPARQL"

From Info216
 
(22 intermediate revisions by the same user not shown)
Line 3: Line 3:
 
==Topics==
 
==Topics==
 
* Meeting with Andreas to discuss group project idea.
 
* Meeting with Andreas to discuss group project idea.
* Setting up the Blazegraph graph database.
+
* Setting up the Blazegraph graph database. Previously we have only stored our triples in memory, which is not persistent.  
* SPARQL queries and updates.
+
* SPARQL queries and updates. We use SPARQL to retrieve of update triples in our databases/graphs of triples
  
 
==Meeting with Andreas==
 
==Meeting with Andreas==
 
One group at the time will go and talk to Andreas Lothe Opdahl about their group project idea. This is an opportunity to get early feedback for the programming project that you will develop throughout the semester.   
 
One group at the time will go and talk to Andreas Lothe Opdahl about their group project idea. This is an opportunity to get early feedback for the programming project that you will develop throughout the semester.   
 
The office of Andreas is in Room 609 on the 6th floor of the SV-building next door(Laurits Melzers house).  
 
The office of Andreas is in Room 609 on the 6th floor of the SV-building next door(Laurits Melzers house).  
 +
Enter the doors on the left when you are facing the entrance of the building and walk up the stairs.
  
 
Remember, we have a wiki page (linked below) that describes details about the group project, including some example ideas.  
 
Remember, we have a wiki page (linked below) that describes details about the group project, including some example ideas.  
Line 14: Line 15:
  
 
==Tasks==
 
==Tasks==
Meanwhile you can start working on the tasks for the next lab which is about SPARQl and storage of triples in Blazegraph.  
+
Meanwhile you can start working on the tasks for the next lab which is about SPARQL and storage of triples in Blazegraph. Install blazegraph like below.
 +
If you have trouble installing Blazegraph you can use this link for now: "i2s.uib.no:8888/bigdata/#splash".
 +
This is the same blazegraph interface, but its stored in the cloud and only be used on the UiB network.
  
Open a web browser and go to i2s.uib.no:8888/bigdata. This is a interface for a blazegraph database that you can perform queries on.
+
==Installing the Blazegraph database on your own computer==
 
 
The database contains the triples that can be seen at the bottom at the page.
 
 
 
 
 
==Installing Blazegraph on your own computer==
 
 
Download Blazegraph (blazegraph.jar) from here: [https://blazegraph.com/ https://blazegraph.com/]
 
Download Blazegraph (blazegraph.jar) from here: [https://blazegraph.com/ https://blazegraph.com/]
Navigate to blazegraph.jar in your commandline/terminal. Now run this command:
+
I recommend placing blazegraph.jar in the same folder of your python project for the labs.
 +
Navigate to the folder of blazegraph.jar in your commandline/terminal using cd. (cd C:\Users\Martin\PycharmProjects\info216_labs for me as an example). Now run this command:
 
<syntaxhighlight>
 
<syntaxhighlight>
 
java -server -Xmx4g -jar blazegraph.jar
 
java -server -Xmx4g -jar blazegraph.jar
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
You might have to install java 8 64-bit JDK if you have problems running blazegraph. You can do it from  this link:
 +
"https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html"
 +
If you get an "Address already in use" error, try to run this command instead: "java -server -Xmx4g -Djetty.port=19999 -jar blazegraph.jar". This changes the port of the blazegraph server.
 +
If you have trouble installing Blazegraph you can use this link for now: "i2s.uib.no:8888/bigdata/#splash".
 +
This is the same blazegraph interface, but its stored in the cloud and only be used on the UiB network.
 +
  
 +
If it works it should now display an url like: "http://10.0.0.13:9999/blazegraph/". Open this in a browser.
 
You can now run SPARQL queries and updates and load RDF graphs from your file into Blazegraph.
 
You can now run SPARQL queries and updates and load RDF graphs from your file into Blazegraph.
In the update tab, load RDF data (select type below) and then paste the contents of your turtle/.txt file to add them all at once to the database. If you have not serialized your graph from lab 2 yet, you can use the triples on the bottom of the page instead.
+
In the update tab, load RDF data (select type below) and then paste the contents of your turtle/.txt file to add them all at once to the database. If you have not serialized your graph from lab 2 yet, you can use the triples on the bottom of the page instead. Just copy and paste them into the Update section.
 +
 
 +
 
 +
Write the following SPARQL queries:
  
Write a SPARQL SELECT query to view all the triples in your graph. Write a CONSTRUCT query to do the same.
+
* SELECT all triples in your graph.  
 +
* SELECT all the interests of Cade.
 +
* SELECT the city and country of where Emma lives.
 +
* SELECT only people who are older than 26.
 +
* SELECT Everyone who graduated with a Bachelor Degree.  
  
Use SPARQL Update's DELETE DATA to delete a triple. Run your SPARQL query again to check that the graph has changed.
+
Use SPARQL Update's DELETE DATA to delete that fact that Cade is interested in Photography. Run your SPARQL query again to check that the graph has changed.
  
 
Use INSERT DATA to add information about Sergio Pastor, who lives in 4 Carrer del Serpis, 46021 Valencia, Spain. he has a M.Sc. in computer from the University of Valencia from 2008. His areas of expertise include big data, semantic technologies and machine learning.
 
Use INSERT DATA to add information about Sergio Pastor, who lives in 4 Carrer del Serpis, 46021 Valencia, Spain. he has a M.Sc. in computer from the University of Valencia from 2008. His areas of expertise include big data, semantic technologies and machine learning.
Line 39: Line 52:
 
Write a SPARQL DELETE/INSERT update to change the name of "University of Valencia" to "Universidad de Valencia" whereever it occurs.
 
Write a SPARQL DELETE/INSERT update to change the name of "University of Valencia" to "Universidad de Valencia" whereever it occurs.
  
Write a SPARQL DESCRIBE query to get basic information about the University of Valencia.
+
Write a SPARQL DESCRIBE query to get basic information about Cade.
  
 
==If you have more time==
 
==If you have more time==
Redo all the above steps, this time writing a Python/RDFlib program.
+
Redo all the above steps, this time writing a Python/RDFlib program. This will be the topic of lab 6.
 +
You can look at the python example page to see how to connect to your blazegraph database in Python and perform some basic queries.
  
  

Latest revision as of 15:26, 12 February 2020

Lab 3: Group project ideas / SPARQL

Topics

  • Meeting with Andreas to discuss group project idea.
  • Setting up the Blazegraph graph database. Previously we have only stored our triples in memory, which is not persistent.
  • SPARQL queries and updates. We use SPARQL to retrieve of update triples in our databases/graphs of triples

Meeting with Andreas

One group at the time will go and talk to Andreas Lothe Opdahl about their group project idea. This is an opportunity to get early feedback for the programming project that you will develop throughout the semester. The office of Andreas is in Room 609 on the 6th floor of the SV-building next door(Laurits Melzers house). Enter the doors on the left when you are facing the entrance of the building and walk up the stairs.

Remember, we have a wiki page (linked below) that describes details about the group project, including some example ideas.


Tasks

Meanwhile you can start working on the tasks for the next lab which is about SPARQL and storage of triples in Blazegraph. Install blazegraph like below. If you have trouble installing Blazegraph you can use this link for now: "i2s.uib.no:8888/bigdata/#splash". This is the same blazegraph interface, but its stored in the cloud and only be used on the UiB network.

Installing the Blazegraph database on your own computer

Download Blazegraph (blazegraph.jar) from here: https://blazegraph.com/ I recommend placing blazegraph.jar in the same folder of your python project for the labs. Navigate to the folder of blazegraph.jar in your commandline/terminal using cd. (cd C:\Users\Martin\PycharmProjects\info216_labs for me as an example). Now run this command:

java -server -Xmx4g -jar blazegraph.jar

You might have to install java 8 64-bit JDK if you have problems running blazegraph. You can do it from this link: "https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html" If you get an "Address already in use" error, try to run this command instead: "java -server -Xmx4g -Djetty.port=19999 -jar blazegraph.jar". This changes the port of the blazegraph server. If you have trouble installing Blazegraph you can use this link for now: "i2s.uib.no:8888/bigdata/#splash". This is the same blazegraph interface, but its stored in the cloud and only be used on the UiB network.


If it works it should now display an url like: "http://10.0.0.13:9999/blazegraph/". Open this in a browser. You can now run SPARQL queries and updates and load RDF graphs from your file into Blazegraph. In the update tab, load RDF data (select type below) and then paste the contents of your turtle/.txt file to add them all at once to the database. If you have not serialized your graph from lab 2 yet, you can use the triples on the bottom of the page instead. Just copy and paste them into the Update section.


Write the following SPARQL queries:

  • SELECT all triples in your graph.
  • SELECT all the interests of Cade.
  • SELECT the city and country of where Emma lives.
  • SELECT only people who are older than 26.
  • SELECT Everyone who graduated with a Bachelor Degree.

Use SPARQL Update's DELETE DATA to delete that fact that Cade is interested in Photography. Run your SPARQL query again to check that the graph has changed.

Use INSERT DATA to add information about Sergio Pastor, who lives in 4 Carrer del Serpis, 46021 Valencia, Spain. he has a M.Sc. in computer from the University of Valencia from 2008. His areas of expertise include big data, semantic technologies and machine learning.

Write a SPARQL DELETE/INSERT update to change the name of "University of Valencia" to "Universidad de Valencia" whereever it occurs.

Write a SPARQL DESCRIBE query to get basic information about Cade.

If you have more time

Redo all the above steps, this time writing a Python/RDFlib program. This will be the topic of lab 6. You can look at the python example page to see how to connect to your blazegraph database in Python and perform some basic queries.


Useful Links

About the programming project

Lecture Notes

Triples that you can base your queries on: (turtle format)

@prefix ex: <http://example.org/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ex:Cade a foaf:Person ;
    ex:address [ a ex:Address ;
            ex:city ex:Berkeley ;
            ex:country ex:USA ;
            ex:postalCode "94709"^^xsd:string ;
            ex:state ex:California ;
            ex:street "1516_Henry_Street"^^xsd:string ] ;
    ex:age 27 ;
    ex:characteristic ex:Kind ;
    ex:degree [ ex:degreeField ex:Biology ;
            ex:degreeLevel "Bachelor"^^xsd:string ;
            ex:degreeSource ex:University_of_California ;
            ex:year "2011-01-01"^^xsd:gYear ] ;
    ex:interest ex:Bird,
        ex:Ecology,
        ex:Environmentalism,
        ex:Photography,
        ex:Travelling ;
    ex:married ex:Mary ;
    ex:meeting ex:Meeting1 ;
    ex:visit ex:Canada,
        ex:France,
        ex:Germany ;
    foaf:knows ex:Emma ;
    foaf:name "Cade_Tracey"^^xsd:string .

ex:Mary a ex:Student,
        foaf:Person ;
    ex:age 26 ;
    ex:characteristic ex:Kind ;
    ex:interest ex:Biology,
        ex:Chocolate,
        ex:Hiking .

ex:Emma a foaf:Person ;
    ex:address [ a ex:Address ;
            ex:city ex:Valencia ;
            ex:country ex:Spain ;
            ex:postalCode "46020"^^xsd:string ;
            ex:street "Carrer_de_la Guardia_Civil_20"^^xsd:string ] ;
    ex:age 26 ;
    ex:degree [ ex:degreeField ex:Chemistry ;
            ex:degreeLevel "Master" ;
            ex:degreeSource ex:University_of_Valencia ;
            ex:year "2015-01-01"^^xsd:gYear ] ;
    ex:expertise ex:Air_Pollution,
        ex:Toxic_Waste,
        ex:Waste_Management ;
    ex:interest ex:Bike_Riding,
        ex:Music,
        ex:Travelling ;
    ex:meeting ex:Meeting1 ;
    ex:visit ( ex:Portugal ex:Italy ex:France ex:Germany ex:Denmark ex:Sweden ) ;
    foaf:name "Emma_Dominguez"^^xsd:string .

ex:Meeting1 a ex:Meeting ;
    ex:date "August, 2014"^^xsd:string ;
    ex:involved ex:Cade,
        ex:Emma ;
    ex:location ex:Paris .

ex:Paris a ex:City ;
    ex:capitalOf ex:France ;
    ex:locatedIn ex:France .

ex:France ex:capital ex:Paris .