@base <https://linkeddata.uriburner.com/DAV/demos/daas/gql-history-virtuoso-graph-analytics-meshup-claude_sonnet_5_5-1.ttl> .
@prefix : <https://gql.fyi/01-history.html#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema: <http://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<> a schema:CreativeWork ;
    schema:about :meshup ;
    schema:author <https://www.linkedin.com/in/kidehen#this> ;
    schema:dateCreated "2026-11-09T15:01:41Z"^^xsd:dateTime ;
    schema:dateModified "2026-11-09T15:01:41Z"^^xsd:dateTime ;
    schema:description "RDF companion for a meshup of two GQL Essentials chapters (History and Positioning) with OpenLink's GQL showcase for Virtuoso graph analytics, plus the two SPARQL graph-analytics posts it builds on."@en ;
    schema:inLanguage "en"@en ;
    schema:name "GQL in Virtuoso: History, Showcase and Live Results"@en ;
    prov:wasGeneratedBy <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this>, <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/rdf-infographic-skill#this> .

:meshup a schema:Article ;
    schema:abstract """<p><a href="https://linkeddata.uriburner.com/describe/?url=http%3A%2F%2Fdbpedia.org%2Fresource%2FGraph_Query_Language" target="_blank" rel="noopener noreferrer">GQL</a> became an ISO standard in 2024. Two chapters of <em><a href="https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fgql.fyi%2F01-history.html%23gqlEssentials" target="_blank" rel="noopener noreferrer">GQL Essentials</a></em>, by <a href="https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fgql.fyi%2F01-history.html%23dominikTomaszuk" target="_blank" rel="noopener noreferrer">Dominik Tomaszuk</a>, trace the road to it and place it among <a href="https://linkeddata.uriburner.com/describe/?url=http%3A%2F%2Fdbpedia.org%2Fresource%2FSQL" target="_blank" rel="noopener noreferrer">SQL</a>, <a href="https://linkeddata.uriburner.com/describe/?url=http%3A%2F%2Fdbpedia.org%2Fresource%2FResource_Description_Framework" target="_blank" rel="noopener noreferrer">RDF</a> and other query traditions.</p><p><a href="https://linkeddata.uriburner.com/describe/?url=http%3A%2F%2Fdbpedia.org%2Fresource%2FOpenLink_Software" target="_blank" rel="noopener noreferrer">OpenLink</a> then published sixteen GQL queries for <a href="https://linkeddata.uriburner.com/describe/?url=http%3A%2F%2Fdbpedia.org%2Fresource%2FVirtuoso_Universal_Server" target="_blank" rel="noopener noreferrer">Virtuoso</a>: PageRank and other graph measures, and shortest paths, over a five-person graph. Virtuoso runs GQL by translating it to <a href="https://linkeddata.uriburner.com/describe/?url=http%3A%2F%2Fdbpedia.org%2Fresource%2FSPARQL" target="_blank" rel="noopener noreferrer">SPARQL</a>, and this page runs the queries live, three basic examples first, keeping the post's line between ISO GQL and Virtuoso's own <code>bif:</code> functions.</p>"""@en ;
    schema:author <https://www.linkedin.com/in/kidehen#this> ;
    schema:dateModified "2026-11-09T15:01:41Z"^^xsd:dateTime ;
    schema:datePublished "2026-11-08"^^xsd:date ;
    schema:hasPart :lineageSection, :positionSection, :standardSection, :implSection, :basicsSection, :anatomySection, :pathsSection, :liveSection, :meshReading, :sourcesSection, :faqSection, :glossarySection, :howtoSection, :ontology, :gqlQuery1, :gqlQuery2, :gqlQuery3, :gqlQuery4, :gqlQuery5, :gqlQuery6, :gqlQuery7, :gqlQuery8, :gqlQuery9, :gqlQuery10, :gqlQuery11, :gqlQuery12, :gqlQuery13, :gqlQuery14, :gqlQuery15, :gqlQuery16 ;
    schema:headline "GQL in Virtuoso: History, Showcase and Live Results"@en ;
    schema:inLanguage "en"@en ;
    schema:isBasedOn <https://gql.fyi/01-history.html>, <https://gql.fyi/03-positioning.html>, <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694>, <https://community.openlinksw.com/t/from-rdf-relationships-to-network-insight-graph-analytics-in-virtuoso/6689>, <https://community.openlinksw.com/t/virtruoso-native-graph-analytics-using-sparql/6689#p-22389-dbpedia-network-insight-examples-1> ;
    schema:mentions <http://dbpedia.org/resource/Graph_Query_Language>, <http://dbpedia.org/resource/SPARQL>, <http://dbpedia.org/resource/Property_graph>, <http://dbpedia.org/resource/Resource_Description_Framework>, <http://dbpedia.org/resource/Neo4j>, <http://dbpedia.org/resource/Virtuoso_Universal_Server>, <http://dbpedia.org/resource/PageRank>, <http://dbpedia.org/resource/Centrality>, <http://dbpedia.org/resource/Shortest_path_problem>, <http://dbpedia.org/resource/Semantic_Web>, <http://dbpedia.org/resource/OpenLink_Software> ;
    schema:name "GQL in Virtuoso: History, Showcase and Live Results"@en ;
    prov:wasGeneratedBy <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this>, <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/rdf-infographic-skill#this> .

:gqlQuery17 a schema:SoftwareSourceCode ;
    rdfs:comment "Run live on 2026-11-09: 10 rows, for example Summer of Sam, 4 Little Girls and Do the Right Thing."@en ;
    schema:alternateName "Films by a director"@en ;
    schema:contributor <https://www.linkedin.com/in/kidehen#this> ;
    schema:description "A pattern over DBpedia: films whose dbo:director is Spike Lee, with film and director labels. The prefixes make dbo:Film a node label and dbo:director an edge label."@en ;
    schema:isPartOf :basicsSection ;
    schema:keywords "MATCH, node label film:dbo:Film, edge label [r:dbo:director], WHERE, property access film.rdfs:label, DISTINCT, LIMIT"@en ;
    schema:name "Basic 1: Ten films directed by Spike Lee"@en ;
    schema:position 1 ;
    schema:potentialAction :gqlRun17, :gqlExec17 ;
    schema:programmingLanguage "GQL"@en ;
    schema:target <https://vec.demo.openlinksw.com/sparql> ;
    schema:workTranslation :gqlQuery17Sparql ;
    schema:text """PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>

MATCH (film:dbo:Film)-[r:dbo:director]->(director)
WHERE director = dbr:Spike_Lee
RETURN DISTINCT
 film,
 film.rdfs:label as film_name,
 director,
 director.rdfs:label as ?directorName
LIMIT 10"""@en .

:gqlRun17 a schema:SearchAction ;
    schema:name "Open in the query form: Basic 1: Ten films directed by Spike Lee"@en ;
    schema:target :gqlEntry17 .

:gqlEntry17 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&qtxt=GQL%0APREFIX%20dbo%3A%20%3Chttp%3A%2F%2Fdbpedia.org%2Fontology%2F%3E%0APREFIX%20dbr%3A%20%3Chttp%3A%2F%2Fdbpedia.org%2Fresource%2F%3E%0A%0AMATCH%20(film%3Adbo%3AFilm)-%5Br%3Adbo%3Adirector%5D-%3E(director)%0AWHERE%20director%20%3D%20dbr%3ASpike_Lee%0ARETURN%20DISTINCT%0A%20film%2C%0A%20film.rdfs%3Alabel%20as%20film_name%2C%0A%20director%2C%0A%20director.rdfs%3Alabel%20as%20%3FdirectorName%0ALIMIT%2010&format=text%2Fx-html%2Btr&timeout=0&signal_void=on"^^xsd:anyURI .

:gqlExec17 a schema:SearchAction ;
    schema:name "Run and show results: Basic 1: Ten films directed by Spike Lee"@en ;
    schema:target :gqlExecEntry17 .

:gqlExecEntry17 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&query=GQL%0APREFIX%20dbo%3A%20%3Chttp%3A%2F%2Fdbpedia.org%2Fontology%2F%3E%0APREFIX%20dbr%3A%20%3Chttp%3A%2F%2Fdbpedia.org%2Fresource%2F%3E%0A%0AMATCH%20(film%3Adbo%3AFilm)-%5Br%3Adbo%3Adirector%5D-%3E(director)%0AWHERE%20director%20%3D%20dbr%3ASpike_Lee%0ARETURN%20DISTINCT%0A%20film%2C%0A%20film.rdfs%3Alabel%20as%20film_name%2C%0A%20director%2C%0A%20director.rdfs%3Alabel%20as%20%3FdirectorName%0ALIMIT%2010&format=text%2Fx-html%2Btr&timeout=0&signal_void=on"^^xsd:anyURI .

:gqlQuery17Sparql a schema:SoftwareSourceCode ;
    schema:description "The SPARQL that Virtuoso generated from the GQL query, as shown on the endpoint's result page on 2026-11-09."@en ;
    schema:name "Generated SPARQL for Basic 1: Ten films directed by Spike Lee"@en ;
    schema:programmingLanguage "SPARQL generated by Virtuoso"@en ;
    schema:text """PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX gql: <http://dbpedia.org/gql/ontology/>

SELECT DISTINCT
  (?gql_n_film AS ?film)
  (?prop_1 AS ?film_name)
  (?gql_n_director AS ?director)
  (?prop_2 AS ?directorName)
WHERE {
  VALUES ?gql_n_director { <http://dbpedia.org/resource/Spike_Lee> }
  ?gql_n_film rdf:type <http://dbpedia.org/ontology/Film> .
  ?gql_n_film <http://dbpedia.org/ontology/director> ?gql_n_director .
  ?gql_n_film <http://www.w3.org/2000/01/rdf-schema#label> ?prop_1 .
  ?gql_n_director <http://www.w3.org/2000/01/rdf-schema#label> ?prop_2 .
  FILTER ((?gql_n_director = <http://dbpedia.org/resource/Spike_Lee>))
}
LIMIT 10"""@en .

:gqlQuery18 a schema:SoftwareSourceCode ;
    rdfs:comment "Run live on 2026-11-09: 3 rows, Alice, Bob and Carol."@en ;
    schema:alternateName "Virtual property graph"@en ;
    schema:contributor <https://www.linkedin.com/in/kidehen#this> ;
    schema:description "USE PROPERTY GRAPH selects bakery, a virtual property graph: a read-only graph mapped live over relational tables, with no data copied. The query lists its customers."@en ;
    schema:isBasedOn <https://www.openlinksw.com/virtuoso/docs/gql/#gql-example-bakery-virtual> ;
    schema:isPartOf :basicsSection ;
    schema:keywords "USE PROPERTY GRAPH, node label customer, property access c.name, alias with AS"@en ;
    schema:name "Basic 2: Customers in a virtual property graph"@en ;
    schema:position 2 ;
    schema:potentialAction :gqlRun18, :gqlExec18 ;
    schema:programmingLanguage "GQL"@en ;
    schema:target <https://vec.demo.openlinksw.com/sparql> ;
    schema:workTranslation :gqlQuery18Sparql ;
    schema:text """USE PROPERTY GRAPH bakery
MATCH (c:customer)
RETURN
 c,
 c.name as name"""@en .

:gqlRun18 a schema:SearchAction ;
    schema:name "Open in the query form: Basic 2: Customers in a virtual property graph"@en ;
    schema:target :gqlEntry18 .

:gqlEntry18 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&qtxt=GQL%0AUSE%20PROPERTY%20GRAPH%20bakery%0AMATCH%20(c%3Acustomer)%0ARETURN%0A%20c%2C%0A%20c.name%20as%20name&format=text%2Fx-html%2Btr&timeout=0&signal_void=on"^^xsd:anyURI .

:gqlExec18 a schema:SearchAction ;
    schema:name "Run and show results: Basic 2: Customers in a virtual property graph"@en ;
    schema:target :gqlExecEntry18 .

:gqlExecEntry18 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&query=GQL%0AUSE%20PROPERTY%20GRAPH%20bakery%0AMATCH%20(c%3Acustomer)%0ARETURN%0A%20c%2C%0A%20c.name%20as%20name&format=text%2Fx-html%2Btr&timeout=0&signal_void=on"^^xsd:anyURI .

:gqlQuery18Sparql a schema:SoftwareSourceCode ;
    schema:description "The SPARQL that Virtuoso generated from the GQL query, as shown on the endpoint's result page on 2026-11-09."@en ;
    schema:name "Generated SPARQL for Basic 2: Customers in a virtual property graph"@en ;
    schema:programmingLanguage "SPARQL generated by Virtuoso"@en ;
    schema:text """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX gql: <http://dbpedia.org/pgraph/bakery/ontology#>

SELECT (?gql_n_c AS ?c) (?prop_1 AS ?name)
FROM <http://dbpedia.org/pgraph/bakery>
WHERE {
  ?gql_n_c rdf:type <http://dbpedia.org/pgraph/bakery/ontology#customer> .
  ?gql_n_c <http://dbpedia.org/pgraph/bakery/ontology#name> ?prop_1 .
}"""@en .

:gqlQuery19 a schema:SoftwareSourceCode ;
    rdfs:comment "Run live on 2026-11-09: returned true."@en ;
    schema:alternateName "ASK"@en ;
    schema:contributor <https://www.linkedin.com/in/kidehen#this> ;
    schema:description "ASK MATCH returns true or false instead of rows, borrowing the ASK form from SPARQL."@en ;
    schema:isPartOf :basicsSection ;
    schema:keywords "ASK MATCH, node label dbo:Person, WHERE"@en ;
    schema:name "Basic 3: Is Spike Lee a person? (ASK)"@en ;
    schema:position 3 ;
    schema:potentialAction :gqlRun19, :gqlExec19 ;
    schema:programmingLanguage "GQL"@en ;
    schema:target <https://vec.demo.openlinksw.com/sparql> ;
    schema:text """PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>

ASK MATCH (n:dbo:Person)
WHERE n = dbr:Spike_Lee"""@en .

:gqlRun19 a schema:SearchAction ;
    schema:name "Open in the query form: Basic 3: Is Spike Lee a person? (ASK)"@en ;
    schema:target :gqlEntry19 .

:gqlEntry19 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&qtxt=GQL%0APREFIX%20dbo%3A%20%3Chttp%3A%2F%2Fdbpedia.org%2Fontology%2F%3E%0APREFIX%20dbr%3A%20%3Chttp%3A%2F%2Fdbpedia.org%2Fresource%2F%3E%0A%0AASK%20MATCH%20(n%3Adbo%3APerson)%0AWHERE%20n%20%3D%20dbr%3ASpike_Lee&format=text%2Fx-html%2Btr&timeout=0&signal_void=on"^^xsd:anyURI .

:gqlExec19 a schema:SearchAction ;
    schema:name "Run and show results: Basic 3: Is Spike Lee a person? (ASK)"@en ;
    schema:target :gqlExecEntry19 .

:gqlExecEntry19 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&query=GQL%0APREFIX%20dbo%3A%20%3Chttp%3A%2F%2Fdbpedia.org%2Fontology%2F%3E%0APREFIX%20dbr%3A%20%3Chttp%3A%2F%2Fdbpedia.org%2Fresource%2F%3E%0A%0AASK%20MATCH%20(n%3Adbo%3APerson)%0AWHERE%20n%20%3D%20dbr%3ASpike_Lee&format=text%2Fx-html%2Btr&timeout=0&signal_void=on"^^xsd:anyURI .

<http://dbpedia.org/resource/Summer_of_Sam> a schema:Movie ;
    schema:director <http://dbpedia.org/resource/Spike_Lee> ;
    schema:name "Summer of Sam"@en .

:basicFilmsStep1 a schema:ListItem ;
    schema:item <http://dbpedia.org/resource/Summer_of_Sam> ;
    schema:position 1 .

<http://dbpedia.org/resource/4_Little_Girls> a schema:Movie ;
    schema:director <http://dbpedia.org/resource/Spike_Lee> ;
    schema:name "4 Little Girls"@en .

:basicFilmsStep2 a schema:ListItem ;
    schema:item <http://dbpedia.org/resource/4_Little_Girls> ;
    schema:position 2 .

<http://dbpedia.org/resource/Do_the_Right_Thing> a schema:Movie ;
    schema:director <http://dbpedia.org/resource/Spike_Lee> ;
    schema:name "Do the Right Thing"@en .

:basicFilmsStep3 a schema:ListItem ;
    schema:item <http://dbpedia.org/resource/Do_the_Right_Thing> ;
    schema:position 3 .

<http://dbpedia.org/resource/Joe's_Bed-Stuy_Barbershop:_We_Cut_Heads> a schema:Movie ;
    schema:director <http://dbpedia.org/resource/Spike_Lee> ;
    schema:name "Joe's Bed-Stuy Barbershop: We Cut Heads"@en .

:basicFilmsStep4 a schema:ListItem ;
    schema:item <http://dbpedia.org/resource/Joe's_Bed-Stuy_Barbershop:_We_Cut_Heads> ;
    schema:position 4 .

<http://dbpedia.org/resource/Jim_Brown:_All-American> a schema:Movie ;
    schema:director <http://dbpedia.org/resource/Spike_Lee> ;
    schema:name "Jim Brown: All-American"@en .

:basicFilmsStep5 a schema:ListItem ;
    schema:item <http://dbpedia.org/resource/Jim_Brown:_All-American> ;
    schema:position 5 .

<http://dbpedia.org/resource/Oldboy_(2013_film)> a schema:Movie ;
    schema:director <http://dbpedia.org/resource/Spike_Lee> ;
    schema:name "Oldboy (2013 film)"@en .

:basicFilmsStep6 a schema:ListItem ;
    schema:item <http://dbpedia.org/resource/Oldboy_(2013_film)> ;
    schema:position 6 .

<http://dbpedia.org/resource/Bamboozled> a schema:Movie ;
    schema:director <http://dbpedia.org/resource/Spike_Lee> ;
    schema:name "Bamboozled"@en .

:basicFilmsStep7 a schema:ListItem ;
    schema:item <http://dbpedia.org/resource/Bamboozled> ;
    schema:position 7 .

