Jaillissant commentaires de @ AKSW ...
Une option, sans limite sur la longueur de skos:broader
longueurs de trajet, qui dépassent les limites de consommation des ressources sur le point final DBpedia public, mais qui pourrait être exécuté sur une instance privée (in the cloud ou ailleurs) où vous pourrez vous détendre ces limites -
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT DISTINCT ?cat
WHERE
{ <http://dbpedia.org/resource/Apple_Inc.>
dct:subject/skos:broader* ?cat .
dbr:IPhone
dct:subject/skos:broader* ?cat . }
l'option succincte, en utilisant la syntaxe spécifique à Virtuoso (basé sur un avant-projet de SPARQL Chemins de propriété) pour limiter la longueur du chemin (ici nécessitant au moins 1 skos:broader
et permettant jusqu'à 3) -
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT DISTINCT ?cat
WHERE
{ ?cat
^skos:broader{1,3}/^dct:subject
<http://dbpedia.org/resource/Apple_Inc.> ,
dbr:IPhone
}
Une autre option succincte, cette fois en utilisant la norme SPARQL Property Paths syntax pour limiter la longueur du chemin -
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT DISTINCT ?cat
WHERE
{ ?cat
^skos:broader/^skos:broader?/^skos:broader?/^dct:subject
<http://dbpedia.org/resource/Apple_Inc.> ,
dbr:IPhone
}
Vous pouvez également utiliser 2 déclarations avec les chemins non retournées dans les clauses WHERE, d'abord en Virtuoso- forme spécifique -
{ <http://dbpedia.org/resource/Apple_Inc.>
dct:subject/skos:broader{1,3} ?cat .
dbr:IPhone
dct:subject/skos:broader{1,3} ?cat .
}
- puis dans la norme SPARQL -
{ <http://dbpedia.org/resource/Apple_Inc.>
dct:subject/skos:broader/skos:broader?/skos:broader? ?cat .
dbr:IPhone
dct:subject/skos:broader/skos:broader?/skos:broader? ?cat .
}
'select distinct? Cat { Dct: sujet/skos: plus large *? Cat. dbr: IPhone dct: sujet/skos: plus large *? Cat. } 'mais vous risquez d'avoir un timeout car cela peut devenir très cher –
AKSW
Dans Virtuoso, vous pouvez également essayer d'ajouter une restriction sur la longueur du chemin:' select distinct? Cat { dct: sujet/skos: plus large {1,3}? cat. dbr: IPhone dct: sujet/skos: plus large {1,3}? Cat. } ' –
AKSW
Une version plus compacte:' select distinct? Cat { ? Cat^skos: plus large {1,3}/^ dct: sujet, Dbr: IPhone } ' –
AKSW