- From: Amit Krishna Joshi <joshi.35@wright.edu>
- Date: Wed, 2 Nov 2011 12:23:29 -0400
- To: "'Houghton,Andrew'" <houghtoa@oclc.org>, <semantic-web@w3.org>
Hi Andrew, You got what I was looking for. Following your example, I tried to get triples of the form "?c rdfs:isDefinedBy ?y" but both the following queries returned empty result when queried to multiple endpoints (including DBPedia and openLink endpoints). SELECT ?c WHERE { ?c a owl:Class. ?c rdfs:isDefinedBy ?y } limit 1 and SELECT * WHERE { ?s a ?o. ?o rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> } Thanks for your help. -----Original Message----- From: Houghton,Andrew [mailto:houghtoa@oclc.org] Sent: Wednesday, November 02, 2011 10:36 AM To: semantic-web@w3.org Subject: RE: Suggestion on Limiting query results to specific vocabulary/ontology/namespace > From: Martin Hepp [mailto:martin.hepp@ebusiness-unibw.org] > Sent: Wednesday, November 02, 2011 04:46 > To: Amit Krishna Joshi > Cc: semantic-web@w3.org > Subject: Re: Suggestion on Limiting query results to specific > vocabulary/ontology/namespace > > Hi Amit: > > A properly designed vocabulary will link the conceptual elements to > the IRI defining the ontology (or the ontology document; there is a > bit of a debate about that) using rdfs:isDefinedBy. > > So e.g. for > * http://purl.org/goodrelations/v1 > * http://purl.org/vso/ns > * http://www.productontology.org/# > > you could query for all classes from the three ontologies using > > SELECT DISTINCT(?c) WHERE > { ?c a owl:Class. > { > { ?c rdfs:isDefinedBy <http://purl.org/goodrelations/v1>} > UNION > { ?c rdfs:isDefinedBy <http://purl.org/vso/ns>} UNION { ?c > rdfs:isDefinedBy <http://www.productontology.org/#>} > } > } > LIMIT 1000 While this query gets you all the classes defined by specific vocabularies defined by their URI, it doesn't get you all the individuals defined by the classes in these vocabularies. I think, maybe I'm wrong, that Amit was trying to find the individuals described by classes in vocabularies that started with the URI pattern http://purl.org/vocab/. For example: @prefix bio: <http://purl.org/vocab/bio/0.1/> . @prefix frbr: <http://purl.org/vocab/frbr/core#> . @prefix : <> . :E1 a bio:Emigration ; bio:principal <http://dbpedia.org/resource/Albert_Einstein> ; bio:state <http://dbpedia.org/resource/United_States> . :B1 a frbr:Manifestation ; frbr:creator <http://dbpedia.org/resource/Albert_Einstein> . Amit wants to find both :E1 & :B1 since the individual is a class in a vocabulary that starts with the URI http://purl.org/vocab/. I believe that he is looking for something like (untested): WHERE { { ?s a ?o . ?o rdfs:isDefinedBy <http://purl.org/vocab/bio/0.1/> . ?s ?p ?o . } UNION { ?s a ?o . ?o rdfs:isDefinedBy <http:/purl.org/vocab/frbr/core#> . ?s ?p ?o . } } But the above SPARQL does assume that you know the specific vocabulary URIs you are looking and that vocabulary used rdfs:isDefinedBy rather than any vocabulary defined under a specific URI pattern. Andy.
Received on Wednesday, 2 November 2011 16:25:34 UTC