- From: Miika Alonen <miika.alonen@csc.fi>
- Date: Wed, 28 Sep 2016 10:09:13 +0300 (EEST)
- To: Simon Steyskal <simon.steyskal@wu.ac.at>
- Cc: "public-rdf-sha." <public-rdf-shapes@w3.org>
Hi, I tried this but it doesnt seem to work. Full example: ex:A rdf:type sh:Shape ; sh:property [ sh:class ex:Dataset ; sh:minCount 1 ; sh:path [ sh:inversePath ex:identifier ; ] ; ] ; sh:targetObjectsOf ex:related ; . ex:Dataset_1 rdf:type ex:Dataset ; ex:identifier "123" ; . ex:Foo rdf:type ex:SomethingElse ; ex:identifier "foo" ; . ex:Document_1 rdf:type ex:Document ; # This is the only triple that is reported to be invalid "Less than 1 values". ex:related "abc" ; . ex:Document_2 rdf:type ex:Document ; ex:related "123" ; . ex:Document_3 rdf:type ex:Document ; # This should be invalid ex:identifier "foo" ; . Tested this with TBC. - Miika ----- Original Message ----- From: "Simon Steyskal" <simon.steyskal@wu.ac.at> To: "Miika Alonen" <miika.alonen@csc.fi> Cc: "public-rdf-sha." <public-rdf-shapes@w3.org> Sent: Wednesday, 28 September, 2016 08:28:04 Subject: Re: Validating instances based on other instances Hi! ex:A a sh:Shape ; sh:targetObjectsOf ex:related ; sh:property [ sh:path [ sh:inversePath ex:identifier ] ; sh:minCount 1; sh:class ex:Dataset ; ] . should do the trick. HTH, simon --- DDipl.-Ing. Simon Steyskal Institute for Information Business, WU Vienna www: http://www.steyskal.info/ twitter: @simonsteys Am 2016-09-27 14:19, schrieb Miika Alonen: > It works - thanks. Not so trivial :) > > Is it also possible to include Class reference to this workaround? In > case the identifier predicate is used by multiple types, for example: > > ex:Dataset1 a ex:Dataset ; ex:identifier "1" . > > ex:Dataset2 a ex:SomethingElse ; ex:identifier "2" . > > ex:Document1 ex:related "2" . (INVALID) > > - Miika. > > ------------------------- > > FROM: "Dimitris Kontokostas" <kontokostas@informatik.uni-leipzig.de> > TO: "Miika Alonen" <miika.alonen@csc.fi> > CC: "public-rdf-sha." <public-rdf-shapes@w3.org> > SENT: Tuesday, 27 September, 2016 09:18:03 > SUBJECT: Re: Validating instances based on other instances > > A minor adjustment / property swap > ex:A a sh:Shape ; > sh:targetObjectsOf EX:RELATED ; > sh:property [ > sh:path [ sh:inversePath EX:IDENTIFIER ] > sh:minCount 1; > ] > > this shape would report > > "12.123/example.1234" -> valid > "20.234/undefined.2234" -> invalid > "null" -> invalid > > On Tue, Sep 27, 2016 at 8:42 AM, Miika Alonen <miika.alonen@csc.fi> > wrote: > >> I dont see how that would work. There can also be multiple Datasets >> and Documents are expected have references to non existing datasets >> eg: >> >> ex:Dataset1 ex:identifier "12.123/example.1234" . >> ex:Dataset2 ex:identifier "12.1234/example.2345" . >> ex:Dataset3 ex:identifier "12.123/example.4321" . >> >> ex:Document1 ex:related "12.123/example.1234" . >> ex:Document1 ex:related "20.234/undefined.2234" . >> ex:Document1 ex:related "null" . >> >> This again is example of "bad" data that could be cleaned - but >> there are many use cases where resources are "linked" using literal >> references. >> >> - Miika >> >> ------------------------- >> >> FROM: "Dimitris Kontokostas" <kontokostas@informatik.uni-leipzig.de> >> TO: "Miika Alonen" <miika.alonen@csc.fi> >> CC: "public-rdf-sha." <public-rdf-shapes@w3.org> >> SENT: Monday, 26 September, 2016 22:20:25 >> SUBJECT: Re: Validating instances based on other instances >> >> Hi Miika, >> >> a workaround could be something like >> >> ex:A a sh:Shape ; >> sh:targetObjectsOf ex:identifier ; >> sh:property [ >> sh:path [ sh:inversePath ex:related ] >> sh:minCount 1; >> ] >> >> On Mon, Sep 26, 2016 at 6:34 PM, Miika Alonen <miika.alonen@csc.fi> >> wrote: >> >>> Hi all, >>> >>> Question about how to validate instance literals (or irirefs) >>> based on other instance values. >>> >>> I have a use case where i have literals that should be same as >>> some other literals, for example: >>> >>> VALID DATA: >>> >>> ex:Dataset ex:identifier "doi:10.3972/example.0145.db" . >>> >>> ex:Document ex:related "doi:10.3972/example.0145.db" . >>> >>> INVALID DATA: >>> >>> ex:Dataset ex:identifier "doi:10.3972/example.0145.db" . >>> >>> ex:Document ex:related "doi:null" . >>> >>> Is there other ways to validate this than Sparql constraints. I >>> know i could do something like: >>> >>> <http://example.com/ns# [1]> sh:prefix "ex" . >>> >>> ex:DocumentShape >>> a sh:Shape ; >>> sh:targetClass ex:DocumentType ; >>> sh:sparql [ >>> sh:message "Values must be dataset identifiers" ; >>> sh:select """ >>> SELECT $this ?value >>> WHERE { >>> $this ex:related ?value . >>> ?identifier ex:identifier ?value . >>> } >>> """ ; >>> ] . >>> >>> ETC ... but sparql seems bit overkill and it is hard to write. Is >>> there or could there be other ways to produce these queries? For >>> example property paths where first resource would be the starting >>> point of the property path, eg: >>> >>> sh:DocumentShape >>> a sh:Shape . >>> sh:targetClass ex:DocumentType ; >>> sh:property [ >>> sh:predicate ex:related ; >>> sh:equals ( ex:DatasetType ex:identifier ); >>> ] . >>> >>> - Miika >> >> -- >> >> Dimitris Kontokostas >> Department of Computer Science, University of Leipzig & DBpedia >> Association >> Projects: http://dbpedia.org [2], http://rdfunit.aksw.org [3], >> http://aligned-project.eu [4] >> >> Homepage: http://aksw.org/DimitrisKontokostas [5] >> >> Research Group: AKSW/KILT http://aksw.org/Groups/KILT [6] > > -- > > Dimitris Kontokostas > Department of Computer Science, University of Leipzig & DBpedia > Association > Projects: http://dbpedia.org [2], http://rdfunit.aksw.org [3], > http://aligned-project.eu [4] > > Homepage: http://aksw.org/DimitrisKontokostas [5] > > Research Group: AKSW/KILT http://aksw.org/Groups/KILT [6] > > > > Links: > ------ > [1] http://example.com/ns# > [2] http://dbpedia.org > [3] http://rdfunit.aksw.org > [4] http://aligned-project.eu > [5] http://aksw.org/DimitrisKontokostas > [6] http://aksw.org/Groups/KILT
Received on Wednesday, 28 September 2016 07:09:46 UTC