Coder Social home page Coder Social logo

weso / shaclex Goto Github PK

View Code? Open in Web Editor NEW
76.0 8.0 17.0 10.26 MB

SHACL/ShEx implementation

Home Page: http://weso.github.io/shaclex

License: MIT License

Scala 85.44% JavaScript 12.82% Makefile 0.19% CSS 0.34% HTML 0.21% Python 0.53% Prolog 0.45% Procfile 0.02%
shex shacl rdf-library scala earl-report schema

shaclex's Introduction

SHaclEX

Scala implementation of SHEX and SHACL.

This project contains an implementation of SHACL and ShEx

Build Status Codacy Badge DOI Maven Central

Introduction

This project contains an implementation of SHACL and ShEx.

Both are implemented in Scala using the same underlying mechanism using a purely functional approach.

The library handles RDF using a simple RDF library which has 2 implementations, one using Apache Jena and another one using RDF4j, this means that it is possible to use this library to validate RDF models from any of those RDF libraries, as well as from external SPARQL endpoints.

Installation and compilation

The project uses sbt for compilation as well as Java 1.8.

  • sbt test compiles and runs the tests

Command line usage

Once compiled, the program can be run as a command line tool. It is possible to run the program inside sbt as:

Validating RDF data with SHACL

Example:

sbt "run --data examples/shacl/good1.ttl \
         --engine shaclex \
         --showValidationReport"

It is also possible to use Jena SHACL using:

sbt "run --data examples/shacl/good1.ttl \
         --engine JenaSHACL \
         --showValidationReport"

or [Top Braid SHACL API] using:

sbt "run --data examples/shacl/good1.ttl \
         --engine shacl-tq \
         --showValidationReport"

Validating RDF with ShEx

Example:

sbt "run --engine=ShEx 
         --schema examples/shex/good1.shex 
         --schemaFormat ShExC 
         --data examples/shex/good1.ttl"

Validating RDF data through an SPARQL endpoint

The following example validates RDF nodes from wikidata using Gene-wiki ShEx:

sbt "run --endpoint=https://query.wikidata.org/sparql 
         --schemaUrl=https://raw.githubusercontent.com/SuLab/Genewiki-ShEx/master/diseases/wikidata-disease-ontology.shex 
         --shapeMap=examples/shex/wikidata/disease1.shapeMap 
         --schemaFormat=ShExC 
         --engine=ShEx 
         --trigger=ShapeMap 
         --showResult 
         --resultFormat=JSON"

Interactive mode with sbt

It is usually faster to run the sbt command, which opens the interactive sbt shell and inside that shell, execute the different commands.

$ sbt
... several information about loading libraries
sbt> run -d examples/shacl/good1.ttl --engine ShaClex  

Binary mode

The fastest way to run Shaclex is to compile the code and generate a comand line binary file.

The following command will generate a binary file:

$ sbt universal:packageBin
...generates the file...
target/universal/shaclex-N.N.N.zip

which contains the compressed binary code.

Programmatic usage

The Shaclex library can be invoked programmatically.

Implementation details

  • The engine is based on Monads using the cats library
  • The ShEx compact syntax parser is implemented using the following Antlr grammar (previous versions used Scala Parser Combinators) which is based on this grammar
  • JSON encoding and decoding uses the Json structure defined here and is implemented using Circe

Compatibility tests

The current implementation passes all shacl-core tests. In order to generate the EARL report, run:

$ sbt 
[...]
sbt:shaclex> project shacl 
sbt:shacl> testOnly es.weso.shacl.report.ReportGeneratorCompatTest

We also aim to pass the ShEx test-suite.

In order to run the shex test-suite and generate the EARL report, you can do the following:

sbt
...
sbt:shaclex> project shex
sbt:shex> compat:test

Convert between Schema formats

Shaclex can be used to convert between different schema formats. The following example shows how to convert between ShExC to ShExJ:

$ sbt "run --schema examples/shex/good1.shex 
           --schemaFormat ShExC
           --outSchemaFormat ShExJ
           --showSchema"

Convert between ShEx and SHACL

Shaclex can be used to convert schemas from ShEx to SHACL and viceversa. The following example shows how to convert a SHACL schema to ShEx.

$ sbt "run --schema examples/shacl/good1.ttl 
           --schemaFormat Turtle 
           --outSchemaFormat ShExC 
           --engine SHACLEX 
           --outEngine SHEX 
           --showSchema 
           --no-validate"

The conversion code is work in progress. This issue tracks ShEx->SHACL conversion and this one tracks SHACL->ShEx conversion.

Clingo validation