<http://dbpedia.org/resource/Clockers_(film)> a schema:Movie ;
    schema:director <http://dbpedia.org/resource/Spike_Lee> ;
    schema:name "Clockers (film)"@en .

:basicFilmsStep8 a schema:ListItem ;
    schema:item <http://dbpedia.org/resource/Clockers_(film)> ;
    schema:position 8 .

<http://dbpedia.org/resource/School_Daze> a schema:Movie ;
    schema:director <http://dbpedia.org/resource/Spike_Lee> ;
    schema:name "School Daze"@en .

:basicFilmsStep9 a schema:ListItem ;
    schema:item <http://dbpedia.org/resource/School_Daze> ;
    schema:position 9 .

<http://dbpedia.org/resource/She's_Gotta_Have_It> a schema:Movie ;
    schema:director <http://dbpedia.org/resource/Spike_Lee> ;
    schema:name "She's Gotta Have It"@en .

:basicFilmsStep10 a schema:ListItem ;
    schema:item <http://dbpedia.org/resource/She's_Gotta_Have_It> ;
    schema:position 10 .

:basicFilms a schema:ItemList ;
    schema:description "The films returned by Basic 1 on 2026-11-09, as listed by the query's LIMIT 10."@en ;
    schema:isBasedOn :gqlQuery17 ;
    schema:itemListElement :basicFilmsStep1, :basicFilmsStep2, :basicFilmsStep3, :basicFilmsStep4, :basicFilmsStep5, :basicFilmsStep6, :basicFilmsStep7, :basicFilmsStep8, :basicFilmsStep9, :basicFilmsStep10 ;
    schema:name "Films directed by Spike Lee"@en ;
    schema:numberOfItems 10 .

<http://dbpedia.org/pgraph/bakery#customer-101> a schema:Person ;
    schema:description "A customer node of the virtual bakery property graph, IRI minted by Virtuoso from the relational key."@en ;
    schema:name "Alice"@en .

:basicCustomersStep1 a schema:ListItem ;
    schema:item <http://dbpedia.org/pgraph/bakery#customer-101> ;
    schema:position 1 .

<http://dbpedia.org/pgraph/bakery#customer-102> a schema:Person ;
    schema:description "A customer node of the virtual bakery property graph, IRI minted by Virtuoso from the relational key."@en ;
    schema:name "Bob"@en .

:basicCustomersStep2 a schema:ListItem ;
    schema:item <http://dbpedia.org/pgraph/bakery#customer-102> ;
    schema:position 2 .

<http://dbpedia.org/pgraph/bakery#customer-103> a schema:Person ;
    schema:description "A customer node of the virtual bakery property graph, IRI minted by Virtuoso from the relational key."@en ;
    schema:name "Carol"@en .

:basicCustomersStep3 a schema:ListItem ;
    schema:item <http://dbpedia.org/pgraph/bakery#customer-103> ;
    schema:position 3 .

:basicCustomers a schema:ItemList ;
    schema:description "The customers returned by Basic 2 on 2026-11-09."@en ;
    schema:isBasedOn :gqlQuery18 ;
    schema:itemListElement :basicCustomersStep1, :basicCustomersStep2, :basicCustomersStep3 ;
    schema:name "Customers in the bakery graph"@en ;
    schema:numberOfItems 3 .

:basicAsk a schema:Observation ;
    schema:isBasedOn :gqlQuery19 ;
    schema:name "Is Spike Lee a person?"@en ;
    schema:value "true"^^xsd:boolean .

:lineageSection a schema:CreativeWork ;
    schema:abstract "Each step answers a limit in the one before it, and the field splits into RDF triples and property graphs. Source: GQL Essentials, chapter 1, by Dominik Tomaszuk."@en ;
    schema:isPartOf :meshup ;
    schema:name "From Network Databases to GQL"@en ;
    schema:position 1 ;
    schema:hasPart :milestone1, :milestone2, :milestone3, :milestone4, :milestone5, :milestone6, :milestone7, :milestone8, :milestone9, :milestone10, :milestone11, :milestone12 ;
    prov:wasGeneratedBy <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> .

:positionSection a schema:CreativeWork ;
    schema:abstract "Chapter 3 sets GQL against the traditions it draws on. Its running library example, Reader to LibraryAccount to Loan to Book, needs joins in a relational schema, nesting or cross-references in a document model, and stays a traversable path in a graph."@en ;
    schema:isPartOf :meshup ;
    schema:name "Where GQL Sits Among Query Traditions"@en ;
    schema:position 2 ;
    schema:itemListOrder schema:ItemListUnordered ;
    schema:hasPart :poSql, :poRdf, :poTree, :poKv, :poScholar, :poTakeaway, :poSqlI1, :poSqlI2, :poSqlD1, :poSqlD2, :poSqlD3, :poSqlG1, :poSqlG2, :poRdfI1, :poRdfD1, :poTreeI1, :poTreeD1, :poKvI1 ;
    prov:wasGeneratedBy <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> .

:standardSection a schema:CreativeWork ;
    schema:abstract "Pattern matching and path queries belong to the ISO standard. The analytics calls do not."@en ;
    schema:isPartOf :meshup ;
    schema:name "What ISO GQL Covers and What Virtuoso Adds"@en ;
    schema:position 3 ;
    schema:itemListOrder schema:ItemListUnordered ;
    schema:hasPart :stdIso, :stdPaths, :stdBif, :stdRdf12 ;
    prov:wasGeneratedBy <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> .

:anatomySection a schema:CreativeWork ;
    schema:abstract "Take the basic Spike Lee query apart first, then the weighted PageRank, which adds Virtuoso extensions."@en ;
    schema:isPartOf :meshup ;
    schema:name "Anatomy of a Query: Basic, Then With Extensions"@en ;
    schema:position 6 ;
    schema:hasPart :anB1, :anB2, :anB3, :anB4, :anB5, :anA1, :anA2, :anA3, :anA4, :anA5, :anA6 ;
    prov:wasGeneratedBy <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> .

:pathsSection a schema:CreativeWork ;
    schema:abstract "Alice is the start and Eve the destination. Each query asks a different question."@en ;
    schema:isPartOf :meshup ;
    schema:name "Path Queries: Five Ways to Ask Alice-to-Eve"@en ;
    schema:position 7 ;
    schema:hasPart :paMatch, :paLength, :paRoute, :paWeighted, :paReach ;
    prov:wasGeneratedBy <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> .

:liveSection a schema:CreativeWork ;
    schema:abstract "The basic examples ran on 2026-11-09 and the analytics queries on 2026-11-08. Every query returned a result; the urn:social graph holds five people, so it shows how the functions behave, not how they scale."@en ;
    schema:isPartOf :meshup ;
    schema:name "Live Results: Basic Examples and Graph Measures"@en ;
    schema:position 8 ;
    schema:itemListOrder schema:ItemListUnordered ;
    schema:hasPart :mePagerank, :meDegree, :meBetween, :meClose, :meEigen, :meWcc, :meScc, :meLouvain, :meTriangle ;
    prov:wasGeneratedBy <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> .

:meshReading a schema:CreativeWork ;
    schema:abstract "Agent-authored commentary joining a claim from the book to one from the OpenLink posts."@en ;
    schema:isPartOf :meshup ;
    schema:name "Reading the Chapters and the Showcase Together"@en ;
    schema:position 9 ;
    schema:itemListOrder schema:ItemListUnordered ;
    schema:hasPart :mrSplit, :mrPaths, :mrImpl, :mrOpenWorld ;
    prov:wasGeneratedBy <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> .

:sourcesSection a schema:CreativeWork ;
    schema:abstract "Pages read on 2026-11-08 and 2026-11-09; the 2019 overview is referenced only."@en ;
    schema:isPartOf :meshup ;
    schema:name "Sources"@en ;
    schema:position 10 ;
    schema:itemListOrder schema:ItemListUnordered ;
    schema:hasPart <https://gql.fyi/01-history.html>, <https://gql.fyi/03-positioning.html>, <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694>, <https://www.openlinksw.com/virtuoso/docs/gql/#gql-overview>, <https://community.openlinksw.com/t/from-rdf-relationships-to-network-insight-graph-analytics-in-virtuoso/6689>, <https://community.openlinksw.com/t/virtruoso-native-graph-analytics-using-sparql/6689#p-22389-dbpedia-network-insight-examples-1>, <https://community.openlinksw.com/t/graph-analytics-using-virtuoso-s-sparql-bi-extensions-to-sparql/1443> ;
    prov:wasGeneratedBy <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> .

:implSection a schema:CreativeWork ;
    schema:abstract "Virtuoso implements ISO/IEC 39075:2024 GQL as a translation layer over its SPARQL engine, written entirely in Virtuoso/PL SQL, so GQL and SPARQL can query the same RDF data. Sources: the Virtuoso GQL documentation and the live demo endpoint."@en ;
    schema:isPartOf :meshup ;
    schema:name "How Virtuoso Runs GQL"@en ;
    schema:position 4 ;
    schema:hasPart :implStage1, :implStage2, :implStage3, :implStage4, :implStage5, :implStage6, :implRun1, :implRun2, :implRun3, :implMap1, :implMap2, :implMap3, :implStat1, :implStat2 ;
    prov:wasGeneratedBy <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> .

:basicsSection a schema:CreativeWork ;
    schema:abstract "Three examples closer to basic GQL than the analytics queries: a pattern over DBpedia, a virtual property graph, and an ASK. Each runs live."@en ;
    schema:isPartOf :meshup ;
    schema:name "Start Here: Three Basic GQL Examples"@en ;
    schema:position 5 ;
    schema:hasPart :gqlQuery17, :gqlQuery18, :gqlQuery19 ;
    prov:wasGeneratedBy <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> .

:milestone1 a :LineageMilestone ;
    schema:description "IDS, designed by Charles Bachman, laid the groundwork for the network model of databases."@en ;
    schema:isPartOf :lineageSection ;
    schema:name "Integrated Data Store"@en ;
    schema:position 1 ;
    schema:alternateName "IDS"@en ;
    schema:category "Database models"@en ;
    schema:about <http://dbpedia.org/resource/Integrated_Data_Store>, <http://dbpedia.org/resource/Charles_Bachman> ;
    schema:isBasedOn <https://gql.fyi/01-history.html> ;
    :ledTo :milestone2 .

:milestone2 a :LineageMilestone ;
    schema:description "IBM introduced the Information Management System in 1968. It stored data as record types with named fields, and every record except the root had a single parent. Part data had to be repeated across suppliers, and a part without suppliers could not be stored."@en ;
    schema:isPartOf :lineageSection ;
    schema:name "IBM IMS and the hierarchical model"@en ;
    schema:position 2 ;
    schema:startDate "1968"^^xsd:gYear ;
    schema:alternateName "IBM IMS"@en ;
    schema:category "Database models"@en ;
    schema:about <http://dbpedia.org/resource/Hierarchical_database_model>, <http://dbpedia.org/resource/IBM> ;
    schema:isBasedOn <https://gql.fyi/01-history.html> ;
    :ledTo :milestone3 .

:milestone3 a :LineageMilestone ;
    schema:description "CODASYL created the Data Base Task Group in the late 1960s. Its reports of 1969 and 1971 proposed a standard sublanguage for database applications embedded in COBOL."@en ;
    schema:isPartOf :lineageSection ;
    schema:name "CODASYL Data Base Task Group"@en ;
    schema:position 3 ;
    schema:startDate "1969"^^xsd:gYear ;
    schema:alternateName "CODASYL DBTG"@en ;
    schema:category "Database models"@en ;
    schema:about <http://dbpedia.org/resource/CODASYL> ;
    schema:isBasedOn <https://gql.fyi/01-history.html> ;
    :ledTo :milestone4 .

:milestone4 a :LineageMilestone ;
    schema:description """The 1971 and 1973 reports dropped the tree. A record could have several parents, and connections were "sets": one owner record type related to many child record types."""@en ;
    schema:isPartOf :lineageSection ;
    schema:name "CODASYL network model"@en ;
    schema:position 4 ;
    schema:startDate "1971"^^xsd:gYear ;
    schema:alternateName "CODASYL network"@en ;
    schema:category "Database models"@en ;
    schema:about <http://dbpedia.org/resource/Network_model>, <http://dbpedia.org/resource/CODASYL> ;
    schema:isBasedOn <https://gql.fyi/01-history.html> ;
    :ledTo :milestone5 .

:milestone5 a :LineageMilestone ;
    schema:description "John F. Sowa proposed Conceptual Graphs in the mid-1970s (1976) and published the book in 1984. They aim to be readable by people and processable by machines, a bridge between natural language and machine languages."@en ;
    schema:isPartOf :lineageSection ;
    schema:name "Conceptual Graphs"@en ;
    schema:position 5 ;
    schema:startDate "1976"^^xsd:gYear ;
    schema:alternateName "Conceptual Graphs"@en ;
    schema:category "Graph knowledge"@en ;
    schema:about <http://dbpedia.org/resource/Conceptual_graph>, <http://dbpedia.org/resource/John_F._Sowa> ;
    schema:isBasedOn <https://gql.fyi/01-history.html> ;
    :ledTo :milestone6 .

:milestone6 a :LineageMilestone ;
    schema:description """In 1978 ANSI formed the committee now called INCITS DM32, or "H2". It worked on a Network Data Language based on the 1971 DBTG report, to give database products a compatible, competitive market."""@en ;
    schema:isPartOf :lineageSection ;
    schema:name "ANSI X3H2 and the Network Data Language"@en ;
    schema:position 6 ;
    schema:startDate "1978"^^xsd:gYear ;
    schema:alternateName "ANSI NDL"@en ;
    schema:category "Database models"@en ;
    schema:about <http://dbpedia.org/resource/American_National_Standards_Institute>, <http://dbpedia.org/resource/CODASYL> ;
    schema:isBasedOn <https://gql.fyi/01-history.html> ;
    :ledTo :milestone7 .

:milestone7 a :LineageMilestone ;
    schema:description "Regular path queries date from 1987 and conjunctive regular path queries from 1990. They showed interest in querying graph structure beyond what SQL and RDF handled well."@en ;
    schema:isPartOf :lineageSection ;
    schema:name "Regular path queries"@en ;
    schema:position 7 ;
    schema:startDate "1987"^^xsd:gYear ;
    schema:alternateName "Path queries"@en ;
    schema:category "Graph knowledge"@en ;
    schema:about <http://dbpedia.org/resource/Regular_language>, <http://dbpedia.org/resource/Path_(graph_theory)> ;
    schema:isBasedOn <https://gql.fyi/01-history.html> ;
    :ledTo :milestone8 .

:milestone8 a :LineageMilestone ;
    schema:description "Tim Berners-Lee described the Semantic Web in the mid-1990s. The W3C was formed, and a 2001 Scientific American article gave the vision momentum. The chapter notes that only part of it was realized in web markup."@en ;
    schema:isPartOf :lineageSection ;
    schema:name "The Semantic Web and RDF"@en ;
    schema:position 8 ;
    schema:startDate "1998"^^xsd:gYear ;
    schema:alternateName "Semantic Web"@en ;
    schema:category "RDF line"@en ;
    schema:about <http://dbpedia.org/resource/Semantic_Web>, <http://dbpedia.org/resource/Tim_Berners-Lee>, <http://dbpedia.org/resource/World_Wide_Web_Consortium>, <http://dbpedia.org/resource/Resource_Description_Framework> ;
    schema:isBasedOn <https://gql.fyi/01-history.html> ;
    :ledTo :milestone9 .

:milestone9 a :LineageMilestone ;
    schema:description "SPARQL, introduced in 2004 and refreshed in 2008, retrieves data stored as RDF. Its property paths resemble regular path queries."@en ;
    schema:isPartOf :lineageSection ;
    schema:name "SPARQL"@en ;
    schema:position 9 ;
    schema:startDate "2004"^^xsd:gYear ;
    schema:alternateName "SPARQL"@en ;
    schema:category "RDF line"@en ;
    schema:about <http://dbpedia.org/resource/SPARQL>, <http://dbpedia.org/resource/Resource_Description_Framework> ;
    schema:isBasedOn <https://gql.fyi/01-history.html> ;
    :ledTo :milestone10 .

:milestone10 a :LineageMilestone ;
    schema:description "Neo4j launched in 2007 and its Cypher language in 2011. The property graph model puts records of properties on both nodes and relationships, which the chapter links to knowledge graphs for AI and data mesh architectures."@en ;
    schema:isPartOf :lineageSection ;
    schema:name "Neo4j and Cypher"@en ;
    schema:position 10 ;
    schema:startDate "2007"^^xsd:gYear ;
    schema:alternateName "Neo4j, Cypher"@en ;
    schema:category "Property graph line"@en ;
    schema:about <http://dbpedia.org/resource/Neo4j>, <http://dbpedia.org/resource/Cypher_(query_language)>, <http://dbpedia.org/resource/Property_graph> ;
    schema:isBasedOn <https://gql.fyi/01-history.html> ;
    :ledTo :milestone11 .

:milestone11 a :LineageMilestone ;
    schema:description "SQL Property Graph Queries were standardized in 2023."@en ;
    schema:isPartOf :lineageSection ;
    schema:name "SQL/PGQ"@en ;
    schema:position 11 ;
    schema:startDate "2023"^^xsd:gYear ;
    schema:alternateName "SQL/PGQ"@en ;
    schema:category "Property graph line"@en ;
    schema:about <http://dbpedia.org/resource/SQL>, <http://dbpedia.org/resource/Property_graph> ;
    schema:isBasedOn <https://gql.fyi/01-history.html> ;
    :ledTo :milestone12 .

:milestone12 a :LineageMilestone ;
    schema:description "GQL was standardized in 2024 as ISO/IEC 39075. The chapter presents standardization as the route to interoperability, a competitive market and simpler data architectures."@en ;
    schema:isPartOf :lineageSection ;
    schema:name "GQL"@en ;
    schema:position 12 ;
    schema:startDate "2024"^^xsd:gYear ;
    schema:alternateName "GQL"@en ;
    schema:category "Property graph line"@en ;
    schema:about <http://dbpedia.org/resource/Graph_Query_Language>, <http://dbpedia.org/resource/International_Organization_for_Standardization> ;
    schema:isBasedOn <https://gql.fyi/01-history.html> .

:poSql a schema:Thing ;
    schema:description "SQL is the chapter's main point of comparison. GQL inherits the record orientation: typed collections of nodes or edges behave like tables, and they supply rows to binding tables. GQL binding tables disallow duplicate column names. The chapter names gaps against SQL: no graph-returning subqueries or views, and a weaker constraint repertoire. It also says SQL recursive queries become verbose for multi-hop and variable-length paths, which GQL path patterns state by the shape of the path. SQL remains the more mature and compositional language."@en ;
    schema:isPartOf :positionSection ;
    schema:name "Relational databases and SQL"@en ;
    schema:position 1 ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html> .

:poRdf a schema:Thing ;
    schema:description "The chapter traces RDF query languages from RQL, SeRQL and eRQL through SquishQL, RDQL and TriQL to SPARQL, and says SPARQL influenced GQL's graph pattern matching. It describes the SELECT, CONSTRUCT and ASK forms. Its takeaways contrast closed-world, constraint-oriented database reasoning with open-world, entailment-oriented RDF reasoning."@en ;
    schema:isPartOf :positionSection ;
    schema:name "RDF and SPARQL"@en ;
    schema:position 2 ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html> .

:poTree a schema:Thing ;
    schema:description "XPath and XQuery for XML, JSONPath and JMESPath for JSON, SQL:2016 JSON support and LINQ. The chapter says GQL draws on them for nested and hierarchical data."@en ;
    schema:isPartOf :positionSection ;
    schema:name "Tree-based languages"@en ;
    schema:position 3 ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html> .

:poKv a schema:Thing ;
    schema:description "DynamoDB and Redis store key-value pairs, which the chapter aligns with the properties on property graph nodes and edges. MongoDB, Couchbase with N1QL, ArangoDB with AQL and SQL++ extend that model to JSON documents."@en ;
    schema:isPartOf :positionSection ;
    schema:name "Key-value and document databases"@en ;
    schema:position 4 ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html> .

:poScholar a schema:Thing ;
    schema:description "Logic-based queries (Kuper and Vardi, 1984), graph-oriented object models (Gyssens, Paredaens and Van Gucht, 1990), hypernodes (Levene and Poulovassilis, 1990), GraphDB (Guting, 1994), nested graphs (Poulovassilis and Levene, 1994), G-Log (Paredaens and others, 1995) and Sheng and others (1999). Semistructured work includes the Object Exchange Model with Lore and Lorel, and UnQL. An earlier formal treatment of GQL (Morra, 2021) covered a read-only fragment of the 2020 working draft and is background, not the standard."@en ;
    schema:isPartOf :positionSection ;
    schema:name "Scholarly lineage of graph query"@en ;
    schema:position 5 ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html> .

:poTakeaway a schema:Thing ;
    schema:description "A comparative map across SQL, RDF/SPARQL and property-graph traditions. Closed-world against open-world reasoning, and graph-native pattern and path querying against tree and document navigation. It justified bag-based intermediate results and explicit scoping rules."@en ;
    schema:isPartOf :positionSection ;
    schema:name "The chapter's own takeaways"@en ;
    schema:position 6 ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html> .

:poSqlI1 a schema:Thing ;
    schema:description "Typed collections of nodes or edges behave like tables and supply rows to binding tables."@en ;
    schema:isPartOf :positionSection ;
    schema:name "SQL: record orientation"@en ;
    schema:position 11 ;
    schema:about :poSql ;
    schema:category "Inherits"@en ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html> .

:poSqlI2 a schema:Thing ;
    schema:description "Graph, node and edge types with key and unique constraints, and a high-level transaction view that validates constraints before completing."@en ;
    schema:isPartOf :positionSection ;
    schema:name "SQL: schema awareness"@en ;
    schema:position 12 ;
    schema:about :poSql ;
    schema:category "Inherits"@en ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html> .

:poSqlD1 a schema:Thing ;
    schema:description "Relationships are edges with their own identity and properties, not values matched through foreign keys."@en ;
    schema:isPartOf :positionSection ;
    schema:name "SQL: relationships as edges"@en ;
    schema:position 13 ;
    schema:about :poSql ;
    schema:category "Departs"@en ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html> .

:poSqlD2 a schema:Thing ;
    schema:description "Binding tables disallow duplicate column names, and missing information is usually a missing property rather than a null."@en ;
    schema:isPartOf :positionSection ;
    schema:name "SQL: binding tables and missing data"@en ;
    schema:position 14 ;
    schema:about :poSql ;
    schema:category "Departs"@en ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html> .

:poSqlD3 a schema:Thing ;
    schema:description "Path patterns describe the shape of a traversal, where SQL uses recursive queries over joins."@en ;
    schema:isPartOf :positionSection ;
    schema:name "SQL: path patterns"@en ;
    schema:position 15 ;
    schema:about :poSql ;
    schema:category "Departs"@en ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html> .

:poSqlG1 a schema:Thing ;
    schema:description "No general graph-returning subqueries or views that define persistent graphs. The chapter calls SQL the more mature and compositional language."@en ;
    schema:isPartOf :positionSection ;
    schema:name "SQL: composition"@en ;
    schema:position 16 ;
    schema:about :poSql ;
    schema:category "Gap"@en ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html> .

:poSqlG2 a schema:Thing ;
    schema:description "A weaker constraint repertoire than mature SQL: referential integrity, cardinality and rich domain constraints."@en ;
    schema:isPartOf :positionSection ;
    schema:name "SQL: constraints"@en ;
    schema:position 17 ;
    schema:about :poSql ;
    schema:category "Gap"@en ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html> .

:poRdfI1 a schema:Thing ;
    schema:description "Graph pattern matching and queries across heterogeneous sources, which the chapter traces to SPARQL."@en ;
    schema:isPartOf :positionSection ;
    schema:name "SPARQL: pattern matching"@en ;
    schema:position 18 ;
    schema:about :poRdf ;
    schema:category "Inherits"@en ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html> .

:poRdfD1 a schema:Thing ;
    schema:description "Closed-world, constraint-oriented database reasoning, against open-world, entailment-oriented RDF reasoning."@en ;
    schema:isPartOf :positionSection ;
    schema:name "RDF: reasoning"@en ;
    schema:position 19 ;
    schema:about :poRdf ;
    schema:category "Departs"@en ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html> .

:poTreeI1 a schema:Thing ;
    schema:description "Ideas for handling nested and hierarchical data, drawn from XPath, XQuery, JSONPath and SQL JSON support."@en ;
    schema:isPartOf :positionSection ;
    schema:name "Tree languages: nesting"@en ;
    schema:position 20 ;
    schema:about :poTree ;
    schema:category "Inherits"@en ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html> .

:poTreeD1 a schema:Thing ;
    schema:description "Graph-native pattern and path querying, rather than tree and document navigation."@en ;
    schema:isPartOf :positionSection ;
    schema:name "Tree languages: graph-native"@en ;
    schema:position 21 ;
    schema:about :poTree ;
    schema:category "Departs"@en ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html> .

:poKvI1 a schema:Thing ;
    schema:description "Key-value pairs map onto the properties of nodes and edges, and dynamic, evolving schemas follow document databases."@en ;
    schema:isPartOf :positionSection ;
    schema:name "Key-value and document: properties"@en ;
    schema:position 22 ;
    schema:about :poKv ;
    schema:category "Inherits"@en ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html> .

:stdIso a schema:Thing ;
    schema:description "The standard for GQL on property graphs. According to the post it includes graph pattern matching and path queries."@en ;
    schema:isPartOf :standardSection ;
    schema:name "ISO/IEC 39075:2024"@en ;
    schema:position 1 ;
    schema:category "ISO GQL"@en .

:stdPaths a schema:Thing ;
    schema:description "The path examples near the end of the post use GQL path matching: SHORTEST PATH, the * and + quantifiers, and reachability."@en ;
    schema:isPartOf :standardSection ;
    schema:name "Path matching in the showcase"@en ;
    schema:position 2 ;
    schema:category "ISO GQL"@en .

:stdBif a schema:Thing ;
    schema:description "The analytics calls, such as bif:pagerank and bif:betweenness, are Virtuoso extensions. They are not functions specified by ISO GQL, and other implementations can provide different analytics functions and interfaces."@en ;
    schema:isPartOf :standardSection ;
    schema:name "bif: analytics functions"@en ;
    schema:position 3 ;
    schema:category "Virtuoso extension"@en .

:stdRdf12 a schema:Thing ;
    schema:description """The weighted PageRank example reads an edge weight through RDF 1.2 annotations. It relies on the endpoint supporting RDF 1.2, and starts with VERSION "rdf 1.2"."""@en ;
    schema:isPartOf :standardSection ;
    schema:name "RDF 1.2 edge annotations"@en ;
    schema:position 4 ;
    schema:category "Endpoint support"@en .

:implStage1 a schema:Thing ;
    schema:description "The query as written, selected with the language=gql parameter or a leading GQL keyword."@en ;
    schema:isPartOf :implSection ;
    schema:name "GQL text"@en ;
    schema:position 1 ;
    schema:category "Stage"@en ;
    schema:isBasedOn <https://www.openlinksw.com/virtuoso/docs/gql/#gql-overview> .

:implStage2 a schema:Thing ;
    schema:description "Turns the text into a vector of tokens."@en ;
    schema:isPartOf :implSection ;
    schema:name "Lexer"@en ;
    schema:position 2 ;
    schema:category "Stage"@en ;
    schema:isBasedOn <https://www.openlinksw.com/virtuoso/docs/gql/#gql-overview> ;
    schema:alternateName "gql_lexer.sql"@en .

:implStage3 a schema:Thing ;
    schema:description "Turns the tokens into an abstract syntax tree."@en ;
    schema:isPartOf :implSection ;
    schema:name "Parser"@en ;
    schema:position 3 ;
    schema:category "Stage"@en ;
    schema:isBasedOn <https://www.openlinksw.com/virtuoso/docs/gql/#gql-overview> ;
    schema:alternateName "gql_parser.sql"@en .

:implStage4 a schema:Thing ;
    schema:description "Turns the tree into a SPARQL string and a translation context."@en ;
    schema:isPartOf :implSection ;
    schema:name "Translator"@en ;
    schema:position 4 ;
    schema:category "Stage"@en ;
    schema:isBasedOn <https://www.openlinksw.com/virtuoso/docs/gql/#gql-overview> ;
    schema:alternateName "gql_translate.sql"@en .

:implStage5 a schema:Thing ;
    schema:description "Combines the context and fragments into the final SPARQL."@en ;
    schema:isPartOf :implSection ;
    schema:name "SPARQL generator"@en ;
    schema:position 5 ;
    schema:category "Stage"@en ;
    schema:isBasedOn <https://www.openlinksw.com/virtuoso/docs/gql/#gql-overview> ;
    schema:alternateName "gql_sparql_gen.sql"@en .

:implStage6 a schema:Thing ;
    schema:description "Virtuoso's own SPARQL engine executes the query against the quad store."@en ;
    schema:isPartOf :implSection ;
    schema:name "SPARQL engine"@en ;
    schema:position 6 ;
    schema:category "Stage"@en ;
    schema:isBasedOn <https://www.openlinksw.com/virtuoso/docs/gql/#gql-overview> ;
    schema:alternateName "Virtuoso"@en .

:implRun1 a schema:Thing ;
    schema:description "The /sparql endpoint with language=gql returns result rows directly."@en ;
    schema:isPartOf :implSection ;
    schema:name "HTTP endpoint"@en ;
    schema:position 11 ;
    schema:category "Run"@en ;
    schema:isBasedOn <https://www.openlinksw.com/virtuoso/docs/gql/#gql-overview> ;
    schema:alternateName "/sparql"@en .

:implRun2 a schema:Thing ;
    schema:description "DB.DBA.GQL_RUN() returns a vector of result rows."@en ;
    schema:isPartOf :implSection ;
    schema:name "Virtuoso/PL"@en ;
    schema:position 12 ;
    schema:category "Run"@en ;
    schema:isBasedOn <https://www.openlinksw.com/virtuoso/docs/gql/#gql-overview> ;
    schema:alternateName "DB.DBA.GQL_RUN()"@en .

:implRun3 a schema:Thing ;
    schema:description "DB.DBA.GQL_TO_SPARQL() returns the SPARQL without running it."@en ;
    schema:isPartOf :implSection ;
    schema:name "Translation only"@en ;
    schema:position 13 ;
    schema:category "Run"@en ;
    schema:isBasedOn <https://www.openlinksw.com/virtuoso/docs/gql/#gql-overview> ;
    schema:alternateName "DB.DBA.GQL_TO_SPARQL()"@en .

:implMap1 a schema:Thing ;
    schema:description "Become RDF subjects, with rdf:type labels and property predicates."@en ;
    schema:isPartOf :implSection ;
    schema:name "Nodes"@en ;
    schema:position 21 ;
    schema:category "Map"@en ;
    schema:isBasedOn <https://www.openlinksw.com/virtuoso/docs/gql/#gql-overview> ;
    schema:alternateName "node"@en .

:implMap2 a schema:Thing ;
    schema:description "Become RDF predicates, with optional reification for edge properties."@en ;
    schema:isPartOf :implSection ;
    schema:name "Edges"@en ;
    schema:position 22 ;
    schema:category "Map"@en ;
    schema:isBasedOn <https://www.openlinksw.com/virtuoso/docs/gql/#gql-overview> ;
    schema:alternateName "edge"@en .

:implMap3 a schema:Thing ;
    schema:description "Become named graphs in the quad store."@en ;
    schema:isPartOf :implSection ;
    schema:name "Graphs"@en ;
    schema:position 23 ;
    schema:category "Map"@en ;
    schema:isBasedOn <https://www.openlinksw.com/virtuoso/docs/gql/#gql-overview> ;
    schema:alternateName "graph"@en .

:implStat1 a schema:Thing ;
    schema:description "The published documentation describes GQL for Virtuoso 0.6.0, in Virtuoso Open Source 7.2 and not yet in a tagged release. This page reports the newer edition running on the VEC demo endpoint, Virtuoso 07.20.3243."@en ;
    schema:isPartOf :implSection ;
    schema:name "Which edition"@en ;
    schema:position 31 ;
    schema:category "Status"@en ;
    schema:isBasedOn <https://www.openlinksw.com/virtuoso/docs/gql/#gql-overview> ;
    schema:alternateName "edition"@en .

:implStat2 a schema:Thing ;
    schema:description "MATCH SHORTEST PATH, which the 0.6.0 documentation lists as returning no rows, returned a row from the demo endpoint on 2026-11-08. Read the documentation for syntax and the endpoint for current behavior."@en ;
    schema:isPartOf :implSection ;
    schema:name "Newer than the documentation"@en ;
    schema:position 32 ;
    schema:category "Status"@en ;
    schema:isBasedOn <https://www.openlinksw.com/virtuoso/docs/gql/#gql-overview> ;
    schema:alternateName "observed"@en .

:anB1 a schema:Thing ;
    schema:description "Declares short names for the DBpedia ontology and resource namespaces, so dbo:Film and dbr:Spike_Lee stand for full IRIs. RDF classes and predicates become node labels and edge labels."@en ;
    schema:isPartOf :anatomySection ;
    schema:name "PREFIX dbo: and dbr:"@en ;
    schema:position 1 ;
    schema:alternateName "prefix"@en ;
    schema:isBasedOn :gqlQuery17 .

:anB2 a schema:Thing ;
    schema:description "A pattern: a node film with the label dbo:Film, joined by a directed edge labelled dbo:director to a node director. Pattern matching belongs to ISO GQL."@en ;
    schema:isPartOf :anatomySection ;
    schema:name "MATCH (film:dbo:Film)-[r:dbo:director]->(director)"@en ;
    schema:position 2 ;
    schema:alternateName "match"@en ;
    schema:isBasedOn :gqlQuery17 ;
    schema:category "ISO GQL"@en .

:anB3 a schema:Thing ;
    schema:description "Keeps only the matches whose director node is the one identified by this DBpedia IRI."@en ;
    schema:isPartOf :anatomySection ;
    schema:name "WHERE director = dbr:Spike_Lee"@en ;
    schema:position 3 ;
    schema:alternateName "where"@en ;
    schema:isBasedOn :gqlQuery17 .

:anB4 a schema:Thing ;
    schema:description "Returns each film and its label, and the director and its label. film.rdfs:label reads a property of a node, as names the column, and DISTINCT removes duplicate rows."@en ;
    schema:isPartOf :anatomySection ;
    schema:name "RETURN DISTINCT film, film.rdfs:label as film_name, ..."@en ;
    schema:position 4 ;
    schema:alternateName "return"@en ;
    schema:isBasedOn :gqlQuery17 .

:anB5 a schema:Thing ;
    schema:description "Stops after ten rows."@en ;
    schema:isPartOf :anatomySection ;
    schema:name "LIMIT 10"@en ;
    schema:position 5 ;
    schema:alternateName "limit"@en ;
    schema:isBasedOn :gqlQuery17 .

:anA1 a schema:Thing ;
    schema:description "Declares ex: for the weight property and foaf: for the foaf:knows relationship, so the edge label is an RDF predicate with a standard namespace."@en ;
    schema:isPartOf :anatomySection ;
    schema:name "PREFIX ex: and foaf:"@en ;
    schema:position 1 ;
    schema:alternateName "prefix"@en ;
    schema:isBasedOn :gqlQuery1 .

:anA2 a schema:Thing ;
    schema:description "Opts in to RDF 1.2 so the query can read an edge annotation. A Virtuoso mechanism for reaching its extensions, and the endpoint must support RDF 1.2."@en ;
    schema:isPartOf :anatomySection ;
    schema:name """VERSION "rdf 1.2""""@en ;
    schema:position 2 ;
    schema:alternateName "version"@en ;
    schema:isBasedOn :gqlQuery1 ;
    schema:category "Virtuoso extension"@en .

