Sparql skos: wider

I am making a SPARQL query in DBpediaset, but I am having some problems (due to the lack of detailed knowledge of SPARQL) with the query limitation:

First I “get” all the music performers:

?person rdf:type <http://dbpedia.org/ontology/MusicalArtist> .

But I want to limit this to a broader category Category:American_musicians(through movement skos:broader?): How?

* = While the question is specific, I repeatedly came across this task when I wanted to run sparql queries.

+3
source share
4 answers

This can be simplified by using property paths in SPARQL 1.1.

SELECT DISTINCT ( ?person )
WHERE
{
  ?person rdf:type dbpedia-owl:MusicalArtist .
  ?person skos:subject  skos:broader* category:American_musicians  .
}

It displays all the ancestors that can be achieved using the property skos:broader.

+4
source

, :

SELECT DISTINCT ( ?person )
WHERE
{
  ?person rdf:type dbpedia-owl:MusicalArtist .
  {
    ?person skos:subject [ skos:broader category:American_musicians ] .
  } UNION {
    ?person skos:subject [ skos:broader [ skos:broader category:American_musicians ] ] .
  } UNION {
    ?person skos:subject [ skos:broader [ skos:broader [ skos:broader category:American_musicians ] ] ] .
  } UNION {
    ?person skos:subject [ skos:broader [ skos:broader [ skos:broader [ skos:broader category:American_musicians ] ] ] ] .
  } UNION {
    ?person skos:subject [ skos:broader [ skos:broader [ skos:broader [ skos:broader [ skos:broader category:American_musicians ] ] ] ] ] .
  } UNION {
    ?person skos:subject [ skos:broader [ skos:broader [ skos:broader [ skos:broader [ skos:broader [ skos:broader category:American_musicians ] ] ] ] ] ] .
  } UNION {
    ?person skos:subject [ skos:broader [ skos:broader [ skos:broader [ skos:broader [ skos:broader [ skos:broader [ skos:broader category:American_musicians ] ] ] ] ] ] ] .
  }
}

, , SELECT DISTINCT SELECT COUNT DISTINCT , .

+1

, 3 , .

SELECT * { ?person a dbo:MusicalArtist . filter exists {?person dct:subject/skos:broader* dbc:American_musicians} }

  • : dbo dbpedia-owl, dbc category. DBpedia
  • skos:subject ( ) dct:subject
  • , /
  • skos:broader , skos:broaderTransitive is. DBpedia ( )
  • DISTINCT, FILTER EXISTS, . FILTER , , , (DISTINCT), .
+1

neo4j. SPARQL "Category: American_musicians" .

Eg. java - :

String startCategory = "<http://dbpedia.org/resource/Category:American_musicians>";
iterateTraversalFunction(startCategory);

:

public void iterateTraversalFunction(String startCategory){
     ArrayList<String> artistsURI = // SPARQL query ?person skos:subject startCategory . ?person rdf:type MusicalArtist 

    ArrayList<String> subCategoriesURI = // SPARQL query ?subCat skos startCategory
    // Repeat recursively
   for(String subCatURI: subCategoriesURI){
       iterateTraversalFunction(subCatURI);
   }
}

, , -

0

Source: https://habr.com/ru/post/1755767/


All Articles