<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileTypes</key>
<array>
<string>sparql</string>
</array>
<key>keyEquivalent</key>
<string>^~N</string>
<key>name</key>
<string>SPARQL</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.language</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.tag</string>
</dict>
</dict>
<key>match</key>
<string>^\s*((?i:BASE))\s+(<[^ \>]*>)</string>
<key>name</key>
<string>meta.preprocessor.base.n3</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.language</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>meta.tag</string>
</dict>
</dict>
<key>match</key>
<string>^\s*((?i:PREFIX))\s+([a-zA-Z0-9]*:)+\s+(<[^ \>]*>)</string>
<key>name</key>
<string>meta.preprocessor.prefix.n3</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:WHERE|OPTIONAL|GRAPH|FILTER|ORDER BY|UNION)\b</string>
<key>name</key>
<string>keyword.other</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.language</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.n3</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>invalid</string>
</dict>
</dict>
<key>match</key>
<string>^\s*((?i:SELECT(?i:\s*DISTINCT)?))\s*((?:\s*?(?:\?|\$)[a-zA-z0-9_]+)+|(?:\*))\s+(\#.*$\n?)?(.*)?</string>
<key>name</key>
<string>keyword.select</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.tag</string>
</dict>
</dict>
<key>match</key>
<string>^\s*((?i:FROM)(?i:\s*NAMED)?)\s+((\b[a-zA-Z0-9\:\-_]+\b)|(<[^ \>]*>))</string>
<key>name</key>
<string>keyword</string>
</dict>
<dict>
<key>begin</key>
<string>{</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other</string>
</dict>
</dict>
<key>end</key>
<string>}</string>
<key>name</key>
<string>whereClause</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#filter</string>
</dict>
<dict>
<key>include</key>
<string>#optional</string>
</dict>
<dict>
<key>include</key>
<string>#graph</string>
</dict>
<dict>
<key>include</key>
<string>#statement</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.n3</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>invalid</string>
</dict>
</dict>
<key>match</key>
<string>^\s*((?i:LIMIT|OFFSET))\s+([0-9]+)?\s*(#.*)?(.*)$</string>
<key>name</key>
<string>solutionModifier</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.n3</string>
</dict>
</dict>
<key>match</key>
<string>(#).*$\n?</string>
<key>name</key>
<string>comment.line.number-sign.n3</string>
</dict>
</array>
<key>repository</key>
<dict>
<key>PredObjM</key>
<dict>
<key>begin</key>
<string>([a-zA-Z0-9\:\-_]+|<.*>|(\?[a-zA-z0-9_]+))(\s|(?=\())</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>meta.statement.predicate.n3</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.other</string>
</dict>
</dict>
<key>end</key>
<string>;|(?=\.|\}|\]|FILTER|OPTIONAL)</string>
<key>name</key>
<string>predicateObject</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#var</string>
</dict>
<dict>
<key>include</key>
<string>#tripleQuote</string>
</dict>
<dict>
<key>include</key>
<string>#objlistM</string>
</dict>
<dict>
<key>include</key>
<string>#typedliteral</string>
</dict>
<dict>
<key>include</key>
<string>#anonObj</string>
</dict>
<dict>
<key>include</key>
<string>#qname</string>
</dict>
<dict>
<key>include</key>
<string>#uri</string>
</dict>
</array>
</dict>
<key>anonObj</key>
<dict>
<key>begin</key>
<string>\[</string>
<key>end</key>
<string>\]</string>
<key>name</key>
<string>meta.statement.object.anon.n3</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#PredObjM</string>
</dict>
</array>
</dict>
<key>comment</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.n3</string>
</dict>
</dict>
<key>match</key>
<string>(#).*$\n?</string>
<key>name</key>
<string>comment.line.number-sign.n3</string>
</dict>
<key>filter</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other</string>
</dict>
</dict>
<key>match</key>
<string>((?i:FILTER))\s*(regex)?\(.*\)</string>
<key>name</key>
<string>constraint</string>
</dict>
<key>graph</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.language</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>meta.statement.subject.n3</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.n3</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>invalid</string>
</dict>
</dict>
<key>match</key>
<string>^\s*((?i:GRAPH))\s*(?:((?:\?|\$)[a-zA-z0-9_]+)|([a-zA-Z:_\-]*))\s*(\#.*$\n?)?([^\{]*)?</string>
<key>name</key>
<string>keyword.graph</string>
</dict>
<key>objlistM</key>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>\)</string>
<key>name</key>
<string>meta.statement.object.list.n3</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#objlistM</string>
</dict>
<dict>
<key>include</key>
<string>#tripleQuote</string>
</dict>
<dict>
<key>include</key>
<string>#typedliteral</string>
</dict>
<dict>
<key>include</key>
<string>#anonObj</string>
</dict>
<dict>
<key>include</key>
<string>#qname</string>
</dict>
<dict>
<key>include</key>
<string>#uri</string>
</dict>
<dict>
<key>include</key>
<string>#var</string>
</dict>
</array>
</dict>
<key>optional</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other</string>
</dict>
</dict>
<key>match</key>
<string>((?i:OPTIONAL))\s*(?=\{?)</string>
<key>name</key>
<string>optional</string>
</dict>
<key>qname</key>
<dict>
<key>match</key>
<string>(\b[a-zA-Z0-9\:\-_]+\b)\s*</string>
<key>name</key>
<string>meta.statement.object.n3</string>
</dict>
<key>statement</key>
<dict>
<key>begin</key>
<string>([a-zA-Z0-9\:\-_]+|\[\]|<[^ \>]*>|(\?[a-zA-z0-9_]+))\s*</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>meta.statement.subject.n3</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.other</string>
</dict>
</dict>
<key>end</key>
<string>\.|(?=\}|FILTER|OPTIONAL)</string>
<key>name</key>
<string>meta.statement.n3</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#PredObjM</string>
</dict>
</array>
</dict>
<key>tripleQuote</key>
<dict>
<key>begin</key>
<string>"""</string>
<key>end</key>
<string>"""(\^\^([a-zA-z\-\:_]+|<.*>)|@[a-z]+)?\s*([a-zA-Z0-9]*)?</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant</string>
</dict>
<key>2</key>
<dict/>
<key>3</key>
<dict>
<key>name</key>
<string>invalid</string>
</dict>
</dict>
<key>name</key>
<string>meta.statement.object.literal.n3</string>
</dict>
<key>typedliteral</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>meta.statement.object.literal.n3</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant</string>
</dict>
<key>3</key>
<dict/>
<key>4</key>
<dict>
<key>name</key>
<string>invalid</string>
</dict>
</dict>
<key>match</key>
<string>("[^"]*")(\^\^([a-zA-z\-\:_]+|<.*>)|@[a-z]+)?[\s,]*([^\.\];\)\}]*)?</string>
<key>name</key>
<string>meta.statement.object.literal.n3</string>
</dict>
<key>uri</key>
<dict>
<key>match</key>
<string><(([a-zA-Z][0-9a-zA-Z]*:)?/{0,2}[0-9a-zA-Z;/?:@&=+$\.\-_!~*()%]+)?(\#[0-9a-zA-Z;/?:@&=+$\.\-_!~*%]+)?></string>
<key>name</key>
<string>meta.tag</string>
</dict>
<key>var</key>
<dict>
<key>captues</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.other</string>
</dict>
</dict>
<key>match</key>
<string>\?[a-zA-z0-9_]+</string>
<key>name</key>
<string>variable.language</string>
</dict>
</dict>
<key>scopeName</key>
<string>source.sparql</string>
<key>uuid</key>
<string>FFF74C83-C3BE-4CEB-A9BC-99DB3DE9E9DC</string>
</dict>
</plist>