:anA3 a schema:Thing ;
    schema:description "Selects the named graph the query runs over. All sixteen showcase queries use urn:social."@en ;
    schema:isPartOf :anatomySection ;
    schema:name "USE GRAPH <urn:social>"@en ;
    schema:position 3 ;
    schema:alternateName "graph"@en ;
    schema:isBasedOn :gqlQuery1 .

:anA4 a schema:Thing ;
    schema:description "Matches foaf:knows relationships and reads each one's ex:weight annotation into w. The other analytics queries match without the property map."@en ;
    schema:isPartOf :anatomySection ;
    schema:name "MATCH (p)-[e:foaf:knows {ex:weight: w}]->(other)"@en ;
    schema:position 4 ;
    schema:alternateName "match"@en ;
    schema:isBasedOn :gqlQuery1 ;
    schema:category "ISO GQL"@en .

:anA5 a schema:Thing ;
    schema:description "A bif: function takes the node, the graph IRI, the relationship IRI and the weight property IRI, and returns a score for each node. The call is a Virtuoso extension, not ISO GQL."@en ;
    schema:isPartOf :anatomySection ;
    schema:name "RETURN DISTINCT p, bif:GRAPH_PAGERANK_WEIGHTED(...) AS score"@en ;
    schema:position 5 ;
    schema:alternateName "return"@en ;
    schema:isBasedOn :gqlQuery1 ;
    schema:category "Virtuoso extension"@en .

:anA6 a schema:Thing ;
    schema:description "Sorts the result so the highest-scoring nodes come first."@en ;
    schema:isPartOf :anatomySection ;
    schema:name "ORDER BY score DESC"@en ;
    schema:position 6 ;
    schema:alternateName "order"@en ;
    schema:isBasedOn :gqlQuery1 .

:mePagerank a schema:Thing ;
    schema:description "Ranks nodes by link structure. The post shows a weighted form using RDF 1.2 annotations, a basic form and a form with damping 0.9, 500 iterations and tolerance 0.000001."@en ;
    schema:isPartOf :liveSection ;
    schema:name "PageRank (three queries)"@en ;
    schema:position 1 ;
    schema:isBasedOn :gqlQuery2, :gqlQuery1, :gqlQuery3 .

:meDegree a schema:Thing ;
    schema:description "Counts a node's connections. The query asks for both directions."@en ;
    schema:isPartOf :liveSection ;
    schema:name "Degree centrality"@en ;
    schema:position 2 ;
    schema:isBasedOn :gqlQuery4 .

:meBetween a schema:Thing ;
    schema:description "Scores nodes by their role on paths between other nodes."@en ;
    schema:isPartOf :liveSection ;
    schema:name "Betweenness centrality"@en ;
    schema:position 3 ;
    schema:isBasedOn :gqlQuery5 .

:meClose a schema:Thing ;
    schema:description "Measures how near a node is to the other nodes, based on paths through the graph."@en ;
    schema:isPartOf :liveSection ;
    schema:name "Closeness centrality"@en ;
    schema:position 4 ;
    schema:isBasedOn :gqlQuery6 .

:meEigen a schema:Thing ;
    schema:description "Gives more weight to connections with nodes that themselves score highly. The query sets 200 iterations and tolerance 0.00001."@en ;
    schema:isPartOf :liveSection ;
    schema:name "Eigenvector centrality"@en ;
    schema:position 5 ;
    schema:isBasedOn :gqlQuery7 .

:meWcc a schema:Thing ;
    schema:description "Groups nodes by connectivity while disregarding edge direction."@en ;
    schema:isPartOf :liveSection ;
    schema:name "Weakly connected components"@en ;
    schema:position 6 ;
    schema:isBasedOn :gqlQuery8 .

:meScc a schema:Thing ;
    schema:description "Keeps direction: nodes are grouped when directed paths connect them both ways."@en ;
    schema:isPartOf :liveSection ;
    schema:name "Strongly connected components"@en ;
    schema:position 7 ;
    schema:isBasedOn :gqlQuery9 .

:meLouvain a schema:Thing ;
    schema:description "Returns a community identifier for each matched node."@en ;
    schema:isPartOf :liveSection ;
    schema:name "Community ID (Louvain)"@en ;
    schema:position 8 ;
    schema:isBasedOn :gqlQuery10 .

:meTriangle a schema:Thing ;
    schema:description "Counts the closed three-node patterns that include each node."@en ;
    schema:isPartOf :liveSection ;
    schema:name "Triangle counts"@en ;
    schema:position 9 ;
    schema:isBasedOn :gqlQuery11 .

:paMatch a schema:Thing ;
    schema:description "Returns the pair when a path exists, without computing a length or a route."@en ;
    schema:isPartOf :pathsSection ;
    schema:name "Shortest-path matching"@en ;
    schema:position 1 ;
    schema:isBasedOn :gqlQuery12 .

:paLength a schema:Thing ;
    schema:description "Returns the hop count alongside the endpoints."@en ;
    schema:isPartOf :pathsSection ;
    schema:name "Shortest-path length"@en ;
    schema:position 2 ;
    schema:isBasedOn :gqlQuery13 .

:paRoute a schema:Thing ;
    schema:description "Returns the node sequence, serialized as JSON for display."@en ;
    schema:isPartOf :pathsSection ;
    schema:name "Shortest route"@en ;
    schema:position 3 ;
    schema:isBasedOn :gqlQuery14 .

:paWeighted a schema:Thing ;
    schema:description "Returns the route and the total cost: the route is element 0 of the result and the cost is element 2."@en ;
    schema:isPartOf :pathsSection ;
    schema:name "Cheapest weighted route and total cost"@en ;
    schema:position 4 ;
    schema:isBasedOn :gqlQuery15 .

:paReach a schema:Thing ;
    schema:description "The + quantifier needs one or more foaf:knows edges and returns every node Alice can reach."@en ;
    schema:isPartOf :pathsSection ;
    schema:name "Everyone reachable from Alice"@en ;
    schema:position 5 ;
    schema:isBasedOn :gqlQuery16 .

:mrSplit a schema:CreativeWork ;
    schema:description "The chapter separates RDF-style triple graphs from property graphs with attributed edges. The showcase queries GQL MATCH patterns over RDF relationships: foaf:knows edges in the urn:social graph."@en ;
    schema:isPartOf :meshReading ;
    schema:name "GQL pattern syntax over RDF data"@en ;
    schema:position 1 ;
    schema:isBasedOn <https://gql.fyi/01-history.html>, <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:author <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> ;
    schema:accountablePerson <https://www.linkedin.com/in/kidehen#this> ;
    prov:wasGeneratedBy <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> .

:mrPaths a schema:CreativeWork ;
    schema:description "The chapter dates regular path queries to 1987 and says SPARQL property paths resemble them. The showcase uses the * and + quantifiers of GQL path patterns for reachability."@en ;
    schema:isPartOf :meshReading ;
    schema:name "Path quantifiers continue an old idea"@en ;
    schema:position 2 ;
    schema:isBasedOn <https://gql.fyi/01-history.html>, <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:author <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> ;
    schema:accountablePerson <https://www.linkedin.com/in/kidehen#this> ;
    prov:wasGeneratedBy <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> .

:mrImpl a schema:CreativeWork ;
    schema:description "Chapter 3 says SPARQL influenced GQL's pattern matching. The Virtuoso documentation says every GQL query is translated to SPARQL and executed by Virtuoso's SPARQL engine, so GQL patterns run on the same quad store that SPARQL uses."@en ;
    schema:isPartOf :meshReading ;
    schema:name "A language shaped by SPARQL, run through SPARQL"@en ;
    schema:position 3 ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html>, <https://www.openlinksw.com/virtuoso/docs/gql/#gql-overview> ;
    schema:author <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> ;
    schema:accountablePerson <https://www.linkedin.com/in/kidehen#this> ;
    prov:wasGeneratedBy <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> .

:mrOpenWorld a schema:CreativeWork ;
    schema:description "Chapter 3 says SPARQL influenced GQL's pattern matching and contrasts closed-world database reasoning with open-world RDF reasoning. The Virtuoso showcase applies GQL patterns to RDF data, where the graph in the query is the named graph selected with USE GRAPH."@en ;
    schema:isPartOf :meshReading ;
    schema:name "RDF data under GQL patterns"@en ;
    schema:position 4 ;
    schema:isBasedOn <https://gql.fyi/03-positioning.html>, <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:author <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> ;
    schema:accountablePerson <https://www.linkedin.com/in/kidehen#this> ;
    prov:wasGeneratedBy <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> .

<https://gql.fyi/01-history.html> a schema:Chapter ;
    schema:alternateName "Book chapter 1: History"@en ;
    schema:category "Subject"@en ;
    schema:description "The road from network databases to GQL."@en ;
    schema:isPartOf :sourcesSection ;
    schema:name "History · GQL Essentials"@en ;
    schema:position 1 .

<https://gql.fyi/03-positioning.html> a schema:Chapter ;
    schema:alternateName "Book chapter 3: Positioning"@en ;
    schema:category "Subject"@en ;
    schema:description "GQL set against SQL, RDF and SPARQL, tree-based and key-value or document languages."@en ;
    schema:isPartOf :sourcesSection ;
    schema:name "Positioning · GQL Essentials"@en ;
    schema:position 2 .

<https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> a schema:DiscussionForumPosting ;
    schema:alternateName "OpenLink GQL post"@en ;
    schema:category "Subject"@en ;
    schema:description "Sixteen GQL queries over urn:social with run links, and the line between ISO GQL and Virtuoso extensions."@en ;
    schema:datePublished "2026-11-06"^^xsd:date ;
    schema:isPartOf :sourcesSection ;
    schema:name "Virtuoso Native Graph Analytics with GQL: Enhanced by Standardized Namespaces and Identifiers"@en ;
    schema:position 3 .

<https://www.openlinksw.com/virtuoso/docs/gql/#gql-overview> a schema:TechArticle ;
    schema:alternateName "Virtuoso GQL documentation"@en ;
    schema:category "Subject"@en ;
    schema:description "How Virtuoso translates GQL to SPARQL, runs it and maps graphs to RDF. It describes version 0.6.0; the demo endpoint runs a newer edition. The overview and bakery pages were read."@en ;
    schema:isPartOf :sourcesSection ;
    schema:name "GQL Documentation — Virtuoso"@en ;
    schema:position 4 .

<https://community.openlinksw.com/t/from-rdf-relationships-to-network-insight-graph-analytics-in-virtuoso/6689> a schema:DiscussionForumPosting ;
    schema:alternateName "OpenLink SPARQL post"@en ;
    schema:category "Background"@en ;
    schema:description "The same bif: analytics functions written in SPARQL. Replaces the earlier SPARQL-BI approach. Background only."@en ;
    schema:datePublished "2026-11-05"^^xsd:date ;
    schema:isPartOf :sourcesSection ;
    schema:name "Virtuoso Native Graph Analytics using SPARQL"@en ;
    schema:position 5 .

<https://community.openlinksw.com/t/virtruoso-native-graph-analytics-using-sparql/6689#p-22389-dbpedia-network-insight-examples-1> a schema:DiscussionForumPosting ;
    schema:alternateName "OpenLink DBpedia post"@en ;
    schema:category "Background"@en ;
    schema:description "Eight DBpedia examples over urn:dbpedia:live that show the function family beyond urn:social."@en ;
    schema:datePublished "2026-11-06"^^xsd:date ;
    schema:isPartOf :sourcesSection ;
    schema:name "DBpedia Network Insight Examples"@en ;
    schema:position 6 .

<https://community.openlinksw.com/t/graph-analytics-using-virtuoso-s-sparql-bi-extensions-to-sparql/1443> a schema:DiscussionForumPosting ;
    schema:alternateName "SPARQL-BI overview, 2019"@en ;
    schema:category "Referenced"@en ;
    schema:description "The earlier SPARQL-BI extensions that the engine-level analytics functions replace. Referenced, not read in full."@en ;
    schema:isPartOf :sourcesSection ;
    schema:name "Graph Analytics using Virtuoso's SPARQL-BI Extensions to SPARQL"@en ;
    schema:position 7 .

<https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> schema:isBasedOn <https://community.openlinksw.com/t/from-rdf-relationships-to-network-insight-graph-analytics-in-virtuoso/6689> .
<https://community.openlinksw.com/t/virtruoso-native-graph-analytics-using-sparql/6689#p-22389-dbpedia-network-insight-examples-1> schema:isBasedOn <https://community.openlinksw.com/t/from-rdf-relationships-to-network-insight-graph-analytics-in-virtuoso/6689> .
<https://community.openlinksw.com/t/from-rdf-relationships-to-network-insight-graph-analytics-in-virtuoso/6689> schema:isBasedOn <https://community.openlinksw.com/t/graph-analytics-using-virtuoso-s-sparql-bi-extensions-to-sparql/1443> .

:gqlQuery1 a schema:SoftwareSourceCode ;
    rdfs:comment "Run live on 2026-11-08 against https://vec.demo.openlinksw.com/sparql: 4 rows. First row: #carol=0.209."@en ;
    schema:alternateName "PageRank (weighted)"@en ;
    schema:description "Showcase query 1 of 16 from the OpenLink GQL post. Function or pattern: bif:GRAPH_PAGERANK_WEIGHTED."@en ;
    schema:isBasedOn <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:isPartOf :meshup ;
    schema:name "Query 1: Weighted PageRank via RDF 1.2 edge annotations"@en ;
    schema:potentialAction :gqlRun1, :gqlExec1 ;
    schema:programmingLanguage "GQL"@en ;
    schema:target <https://vec.demo.openlinksw.com/sparql> ;
    schema:text """PREFIX ex: <#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

VERSION "rdf 1.2"
USE GRAPH <urn:social>
MATCH (p)-[e:foaf:knows {ex:weight: w}]->(other)
RETURN DISTINCT p,
  bif:GRAPH_PAGERANK_WEIGHTED(
    p,
    iri('urn:social'),
    iri('http://xmlns.com/foaf/0.1/knows'),
    iri('#weight')
  ) AS score
ORDER BY score DESC"""@en .

:gqlRun1 a schema:SearchAction ;
    schema:name "Run weighted PageRank"@en ;
    schema:target :gqlEntry1 .

:gqlEntry1 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&qtxt=GQL%0APREFIX+ex%3A+%3C%23%3E%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AVERSION+%22rdf+1.2%22%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5Be%3Afoaf%3Aknows+%7Bex%3Aweight%3A+w%7D%5D-%3E%28other%29%0ARETURN+DISTINCT+p%2C+bif%3AGRAPH_PAGERANK_WEIGHTED%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%2C+iri%28%27%23weight%27%29%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlExec1 a schema:SearchAction ;
    schema:name "Run and show results: Weighted PageRank via RDF 1.2 edge annotations"@en ;
    schema:target :gqlExecEntry1 .

:gqlExecEntry1 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&query=GQL%0APREFIX+ex%3A+%3C%23%3E%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AVERSION+%22rdf+1.2%22%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5Be%3Afoaf%3Aknows+%7Bex%3Aweight%3A+w%7D%5D-%3E%28other%29%0ARETURN+DISTINCT+p%2C+bif%3AGRAPH_PAGERANK_WEIGHTED%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%2C+iri%28%27%23weight%27%29%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlQuery2 a schema:SoftwareSourceCode ;
    rdfs:comment "Run live on 2026-11-08 against https://vec.demo.openlinksw.com/sparql: 5 rows. First row: #eve=0.265."@en ;
    schema:alternateName "PageRank"@en ;
    schema:description "Showcase query 2 of 16 from the OpenLink GQL post. Function or pattern: bif:pagerank."@en ;
    schema:isBasedOn <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:isPartOf :meshup ;
    schema:name "Query 2: Basic PageRank"@en ;
    schema:potentialAction :gqlRun2, :gqlExec2 ;
    schema:programmingLanguage "GQL"@en ;
    schema:target <https://vec.demo.openlinksw.com/sparql> ;
    schema:text """PREFIX foaf: <http://xmlns.com/foaf/0.1/>

USE GRAPH <urn:social>
MATCH (p)-[:foaf:knows]-(other)
RETURN DISTINCT p,
  bif:pagerank(
    p,
    iri('urn:social'),
    iri('http://xmlns.com/foaf/0.1/knows')
  ) AS score
ORDER BY score DESC"""@en .

:gqlRun2 a schema:SearchAction ;
    schema:name "Run basic PageRank"@en ;
    schema:target :gqlEntry2 .

:gqlEntry2 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&qtxt=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Apagerank%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlExec2 a schema:SearchAction ;
    schema:name "Run and show results: Basic PageRank"@en ;
    schema:target :gqlExecEntry2 .

:gqlExecEntry2 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&query=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Apagerank%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlQuery3 a schema:SoftwareSourceCode ;
    rdfs:comment "Run live on 2026-11-08 against https://vec.demo.openlinksw.com/sparql: 5 rows. First row: #eve=0.270."@en ;
    schema:alternateName "PageRank (damping 0.9)"@en ;
    schema:description "Showcase query 3 of 16 from the OpenLink GQL post. Function or pattern: bif:pagerank."@en ;
    schema:isBasedOn <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:isPartOf :meshup ;
    schema:name "Query 3: PageRank with damping, iteration limit, and tolerance"@en ;
    schema:potentialAction :gqlRun3, :gqlExec3 ;
    schema:programmingLanguage "GQL"@en ;
    schema:target <https://vec.demo.openlinksw.com/sparql> ;
    schema:text """PREFIX foaf: <http://xmlns.com/foaf/0.1/>

USE GRAPH <urn:social>
MATCH (p)-[:foaf:knows]-(other)
RETURN DISTINCT p,
  bif:pagerank(
    p,
    iri('urn:social'),
    iri('http://xmlns.com/foaf/0.1/knows'),
    0.9,
    500,
    0.000001
  ) AS score
ORDER BY score DESC"""@en .

:gqlRun3 a schema:SearchAction ;
    schema:name "Run parameterized PageRank"@en ;
    schema:target :gqlEntry3 .

:gqlEntry3 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&qtxt=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Apagerank%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%2C+0.9%2C+500%2C+0.000001%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlExec3 a schema:SearchAction ;
    schema:name "Run and show results: PageRank with damping, iteration limit, and tolerance"@en ;
    schema:target :gqlExecEntry3 .

