# baseURI: http://extensionsamples.topbraid.org/scriptbasedviewers/scriptbasedviewerexample

@prefix dash: <http://datashapes.org/dash#> .
@prefix ex: <http://extensionsamples.topbraid.org/scriptbasedviewers/scriptbasedviewerexample#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://extensionsamples.topbraid.org/scriptbasedviewers/scriptbasedviewerexample>
  a owl:Ontology ;
  <http://topbraid.org/swa#defaultNamespace> "http://extensionsamples.topbraid.org/scriptbasedviewers/scriptbasedviewerexample#" ;
  rdfs:comment "To see this in action, navigate to the Sample Instance of the class Sample Class." ;
  rdfs:label "Script-Based Viewer Example" ;
  owl:imports <http://datashapes.org/dash> ;
.
ex:MyLinkViewer
  a dash:ScriptBasedViewer ;
  dash:js """let html = `
	<span style="color: red">
		<span>Click Here: </span>
		<a href="${value.uri}">${value}</a>
	</span>`;
graph.html(html);""" ;
  rdfs:comment "A sample script-based viewer for URI resources that renders a hyperlink but also some extra text." ;
  rdfs:label "My Link Viewer" ;
.
ex:OtherInstance
  a ex:SampleClass ;
  rdfs:label "Other Instance" ;
.
ex:SampleClass
  a owl:Class ;
  a sh:NodeShape ;
  rdfs:label "Sample Class" ;
  rdfs:subClassOf owl:Thing ;
  sh:property ex:SampleClass-label ;
  sh:property ex:SampleClass-link ;
.
ex:SampleClass-label
  a sh:PropertyShape ;
  sh:path rdfs:label ;
  dash:singleLine true ;
  <http://datashapes.org/graphql#name> "labels" ;
  sh:name "labels" ;
  sh:or dash:StringOrLangString ;
.
ex:SampleClass-link
  a sh:PropertyShape ;
  sh:path ex:link ;
  dash:viewer ex:MyLinkViewer ;
  sh:class ex:SampleClass ;
  sh:name "link" ;
.
ex:SampleInstance
  a ex:SampleClass ;
  ex:link ex:OtherInstance ;
  rdfs:label "Sample Instance" ;
.