The project supports experimental Answer Set Programming based validation by converting the validation process to a [Clingo program])(https://potassco.org/clingo/). To run this, use the option --showClingo which will generate a Cling program. Example:

sbt "run --engine=ShEx 
         --schema examples/shex/good1.shex 
         --schemaFormat ShExC 
         --data examples/shex/good1.ttl
         --showClingo
         --clingoFile clingoProgram.pl" 

Once you generate the Clingo program and have installed Clingo itself, you can run the program with:

clingo clingoProgram.pl

This feature is experimental. This issue tracks the Clingo conversion.

More information

  • The aim of Shaclex is to support both ShEx and SHACL and to provide conversions between both languages. More information about both languages can be read in the Validating RDF data written by the authors.
  • An online demo based on this library is available at http://rdfshape.weso.es.
  • Another online demo based on this library customized for Wikidata is available at http://wikidata.weso.es.
  • This project was based on ShExcala which was focused on Shape Expressions only.

Publishing to OSS-Sonatype

This project uses the sbt ci release plugin for publishing to OSS Sonatype.

SNAPSHOT Releases

Open a PR and merge it to watch the CI release a -SNAPSHOT version

Full Library Releases
  1. Push a tag and watch the CI do a regular release
  2. git tag -a v0.1.0 -m "v0.1.0"
  3. git push origin v0.1.0 Note that the tag version MUST start with v.

Author & contributors

Contributors:

Adopters

  • RDFShape: An online demo powered by this library.
  • Wikishape: An online demo powered by this library for Wikidata.
  • Eclipse lyo: An SDK and a modelling environment to design and develop linked data applications based on the OSLC standards. The validation library is lyo-validation.

Contribution

Contributions are greatly appreciated. Please fork this repository and open a pull request to add more features or submit issues

shaclex's People

Contributors

berezovskyi avatar labra avatar locke avatar markiantorno avatar robert-david avatar rwst avatar scala-steward avatar thewillyhuman avatar tonicebrian avatar ulitol97 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shaclex's Issues

Meta: SHACLex planning

This is a issue that collects planning information about SHACLex project

This issue is inspired by Issue1 of Schema.org

Planning

  • Create implementation converting SHACL to ShEx

✔️ shaclex online validator. Deployed at http://rdfshape.weso.es
✔️ Finnish core implementation of all SHACL features (see issue2)
✔️ Test all SHACL features using W3c test-suite when available (see Issue 3)

Tag the releases and/or produce aggrerate source JAR

We would like to reuse shaclex in the Eclipse Lyo project. Eclipse requires us to let their IP lawyers to review all the source code of the libraries we use and make sure there is no GPLed or copypasted source code.

I usually upload the source jar I get from maven central for the review. The shaclex source jar I got from bintray has only 2 source files, does not include a license file and does not list its dependencies.

  1. Is it possible to build more complete source jars? The closest I came in googling is here: http://www.scala-sbt.org/0.13/docs/Howto-Package.html
  2. Can you please tag ad6d3db as 0.0.62, please?
  3. Can you confirm that if I want to archive only the subset of the repository tree that contains the source that is shipped in the JARs, I should take /src and /modules directories (excluding src/test subdirectories)?

I know you don't really have to help us out with all these license/tagging things, so I just want to thank you in advance for all your effort!

Add RDF serialization format for ShEx

ShExcala used an RDF serialization format and it was possible to convert from RDF to ShEx and the other way around.

However, the RDF vocabulary was not actively maintained and when SHACL appeared, it was considered to adopt SHACL as that RDF vocabulary.

At this moment, given that SHACL doesn't include most of the features of ShEx it would be necessary to add features to the SHACL vocabulary or to define just a new ShEx vocabulary.

Some historical discussion about the RDF syntax for ShEx appeared in the wiki although it was not maintained.

It would be interesting to decide if we keep compatibility with SHACL vocabulary or if we just define our own properties for ShEx.

This issue depends on a more general issue in the ShExspec.

SHACL AND does not work

The following Shapes graph and Data graph exemplifies SHACL AND. It should work but, it does not.

Example Shapes Graph

ex:SuperShape
	a sh:NodeShape ;
	sh:property [
		sh:path ex:property ;
		sh:minCount 1 ;
	] .

ex:ExampleAndShape
	a sh:NodeShape ;
	sh:targetNode ex:ValidInstance, ex:InvalidInstance ;
	sh:and (
		ex:SuperShape
		[
			sh:path ex:property ;
			sh:maxCount 1 ;
		]
	) . 

Example Data Graph

ex:ValidInstance
	ex:property "One" .

# Invalid: more than one property
ex:InvalidInstance
	ex:property "One" ;
	ex:property "Two" .

Example taken from source: https://www.w3.org/TR/shacl/#AndConstraintComponent

Change the definition of RDFParser

The current definition of RDFParser as a type synonym could be refactored to use an abstract class like in parser combinators.

abstract class RDFParser[+T] extends ((RDFNode, RDFReader) => RDFParseResult) {
  private var name: String
  ...
  def apply(n: RDFNode, rdf: RDFReader): RDFParseResult
  ...
}

In this way, it would be possible to add names to the different RDF parsers and provide better error messages.

Lexer when parsing several NOTs

The following schema:

prefix : <p>
:S NOT @:S
:T NOT .

gives the following error:

Error at 1:25 mismatched input 'NOT' expecting {<EOF>, KW_BASE, KW_PREFIX, KW_START, KW_AND, KW_OR, IRIREF, PNAME_NS, PNAME_LN, BLANK_NODE_LABEL}

Taking a look at this answer, it may be possible that the cause of the error is in the order of tokens in the lexer.

Some things to take into account:

  • the error listener doesn't print the right line. It says the error was in line 1...
  • If I remove the : and use relative URIs, it works
  • It seems to work using grun

Adopt git branching model

Up until now, Shaclex has been implemented mainly by one person. As there have been some people interested to make contributions to Shaclex, I think it will be better to start adopting a git branching model.

In past projects, I adopted the successful git branching model.

I will try to start adopting it. First of all. I will create a develop branch and start branching from it.

Allow prefixed names in shape maps without white spaces

Although the shape map spec doesn't talk about prefixed names, they are much more useful than long IRIs. Instead of

<http://example.org/alice>@<http://shapes.org/User>

it is more readable to use:

:alice@s:User

At this moment, this feature is supported by the parser, but there is a conflict between the @ employed as a separator between node selectors and shapes, and the @ employed in language tagged literals. The current parser handles it right if there is a white space as:

:alice @ s:User

It would be better to handle it even without the white space, but the ANTLR grammar must probably be changed.

Recursive shapes in SHACL

Although the internal computation model of SHACLex implementation supports recursion, the current RDF2Shacl parser fails with recursive shapes. There is a simple problem in the internal representation of SHACL. One possibility is to extend the abstract syntax to contain ShapeRef.

No valid parser available.

$ sbt test command works good, but $ sbt run -d src/test/resources/shacl/core/example1.ttl cause error.

$ sbt run -d src/test/resources/shacl/core/example1.ttl 
[residual] arg = 'src/test/resources/shacl/core/example1.ttl'
[residual] arg = 'run'
[residual] arg = 'src/test/resources/shacl/core/example1.ttl'
[process_args] java_version = '1.8.0_92'
# Executing command line:
java
-Xms1024m
-Xmx1024m
-XX:ReservedCodeCacheSize=128m
-XX:MaxMetaspaceSize=256m
-jar
/usr/local/Cellar/sbt/0.13.13/libexec/sbt-launch.jar
run
src/test/resources/shacl/core/example1.ttl

[info] Loading project definition from /Users/user/src/shaclex/project/project
[info] Loading project definition from /Users/user/src/shaclex/project
[info] Set current project to shaclex (in build file:/Users/user/src/shaclex/)
[info] Running es.weso.shaclex.Main 
02:41:58.108 [run-main-0] INFO  es.weso.shaclex.Main$ - RDF Data option not specified
02:41:58.766 [run-main-0] INFO  es.weso.shaclex.Main$ - Schema not specified. Extracting schema from data
02:41:58.768 [run-main-0] ERROR es.weso.shaclex.Main$ - Exception: Not implemented get ShEx from RDF yet
[success] Total time: 5 s, completed 2016/11/23 2:41:58
[error] No valid parser available.
[error] src/test/resources/shacl/core/example1.ttl
[error]     ^

Return all errors in data graph - SHACL

The ShaclEx library should return all the errors in the data graph.

Currently the SHACL validator of the ShaclEx library returns only one constraint error in the data graph at random even though there are more errors in the data graph.

To understand this better:

​Example data graph:

@prefix ex:    <http://example.org/> .
@prefix oslc_data: <http://open-services.net/ns/servicemanagement/1.0/> .
@prefix sh:    <http://www.w3.org/ns/shacl#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sam:   <http://www.sampledomain.org/sam#> .
@prefix oslc:  <http://open-services.net/ns/core#> .
<http://localhost:8080/SampleAdaptor/services/serviceProviders/1/aResources/1>
        a                       sam:AResource ;
        sam:aReferenceProperty  sam:AnotherResource ;
        sam:aSetOfDates         "2017-02-22T13:33:57.639Z"^^xsd:dateTime ;
        sam:aStringProperty     "Test" ;
        sam:anIntegerProperty   "1234"^^xsd:int​eger​ .
[ a              rdf:Statement ;
  rdf:object     sam:AnotherResource ;
  rdf:predicate  sam:aReferenceProperty ;
  rdf:subject    <http://localhost:8080/SampleAdaptor/services/serviceProviders/1/aResources/1>
] .

corresponding shacl shape graph:

@prefix ex:    <http://example.org/> .
@prefix oslc_data: <http://open-services.net/ns/servicemanagement/1.0/> .
@prefix sh:    <http://www.w3.org/ns/shacl#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sam:   <http://www.sampledomain.org/sam#> .
@prefix oslc:  <http://open-services.net/ns/core#> .

ex:S    sh:property     [ sh:datatype  xsd:dateTime ;
                          sh:maxCount  0 ;
                          sh:minCount  0 ;
                          sh:predicate      sam:aSetOfDates
                        ] ;
        sh:property     [ sh:datatype  xsd:integer ;
                          sh:maxCount  1 ;
                          sh:minCount  1 ;
                          sh:predicate      sam:anIntegerProperty
                        ] ;
        sh:property     [ sh:datatype  xsd:string ;
                          sh:maxCount  0 ;
                          sh:minCount  0 ;
                          sh:predicate      sam:aStringProperty
                        ] ;
        sh:targetClass  sam:AResource .

In the above data graph there exists anIntegerProperty and aSetOfDates. But, according to shapes graph, the cardinality of these two properties should be 0.

The ShaclEx validation library SHOULD return maxCountError for both these properties. BUT, it returns only one error at random. Sometimes maxCountError for anIntegerProperty sometimes for aSetOfDates.

Documentation of the library

We need to improve the documentation of the library so people can collaborate with the project.

I started to document the architecture and the main modules.

I would like to keep a living documentation that was synchronized with the Scala doc generated. I also need to restore the publication of the Scaladoc.

Cause java.lang.StackOverflowError when shape has recursion.

shape with recursion cause StackOverflowError.
Test shape and data are following. :arrayShape has recursion.

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.example.org/> .
@prefix : <http://example.org/>
@prefix sh: <http://www.w3.org/ns/shacl#>

:S a sh:Shape ;
   sh:targetNode :x ;
   sh:property [
     sh:predicate :p ;
     sh:minCount 1 ;
     sh:maxCount 1 ;
   ] .

:arrayShape a sh:Shape ;
   sh:property [
     sh:predicate rdf:first ;
     sh:minCount 1 ;
     sh:maxCount 1 ;
     sh:datatype xsd:string ;
   ] ;

   sh:property [
     sh:predicate rdf:rest ;
     sh:minCount 1 ;
     sh:maxCount 1 ;
     sh:or (
        [ sh:in rdf:nil ]
        [ sh:shape :arrayShape ; ] # recursion
      ) ;
   ] .

:x :p ("a" "b" "c") .

Error is following.

$ sbt "run -d examples/shacl/loop.ttl --engine shaclex"
[info] Loading project definition from /Users/user-hiroki/src/shaclex/project/project
[info] Loading project definition from /Users/user/src/shaclex/project
[info] Set current project to shaclex (in build file:/Users/user/src/shaclex/)
[info] Running es.weso.shaclex.Main -d examples/shacl/loop.ttl --engine shaclex
19:39:06,208 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
19:39:06,210 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
19:39:06,210 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/Users/user/src/shaclex/target/scala-2.11/classes/logback.xml]
19:39:06,212 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs multiple times on the classpath.
19:39:06,212 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [file:/Users/user/src/shaclex/modules/apiRest/target/scala-2.11/classes/logback.xml]
19:39:06,212 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [file:/Users/user/src/shaclex/target/scala-2.11/classes/logback.xml]
19:39:06,377 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
19:39:06,382 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
19:39:06,393 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
19:39:06,402 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
19:39:06,437 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO
19:39:06,437 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
19:39:06,437 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
19:39:06,438 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@76dc7f8e - Registering current configuration as safe fallback point