:gqlExecEntry3 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&query=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Apagerank%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%2C+0.9%2C+500%2C+0.000001%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlQuery4 a schema:SoftwareSourceCode ;
    rdfs:comment "Run live on 2026-11-08 against https://vec.demo.openlinksw.com/sparql: 5 rows. First row: #carol=4."@en ;
    schema:alternateName "Degree"@en ;
    schema:description "Showcase query 4 of 16 from the OpenLink GQL post. Function or pattern: bif:degree_centrality."@en ;
    schema:isBasedOn <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:isPartOf :meshup ;
    schema:name "Query 4: Degree centrality"@en ;
    schema:potentialAction :gqlRun4, :gqlExec4 ;
    schema:programmingLanguage "GQL"@en ;
    schema:target <https://vec.demo.openlinksw.com/sparql> ;
    schema:text """PREFIX foaf: <http://xmlns.com/foaf/0.1/>

USE GRAPH <urn:social>
MATCH (p)-[:foaf:knows]-(other)
RETURN DISTINCT p,
  bif:degree_centrality(
    p,
    iri('urn:social'),
    iri('http://xmlns.com/foaf/0.1/knows'),
    'both'
  ) AS score
ORDER BY score DESC"""@en .

:gqlRun4 a schema:SearchAction ;
    schema:name "Run degree centrality"@en ;
    schema:target :gqlEntry4 .

:gqlEntry4 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&qtxt=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Adegree_centrality%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%2C+%27both%27%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlExec4 a schema:SearchAction ;
    schema:name "Run and show results: Degree centrality"@en ;
    schema:target :gqlExecEntry4 .

:gqlExecEntry4 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&query=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Adegree_centrality%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%2C+%27both%27%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlQuery5 a schema:SoftwareSourceCode ;
    rdfs:comment "Run live on 2026-11-08 against https://vec.demo.openlinksw.com/sparql: 5 rows. First row: #dave=0.500."@en ;
    schema:alternateName "Betweenness"@en ;
    schema:description "Showcase query 5 of 16 from the OpenLink GQL post. Function or pattern: bif:betweenness."@en ;
    schema:isBasedOn <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:isPartOf :meshup ;
    schema:name "Query 5: Betweenness centrality"@en ;
    schema:potentialAction :gqlRun5, :gqlExec5 ;
    schema:programmingLanguage "GQL"@en ;
    schema:target <https://vec.demo.openlinksw.com/sparql> ;
    schema:text """PREFIX foaf: <http://xmlns.com/foaf/0.1/>

USE GRAPH <urn:social>
MATCH (p)-[:foaf:knows]-(other)
RETURN DISTINCT p,
  bif:betweenness(
    p,
    iri('urn:social'),
    iri('http://xmlns.com/foaf/0.1/knows'),
    1,
    0
  ) AS score
ORDER BY score DESC"""@en .

:gqlRun5 a schema:SearchAction ;
    schema:name "Run betweenness centrality"@en ;
    schema:target :gqlEntry5 .

:gqlEntry5 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&qtxt=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Abetweenness%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%2C+1%2C+0%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlExec5 a schema:SearchAction ;
    schema:name "Run and show results: Betweenness centrality"@en ;
    schema:target :gqlExecEntry5 .

:gqlExecEntry5 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&query=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Abetweenness%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%2C+1%2C+0%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlQuery6 a schema:SoftwareSourceCode ;
    rdfs:comment "Run live on 2026-11-08 against https://vec.demo.openlinksw.com/sparql: 5 rows. First row: #dave=1."@en ;
    schema:alternateName "Closeness"@en ;
    schema:description "Showcase query 6 of 16 from the OpenLink GQL post. Function or pattern: bif:closeness."@en ;
    schema:isBasedOn <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:isPartOf :meshup ;
    schema:name "Query 6: Closeness centrality"@en ;
    schema:potentialAction :gqlRun6, :gqlExec6 ;
    schema:programmingLanguage "GQL"@en ;
    schema:target <https://vec.demo.openlinksw.com/sparql> ;
    schema:text """PREFIX foaf: <http://xmlns.com/foaf/0.1/>

USE GRAPH <urn:social>
MATCH (p)-[:foaf:knows]-(other)
RETURN DISTINCT p,
  bif:closeness(
    p,
    iri('urn:social'),
    iri('http://xmlns.com/foaf/0.1/knows')
  ) AS score
ORDER BY score DESC"""@en .

:gqlRun6 a schema:SearchAction ;
    schema:name "Run closeness centrality"@en ;
    schema:target :gqlEntry6 .

:gqlEntry6 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&qtxt=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Acloseness%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlExec6 a schema:SearchAction ;
    schema:name "Run and show results: Closeness centrality"@en ;
    schema:target :gqlExecEntry6 .

:gqlExecEntry6 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&query=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Acloseness%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlQuery7 a schema:SoftwareSourceCode ;
    rdfs:comment "Run live on 2026-11-08 against https://vec.demo.openlinksw.com/sparql: 5 rows. First row: #dave=0.585."@en ;
    schema:alternateName "Eigenvector"@en ;
    schema:description "Showcase query 7 of 16 from the OpenLink GQL post. Function or pattern: bif:eigenvector."@en ;
    schema:isBasedOn <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:isPartOf :meshup ;
    schema:name "Query 7: Eigenvector centrality"@en ;
    schema:potentialAction :gqlRun7, :gqlExec7 ;
    schema:programmingLanguage "GQL"@en ;
    schema:target <https://vec.demo.openlinksw.com/sparql> ;
    schema:text """PREFIX foaf: <http://xmlns.com/foaf/0.1/>

USE GRAPH <urn:social>
MATCH (p)-[:foaf:knows]-(other)
RETURN DISTINCT p,
  bif:eigenvector(
    p,
    iri('urn:social'),
    iri('http://xmlns.com/foaf/0.1/knows'),
    200,
    0.00001
  ) AS score
ORDER BY score DESC"""@en .

:gqlRun7 a schema:SearchAction ;
    schema:name "Run eigenvector centrality"@en ;
    schema:target :gqlEntry7 .

:gqlEntry7 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&qtxt=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Aeigenvector%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%2C+200%2C+0.00001%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlExec7 a schema:SearchAction ;
    schema:name "Run and show results: Eigenvector centrality"@en ;
    schema:target :gqlExecEntry7 .

:gqlExecEntry7 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&query=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Aeigenvector%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%2C+200%2C+0.00001%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlQuery8 a schema:SoftwareSourceCode ;
    rdfs:comment "Run live on 2026-11-08 against https://vec.demo.openlinksw.com/sparql: 5 rows. First row: #alice=0."@en ;
    schema:alternateName "Components (WCC)"@en ;
    schema:description "Showcase query 8 of 16 from the OpenLink GQL post. Function or pattern: bif:wcc."@en ;
    schema:isBasedOn <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:isPartOf :meshup ;
    schema:name "Query 8: Weakly connected components (WCC)"@en ;
    schema:potentialAction :gqlRun8, :gqlExec8 ;
    schema:programmingLanguage "GQL"@en ;
    schema:target <https://vec.demo.openlinksw.com/sparql> ;
    schema:text """PREFIX foaf: <http://xmlns.com/foaf/0.1/>

USE GRAPH <urn:social>
MATCH (p)-[:foaf:knows]-(other)
RETURN DISTINCT p,
  bif:wcc(
    p,
    iri('urn:social'),
    iri('http://xmlns.com/foaf/0.1/knows')
  ) AS score
ORDER BY score DESC"""@en .

:gqlRun8 a schema:SearchAction ;
    schema:name "Run WCC"@en ;
    schema:target :gqlEntry8 .

:gqlEntry8 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&qtxt=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Awcc%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlExec8 a schema:SearchAction ;
    schema:name "Run and show results: Weakly connected components (WCC)"@en ;
    schema:target :gqlExecEntry8 .

:gqlExecEntry8 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&query=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Awcc%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlQuery9 a schema:SoftwareSourceCode ;
    rdfs:comment "Run live on 2026-11-08 against https://vec.demo.openlinksw.com/sparql: 5 rows. First row: #eve=2."@en ;
    schema:alternateName "Components (SCC)"@en ;
    schema:description "Showcase query 9 of 16 from the OpenLink GQL post. Function or pattern: bif:scc."@en ;
    schema:isBasedOn <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:isPartOf :meshup ;
    schema:name "Query 9: Strongly connected components (SCC)"@en ;
    schema:potentialAction :gqlRun9, :gqlExec9 ;
    schema:programmingLanguage "GQL"@en ;
    schema:target <https://vec.demo.openlinksw.com/sparql> ;
    schema:text """PREFIX foaf: <http://xmlns.com/foaf/0.1/>

USE GRAPH <urn:social>
MATCH (p)-[:foaf:knows]-(other)
RETURN DISTINCT p,
  bif:scc(
    p,
    iri('urn:social'),
    iri('http://xmlns.com/foaf/0.1/knows')
  ) AS score
ORDER BY score DESC"""@en .

:gqlRun9 a schema:SearchAction ;
    schema:name "Run SCC"@en ;
    schema:target :gqlEntry9 .

:gqlEntry9 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&qtxt=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Ascc%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlExec9 a schema:SearchAction ;
    schema:name "Run and show results: Strongly connected components (SCC)"@en ;
    schema:target :gqlExecEntry9 .

:gqlExecEntry9 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&query=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Ascc%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlQuery10 a schema:SoftwareSourceCode ;
    rdfs:comment "Run live on 2026-11-08 against https://vec.demo.openlinksw.com/sparql: 5 rows. First row: #dave=1."@en ;
    schema:alternateName "Community (Louvain)"@en ;
    schema:description "Showcase query 10 of 16 from the OpenLink GQL post. Function or pattern: bif:community_id."@en ;
    schema:isBasedOn <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:isPartOf :meshup ;
    schema:name "Query 10: Community ID (Louvain)"@en ;
    schema:potentialAction :gqlRun10, :gqlExec10 ;
    schema:programmingLanguage "GQL"@en ;
    schema:target <https://vec.demo.openlinksw.com/sparql> ;
    schema:text """PREFIX foaf: <http://xmlns.com/foaf/0.1/>

USE GRAPH <urn:social>
MATCH (p)-[:foaf:knows]-(other)
RETURN DISTINCT p,
  bif:community_id(
    p,
    iri('urn:social'),
    iri('http://xmlns.com/foaf/0.1/knows')
  ) AS score
ORDER BY score DESC"""@en .

:gqlRun10 a schema:SearchAction ;
    schema:name "Run Louvain community ID"@en ;
    schema:target :gqlEntry10 .

:gqlEntry10 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&qtxt=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Acommunity_id%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlExec10 a schema:SearchAction ;
    schema:name "Run and show results: Community ID (Louvain)"@en ;
    schema:target :gqlExecEntry10 .

:gqlExecEntry10 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&query=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Acommunity_id%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlQuery11 a schema:SoftwareSourceCode ;
    rdfs:comment "Run live on 2026-11-08 against https://vec.demo.openlinksw.com/sparql: 5 rows. First row: #bob=2."@en ;
    schema:alternateName "Triangles"@en ;
    schema:description "Showcase query 11 of 16 from the OpenLink GQL post. Function or pattern: bif:triangle_count."@en ;
    schema:isBasedOn <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:isPartOf :meshup ;
    schema:name "Query 11: Triangles"@en ;
    schema:potentialAction :gqlRun11, :gqlExec11 ;
    schema:programmingLanguage "GQL"@en ;
    schema:target <https://vec.demo.openlinksw.com/sparql> ;
    schema:text """PREFIX foaf: <http://xmlns.com/foaf/0.1/>

USE GRAPH <urn:social>
MATCH (p)-[:foaf:knows]-(other)
RETURN DISTINCT p,
  bif:triangle_count(
    p,
    iri('urn:social'),
    iri('http://xmlns.com/foaf/0.1/knows')
  ) AS score
ORDER BY score DESC"""@en .

:gqlRun11 a schema:SearchAction ;
    schema:name "Run triangle counts"@en ;
    schema:target :gqlEntry11 .

:gqlEntry11 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&qtxt=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Atriangle_count%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlExec11 a schema:SearchAction ;
    schema:name "Run and show results: Triangles"@en ;
    schema:target :gqlExecEntry11 .

:gqlExecEntry11 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&query=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28p%29-%5B%3Afoaf%3Aknows%5D-%28other%29%0ARETURN+DISTINCT+p%2C+bif%3Atriangle_count%28p%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%29+AS+score%0AORDER+BY+score+DESC&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlQuery12 a schema:SoftwareSourceCode ;
    rdfs:comment "Run live on 2026-11-08 against https://vec.demo.openlinksw.com/sparql: 1 row. First row: one match, #alice to #eve."@en ;
    schema:alternateName "Shortest-path match"@en ;
    schema:description "Showcase query 12 of 16 from the OpenLink GQL post. Function or pattern: SHORTEST PATH."@en ;
    schema:isBasedOn <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:isPartOf :meshup ;
    schema:name "Query 12: Shortest-path matching with GQL"@en ;
    schema:potentialAction :gqlRun12, :gqlExec12 ;
    schema:programmingLanguage "GQL"@en ;
    schema:target <https://vec.demo.openlinksw.com/sparql> ;
    schema:text """PREFIX foaf: <http://xmlns.com/foaf/0.1/>

USE GRAPH <urn:social>
MATCH SHORTEST PATH (a)-[:foaf:knows*]->(b)
WHERE a = iri('#alice') AND b = iri('#eve')
RETURN a, b"""@en .

:gqlRun12 a schema:SearchAction ;
    schema:name "Run shortest-path matching"@en ;
    schema:target :gqlEntry12 .

:gqlEntry12 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&qtxt=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+SHORTEST+PATH+%28a%29-%5B%3Afoaf%3Aknows%2A%5D-%3E%28b%29%0AWHERE+a+%3D+iri%28%27%23alice%27%29+AND+b+%3D+iri%28%27%23eve%27%29%0ARETURN+a%2C+b&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlExec12 a schema:SearchAction ;
    schema:name "Run and show results: Shortest-path matching with GQL"@en ;
    schema:target :gqlExecEntry12 .

:gqlExecEntry12 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&query=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+SHORTEST+PATH+%28a%29-%5B%3Afoaf%3Aknows%2A%5D-%3E%28b%29%0AWHERE+a+%3D+iri%28%27%23alice%27%29+AND+b+%3D+iri%28%27%23eve%27%29%0ARETURN+a%2C+b&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlQuery13 a schema:SoftwareSourceCode ;
    rdfs:comment "Run live on 2026-11-08 against https://vec.demo.openlinksw.com/sparql: 1 row. First row: #alice to #eve, 3 hops."@en ;
    schema:alternateName "Hop count"@en ;
    schema:description "Showcase query 13 of 16 from the OpenLink GQL post. Function or pattern: bif:shortest_path_length."@en ;
    schema:isBasedOn <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:isPartOf :meshup ;
    schema:name "Query 13: Shortest-path length: Alice to Eve"@en ;
    schema:potentialAction :gqlRun13, :gqlExec13 ;
    schema:programmingLanguage "GQL"@en ;
    schema:target <https://vec.demo.openlinksw.com/sparql> ;
    schema:text """PREFIX foaf: <http://xmlns.com/foaf/0.1/>

USE GRAPH <urn:social>
MATCH (a)-[:foaf:knows*]->(b)
WHERE a = iri('#alice') AND b = iri('#eve')
RETURN DISTINCT a, b,
  bif:shortest_path_length(
    a,
    b,
    iri('urn:social'),
    iri('http://xmlns.com/foaf/0.1/knows')
  ) AS hops"""@en .

:gqlRun13 a schema:SearchAction ;
    schema:name "Run the Alice-to-Eve path-length query"@en ;
    schema:target :gqlEntry13 .

:gqlEntry13 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&qtxt=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28a%29-%5B%3Afoaf%3Aknows%2A%5D-%3E%28b%29%0AWHERE+a+%3D+iri%28%27%23alice%27%29+AND+b+%3D+iri%28%27%23eve%27%29%0ARETURN+DISTINCT+a%2C+b%2C+bif%3Ashortest_path_length%28a%2C+b%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%29+AS+hops&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlExec13 a schema:SearchAction ;
    schema:name "Run and show results: Shortest-path length: Alice to Eve"@en ;
    schema:target :gqlExecEntry13 .

:gqlExecEntry13 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&query=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28a%29-%5B%3Afoaf%3Aknows%2A%5D-%3E%28b%29%0AWHERE+a+%3D+iri%28%27%23alice%27%29+AND+b+%3D+iri%28%27%23eve%27%29%0ARETURN+DISTINCT+a%2C+b%2C+bif%3Ashortest_path_length%28a%2C+b%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%29+AS+hops&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlQuery14 a schema:SoftwareSourceCode ;
    rdfs:comment """Run live on 2026-11-08 against https://vec.demo.openlinksw.com/sparql: 1 row. First row: route ["#alice","#bob","#dave","#eve"]."""@en ;
    schema:alternateName "Shortest route"@en ;
    schema:description "Showcase query 14 of 16 from the OpenLink GQL post. Function or pattern: bif:shortest_path."@en ;
    schema:isBasedOn <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:isPartOf :meshup ;
    schema:name "Query 14: Shortest route: return the node sequence"@en ;
    schema:potentialAction :gqlRun14, :gqlExec14 ;
    schema:programmingLanguage "GQL"@en ;
    schema:target <https://vec.demo.openlinksw.com/sparql> ;
    schema:text """PREFIX foaf: <http://xmlns.com/foaf/0.1/>

USE GRAPH <urn:social>
MATCH (a)-[:foaf:knows*]->(b)
WHERE a = iri('#alice') AND b = iri('#eve')
RETURN DISTINCT
  sql:obj2json(
    bif:shortest_path(
      a,
      b,
      iri('urn:social'),
      iri('http://xmlns.com/foaf/0.1/knows')
    )
  ) AS route"""@en .

:gqlRun14 a schema:SearchAction ;
    schema:name "Run the shortest-route query"@en ;
    schema:target :gqlEntry14 .

