PREFIX st:   <http://ns.inria.fr/sparql-template/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX fun: <http://w3id.org/sparql-generate/fn/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX obo: <http://purl.obolibrary.org/obo/>
PREFIX swrl: <http://www.w3.org/2003/11/swrl#>
PREFIX prov: <http://www.w3.org/ns/prov#>

BASE <https://saref.etsi.org/documentation/>

TEMPLATE  <term/classDescriptionSubjectObject.rqg>( ?class , ?propertyName, ?property ) {
  before = "\n<dt>{ fun:property(<en.properties>, ?propertyName) }</dt><dd>" ;
  TEMPLATE <term/classDescription.rqg>( ?object , true ) . 
  ; separator = "<br/>"
  ; after = "</dd>" 
} 
DISTINCT WHERE {
  { ?class ?property  ?object }
  UNION
  { ?object ?property ?class }
  OPTIONAL { ?object owl:onProperty ?prop }}
ORDER BY ISBLANK(?object) ?prop ?object
