diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..40b878d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/README.md b/README.md index 8f55a6b..a7ac9d8 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,50 @@ # highlightjs-turtle -Semantic Web languages -[highlight.js](https://github.com/highlightjs/highlight.js) syntax definitions for these semantic web languages: -- SPARQL 1.1: [Query](https://www.w3.org/TR/sparql11-query/) and [Update](https://www.w3.org/TR/sparql11-update/) languages. See [BNF grammar](https://www.w3.org/TR/sparql11-query/#sparqlGrammar) and [syntax diagrams](http://rawgit2.com/VladimirAlexiev/grammar-diagrams/master/sparql11-grammar.xhtml) + + + +[`highlight.js`](https://github.com/highlightjs/highlight.js) syntax definitions for these semantic web languages: - [Turtle 1.1](https://www.w3.org/TR/turtle/) -- [SHACL Compact](https://w3c.github.io/shacl/shacl-compact-syntax/]. See [BNF grammar](https://github.com/VladimirAlexiev/grammar-diagrams/raw/master/shaclc-grammar.ebnf) and [syntax diagrams][http://rawgit2.com/VladimirAlexiev/grammar-diagrams/master/shaclc-grammar.xhtml]. - Still in TODO -- [GraphDB Rules](http://graphdb.ontotext.com/documentation/standard/reasoning.html) - -Links: -- http://highlightjs.org for more info on `highlight.js` and a live demo. -- https://github.com/highlightjs/highlightjs-shexc for another semantic language, SHEX (Shape Expressions) -- [highlight-to-reveal](https://github.com/VladimirAlexiev/highlight-to-reveal) for info about using this in [reveal.js](https://github.com/hakimel/reveal.js), a tool for web-based presentations. - NOTE: this is outdated! +- SPARQL 1.1: [Query](https://www.w3.org/TR/sparql11-query/) and [Update](https://www.w3.org/TR/sparql11-update/) languages _(see [BNF grammar](https://www.w3.org/TR/sparql11-query/#sparqlGrammar) and [syntax diagrams](http://rawgit2.com/VladimirAlexiev/grammar-diagrams/master/sparql11-grammar.xhtml))_ +- [GraphDB Rules](http://graphdb.ontotext.com/documentation/standard/reasoning.html) (PIE) +- [SHACL Compact](https://w3c.github.io/shacl/shacl-compact-syntax/) _(see [BNF grammar](https://github.com/VladimirAlexiev/grammar-diagrams/raw/master/shaclc-grammar.ebnf) and [syntax diagrams](http://rawgit2.com/VladimirAlexiev/grammar-diagrams/master/shaclc-grammar.xhtml))_ _(still in TODO)_ + +## Usage + +Simply include the Highlight.js library in your webpage or Node app, then load this module. + +### Static website or simple usage + +Simply load the module after loading Highlight.js. You'll use the minified version found in the `dist` directory. This module is just a CDN build of the language, so it will register itself as the Javascript is loaded. + +```html + + + + + +``` + +### With Node or another build system + +If you're using Node / Webpack / Rollup / Browserify, etc, simply require the language module, then register it with Highlight.js. + +```javascript +var hljs = require('highlight.js'); +const { pieGrammar, sparqlGrammar, turtleGrammar } = require("highlightjs-turtle"); + +hljs.registerLanguage('pie', pieGrammar); +hljs.registerLanguage('sparql', sparqlGrammar); +hljs.registerLanguage('turtle', turtleGrammar); +``` + + +## Links +- http://highlightjs.org for more info on `highlight.js` and a live demo +- [`highlightjs-shexc`](https://github.com/highlightjs/highlightjs-shexc) for another semantic language, SHEX (Shape Expressions) +- [`highlight-to-reveal`](https://github.com/VladimirAlexiev/highlight-to-reveal) for info about using this in [`reveal.js`](https://github.com/hakimel/reveal.js), a tool for web-based presentations _(NOTE: this is outdated!)_ ## Contributors - Mark Ellis, [@ellismarkf](https://github.com/ellismarkf), Stardog Union diff --git a/dist/pie.es.min.js b/dist/pie.es.min.js new file mode 100644 index 0000000..27aeb6c --- /dev/null +++ b/dist/pie.es.min.js @@ -0,0 +1,13 @@ +/*! `pie` grammar compiled for Highlight.js 11.6.0 */ +var hljsGrammar=(()=>{"use strict";return e=>{var s={ +begin:/\b(Id|Consistency)\s*:/,end:"\n",keywords:"Id|1 Consistency|5", +contains:[{begin:e.IDENT_RE,className:"title"}]},n={begin:e.IDENT_RE, +className:"variable",relevance:0};return{aliases:["pie","rules"],contains:[{ +begin:/^(Prefices|Axioms|Rules)/,end:/\s*\{/, +keywords:"Prefices|5 Axioms|5 Rules|5"},{begin:/^\s*\w+\s*:\s*\w+:\/\/\S+\s*$/, +className:"symbol"},e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:/\^\^[\w:]+/, +className:"type",relevance:1},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,{ +begin:/\[(Constraint|Context|Cut)/,keywords:{ +function:"Constraint|5 Context|0 Cut|5"}},{begin:/,end:/>/,contains:[{ +begin:/[\w:]+/}],className:"symbol",relevance:1},n,{begin:/---+/, +className:"keyword",relevance:0}]}}})();export default hljsGrammar; \ No newline at end of file diff --git a/dist/pie.min.js b/dist/pie.min.js new file mode 100644 index 0000000..3881176 --- /dev/null +++ b/dist/pie.min.js @@ -0,0 +1,13 @@ +/*! `pie` grammar compiled for Highlight.js 11.6.0 */ +(()=>{var e=(()=>{"use strict";return e=>{var s={begin:/\b(Id|Consistency)\s*:/, +end:"\n",keywords:"Id|1 Consistency|5",contains:[{begin:e.IDENT_RE, +className:"title"}]},n={begin:e.IDENT_RE,className:"variable",relevance:0} +;return{aliases:["pie","rules"],contains:[{begin:/^(Prefices|Axioms|Rules)/, +end:/\s*\{/,keywords:"Prefices|5 Axioms|5 Rules|5"},{ +begin:/^\s*\w+\s*:\s*\w+:\/\/\S+\s*$/,className:"symbol" +},e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:/\^\^[\w:]+/,className:"type", +relevance:1},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,{ +begin:/\[(Constraint|Context|Cut)/,keywords:{ +function:"Constraint|5 Context|0 Cut|5"}},{begin:/,end:/>/,contains:[{ +begin:/[\w:]+/}],className:"symbol",relevance:1},n,{begin:/---+/, +className:"keyword",relevance:0}]}}})();hljs.registerLanguage("pie",e)})(); \ No newline at end of file diff --git a/dist/sparql.es.min.js b/dist/sparql.es.min.js new file mode 100644 index 0000000..2948f7b --- /dev/null +++ b/dist/sparql.es.min.js @@ -0,0 +1,31 @@ +/*! `sparql` grammar compiled for Highlight.js 11.6.0 */ +var hljsGrammar=(()=>{"use strict";return e=>{var a=(e=>{var a={ +keyword:"base|10 prefix|10 @base|10 @prefix|10",literal:"true|0 false|0", +built_in:"a|0"},s={className:"literal",relevance:1,begin:/,end:/>/, +illegal:/[^\x00-\x20<>"{}|^`]/},r={ +begin:"([A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF]([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.]*[-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040])?)?:(([A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_:0-9]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.:]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])*([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040:]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])?)?", +relevance:0,className:"symbol"},n={ +begin:"_:[A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9]([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.]*[-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040])?", +relevance:10,className:"template-variable"},i={ +begin:/@[a-zA-Z]+(-[a-zA-Z0-9]+)*/,className:"type",relevance:5},t={ +begin:"\\^\\^([A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF]([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.]*[-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040])?)?:([A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_:0-9]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.:]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])*([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040:]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])?", +className:"type",relevance:10},l={begin:/'''/,end:/'''/,className:"string", +relevance:0},c={begin:/"""/,end:/"""/,className:"string",relevance:0 +},_=JSON.parse(JSON.stringify(e.APOS_STRING_MODE));_.relevance=0 +;var A=JSON.parse(JSON.stringify(e.QUOTE_STRING_MODE));A.relevance=0 +;var o=JSON.parse(JSON.stringify(e.C_NUMBER_MODE));return o.relevance=0,{ +case_insensitive:!0,keywords:a,aliases:["turtle","ttl","n3","ntriples"], +contains:[i,t,s,n,r,l,c,_,A,o,e.HASH_COMMENT_MODE],exports:{LANGTAG:i, +DATATYPE:t,IRI_LITERAL:s,BLANK_NODE:n,PNAME:r,TRIPLE_APOS_STRING:l, +TRIPLE_QUOTE_STRING:c,APOS_STRING_LITERAL:_,QUOTE_STRING_LITERAL:A,NUMBER:o, +KEYWORDS:a}}})(e).exports,s={className:"variable",begin:"[?$]"+e.IDENT_RE, +relevance:0};return{case_insensitive:!0,keywords:{ +keyword:"base|10 prefix|10 @base|10 @prefix|10 add all as|0 ask bind by|0 clear construct|10 copymove create data default define delete describe distinct drop exists filter from|0 graph|10 group having in|0 insert limit load minus named|10 not offset optional order reduced select|0 service silent to union using values where with|0", +function:"abs asc avg bound ceil coalesce concat containsstrbefore count dayhours desc encode_for_uri floor group_concat if|0 iri isblank isiri isliteral isnumeric isuri langdatatype langmatches lcase max md5 min|0 minutes month now rand regex replace round sameterm sample seconds separator sha1 sha256 sha384 sha512 str strafter strdt strends strlang strlen strstarts struuid substr sum then timezone tz ucase uribnode uuid year", +literal:"true|0 false|0",built_in:"a|0"},aliases:["sparql","rql","rq","ru"], +contains:[a.LANGTAG,a.DATATYPE,a.IRI_LITERAL,a.BLANK_NODE,a.PNAME,s,{ +begin:/"""\s*\{/,end:/"""/,subLanguage:"json",excludeBegin:!0,excludeEnd:!0, +relevance:0},{begin:/'''\s*\{/,end:/'''/,subLanguage:"json",excludeBegin:!0, +excludeEnd:!0,relevance:0 +},a.TRIPLE_QUOTE_STRING,a.TRIPLE_APOS_STRING,a.QUOTE_STRING_LITERAL,a.APOS_STRING_LITERAL,a.NUMBER,e.HASH_COMMENT_MODE] +}}})();export default hljsGrammar; \ No newline at end of file diff --git a/dist/sparql.min.js b/dist/sparql.min.js new file mode 100644 index 0000000..d201e1f --- /dev/null +++ b/dist/sparql.min.js @@ -0,0 +1,31 @@ +/*! `sparql` grammar compiled for Highlight.js 11.6.0 */ +(()=>{var e=(()=>{"use strict";return e=>{var a=(e=>{var a={ +keyword:"base|10 prefix|10 @base|10 @prefix|10",literal:"true|0 false|0", +built_in:"a|0"},s={className:"literal",relevance:1,begin:/,end:/>/, +illegal:/[^\x00-\x20<>"{}|^`]/},r={ +begin:"([A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF]([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.]*[-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040])?)?:(([A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_:0-9]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.:]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])*([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040:]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])?)?", +relevance:0,className:"symbol"},n={ +begin:"_:[A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9]([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.]*[-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040])?", +relevance:10,className:"template-variable"},i={ +begin:/@[a-zA-Z]+(-[a-zA-Z0-9]+)*/,className:"type",relevance:5},t={ +begin:"\\^\\^([A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF]([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.]*[-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040])?)?:([A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_:0-9]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.:]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])*([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040:]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])?", +className:"type",relevance:10},l={begin:/'''/,end:/'''/,className:"string", +relevance:0},c={begin:/"""/,end:/"""/,className:"string",relevance:0 +},_=JSON.parse(JSON.stringify(e.APOS_STRING_MODE));_.relevance=0 +;var A=JSON.parse(JSON.stringify(e.QUOTE_STRING_MODE));A.relevance=0 +;var o=JSON.parse(JSON.stringify(e.C_NUMBER_MODE));return o.relevance=0,{ +case_insensitive:!0,keywords:a,aliases:["turtle","ttl","n3","ntriples"], +contains:[i,t,s,n,r,l,c,_,A,o,e.HASH_COMMENT_MODE],exports:{LANGTAG:i, +DATATYPE:t,IRI_LITERAL:s,BLANK_NODE:n,PNAME:r,TRIPLE_APOS_STRING:l, +TRIPLE_QUOTE_STRING:c,APOS_STRING_LITERAL:_,QUOTE_STRING_LITERAL:A,NUMBER:o, +KEYWORDS:a}}})(e).exports,s={className:"variable",begin:"[?$]"+e.IDENT_RE, +relevance:0};return{case_insensitive:!0,keywords:{ +keyword:"base|10 prefix|10 @base|10 @prefix|10 add all as|0 ask bind by|0 clear construct|10 copymove create data default define delete describe distinct drop exists filter from|0 graph|10 group having in|0 insert limit load minus named|10 not offset optional order reduced select|0 service silent to union using values where with|0", +function:"abs asc avg bound ceil coalesce concat containsstrbefore count dayhours desc encode_for_uri floor group_concat if|0 iri isblank isiri isliteral isnumeric isuri langdatatype langmatches lcase max md5 min|0 minutes month now rand regex replace round sameterm sample seconds separator sha1 sha256 sha384 sha512 str strafter strdt strends strlang strlen strstarts struuid substr sum then timezone tz ucase uribnode uuid year", +literal:"true|0 false|0",built_in:"a|0"},aliases:["sparql","rql","rq","ru"], +contains:[a.LANGTAG,a.DATATYPE,a.IRI_LITERAL,a.BLANK_NODE,a.PNAME,s,{ +begin:/"""\s*\{/,end:/"""/,subLanguage:"json",excludeBegin:!0,excludeEnd:!0, +relevance:0},{begin:/'''\s*\{/,end:/'''/,subLanguage:"json",excludeBegin:!0, +excludeEnd:!0,relevance:0 +},a.TRIPLE_QUOTE_STRING,a.TRIPLE_APOS_STRING,a.QUOTE_STRING_LITERAL,a.APOS_STRING_LITERAL,a.NUMBER,e.HASH_COMMENT_MODE] +}}})();hljs.registerLanguage("sparql",e)})(); \ No newline at end of file diff --git a/dist/turtle.es.min.js b/dist/turtle.es.min.js new file mode 100644 index 0000000..3b243af --- /dev/null +++ b/dist/turtle.es.min.js @@ -0,0 +1,21 @@ +/*! `turtle` grammar compiled for Highlight.js 11.6.0 */ +var hljsGrammar=(()=>{"use strict";return a=>{var e={ +keyword:"base|10 prefix|10 @base|10 @prefix|10",literal:"true|0 false|0", +built_in:"a|0"},r={className:"literal",relevance:1,begin:/,end:/>/, +illegal:/[^\x00-\x20<>"{}|^`]/},A={ +begin:"([A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF]([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.]*[-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040])?)?:(([A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_:0-9]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.:]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])*([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040:]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])?)?", +relevance:0,className:"symbol"},_={ +begin:"_:[A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9]([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.]*[-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040])?", +relevance:10,className:"template-variable"},s={ +begin:/@[a-zA-Z]+(-[a-zA-Z0-9]+)*/,className:"type",relevance:5},l={ +begin:"\\^\\^([A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF]([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.]*[-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040])?)?:([A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_:0-9]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.:]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])*([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040:]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])?", +className:"type",relevance:10},n={begin:/'''/,end:/'''/,className:"string", +relevance:0},i={begin:/"""/,end:/"""/,className:"string",relevance:0 +},t=JSON.parse(JSON.stringify(a.APOS_STRING_MODE));t.relevance=0 +;var F=JSON.parse(JSON.stringify(a.QUOTE_STRING_MODE));F.relevance=0 +;var N=JSON.parse(JSON.stringify(a.C_NUMBER_MODE));return N.relevance=0,{ +case_insensitive:!0,keywords:e,aliases:["turtle","ttl","n3","ntriples"], +contains:[s,l,r,_,A,n,i,t,F,N,a.HASH_COMMENT_MODE],exports:{LANGTAG:s, +DATATYPE:l,IRI_LITERAL:r,BLANK_NODE:_,PNAME:A,TRIPLE_APOS_STRING:n, +TRIPLE_QUOTE_STRING:i,APOS_STRING_LITERAL:t,QUOTE_STRING_LITERAL:F,NUMBER:N, +KEYWORDS:e}}}})();export default hljsGrammar; \ No newline at end of file diff --git a/dist/turtle.min.js b/dist/turtle.min.js new file mode 100644 index 0000000..28e4728 --- /dev/null +++ b/dist/turtle.min.js @@ -0,0 +1,21 @@ +/*! `turtle` grammar compiled for Highlight.js 11.6.0 */ +(()=>{var e=(()=>{"use strict";return e=>{var a={ +keyword:"base|10 prefix|10 @base|10 @prefix|10",literal:"true|0 false|0", +built_in:"a|0"},A={className:"literal",relevance:1,begin:/,end:/>/, +illegal:/[^\x00-\x20<>"{}|^`]/},r={ +begin:"([A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF]([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.]*[-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040])?)?:(([A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_:0-9]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.:]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])*([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040:]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])?)?", +relevance:0,className:"symbol"},_={ +begin:"_:[A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9]([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.]*[-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040])?", +relevance:10,className:"template-variable"},s={ +begin:/@[a-zA-Z]+(-[a-zA-Z0-9]+)*/,className:"type",relevance:5},l={ +begin:"\\^\\^([A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF]([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.]*[-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040])?)?:([A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_:0-9]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040.:]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])*([-A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\u10000-\uefffF_0-9\xb7\u0300-\u036f\u203f-\u2040:]|%[0-9A-Fa-f][0-9A-Fa-f]|\\\\[_~.!$&'()*+,;=/?#@%-])?", +className:"type",relevance:10},n={begin:/'''/,end:/'''/,className:"string", +relevance:0},i={begin:/"""/,end:/"""/,className:"string",relevance:0 +},t=JSON.parse(JSON.stringify(e.APOS_STRING_MODE));t.relevance=0 +;var F=JSON.parse(JSON.stringify(e.QUOTE_STRING_MODE));F.relevance=0 +;var N=JSON.parse(JSON.stringify(e.C_NUMBER_MODE));return N.relevance=0,{ +case_insensitive:!0,keywords:a,aliases:["turtle","ttl","n3","ntriples"], +contains:[s,l,A,_,r,n,i,t,F,N,e.HASH_COMMENT_MODE],exports:{LANGTAG:s, +DATATYPE:l,IRI_LITERAL:A,BLANK_NODE:_,PNAME:r,TRIPLE_APOS_STRING:n, +TRIPLE_QUOTE_STRING:i,APOS_STRING_LITERAL:t,QUOTE_STRING_LITERAL:F,NUMBER:N, +KEYWORDS:a}}}})();hljs.registerLanguage("turtle",e)})(); \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..0a8c6dd --- /dev/null +++ b/index.html @@ -0,0 +1,196 @@ + + +
+
+
+Prefices
+{ /* useful */
+ rdf : http://www.w3.org/1999/02/22-rdf-syntax-ns#
+}
+
+Axioms
+{ // builtin facts
+ <rdf:first> <rdf:type> <rdf:Property>
+}
+
+Rules {
+ Id: owl_FunctProp
+ p <rdf:type> <owl:FunctionalProperty>
+ x p y [Constraint y != z, p != <rdf:type>]
+ x p z [Constraint z != y] [Cut]
+ -------------------------------
+ y <owl:sameAs> z
+
+ Id: ruleWithLiterals
+ x <ex:priority> "100"^^xsd:decimal
+ ----------------------------------
+ x <ex:important> "true"^^xsd:boolean
+
+ Consistency: sameAs_with_differentFrom_is_forbidden
+ x owl:sameAs y
+ x owl:differentFrom y
+ ---------------------
+
+ Consistency: checkDomain
+ x p y
+ p <rdfs:domain> c
+ -----------------
+ x <rdf:type> c
+}
+
+
+
+
+
+# SPARQL comment
+PREFIX data: <http://example.com/foaf/>
+PREFIX foaf: <http://xmlns.com/foaf/0.1/>
+PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+
+SELECT ?mbox ?nick ?ppd
+FROM NAMED <http://example.org/foaf/aliceFoaf>
+FROM NAMED <http://example.org/foaf/bobFoaf>
+WHERE {
+ GRAPH data:aliceFoaf {
+ ?alice foaf:mbox <mailto:alice@work.example>;
+ foaf:knows ?whom .
+ ?whom foaf:mbox ?mbox ;
+ rdfs:seeAlso ?ppd .
+ ?ppd a foaf:PersonaProfileDocument .
+ }
+ GRAPH ?ppd {
+ ?w foaf:mbox ?mbox ;
+ foaf:nick ?nick
+ }
+}
+
+SELECT ?test
+FROM NAMED <http://something.com/rdf/thing>;
+
+SELECT ?P (COUNT(?O) AS ?C)
+WHERE { ?S ?P ?O }
+GROUP BY ?P
+HAVING (COUNT(?O) > 2 )
+
+prefix es: <http://www.ontotext.com/connectors/elasticsearch#>
+prefix inst: <http://www.ontotext.com/connectors/elasticsearch/instance#>
+insert data {
+ inst:entity-person es:createConnector """ {
+ "elasticsearchNode": "localhost:9300",
+ "types": ["http://www.ontotext.com/example#Document"],
+ "fields": [{
+ "fieldName": "person",
+ "propertyChain": ["http://factforge.net/ff2016-mapping/mentionsEntity", "http://www.w3.org/2000/01/rdf-schema#label"]
+ }],
+ "entityFilter": "bound(parent(?person) -> type) && parent(?person) -> type in (<http://dbpedia.org/ontology/Person>)"
+ } """
+}
+
+prefix inst: <http://www.ontotext.com/connectors/elasticsearch/instance#>
+select ?name ?key ?count {
+ ?search a inst:date-connector;
+ :query ''' {"aggs": {"weekly bucket": {"date_histogram" : {
+ "field" : "date",
+ "interval" : "week",
+ "format" : "yyyy-MM-dd"
+ }}}} '''
+}
+
+
+
+
+
+@base <http://example.org/> .
+@prefix : <http://example.org/>.
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix rel: <http://www.perceive.net/schemas/relationship/> .
+@prefix ff-map: <http://factforge.net/ff2016-mapping/>.
+
+<#green-goblin>
+ rel:enemyOf <#spiderman> ;
+ a foaf:Person ; # in the context of the Marvel universe
+ foaf:description """Long TRIPLE_QUOTE_STRING with ''' embedded
+ apostrophes '''""",
+ '''The librarian said, "Perhaps you would enjoy 'War and Peace'."'''.
+
+<#spiderman> rel:enemyOf <#green-goblin> ;
+ foaf:name "Spiderman"@en, "Человек-паук"@ru ;
+ foaf:age "23"^^xsd:integer, 23;
+ foaf:height 1.68, 0.168e1, "1.68"^^xsd:decimal, true, false;
+ foaf:mbox <mailto:alice@example.org>;
+ rdfs:label 'chat'@fr,
+
+_:blank1 fb:object.type fb:object.type.car. # trailing dot not part of symbol
+: rel:weird :bar, rel: ; rel:weird rel:.
+
+</doc#char=10,20> ff-map:mentionsEntity </entity>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..342ed7b
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,33 @@
+{
+ "name": "highlightjs-turtle",
+ "version": "1.0.0",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "highlightjs-turtle",
+ "version": "1.0.0",
+ "license": "MIT",
+ "devDependencies": {
+ "highlight.js": "^11.6.0"
+ }
+ },
+ "node_modules/highlight.js": {
+ "version": "11.6.0",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.6.0.tgz",
+ "integrity": "sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ }
+ },
+ "dependencies": {
+ "highlight.js": {
+ "version": "11.6.0",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.6.0.tgz",
+ "integrity": "sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw==",
+ "dev": true
+ }
+ }
+}
diff --git a/package.json b/package.json
index 6682c00..e8bf9f6 100644
--- a/package.json
+++ b/package.json
@@ -2,10 +2,7 @@
"name": "highlightjs-turtle",
"version": "1.0.0",
"description": "highlight.js syntax definition for semantic web languages: SPARQL, Turtle, GraphDB PIE, SHACLC",
- "main": "turtle.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
+ "main": "index.js",
"repository": {
"type": "git",
"url": "git+ssh://git@github.com/highlightjs/highlightjs-turtle.git"
@@ -25,5 +22,8 @@
"bugs": {
"url": "https://github.com/highlightjs/highlightjs-turtle/issues"
},
- "homepage": "https://github.com/highlightjs/highlightjs-turtle"
+ "homepage": "https://github.com/highlightjs/highlightjs-turtle",
+ "devDependencies": {
+ "highlight.js": "^11.6.0"
+ }
}
diff --git a/src/index.js b/src/index.js
new file mode 100644
index 0000000..626cdfc
--- /dev/null
+++ b/src/index.js
@@ -0,0 +1,9 @@
+const pieGrammar = require("./languages/pie.js");
+const sparqlGrammar = require("./languages/sparql.js");
+const turtleGrammar = require("./languages/turtle.js");
+
+module.exports = {
+ pieGrammar,
+ sparqlGrammar,
+ turtleGrammar
+};
diff --git a/src/pie.js b/src/languages/pie.js
similarity index 88%
rename from src/pie.js
rename to src/languages/pie.js
index 7b4faba..15a2ca9 100644
--- a/src/pie.js
+++ b/src/languages/pie.js
@@ -6,10 +6,10 @@ Description: GraphDB Rules language for semantic reasoning
Website: http://graphdb.ontotext.com/documentation/standard/reasoning.html
*/
-function(hljs) {
+module.exports = function(hljs) {
var KEYWORDS = {
begin: /^(Prefices|Axioms|Rules)/, end: /\s*\{/,
- keywords: 'Prefices|20 Axioms|10 Rules|10'
+ keywords: 'Prefices|5 Axioms|5 Rules|5'
};
var PREFIX = {
@@ -25,13 +25,13 @@ function(hljs) {
var RULE = {
begin: /\b(Id|Consistency)\s*:/, end: '\n',
- keywords: 'Id|1 Consistency|10',
+ keywords: 'Id|1 Consistency|5',
contains: [{begin: hljs.IDENT_RE, className: 'title'}]
};
var ANNOTATION = {
begin: /\[(Constraint|Context|Cut)/,
- keywords: {function: 'Constraint|10 Context|0 Cut|10'},
+ keywords: {function: 'Constraint|5 Context|0 Cut|5'},
};
var SYMBOL = {
diff --git a/src/sparql.js b/src/languages/sparql.js
similarity index 96%
rename from src/sparql.js
rename to src/languages/sparql.js
index 687d33c..a23b1d3 100644
--- a/src/sparql.js
+++ b/src/languages/sparql.js
@@ -7,8 +7,8 @@ Description: SPARQL Protocol and RDF Query Language for the semantic web
Website: https://www.w3.org/TR/sparql11-query/, http://www.w3.org/TR/sparql11-update/, https://www.w3.org/TR/sparql11-federated-query/, http://rawgit2.com/VladimirAlexiev/grammar-diagrams/master/sparql-grammar.xhtml
*/
-function(hljs) {
- var ttl = hljs.getLanguage('ttl').exports;
+module.exports = function(hljs) {
+ var ttl = require("./turtle")(hljs).exports;
var KEYWORDS = {
keyword: 'base|10 prefix|10 @base|10 @prefix|10 add all as|0 ask bind by|0 clear construct|10 copymove create data default define delete describe distinct drop exists filter from|0 graph|10 group having in|0 insert limit load minus named|10 not offset optional order reduced select|0 service silent to union using values where with|0',
function: 'abs asc avg bound ceil coalesce concat containsstrbefore count dayhours desc encode_for_uri floor group_concat if|0 iri isblank isiri isliteral isnumeric isuri langdatatype langmatches lcase max md5 min|0 minutes month now rand regex replace round sameterm sample seconds separator sha1 sha256 sha384 sha512 str strafter strdt strends strlang strlen strstarts struuid substr sum then timezone tz ucase uribnode uuid year',
diff --git a/src/turtle.js b/src/languages/turtle.js
similarity index 97%
rename from src/turtle.js
rename to src/languages/turtle.js
index 1021873..8e24176 100644
--- a/src/turtle.js
+++ b/src/languages/turtle.js
@@ -6,7 +6,7 @@ Description: Terse RDF Triple Language for the semantic web
Website: https://www.w3.org/TR/turtle/
*/
-function(hljs) {
+module.exports = function(hljs) {
var KEYWORDS = {
keyword: 'base|10 prefix|10 @base|10 @prefix|10',
literal: 'true|0 false|0',
@@ -48,7 +48,7 @@ function(hljs) {
};
var LANGTAG = {
- begin: /@[a-zA-Z]+([a-zA-Z0-9-]+)*/,
+ begin: /@[a-zA-Z]+(-[a-zA-Z0-9]+)*/,
className: 'type',
relevance: 5, // also catches objectivec keywords like: @protocol, @optional
};
diff --git a/src/shaclc-TODO.js b/src/shaclc-TODO.js
deleted file mode 100644
index a9175f2..0000000
--- a/src/shaclc-TODO.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
-Language: SHACLC
-Requires: turtle.js
-Author: Vladimir Alexiev