:gqlEntry14 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&qtxt=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28a%29-%5B%3Afoaf%3Aknows%2A%5D-%3E%28b%29%0AWHERE+a+%3D+iri%28%27%23alice%27%29+AND+b+%3D+iri%28%27%23eve%27%29%0ARETURN+DISTINCT+sql%3Aobj2json%28bif%3Ashortest_path%28a%2C+b%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%29%29+AS+route&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlExec14 a schema:SearchAction ;
    schema:name "Run and show results: Shortest route: return the node sequence"@en ;
    schema:target :gqlExecEntry14 .

:gqlExecEntry14 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&query=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28a%29-%5B%3Afoaf%3Aknows%2A%5D-%3E%28b%29%0AWHERE+a+%3D+iri%28%27%23alice%27%29+AND+b+%3D+iri%28%27%23eve%27%29%0ARETURN+DISTINCT+sql%3Aobj2json%28bif%3Ashortest_path%28a%2C+b%2C+iri%28%27urn%3Asocial%27%29%2C+iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%29%29+AS+route&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlQuery15 a schema:SoftwareSourceCode ;
    rdfs:comment """Run live on 2026-11-08 against https://vec.demo.openlinksw.com/sparql: 1 row. First row: route ["#alice","#carol","#dave","#eve"], cost 1.900."""@en ;
    schema:alternateName "Cheapest route"@en ;
    schema:description "Showcase query 15 of 16 from the OpenLink GQL post. Function or pattern: bif:GRAPH_SHORTEST_PATH_WEIGHTED."@en ;
    schema:isBasedOn <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:isPartOf :meshup ;
    schema:name "Query 15: Cheapest weighted route and total cost"@en ;
    schema:potentialAction :gqlRun15, :gqlExec15 ;
    schema:programmingLanguage "GQL"@en ;
    schema:target <https://vec.demo.openlinksw.com/sparql> ;
    schema:text """PREFIX foaf: <http://xmlns.com/foaf/0.1/>

USE GRAPH <urn:social>
MATCH (a)-[:foaf:knows*]->(b)
WHERE a = iri('#alice') AND b = iri('#eve')
LET result = bif:GRAPH_SHORTEST_PATH_WEIGHTED(
  a,
  b,
  iri('urn:social'),
  iri('http://xmlns.com/foaf/0.1/knows'),
  iri('#weight'),
  1
)
RETURN DISTINCT
  sql:obj2json(bif:aref(result, 0)) AS route,
  bif:aref(result, 2) AS cost"""@en .

:gqlRun15 a schema:SearchAction ;
    schema:name "Run the cheapest weighted-route query"@en ;
    schema:target :gqlEntry15 .

:gqlEntry15 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&qtxt=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28a%29-%5B%3Afoaf%3Aknows%2A%5D-%3E%28b%29%0AWHERE+a+%3D+iri%28%27%23alice%27%29+AND+b+%3D+iri%28%27%23eve%27%29%0ALET+result+%3D+bif%3AGRAPH_SHORTEST_PATH_WEIGHTED%28a%2C+b%2C+iri%28%27urn%3Asocial%27%29%2C%0A++++iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%2C+iri%28%27%23weight%27%29%2C+1%29%0ARETURN+DISTINCT+sql%3Aobj2json%28bif%3Aaref%28result%2C+0%29%29+AS+route%2C%0A++++++++++++++++bif%3Aaref%28result%2C+2%29+AS+cost&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlExec15 a schema:SearchAction ;
    schema:name "Run and show results: Cheapest weighted route and total cost"@en ;
    schema:target :gqlExecEntry15 .

:gqlExecEntry15 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&query=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28a%29-%5B%3Afoaf%3Aknows%2A%5D-%3E%28b%29%0AWHERE+a+%3D+iri%28%27%23alice%27%29+AND+b+%3D+iri%28%27%23eve%27%29%0ALET+result+%3D+bif%3AGRAPH_SHORTEST_PATH_WEIGHTED%28a%2C+b%2C+iri%28%27urn%3Asocial%27%29%2C%0A++++iri%28%27http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fknows%27%29%2C+iri%28%27%23weight%27%29%2C+1%29%0ARETURN+DISTINCT+sql%3Aobj2json%28bif%3Aaref%28result%2C+0%29%29+AS+route%2C%0A++++++++++++++++bif%3Aaref%28result%2C+2%29+AS+cost&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlQuery16 a schema:SoftwareSourceCode ;
    rdfs:comment "Run live on 2026-11-08 against https://vec.demo.openlinksw.com/sparql: 4 rows. First row: nodes #carol, #bob, #dave, #eve."@en ;
    schema:alternateName "Reachability"@en ;
    schema:description "Showcase query 16 of 16 from the OpenLink GQL post. Function or pattern: + quantifier."@en ;
    schema:isBasedOn <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:isPartOf :meshup ;
    schema:name "Query 16: Path finding: everyone reachable from Alice"@en ;
    schema:potentialAction :gqlRun16, :gqlExec16 ;
    schema:programmingLanguage "GQL"@en ;
    schema:target <https://vec.demo.openlinksw.com/sparql> ;
    schema:text """PREFIX foaf: <http://xmlns.com/foaf/0.1/>

USE GRAPH <urn:social>
MATCH (a)-[:foaf:knows+]->(b)
WHERE a = iri('#alice')
RETURN DISTINCT b"""@en .

:gqlRun16 a schema:SearchAction ;
    schema:name "Run the Alice reachability query"@en ;
    schema:target :gqlEntry16 .

:gqlEntry16 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&qtxt=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28a%29-%5B%3Afoaf%3Aknows%2B%5D-%3E%28b%29%0AWHERE+a+%3D+iri%28%27%23alice%27%29%0ARETURN+DISTINCT+b&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:gqlExec16 a schema:SearchAction ;
    schema:name "Run and show results: Path finding: everyone reachable from Alice"@en ;
    schema:target :gqlExecEntry16 .

:gqlExecEntry16 a schema:EntryPoint ;
    schema:httpMethod "GET" ;
    schema:urlTemplate "https://vec.demo.openlinksw.com/sparql?default-graph-uri=&language=gql&query=GQL%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AUSE+GRAPH+%3Curn%3Asocial%3E%0AMATCH+%28a%29-%5B%3Afoaf%3Aknows%2B%5D-%3E%28b%29%0AWHERE+a+%3D+iri%28%27%23alice%27%29%0ARETURN+DISTINCT+b&format=text%2Fx-html%2Btr"^^xsd:anyURI .

:socialGraph a schema:Dataset ;
    schema:description "The urn:social named graph on the VEC demo endpoint: five people and seven weighted foaf:knows relationships, read on 2026-11-08."@en ;
    schema:isPartOf :meshup ;
    schema:name "urn:social demo graph"@en .

:alice a schema:Person ;
    schema:description "A node of the urn:social demo graph, IRI #alice on the endpoint. A demo node, not a real person."@en ;
    schema:isPartOf :socialGraph ;
    schema:name "Alice"@en .

:bob a schema:Person ;
    schema:description "A node of the urn:social demo graph, IRI #bob on the endpoint. A demo node, not a real person."@en ;
    schema:isPartOf :socialGraph ;
    schema:name "Bob"@en .

:carol a schema:Person ;
    schema:description "A node of the urn:social demo graph, IRI #carol on the endpoint. A demo node, not a real person."@en ;
    schema:isPartOf :socialGraph ;
    schema:name "Carol"@en .

:dave a schema:Person ;
    schema:description "A node of the urn:social demo graph, IRI #dave on the endpoint. A demo node, not a real person."@en ;
    schema:isPartOf :socialGraph ;
    schema:name "Dave"@en .

:eve a schema:Person ;
    schema:description "A node of the urn:social demo graph, IRI #eve on the endpoint. A demo node, not a real person."@en ;
    schema:isPartOf :socialGraph ;
    schema:name "Eve"@en .

:aliceKnowsBob a rdf:Statement ;
    rdf:object :bob ;
    rdf:predicate foaf:knows ;
    rdf:subject :alice ;
    schema:isPartOf :socialGraph ;
    schema:name "Alice knows Bob"@en ;
    schema:value 0.9 .
:alice foaf:knows :bob .

:aliceKnowsCarol a rdf:Statement ;
    rdf:object :carol ;
    rdf:predicate foaf:knows ;
    rdf:subject :alice ;
    schema:isPartOf :socialGraph ;
    schema:name "Alice knows Carol"@en ;
    schema:value 0.5 .
:alice foaf:knows :carol .

:bobKnowsCarol a rdf:Statement ;
    rdf:object :carol ;
    rdf:predicate foaf:knows ;
    rdf:subject :bob ;
    schema:isPartOf :socialGraph ;
    schema:name "Bob knows Carol"@en ;
    schema:value 0.8 .
:bob foaf:knows :carol .

:bobKnowsDave a rdf:Statement ;
    rdf:object :dave ;
    rdf:predicate foaf:knows ;
    rdf:subject :bob ;
    schema:isPartOf :socialGraph ;
    schema:name "Bob knows Dave"@en ;
    schema:value 0.6 .
:bob foaf:knows :dave .

:carolKnowsAlice a rdf:Statement ;
    rdf:object :alice ;
    rdf:predicate foaf:knows ;
    rdf:subject :carol ;
    schema:isPartOf :socialGraph ;
    schema:name "Carol knows Alice"@en ;
    schema:value 0.7 .
:carol foaf:knows :alice .

:carolKnowsDave a rdf:Statement ;
    rdf:object :dave ;
    rdf:predicate foaf:knows ;
    rdf:subject :carol ;
    schema:isPartOf :socialGraph ;
    schema:name "Carol knows Dave"@en ;
    schema:value 0.4 .
:carol foaf:knows :dave .

:daveKnowsEve a rdf:Statement ;
    rdf:object :eve ;
    rdf:predicate foaf:knows ;
    rdf:subject :dave ;
    schema:isPartOf :socialGraph ;
    schema:name "Dave knows Eve"@en ;
    schema:value 1.0 .
:dave foaf:knows :eve .

:obs1Carol a schema:Observation ;
    schema:isBasedOn :gqlQuery1 ;
    schema:measuredProperty <http://dbpedia.org/resource/PageRank> ;
    schema:observationAbout :carol ;
    schema:value "0.20935044153056744931"^^xsd:decimal .

:obs1Dave a schema:Observation ;
    schema:isBasedOn :gqlQuery1 ;
    schema:measuredProperty <http://dbpedia.org/resource/PageRank> ;
    schema:observationAbout :dave ;
    schema:value "0.19751323616890925639"^^xsd:decimal .

:obs1Alice a schema:Observation ;
    schema:isBasedOn :gqlQuery1 ;
    schema:measuredProperty <http://dbpedia.org/resource/PageRank> ;
    schema:observationAbout :alice ;
    schema:value "0.18377048547649449395"^^xsd:decimal .

:obs1Bob a schema:Observation ;
    schema:isBasedOn :gqlQuery1 ;
    schema:measuredProperty <http://dbpedia.org/resource/PageRank> ;
    schema:observationAbout :bob ;
    schema:value "0.17094848020419217693"^^xsd:decimal .

:obs2Eve a schema:Observation ;
    schema:isBasedOn :gqlQuery2 ;
    schema:measuredProperty <http://dbpedia.org/resource/PageRank> ;
    schema:observationAbout :eve ;
    schema:value "0.26500848189542247635"^^xsd:decimal .

:obs2Dave a schema:Observation ;
    schema:isBasedOn :gqlQuery2 ;
    schema:measuredProperty <http://dbpedia.org/resource/PageRank> ;
    schema:observationAbout :dave ;
    schema:value "0.22347892999440782669"^^xsd:decimal .

:obs2Carol a schema:Observation ;
    schema:isBasedOn :gqlQuery2 ;
    schema:measuredProperty <http://dbpedia.org/resource/PageRank> ;
    schema:observationAbout :carol ;
    schema:value "0.20522405704904403412"^^xsd:decimal .

:obs2Alice a schema:Observation ;
    schema:isBasedOn :gqlQuery2 ;
    schema:measuredProperty <http://dbpedia.org/resource/PageRank> ;
    schema:observationAbout :alice ;
    schema:value "0.16227170200324475546"^^xsd:decimal .

:obs2Bob a schema:Observation ;
    schema:isBasedOn :gqlQuery2 ;
    schema:measuredProperty <http://dbpedia.org/resource/PageRank> ;
    schema:observationAbout :bob ;
    schema:value "0.14401682905788093514"^^xsd:decimal .

:obs3Eve a schema:Observation ;
    schema:isBasedOn :gqlQuery3 ;
    schema:measuredProperty <http://dbpedia.org/resource/PageRank> ;
    schema:observationAbout :eve ;
    schema:value "0.27022741185740029035"^^xsd:decimal .

:obs3Dave a schema:Observation ;
    schema:isBasedOn :gqlQuery3 ;
    schema:measuredProperty <http://dbpedia.org/resource/PageRank> ;
    schema:observationAbout :dave ;
    schema:value "0.22398473631646870219"^^xsd:decimal .

:obs3Carol a schema:Observation ;
    schema:isBasedOn :gqlQuery3 ;
    schema:measuredProperty <http://dbpedia.org/resource/PageRank> ;
    schema:observationAbout :carol ;
    schema:value "0.20430716730102888024"^^xsd:decimal .

:obs3Alice a schema:Observation ;
    schema:isBasedOn :gqlQuery3 ;
    schema:measuredProperty <http://dbpedia.org/resource/PageRank> ;
    schema:observationAbout :alice ;
    schema:value "0.16057912677027108561"^^xsd:decimal .

:obs3Bob a schema:Observation ;
    schema:isBasedOn :gqlQuery3 ;
    schema:measuredProperty <http://dbpedia.org/resource/PageRank> ;
    schema:observationAbout :bob ;
    schema:value "0.14090155775483126366"^^xsd:decimal .

:obs4Carol a schema:Observation ;
    schema:isBasedOn :gqlQuery4 ;
    schema:measuredProperty <http://dbpedia.org/resource/Degree_(graph_theory)> ;
    schema:observationAbout :carol ;
    schema:value "4.0"^^xsd:decimal .

:obs4Alice a schema:Observation ;
    schema:isBasedOn :gqlQuery4 ;
    schema:measuredProperty <http://dbpedia.org/resource/Degree_(graph_theory)> ;
    schema:observationAbout :alice ;
    schema:value "3.0"^^xsd:decimal .

:obs4Bob a schema:Observation ;
    schema:isBasedOn :gqlQuery4 ;
    schema:measuredProperty <http://dbpedia.org/resource/Degree_(graph_theory)> ;
    schema:observationAbout :bob ;
    schema:value "3.0"^^xsd:decimal .

:obs4Dave a schema:Observation ;
    schema:isBasedOn :gqlQuery4 ;
    schema:measuredProperty <http://dbpedia.org/resource/Degree_(graph_theory)> ;
    schema:observationAbout :dave ;
    schema:value "3.0"^^xsd:decimal .

:obs4Eve a schema:Observation ;
    schema:isBasedOn :gqlQuery4 ;
    schema:measuredProperty <http://dbpedia.org/resource/Degree_(graph_theory)> ;
    schema:observationAbout :eve ;
    schema:value "1.0"^^xsd:decimal .

:obs5Dave a schema:Observation ;
    schema:isBasedOn :gqlQuery5 ;
    schema:measuredProperty <http://dbpedia.org/resource/Betweenness_centrality> ;
    schema:observationAbout :dave ;
    schema:value "0.5"^^xsd:decimal .

:obs5Carol a schema:Observation ;
    schema:isBasedOn :gqlQuery5 ;
    schema:measuredProperty <http://dbpedia.org/resource/Betweenness_centrality> ;
    schema:observationAbout :carol ;
    schema:value "0.22222222222222220989"^^xsd:decimal .

:obs5Bob a schema:Observation ;
    schema:isBasedOn :gqlQuery5 ;
    schema:measuredProperty <http://dbpedia.org/resource/Betweenness_centrality> ;
    schema:observationAbout :bob ;
    schema:value "0.11111111111111110494"^^xsd:decimal .

:obs5Alice a schema:Observation ;
    schema:isBasedOn :gqlQuery5 ;
    schema:measuredProperty <http://dbpedia.org/resource/Betweenness_centrality> ;
    schema:observationAbout :alice ;
    schema:value "0.0"^^xsd:decimal .

:obs5Eve a schema:Observation ;
    schema:isBasedOn :gqlQuery5 ;
    schema:measuredProperty <http://dbpedia.org/resource/Betweenness_centrality> ;
    schema:observationAbout :eve ;
    schema:value "0.0"^^xsd:decimal .

:obs6Dave a schema:Observation ;
    schema:isBasedOn :gqlQuery6 ;
    schema:measuredProperty <http://dbpedia.org/resource/Closeness_centrality> ;
    schema:observationAbout :dave ;
    schema:value "1.0"^^xsd:decimal .

:obs6Bob a schema:Observation ;
    schema:isBasedOn :gqlQuery6 ;
    schema:measuredProperty <http://dbpedia.org/resource/Closeness_centrality> ;
    schema:observationAbout :bob ;
    schema:value "0.66666666666666662966"^^xsd:decimal .

:obs6Carol a schema:Observation ;
    schema:isBasedOn :gqlQuery6 ;
    schema:measuredProperty <http://dbpedia.org/resource/Closeness_centrality> ;
    schema:observationAbout :carol ;
    schema:value "0.66666666666666662966"^^xsd:decimal .

:obs6Alice a schema:Observation ;
    schema:isBasedOn :gqlQuery6 ;
    schema:measuredProperty <http://dbpedia.org/resource/Closeness_centrality> ;
    schema:observationAbout :alice ;
    schema:value "0.57142857142857139685"^^xsd:decimal .

:obs6Eve a schema:Observation ;
    schema:isBasedOn :gqlQuery6 ;
    schema:measuredProperty <http://dbpedia.org/resource/Closeness_centrality> ;
    schema:observationAbout :eve ;
    schema:value "0.0"^^xsd:decimal .

:obs7Dave a schema:Observation ;
    schema:isBasedOn :gqlQuery7 ;
    schema:measuredProperty <http://dbpedia.org/resource/Eigenvector_centrality> ;
    schema:observationAbout :dave ;
    schema:value "0.58531278683835330501"^^xsd:decimal .

:obs7Carol a schema:Observation ;
    schema:isBasedOn :gqlQuery7 ;
    schema:measuredProperty <http://dbpedia.org/resource/Eigenvector_centrality> ;
    schema:observationAbout :carol ;
    schema:value "0.49391926811126796171"^^xsd:decimal .

:obs7Eve a schema:Observation ;
    schema:isBasedOn :gqlQuery7 ;
    schema:measuredProperty <http://dbpedia.org/resource/Eigenvector_centrality> ;
    schema:observationAbout :eve ;
    schema:value "0.44183665728719212495"^^xsd:decimal .

:obs7Alice a schema:Observation ;
    schema:isBasedOn :gqlQuery7 ;
    schema:measuredProperty <http://dbpedia.org/resource/Eigenvector_centrality> ;
    schema:observationAbout :alice ;
    schema:value "0.37284861920585737893"^^xsd:decimal .

:obs7Bob a schema:Observation ;
    schema:isBasedOn :gqlQuery7 ;
    schema:measuredProperty <http://dbpedia.org/resource/Eigenvector_centrality> ;
    schema:observationAbout :bob ;
    schema:value "0.28145510047877203563"^^xsd:decimal .

:obs8Alice a schema:Observation ;
    schema:isBasedOn :gqlQuery8 ;
    schema:measuredProperty :wcc ;
    schema:observationAbout :alice ;
    schema:value "0"^^xsd:integer .

:obs8Bob a schema:Observation ;
    schema:isBasedOn :gqlQuery8 ;
    schema:measuredProperty :wcc ;
    schema:observationAbout :bob ;
    schema:value "0"^^xsd:integer .

:obs8Carol a schema:Observation ;
    schema:isBasedOn :gqlQuery8 ;
    schema:measuredProperty :wcc ;
    schema:observationAbout :carol ;
    schema:value "0"^^xsd:integer .

:obs8Dave a schema:Observation ;
    schema:isBasedOn :gqlQuery8 ;
    schema:measuredProperty :wcc ;
    schema:observationAbout :dave ;
    schema:value "0"^^xsd:integer .

:obs8Eve a schema:Observation ;
    schema:isBasedOn :gqlQuery8 ;
    schema:measuredProperty :wcc ;
    schema:observationAbout :eve ;
    schema:value "0"^^xsd:integer .

:obs9Eve a schema:Observation ;
    schema:isBasedOn :gqlQuery9 ;
    schema:measuredProperty <http://dbpedia.org/resource/Strongly_connected_component> ;
    schema:observationAbout :eve ;
    schema:value "2"^^xsd:integer .

:obs9Dave a schema:Observation ;
    schema:isBasedOn :gqlQuery9 ;
    schema:measuredProperty <http://dbpedia.org/resource/Strongly_connected_component> ;
    schema:observationAbout :dave ;
    schema:value "1"^^xsd:integer .

:obs9Alice a schema:Observation ;
    schema:isBasedOn :gqlQuery9 ;
    schema:measuredProperty <http://dbpedia.org/resource/Strongly_connected_component> ;
    schema:observationAbout :alice ;
    schema:value "0"^^xsd:integer .

:obs9Bob a schema:Observation ;
    schema:isBasedOn :gqlQuery9 ;
    schema:measuredProperty <http://dbpedia.org/resource/Strongly_connected_component> ;
    schema:observationAbout :bob ;
    schema:value "0"^^xsd:integer .

:obs9Carol a schema:Observation ;
    schema:isBasedOn :gqlQuery9 ;
    schema:measuredProperty <http://dbpedia.org/resource/Strongly_connected_component> ;
    schema:observationAbout :carol ;
    schema:value "0"^^xsd:integer .

:obs10Dave a schema:Observation ;
    schema:isBasedOn :gqlQuery10 ;
    schema:measuredProperty <http://dbpedia.org/resource/Louvain_method> ;
    schema:observationAbout :dave ;
    schema:value "1"^^xsd:integer .

:obs10Eve a schema:Observation ;
    schema:isBasedOn :gqlQuery10 ;
    schema:measuredProperty <http://dbpedia.org/resource/Louvain_method> ;
    schema:observationAbout :eve ;
    schema:value "1"^^xsd:integer .

:obs10Alice a schema:Observation ;
    schema:isBasedOn :gqlQuery10 ;
    schema:measuredProperty <http://dbpedia.org/resource/Louvain_method> ;
    schema:observationAbout :alice ;
    schema:value "0"^^xsd:integer .

:obs10Bob a schema:Observation ;
    schema:isBasedOn :gqlQuery10 ;
    schema:measuredProperty <http://dbpedia.org/resource/Louvain_method> ;
    schema:observationAbout :bob ;
    schema:value "0"^^xsd:integer .

:obs10Carol a schema:Observation ;
    schema:isBasedOn :gqlQuery10 ;
    schema:measuredProperty <http://dbpedia.org/resource/Louvain_method> ;
    schema:observationAbout :carol ;
    schema:value "0"^^xsd:integer .

:obs11Bob a schema:Observation ;
    schema:isBasedOn :gqlQuery11 ;
    schema:measuredProperty :triangleCount ;
    schema:observationAbout :bob ;
    schema:value "2"^^xsd:integer .

:obs11Carol a schema:Observation ;
    schema:isBasedOn :gqlQuery11 ;
    schema:measuredProperty :triangleCount ;
    schema:observationAbout :carol ;
    schema:value "2"^^xsd:integer .

:obs11Alice a schema:Observation ;
    schema:isBasedOn :gqlQuery11 ;
    schema:measuredProperty :triangleCount ;
    schema:observationAbout :alice ;
    schema:value "1"^^xsd:integer .

:obs11Dave a schema:Observation ;
    schema:isBasedOn :gqlQuery11 ;
    schema:measuredProperty :triangleCount ;
    schema:observationAbout :dave ;
    schema:value "1"^^xsd:integer .

:obs11Eve a schema:Observation ;
    schema:isBasedOn :gqlQuery11 ;
    schema:measuredProperty :triangleCount ;
    schema:observationAbout :eve ;
    schema:value "0"^^xsd:integer .

:routeHops a schema:ItemList ;
    schema:description "The shortest route from Alice to Eve by hop count, returned by bif:shortest_path."@en ;
    schema:isBasedOn :gqlQuery14 ;
    schema:itemListElement :routeHopsStep1, :routeHopsStep2, :routeHopsStep3, :routeHopsStep4 ;
    schema:name "Route by hops"@en ;
    schema:numberOfItems 4 .

:routeHopsStep1 a schema:ListItem ;
    schema:item :alice ;
    schema:position 1 .

:routeHopsStep2 a schema:ListItem ;
    schema:item :bob ;
    schema:position 2 .

:routeHopsStep3 a schema:ListItem ;
    schema:item :dave ;
    schema:position 3 .

:routeHopsStep4 a schema:ListItem ;
    schema:item :eve ;
    schema:position 4 .

:routeWeighted a schema:ItemList ;
    schema:description "The cheapest route from Alice to Eve by edge weight, returned by bif:GRAPH_SHORTEST_PATH_WEIGHTED."@en ;
    schema:isBasedOn :gqlQuery15 ;
    schema:itemListElement :routeWeightedStep1, :routeWeightedStep2, :routeWeightedStep3, :routeWeightedStep4 ;
    schema:name "Route by weight"@en ;
    schema:numberOfItems 4 .

:routeWeightedStep1 a schema:ListItem ;
    schema:item :alice ;
    schema:position 1 .

:routeWeightedStep2 a schema:ListItem ;
    schema:item :carol ;
    schema:position 2 .

:routeWeightedStep3 a schema:ListItem ;
    schema:item :dave ;
    schema:position 3 .

:routeWeightedStep4 a schema:ListItem ;
    schema:item :eve ;
    schema:position 4 .

:obsHops a schema:Observation ;
    schema:isBasedOn :gqlQuery13 ;
    schema:measuredProperty <http://dbpedia.org/resource/Shortest_path_problem> ;
    schema:observationAbout :routeHops ;
    schema:value "3"^^xsd:integer .

:obsCost a schema:Observation ;
    schema:isBasedOn :gqlQuery15 ;
    schema:measuredProperty <http://dbpedia.org/resource/Shortest_path_problem> ;
    schema:observationAbout :routeWeighted ;
    schema:value "1.9"^^xsd:decimal .

:routeReach a schema:ItemList ;
    schema:description "The people reachable from Alice through one or more foaf:knows edges, returned by the + quantifier query."@en ;
    schema:isBasedOn :gqlQuery16 ;
    schema:itemListElement :routeReachStep1, :routeReachStep2, :routeReachStep3, :routeReachStep4 ;
    schema:name "Reachable from Alice"@en ;
    schema:numberOfItems 4 .

:routeReachStep1 a schema:ListItem ;
    schema:item :carol ;
    schema:position 1 .

:routeReachStep2 a schema:ListItem ;
    schema:item :bob ;
    schema:position 2 .

:routeReachStep3 a schema:ListItem ;
    schema:item :dave ;
    schema:position 3 .

:routeReachStep4 a schema:ListItem ;
    schema:item :eve ;
    schema:position 4 .

:faqSection a schema:FAQPage ;
    schema:hasPart :q1, :q2, :q3, :q4, :q5, :q6, :q7, :q8, :q9, :q10, :q11, :q12, :q13, :q14, :q15 ;
    schema:isPartOf :meshup ;
    schema:mainEntity :q1, :q2, :q3, :q4, :q5, :q6, :q7, :q8, :q9, :q10, :q11, :q12, :q13, :q14, :q15 ;
    schema:name "Frequently asked questions"@en ;
    schema:position 11 .

:q1 a schema:Question ;
    schema:acceptedAnswer :a1 ;
    schema:isPartOf :faqSection ;
    schema:name "What is GQL?"@en ;
    schema:position 1 .

:a1 a schema:Answer ;
    schema:text "GQL is the ISO/IEC 39075:2024 standard query language for property graphs. The OpenLink post says it includes graph pattern matching and path queries. The history chapter dates its standardization to 2024."@en .

:q2 a schema:Question ;
    schema:acceptedAnswer :a2 ;
    schema:isPartOf :faqSection ;
    schema:name "How does GQL fit into the history of graph databases?"@en ;
    schema:position 2 .

:a2 a schema:Answer ;
    schema:text "The chapter runs from IDS and the CODASYL network model through IMS, Conceptual Graphs, the Semantic Web and SPARQL, regular path queries, Neo4j and Cypher, SQL/PGQ in 2023 and GQL in 2024. Standardization pressure is the thread."@en .

:q3 a schema:Question ;
    schema:acceptedAnswer :a3 ;
    schema:isPartOf :faqSection ;
    schema:name "How do property graphs differ from RDF graphs?"@en ;
    schema:position 3 .

:a3 a schema:Answer ;
    schema:text "The chapter says a property graph puts records of properties, much like SQL rows, on both nodes and relationships. RDF-style graphs are triple-centric."@en .

:q4 a schema:Question ;
    schema:acceptedAnswer :a4 ;
    schema:isPartOf :faqSection ;
    schema:name "Why did the history chapter stress standardization?"@en ;
    schema:position 4 .

:a4 a schema:Answer ;
    schema:text "It says standard languages give interoperability and a competitive market, and support scalable, less complex data architectures as AI and big data drive graph use."@en .

:q5 a schema:Question ;
    schema:acceptedAnswer :a5 ;
    schema:isPartOf :faqSection ;
    schema:name "How does a showcase query choose its data?"@en ;
    schema:position 5 .

:a5 a schema:Answer ;
    schema:text "USE GRAPH <urn:social> names the graph. The MATCH pattern names the relationship, here foaf:knows, declared through a PREFIX so the edge label is an RDF predicate."@en .

:q6 a schema:Question ;
    schema:acceptedAnswer :a6 ;
    schema:isPartOf :faqSection ;
    schema:name "What does an analytics call return?"@en ;
    schema:position 6 .

:a6 a schema:Answer ;
    schema:text "A score for each matched node. The call takes the node, the graph IRI, the relationship IRI and, for some functions, parameters such as damping, iteration limit, tolerance, direction or normalization."@en .

:q7 a schema:Question ;
    schema:acceptedAnswer :a7 ;
    schema:isPartOf :faqSection ;
    schema:name "How does the weighted PageRank query read an edge weight?"@en ;
    schema:position 7 .

:a7 a schema:Answer ;
    schema:text """It declares VERSION "rdf 1.2", matches the edge with a property map {ex:weight: w}, and passes iri('#weight') to bif:GRAPH_PAGERANK_WEIGHTED. The post says it depends on the endpoint's RDF 1.2 support."""@en .

:q8 a schema:Question ;
    schema:acceptedAnswer :a8 ;
    schema:isPartOf :faqSection ;
    schema:name "Can I run the showcase queries myself?"@en ;
    schema:position 8 .

:a8 a schema:Answer ;
    schema:text "Each query has a run link to the VEC demo endpoint that opens it in the query form with language set to GQL. The posts say results depend on that service and its graph."@en .

:q9 a schema:Question ;
    schema:acceptedAnswer :a9 ;
    schema:isPartOf :faqSection ;
    schema:name "What does the DBpedia follow-on add?"@en ;
    schema:position 9 .

:a9 a schema:Answer ;
    schema:text "Eight examples over urn:dbpedia:live, covering philosophers, doctoral advisers, academic connections, football clubs, music genres, mountain ranges and corporate ownership. They add breadth-first search and Jaccard similarity to the function set. The post writes them as SPARQL queries."@en .

:q10 a schema:Question ;
    schema:acceptedAnswer :a10 ;
    schema:isPartOf :faqSection ;
    schema:name "How does the positioning chapter compare GQL with SQL?"@en ;
    schema:position 10 .

:a10 a schema:Answer ;
    schema:text "It treats SQL as the main comparison. GQL inherits the record orientation and gives relationships first-class edges with their own properties. The chapter says GQL path patterns state multi-hop traversals by shape where SQL recursion gets verbose, and that SQL remains more mature and compositional."@en .

:q11 a schema:Question ;
    schema:acceptedAnswer :a11 ;
    schema:isPartOf :faqSection ;
    schema:name "What gaps does the positioning chapter name for GQL?"@en ;
    schema:position 11 .

:a11 a schema:Answer ;
    schema:text "No general graph-returning subqueries or views that define persistent graphs, and a constraint repertoire weaker than mature SQL, especially referential integrity and cardinality constraints."@en .

:q12 a schema:Question ;
    schema:acceptedAnswer :a12 ;
    schema:isPartOf :faqSection ;
    schema:name "How did SPARQL influence GQL, according to the chapter?"@en ;
    schema:position 12 .

:a12 a schema:Answer ;
    schema:text "The chapter says SPARQL's graph pattern matching and its handling of queries across heterogeneous sources are evident in GQL. It also contrasts open-world RDF reasoning with the closed-world, constraint-oriented reasoning of databases."@en .

:q13 a schema:Question ;
    schema:acceptedAnswer :a13 ;
    schema:isPartOf :faqSection ;
    schema:name "How does Virtuoso run a GQL query?"@en ;
    schema:position 13 .

:a13 a schema:Answer ;
    schema:text "Virtuoso implements GQL as a translation layer over its SPARQL engine. The query is lexed, parsed, translated to SPARQL and executed there. It can run through the /sparql endpoint with language=gql, through DB.DBA.GQL_RUN(), or be translated only with DB.DBA.GQL_TO_SPARQL()."@en .

:q14 a schema:Question ;
    schema:acceptedAnswer :a14 ;
    schema:isPartOf :faqSection ;
    schema:name "Which edition of Virtuoso GQL does this page report?"@en ;
    schema:position 14 .

:a14 a schema:Answer ;
    schema:text "The newer edition running on the VEC demo endpoint, Virtuoso 07.20.3243. The published documentation describes an older edition, GQL for Virtuoso 0.6.0: for example, it lists plain SHORTEST PATH as returning no rows, while the demo endpoint returned a row. Use the documentation for syntax and the endpoint for current behavior."@en .

:q15 a schema:Question ;
    schema:acceptedAnswer :a15 ;
    schema:isPartOf :faqSection ;
    schema:name "How should the scores be read?"@en ;
    schema:position 15 .

:a15 a schema:Answer ;
    schema:text "As a description of the structure in the selected graph, not a general measure of importance. The posts say missing or unevenly recorded relationships change what the network contains, so read the query scope with its results."@en .

:glossarySection a schema:DefinedTermSet, skos:ConceptScheme ;
    schema:hasDefinedTerm <http://dbpedia.org/resource/Graph_Query_Language>, <http://dbpedia.org/resource/Property_graph>, <http://dbpedia.org/resource/SPARQL>, <http://dbpedia.org/resource/Resource_Description_Framework>, <http://dbpedia.org/resource/Network_model>, <http://dbpedia.org/resource/Hierarchical_database_model>, <http://dbpedia.org/resource/CODASYL>, <http://dbpedia.org/resource/Conceptual_graph>, <http://dbpedia.org/resource/Cypher_(query_language)>, <http://dbpedia.org/resource/PageRank>, <http://dbpedia.org/resource/Centrality>, <http://dbpedia.org/resource/Degree_(graph_theory)>, <http://dbpedia.org/resource/Betweenness_centrality>, <http://dbpedia.org/resource/Closeness_centrality>, <http://dbpedia.org/resource/Eigenvector_centrality>, <http://dbpedia.org/resource/Strongly_connected_component>, <http://dbpedia.org/resource/Louvain_method>, <http://dbpedia.org/resource/Shortest_path_problem>, <https://www.iso.org/standard/76120.html?browse=tc>, :wcc, :triangleCount, :rpq, :sqlPgq, :rdf12Annotation, :bifFunction, <http://dbpedia.org/resource/SQL>, :bindingTable, :gpml, :closedOpenWorld, :virtualPg, :translationLayer, :vecEndpoint, :urnSocial ;
    schema:hasPart <http://dbpedia.org/resource/Graph_Query_Language>, <http://dbpedia.org/resource/Property_graph>, <http://dbpedia.org/resource/SPARQL>, <http://dbpedia.org/resource/Resource_Description_Framework>, <http://dbpedia.org/resource/Network_model>, <http://dbpedia.org/resource/Hierarchical_database_model>, <http://dbpedia.org/resource/CODASYL>, <http://dbpedia.org/resource/Conceptual_graph>, <http://dbpedia.org/resource/Cypher_(query_language)>, <http://dbpedia.org/resource/PageRank>, <http://dbpedia.org/resource/Centrality>, <http://dbpedia.org/resource/Degree_(graph_theory)>, <http://dbpedia.org/resource/Betweenness_centrality>, <http://dbpedia.org/resource/Closeness_centrality>, <http://dbpedia.org/resource/Eigenvector_centrality>, <http://dbpedia.org/resource/Strongly_connected_component>, <http://dbpedia.org/resource/Louvain_method>, <http://dbpedia.org/resource/Shortest_path_problem>, <https://www.iso.org/standard/76120.html?browse=tc>, :wcc, :triangleCount, :rpq, :sqlPgq, :rdf12Annotation, :bifFunction, <http://dbpedia.org/resource/SQL>, :bindingTable, :gpml, :closedOpenWorld, :virtualPg, :translationLayer, :vecEndpoint, :urnSocial ;
    schema:isPartOf :meshup ;
    schema:name "Core technical glossary"@en ;
    schema:position 12 .