19:39:07.250 [run-main-0] INFO  es.weso.shaclex.Main$ - Schema not specified. Extracting schema from data
[error] (run-main-0) java.lang.StackOverflowError
java.lang.StackOverflowError
	at scala.runtime.BoxesRunTime.equals(BoxesRunTime.java:121)
	at scala.collection.immutable.Set$Set3.contains(Set.scala:151)
	at scala.collection.immutable.Set$Set3.$plus(Set.scala:153)
	at scala.collection.immutable.Set$Set3.$plus(Set.scala:148)
	at scala.collection.mutable.SetBuilder.$plus$eq(SetBuilder.scala:22)
	at scala.collection.mutable.SetBuilder.$plus$eq(SetBuilder.scala:20)
	at scala.collection.generic.Growable$$anonfun$$plus$plus$eq$1.apply(Growable.scala:59)
	at scala.collection.generic.Growable$$anonfun$$plus$plus$eq$1.apply(Growable.scala:59)
	at scala.collection.Iterator$class.foreach(Iterator.scala:893)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
	at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
	at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:59)
	at scala.collection.mutable.SetBuilder.$plus$plus$eq(SetBuilder.scala:20)
	at scala.collection.TraversableLike$class.to(TraversableLike.scala:590)
	at scala.collection.AbstractTraversable.to(Traversable.scala:104)
	at scala.collection.TraversableOnce$class.toSet(TraversableOnce.scala:304)
	at scala.collection.AbstractTraversable.toSet(Traversable.scala:104)
	at es.weso.rdf.jena.JenaMapper$.triplesSubject(JenaMapper.scala:177)
	at es.weso.rdf.jena.RDFAsJenaModel$$anonfun$triplesWithSubject$2.apply(RDFAsJenaModel.scala:88)
	at es.weso.rdf.jena.RDFAsJenaModel$$anonfun$triplesWithSubject$2.apply(RDFAsJenaModel.scala:86)
	at scala.Option.fold(Option.scala:158)
	at es.weso.rdf.jena.RDFAsJenaModel.triplesWithSubject(RDFAsJenaModel.scala:86)
	at es.weso.rdf.RDFReader$class.triplesWithSubjectPredicate(RDFReader.scala:94)
	at es.weso.rdf.jena.RDFAsJenaModel.triplesWithSubjectPredicate(RDFAsJenaModel.scala:36)
	at es.weso.rdf.parser.RDFParser$$anonfun$objectFromPredicate$1.apply(RDFParser.scala:108)
	at es.weso.rdf.parser.RDFParser$$anonfun$objectFromPredicate$1.apply(RDFParser.scala:107)
	at es.weso.rdf.parser.RDFParser$$anonfun$optional$1.apply(RDFParser.scala:210)
	at es.weso.rdf.parser.RDFParser$$anonfun$optional$1.apply(RDFParser.scala:209)
	at es.weso.shacl.RDF2Shacl$$anonfun$not$1.apply(RDF2Shacl.scala:219)
	at es.weso.shacl.RDF2Shacl$$anonfun$not$1.apply(RDF2Shacl.scala:218)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:163)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:162)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:162)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:159)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
	at scala.collection.AbstractTraversable.map(Traversable.scala:104)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:151)
	at scala.util.Success$$anonfun$map$1.apply(Try.scala:237)
	at scala.util.Try$.apply(Try.scala:192)
	at scala.util.Success.map(Try.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:151)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:149)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:230)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:230)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:228)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:145)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:143)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:20)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:209)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:207)
	at scala.util.Success.flatMap(Try.scala:231)
	at scala.util.Try$WithFilter.flatMap(Try.scala:139)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:207)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:206)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:163)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:162)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:162)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:159)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
	at scala.collection.AbstractTraversable.map(Traversable.scala:104)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:151)
	at scala.util.Success$$anonfun$map$1.apply(Try.scala:237)
	at scala.util.Try$.apply(Try.scala:192)
	at scala.util.Success.map(Try.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:151)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:149)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:230)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:230)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:228)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:145)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:143)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:20)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:209)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:207)
	at scala.util.Success.flatMap(Try.scala:231)
	at scala.util.Try$WithFilter.flatMap(Try.scala:139)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:207)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:206)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:163)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:162)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:162)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:159)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
	at scala.collection.AbstractTraversable.map(Traversable.scala:104)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:151)
	at scala.util.Success$$anonfun$map$1.apply(Try.scala:237)
	at scala.util.Try$.apply(Try.scala:192)
	at scala.util.Success.map(Try.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:151)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:149)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:230)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:230)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:228)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:145)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:143)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:20)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:209)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:207)
	at scala.util.Success.flatMap(Try.scala:231)
	at scala.util.Try$WithFilter.flatMap(Try.scala:139)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:207)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:206)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:163)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:162)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:162)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:159)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
	at scala.collection.AbstractTraversable.map(Traversable.scala:104)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:151)
	at scala.util.Success$$anonfun$map$1.apply(Try.scala:237)
	at scala.util.Try$.apply(Try.scala:192)
	at scala.util.Success.map(Try.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:151)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:149)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:230)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:230)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:228)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:145)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:143)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:20)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:209)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:207)
	at scala.util.Success.flatMap(Try.scala:231)
	at scala.util.Try$WithFilter.flatMap(Try.scala:139)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:207)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:206)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:163)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:162)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:162)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:159)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
	at scala.collection.AbstractTraversable.map(Traversable.scala:104)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:151)
	at scala.util.Success$$anonfun$map$1.apply(Try.scala:237)
	at scala.util.Try$.apply(Try.scala:192)
	at scala.util.Success.map(Try.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:151)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:149)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:230)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:230)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:228)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:145)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:143)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:20)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:209)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:207)
	at scala.util.Success.flatMap(Try.scala:231)
	at scala.util.Try$WithFilter.flatMap(Try.scala:139)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:207)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:206)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:163)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:162)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:162)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:159)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
	at scala.collection.AbstractTraversable.map(Traversable.scala:104)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:151)
	at scala.util.Success$$anonfun$map$1.apply(Try.scala:237)
	at scala.util.Try$.apply(Try.scala:192)
	at scala.util.Success.map(Try.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:151)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:149)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:230)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:230)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:228)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:145)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:143)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:20)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:209)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:207)
	at scala.util.Success.flatMap(Try.scala:231)
	at scala.util.Try$WithFilter.flatMap(Try.scala:139)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:207)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:206)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:163)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:162)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:162)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:159)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
	at scala.collection.AbstractTraversable.map(Traversable.scala:104)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:151)
	at scala.util.Success$$anonfun$map$1.apply(Try.scala:237)
	at scala.util.Try$.apply(Try.scala:192)
	at scala.util.Success.map(Try.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:151)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:149)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:230)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:230)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:228)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:145)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:143)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:20)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:209)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:207)
	at scala.util.Success.flatMap(Try.scala:231)
	at scala.util.Try$WithFilter.flatMap(Try.scala:139)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:207)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:206)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:163)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:162)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:162)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:159)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
	at scala.collection.AbstractTraversable.map(Traversable.scala:104)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:151)
	at scala.util.Success$$anonfun$map$1.apply(Try.scala:237)
	at scala.util.Try$.apply(Try.scala:192)
	at scala.util.Success.map(Try.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:151)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:149)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:230)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:230)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:228)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:145)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:143)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:20)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:209)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:207)
	at scala.util.Success.flatMap(Try.scala:231)
	at scala.util.Try$WithFilter.flatMap(Try.scala:139)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:207)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:206)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:163)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:162)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:162)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:159)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
	at scala.collection.AbstractTraversable.map(Traversable.scala:104)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:151)
	at scala.util.Success$$anonfun$map$1.apply(Try.scala:237)
	at scala.util.Try$.apply(Try.scala:192)
	at scala.util.Success.map(Try.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:151)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:149)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:230)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:230)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:228)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:145)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:143)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:20)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:209)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:207)
	at scala.util.Success.flatMap(Try.scala:231)
	at scala.util.Try$WithFilter.flatMap(Try.scala:139)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:207)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:206)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:163)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:162)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:162)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:159)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
	at scala.collection.AbstractTraversable.map(Traversable.scala:104)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:151)
	at scala.util.Success$$anonfun$map$1.apply(Try.scala:237)
	at scala.util.Try$.apply(Try.scala:192)
	at scala.util.Success.map(Try.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:151)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:149)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:230)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:230)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:228)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:145)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:143)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:20)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:209)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:207)
	at scala.util.Success.flatMap(Try.scala:231)
	at scala.util.Try$WithFilter.flatMap(Try.scala:139)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:207)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1.apply(RDF2Shacl.scala:206)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:163)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1$$anonfun$apply$10.apply(RDF2Shacl.scala:162)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:162)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraint$1.apply(RDF2Shacl.scala:159)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10$$anonfun$11.apply(RDF2Shacl.scala:153)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
	at scala.collection.AbstractTraversable.map(Traversable.scala:104)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:153)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1$$anonfun$10.apply(RDF2Shacl.scala:151)
	at scala.util.Success$$anonfun$map$1.apply(Try.scala:237)
	at scala.util.Try$.apply(Try.scala:192)
	at scala.util.Success.map(Try.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:151)
	at es.weso.shacl.RDF2Shacl$$anonfun$propertyConstraints$1.apply(RDF2Shacl.scala:149)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1$$anonfun$apply$26.apply(RDF2Shacl.scala:230)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:230)
	at es.weso.shacl.RDF2Shacl$$anonfun$shapeComponent$1.apply(RDF2Shacl.scala:228)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:335)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:336)
	at es.weso.shacl.RDF2Shacl$$anonfun$es$weso$shacl$RDF2Shacl$$comb$1$1.apply(RDF2Shacl.scala:334)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:145)
	at es.weso.shacl.RDF2Shacl$$anonfun$nodeConstraints$1.apply(RDF2Shacl.scala:143)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:360)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1$$anonfun$apply$41.apply(RDF2Shacl.scala:359)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:359)
	at es.weso.shacl.RDF2Shacl$$anonfun$combine$1.apply(RDF2Shacl.scala:357)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:55)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1$$anonfun$apply$2.apply(RDF2Shacl.scala:54)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:54)
	at es.weso.shacl.RDF2Shacl$$anonfun$shape$1.apply(RDF2Shacl.scala:53)
	at scala.util.Success.flatMap(Try.scala:231)
	at es.weso.shacl.RDF2Shacl$.shape(RDF2Shacl.scala:53)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:239)
	at es.weso.shacl.RDF2Shacl$$anonfun$getShape$1.apply(RDF2Shacl.scala:237)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:20)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:19)
	at es.weso.shacl.RDF2Shacl$$anon$1$$anonfun$ap$1.apply(RDF2Shacl.scala:18)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:209)
	at es.weso.shacl.RDF2Shacl$$anonfun$or$1$$anonfun$apply$16.apply(RDF2Shacl.scala:207)
