#### Apache RAT (release audit tool) exclusions 
## https://creadur.apache.org/rat/

## Eclipse IDE
**/.project
**/.settings/**
**/.classpath
**/*.recommenders/**/*

## IntelliJ
**/.idea/**
**/*.iml
**/*.ipr
**/*.iws

## Maven
**/target/**/*

## Misc
**/README*
**/ABOUT
**/DEPENDENCIES
**/derby.log
**/hs_err_pid*.log

## jena-core exclusions
**/src-examples/data/*

## jena-fuseki exclusions
**/src/main/webapp/favicon.ico
**/src/main/webapp/css/*
**/src/main/webapp/fonts/*
**/src/main/webapp/js/**/*

## SPARQLer (in jena-fuseki-main)
**/sparqler/data/empty.nt
**/sparqler/pages/robots.txt
**/sparqler/pages/crossdomain.xml

## General exclusions
## Vocabularies are often just local copies of
## vocabularies published by others.
**/vocabularies/*
**/Vocabularies/*

## Javadoc add-ons files are required to be simple and our javadoc configuration
## will ensure appropriate license and copyright statements are inserted
## into generated documentation anyway so no need to put license statements
## in these files

**/src/main/**/*.html

## Text and Markdown files are typically used only for documentation purposes
## and license declarations are usually spurious in these files since often they
## will refer to the LICENSE/NOTICE for users to find the actual licenses
**/*.txt
**/*.md

## No comments in JSON
**/*.json
**/*.srj
            
## META-INF services files can include comments but these are very small
## A license header would be confusion.
**/META-INF/services/*
            
## Jena historically has large numbers of small test file
## with no license headers.  Such small files are not required 
## to have headers. 
## 
## In addition, there are files with different Licenses
## (e.g. W3C Software Licence, W3C Test Suite License) as
## noted in the code tree.
**/src/test/files/**/*
**/src/test/resources/**/*
**/testing/**/*

## Databases
**/DB/**/*
**/tdb*.cfg
**/run/**/*

## Cached classpath for commands - autogenerated
**/*.classpath

## MSHADE-124
**/dependency-reduced-pom.xml
jena-examples/**

## This is OGC software licensed
**/geosparql_vocab_all_v1_0_1_updated.rdf

## W3C SHACL vocabulary and shapes for SHACL itself
## W3C Software License.
**/src/main/resources/std/shacl.ttl
**/src/main/resources/std/shacl-shacl.ttl