<http://dbpedia.org/resource/Graph_Query_Language> a schema:DefinedTerm, skos:Concept ;
    schema:description "ISO/IEC 39075:2024, the standard query language for property graphs, with graph pattern matching and path queries."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "GQL"@en ;
    skos:inScheme :glossarySection .

<http://dbpedia.org/resource/Property_graph> a schema:DefinedTerm, skos:Concept ;
    schema:description "A graph data model with records of properties on both nodes and relationships, distinct from RDF."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Property graph"@en ;
    skos:inScheme :glossarySection .

<http://dbpedia.org/resource/SPARQL> a schema:DefinedTerm, skos:Concept ;
    schema:description "The query language for RDF data, introduced in 2004 and refreshed in 2008. Its property paths resemble regular path queries."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "SPARQL"@en ;
    skos:inScheme :glossarySection .

<http://dbpedia.org/resource/Resource_Description_Framework> a schema:DefinedTerm, skos:Concept ;
    schema:description "The Resource Description Framework, a triple-centric model for graph data."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "RDF"@en ;
    skos:inScheme :glossarySection .

<http://dbpedia.org/resource/Network_model> a schema:DefinedTerm, skos:Concept ;
    schema:description "The CODASYL database model in which a record can have several parents, linked through sets."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Network model"@en ;
    skos:inScheme :glossarySection .

<http://dbpedia.org/resource/Hierarchical_database_model> a schema:DefinedTerm, skos:Concept ;
    schema:description "The IMS model: record types in a strict tree where each record except the root has one parent."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Hierarchical model"@en ;
    skos:inScheme :glossarySection .

<http://dbpedia.org/resource/CODASYL> a schema:DefinedTerm, skos:Concept ;
    schema:description "The Conference on Data System Languages, whose Data Base Task Group issued influential database reports in 1969 and 1971."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "CODASYL"@en ;
    skos:inScheme :glossarySection .

<http://dbpedia.org/resource/Conceptual_graph> a schema:DefinedTerm, skos:Concept ;
    schema:description "A knowledge representation proposed by John F. Sowa, readable by people and processable by machines."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Conceptual graph"@en ;
    skos:inScheme :glossarySection .

<http://dbpedia.org/resource/Cypher_(query_language)> a schema:DefinedTerm, skos:Concept ;
    schema:description "The declarative query language of Neo4j, introduced in 2011."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Cypher"@en ;
    skos:inScheme :glossarySection .

<http://dbpedia.org/resource/PageRank> a schema:DefinedTerm, skos:Concept ;
    schema:description "A ranking of nodes by the link structure of the selected graph."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "PageRank"@en ;
    skos:inScheme :glossarySection .

<http://dbpedia.org/resource/Centrality> a schema:DefinedTerm, skos:Concept ;
    schema:description "A family of measures of how prominent a node is. The showcase covers degree, betweenness, closeness and eigenvector centrality."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Centrality"@en ;
    skos:inScheme :glossarySection .

<http://dbpedia.org/resource/Degree_(graph_theory)> a schema:DefinedTerm, skos:Concept ;
    schema:description "The number of connections a node has. The showcase counts both directions."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Degree"@en ;
    skos:inScheme :glossarySection .

<http://dbpedia.org/resource/Betweenness_centrality> a schema:DefinedTerm, skos:Concept ;
    schema:description "A score for nodes by their role along shortest paths between other nodes."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Betweenness centrality"@en ;
    skos:inScheme :glossarySection .

<http://dbpedia.org/resource/Closeness_centrality> a schema:DefinedTerm, skos:Concept ;
    schema:description "A measure of how near a node is to the other nodes, based on paths through the graph."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Closeness centrality"@en ;
    skos:inScheme :glossarySection .

<http://dbpedia.org/resource/Eigenvector_centrality> a schema:DefinedTerm, skos:Concept ;
    schema:description "A measure that gives more weight to connections with nodes that themselves score highly."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Eigenvector centrality"@en ;
    skos:inScheme :glossarySection .

<http://dbpedia.org/resource/Strongly_connected_component> a schema:DefinedTerm, skos:Concept ;
    schema:description "Groups of nodes in which directed paths connect the members in both directions."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Strongly connected components"@en ;
    skos:inScheme :glossarySection .

<http://dbpedia.org/resource/Louvain_method> a schema:DefinedTerm, skos:Concept ;
    schema:description "A method that groups nodes into communities; the showcase returns a community ID per node."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Louvain community detection"@en ;
    skos:inScheme :glossarySection .

<http://dbpedia.org/resource/Shortest_path_problem> a schema:DefinedTerm, skos:Concept ;
    schema:description "Finding a path between two nodes with the fewest hops or the lowest total weight."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Shortest path"@en ;
    skos:inScheme :glossarySection .

<https://www.iso.org/standard/76120.html?browse=tc> a schema:DefinedTerm, skos:Concept ;
    schema:description "The ISO/IEC standard for GQL, published in 2024."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "ISO/IEC 39075:2024"@en ;
    skos:inScheme :glossarySection .

:wcc a schema:DefinedTerm, skos:Concept ;
    schema:description "Groups of nodes connected when edge direction is disregarded."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Weakly connected components"@en ;
    skos:inScheme :glossarySection .

:triangleCount a schema:DefinedTerm, skos:Concept ;
    schema:description "The number of closed three-node patterns that include a node; a sign of local clustering."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Triangle count"@en ;
    skos:inScheme :glossarySection .

:rpq a schema:DefinedTerm, skos:Concept ;
    schema:description "A query that finds node pairs joined by a path whose edge labels match a regular expression; dated to 1987."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Regular path query"@en ;
    skos:inScheme :glossarySection .

:sqlPgq a schema:DefinedTerm, skos:Concept ;
    schema:description "SQL Property Graph Queries, standardized by ISO in 2023."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "SQL/PGQ"@en ;
    skos:inScheme :glossarySection .

:rdf12Annotation a schema:DefinedTerm, skos:Concept ;
    schema:description "A value attached to an RDF relationship, such as a weight, that an analytics function can read."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "RDF 1.2 edge annotation"@en ;
    skos:inScheme :glossarySection .

:bifFunction a schema:DefinedTerm, skos:Concept ;
    schema:description "A Virtuoso built-in function called in a query, such as bif:pagerank. A Virtuoso extension, not part of ISO GQL."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "bif: analytics function"@en ;
    skos:inScheme :glossarySection .

<http://dbpedia.org/resource/SQL> a schema:DefinedTerm, skos:Concept ;
    schema:description "The relational query language and the main point of comparison for GQL in the positioning chapter."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "SQL"@en ;
    skos:inScheme :glossarySection .

:bindingTable a schema:DefinedTerm, skos:Concept ;
    schema:description "The table of variable bindings produced during query evaluation. In GQL its columns cannot share a name."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Binding table"@en ;
    skos:inScheme :glossarySection .

:gpml a schema:DefinedTerm, skos:Concept ;
    schema:description "The graph pattern matching sublanguage of GQL, a declarative pattern language for graphs and paths."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "GPML"@en ;
    skos:inScheme :glossarySection .

:closedOpenWorld a schema:DefinedTerm, skos:Concept ;
    schema:description "Closed-world database reasoning treats absent data as false and enforces constraints; open-world RDF reasoning does not, and works by entailment."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Closed-world and open-world reasoning"@en ;
    skos:inScheme :glossarySection .

:virtualPg a schema:DefinedTerm, skos:Concept ;
    schema:description "A read-only property graph mapped live over existing relational tables, with no data copied. Created with CREATE VIRTUAL PROPERTY GRAPH and queried with USE PROPERTY GRAPH."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Virtual property graph"@en ;
    skos:inScheme :glossarySection .

:translationLayer a schema:DefinedTerm, skos:Concept ;
    schema:description "The Virtuoso GQL extension parses GQL and translates it to SPARQL, which the SPARQL engine then executes."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "Translation layer"@en ;
    skos:inScheme :glossarySection .

:vecEndpoint a schema:DefinedTerm, skos:Concept ;
    schema:description "The OpenLink demo query service at vec.demo.openlinksw.com that the run links open."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "VEC demo endpoint"@en ;
    skos:inScheme :glossarySection .

:urnSocial a schema:DefinedTerm, skos:Concept ;
    schema:description "The named graph of five people linked by foaf:knows that the showcase queries use."@en ;
    schema:inDefinedTermSet :glossarySection ;
    schema:isPartOf :glossarySection ;
    schema:name "urn:social graph"@en ;
    skos:inScheme :glossarySection .

:howtoSection a schema:HowTo ;
    schema:description "How to write and read a GQL analytics query against a Virtuoso named graph."@en ;
    schema:isPartOf :meshup ;
    schema:name "Run a GQL Analytics Query in Virtuoso"@en ;
    schema:position 13 ;
    schema:step :howtoStep1, :howtoStep2, :howtoStep3, :howtoStep4, :howtoStep5 .

:howtoStep1 a schema:HowToStep ;
    schema:description "Choose the graph with USE GRAPH, declare PREFIX lines for the vocabularies, MATCH the relationship, and RETURN a node with a bif: analytics call or a path. The anatomy section above labels each part."@en ;
    schema:name "Write the query"@en ;
    schema:position 1 .

:howtoStep2 a schema:HowToStep ;
    schema:description """Use "Run and show results" on any showcase query to execute it on the VEC demo endpoint and read the result table."""@en ;
    schema:name "Run it with results"@en ;
    schema:position 2 .

:howtoStep3 a schema:HowToStep ;
    schema:description """Use "Open in the query form" to load the same query into the endpoint form, change it, and run it yourself."""@en ;
    schema:name "Edit it in the query form"@en ;
    schema:position 3 .

:howtoStep4 a schema:HowToStep ;
    schema:description "Treat MATCH, SHORTEST PATH and the * and + quantifiers as ISO GQL, and the bif: calls as Virtuoso extensions that other implementations may not offer."@en ;
    schema:name "Check what is standard"@en ;
    schema:position 4 .

:howtoStep5 a schema:HowToStep ;
    schema:description "A score describes the selected graph and the relationships recorded in it, not importance in general."@en ;
    schema:name "Read the result in context"@en ;
    schema:position 5 .

:quoteStandard a schema:Quotation ;
    schema:citation <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:isPartOf :meshup ;
    schema:text "The bif: analytics functions in these examples are Virtuoso extensions; they are not functions specified by ISO GQL."@en .

:quotePortability a schema:Quotation ;
    schema:citation <https://community.openlinksw.com/t/virtuoso-native-graph-analytics-with-gql-enhanced-by-standardized-namespaces-and-identifiers/6694> ;
    schema:isPartOf :meshup ;
    schema:text "implementations can provide different analytics functions and interfaces."@en .

:dominikTomaszuk a schema:Person ;
    schema:description "Author of GQL Essentials. The History chapter carries his name in its page metadata."@en ;
    schema:name "Dominik Tomaszuk"@en .

:gqlEssentials a schema:Book ;
    schema:author :dominikTomaszuk ;
    schema:description "A book on ISO GQL by Dominik Tomaszuk. Chapters 1 (History) and 3 (Positioning) are used in this collection."@en ;
    schema:hasPart <https://gql.fyi/01-history.html>, <https://gql.fyi/03-positioning.html> ;
    schema:name "GQL Essentials"@en .

<https://gql.fyi/01-history.html> schema:isPartOf :gqlEssentials .
<https://gql.fyi/03-positioning.html> schema:isPartOf :gqlEssentials .

<http://dbpedia.org/resource/DBpedia> a schema:Dataset ;
    schema:description "The knowledge graph extracted from Wikipedia. Two of the basic examples query it."@en ;
    schema:name "DBpedia"@en .

<http://dbpedia.org/resource/Spike_Lee> a schema:Person ;
    schema:description "The film director the DBpedia examples ask about."@en ;
    schema:name "Spike Lee"@en .

<http://dbpedia.org/resource/Semantic_Web> a schema:Thing ;
    schema:name "Semantic Web"@en .

<http://dbpedia.org/resource/FOAF> a schema:Thing ;
    schema:description "The friend-of-a-friend vocabulary whose foaf:knows relationship the showcase graph uses."@en ;
    schema:name "FOAF"@en .

<http://dbpedia.org/resource/Relational_database> a schema:Thing ;
    schema:name "Relational database"@en .

<http://dbpedia.org/resource/Charles_Bachman> a schema:Person ;
    schema:description "Designed the Integrated Data Store, which laid the groundwork for the network model."@en ;
    schema:name "Charles Bachman"@en .

<http://dbpedia.org/resource/John_F._Sowa> a schema:Person ;
    schema:description "Proposed Conceptual Graphs in the mid-1970s and published the book in 1984."@en ;
    schema:name "John F. Sowa"@en .

<http://dbpedia.org/resource/Tim_Berners-Lee> a schema:Person ;
    schema:description "Described the Semantic Web in the mid-1990s."@en ;
    schema:name "Tim Berners-Lee"@en .

<https://www.linkedin.com/in/kidehen#this> a schema:Person ;
    schema:name "Kingsley Uyi Idehen"@en .

<http://dbpedia.org/resource/OpenLink_Software> a schema:Organization ;
    schema:description "Publisher of the GQL showcase and developer of Virtuoso."@en ;
    schema:name "OpenLink Software"@en .

<http://dbpedia.org/resource/IBM> a schema:Organization ;
    schema:description "Introduced IMS in 1968."@en ;
    schema:name "IBM"@en .

<http://dbpedia.org/resource/American_National_Standards_Institute> a schema:Organization ;
    schema:description "Formed the X3H2 committee in 1978."@en ;
    schema:name "ANSI"@en .

<http://dbpedia.org/resource/International_Organization_for_Standardization> a schema:Organization ;
    schema:description "Published SQL/PGQ in 2023 and GQL in 2024."@en ;
    schema:name "ISO"@en .

<http://dbpedia.org/resource/World_Wide_Web_Consortium> a schema:Organization ;
    schema:description "Established to formalize the Semantic Web vision."@en ;
    schema:name "W3C"@en .

<http://dbpedia.org/resource/Neo4j> a schema:Organization, schema:SoftwareApplication ;
    schema:description "Property graph database launched in 2007, home of Cypher."@en ;
    schema:name "Neo4j"@en .

<http://dbpedia.org/resource/CODASYL> a schema:Organization ;
    schema:name "CODASYL"@en .

<http://dbpedia.org/resource/Virtuoso_Universal_Server> a schema:SoftwareApplication ;
    schema:description "OpenLink's database and application server. The showcase runs GQL and bif: analytics on it."@en ;
    schema:name "Virtuoso Universal Server"@en ;
    schema:provider <http://dbpedia.org/resource/OpenLink_Software> .

<https://vec.demo.openlinksw.com/sparql> a schema:WebAPI ;
    schema:documentation <https://www.openlinksw.com/virtuoso/docs/gql/#gql-overview>, <https://www.openlinksw.com/virtuoso/docs/graph-analytics/> ;
    schema:name "VEC demo SPARQL and GQL endpoint"@en ;
    schema:provider <http://dbpedia.org/resource/OpenLink_Software> .

<https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> a schema:SoftwareApplication, prov:SoftwareAgent ;
    schema:description "Generates RDF knowledge graphs from documents and URLs."@en ;
    schema:name "kg-generator"@en ;
    schema:url <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator> .

<https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/rdf-infographic-skill#this> a schema:SoftwareApplication, prov:SoftwareAgent ;
    schema:description "Generates interactive HTML infographics from RDF."@en ;
    schema:name "rdf-infographic-skill"@en ;
    schema:url <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/rdf-infographic-skill> .

:ontology a owl:Ontology ;
    rdfs:label "GQL history lineage vocabulary"@en ;
    rdfs:comment "Two terms for the ordered lineage of database models and query languages in the history chapter."@en ;
    schema:description "A lineage milestone class and a predicate that links each milestone to the next."@en ;
    schema:identifier "https://gql.fyi/01-history.html" ;
    schema:isPartOf :meshup ;
    schema:name "GQL history lineage vocabulary"@en .

:LineageMilestone a owl:Class ;
    rdfs:comment "A dated step in the development of database models and query languages, such as the CODASYL network model or GQL."@en ;
    rdfs:isDefinedBy :ontology ;
    rdfs:label "Lineage milestone"@en ;
    rdfs:subClassOf schema:Event .

:ledTo a owl:ObjectProperty ;
    rdfs:comment "Links a lineage milestone to the milestone that followed it in the chapter's account."@en ;
    rdfs:domain :LineageMilestone ;
    rdfs:isDefinedBy :ontology ;
    rdfs:label "led to"@en ;
    rdfs:range :LineageMilestone ;
    rdfs:seeAlso <http://www.w3.org/ns/prov#wasInfluencedBy> .
