Skip to content

Instantly share code, notes, and snippets.

@gwpl
Created October 30, 2022 15:51
Show Gist options
  • Save gwpl/52d3bb7152e07a6a28f2af68a876a897 to your computer and use it in GitHub Desktop.
Save gwpl/52d3bb7152e07a6a28f2af68a876a897 to your computer and use it in GitHub Desktop.
by G foaf example, showing simple queries progressing step by step with outputs; run using Apache Jena ; based on https://jena.apache.org/tutorials/sparql.html and https://gitlab.com/gwpl/rdf_20q4
@prefix dc: <http://purl.org/dc/elements/1.1/>.
@prefix ex: <http://example.org/stuff/1.0/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#>.
@prefix wot: <http://xmlns.com/wot/0.1/>.
@prefix xml: <http://www.w3.org/XML/1998/namespace>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
# from above prefixes only foaf is currently used
<#Alice>
a foaf:Person ;
foaf:name "Alice";
foaf:knows <#Bob>.
<#Bob>
a foaf:Person ;
foaf:name "Bob";
foaf:knows <#Charlie>;
foaf:knows <#Xilian>.
<#Charlie>
a foaf:Person ;
foaf:name "Charlie";
foaf:knows <#Xilian>.
<#Xilian>
a foaf:Person ;
foaf:name "Xilian".
SELECT ?s ?p ?o
WHERE
{
?s ?p ?o .
}
# $sparql --data=by_G_foaf_example.ttl --query=by_G_foaf_q1.rq --results=text
#
#----------------------------------------------------------------------------------------------------------------------------
#| s | p | o |
#============================================================================================================================
#| <by_G_foaf_example.ttl#Alice> | <http://xmlns.com/foaf/0.1/name> | "Alice" |
#| <by_G_foaf_example.ttl#Alice> | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> | <http://xmlns.com/foaf/0.1/Person> |
#| <by_G_foaf_example.ttl#Alice> | <http://xmlns.com/foaf/0.1/knows> | <by_G_foaf_example.ttl#Bob> |
#| <by_G_foaf_example.ttl#Charlie> | <http://xmlns.com/foaf/0.1/name> | "Charlie" |
#| <by_G_foaf_example.ttl#Charlie> | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> | <http://xmlns.com/foaf/0.1/Person> |
#| <by_G_foaf_example.ttl#Charlie> | <http://xmlns.com/foaf/0.1/knows> | <by_G_foaf_example.ttl#Xilian> |
#| <by_G_foaf_example.ttl#Bob> | <http://xmlns.com/foaf/0.1/name> | "Bob" |
#| <by_G_foaf_example.ttl#Bob> | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> | <http://xmlns.com/foaf/0.1/Person> |
#| <by_G_foaf_example.ttl#Bob> | <http://xmlns.com/foaf/0.1/knows> | <by_G_foaf_example.ttl#Charlie> |
#| <by_G_foaf_example.ttl#Bob> | <http://xmlns.com/foaf/0.1/knows> | <by_G_foaf_example.ttl#Xilian> |
#| <by_G_foaf_example.ttl#Xilian> | <http://xmlns.com/foaf/0.1/name> | "Xilian" |
#| <by_G_foaf_example.ttl#Xilian> | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> | <http://xmlns.com/foaf/0.1/Person> |
#----------------------------------------------------------------------------------------------------------------------------
#
SELECT ?s "knows" ?o
WHERE
{
?s <http://xmlns.com/foaf/0.1/knows> ?o .
}
# $ sparql --data=by_G_foaf_example.ttl --query=by_G_foaf_q2.rq --results=text
# -------------------------------------------------------------------------------
# | s | .0 | o |
# ===============================================================================
# | <by_G_foaf_example.ttl#Bob> | "knows" | <by_G_foaf_example.ttl#Charlie> |
# | <by_G_foaf_example.ttl#Alice> | "knows" | <by_G_foaf_example.ttl#Bob> |
# | <by_G_foaf_example.ttl#Charlie> | "knows" | <by_G_foaf_example.ttl#Xilian> |
# | <by_G_foaf_example.ttl#Bob> | "knows" | <by_G_foaf_example.ttl#Xilian> |
# -------------------------------------------------------------------------------
SELECT ?s ?s_name "knows" ?o_name ?o
WHERE
{
?s <http://xmlns.com/foaf/0.1/knows> ?o .
?s <http://xmlns.com/foaf/0.1/name> ?s_name .
?o <http://xmlns.com/foaf/0.1/name> ?o_name .
}
# $ sparql --data=by_G_foaf_example.ttl --query=by_G_foaf_q3.rq --results=text
# -------------------------------------------------------------------------------------------------------
# | s | s_name | .0 | o_name | o |
# =======================================================================================================
# | <by_G_foaf_example.ttl#Bob> | "Bob" | "knows" | "Charlie" | <by_G_foaf_example.ttl#Charlie> |
# | <by_G_foaf_example.ttl#Alice> | "Alice" | "knows" | "Bob" | <by_G_foaf_example.ttl#Bob> |
# | <by_G_foaf_example.ttl#Charlie> | "Charlie" | "knows" | "Xilian" | <by_G_foaf_example.ttl#Xilian> |
# | <by_G_foaf_example.ttl#Bob> | "Bob" | "knows" | "Xilian" | <by_G_foaf_example.ttl#Xilian> |
# -------------------------------------------------------------------------------------------------------
SELECT ?s_name "knows" ?o_name
WHERE
{
?s <http://xmlns.com/foaf/0.1/knows> ?o .
?s <http://xmlns.com/foaf/0.1/name> ?s_name .
?o <http://xmlns.com/foaf/0.1/name> ?o_name .
}
# $ sparql --data=by_G_foaf_example.ttl --query=by_G_foaf_q4.rq --results=text
# -----------------------------------
# | s_name | .0 | o_name |
# ===================================
# | "Bob" | "knows" | "Charlie" |
# | "Alice" | "knows" | "Bob" |
# | "Charlie" | "knows" | "Xilian" |
# | "Bob" | "knows" | "Xilian" |
# -----------------------------------
SELECT ?s1_name "and" ?s2_name "know together" $o_name
WHERE
{
?s1 <http://xmlns.com/foaf/0.1/knows> ?o .
?s2 <http://xmlns.com/foaf/0.1/knows> ?o .
?s1 <http://xmlns.com/foaf/0.1/name> ?s1_name .
?s2 <http://xmlns.com/foaf/0.1/name> ?s2_name .
?o <http://xmlns.com/foaf/0.1/name> ?o_name .
FILTER (?s1_name < ?s2_name)
}
ORDER BY ?s1_name
# Who knows whom in common!
# $ sparql --data=by_G_foaf_example.ttl --query=by_G_foaf_q5.rq --results=text
#------------------------------------------------------------
#| s1_name | .0 | s2_name | .1 | o_name |
#============================================================
#| "Bob" | "and" | "Charlie" | "know together" | "Xilian" |
#------------------------------------------------------------
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment