For using the SparqlVisualization markup a sparql query with exactly three variables has to be defined. Each triple variable binding of the result set of the query defines one edge of the drawn visualization graph. The first variable value will create the source node, while the third variable value creates the target node. The source and target node will be connected by an edge having the value of variable two. This can be represented by the following pattern:
%%SparqlVisualization SELECT ?source ?edge ?target WHERE { <selection-pattern>} %
%%SparqlVisualization SELECT ?x ?edge ?z WHERE { ?x ?y ?z . ?x rdfs:subClassOf si:SimpsonsConcept. ?z rdfs:subClassOf si:SimpsonsConcept. ?x rdfs:subClassOf ?z. FILTER NOT EXISTS { ?middleObject rdfs:subClassOf si:SimpsonsConcept. ?x rdfs:subClassOf ?middleObject. ?middleObject rdfs:subClassOf ?z. FILTER (?middleObject != ?x ). FILTER (?middleObject != ?z ). } FILTER (?x != owl:Nothing). FILTER (?x != ?z). BIND (" " AS ?edge). } @rankDir: BT @linkMode: browse @size: 700 %
One can use the available features of SPARQL to create customized labels for the nodes and edges to generate a more nicely readable visualization.
SELECT ?xLabel ?yLabel ?zLabel WHERE { ?x ?y ?z . ?x rdf:type si:Human. ?z rdf:type si:Human. ?x rdfs:label ?xLabel. ?z rdfs:label ?zLabel. FILTER (?y != si:relatedWith). FILTER (?y != si:parent). FILTER (?y != si:child). FILTER (?y != si:grandparent). FILTER (?z != ?x). BIND (SUBSTR(STR(?y), 33) AS ?yLabel) } @rankDir: BT @size: 600
Note: You can use the option "display svg" from the tool menu on the top right of the visualization to open the diagram in a distinct window. Then you can use browser functions to zoom an navigate the graph.
Colors: The annotation @colors allows to specify a color schema by defining a property. With this property colors can be assigned to Classes and Properties. The color schema for this example can be found on Visualization Util.
%%SparqlVisualization SELECT ?x ?y ?z WHERE { ?x ?y ?z . FILTER (STRSTARTS(STR(?x), "http://www.example.org/ontology#")). FILTER (STRSTARTS(STR(?z), "http://www.example.org/ontology#")). FILTER NOT EXISTS {?x rdf:type rdfs:Class}. FILTER NOT EXISTS {?z rdf:type rdfs:Class}. FILTER NOT EXISTS {?x rdf:type rdf:Property}. FILTER NOT EXISTS {?z rdf:type rdf:Property}. FILTER (?y != si:relatedWith). FILTER (?y != si:parent). FILTER (?y != si:child). FILTER (?y != si:grandparent). FILTER (?z != ?x). } @rankDir: BT @size: 1200 %
%%SparqlVisualization SELECT ?x ?y ?z WHERE { ?x ?y ?z . ?x rdf:type rdf:Property. FILTER (?z != <http://www.w3.org/2000/01/rdf-schema#Resource>). FILTER (STRSTARTS(STR(?x), "http://www.example.org/ontology#")). FILTER (STRSTARTS(STR(?z), "http://www.example.org/ontology#")). FILTER (?z != ?x). } @rankDir: BT @size: 1200 %