[trace] Stack trace suppressed: run last shaclex/compile:run for the full output.
java.lang.RuntimeException: Nonzero exit code: 1
	at scala.sys.package$.error(package.scala:27)
[trace] Stack trace suppressed: run last shaclex/compile:run for the full output.
[error] (shaclex/compile:run) Nonzero exit code: 1
[error] Total time: 8 s, completed 2016/11/28 19:39:08

Is a shape with recursions invalid?

Add support to interact with the library using Jena Models

As suggested by @jadelkhoury one possibility to improve Java interoperability (see issue #17) is to limit the interaction to the usage of Jena RDF Models.

Java programmers would provide Jena Models as input and the validation process would return the result encoded in Jena models.

Providing Jena RDF models as input is already supported for SHACL and even for ShEx using the recent ShEx RDF encoded based on Json-LD.

The only missing piece is to convert the validation result to RDF and then return the corresponding model, which seems an easy task.

Update to Scala 2.12

In principle, it should be easy to update the code to Scala 2.12. The main issues are the dependencies on other libraries. At this moment I think most of the libraries on which shaclex depends are already published in 2.12:

Library Current version Version with Scala 2.12 Link
cats 0.8.1 0.8.1 github
http4s 0.14.1 0.15.2a web page
circe 0.6.0 0.6.1 issue
scalaTest 3.0.0 3.0.1 web page
logging 3.5.0 3.5.0 github
scalaTags 0.6.1 0.6.2 issue

Constraint value nodes to be subclasses of a specific root class

Hi,
I've been testing the SHACL validator and would like to know if there is a plan to provide validation support for the usage of classes as property values (classes-as-values).
It's a common use case in life science where data are mainly annotated with classes.

The "All value nodes of a property must be subclasses of a specific root class" constraint could potentially be expressed like this:

:S a sh:NodeShape;
sh:targetNode :n ;
sh:property [
sh:path :p ;
sh:rootClass :SuperClass;
sh:minCount 1;
] .

I'm aware that it's not part of the SHACL core constraints but it think it's a useful one.
I played with the validator in order to support the constraint (a pull request just for demo).

Also since rootClass is not part of core of the SHACL spec, it has to fall in an other namespace (different from sh).

Java interoperability

Create a simpler interface to facilitate interoperability with Java. Some Scala features may be difficult to be called from Java applications, so it would be nice to have a simpler interface for Java applications which hides the advanced Scala features from Java. A similar approach is used by Play! framework.

sh:or can't be used in a property constraint.

SHACLE sh:or can be used in a property constraint.

Following data can validate.

@prefix : <http://example.org/> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

:S a sh:Shape;
   sh:targetNode :x ;
   sh:or (
     [
         sh:property [
           sh:predicate :p ;
           sh:class :t1 ;
         ]
     ]
     [
         sh:property [
           sh:predicate :p ;
           sh:class :t2 ;
         ]
     ]
   ) .

:x :p [ a :t0 ] .

The same constraints definition following can't validate.

@prefix : <http://example.org/> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

:S a sh:Shape;
   sh:targetNode :x ;
   sh:property [
      sh:predicate :p ;
      sh:or (
        [ sh:class :t0 ]
        [ sh:class :t1 ]
      ) ;
   ] .

:x :p [ a :t0 ] .

Remove mutable map in RDF2Shacl parser

The RDF2Shacl parser was implemented in an imperative way. In order to avoid loops, I added a mutable map to contain the parsedShapes.

Replace by a StateT and study a better way to handle cylic shapes. This issue may solve issue #34

Pass compatibility tests of ShEx compact parser

List of tests that don't pass:

NameStatusComment
0focusBNODEContains an AND between a nodeconstraint and an empty shape
0focusIRIContains an AND between a nodeconstraint and an empty shape
1dotCodeWithEscapes1Contains escaped chars \" in code declaration
1IRI_with_UCHAR.1dotContains unicode characters in IRI
1refbnode_with_spanning_PN_CHARS_BASE1Contains unicode characters
FocusIRI2groupBnodeNested2groupIRIRefDifferent resulting schemas (inlineShapeAtom TODO inlineShapeOrRef)
kitchenSinkDifferent resulting schemas
_allContains unicode characters

ShEx features

ShEx features based on: ShEx semantics document

Validation process

Feature Supported Pending Comments
Node-shape Work in progress
Node-Schema (start declaration) Work in progress
Node-Schema (SHACL target node declarations) Work in progress
Node-Schema (SHACL target class declarations) Not part of ShEx
Node-Schema (implicit SHACL target class declarations) Not part of ShEx
Node-Schema (SHACL other target declarations) Not part of ShEx

Shape Expressions

Feature Supported Pending Comments
ShapeAnd
ShapeOr
ShapeNot
NodeConstraint
Shape
ShapeRef
ShapeExternal
Virtual shapes Not part of current version
Closed shapes
Extra IRIs in shapes
Inheritance between shapes Not part of current version

Triple expressions

Feature Supported Pending
EachOf
SomeOf
Inclusion

Triple constraints

Feature Supported Pending
Inverse qualifier
Negated qualifier
Min cardinality
Max cardinality
Unbounded cardinality

Node constraints

Feature Supported Pending ShACL
IRI kind
BNode kind
Literal kind
Non literal kind
Datatype
Value set value
Int value
Decimal value
Double value
Length facet
MinLength facet
MaxLength facet
Pattern facet
MinInclusive facet
MaxInclusive facet
MinExclusive facet
MaxExclusive facet
Totaldigits facet
Fractiondigits facet
Stem
Stem range with exclusions
Stem range with wildcard

NoSuchMethodError exception when invoked from Java (Jetty)

Hello Jose,

We are trying to call shaclex from a java webapp project running inside jetty, but getting the following exception:

java.lang.NoSuchMethodError: es.weso.typing.Typing.getMap()Lscala/collection/immutable/Map;
	at es.weso.schema.ShaclexSchema.cnvShapeTyping(ShaclexSchema.scala:33)
	at es.weso.schema.ShaclexSchema$$anonfun$cnvResult$1.apply(ShaclexSchema.scala:28)
	at es.weso.schema.ShaclexSchema$$anonfun$cnvResult$1.apply(ShaclexSchema.scala:28)
	at scala.collection.immutable.List.map(List.scala:273)
	at es.weso.schema.ShaclexSchema.cnvResult(ShaclexSchema.scala:28)
	at es.weso.schema.ShaclexSchema.validateTargetDecls(ShaclexSchema.scala:21)
	at es.weso.schema.Schema.validateWithTrigger(Schema.scala:22)
	at es.weso.schema.Schema.validate(Schema.scala:39)
	at your.basepackage.name.SampleAdaptorManager.getServiceProviderInfos(SampleAdaptorManager.java:108)

POM file: pom.xml.zip

shaclex jars were installed locally this way: https://gitlab.com/assume/shaclex/tree/fixmvn#local-m2-installation (which was probably far from optimal)

cc @jadelkhoury

sbt assembly finds duplicate jars

When executing sbt assembly, I obtain lots of errors like the following:

[error] deduplicate: different file contents found in the following:
[error] ...\.coursier\cache\v1\https\repo1.maven.org\maven2\org\typelevel\scala-library\2.11.8\scala-library-2.11.8.jar:scala/sys/process/ProcessBuilderImpl$Simple$$anonfun$4.class
[error] ...\.coursier\cache\v1\https\repo1.maven.org\maven2\org\scala-lang\scala-library\2.11.8\scala-library-2.11.8.jar:scala/sys/process/ProcessBuilderImpl$Simple$$anonfun$4.class

It seems that there is a configuration problem where the typelevel and scala-lang libraries are mixed. As we are using only typelevel compiler, we probably need to configure something in sbt to remove the deplicate jars.

sbt assembly gives duplicate errors

In previous versions of the library (when everything was decomposed in different repositories), it was possible to use:

sbt assembly

to create a fat jar with all the jars.

However, after joining all the code in a single repository with different modules, sbt assembly gives lots of errors like the following:

[error] deduplicate: different file contents found in the following: 
[error] /users/labra/.coursier/cache/v1/https/repo1.maven.org/maven2\org/typelevel/scala-library/2.11.8/scala-library-2.11.8.jar:scala/concurrent/duration/package$DoubleMult$.class
[error] /users/labra/.coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.11.8/scala-library-2.11.8.jar:scala/concurrent/duration/package$DoubleMult$.class

I read this stackoverflow question and I probably need to add something to sbt to exclude jars.

Improve CSS and general appearance of validation server

The --server option starts a standalone API server which is also deployed at http://shaclex.herokuapp.com/.

The server is implemented using http4s, a minimalistic http framework.

It contains also a simple web application with several forms that allow to validate and convert RDF data and schemas. The web application is quite simple at this moment. I would like some help from someone who could collaborate improving the CSS and adding some Javascript to improve the appearance.

One goal is to replace the previous RDFShape application which was defined using Play! Framework and some JQuery UI widgets. However, the appearance was not really good and there was not a good separation between the API and the web application.

Any help would be appreciated improving the appearance of the web application...at this moment, it is a set of Twirl templates located here.

Support to examples definitions

Shex.js implementation parses example definitions defined as JSON files which can dynamically be loaded and tried. An example is this.

The structure is this:

{ "name": "bibframe book",
  "schemaURL": "book.shex",
  "passes": [  ],
  "fails": [  ] 
}

where passes[] and fails[] are arrays of data/shapemap:

{"name": "simple",
 "dataURL": "book.ttl",
 "queryMap": "<samples9298996>@<Work>" 
}

One missing property is the schemaEngine so it could be either ShEx, SHACL, or whatever.

Add support to banana-rdf

This was an old issue for ShExscala that I never found time to tackle.

In principle, the task should not be difficult because all RDF support in Shaclex is confined to the srdf module which contains a minimal interface for RDF.

At this moment, that interface is only implemented by srdfjena which provides the RDFAsJenaModel case class.

A possible approach is to provide another module which could implement the srdf interface using banana-rdf definitions.

The advantage of using banana-rdf is that it could add support for Jena, Sesame and Javascript for free.

SHACL features

SHACL features based on: SHACL recommendation

Target selection

Feature Supported Pending
Target Node sh:targetNode ✔️
Class-based targets sh:targetClass ✔️
Implicit class targets ✔️
Subjects of targets sh:targetSubjectsOf ✔️
Objects of targets sh:targetObjectsOf ✔️

Shapes

Feature Supported Comments
sh:name ✔️
sh:description ✔️
sh:group ✔️
sh:order ✔️
owl:imports ✔️
sh:entailment The entailment declaration is parsed but no entailments are offered by now
sh:shapesGraph The sh:shapesGraph declaration is part of the data graph. shaclex clients can specify which shapes graph they want to invoke

Validation report

We generate a SHACL validation report.
We generate a Report data structure which has more information than the SHACL recommendation spec. For example, we inform about the nodes that have been validated as well as the nodes that failed.

Feature Supported Pending
sh:deactivated ✔️
sh:message ✔️
sh:severity ✔️

Constraints

Feature Supported Pending
Node constraints ✔️
Property shapes (sh:path) ✔️
Path constraints ✔️

Constraint components

Feature Supported Pending Comments
sh:class ✔️
sh:datatype ✔️
sh:nodeKind ✔️
sh:minCount ✔️
sh:maxCount ✔️
sh:minInclusive, sh:maxInclusive, sh:minExclusive, sh:maxExclusive ✔️
sh:minLength ✔️
sh:maxLength ✔️
sh:pattern ✔️
sh:flags ✔️
sh:languageIn ✔️
sh:uniqueLang ✔️
sh:equals ✔️
sh:disjoint ✔️
sh:lessThan ✔️
sh:lessThanOrEquals ✔️
sh:not ✔️
sh:and ✔️
sh:or ✔️
sh:xone ✔️
sh:node ✔️
sh:qualifiedValueshape, qualifiedMinCount, qualifiedMaxCount ✔️
sh:qualifiedValueshapesDisjoint
sh:closed ✔️
sh:ignoredProperties ✔️
sh:hasValue ✔️
sh:in ✔️

SPARQL based constraints

(:x:) Non-supported: The core implementation is defined in Scala.

Under the hood, it uses Jena/RDF4j and SPARQL, so it could also implement SHACL-SPARQL in the future.

Update to SBT 1.0.0

I tried to update to SBT 1.0.0 but there are some SBT plugins that don't seem to be updated and the update failed.

Return line numbers of Errors

@grahamegrieve suggested that it would be nice to return the line numbers where the errors appear during the validation process.

This feature would require that we don't lose the line numbers during RDF parsing, but AFAIK RDF Jena doesn't keep those line numbers so we would need something else.

Support for relative URIs

A lot of ShEx examples use relative URIs either in the RDF data, in the Schema or even in the shape maps as:

<x> <p> 1 .   # Turtle
<S> { <p> . }  # ShEx
<x>@<S>

One problem is how to resolve those relative URIs. Jena doesn't allow relative URIs inside, and relative URIs are made absolute when parsing. So parsing the previous RDF file would generate something like:

<file://whatever/x> <file://whatever/p> 1 .

A naïve use of ShEx parser that keeps the relative URIs wouldn't match the <p> against the absolute IRI generated by Jena.

To maintain relative URIs, current version of the RDF parser added a new step after parsing to convert each absulite URI generated by Jena back to a relative URI. The code can be seen in JenaUtils.relativizeModel.

Although this solution can work for small RDF data, it seems too costly.

ShEx.js approach is to add a fake and hidden absolute URI to each relative URI, and to hide it when presenting results.

By now, we keep this issue open because the current solution works, but its performance may be bad and it may give some problems when the relative URI collapses with the internal base URI used by Jena.

compile errors when trying to run example tests.

I'm trying to evaluate this shaclex library, but seem stuck in running the first example in the README file.

When running sbt "run -d examples/shacl/good1.ttl --engine ShaClex" I get following errors/warnings

[info] Loading project definition from C:\Users\jad\git\shaclex\project
Missing bintray credentials C:\Users\jad.bintray.credentials. Some bintray features depend on this.
....
[info] Compiling 6 Scala sources to C:\Users\jad\git\shaclex\modules\srdfJena\target\scala-2.11\classes...
[warn] Class java.util.function.Predicate not found - continuing with a stub.
[warn] Class java.util.function.Predicate not found - continuing with a stub.
[error] Class java.util.function.Predicate not found - continuing with a stub.
...
[warn] 8 warnings found
[error] one error found
[error] (srdfJena/compile:compileIncremental) Compilation failed
[error] Total time: 8 s, completed 16-Dec-2016 15:20:16

error.txt

Extra margin when showing 2 panels

It seems that the validate view which offers two panels (Data and Schema) makes them too thin.

I am not sure if the problem comes from the bootstrap grid or something about the screen size.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.