<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>fileTypes</key>
	<array>
		<string>provn</string>
	</array>
	<key>keyEquivalent</key>
	<string>^~P</string>
	<key>name</key>
	<string>Provenance Notation (PROV-N)</string>
	<key>patterns</key>
	<array>
		<dict>
			<key>begin</key>
			<string>\A\s*(document)\s</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.control.document.provn</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(endDocument)\s*\Z</string>
			<key>endCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.control.document.provn</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.document.provn</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comments-block</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#bundle-content</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#bundle</string>
				</dict>
			</array>
		</dict>
	</array>
	<key>repository</key>
	<dict>
		<key>attribute-name</key>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>variable.other.prefix.provn</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>storage.other.localname.provn</string>
				</dict>
			</dict>
			<key>match</key>
			<string>(\w[\w-]*):([\w]([-/%\.\w]*[-/%\w])?)\s*=</string>
		</dict>
		<key>attribute-single</key>
		<dict>
			<key>begin</key>
			<string>(\w[\w-]*):([\w]([-/%\.\w]*[-/%\w])?)\s*=\s*</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>variable.other.prefix.provn</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>storage.other.localname.provn</string>
				</dict>
			</dict>
			<key>comment</key>
			<string>This is currently not used as it breaks the other patters</string>
			<key>end</key>
			<string>[,\Z]</string>
			<key>name</key>
			<string>meta.attribute.provn</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comment-inline</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#string-multiline</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#string</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#qualified-name-convenience</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#localname</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#number</string>
				</dict>
			</array>
		</dict>
		<key>attributes</key>
		<dict>
			<key>begin</key>
			<string>\[</string>
			<key>end</key>
			<string>\]</string>
			<key>name</key>
			<string>meta.attributes-block.provn</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comment-inline</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#attribute-name</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#string-multiline</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#string</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#qualified-name-convenience</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#number</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#data-type</string>
				</dict>
			</array>
		</dict>
		<key>bundle</key>
		<dict>
			<key>begin</key>
			<string>(bundle)[ \t]+(\w[\w-]*):([\w]([-/%\.\w]*[-/%\w])?)</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.control.bundle.provn</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>variable.other.prefix.provn</string>
				</dict>
				<key>3</key>
				<dict>
					<key>name</key>
					<string>entity.other.localname.provn</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(endBundle)</string>
			<key>endCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.control.bundle.provn</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.bundle.provn</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#bundle-content</string>
				</dict>
			</array>
		</dict>
		<key>bundle-content</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#ns-prefix</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#ns-default</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#statement</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#comment-block</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#comment-inline</string>
				</dict>
			</array>
		</dict>
		<key>comment-inline</key>
		<dict>
			<key>begin</key>
			<string>(^[ \t]+)?(?=//)</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>punctuation.whitespace.comment.leading.provn</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?!\G)</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>//</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.comment.provn</string>
						</dict>
					</dict>
					<key>end</key>
					<string>\n</string>
					<key>name</key>
					<string>comment.line.double-slash.provn</string>
				</dict>
			</array>
		</dict>
		<key>comments-block</key>
		<dict>
			<key>begin</key>
			<string>/\*</string>
			<key>captures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.comment.provn</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\*/</string>
			<key>name</key>
			<string>comment.block.provn</string>
		</dict>
		<key>data-type</key>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>variable.other.prefix.provn</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>storage.type.provn</string>
				</dict>
			</dict>
			<key>match</key>
			<string>[ \t]*%%[ \t]*(\w[\w-]*):([\w]([-/%\.\w]*[-/%\w])?)\s*</string>
		</dict>
		<key>localname</key>
		<dict>
			<key>match</key>
			<string>(?&lt;local&gt;[\w]([-/%\.\w]*[-/%\w])?)</string>
			<key>name</key>
			<string>entity.other.localname.provn</string>
		</dict>
		<key>ns-default</key>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.other.prefix.provn</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>markup.underline.link.uri</string>
				</dict>
			</dict>
			<key>match</key>
			<string>(default)\s+&lt;([^&lt;&gt;"{}|^`\\]*)&gt;</string>
			<key>name</key>
			<string>meta.namespace.default.provn</string>
		</dict>
		<key>ns-prefix</key>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.other.prefix.provn</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>variable.other.prefix.provn</string>
				</dict>
				<key>3</key>
				<dict>
					<key>name</key>
					<string>markup.underline.link.uri</string>
				</dict>
			</dict>
			<key>match</key>
			<string>(prefix)\s+(\w[\w-]*)\s+&lt;([^&lt;&gt;"{}|^`\\]*)&gt;</string>
			<key>name</key>
			<string>meta.namespace.prefix.provn</string>
		</dict>
		<key>number</key>
		<dict>
			<key>match</key>
			<string>\d+</string>
			<key>name</key>
			<string>constant.numeric</string>
		</dict>
		<key>qualified-name-convenience</key>
		<dict>
			<key>captures</key>
			<dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>entity.other.qualifiedname.provn</string>
				</dict>
			</dict>
			<key>match</key>
			<string>(')(.+)(')</string>
			<key>name</key>
			<string>meta.qualifiedname-convenience.provn</string>
		</dict>
		<key>qualifiedname</key>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>variable.other.prefix.provn</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>entity.other.localname.provn</string>
				</dict>
			</dict>
			<key>match</key>
			<string>(?&lt;prefix&gt;\w[\w-]*):(?&lt;local&gt;[\w]([-/%\.\w]*[-/%\w])?)</string>
		</dict>
		<key>statement</key>
		<dict>
			<key>begin</key>
			<string>\b(entity|activity|agent|wasGeneratedBy|used|wasInformedBy|wasStartedBy|wasEndedBy|wasInvalidatedBy|wasDerivedFrom|wasAttributedTo|wasAssociatedWith|actedOnBehalfOf|wasInfluencedBy|alternateOf|specializationOf|hadMember|mentionOf)[ \t]*\(</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.statement.provn</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\)</string>
			<key>name</key>
			<string>meta.statement.provn</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comment-inline</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#attributes</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#qualifiedname</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#localname</string>
				</dict>
			</array>
		</dict>
		<key>string</key>
		<dict>
			<key>match</key>
			<string>".*?"</string>
			<key>name</key>
			<string>string.quoted.double.provn</string>
		</dict>
		<key>string-multiline</key>
		<dict>
			<key>begin</key>
			<string>"""</string>
			<key>end</key>
			<string>"""</string>
			<key>name</key>
			<string>string.quoted.multiline.provn</string>
		</dict>
	</dict>
	<key>scopeName</key>
	<string>source.provn</string>
	<key>uuid</key>
	<string>65c0e744-365c-4bcb-922b-018623fa70f1</string>
</dict>
</plist>