Din data kan representeras i RDF som data.n3
:
Härifrån vill du bara ha en SPARQL-fråga som hittar alla saker som är kopplade till en viss klass av en sökväg (inklusive den tomma sökvägen) till rdfs:subClassOf
egenskaper.
--------------| superklass |===============| :Win7 || :Windows || :Programvara || :Main |---------------------
Resultaten i den frågan är inte nödvändigtvis sorterade efter deras position i sökvägen (även om de råkar vara det i det här fallet). Om du behöver dem i ordning kan du göra detta (som är baserat på det här svaret om att beräkna positionen av element i en RDF-lista ):
Detta hittar varje förfader ?klass
av :Win7
samt varje ?mid
mellanliggande förfader. För förfader ?klass
, avståndet beräknas som antalet mellanliggande relationer mellan (count(?mid)
). Den ordnar resultaten baserat på det avståndet, så :Win7
är den närmaste förfadern, :Windows
efter det och så vidare.
Du kan till och med göra en del av den snygga formatering du vill ha så här:
-----------------------------------------| sökväg |====================================| "Win7--Windows--Software--Main" |-----------------------------------------
Det kan vara möjligt att göra lite snyggare strängbearbetning och få flerradssträngen. Du kanske tittar på den senare delen av det här svaret där det finns lite snygg formatering för en snyggt anpassad matris för idéer.