Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save fkleedorfer/713c72f627f4c67c5b8d55151e84a109 to your computer and use it in GitHub Desktop.
Save fkleedorfer/713c72f627f4c67c5b8d55151e84a109 to your computer and use it in GitHub Desktop.
sample data for SPARQL-based extraction of triples based on a SHACL validation result (here: no errors -> no ValidationResults)
# This example is taken from http://shacl.org/playground and
# transformed to trig, putting shapes, data and validation results in separate graphs
#
# Test case: there is an additional node in the data - ex:Paris - that is not covered by the shape.
# There are no validation results
# Expected result:
# <http://example.org/ns#Bob> schema:address <http://example.org/ns#BobsAddress>
# <http://example.org/ns#Bob> schema:birthDate 1971-07-07
# <http://example.org/ns#Bob> schema:birthPlace <http://example.org/ns#Paris>
# <http://example.org/ns#Bob> schema:deathDate 1998-09-10
# <http://example.org/ns#Bob> schema:familyName Junior
# <http://example.org/ns#Bob> schema:givenName Robert
# <http://example.org/ns#Bob> rdf:type schema:Person
# <http://example.org/ns#BobsAddress> schema:postalCode 19404
# <http://example.org/ns#BobsAddress> schema:streetAddress 1600 Amphitheatre Pkway
@prefix dash: <http://datashapes.org/dash#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema: <http://schema.org/> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix ex: <http://example.org/ns#> .
ex:shapes {
schema:PersonShape
a sh:NodeShape ;
sh:targetClass schema:Person ;
sh:property [
sh:path schema:givenName ;
sh:datatype xsd:string ;
sh:name "given name" ;
] ;
sh:property [
sh:path schema:birthDate ;
sh:lessThan schema:deathDate ;
sh:maxCount 1 ;
] ;
sh:property [
sh:path schema:gender ;
sh:in ( "female" "male" ) ;
] ;
sh:property [
sh:path schema:address ;
sh:node schema:AddressShape ;
] .
schema:AddressShape
a sh:NodeShape ;
sh:closed true ;
sh:property [
sh:path schema:streetAddress ;
sh:datatype xsd:string ;
] ;
sh:property [
sh:path schema:postalCode ;
sh:or ( [ sh:datatype xsd:string ] [ sh:datatype xsd:integer ] ) ;
sh:minInclusive 10000 ;
sh:maxInclusive 99999 ;
] .
}
ex:data {
ex:Bob
a schema:Person ;
schema:givenName "Robert" ;
schema:familyName "Junior" ;
schema:birthDate "1971-07-07"^^xsd:date ;
schema:deathDate "1998-09-10"^^xsd:date ;
schema:birthPlace ex:Paris ;
schema:address ex:BobsAddress .
ex:BobsAddress
schema:streetAddress "1600 Amphitheatre Pkway" ;
schema:postalCode 19404 .
ex:Paris a schema:Place;
schema:name "Paris"@en;
schema:name "Paris"@fr;
schema:name "Paris"@de.
}
ex:result {
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment