Open In Colab

Query FOO from URI (COLAB)#

## Install Libraries
# !pip install rdflib
# !pip install requests
# !pip install SPARQLWrapper
# !pip install rdflib spacy
# !pip python -m spacy download en_core_web_sm
# Import installed libraries
import io
import os
import rdflib
from rdflib import URIRef, Literal, Graph, RDF, Namespace, plugin
from rdflib.plugins import sparql
from rdflib.plugins.sparql import prepareQuery
from rdflib.parser import Parser
from rdflib import Graph
from rdflib.plugins.sparql import prepareQuery
from SPARQLWrapper import SPARQLWrapper, JSON, N3
import requests
import json
from SPARQLWrapper import SPARQLWrapper, JSON
import spacy
from rdflib import Graph
import folium
from folium.plugins import MarkerCluster
from geopy.distance import geodesic
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Input In [2], in <cell line: 15>()
     13 import json
     14 from SPARQLWrapper import SPARQLWrapper, JSON
---> 15 import spacy
     16 from rdflib import Graph
     17 import folium

ModuleNotFoundError: No module named 'spacy'
# RDF Data Extraction
foo_KG = Graph()
foo_KG.parse("https://naeima.github.io/fooKG/index.ttl", format="ttl")

query = """
PREFIX foo: <https://w3id.org/def/foo#>

SELECT ?id ?latitude ?longitude ?localDate
WHERE {
  ?s a foo:gPSObservation ;
     foo:id ?id ;
     foo:latitude ?latitude ;
     foo:longitude ?longitude ;
     foo:localDate ?localDate .
}
ORDER BY ?localDate
LIMIT 100
"""

data = {'ID': [], 'Latitude': [], 'Longitude': [], 'Timestamp': []}

for row in foo_KG.query(query):
    try:
        data['ID'].append(str(row.id))
        data['Latitude'].append(float(row.latitude))
        data['Longitude'].append(float(row.longitude))
        data['Timestamp'].append(str(row.localDate))
    except:
        continue

# --- Map Setup ---
m = folium.Map(location=[data['Latitude'][0], data['Longitude'][0]], zoom_start=13, tiles=None)

folium.TileLayer(
    tiles='https://{s}.googleapis.com/vt/lyrs=s&x={x}&y={y}&z={z}',
    attr='Google',
    name='Google Satellite',
    max_zoom=20,
    subdomains=['mt0', 'mt1', 'mt2', 'mt3'],
    overlay=False,
    control=True,
).add_to(m)

marker_cluster = MarkerCluster().add_to(m)

# --- Add Markers ---
for i in range(len(data['ID'])):
    folium.Marker(
        location=[data['Latitude'][i], data['Longitude'][i]],
        popup=f"<i>ID: {data['ID'][i]}</i>",
        tooltip=data['Timestamp'][i],
    ).add_to(marker_cluster)

# --- Draw Lines + Show Distances ---
for i in range(1, len(data['ID'])):
    point1 = (data['Latitude'][i - 1], data['Longitude'][i - 1])
    point2 = (data['Latitude'][i], data['Longitude'][i])
    distance_km = geodesic(point1, point2).kilometers

    # Draw line
    folium.PolyLine(
        locations=[point1, point2],
        color='red',
        weight=2,
        tooltip=f"{distance_km:.2f} km"
    ).add_to(m)

# --- Display the map ---
m
Make this Notebook Trusted to load map: File -> Trust Notebook