Introduction au web sémantique avec RDF.Net

Navigation : Index

DEPRECIE : Ce notebook monolithique a ete remplace par la serie SemanticWeb (13 notebooks, ~10h).

La nouvelle serie couvre l’ensemble du spectre du Web sémantique : - Partie 1 (SW-1 a SW-4) : Fondations RDF avec dotNetRDF (.NET C#) - Partie 2 (SW-5 a SW-7) : Données Liees, RDFS, OWL (.NET C#) - Partie 3 (SW-8 a SW-11) : rdflib, SHACL, JSON-LD, RDF 1.2 (Python) - Partie 4 (SW-12 a SW-13) : Graphes de Connaissances, GraphRAG (Python)

Ce notebook est conserve a titre de reference. Pour un apprentissage structure, utilisez la nouvelle serie.

A. Présentation des technologies utilisées

1. RDF

Le Resource Description Framework, plus connu sous son acronyme RDF, est un standard du World Wide Web Consortium (W3C) qui offre une méthode universelle pour décrire ou modéliser l’information qui est implémentée sur le Web, ou ailleurs.

RDF repose sur la notion de “triple” pour représenter les données. Un triple est une déclaration composée de trois parties : un sujet, un prédicat et un objet. Par exemple, dans la déclaration “Paris est la capitale de la France”, “Paris” est le sujet, “est la capitale de” est le prédicat, et “France” est l’objet.

En utilisant cette structure simple, RDF peut modéliser des informations complexes de manière structurée et interconnectée. Le sujet d’un triple peut être n’importe quelle ressource (par exemple, une personne, un lieu, un événement), le prédicat est une relation ou une propriété de la ressource, et l’objet est soit une autre ressource, soit une valeur (par exemple, une chaîne de caractères, un nombre).

En outre, RDF est le fondement du web sémantique, une vision du web où les informations sont non seulement disponibles pour les humains à lire, mais aussi pour les machines à comprendre et à traiter.


2. RDF.Net

RDF.Net est une bibliothèque C# pour travailler avec le format de données RDF (Resource Description Framework), qui est un standard du World Wide Web Consortium (W3C) pour le web sémantique. Il permet aux développeurs de manipuler les données RDF, de créer et d’interroger des graphes RDF, et de serialiser ces graphes dans différents formats de syntaxe RDF.

La bibliothèque RDF.Net est basée sur plusieurs concepts clés qui définissent son fonctionnement et sa structure. Les classes principales se trouvent dans l’espace de noms VDS.RDF et sont basées sur des interfaces ou des classes abstraites pour garantir une extensibilité maximale. Parmi ces interfaces, nous retrouvons :

  • INode : représentant un nœud dans un graphe RDF, qui représente la valeur d’un terme RDF.
  • IGraph : l’interface pour les graphes. Un document RDF forme un graphe au sens mathématique. Nous représentons donc des ensembles de Triples comme des graphes.
  • ITripleStore : Un Triple Store est une collection de un ou plusieurs graphes.

a) Graphes

Un document RDF peut être considéré comme formant un graphe mathématique. Nous représentons donc des ensembles de triples RDF comme des graphes. Tous les graphes de la bibliothèque sont des implémentations de l’interface IGraph et dérivent généralement de la classe abstraite BaseGraph. Une implémentation IGraph est une représentation en mémoire d’un document RDF.


b) Noeuds

Un INode représente un nœud dans un graphe RDF, ce qui est parfois appelé un terme RDF. Il existe plusieurs types de nœuds, chacun représenté par une interface spécialisée, comme IBlankNode pour un nœud anonyme, ILiteralNode pour un nœud avec une valeur textuelle, ou encore IUriNode pour un nœud URI.


c) Triples

Un Triple est l’unité de base des données RDF, les nœuds à eux seuls n’ont pas de signification, mais utilisés dans un Triple, ils forment une déclaration qui exprime une connaissance. Un Triple est formé d’un Sujet, d’un Prédicat et d’un Objet. Il est interprété comme déclarant qu’un certain Sujet est lié à un certain Objet par une relation spécifiée par le Prédicat.


d) Triple Store

Un Triple Store représente une collection de Graphes et est utilisé pour travailler avec de grandes quantités de RDF. Les Triple Stores sont conçus pour être moins tangibles que les Graphes en termes d’interface et d’implémentations.


3. DBpedia

DBpedia est un projet qui extrait des données structurées à partir de Wikipedia et les rend disponibles sur le Web sous forme de données RDF. DBpedia permet aux utilisateurs de requêter les données de Wikipedia comme une base de données sémantique, fournissant une source précieuse de connaissances pour les applications du Web sémantique.

4. Trinity RDF

Trinity RDF est un wrapper pour RDF.Net qui utilise Entity Framework, une technologie de Microsoft pour accéder à des bases de données relationnelles en utilisant des modèles d’objet .NET. Trinity RDF offre une abstraction de haut niveau pour manipuler les données RDF, rendant l’utilisation de RDF plus facile et plus intuitive pour les développeurs .NET.

5. Jena Fuseki

Jena Fuseki est un serveur de triplestore open-source qui permet de stocker et de requêter des données RDF. Il prend en charge le langage de requête SPARQL et offre une interface utilisateur Web pour gérer les données RDF.


B. Introduction à RDF et Sparql avec RDF.Net

1. Hello World avec RDF.Net

Construisons une application simple en utilisant RDF.Net.

a) Ajout des packages nécessaires

// Pour installer RDF.Net
#r "nuget: dotNetRDF"
Installed Packages
  • dotNetRDF, 3.5.1

Objectifs de cette section

Dans cette première demonstration, nous allons : - Installer la bibliotheque dotNetRDF - Créer notre premier graphe RDF en memoire - Définir des triplets (sujet-predicat-objet) - Serialiser le graphe dans différents formats (NTriples, RDF/XML)

Note technique : dotNetRDF utilise l’interface IGraph pour representer un graphe RDF, qui est essentiellement une collection de triplets.

b) Création d’un graphe

La première chose que nous voulons faire est de créer un graphe comme ceci :

using VDS.RDF;

IGraph g = new Graph();
Console.WriteLine($"Graphe RDF crée : {g.GetHashCode()}, {g.Triples.Count} triplets");
Graphe RDF crée : 19743172, 0 triplets

Interpretation

A ce stade, nous avons créé un graphe vide. Un graphe RDF est une structure de données qui contiendra des triplets.

Propriete Valeur actuelle
Nombre de triplets 0
URI de base null (par defaut)
Espaces de noms Predefinis (rdf, rdfs, xsd)

Le graphe est pret a recevoir des triplets que nous allons ajouter dans la cellule suivante.

Nous utilisons ici la classe Graph qui est l’implémentation la plus couramment utilisée de l’interface IGraph.

Ensuite, nous voulons créer des nœuds et affirmer des triplets dans le graphe, comme ceci :

using VDS.RDF;
using System;

IGraph g = new Graph();

IUriNode dotNetRDF = g.CreateUriNode(UriFactory.Create("http://www.dotnetrdf.org"));
IUriNode says = g.CreateUriNode(UriFactory.Create("http://example.org/says"));
ILiteralNode helloWorld = g.CreateLiteralNode("Hello World");
ILiteralNode bonjourMonde = g.CreateLiteralNode("Bonjour tout le Monde", "fr");

g.Assert(new Triple(dotNetRDF, says, helloWorld));
g.Assert(new Triple(dotNetRDF, says, bonjourMonde));
Console.WriteLine($"Noeuds créés : dotNetRDF={dotNetRDF}, says={says}");
Console.WriteLine($"Littéraux : helloWorld={helloWorld}, bonjourMonde={bonjourMonde}");
Console.WriteLine($"Triplets ajoutés au graphe : {g.Triples.Count}");
Noeuds créés : dotNetRDF=http://www.dotnetrdf.org/, says=http://example.org/says
Littéraux : helloWorld=Hello World^^http://www.w3.org/2001/XMLSchema#string, bonjourMonde=Bonjour tout le Monde@fr
Triplets ajoutés au graphe : 2

Explication des types de noeuds

Le code précédent illustre les trois types de noeuds RDF :

Type de noeud Classe Exemple Usage
URI Node IUriNode http://www.dotnetrdf.org Identifiant de ressource (sujet/predicat)
Literal Node ILiteralNode "Hello World" Valeur textuelle ou numérique (objet)
Literal avec langue ILiteralNode "Bonjour"@fr Valeur avec indication de langue

Structure des triplets crees :

<http://www.dotnetrdf.org> <http://example.org/says> "Hello World"
<http://www.dotnetrdf.org> <http://example.org/says> "Bonjour tout le Monde"@fr

Point cle : La méthode g.Assert() ajoute un triplet au graphe. Chaque triplet exprime une relation : “dotNetRDF dit Hello World”.

Comme indiqué dans la Présentation de la bibliothèque, nous utilisons la méthode UriFactory.Create() pour créer des URIs, car cela internera les URIs pour nous, ce qui réduit à la fois l’utilisation de la mémoire et accélère les comparaisons d’égalité.

Une fois que nous avons fait cela, nous pouvons afficher les triplets dans la console :

using VDS.RDF;
using System;

foreach (Triple t in g.Triples)
{
    Console.WriteLine(t.ToString());
}
Console.ReadLine();
http://www.dotnetrdf.org/ , http://example.org/says , Hello World^^http://www.w3.org/2001/XMLSchema#string
http://www.dotnetrdf.org/ , http://example.org/says , Bonjour tout le Monde@fr

Interpretation de la sortie

La sortie affichée utilise une representation simplifiee des triplets, utile pour le debogage mais pas une syntaxe RDF standard.

Format attendu (approximatif) :

[http://www.dotnetrdf.org , http://example.org/says , Hello World]
[http://www.dotnetrdf.org , http://example.org/says , Bonjour tout le Monde@fr]

Attention : Cette representation n’est pas valide selon les standards RDF (NTriples, Turtle, RDF/XML). Pour obtenir une serialisation conforme, nous devons utiliser un Writer specialise.

Ceux d’entre vous qui connaissent RDF remarqueront que ce qui précède n’est pas une syntaxe RDF valide - il s’agit simplement d’une représentation ultra simple des triplets et est principalement destinée au débogage. Si nous voulons réellement générer une syntaxe RDF, nous devons utiliser l’une des classes de l’espace de noms VDS.RDF.Writing. Tout d’abord, nous allons générer la sortie ci-dessus au format NTriples :

using StringWriter = System.IO.StringWriter;

StringWriter sw = new StringWriter();
var ntwriter = new VDS.RDF.Writing.NTriplesWriter();
ntwriter.Save(g, sw);

string ntriples = sw.ToString();
ntriples.Display();
<http://www.dotnetrdf.org> <http://example.org/says> "Hello World"^^<http://www.w3.org/2001/XMLSchema#string> .
<http://www.dotnetrdf.org> <http://example.org/says> "Bonjour tout le Monde"@fr .

Interpretation du format NTriples

NTriples est le format RDF le plus simple et le plus verbeux. Chaque ligne represente un triplet complet avec URIs et literals explicites.

Format de sortie attendu :

<http://www.dotnetrdf.org> <http://example.org/says> "Hello World" .
<http://www.dotnetrdf.org> <http://example.org/says> "Bonjour tout le Monde"@fr .

Caractéristiques de NTriples : - Une ligne = un triplet - URIs toujours entre chevrons < > - Literals entre guillemets " " - Chaque triplet se termine par un point . - Pas d’abreviations ni de prefixes

Avantage : Format simple, facile a parser, ideal pour l’echange de données volumineuses.

Si nous voulons enregistrer le graphe dans une autre syntaxe RDF, nous pouvons le faire également, par exemple :

using VDS.RDF.Writing;
using System.IO;

StringWriter sw = new StringWriter();
RdfXmlWriter rdfxmlwriter = new RdfXmlWriter();
rdfxmlwriter.Save(g, sw);

string rdfxml = sw.ToString();
rdfxml.Display();
<?xml version="1.0" encoding="utf-16"?>
<!DOCTYPE rdf:RDF [
    <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
    <!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
    <!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>
]>
<rdf:RDF xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about="http://www.dotnetrdf.org/">
    <ns0:says xml:lang="fr" xmlns:ns0="http://example.org/">Bonjour tout le Monde</ns0:says>
    <ns1:says rdf:datatype="&xsd;string" xmlns:ns1="http://example.org/">Hello World</ns1:says>
  </rdf:Description>
</rdf:RDF>

Comparaison NTriples vs RDF/XML

Le format RDF/XML est plus structure et utilise des espaces de noms pour reduire la verbosity.

Caractéristique NTriples RDF/XML
Lisibilite humaine Moyenne Faible (XML verbose)
Compacite Faible Moyenne (avec prefixes)
Parsing Très simple Plus complexe
Espaces de noms Non Oui (xmlns:rdf, xmlns:ns0)
Usage Dump de données Integration XML

Espaces de noms generes automatiquement : - rdf: - Resource Description Framework - rdfs: - RDF Schema - xsd: - XML Schema Datatypes - ns0:, ns1: - Prefixes temporaires generes par le writer

Point cle : RDF.Net genere automatiquement des prefixes nsX pour les URIs non declarees dans les espaces de noms.

Remarquez que le RDF/XML Writer connaissait déjà les espaces de noms RDF, RDFS et XML Schema. Ces espaces de noms sont fournis par défaut pour la plupart des implémentations de IGraph. Le Writer génère également des espaces de noms temporaires de la forme nsX pour les URIs qu’il ne peut pas représenter autrement dans RDF/XML.

Conclusion : Premier programme RDF

Nous venons de créer notre premier programme RDF complet qui :

Étape Accomplissement
1. Creation Graphe vide initialise
2. Peuplement 2 triplets ajoutes (même sujet, même predicat, objets différents)
3. Serialisation Exportation en NTriples et RDF/XML

Concepts cles maitrises : - Interface IGraph pour la manipulation de graphes - Types de noeuds : IUriNode, ILiteralNode - Méthode Assert() pour ajouter des triplets - Writers pour la serialisation (NTriplesWriter, RdfXmlWriter)

Dans la section suivante, nous allons apprendre a lire du RDF depuis différentes sources.

2. Lecture de RDF avec RDF.Net

L’une des principales choses que vous voudrez faire lorsque vous travaillez avec RDF est de pouvoir le lire à partir de fichiers, d’URI et d’autres sources afin de pouvoir l’utiliser avec dotNetRDF. Toutes les classes liées à cela sont contenues dans l’espace de noms VDS.RDF.Parsing. Ainsi, lorsque vous voulez lire du RDF, vous aurez besoin des déclarations suivantes au début de votre fichier de code :

using VDS.RDF;
using VDS.RDF.Parsing;
Console.WriteLine("Imports OK : VDS.RDF, VDS.RDF.Parsing");
Imports OK : VDS.RDF, VDS.RDF.Parsing

Ce que nous allons apprendre

Dans cette section, nous decouvrirons comment charger du RDF depuis diverses sources :

  1. Fichiers locaux - Lecture depuis le disque (Turtle, RDF/XML, etc.)
  2. URIs distantes - Chargement depuis le web (negociation de contenu)
  3. Chaînes de caractères - Parsing direct de fragments RDF
  4. Flux - Lecture depuis StreamReader ou TextReader

Point important : dotNetRDF supporte 9+ formats RDF différents, avec detection automatique du format dans certains cas.

dotNetRDF prend actuellement en charge la lecture de fichiers RDF dans toutes les sérialisations RDF suivantes : - NTriples - Turtle - Notation 3 - RDF/XML - RDF/JSON (spécification Talis) - RDFa 1.0 (prise en charge limitée de RDFa 1.1) - TriG (Turtle avec des graphes nommés) - TriX (Graphes nommés en XML) - NQuads (NTriples avec contexte) - JSON-LD (1.0 et 1.1)

Plusieurs de ces sérialisations ont plusieurs variantes avec des règles de syntaxe différentes. Pour un résumé complet des formats pris en charge pour l’écriture avec dotNetRDF, consultez les formats pris en charge par dotNetRDF.


a) Parsers de graphe

Les parsers de graphe implémentent l’interface IRdfReader qui définit une méthode Load(...) prenant un objet IGraph ou IRdfHandler ainsi qu’un TextReader, StreamReader ou une chaîne de caractères. L’utilisation de base est la suivante :

using VDS.RDF.Parsing;

IGraph g = new Graph();
IGraph h = new Graph();

TurtleParser ttlparser = new TurtleParser();
ttlparser.Load(g, "Example.ttl");

// Chargement à partir d un StreamReader
ttlparser.Load(h, new StreamReader("Example.ttl"));
Console.WriteLine($"Turtle parsé : g={g.Triples.Count} triplets, h={h.Triples.Count} triplets");
Turtle parsé : g=4 triplets, h=4 triplets

Explication du code de lecture

Le code précédent illustre deux approches de lecture :

Approche Classe Reutilisable Usage
Parser spécifique TurtleParser, RdfXmlParser Oui Format connu a l’avance
Detection automatique FileLoader N/A Format inconnu

Avantages des parsers reutilisables : - Une seule instance peut charger plusieurs fichiers - Configuration possible (validation stricte, gestion d’erreurs) - Performance optimisee pour le parsing de masse

Bonne pratique : Utiliser un parser spécifique si le format est connu, sinon utiliser FileLoader pour la detection automatique.

Dans l’exemple ci-dessus, les parsers sont réutilisables. Une fois instanciés, vous pouvez les utiliser autant de fois que nécessaire. Une autre fonctionnalité utile est que les parsers sont conçus pour être thread-safe, de sorte que plusieurs threads peuvent utiliser la même instance d’un parser pour analyser simultanément différentes entrées sans interférer les uns avec les autres. Les parsers sont généralement capables de générer des exceptions de type RdfParseException et RdfException, il est donc recommandé d’utiliser des blocs try/catch autour de l’utilisation des parsers.


b) Lecture de RDF à partir de sources courantes

Il n’est souvent pas nécessaire d’invoquer directement un parser, car vous pouvez utiliser une classe d’aide pour obtenir le même effet sans avoir à créer le parser approprié vous-même. Les sous-sections suivantes détaillent les classes d’aide disponibles pour la lecture de RDF. Notez que plusieurs des sources détaillées ici disposent également de méthodes d’extension d’aide qui permettent de simplifier davantage les exemples de code présentés ici.

(1) Lecture de RDF à partir de fichiers

Si vous souhaitez simplement lire rapidement du RDF à partir d’un fichier sans avoir à décider du parser nécessaire, vous pouvez utiliser la classe statique FileLoader qui fournit une méthode Load(IGraph g, String file) :

IGraph g = new Graph();
FileLoader.Load(g, "somefile.rdf");

Le FileLoader essaiera de sélectionner le parser correct en fonction de l’extension du fichier. S’il ne parvient pas à déterminer le format à l’aide de l’extension du fichier, il utilisera la classe StringParser qui tente de détecter le format à l’aide de heuristiques simples. Vous pouvez également forcer le loader à utiliser un parser spécifique en utilisant la forme à 3 arguments Load(IGraph g, String file, IRdfReader parser).

(2) Lecture de RDF à partir d’URIs

Il est souvent nécessaire de lire du RDF à partir d’une URI. Pour ce faire, nous fournissons la classe Loader qui offre une méthode LoadGraph(IGraph g, Uri u).

using VDS.RDF.Parsing;

// Chargement de donnees depuis DBpedia
// Note: data.dbpedia.org permet la negociation de contenu RDF
IGraph g = new Graph();
Loader loader = new Loader();

try
{
    // Utiliser data.dbpedia.org qui supporte la negociation de contenu RDF
    var uri = new Uri("http://data.dbpedia.org/resource/Barack_Obama");
    loader.LoadGraph(g, uri);
    Console.WriteLine($"Graphe charge avec succes: {g.Triples.Count} triples");
}
catch (Exception ex)
{
    // Fallback: essayer de charger un fichier RDF local ou un exemple simple
    Console.WriteLine($"Note: Impossible de charger depuis DBpedia ({ex.Message})");
    Console.WriteLine("Creation d'un graphe d'exemple local...");
    
    // Creer un graphe d'exemple simple
    g.BaseUri = new Uri("http://example.org/");
    IUriNode subject = g.CreateUriNode(new Uri("http://example.org/Barack_Obama"));
    IUriNode predicate = g.CreateUriNode(new Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"));
    IUriNode obj = g.CreateUriNode(new Uri("http://dbpedia.org/ontology/Person"));
    g.Assert(new Triple(subject, predicate, obj));
    
    predicate = g.CreateUriNode(new Uri("http://xmlns.com/foaf/0.1/name"));
    ILiteralNode name = g.CreateLiteralNode("Barack Obama");
    g.Assert(new Triple(subject, predicate, name));
    
    Console.WriteLine($"Graphe d'exemple cree avec {g.Triples.Count} triples");
}

Console.WriteLine("\nApercu des premiers triples:");
foreach (Triple t in g.Triples.Take(5))
{
    Console.WriteLine(t.ToString());
}
Note: Impossible de charger depuis DBpedia (One or more errors occurred. (Hôte inconnu. (data.dbpedia.org:80)))
Creation d'un graphe d'exemple local...
Graphe d'exemple cree avec 2 triples

Apercu des premiers triples:
http://example.org/Barack_Obama , http://www.w3.org/1999/02/22-rdf-syntax-ns#type , http://dbpedia.org/ontology/Person
http://example.org/Barack_Obama , http://xmlns.com/foaf/0.1/name , Barack Obama^^http://www.w3.org/2001/XMLSchema#string

Precautions avec le chargement distant

Le code précédent charge des données depuis DBpedia (Wikipedia sémantique). Points d’attention :

Risques potentiels : - Le service DBpedia peut etre indisponible (erreur 503, timeout) - Les redirections HTTP peuvent compliquer le chargement - La negociation de contenu RDF depend des headers HTTP

Gestion recommandee :

try {
    var loader = new Loader(httpClient);
    loader.LoadGraph(g, new Uri("http://dbpedia.org/resource/..."));
} catch (Exception ex) {
    Console.WriteLine($"Erreur de chargement: {ex.Message}");
}

Note : Le code inclus utilise un try/catch pour gerer les erreurs DBpedia (service parfois instable).

La classe Loader utilise une instance HttpClient pour effectuer des requêtes web et propose un constructeur qui vous permet de passer l’instance HttpClient configurée à utiliser. La méthode LoadGraph sélectionnera automatiquement le parser approprié en fonction de l’en-tête Content-Type de la réponse HTTP. En plus des erreurs normalement générées par les parsers, le Loader peut également générer une RdfException si l’URI d’entrée n’est pas valide ou une HttpRequestException si une erreur se produit lors de la récupération de l’URI via HTTP. Vous pouvez également forcer le loader à utiliser un parser spécifique en utilisant la forme à 3 arguments LoadGraph(IGraph g, Uri u, IRdfReader parser). La classe propose également des variantes asynchrones de ces méthodes.

Par défaut, à la fois le HttpClient .NET et la classe Loader de dotNetRDF prennent en charge le suivi des redirections HTTP. Cependant, en raison de certaines restrictions et différences interplates-formes concernant le suivi automatique des redirections par le HttpClient .NET, la classe Loader implémente sa propre prise en charge des redirections en plus des redirections suivies par le HttpClient. Cette gestion supplémentaire des redirections peut être désactivée en définissant FollowRedirects sur false. Pour désactiver complètement toutes les redirections automatiques, vous devez également passer une instance HttpClient configurée pour ne pas suivre les redirections, comme suit :

using System.Net.Http;
// Création d un HttpClient configuré pour ne pas suivre les redirections
HttpClient noRedirectClient = new HttpClient(new HttpClientHandler() { AllowAutoRedirect = false });

// Création d un Loader également configuré pour ne pas suivre les redirections
Loader loader = new Loader(noRedirectClient) { FollowRedirects = false };
Console.WriteLine("HttpClient et Loader configurés (pas de redirection automatique)");
HttpClient et Loader configurés (pas de redirection automatique)

Attention : avant dotNetRDF 3.0, cette fonctionnalité était fournie par la classe UriLoader statique, qui était implémentée à l’aide de l’ancienne API System.Net.HttpWebRequest. Cette classe a été conservée dans la version 3.0, mais est maintenant considérée comme obsolète et le code doit être mis à jour pour utiliser la classe Loader à la place.

(3) Lecture de RDF à partir de ressources intégrées

Si vous choisissez d’intégrer des fichiers RDF dans vos assemblys, vous pouvez les lire en utilisant la classe statique EmbeddedResourceLoader, qui fournit une méthode Load(IGraph g, String resource).

Graph g = new Graph();
EmbeddedResourceLoader.Load(g, "Your.Namespace.EmbeddedFile.n3, YourAssembly");

Notez que le nom de ressource doit être un nom qualifié d’assembly. Comme pour les autres loaders, cela tente de sélectionner le parser correct en fonction du nom de ressource. Vous pouvez également forcer le loader à utiliser un parser

spécifique en utilisant la forme à 3 arguments Load(IGraph g, String resourceName, IRdfReader parser).

(4) Lecture de RDF à partir de chaînes de caractères

Il peut arriver que vous ayez un fragment de RDF dans une chaîne de caractères que vous souhaitez analyser. Pour cela, vous pouvez utiliser la classe statique StringParser et sa méthode Parse(IGraph g, String data).

Graph g = new Graph();
StringParser.Parse(g, "<http://example.org/a> <http://example.org/b> <http://example.org/c>.");
g.Display();
VDS.RDF.Graph
UriFactory
VDS.RDF.CachingUriFactory
InternUris
True
Triples
[ http://example.org/a , http://example.org/b , http://example.org/c ]
ObjectNodes
[ http://example.org/c ]
Count
1
IsReadOnly
True
(values)
index value
0
http://example.org/c
Uri
http://example.org/c
AbsolutePath
/c
AbsoluteUri
http://example.org/c
LocalPath
/c
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/c
Segments
[ /, c ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
Scheme
http
OriginalString
http://example.org/c
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
PredicateNodes
[ http://example.org/b ]
Count
1
IsReadOnly
True
(values)
index value
0
http://example.org/b
Uri
http://example.org/b
AbsolutePath
/b
AbsoluteUri
http://example.org/b
LocalPath
/b
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/b
Segments
[ /, b ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
Scheme
http
OriginalString
http://example.org/b
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
SubjectNodes
[ http://example.org/a ]
Count
1
IsReadOnly
True
(values)
index value
0
http://example.org/a
Uri
http://example.org/a
AbsolutePath
/a
AbsoluteUri
http://example.org/a
LocalPath
/a
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/a
Segments
[ /, a ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
Scheme
http
OriginalString
http://example.org/a
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
QuotedObjectNodes
[ ]
Count
0
IsReadOnly
True
(values) (empty)
QuotedPredicateNodes
[ ]
Count
0
IsReadOnly
True
(values) (empty)
QuotedSubjectNodes
[ ]
Count
0
IsReadOnly
True
(values) (empty)
Count
1
QuotedCount
0
Asserted
index value
0
http://example.org/a , http://example.org/b , http://example.org/c
Subject
http://example.org/a
Uri
http://example.org/a
AbsolutePath /a
AbsoluteUri http://example.org/a
LocalPath /a
Authority example.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /a
Segments [ /, a ]
IsUnc False
Host example.org
Port 80
Query
Fragment
Scheme http
OriginalString http://example.org/a
DnsSafeHost example.org
IdnHost example.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Predicate
http://example.org/b
Uri
http://example.org/b
AbsolutePath /b
AbsoluteUri http://example.org/b
LocalPath /b
Authority example.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /b
Segments [ /, b ]
IsUnc False
Host example.org
Port 80
Query
Fragment
Scheme http
OriginalString http://example.org/b
DnsSafeHost example.org
IdnHost example.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
http://example.org/c
Uri
http://example.org/c
AbsolutePath /c
AbsoluteUri http://example.org/c
LocalPath /c
Authority example.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /c
Segments [ /, c ]
IsUnc False
Host example.org
Port 80
Query
Fragment
Scheme http
OriginalString http://example.org/c
DnsSafeHost example.org
IdnHost example.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Context
<null>
Nodes
index value
0
http://example.org/a
Uri http://example.org/a
EffectiveType
NumericType NaN
NodeType Uri
1
http://example.org/b
Uri http://example.org/b
EffectiveType
NumericType NaN
NodeType Uri
2
http://example.org/c
Uri http://example.org/c
EffectiveType
NumericType NaN
NodeType Uri
IsGroundTriple
True
Quoted (empty)
(values)
index value
0
http://example.org/a , http://example.org/b , http://example.org/c
Subject
http://example.org/a
Uri
http://example.org/a
AbsolutePath
/a
AbsoluteUri
http://example.org/a
LocalPath
/a
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/a
Segments
[ /, a ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
Scheme
http
OriginalString
http://example.org/a
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Predicate
http://example.org/b
Uri
http://example.org/b
AbsolutePath
/b
AbsoluteUri
http://example.org/b
LocalPath
/b
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/b
Segments
[ /, b ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
Scheme
http
OriginalString
http://example.org/b
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
http://example.org/c
Uri
http://example.org/c
AbsolutePath
/c
AbsoluteUri
http://example.org/c
LocalPath
/c
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/c
Segments
[ /, c ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
Scheme
http
OriginalString
http://example.org/c
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Context
<null>
Nodes
index value
0
http://example.org/a
Uri
http://example.org/a
AbsolutePath /a
AbsoluteUri http://example.org/a
LocalPath /a
Authority example.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /a
Segments [ /, a ]
IsUnc False
Host example.org
Port 80
Query
Fragment
Scheme http
OriginalString http://example.org/a
DnsSafeHost example.org
IdnHost example.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
1
http://example.org/b
Uri
http://example.org/b
AbsolutePath /b
AbsoluteUri http://example.org/b
LocalPath /b
Authority example.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /b
Segments [ /, b ]
IsUnc False
Host example.org
Port 80
Query
Fragment
Scheme http
OriginalString http://example.org/b
DnsSafeHost example.org
IdnHost example.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2
http://example.org/c
Uri
http://example.org/c
AbsolutePath /c
AbsoluteUri http://example.org/c
LocalPath /c
Authority example.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /c
Segments [ /, c ]
IsUnc False
Host example.org
Port 80
Query
Fragment
Scheme http
OriginalString http://example.org/c
DnsSafeHost example.org
IdnHost example.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
IsGroundTriple
True
QuotedTriples (empty)
Nodes
index value
0
http://example.org/a
Uri
http://example.org/a
AbsolutePath
/a
AbsoluteUri
http://example.org/a
LocalPath
/a
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/a
Segments
[ /, a ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
Scheme
http
OriginalString
http://example.org/a
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
1
http://example.org/c
Uri
http://example.org/c
AbsolutePath
/c
AbsoluteUri
http://example.org/c
LocalPath
/c
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/c
Segments
[ /, c ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
Scheme
http
OriginalString
http://example.org/c
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
AllNodes
index value
0
http://example.org/a
Uri
http://example.org/a
AbsolutePath
/a
AbsoluteUri
http://example.org/a
LocalPath
/a
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/a
Segments
[ /, a ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
Scheme
http
OriginalString
http://example.org/a
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
1
http://example.org/b
Uri
http://example.org/b
AbsolutePath
/b
AbsoluteUri
http://example.org/b
LocalPath
/b
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/b
Segments
[ /, b ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
Scheme
http
OriginalString
http://example.org/b
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2
http://example.org/c
Uri
http://example.org/c
AbsolutePath
/c
AbsoluteUri
http://example.org/c
LocalPath
/c
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/c
Segments
[ /, c ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
Scheme
http
OriginalString
http://example.org/c
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
QuotedNodes (empty)
AllQuotedNodes (empty)
NamespaceMap
VDS.RDF.NamespaceMapper
Prefixes
[ rdf, rdfs, xsd ]
BaseUri
<null>
Name
<null>
IsEmpty
False
NormalizeLiteralValues
False
LanguageTagValidation Turtle

Interpretation du parsing de chaîne

La méthode StringParser.Parse() utilise des heuristiques pour detecter le format RDF :

Format detecte Indices utilises
NTriples Presence de < > et . en fin de ligne
Turtle Prefixes @prefix, abreviations :
RDF/XML Balises <rdf:RDF>
JSON-LD Structure JSON avec @context

Fragment parse dans l’exemple :

<http://example.org/a> <http://example.org/b> <http://example.org/c>.
  • Format : NTriples (URIs completes, point final)
  • Triplet : a --(b)--> c

Limite : Les heuristiques peuvent echouer sur des fragments ambigus. Preferer un parser spécifique pour plus de fiabilite.

Le StringParser utilise des heuristiques simples pour essayer de déterminer le format du fragment RDF qui lui est passé.

(5) Lecture de RDF à partir d’une chaîne de caractères (méthode alternative)

Alternativement, puisque vous pouvez lire du RDF à partir de n’importe quel TextReader, vous pouvez simplement invoquer un parser sur une chaîne de caractères directement en utilisant un StringReader, par exemple :

Graph g = new Graph();
NTriplesParser parser = new NTriplesParser();
parser.Load(g, new StringReader("<http://example.org/a> <http://example.org/b> <http://example.org/c>."));
Console.WriteLine($"NTriples parsé : {g.Triples.Count} triplets chargés");
NTriples parsé : 1 triplets chargés

Comparaison StringParser vs Parser direct

Méthode Avantage Inconvenient
StringParser Detection automatique Peut echouer sur formats ambigus
Parser + StringReader Format explicite Necessite de connaitre le format

StringReader : Classe .NET qui transforme une chaîne en flux (TextReader), permettant au parser de lire comme depuis un fichier.

// Equivalent conceptuel
string data = "...";
StringReader reader = new StringReader(data);
parser.Load(g, reader);  // Lit depuis le flux memoire

Quand utiliser StringReader : Lorsque vous avez du RDF en memoire (variable, reponse HTTP, etc.) et que vous connaissez le format exact.

Cela est approximativement équivalent à la façon dont fonctionne StringParser en interne, mais cette méthode nécessite de connaître le format du RDF à l’avance.


c) Variantes de sérialisation

Plusieurs des sérialisations RDF prises en charge ont plusieurs variantes avec des règles de syntaxe différentes. Lorsque plusieurs variantes sont prises en charge, dotNetRDF utilisera par défaut la variante la plus récente pour l’entrée, mais utilisera le format le plus conservateur pour la sortie (ce qui est souvent, mais pas toujours, la plus ancienne variante).

Cependant, dans certains cas, vous voudrez décider directement de la variante syntaxique à utiliser. Dans ce cas, vous construisez généralement un parser et fournissez une valeur de l’énumération de syntaxe appropriée, par exemple :

// Création d'un parser NTriples qui utilise la syntaxe plus ancienne et plus stricte
NTriplesParser parser = new NTriplesParser(NTriplesSyntax.Original);

Consultez la documentation spécifique d’un parser pour savoir si des variantes de sérialisation sont prises en charge.


d) Configuration des parsers

Certains parsers ont une configuration supplémentaire qui peut être utilisée pour modifier leur comportement. Par exemple, si un parser implémente l’interface ITraceableTokeniser, la propriété TraceTokeniser peut être utilisée pour demander la sortie des informations de trace du tokeniseur dans la console. De même, si un parser implémente ITraceableParser, la propriété TraceParsing peut être utilisée pour demander la sortie des informations de trace du parsing. Ces fonctionnalités sont souvent utiles lors du débogage pour comprendre pourquoi un document RDF échoue à être analysé, car vous pouvez voir comment l’entrée est tokenisée et analysée.

De plus, certains parsers vous permettent de les instancier avec un TokenQueueMode. Cela contrôle le type de file utilisée dans le processus de tokenisation et peut potentiellement affecter la vitesse de l’analyse (bien que dans la plupart des cas, il y ait peu de différence). Les modes disponibles sont les suivants : - TokenQueueMode.QueueAllBeforeParsing : le fichier entier est tokenisé avant que l’analyse ne commence. - TokenQueueMode.SynchronousBufferDuringParsing : le fichier est tokenisé au fur et à mesure que l’analyse progresse, un nombre limité de tokens est généré et mis en mémoire tampon à chaque fois que le parser demande un token. - TokenQueueMode.AsynchronousBufferDuringParsing : le fichier est tokenisé en arrière-plan pendant que l’analyse progresse. Si le parser demande un token et que le tokeniseur n’a pas encore produit suffisamment de tokens, le parser doit attendre qu’un token soit disponible.


e) Parsers de stockage

Les parsers de stockage diffèrent des parsers de graphe en ce sens que l’entrée qu’ils analysent peut contenir plusieurs graphes, de sorte que leur sortie est en réalité un triple store plutôt qu’un seul graphe. Vous verrez souvent les parsers de stockage appelés parsers de jeux de données RDF.

Les parsers de stockage implémentent l’interface IStoreReader, qui définit une méthode similaire à l’interface IRdfReader prenant un ITripleStore ou un IRdfHandler ainsi qu’un TextReader, StreamReader ou une chaîne de caractères. Un parser de stockage peut être utilisé comme suit :

TripleStore store = new TripleStore();
TriGParser trigparser = new TriGParser();

// Chargement du store
trigparser.Load(store, "Example.trig");

Comme pour les parsers de graphe, diverses exceptions peuvent être générées.


f) Lecture de jeux de données RDF à partir de sources courantes

De la même manière que pour les parsers de graphe, les parsers de stockage peuvent tous être invoqués indirectement avec différentes méthodes des classes EmbeddedResourceLoader, FileLoader, StringParser et Loader. Consultez la documentation de l’API de ces classes pour les surcharges pertinentes.


g) Analyse avancée

Les exemples que nous avons montrés jusqu’à présent utilisent un modèle d’analyse abstrait où vous analysez directement vers une instance de IGraph ou ITripleStore. L’inconvénient de cela est que vous devez attendre que votre opération d’analyse soit terminée avant de pouvoir travailler avec les données analysées, et que pour des entrées très volumineuses, cela peut prendre beaucoup de temps ou épuiser la mémoire disponible.

En interne, notre sous-système d’analyse est entièrement basé sur les flux et est exposé via les surcharges basées sur l’interface IRdfHandler des méthodes pertinentes. Cela vous permet d’avoir un contrôle beaucoup plus précis sur ce qui est fait avec les données analysées, par exemple en les traitant de manière orientée flux.

Dans les exemples donnés jusqu’à présent, vous avez seulement pu analyser du RDF dans une instance de IGraph ou ITripleStore, mais ce n’est pas votre seule option. Vous pouvez utiliser un IRdfHandler pour contrôler explicitement ce qui se passe avec le RDF que vous analysez. En utilisant l’une des implémentations incluses, vous devrez ajouter la déclaration using suivante :

using VDS.RDF.Parsing.Handlers;
Console.WriteLine("Import OK : VDS.RDF.Parsing.Handlers");
Import OK : VDS.RDF.Parsing.Handlers

Lecture avancee avec Handlers

Les Handlers permettent de traiter les triplets RDF au fur et a mesure de leur lecture, sans charger tout le graphe en memoire.

Cas d’usage : - Fichiers RDF volumineux (plusieurs Go) - Comptage de triplets sans stockage - Filtrage a la volee - Transformation en pipeline

// Au lieu de :
IGraph g = new Graph();
parser.Load(g, "huge-file.ttl");  // Charge TOUT en memoire

// On peut faire :
CountHandler handler = new CountHandler();
parser.Load(handler, "huge-file.ttl");  // Compte sans stocker
Console.WriteLine($"Triplets: {handler.Count}");

Performance : Les handlers evitent la creation d’objets INode et Triple, reduisant drastiquement l’empreinte memoire.

Par exemple, vous voudrez peut-être simplement compter les triples sans vous soucier des valeurs réelles, vous pouvez alors utiliser un CountHandler pour cela :

// Création d'un gestionnaire et utilisation pour l'analyse
CountHandler handler = new CountHandler();
TurtleParser parser = new TurtleParser();
parser.Load(handler, "example.ttl");

// Affichage du compte résultant
Console.WriteLine(handler.Count + " triple(s)");

Il existe plusieurs implémentations incluses qui effectuent différentes opérations, telles que la redirection des triples directement vers un fichier, un triple store natif, etc. Vous pouvez également implémenter votre propre gestionnaire, soit entièrement à partir de zéro, soit en dérivant de BaseRdfHandler, comme le font nos propres implémentations, pour obtenir la plupart de l’implémentation gratuitement. Consultez l’API Handlers pour plus de discussions sur ce sujet.


h) Comportement des parsers

Tous les parsers de graphe fournis dans la bibliothèque se comportent comme suit : - Gestion des fichiers/flux : - En cas d’erreur lors de l’analyse, le fichier/flux analysé est fermé. - En cas de réussite de l’analyse, le fichier/flux analysé est fermé. - Si l’analyse échoue, le graphe ne contiendra aucun des triples correctement analysés avant l’échec. - Si un parser est invité à analyser dans un graphe non vide, le parser analysera d’abord dans un graphe vide, puis fusionnera ce graphe avec le graphe fourni.

Tous les parsers de stockage fournis dans la bibliothèque se comportent comme suit : - Gestion des fichiers/flux comme les parsers de graphe. - Si le parser produit un graphe qui existe déjà dans le store de destination, une erreur peut se produire en fonction du comportement de ce store lorsque le graphe existe déjà.


i) Classes de parsers

Voici les classes de parser standard contenues dans la bibliothèque : - JsonLdParser : JSON-LD - NTriplesParser : NTriples - Notation3Parser : Notation 3, Turtle, NTriples, certaines formes de TriG - NQuadsParser : NQuads, NTriples - RdfAParser : RDFa 1.0 intégré dans (X)HTML, prise en charge limitée de RDFa 1.1 - RdfJsonParser : RDF/JSON (spécification Talis) - RdfXmlParser : RDF/XML - TriGParser : TriG - TriXParser : TriX - TurtleParser : Turtle, NTriples


Handlers disponibles dans dotNetRDF

Handler Fonction Usage
GraphHandler Stocke dans un IGraph Lecture normale
CountHandler Compte les triplets Statistiques
WriteHandler Ecrit directement Transformation de format
PagingHandler Lit par pages Traitement par lots
FilterHandler Filtre les triplets Sélection selective

Exemple avance - Pipeline de transformation :

// Lire Turtle -> Filtrer -> Ecrire NTriples
var writer = new NTriplesWriter();
var writeHandler = new WriteHandler(writer, output);
var filterHandler = new FilterHandler(writeHandler, triple =>
    triple.Predicate.ToString().Contains("name")
);
var ttlParser = new TurtleParser();
ttlParser.Load(filterHandler, "input.ttl");

Ce pipeline lit un fichier Turtle, ne conserve que les triplets avec predicat “name”, et les ecrit en NTriples.

3. Écrire du RDF avec .NetRDF

Une fois que vous avez créé un graphe RDF ou que vous l’avez récupéré à partir d’un fichier/URI, vous aurez souvent besoin de l’écrire dans un autre fichier/flux au format RDF de votre choix. Toutes les classes liées à cela sont contenues dans l’espace de noms VDS.RDF.Writing. Ainsi, lorsque vous souhaitez écrire du RDF, vous aurez besoin des déclarations suivantes au début de votre fichier de code :

using VDS.RDF;
using VDS.RDF.Writing;

Actuellement, dotNetRDF prend en charge l’écriture de graphes dans les formats suivants : - NTriples - Turtle - Notation 3 - RDF/XML - RDF/JSON (spécification Talis) - XHTML + RDFa

Formats non normalisés : - CSV - TSV

De plus, les formats suivants sont pris en charge lors de l’écriture d’un Triple Store contenant plusieurs graphes : - NQuads - TriX - TriG - JSON-LD

Plusieurs de ces sérialisations ont plusieurs variantes avec des règles de syntaxe différentes.


a) Utilisation de base

Les classes Writer de dotNetRDF implémentent toutes l’interface IRdfWriter qui définit une méthode Save(...) prenant un IGraph, puis soit un TextWriter, soit une chaîne de caractères. L’utilisation de base est la suivante :

Conclusion : Lecture de RDF

Nous avons explore 5 méthodes de chargement RDF :

Méthode Complexite Flexibilite Performance
Parser spécifique + fichier Faible Moyenne Excellente
FileLoader (auto-detection) Très faible Elevee Bonne
Loader + URI Faible Elevee Variable (reseau)
StringParser Faible Elevee Bonne
Handlers Moyenne Maximale Excellente (gros fichiers)

Recommandations : - Fichiers locaux : Parser spécifique ou FileLoader - URIs distantes : Loader avec gestion d’erreurs - Données en memoire : StringParser ou StringReader - Gros volumes : Handlers obligatoires

Passons maintenant a l’ecriture de RDF.

// On suppose que le graphe à sauvegarder a déjà été chargé dans une variable g
RdfXmlWriter rdfxmlwriter = new RdfXmlWriter();

// Sauvegarde dans un fichier
// rdfxmlwriter.Save(g, "Example.rdf");

// Sauvegarde dans un flux
using (System.IO.StringWriter sw = new System.IO.StringWriter())
{
    rdfxmlwriter.Save(g, sw);
    string rdfData = sw.ToString();
    Console.WriteLine(rdfData);
}
<?xml version="1.0" encoding="utf-16"?>
<!DOCTYPE rdf:RDF [
    <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
    <!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
    <!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>
]>
<rdf:RDF xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about="http://example.org/a">
    <ns0:b rdf:resource="http://example.org/c" xmlns:ns0="http://example.org/" />
  </rdf:Description>
</rdf:RDF>

Comme pour les Parsers, un Writer est une classe réutilisable qui peut être utilisée autant de fois que vous le souhaitez pour générer des graphes dans des fichiers/flux.


b) Écriture dans des chaînes de caractères

Il existe deux façons d’écrire du RDF dans des chaînes de caractères. La première consiste à utiliser la classe d’aide StringWriter pour générer une chaîne de caractères à partir d’un graphe, par exemple :

RdfXmlWriter rdfxmlwriter = new RdfXmlWriter();
String data = VDS.RDF.Writing.StringWriter.Write(g, rdfxmlwriter);
Console.WriteLine($"RDF/XML écrit : {data.Length} caractères");
RDF/XML écrit : 569 caractères

La deuxième façon est d’écrire directement dans un System.IO.StringWriter, car toutes les instances de IRdfWriter peuvent écrire dans n’importe quelle implémentation de TextWriter, par exemple :

// On suppose que le graphe à sauvegarder a déjà été chargé dans une variable g
RdfXmlWriter rdfxmlwriter = new RdfXmlWriter();
System.IO.StringWriter sw = new System.IO.StringWriter();

// Appel de la méthode Save() pour écrire dans StringWriter
rdfxmlwriter.Save(g, sw);

// Nous pouvons maintenant récupérer le RDF écrit en utilisant la méthode ToString() de StringWriter
String data = sw.ToString();
Console.WriteLine(data);
<?xml version="1.0" encoding="utf-16"?>
<!DOCTYPE rdf:RDF [
    <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
    <!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
    <!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>
]>
<rdf:RDF xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about="http://example.org/a">
    <ns0:b rdf:resource="http://example.org/c" xmlns:ns0="http://example.org/" />
  </rdf:Description>
</rdf:RDF>

Deux approches pour obtenir une chaîne RDF

Approche Méthode Avantage
Helper StringWriter VDS.RDF.Writing.StringWriter.Write(g, writer) Simple, une ligne
System.IO.StringWriter writer.Save(g, new StringWriter()) Contrôle total, compatible .NET

Différence technique : - La classe helper VDS.RDF.Writing.StringWriter encapsule System.IO.StringWriter - Les deux approches produisent exactement le même résultat - La deuxieme méthode permet de reutiliser le StringWriter pour d’autres opérations .NET

Bonne pratique : Utiliser la méthode helper pour la simplicite, sauf si vous avez besoin d’integrer avec d’autres APIs .NET utilisant System.IO.StringWriter.

Cette deuxième méthode est essentiellement ce que la bibliothèque fait en interne lorsque vous utilisez notre classe d’aide StringWriter comme dans l’exemple précédent.

Conclusion : Ecriture de RDF

Recap des 3 méthodes d’ecriture :

Méthode Code Usage
Fichier writer.Save(g, "file.rdf") Sauvegarde permanente
Helper String StringWriter.Write(g, writer) Serialisation rapide
System.IO writer.Save(g, new StringWriter()) Integration .NET

Writers disponibles (liste partielle) : - NTriplesWriter - Format simple ligne par ligne - TurtleWriter - Format compact avec prefixes - RdfXmlWriter - Standard W3C (XML) - RdfJsonWriter - Format JSON - CompressingTurtleWriter - Turtle optimise - HtmlWriter - Visualisation HTML

Point cle : Tous les writers implementent IRdfWriter et sont reutilisables.

c) Utilisation avancée

Il existe plusieurs interfaces supplémentaires pour les writers qui sont utilisées pour indiquer les capacités des writers. La plus courante est IPrettyPrintingWriter, qui définit une propriété PrettyPrintMode. Lorsque cette propriété est définie sur true, le RDF en sortie est écrit avec une mise en forme agréable (principalement en utilisant des tabulations et des sauts de ligne) pour le rendre plus lisible par l’homme.

Moins courante, l’interface IHighSpeedWriter définit une propriété HighSpeedModePermitted. Le mode High Speed est un mode pris en charge par certains writers qui effectuent une analyse simpliste sur le graphe pour évaluer s’il bénéficiera de l’utilisation de compressions de syntaxe ou non. Si le writer décide que le graphe n’est pas adapté à l’utilisation de compressions de syntaxe, il écrira en mode haute vitesse, c’est-à-dire qu’il écrira simplement les triples un par un. La propriété HighSpeedModePermitted contrôle si un writer est autorisé à utiliser ce mode. Si elle est définie sur false, les compressions de syntaxe sont toujours utilisées même si le graphe n’est pas considéré comme adapté à leur utilisation.

Enfin, l’interface ICompressingWriter définit une propriété CompressionLevel. Cette propriété prend une valeur entière qui définit le niveau de compression à utiliser lors de l’écriture de la sortie. En général, les valeurs de la classe WriterCompressionLevel sont utilisées pour définir le niveau de compression. L’interprétation du niveau de compression dépend du writer individuel, mais en général, un niveau plus élevé entraînera l’utilisation de plus de compressions de syntaxe qu’un niveau inférieur. Différents niveaux de compression ne conduisent pas nécessairement à une sortie différente, car certaines compressions ne peuvent s’appliquer que si certains types de triples apparaissent dans le graphe et certains niveaux sont traités de manière identique.

Par exemple, vous pouvez écrire une fonction utilitaire comme celle-ci qui configure les options sur le writer si elles sont prises en charge :

public static void SaveGraph(IGraph g, IRdfWriter writer, System.IO.StringWriter sw)
{
    // Définit le mode Pretty Print s il est pris en charge
    if (writer is IPrettyPrintingWriter)
    {
        ((IPrettyPrintingWriter)writer).PrettyPrintMode = true;
    }

    // Interdit le mode High Speed s il est pris en charge
    if (writer is IHighSpeedWriter)
    {
        ((IHighSpeedWriter)writer).HighSpeedModePermitted = false;
    }

    // Définit le niveau de compression à High s il est pris en charge
    if (writer is ICompressingWriter)
    {
        ((ICompressingWriter)writer).CompressionLevel = WriterCompressionLevel.High;
    }

    // Sauvegarde du graphe
    writer.Save(g, sw);
}
Console.WriteLine("Fonction SaveGraph définie (PrettyPrint + HighCompression)");
Fonction SaveGraph définie (PrettyPrint + HighCompression)

Interpretation des interfaces avancees

Le code précédent montre comment configurer un writer dynamiquement :

Interface Capacite Exemple
IPrettyPrintingWriter Formatage lisible Indentation, sauts de ligne
ICompressingWriter Optimisation taille Abreviations maximales
IHighSpeedWriter Optimisation vitesse Pas de formatage
INamespaceWriter Contrôle prefixes Ajout/suppression d’espaces de noms

Pattern de verification de capacites :

if (writer is IPrettyPrintingWriter pp) {
    pp.PrettyPrintMode = true;
}
if (writer is IHighSpeedWriter hs) {
    hs.HighSpeedModePermitted = true;
}

Note : Certaines combinaisons sont incompatibles (ex: PrettyPrint + HighSpeed). Le writer choisira automatiquement une priorite.


d) Formateurs

Les formateurs sont une alternative à l’utilisation d’un IRdfWriter pour générer du RDF. Leur avantage est qu’ils peuvent être utilisés pour formater des nœuds et des triples individuellement pour afficher uniquement ce que vous voulez et comment vous le voulez. Cependant, leur inconvénient est qu’ils ne peuvent pas utiliser le même ensemble de techniques de compression qu’un IRdfWriter complet lors de l’écriture d’un graphe entier, car ils sont délibérément dépourvus d’état.


e) Comportement du Writer

Toutes les classes Writer de la bibliothèque ont le comportement suivant : - Gestion des fichiers/flux : - En cas d’erreur, le fichier/flux en cours d’écriture sera fermé. - En cas de succès de l’écriture, le fichier/flux en cours d’écriture sera fermé. - Si un problème survient avec le graphe en cours d’enregistrement, mais ne l’empêche pas d’être enregistré, le writer déclenchera un événement d’avertissement (Warning event). - Si le graphe en cours d’écriture contient des triples/nœuds qui ne peuvent pas être écrits par le writer, une RdfOutputException sera levée.


f) Classes Writer

Voici les classes Writer standard contenues dans la bibliothèque : - CompressingTurtleWriter : écriture en syntaxe Turtle avec éventuellement toutes les compressions de syntaxe disponibles - CsvWriter : écriture des triples dans un fichier CSV - HtmlWriter : écriture des triples dans une page HTML avec les triples présentés dans un tableau - NTriplesWriter : écriture en NTriples - Notation3Writer : écriture en Notation 3 en utilisant toutes les compressions de syntaxe disponibles - PrettyRdfXmlWriter : Writer en streaming pour RDF/XML qui utilise des compressions de syntaxe conduisant à une sortie RDF/XML agréable - RdfJsonWriter : écriture en RDF/JSON - RdfXmlWriter : Writer en streaming rapide pour RDF/XML qui utilise un nombre limité de compressions de syntaxe - TsvWriter : écriture des triples dans un fichier TSV - TurtleWriter : écriture en Turtle en utilisant un nombre limité de compressions de syntaxe. Ce writer est maintenant considéré comme obsolète au profit de CompressingTurtleWriter et sera supprimé de la bibliothèque dans une version future.

De plus, il existe une classe d’aide, SingleGraphWriter, qui implémente l’interface IRdfWriter et permet d’écrire un graphe à l’aide d’un writer qui implémente l’interface IStoreWriter. Cela permet d’écrire un graphe en utilisant les formats de sérialisation décrits dans la section “Travailler avec les Triple Stores”.


Formateurs : Alternative aux Writers

Les formateurs sont des classes utilitaires pour serialiser des éléments individuels :

Formateur Serialise Exemple
NTriplesFormatter Triple, Node <http://ex.org/a>
TurtleFormatter Triple, Node ex:a (avec prefix)
Notation3Formatter Triple, Node Notation3 syntax

Différence Writer vs Formateur :

// Writer : serialise UN GRAPHE ENTIER
RdfXmlWriter writer = new RdfXmlWriter();
writer.Save(g, "output.rdf");  // Tout le graphe

// Formateur : serialise DES ÉLÉMENTS INDIVIDUELS
NTriplesFormatter formatter = new NTriplesFormatter();
foreach (Triple t in g.Triples) {
    string line = formatter.Format(t);  // Un triplet a la fois
    Console.WriteLine(line);
}

Cas d’usage des formateurs : - Generation de logs - Affichage console selectif - Construction manuelle de fichiers - Integration dans templates

4. Travailler avec les graphes

Comme présenté précédemment dans les concepts de base, le graphe est la représentation de base d’un ensemble de triples utilisés dans la bibliothèque. Toutes les classes de graphes sont basées sur l’interface IGraph et descendent principalement de la classe de base abstraite BaseGraph - la classe Graph de base étant la plus couramment utilisée.

a) Propriétés

Pour commencer cette discussion sur le travail avec les graphes, nous allons examiner les propriétés qu’une implémentation IGraph nous offre :

  • BaseUri
    • La propriété BaseUri permet de récupérer/définir l’URI de base du graphe. Une URI de base est l’URI par rapport à laquelle toutes les URIs relatives sont résolues, ainsi que tous les noms préfixés de l’espace de noms par défaut (si l’espace de noms par défaut n’est pas explicitement défini). Les graphes ne sont pas tenus d’avoir une URI de base et par défaut, cette propriété renvoie null. En général, l’URI de base est définie lors de la lecture de RDF à partir d’un fichier, lorsque la syntaxe RDF définit une URI de base, ou lorsque vous récupérez RDF à partir d’une URI à l’aide de l’UriLoader, auquel cas l’URI récupérée est l’URI de base.
    • Exemple :
Graph g = new Graph();
g.BaseUri = new Uri("http://example.org/base");
g.Display();
VDS.RDF.Graph
UriFactory
VDS.RDF.CachingUriFactory
InternUris
True
Triples
[ ]
ObjectNodes
[ ]
Count
0
IsReadOnly
True
(values) (empty)
PredicateNodes
[ ]
Count
0
IsReadOnly
True
(values) (empty)
SubjectNodes
[ ]
Count
0
IsReadOnly
True
(values) (empty)
QuotedObjectNodes
[ ]
Count
0
IsReadOnly
True
(values) (empty)
QuotedPredicateNodes
[ ]
Count
0
IsReadOnly
True
(values) (empty)
QuotedSubjectNodes
[ ]
Count
0
IsReadOnly
True
(values) (empty)
Count
0
QuotedCount
0
Asserted (empty)
Quoted (empty)
(values) (empty)
QuotedTriples (empty)
Nodes (empty)
AllNodes (empty)
QuotedNodes (empty)
AllQuotedNodes (empty)
NamespaceMap
VDS.RDF.NamespaceMapper
Prefixes
[ rdf, rdfs, xsd ]
BaseUri
http://example.org/base
AbsolutePath
/base
AbsoluteUri
http://example.org/base
LocalPath
/base
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/base
Segments
[ /, base ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
Scheme
http
OriginalString
http://example.org/base
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
Name
<null>
IsEmpty
True
NormalizeLiteralValues
False
LanguageTagValidation Turtle

Proprietes essentielles d’un graphe

Nous venons de définir l’URI de base du graphe. Explication :

Propriete Description Valeur par defaut
BaseUri URI du graphe lui-même null
IsEmpty Le graphe contient-il des triplets ? true initialement
NamespaceMap Prefixes declares rdf:, rdfs:, xsd:
Triples Collection de triplets Collection vide

A quoi sert BaseUri ? : - Identifie le graphe dans un Triple Store (collection de graphes) - Permet de resoudre les URIs relatives - Utilise dans les formats RDF avec graphes nommes (TriG, NQuads)

// Sans BaseUri
IGraph g1 = new Graph();
// g1.BaseUri == null (graphe anonyme)

// Avec BaseUri
IGraph g2 = new Graph();
g2.BaseUri = new Uri("http://example.org/graph1");
// g2 peut etre reference dans un Triple Store

Bonne pratique : Toujours définir une BaseUri pour les graphes destines a etre partages ou stockes dans un Triple Store.

  • IsEmpty
    • La propriété IsEmpty est un booléen indiquant si des triples sont présents dans ce graphe.
  • NamespaceMap
    • La propriété NamespaceMap renvoie l’instance INamespaceMapper associée à ce graphe (plus précisément, elle renvoie l’instance associée à l’instance INodeFactory que le graphe utilise lors de la création de nouveaux nœuds). INamespaceMapper est utilisé pour faire correspondre les préfixes aux URIs afin de permettre la gestion des espaces de noms et la résolution des noms préfixés.
  • Nodes et AllNodes
    • La propriété Nodes renvoie un IEnumerable<INode> qui retourne des instances de INode apparaissant dans la position Sujet/Objet des triples. La méthode Nodes est ainsi nommée car elle renvoie les instances de INode considérées comme les nœuds du graphe RDF (les prédicats sont considérés comme des arcs dans la représentation graphique du RDF). Cependant, la méthode AllNodes fournit une énumération sur les instances INode du sujet, du prédicat et de l’objet.

    • Exemple :

      // Supposons que nous avons un graphe g, recherchons tous les nœuds URI
      foreach (IUriNode u in g.Nodes.UriNodes())
      {
          // Écrire l'URI dans la console
          Console.WriteLine(u.Uri.ToString());
      }

b) Triples

La propriété Triples renvoie un objet BaseTripleCollection, qui est une collection des triples contenus dans le graphe et est probablement la propriété la plus importante et la plus utilisée d’un graphe. Cela vous permet d’énumérer les triples dans le graphe de différentes manières, mais est le plus souvent utilisé, comme nous l’avons vu précédemment, pour énumérer simplement les triples dans le graphe et effectuer une action avec chacun d’eux.

c) Assertion et retrait de triples

Comme nous l’avons déjà vu dans l’aperçu de la bibliothèque et dans le tutoriel Hello World, l’une des fonctions clés du graphe est de permettre l’assertion et le retrait de triples. Pour cela, les méthodes Assert(…) et Retract(…) sont fournies. Ces deux méthodes peuvent prendre soit un seul triple, soit une énumération de triples.

L’assertion d’un triple entraîne son ajout à la collection de triples du graphe, tandis que le retrait d’un triple entraîne l’opération inverse. Selon l’implémentation de l’IGraph utilisée, des actions supplémentaires peuvent également être effectuées dans le cadre du processus d’assertion et de retrait.

Remarque : Lors de l’utilisation des méthodes Assert(IEnumerable<Triple> ts) ou Retract(IEnumerable<Triple> ts), faites attention à la provenance de ces triples. Un graphe, comme la plupart des classes de collection dans le monde .NET, ne permet pas d’être modifié pendant qu’il est énuméré. Par conséquent, vous devrez peut-être appeler ToList() sur un énumérable avant de tenter de l’assertir/retirer.

d) Création de nœuds

Comme nous l’avons également vu dans l’aperçu de la bibliothèque, tous les nœuds doivent être créés par une INodeFactory, que toutes les implémentations IGraph doivent également mettre en œuvre. Par conséquent, un graphe propose les méthodes CreateBlankNode(…), CreateLiteralNode(…) et CreateURINode(…). Consultez l’aperçu de la bibliothèque précédent pour des exemples d’utilisation.

e) Sélection de nœuds

Pour sélectionner des nœuds, il existe des méthodes qui peuvent être utilisées pour trouver un nœud dans un graphe (s’il existe), ce sont les méthodes GetXNode(), où X est le type de nœud à récupérer. Notez que cette méthode ne renvoie une valeur que si la valeur donnée existe en tant que nœud dans le graphe, c’est-à-dire si elle apparaît dans la position Sujet/Objet d’un triple dans ce graphe.

Remarque : Si vous voulez simplement obtenir une instance de nœud pour d’autres utilisations, indépendamment de son existence ou non dans le graphe, vous devriez utiliser les méthodes CreateXNode() à la place.

Exemple :

// Supposons que nous avons un graphe g

// Sélection d'un nœud blanc
IBlankNode b = g.GetBlankNode("myNodeID");
if (b != null)
{
    Console.WriteLine("Un nœud blanc avec l'ID " + b.InternalID + " existe dans le graphe");
}
else
{
    Console.WriteLine("Aucun nœud blanc avec l'ID donné n'existe dans le graphe");
}

// Sélection de nœuds littéraux
// Littéral simple avec la valeur donnée
ILiteralNode l = g.GetLiteralNode("Some Text");

// Littéral avec la valeur donnée et un spécificateur de langue
ILiteralNode l2 = g.GetLiteralNode("Some Text", "en");

// Littéral avec la valeur donnée et un type de données
ILiteralNode l3 = g.GetLiteralNode("1", new Uri(XmlSpecsHelper.XmlSchemaDataTypeInteger));

// Sélection de nœuds URI
// Par URI
IUriNode u = g.GetUriNode(new Uri("http://example.org/select"));

// Par nom préfixé
//IUriNode u2 = g.GetUriNode("ex:select");
Aucun nœud blanc avec l'ID donné n'existe dans le graphe

Méthodes de sélection de noeuds

Le code précédent illustre les accesseurs de noeuds par identifiant :

Méthode Retourne Cas d’usage
GetBlankNode(id) Noeud anonyme Structures intermediaires (listes RDF)
GetUriNode(uri) Noeud URI Recherche de ressource
GetLiteralNode(val) Noeud literal Recherche de valeur

Comportement important : - Retourne null si le noeud n’existe pas dans le graphe - Ne créé pas de nouveau noeud (contrairement a CreateXxxNode()) - Utile pour verifier l’existence avant manipulation

// Créer vs Obtenir
IBlankNode b1 = g.CreateBlankNode("id");  // Créé ou retourne existant
IBlankNode b2 = g.GetBlankNode("id");     // Retourne existant ou null

// Pattern de verification
IUriNode node = g.GetUriNode(uri);
if (node != null) {
    // Le noeud existe, on peut l'utiliser
}

Attention : Les noeuds blancs sont lies au graphe qui les a crees. On ne peut pas utiliser un noeud blanc d’un graphe dans un autre graphe directement.

f) Sélection de triples

L’interface IGraph propose de nombreuses méthodes de sélection qui vous permettent d’obtenir les résultats de votre sélection sous la forme d’un IEnumerable<Triple>. L’exemple suivant montre l’utilisation de quelques-unes de ces méthodes :

// Supposons que nous avons un graphe g

// Obtenir tous les triples impliquant un nœud donné
IUriNode select = g.CreateUriNode(new Uri("http://example.org/select"));
IEnumerable<Triple> ts = g.GetTriples(select);


// Obtenir tous les triples répondant à certains critères
// Nous voulons trouver tout ce qui est du type rdf:type ex:Person
IUriNode rdfType = g.CreateUriNode("rdf:type");
//IUriNode person = g.CreateUriNode("ex:Person");
//ts = g.GetTriplesWithPredicateObject(rdfType, person);

// Obtenir tous les triples avec un sujet donné
// Nous réutilisons le nœud que nous avons créé précédemment
ts = g.GetTriplesWithSubject(select);

// Obtenir tous les triples avec un prédicat donné
ts = g.GetTriplesWithPredicate(rdfType);

ts.Display();

// Obtenir tous les triples avec un objet donné
//ts = g.GetTriplesWithObject(person);
(empty)

Interpretation des méthodes de sélection de triplets

Les méthodes GetTriplesWithXxx() sont essentielles pour interroger un graphe :

Méthode Selectionne Exemple
GetTriplesWithSubject(s) s ? ? Toutes les proprietes d’une ressource
GetTriplesWithPredicate(p) ? p ? Toutes les utilisations d’une relation
GetTriplesWithObject(o) ? ? o Ressources ayant une valeur donnee
GetTriplesWithSubjectPredicate(s,p) s p ? Valeurs d’une propriete pour un sujet
GetTriplesWithPredicateObject(p,o) ? p o Sujets ayant une propriete=valeur

Pattern SPARQL equivalent :

// Code C#
var triples = g.GetTriplesWithSubject(select);

// Equivalent SPARQL
SELECT ?p ?o WHERE {
  <http://example.org/select> ?p ?o .
}

Performance : Ces méthodes utilisent des index internes pour une recherche rapide (O(log n) ou O(1) selon l’implementation).

g) Fusion de graphes

La méthode Merge(…) permet de fusionner des graphes. La méthode prend en argument un IGraph, puis a un deuxième argument facultatif qui est un booléen indiquant s’il faut conserver les URIs de graphe d’origine associées aux nœuds.

Merge(…) met en œuvre la fusion de graphes telle que décrite dans la spécification RDF : les triples ne contenant pas de nœuds blancs sont copiés à partir du graphe d’entrée s’ils n’existent pas dans le graphe sur lequel Merge() est appelé, les triples contenant des nœuds blancs voient leurs identifiants de nœuds blancs réécrits afin de ne pas entrer en collision avec les nœuds blancs déjà présents dans le graphe.

h) Égalité des graphes

L’égalité des graphes (ou isomorphisme) est prise en charge grâce à l’utilisation de la méthode standard Equals(Object obj). Nous fournissons également une surcharge supplémentaire Equals(IGraph g, out Dictionary mapping) qui détermine l’égalité

et, si les graphes sont équivalents, renvoie la correspondance des nœuds blancs entre les deux graphes.

i) Différence des graphes

Si vous savez que deux graphes sont différents, il peut être utile de savoir en quoi ils diffèrent. La méthode Différence(IGraph g) détermine les différences entre deux graphes et renvoie un GraphDiffReport qui détaille les différences.

j) Chargement des graphes

La méthode la plus courante pour charger un graphe est de lire du RDF à partir d’un fichier/URI, comme décrit dans la lecture de RDF, mais il existe d’autres façons de lire des graphes, par exemple à partir d’un stockage persistant.

(1) Graphes basés sur des triplets

Les graphes peuvent également être chargés à partir de triplets natifs stockés dans des triple stores accessibles via l’API dotNetRDF. Pour utiliser un triple store natif, vous devrez utiliser l’une des implémentations d’IStorageProvider situées dans l’espace de noms VDS.RDF.Storage. Les graphes peuvent être chargés à l’aide d’une surcharge appropriée de la méthode LoadGraph(), consultez l’intégration des triple stores pour plus de détails.

(2) Utilisation de StoreGraphPersistenceWrapper

Alternativement, StoreGraphPersistenceWrapper est une classe enveloppe qui peut être placée autour de n’importe quelle instance IGraph et qui persiste toutes les modifications apportées lorsqu’elle est supprimée, sauf si vous les supprimez à l’aide de la méthode Discard().

using VDS.RDF;
using VDS.RDF.Storage;

public class StoreGraphExample
{
    public static void Main(String[] args)
    {
        // Créez notre fournisseur de stockage - cet exemple utilise Virtuoso Universal Server
        VirtuosoManager virtuoso = new VirtuosoManager("localhost", 1111, "DB", "nom d'utilisateur", "mot de passe");

        // Chargez le graphe dans une instance de graphe ordinaire d'abord
        Graph g = new Graph();
        virtuoso.LoadGraph(g, new Uri("http://example.org/"));

        // Placez ensuite le graphe dans une enveloppe
        StoreGraphPersistenceWrapper wrapper = new StoreGraphPersistenceWrapper(virtuoso, g);

        // Apportez maintenant des modifications à ce graphe comme vous le souhaitez...

        // N'oubliez pas d'appeler Dispose() pour vous assurer que les modifications sont persistées lorsque vous avez fini
        wrapper.Dispose();
    }
}

k) Chargement depuis SPARQL

Il est également possible d’obtenir un graphe en effectuant une requête SPARQL vers un point d’accès SPARQL où les résultats de cette requête seront un graphe, c’est-à-dire une requête CONSTRUCT ou DESCRIBE.

using VDS.RDF;
using VDS.RDF.Query;


var httpClient = new System.Net.Http.HttpClient();
// Définissez d'abord un point d'accès SPARQL pour DBPedia
var endpoint = new SparqlQueryClient( httpClient, new Uri("http://dbpedia.org/sparql"));
// Ensuite, définissez notre requête
// Nous allons demander à DBPedia de décrire la première chose qu'elle trouve qui est une personne
String query = "DESCRIBE ?person WHERE {?person a <http://dbpedia.org/ontology/Person>} LIMIT 1";
// Obtenez le résultat
 var g = await endpoint.QueryWithResultGraphAsync(query);
// Affichez le résultat
using (System.IO.StringWriter sw = new System.IO.StringWriter())
{
    RdfXmlWriter rdfxmlwriter = new RdfXmlWriter();
    rdfxmlwriter.Save(g, sw);
    string rdfData = sw.ToString();
    rdfData.Display();
}
<?xml version="1.0" encoding="utf-16"?>
<!DOCTYPE rdf:RDF [
    <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
    <!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
    <!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>
]>
<rdf:RDF xml:base="http://dbpedia.org/sparql" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:ns0="http://dbpedia.org/ontology/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about="http://dbpedia.org/resource/Academy_of_the_Arabic_Language_in_Cairo">
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Anastas_Al-Karmali" />
  </rdf:Description>
  <rdf:Description rdf:about="http://dbpedia.org/resource/Anastas">
    <ns0:wikiPageDisambiguates rdf:resource="http://dbpedia.org/resource/Anastas_Al-Karmali" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Anastas_Al-Karmali" />
  </rdf:Description>
  <ns0:Person rdf:about="http://dbpedia.org/resource/Anastas_Al-Karmali">
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Baghdad" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Beirut" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Belgium" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Biblical_exegesis" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Bikfaya" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Carmelite" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Carmelite_Fathers" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Category:1866_births" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Category:1947_deaths" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Category:Carmelites" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Category:Iraqi_Christians" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Category:Lebanese_Roman_Catholic_priests" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Category:Lebanese_people_of_Iraqi_descent" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Category:Linguists_from_Iraq" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Celibacy" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Central_Anatoli" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Egypt" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Ethiopian_Semitic_languages" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/French_language" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/French_literature" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Greek_language" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Hebrew" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/History_of_Christianity" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Iraq" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Iraq_Museum" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Iraq_National_Library" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Jesuit" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Kayseri" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Kitab_al-'Ayn" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Latin" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Lebanon" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Li%C3%A8ge" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/List_of_Arabic_dictionaries" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Lughat_Al_Arab" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Madrasat_Al-Aaba'_Al-Karmaliyin" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Madrasat_Al-Ittifaq_Al-Kathuliki" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Montpellier" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Order_of_the_Brothers_of_the_Blessed_Virgin_Mary_of_Mount_Carmel" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Persian_language" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Philosophy" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Sabaean_language" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Syria" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Syriac_language" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Theology" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Turkish_language" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/WWI" />
    <ns1:hypernym rdf:resource="http://dbpedia.org/resource/Priest" xmlns:ns1="http://purl.org/linguistics/gold/" />
    <ns2:sameAs rdf:resource="http://viaf.org/viaf/39370998" xmlns:ns2="http://schema.org/" />
    <ns3:sameAs rdf:resource="http://ar.dbpedia.org/resource/%D8%A3%D9%86%D8%B3%D8%AA%D8%A7%D8%B3_%D8%A7%D9%84%D9%83%D8%B1%D9%85%D9%84%D9%8A" xmlns:ns3="http://www.w3.org/2002/07/owl#" />
    <ns4:sameAs rdf:resource="http://arz.dbpedia.org/resource/%D8%A7%D9%86%D8%B3%D8%AA%D8%A7%D8%B3_%D8%A7%D9%84%D9%83%D8%B1%D9%85%D9%84%D9%89" xmlns:ns4="http://www.w3.org/2002/07/owl#" />
    <ns5:sameAs rdf:resource="http://d-nb.info/gnd/118933655" xmlns:ns5="http://www.w3.org/2002/07/owl#" />
    <ns6:sameAs rdf:resource="http://data.bibliotheken.nl/id/thes/p122941179" xmlns:ns6="http://www.w3.org/2002/07/owl#" />
    <ns7:sameAs rdf:resource="http://fa.dbpedia.org/resource/%D8%A2%D9%86%D8%A7%D8%B3%D8%AA%D8%A7%D8%B3_%DA%A9%D8%B1%D9%85%D9%84%DB%8C" xmlns:ns7="http://www.w3.org/2002/07/owl#" />
    <ns8:sameAs rdf:resource="http://rdf.freebase.com/ns/m.047qytk" xmlns:ns8="http://www.w3.org/2002/07/owl#" />
    <ns9:sameAs rdf:resource="http://viaf.org/viaf/39370998" xmlns:ns9="http://www.w3.org/2002/07/owl#" />
    <ns10:sameAs rdf:resource="http://www.wikidata.org/entity/Q4751824" xmlns:ns10="http://www.w3.org/2002/07/owl#" />
    <ns11:sameAs rdf:resource="http://yago-knowledge.org/resource/Anastas_Al-Karmali" xmlns:ns11="http://www.w3.org/2002/07/owl#" />
    <ns12:sameAs rdf:resource="https://global.dbpedia.org/id/4QhnH" xmlns:ns12="http://www.w3.org/2002/07/owl#" />
  </ns0:Person>
  <rdf:Description rdf:about="http://dbpedia.org/resource/Arab_Christians">
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Anastas_Al-Karmali" />
  </rdf:Description>
  <rdf:Description rdf:about="http://dbpedia.org/resource/Iraq_National_Library_and_Archive">
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Anastas_Al-Karmali" />
  </rdf:Description>
  <rdf:Description rdf:about="http://dbpedia.org/resource/Kitab_al-'Ayn">
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Anastas_Al-Karmali" />
  </rdf:Description>
  <rdf:Description rdf:about="http://dbpedia.org/resource/List_of_Iraqis">
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Anastas_Al-Karmali" />
  </rdf:Description>
  <rdf:Description rdf:about="http://dbpedia.org/resource/Lughat_Al_Arab">
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Anastas_Al-Karmali" />
  </rdf:Description>
  <rdf:Description rdf:about="http://dbpedia.org/resource/Minorities_in_Iraq">
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Anastas_Al-Karmali" />
  </rdf:Description>
  <rdf:Description rdf:about="http://dbpedia.org/resource/P%C3%A8re_Anastase-Marie_de_Saint_Elie">
    <ns0:wikiPageRedirects rdf:resource="http://dbpedia.org/resource/Anastas_Al-Karmali" />
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Anastas_Al-Karmali" />
  </rdf:Description>
  <rdf:Description rdf:about="http://dbpedia.org/resource/Shabaks">
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Anastas_Al-Karmali" />
  </rdf:Description>
  <rdf:Description rdf:about="http://dbpedia.org/resource/Yousef_Ghanima">
    <ns0:wikiPageWikiLink rdf:resource="http://dbpedia.org/resource/Anastas_Al-Karmali" />
  </rdf:Description>
</rdf:RDF>

Point d’acces SPARQL (Endpoint)

Le code précédent configure une connexion a DBpedia via SPARQL :

Composant Valeur Explication
Endpoint URI http://dbpedia.org/sparql Point d’acces au service de requêtes
HttpClient Instance .NET Gestion des connexions HTTP
DefaultGraphUri http://dbpedia.org Graphe par defaut a interroger

Fonctionnement :

Client C#  -->  HTTP POST  -->  DBpedia SPARQL Endpoint
           <--  SPARQL Results (XML/JSON)  <--

Configuration avancee possible :

var endpoint = new SparqlRemoteEndpoint(uri) {
    Timeout = 30000,  // 30 secondes
    HttpMode = "POST",  // ou "GET"
    ResultsAccept = "application/sparql-results+json"
};

Attention : Les endpoints publics ont souvent des limites de timeout (10-60 secondes) et des quotas de requêtes.

l) Enregistrement des graphes

La méthode la plus courante pour enregistrer un graphe est de l’enregistrer dans un fichier, comme décrit dans l’écriture de RDF, mais vous pouvez également l’enregistrer dans d’autres formes de stockage persistant.

(1) Graphes basés sur des triplets

La façon la plus simple d’enregistrer un graphe dans un triple store consiste à utiliser la méthode SaveGraph() d’une implémentation d’IStorageProvider, consultez l’intégration des triple stores pour plus de détails.

Alternativement, vous pouvez utiliser la classe StoreGraphPersistenceWrapper décrite précédemment, car toutes les modifications apportées à celle-ci sont automatiquement enregistrées dans le Store (si votre Store le prend en charge).

m) Implémentations standard d’IGraph

Voici une liste partielle des implémentations concrètes d’IGraph fournies dans la bibliothèque :

Classe Description
VDS.RDF.Graph Graphe en mémoire avec indexation des triplets
VDS.RDF.NonIndexedGraph Graphe en mémoire sans indexation des triplets
VDS.RDF.StoreGraphPersistenceWrapper Une enveloppe autour d’un autre graphe où les modifications sont persistées dans un Store en utilisant un IStorageProvider.
VDS.RDF.ThreadSafeGraph Une enveloppe sûre pour les threads autour d’une autre instance de graphe

5. Types de valeurs et listes typées

Bien que RDF soit un modèle de données puissant capable de représenter n’importe quelle donnée que vous souhaitez encoder, la sérialisation RDF de certaines valeurs typées et de listes peut être quelque peu complexe. De plus, elles peuvent être difficiles à accéder et à manipuler à l’aide des API que nous vous avons montrées jusqu’à présent dans ce guide de l’utilisateur. Ce document explique certaines façons utiles dont la bibliothèque vous aide à travailler avec ces éléments de manière plus conviviale.

a) Encodage des valeurs en RDF

Pour les valeurs courantes telles que les entiers, les booléens, les dates, etc., RDF utilise les types de données du schéma XML. Ils peuvent être directement créés par un utilisateur en utilisant un code explicite comme celui-ci :

// Supposons que nous ayons déjà un graphe dans la variable g
ILiteralNode value = g.CreateLiteralNode("12345", new Uri(XmlSpecsHelper.XmlSchemaDataTypeInteger));
value.Display()
12345^^http://www.w3.org/2001/XMLSchema#integer
Value
12345
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal

Limitation des types de données RDF

Le code précédent montre la verbosity des valeurs typees en RDF :

Problème :

// Approche manuelle (fastidieuse)
ILiteralNode value = g.CreateLiteralNode("12345",
    new Uri(XmlSpecsHelper.XmlSchemaDataTypeInteger));

Types XSD courants : - xsd:integer - Entiers - xsd:decimal - Decimaux - xsd:double - Flottants double precision - xsd:boolean - Booleans - xsd:dateTime - Dates et heures - xsd:string - Chaînes (par defaut)

Problème pedagogique : Le code RDF pur est très verbeux pour les valeurs typees. C’est pourquoi dotNetRDF fournit des extensions C# (section suivante).

Bien que cela soit relativement simple, cela peut être fastidieux à taper, en particulier si vous avez beaucoup de valeurs typées que vous souhaitez représenter. Pour faciliter l’encodage des valeurs typées en RDF, la bibliothèque propose plusieurs méthodes d’extension dans la classe VDS.RDF.LiteralExtensions, qui fournissent des méthodes ToLiteral() que vous pouvez appliquer à divers types .Net pour obtenir l’encodage RDF équivalent. Par exemple :

// Supposons que nous ayons déjà un graphe dans la variable g
INode intNode = (12345).ToLiteral(g);
INode dateNode = DateTime.Now.ToLiteral(g);
dateNode.Display()
2026-06-02T05:08:57.635248+02:00^^http://www.w3.org/2001/XMLSchema#dateTime
Value
2026-06-02T05:08:57.635248+02:00
Language
DataType
http://www.w3.org/2001/XMLSchema#dateTime
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#dateTime
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#dateTime
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#dateTime
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal

Méthodes d’extension pour types natifs C

Les méthodes d’extension .ToLiteral() simplifient drastiquement le code :

Type C# Méthode Type RDF genere
int (12345).ToLiteral(g) xsd:integer
bool (true).ToLiteral(g) xsd:boolean
double (3.14).ToLiteral(g) xsd:double
DateTime DateTime.Now.ToLiteral(g) xsd:dateTime
TimeSpan TimeSpan.FromHours(2).ToLiteral(g) xsd:duration
string "text".ToLiteral(g) xsd:string ou plain

Avantages : 1. Lisibilite : Code C# naturel 2. Type safety : Verification a la compilation 3. Formatage automatique : DateTime vers ISO 8601, etc.

// Avant (manuel, verbeux)
ILiteralNode date = g.CreateLiteralNode(
    DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"),
    new Uri(XmlSpecsHelper.XmlSchemaDataTypeDateTime)
);

// Après (extension, simple)
ILiteralNode date = DateTime.Now.ToLiteral(g);

Point cle : Ces extensions sont définies dans VDS.RDF.LiteralExtensions.

Cela donne un code beaucoup plus lisible et, dans le cas de types tels que DateTime et TimeSpan, où les encodages RDF doivent être dans un format précis, cela élimine toute possibilité d’erreur de l’utilisateur lors de l’encodage des valeurs en tant que littéraux appropriés.

b) Décodage des valeurs à partir de RDF

Pour décoder les valeurs à partir de RDF, vous pouvez utiliser l’espace de noms VDS.RDF.Nodes. Bien qu’il soit principalement utilisé en interne dans notre moteur SPARQL, il est également très utile pour l’utilisateur final. Cet espace de noms fournit principalement une méthode d’extension AsValuedNode(), qui vous renvoie une instance de VDS.RDF.Nodes.IValuedNode. Un IValuedNode est simplement un nœud qui a une valeur fortement typée associée et fournit plusieurs méthodes pour récupérer la valeur d’un nœud en tant que type .Net fortement typé. Par exemple :

// Supposons que nous ayons déjà un nœud dans la variable n
IValuedNode value = n.AsValuedNode();
// Obtenir la valeur entière
long i = value.AsInteger();

c) Manipulation des listes RDF

Les listes RDF sont un moyen d’exprimer des listes en RDF, mais la sérialisation en triplets est quelque peu fastidieuse. Par exemple, le snippet Turtle suivant exprime une liste simple :

@prefix ex: <http://example.org/ns#> .
ex:subj ex:pred ( 1 2 3 ) .

Mais cela n’est qu’un sucre syntaxique pour les triplets suivants :

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ex: <http://example.org/ns#> .

ex:subj ex:pred _:b1 .
_:b1 rdf:first 1 .
_:b1 rdf:rest _:b2 .
_:b2 rdf:first 2 .
_:b2 rdf:rest _:b3 .
_:b3 rdf:first 3 .
_:b3 rdf:rest rdf:nil .

Comme vous pouvez probablement le comprendre, l’accès à cela uniquement à l’aide des API centrées sur les triplets que nous vous avons montrées dans le guide de l’utilisateur jusqu’à présent va être très difficile.

Pour atténuer ce problème, nous fournissons plusieurs méthodes dans la classe VDS.RDF.Extensions qui vous permettent de manipuler les listes RDF de manière conviviale.

L’accès à une liste nécessite une référence au graphe et à la racine de la liste, c’est-à-dire au nœud dans le graphe qui représente le premier élément de la liste. Tous les exemples suivants supposeront que le graphe RDF donné ci-dessus est les données utilisées et qu’il est disponible dans une variable g et que la racine de la liste est dans la variable root.

d) Récupération d’une liste

Vous pouvez récupérer une liste de plusieurs manières, la plus courante étant utilisée pour récupérer les éléments de votre collection, par exemple :


// Initialize g and root
        IGraph g = new Graph();
        INode root = null;

        // RDF data in Turtle format
        string rdfData = @"
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ex: <http://example.org/ns#> .

ex:subj ex:pred _:b1 .
_:b1 rdf:first 1 .
_:b1 rdf:rest _:b2 .
_:b2 rdf:first 2 .
_:b2 rdf:rest _:b3 .
_:b3 rdf:first 3 .
_:b3 rdf:rest rdf:nil .
";

        // Parse RDF data
        TurtleParser parser = new TurtleParser();
        parser.Load(g, new StringReader(rdfData));

        // Get the root node
        IUriNode predicate = g.CreateUriNode("ex:pred");
        Triple rootTriple = g.GetTriplesWithPredicate(predicate).FirstOrDefault();
        if (rootTriple != null)
        {
            root = rootTriple.Object;
        }

        if (root != null)
        {
            // Get the nodes for 1, 2, and 3
            var listItems = g.GetListItems(root).ToList();
            foreach (var node in listItems)
            {
                Console.WriteLine(node);
            }
        }
        else
        {
            Console.WriteLine("Root node not found.");
        }

// Get the nodes for 1, 2, and 3
IEnumerable<INode> ns = g.GetListItems(root);
1^^http://www.w3.org/2001/XMLSchema#integer
2^^http://www.w3.org/2001/XMLSchema#integer
3^^http://www.w3.org/2001/XMLSchema#integer

Structures de listes en RDF

Le code suivant créé une liste RDF en Turtle :

@prefix : <http://example.org/> .
_:root rdf:first 1 ;
       rdf:rest _:b1 .
_:b1 rdf:first 2 ;
     rdf:rest _:b2 .
_:b2 rdf:first 3 ;
     rdf:rest rdf:nil .

Structure conceptuelle :

root -> [1 | rest] -> [2 | rest] -> [3 | rest] -> nil
Élément Type Signification
rdf:first Predicat Valeur de l’élément courant
rdf:rest Predicat Lien vers l’élément suivant
rdf:nil Ressource Fin de liste
Noeuds blancs _:b1, _:b2 Noeuds intermediaires

Comparaison : Equivalent aux listes chainees en programmation, mais encodees en triplets RDF.

Comme vous pouvez probablement le comprendre, l’accès à cela uniquement à l’aide des API centrées sur les triplets que nous vous avons montrées dans le guide de l’utilisateur jusqu’à présent va être très difficile.

Pour atténuer ce problème, nous fournissons plusieurs méthodes dans la classe VDS.RDF.Extensions qui vous permettent de manipuler les listes RDF de manière conviviale.

L’accès à une liste nécessite une référence au graphe et à la racine de la liste, c’est-à-dire au nœud dans le graphe qui représente le premier élément de la liste. Tous les exemples suivants supposeront que le graphe RDF donné ci-dessus est les données utilisées et qu’il est disponible dans une variable g et que la racine de la liste est dans la variable root.

d) Récupération d’une liste

Vous pouvez récupérer une liste de plusieurs manières, la plus courante étant utilisée pour récupérer les éléments de votre collection, par exemple :

// Cela nous donnera les nœuds pour 1, 2 et 3
IEnumerable<INode> ns = g.GetListItems(root);
ns.Display()
index value
0
1^^http://www.w3.org/2001/XMLSchema#integer
Value
1
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
1
2^^http://www.w3.org/2001/XMLSchema#integer
Value
2
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
2
3^^http://www.w3.org/2001/XMLSchema#integer
Value
3
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal

Méthode GetListItems()

Cette méthode abstrait la structure interne de la liste RDF :

Méthode Retourne Cas d’usage
GetListItems(root) [1, 2, 3] (valeurs) Recuperer le contenu
GetListNodes(root) [_:b1, _:b2, _:b3] Manipulation structure
GetListAsTriples(root) Triplets rdf:first/rest Inspection bas niveau

Exemple de sortie :

// Sortie de GetListItems(root)
IEnumerable<INode> items = g.GetListItems(root);
// items = [
//   LiteralNode("1", xsd:integer),
//   LiteralNode("2", xsd:integer),
//   LiteralNode("3", xsd:integer)
// ]

Abstraction : Vous n’avez pas besoin de naviguer manuellement les predicats rdf:first et rdf:rest.

Dans certains cas, vous souhaiterez peut-être récupérer les nœuds intermédiaires de la liste plutôt que les éléments eux-mêmes, par exemple :

// Cela nous donnera les nœuds _:b1, _:b2 et _:b3
IEnumerable<INode> ns = g.GetListNodes(root);
ns.Display()
index value
0
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
2
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank

Différence entre Items et Nodes

Méthode Contenu retourne Exemple
GetListItems() Valeurs des rdf:first 1, 2, 3
GetListNodes() Noeuds intermediaires _:b1, _:b2, _:b3

Pourquoi GetListNodes() est utile ? :

// Ajouter un predicat a chaque élément de liste
IEnumerable<INode> nodes = g.GetListNodes(root);
IUriNode hasIndex = g.CreateUriNode(":hasIndex");
int index = 0;
foreach (INode node in nodes) {
    g.Assert(new Triple(node, hasIndex, index.ToLiteral(g)));
    index++;
}

Ce code ajoute un index a chaque noeud intermediaire de la liste.

Ou vous souhaiterez peut-être obtenir tous les triplets qui composent la liste :

// Cela nous donnera tous les triplets rdf:first et rdf:rest associés à la liste
IEnumerable<Triple> ts = g.GetListAsTriples(root);
ts.Display();
index value
0
_:b1 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 1^^http://www.w3.org/2001/XMLSchema#integer
Subject
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
1^^http://www.w3.org/2001/XMLSchema#integer
Value
1
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
1^^http://www.w3.org/2001/XMLSchema#integer
Value
1
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
IsGroundTriple
False
1
_:b1 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:b2
Subject
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
2
_:b2 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 2^^http://www.w3.org/2001/XMLSchema#integer
Subject
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
2^^http://www.w3.org/2001/XMLSchema#integer
Value
2
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
2^^http://www.w3.org/2001/XMLSchema#integer
Value
2
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
IsGroundTriple
False
3
_:b2 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:b3
Subject
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
4
_:b3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 3^^http://www.w3.org/2001/XMLSchema#integer
Subject
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
3^^http://www.w3.org/2001/XMLSchema#integer
Value
3
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
3^^http://www.w3.org/2001/XMLSchema#integer
Value
3
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
IsGroundTriple
False
5
_:b3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Subject
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#nil
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#nil
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
IsGroundTriple
False

GetListAsTriples() : Inspection complete

Cette méthode retourne tous les triplets constituant la liste :

Sortie attendue :

_:root rdf:first "1"^^xsd:integer .
_:root rdf:rest _:b1 .
_:b1 rdf:first "2"^^xsd:integer .
_:b1 rdf:rest _:b2 .
_:b2 rdf:first "3"^^xsd:integer .
_:b2 rdf:rest rdf:nil .

Cas d’usage : - Debugging de listes malformees - Export vers un autre graphe - Analyse de structure

IEnumerable<Triple> triples = g.GetListAsTriples(root);
Console.WriteLine($"La liste contient {triples.Count()} triplets");
// Sortie : "La liste contient 6 triplets"

e) Assertion et retrait de listes

Nous fournissons également des méthodes qui vous permettent d’asserter/retracter facilement une liste. L’assertion d’une liste nécessite une énumération de nœuds à utiliser comme éléments des listes. Vous pouvez utiliser soit un nœud existant comme racine de la liste, soit faire générer une nouvelle racine de liste pour vous, par exemple :

INode newRoot = g.AssertList(new List<INode>() { (true).ToLiteral(g), (false).ToLiteral(g) });
// Maintenant, nous pouvons utiliser newRoot comme nous le souhaitons dans notre graphe
g.Display();
VDS.RDF.Graph
UriFactory
VDS.RDF.CachingUriFactory
InternUris
True
Triples
[ http://example.org/ns#subj , http://example.org/ns#pred , _:b1, _:b1 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 1^^http://www.w3.org/2001/XMLSchema#integer, _:b1 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:b2, _:b2 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 2^^http://www.w3.org/2001/XMLSchema#integer, _:b2 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:b3, _:b3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 3^^http://www.w3.org/2001/XMLSchema#integer, _:b3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , http://www.w3.org/1999/02/22-rdf-syntax-ns#nil, _:autos3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , true^^http://www.w3.org/2001/XMLSchema#boolean, _:autos3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:autos4, _:autos4 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , false^^http://www.w3.org/2001/XMLSchema#boolean, _:autos4 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , http://www.w3.org/1999/02/22-rdf-syntax-ns#nil ]
ObjectNodes
[ _:b1, 1^^http://www.w3.org/2001/XMLSchema#integer, _:b2, 2^^http://www.w3.org/2001/XMLSchema#integer, _:b3, 3^^http://www.w3.org/2001/XMLSchema#integer, http://www.w3.org/1999/02/22-rdf-syntax-ns#nil, true^^http://www.w3.org/2001/XMLSchema#boolean, _:autos4, false^^http://www.w3.org/2001/XMLSchema#boolean ]
Count
10
IsReadOnly
True
(values)
index type value
0 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.LiteralNode
1^^http://www.w3.org/2001/XMLSchema#integer
Value
1
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
2 VDS.RDF.BlankNode
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
3 VDS.RDF.LiteralNode
2^^http://www.w3.org/2001/XMLSchema#integer
Value
2
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
4 VDS.RDF.BlankNode
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
5 VDS.RDF.LiteralNode
3^^http://www.w3.org/2001/XMLSchema#integer
Value
3
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
6 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#nil
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
7 VDS.RDF.LiteralNode
true^^http://www.w3.org/2001/XMLSchema#boolean
Value
true
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
8 VDS.RDF.BlankNode
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
9 VDS.RDF.LiteralNode
false^^http://www.w3.org/2001/XMLSchema#boolean
Value
false
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
PredicateNodes
[ http://example.org/ns#pred, http://www.w3.org/1999/02/22-rdf-syntax-ns#first, http://www.w3.org/1999/02/22-rdf-syntax-ns#rest ]
Count
3
IsReadOnly
True
(values)
index value
0
http://example.org/ns#pred
Uri
http://example.org/ns#pred
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#pred
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#pred
Scheme
http
OriginalString
http://example.org/ns#pred
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
1
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
SubjectNodes
[ http://example.org/ns#subj, _:b1, _:b2, _:b3, _:autos3, _:autos4 ]
Count
6
IsReadOnly
True
(values)
index type value
0 VDS.RDF.UriNode
http://example.org/ns#subj
Uri
http://example.org/ns#subj
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#subj
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#subj
Scheme
http
OriginalString
http://example.org/ns#subj
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
1 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
2 VDS.RDF.BlankNode
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
3 VDS.RDF.BlankNode
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
4 VDS.RDF.BlankNode
_:autos3
InternalID
autos3
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
5 VDS.RDF.BlankNode
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
QuotedObjectNodes
[ ]
Count
0
IsReadOnly
True
(values) (empty)
QuotedPredicateNodes
[ ]
Count
0
IsReadOnly
True
(values) (empty)
QuotedSubjectNodes
[ ]
Count
0
IsReadOnly
True
(values) (empty)
Count
11
QuotedCount
0
Asserted
index value
0
http://example.org/ns#subj , http://example.org/ns#pred , _:b1
Subject
http://example.org/ns#subj
Uri
http://example.org/ns#subj
AbsolutePath /ns
AbsoluteUri http://example.org/ns#subj
LocalPath /ns
Authority example.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /ns
Segments [ /, ns ]
IsUnc False
Host example.org
Port 80
Query
Fragment #subj
Scheme http
OriginalString http://example.org/ns#subj
DnsSafeHost example.org
IdnHost example.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Predicate
http://example.org/ns#pred
Uri
http://example.org/ns#pred
AbsolutePath /ns
AbsoluteUri http://example.org/ns#pred
LocalPath /ns
Authority example.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /ns
Segments [ /, ns ]
IsUnc False
Host example.org
Port 80
Query
Fragment #pred
Scheme http
OriginalString http://example.org/ns#pred
DnsSafeHost example.org
IdnHost example.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.UriNode
http://example.org/ns#subj
Uri http://example.org/ns#subj
EffectiveType
NumericType NaN
NodeType Uri
1 VDS.RDF.UriNode
http://example.org/ns#pred
Uri http://example.org/ns#pred
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:b1
InternalID b1
HasAutoAssignedID False
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
1
_:b1 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 1^^http://www.w3.org/2001/XMLSchema#integer
Subject
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
1^^http://www.w3.org/2001/XMLSchema#integer
Value
1
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#integer
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #integer
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b1
InternalID b1
HasAutoAssignedID False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
1^^http://www.w3.org/2001/XMLSchema#integer
Value 1
Language
DataType http://www.w3.org/2001/XMLSchema#integer
NodeType Literal
IsGroundTriple
False
2
_:b1 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:b2
Subject
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b1
InternalID b1
HasAutoAssignedID False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:b2
InternalID b2
HasAutoAssignedID False
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
3
_:b2 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 2^^http://www.w3.org/2001/XMLSchema#integer
Subject
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
2^^http://www.w3.org/2001/XMLSchema#integer
Value
2
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#integer
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #integer
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b2
InternalID b2
HasAutoAssignedID False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
2^^http://www.w3.org/2001/XMLSchema#integer
Value 2
Language
DataType http://www.w3.org/2001/XMLSchema#integer
NodeType Literal
IsGroundTriple
False
4
_:b2 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:b3
Subject
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b2
InternalID b2
HasAutoAssignedID False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:b3
InternalID b3
HasAutoAssignedID False
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
5
_:b3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 3^^http://www.w3.org/2001/XMLSchema#integer
Subject
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
3^^http://www.w3.org/2001/XMLSchema#integer
Value
3
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#integer
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #integer
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b3
InternalID b3
HasAutoAssignedID False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
3^^http://www.w3.org/2001/XMLSchema#integer
Value 3
Language
DataType http://www.w3.org/2001/XMLSchema#integer
NodeType Literal
IsGroundTriple
False
6
_:b3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Subject
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #nil
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b3
InternalID b3
HasAutoAssignedID False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
EffectiveType
NumericType NaN
NodeType Uri
IsGroundTriple
False
7
_:autos3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , true^^http://www.w3.org/2001/XMLSchema#boolean
Subject
_:autos3
InternalID
autos3
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
true^^http://www.w3.org/2001/XMLSchema#boolean
Value
true
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#boolean
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #boolean
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos3
InternalID autos3
HasAutoAssignedID True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
true^^http://www.w3.org/2001/XMLSchema#boolean
Value true
Language
DataType http://www.w3.org/2001/XMLSchema#boolean
NodeType Literal
IsGroundTriple
False
8
_:autos3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:autos4
Subject
_:autos3
InternalID
autos3
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos3
InternalID autos3
HasAutoAssignedID True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:autos4
InternalID autos4
HasAutoAssignedID True
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
9
_:autos4 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , false^^http://www.w3.org/2001/XMLSchema#boolean
Subject
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
false^^http://www.w3.org/2001/XMLSchema#boolean
Value
false
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#boolean
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #boolean
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos4
InternalID autos4
HasAutoAssignedID True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
false^^http://www.w3.org/2001/XMLSchema#boolean
Value false
Language
DataType http://www.w3.org/2001/XMLSchema#boolean
NodeType Literal
IsGroundTriple
False
10
_:autos4 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Subject
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #nil
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos4
InternalID autos4
HasAutoAssignedID True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
EffectiveType
NumericType NaN
NodeType Uri
IsGroundTriple
False
Quoted (empty)
(values)
index value
0
http://example.org/ns#subj , http://example.org/ns#pred , _:b1
Subject
http://example.org/ns#subj
Uri
http://example.org/ns#subj
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#subj
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#subj
Scheme
http
OriginalString
http://example.org/ns#subj
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Predicate
http://example.org/ns#pred
Uri
http://example.org/ns#pred
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#pred
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#pred
Scheme
http
OriginalString
http://example.org/ns#pred
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.UriNode
http://example.org/ns#subj
Uri
http://example.org/ns#subj
AbsolutePath /ns
AbsoluteUri http://example.org/ns#subj
LocalPath /ns
Authority example.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /ns
Segments [ /, ns ]
IsUnc False
Host example.org
Port 80
Query
Fragment #subj
Scheme http
OriginalString http://example.org/ns#subj
DnsSafeHost example.org
IdnHost example.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
1 VDS.RDF.UriNode
http://example.org/ns#pred
Uri
http://example.org/ns#pred
AbsolutePath /ns
AbsoluteUri http://example.org/ns#pred
LocalPath /ns
Authority example.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /ns
Segments [ /, ns ]
IsUnc False
Host example.org
Port 80
Query
Fragment #pred
Scheme http
OriginalString http://example.org/ns#pred
DnsSafeHost example.org
IdnHost example.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
1
_:b1 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 1^^http://www.w3.org/2001/XMLSchema#integer
Subject
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
1^^http://www.w3.org/2001/XMLSchema#integer
Value
1
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
1^^http://www.w3.org/2001/XMLSchema#integer
Value
1
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#integer
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #integer
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
IsGroundTriple
False
2
_:b1 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:b2
Subject
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
3
_:b2 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 2^^http://www.w3.org/2001/XMLSchema#integer
Subject
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
2^^http://www.w3.org/2001/XMLSchema#integer
Value
2
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
2^^http://www.w3.org/2001/XMLSchema#integer
Value
2
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#integer
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #integer
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
IsGroundTriple
False
4
_:b2 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:b3
Subject
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
5
_:b3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 3^^http://www.w3.org/2001/XMLSchema#integer
Subject
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
3^^http://www.w3.org/2001/XMLSchema#integer
Value
3
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
3^^http://www.w3.org/2001/XMLSchema#integer
Value
3
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#integer
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #integer
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
IsGroundTriple
False
6
_:b3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Subject
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#nil
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #nil
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
IsGroundTriple
False
7
_:autos3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , true^^http://www.w3.org/2001/XMLSchema#boolean
Subject
_:autos3
InternalID
autos3
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
true^^http://www.w3.org/2001/XMLSchema#boolean
Value
true
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos3
InternalID
autos3
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
true^^http://www.w3.org/2001/XMLSchema#boolean
Value
true
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#boolean
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #boolean
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
IsGroundTriple
False
8
_:autos3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:autos4
Subject
_:autos3
InternalID
autos3
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos3
InternalID
autos3
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
9
_:autos4 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , false^^http://www.w3.org/2001/XMLSchema#boolean
Subject
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
false^^http://www.w3.org/2001/XMLSchema#boolean
Value
false
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
false^^http://www.w3.org/2001/XMLSchema#boolean
Value
false
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#boolean
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #boolean
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
IsGroundTriple
False
10
_:autos4 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Subject
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#nil
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #nil
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
IsGroundTriple
False
QuotedTriples (empty)
Nodes
index type value
0 VDS.RDF.UriNode
http://example.org/ns#subj
Uri
http://example.org/ns#subj
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#subj
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#subj
Scheme
http
OriginalString
http://example.org/ns#subj
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
1 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
2 VDS.RDF.BlankNode
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
3 VDS.RDF.BlankNode
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
4 VDS.RDF.BlankNode
_:autos3
InternalID
autos3
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
5 VDS.RDF.BlankNode
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
6 VDS.RDF.LiteralNode
1^^http://www.w3.org/2001/XMLSchema#integer
Value
1
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
7 VDS.RDF.LiteralNode
2^^http://www.w3.org/2001/XMLSchema#integer
Value
2
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
8 VDS.RDF.LiteralNode
3^^http://www.w3.org/2001/XMLSchema#integer
Value
3
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
9 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#nil
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
10 VDS.RDF.LiteralNode
true^^http://www.w3.org/2001/XMLSchema#boolean
Value
true
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
11 VDS.RDF.LiteralNode
false^^http://www.w3.org/2001/XMLSchema#boolean
Value
false
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
AllNodes
index type value
0 VDS.RDF.UriNode
http://example.org/ns#subj
Uri
http://example.org/ns#subj
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#subj
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#subj
Scheme
http
OriginalString
http://example.org/ns#subj
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
1 VDS.RDF.UriNode
http://example.org/ns#pred
Uri
http://example.org/ns#pred
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#pred
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#pred
Scheme
http
OriginalString
http://example.org/ns#pred
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
3 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
4 VDS.RDF.LiteralNode
1^^http://www.w3.org/2001/XMLSchema#integer
Value
1
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
5 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
6 VDS.RDF.BlankNode
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
7 VDS.RDF.LiteralNode
2^^http://www.w3.org/2001/XMLSchema#integer
Value
2
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
8 VDS.RDF.BlankNode
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
9 VDS.RDF.LiteralNode
3^^http://www.w3.org/2001/XMLSchema#integer
Value
3
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
10 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#nil
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
11 VDS.RDF.BlankNode
_:autos3
InternalID
autos3
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
12 VDS.RDF.LiteralNode
true^^http://www.w3.org/2001/XMLSchema#boolean
Value
true
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
13 VDS.RDF.BlankNode
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
14 VDS.RDF.LiteralNode
false^^http://www.w3.org/2001/XMLSchema#boolean
Value
false
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
QuotedNodes (empty)
AllQuotedNodes (empty)
NamespaceMap
VDS.RDF.NamespaceMapper
Prefixes
[ rdf, rdfs, xsd, ex ]
BaseUri
<null>
Name
<null>
IsEmpty
False
NormalizeLiteralValues
False
LanguageTagValidation Turtle

Creation dynamique de listes

La méthode AssertList() créé une liste complete en une seule opération :

Paramètre Type Description
items List<INode> Éléments a inclure
Retour INode Racine de la liste (a conserver)

Ce qui est créé automatiquement : 1. Noeuds blancs intermediaires (_:b1, _:b2, etc.) 2. Triplets rdf:first pour chaque valeur 3. Triplets rdf:rest pour le chainage 4. Terminaison avec rdf:nil

// Une ligne créé 6 triplets
INode root = g.AssertList(new List<INode>() {
    (true).ToLiteral(g),
    (false).ToLiteral(g)
});

Triplets generes :

_:root rdf:first true .
_:root rdf:rest _:b1 .
_:b1 rdf:first false .
_:b1 rdf:rest rdf:nil .

Important : Conserver la reference root pour acceder a la liste ulterieurement.

Le retrait d’une liste est beaucoup plus simple si nous connaissons la racine de la liste :

// Retracte tous les triplets associés à la liste
g.RetractList(root);
g.Display();
VDS.RDF.Graph
UriFactory
VDS.RDF.CachingUriFactory
InternUris
True
Triples
[ http://example.org/ns#subj , http://example.org/ns#pred , _:b1, _:autos3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , true^^http://www.w3.org/2001/XMLSchema#boolean, _:autos3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:autos4, _:autos4 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , false^^http://www.w3.org/2001/XMLSchema#boolean, _:autos4 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , http://www.w3.org/1999/02/22-rdf-syntax-ns#nil ]
ObjectNodes
[ _:b1, http://www.w3.org/1999/02/22-rdf-syntax-ns#nil, true^^http://www.w3.org/2001/XMLSchema#boolean, _:autos4, false^^http://www.w3.org/2001/XMLSchema#boolean ]
Count
5
IsReadOnly
True
(values)
index type value
0 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#nil
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
true^^http://www.w3.org/2001/XMLSchema#boolean
Value
true
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
3 VDS.RDF.BlankNode
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
4 VDS.RDF.LiteralNode
false^^http://www.w3.org/2001/XMLSchema#boolean
Value
false
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
PredicateNodes
[ http://example.org/ns#pred, http://www.w3.org/1999/02/22-rdf-syntax-ns#first, http://www.w3.org/1999/02/22-rdf-syntax-ns#rest ]
Count
3
IsReadOnly
True
(values)
index value
0
http://example.org/ns#pred
Uri
http://example.org/ns#pred
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#pred
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#pred
Scheme
http
OriginalString
http://example.org/ns#pred
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
1
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
SubjectNodes
[ http://example.org/ns#subj, _:autos3, _:autos4 ]
Count
3
IsReadOnly
True
(values)
index type value
0 VDS.RDF.UriNode
http://example.org/ns#subj
Uri
http://example.org/ns#subj
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#subj
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#subj
Scheme
http
OriginalString
http://example.org/ns#subj
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
1 VDS.RDF.BlankNode
_:autos3
InternalID
autos3
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
2 VDS.RDF.BlankNode
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
QuotedObjectNodes
[ ]
Count
0
IsReadOnly
True
(values) (empty)
QuotedPredicateNodes
[ ]
Count
0
IsReadOnly
True
(values) (empty)
QuotedSubjectNodes
[ ]
Count
0
IsReadOnly
True
(values) (empty)
Count
5
QuotedCount
0
Asserted
index value
0
http://example.org/ns#subj , http://example.org/ns#pred , _:b1
Subject
http://example.org/ns#subj
Uri
http://example.org/ns#subj
AbsolutePath /ns
AbsoluteUri http://example.org/ns#subj
LocalPath /ns
Authority example.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /ns
Segments [ /, ns ]
IsUnc False
Host example.org
Port 80
Query
Fragment #subj
Scheme http
OriginalString http://example.org/ns#subj
DnsSafeHost example.org
IdnHost example.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Predicate
http://example.org/ns#pred
Uri
http://example.org/ns#pred
AbsolutePath /ns
AbsoluteUri http://example.org/ns#pred
LocalPath /ns
Authority example.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /ns
Segments [ /, ns ]
IsUnc False
Host example.org
Port 80
Query
Fragment #pred
Scheme http
OriginalString http://example.org/ns#pred
DnsSafeHost example.org
IdnHost example.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.UriNode
http://example.org/ns#subj
Uri http://example.org/ns#subj
EffectiveType
NumericType NaN
NodeType Uri
1 VDS.RDF.UriNode
http://example.org/ns#pred
Uri http://example.org/ns#pred
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:b1
InternalID b1
HasAutoAssignedID False
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
1
_:autos3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , true^^http://www.w3.org/2001/XMLSchema#boolean
Subject
_:autos3
InternalID
autos3
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
true^^http://www.w3.org/2001/XMLSchema#boolean
Value
true
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#boolean
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #boolean
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos3
InternalID autos3
HasAutoAssignedID True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
true^^http://www.w3.org/2001/XMLSchema#boolean
Value true
Language
DataType http://www.w3.org/2001/XMLSchema#boolean
NodeType Literal
IsGroundTriple
False
2
_:autos3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:autos4
Subject
_:autos3
InternalID
autos3
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos3
InternalID autos3
HasAutoAssignedID True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:autos4
InternalID autos4
HasAutoAssignedID True
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
3
_:autos4 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , false^^http://www.w3.org/2001/XMLSchema#boolean
Subject
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
false^^http://www.w3.org/2001/XMLSchema#boolean
Value
false
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#boolean
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #boolean
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos4
InternalID autos4
HasAutoAssignedID True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
false^^http://www.w3.org/2001/XMLSchema#boolean
Value false
Language
DataType http://www.w3.org/2001/XMLSchema#boolean
NodeType Literal
IsGroundTriple
False
4
_:autos4 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Subject
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #nil
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos4
InternalID autos4
HasAutoAssignedID True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
EffectiveType
NumericType NaN
NodeType Uri
IsGroundTriple
False
Quoted (empty)
(values)
index value
0
http://example.org/ns#subj , http://example.org/ns#pred , _:b1
Subject
http://example.org/ns#subj
Uri
http://example.org/ns#subj
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#subj
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#subj
Scheme
http
OriginalString
http://example.org/ns#subj
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Predicate
http://example.org/ns#pred
Uri
http://example.org/ns#pred
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#pred
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#pred
Scheme
http
OriginalString
http://example.org/ns#pred
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.UriNode
http://example.org/ns#subj
Uri
http://example.org/ns#subj
AbsolutePath /ns
AbsoluteUri http://example.org/ns#subj
LocalPath /ns
Authority example.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /ns
Segments [ /, ns ]
IsUnc False
Host example.org
Port 80
Query
Fragment #subj
Scheme http
OriginalString http://example.org/ns#subj
DnsSafeHost example.org
IdnHost example.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
1 VDS.RDF.UriNode
http://example.org/ns#pred
Uri
http://example.org/ns#pred
AbsolutePath /ns
AbsoluteUri http://example.org/ns#pred
LocalPath /ns
Authority example.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /ns
Segments [ /, ns ]
IsUnc False
Host example.org
Port 80
Query
Fragment #pred
Scheme http
OriginalString http://example.org/ns#pred
DnsSafeHost example.org
IdnHost example.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
1
_:autos3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , true^^http://www.w3.org/2001/XMLSchema#boolean
Subject
_:autos3
InternalID
autos3
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
true^^http://www.w3.org/2001/XMLSchema#boolean
Value
true
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos3
InternalID
autos3
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
true^^http://www.w3.org/2001/XMLSchema#boolean
Value
true
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#boolean
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #boolean
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
IsGroundTriple
False
2
_:autos3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:autos4
Subject
_:autos3
InternalID
autos3
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos3
InternalID
autos3
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
3
_:autos4 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , false^^http://www.w3.org/2001/XMLSchema#boolean
Subject
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
false^^http://www.w3.org/2001/XMLSchema#boolean
Value
false
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
false^^http://www.w3.org/2001/XMLSchema#boolean
Value
false
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#boolean
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #boolean
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
IsGroundTriple
False
4
_:autos4 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Subject
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#nil
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #nil
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
IsGroundTriple
False
QuotedTriples (empty)
Nodes
index type value
0 VDS.RDF.UriNode
http://example.org/ns#subj
Uri
http://example.org/ns#subj
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#subj
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#subj
Scheme
http
OriginalString
http://example.org/ns#subj
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
1 VDS.RDF.BlankNode
_:autos3
InternalID
autos3
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
2 VDS.RDF.BlankNode
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
3 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
4 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#nil
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
5 VDS.RDF.LiteralNode
true^^http://www.w3.org/2001/XMLSchema#boolean
Value
true
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
6 VDS.RDF.LiteralNode
false^^http://www.w3.org/2001/XMLSchema#boolean
Value
false
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
AllNodes
index type value
0 VDS.RDF.UriNode
http://example.org/ns#subj
Uri
http://example.org/ns#subj
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#subj
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#subj
Scheme
http
OriginalString
http://example.org/ns#subj
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
1 VDS.RDF.UriNode
http://example.org/ns#pred
Uri
http://example.org/ns#pred
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#pred
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#pred
Scheme
http
OriginalString
http://example.org/ns#pred
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
3 VDS.RDF.BlankNode
_:autos3
InternalID
autos3
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
4 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
5 VDS.RDF.LiteralNode
true^^http://www.w3.org/2001/XMLSchema#boolean
Value
true
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
6 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
7 VDS.RDF.BlankNode
_:autos4
InternalID
autos4
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
8 VDS.RDF.LiteralNode
false^^http://www.w3.org/2001/XMLSchema#boolean
Value
false
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
9 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#nil
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
QuotedNodes (empty)
AllQuotedNodes (empty)
NamespaceMap
VDS.RDF.NamespaceMapper
Prefixes
[ rdf, rdfs, xsd, ex ]
BaseUri
<null>
Name
<null>
IsEmpty
False
NormalizeLiteralValues
False
LanguageTagValidation Turtle

Suppression de listes

RetractList() supprime recursivement tous les triplets de la liste :

Méthode Effet Triplets supprimes
RetractList(root) Supprime la liste entiere Tous les rdf:first et rdf:rest
Retract(triple) Supprime un triplet Un seul

Comportement : 1. Suit recursivement les rdf:rest 2. Supprime chaque triplet rdf:first et rdf:rest 3. S’arrete a rdf:nil

// Avant
// 6 triplets dans le graphe

g.RetractList(root);

// Après
// 0 triplets (si c'etait la seule liste)

Attention : Si plusieurs listes partagent des noeuds (rare mais possible), la suppression peut affecter plusieurs listes.

f) Ajout et suppression d’éléments des listes

Vous pouvez ajouter et supprimer des éléments des listes à l’aide de méthodes pratiques également. Pour ajouter de nouveaux éléments à la fin d’une liste, vous pouvez faire ce qui suit :

g= new Graph();
parser.Load(g, new StringReader(rdfData));
g.AddToList(root, new List<INode>() { (true).ToLiteral(g), (false).ToLiteral(g) });
g.Display();
VDS.RDF.Graph
UriFactory
VDS.RDF.CachingUriFactory
InternUris
True
Triples
[ http://example.org/ns#subj , http://example.org/ns#pred , _:b1, _:b1 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 1^^http://www.w3.org/2001/XMLSchema#integer, _:b1 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:b2, _:b2 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 2^^http://www.w3.org/2001/XMLSchema#integer, _:b2 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:b3, _:b3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 3^^http://www.w3.org/2001/XMLSchema#integer, _:b3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:autos5, _:autos5 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , true^^http://www.w3.org/2001/XMLSchema#boolean, _:autos5 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:autos6, _:autos6 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , false^^http://www.w3.org/2001/XMLSchema#boolean, _:autos6 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , http://www.w3.org/1999/02/22-rdf-syntax-ns#nil ]
ObjectNodes
[ _:b1, 1^^http://www.w3.org/2001/XMLSchema#integer, _:b2, 2^^http://www.w3.org/2001/XMLSchema#integer, _:b3, 3^^http://www.w3.org/2001/XMLSchema#integer, _:autos5, true^^http://www.w3.org/2001/XMLSchema#boolean, _:autos6, false^^http://www.w3.org/2001/XMLSchema#boolean, http://www.w3.org/1999/02/22-rdf-syntax-ns#nil ]
Count
11
IsReadOnly
True
(values)
index type value
0 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.LiteralNode
1^^http://www.w3.org/2001/XMLSchema#integer
Value
1
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
2 VDS.RDF.BlankNode
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
3 VDS.RDF.LiteralNode
2^^http://www.w3.org/2001/XMLSchema#integer
Value
2
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
4 VDS.RDF.BlankNode
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
5 VDS.RDF.LiteralNode
3^^http://www.w3.org/2001/XMLSchema#integer
Value
3
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
6 VDS.RDF.BlankNode
_:autos5
InternalID
autos5
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
7 VDS.RDF.LiteralNode
true^^http://www.w3.org/2001/XMLSchema#boolean
Value
true
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
8 VDS.RDF.BlankNode
_:autos6
InternalID
autos6
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
9 VDS.RDF.LiteralNode
false^^http://www.w3.org/2001/XMLSchema#boolean
Value
false
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
10 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#nil
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
PredicateNodes
[ http://example.org/ns#pred, http://www.w3.org/1999/02/22-rdf-syntax-ns#first, http://www.w3.org/1999/02/22-rdf-syntax-ns#rest ]
Count
3
IsReadOnly
True
(values)
index value
0
http://example.org/ns#pred
Uri
http://example.org/ns#pred
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#pred
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#pred
Scheme
http
OriginalString
http://example.org/ns#pred
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
1
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
SubjectNodes
[ http://example.org/ns#subj, _:b1, _:b2, _:b3, _:autos5, _:autos6 ]
Count
6
IsReadOnly
True
(values)
index type value
0 VDS.RDF.UriNode
http://example.org/ns#subj
Uri
http://example.org/ns#subj
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#subj
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#subj
Scheme
http
OriginalString
http://example.org/ns#subj
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
1 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
2 VDS.RDF.BlankNode
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
3 VDS.RDF.BlankNode
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
4 VDS.RDF.BlankNode
_:autos5
InternalID
autos5
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
5 VDS.RDF.BlankNode
_:autos6
InternalID
autos6
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
QuotedObjectNodes
[ ]
Count
0
IsReadOnly
True
(values) (empty)
QuotedPredicateNodes
[ ]
Count
0
IsReadOnly
True
(values) (empty)
QuotedSubjectNodes
[ ]
Count
0
IsReadOnly
True
(values) (empty)
Count
11
QuotedCount
0
Asserted
index value
0
http://example.org/ns#subj , http://example.org/ns#pred , _:b1
Subject
http://example.org/ns#subj
Uri
http://example.org/ns#subj
AbsolutePath /ns
AbsoluteUri http://example.org/ns#subj
LocalPath /ns
Authority example.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /ns
Segments [ /, ns ]
IsUnc False
Host example.org
Port 80
Query
Fragment #subj
Scheme http
OriginalString http://example.org/ns#subj
DnsSafeHost example.org
IdnHost example.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Predicate
http://example.org/ns#pred
Uri
http://example.org/ns#pred
AbsolutePath /ns
AbsoluteUri http://example.org/ns#pred
LocalPath /ns
Authority example.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /ns
Segments [ /, ns ]
IsUnc False
Host example.org
Port 80
Query
Fragment #pred
Scheme http
OriginalString http://example.org/ns#pred
DnsSafeHost example.org
IdnHost example.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.UriNode
http://example.org/ns#subj
Uri http://example.org/ns#subj
EffectiveType
NumericType NaN
NodeType Uri
1 VDS.RDF.UriNode
http://example.org/ns#pred
Uri http://example.org/ns#pred
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:b1
InternalID b1
HasAutoAssignedID False
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
1
_:b1 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 1^^http://www.w3.org/2001/XMLSchema#integer
Subject
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
1^^http://www.w3.org/2001/XMLSchema#integer
Value
1
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#integer
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #integer
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b1
InternalID b1
HasAutoAssignedID False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
1^^http://www.w3.org/2001/XMLSchema#integer
Value 1
Language
DataType http://www.w3.org/2001/XMLSchema#integer
NodeType Literal
IsGroundTriple
False
2
_:b1 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:b2
Subject
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b1
InternalID b1
HasAutoAssignedID False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:b2
InternalID b2
HasAutoAssignedID False
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
3
_:b2 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 2^^http://www.w3.org/2001/XMLSchema#integer
Subject
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
2^^http://www.w3.org/2001/XMLSchema#integer
Value
2
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#integer
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #integer
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b2
InternalID b2
HasAutoAssignedID False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
2^^http://www.w3.org/2001/XMLSchema#integer
Value 2
Language
DataType http://www.w3.org/2001/XMLSchema#integer
NodeType Literal
IsGroundTriple
False
4
_:b2 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:b3
Subject
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b2
InternalID b2
HasAutoAssignedID False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:b3
InternalID b3
HasAutoAssignedID False
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
5
_:b3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 3^^http://www.w3.org/2001/XMLSchema#integer
Subject
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
3^^http://www.w3.org/2001/XMLSchema#integer
Value
3
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#integer
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #integer
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b3
InternalID b3
HasAutoAssignedID False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
3^^http://www.w3.org/2001/XMLSchema#integer
Value 3
Language
DataType http://www.w3.org/2001/XMLSchema#integer
NodeType Literal
IsGroundTriple
False
6
_:b3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:autos5
Subject
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:autos5
InternalID
autos5
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b3
InternalID b3
HasAutoAssignedID False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:autos5
InternalID autos5
HasAutoAssignedID True
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
7
_:autos5 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , true^^http://www.w3.org/2001/XMLSchema#boolean
Subject
_:autos5
InternalID
autos5
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
true^^http://www.w3.org/2001/XMLSchema#boolean
Value
true
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#boolean
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #boolean
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos5
InternalID autos5
HasAutoAssignedID True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
true^^http://www.w3.org/2001/XMLSchema#boolean
Value true
Language
DataType http://www.w3.org/2001/XMLSchema#boolean
NodeType Literal
IsGroundTriple
False
8
_:autos5 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:autos6
Subject
_:autos5
InternalID
autos5
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:autos6
InternalID
autos6
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos5
InternalID autos5
HasAutoAssignedID True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:autos6
InternalID autos6
HasAutoAssignedID True
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
9
_:autos6 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , false^^http://www.w3.org/2001/XMLSchema#boolean
Subject
_:autos6
InternalID
autos6
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
false^^http://www.w3.org/2001/XMLSchema#boolean
Value
false
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#boolean
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #boolean
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos6
InternalID autos6
HasAutoAssignedID True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
false^^http://www.w3.org/2001/XMLSchema#boolean
Value false
Language
DataType http://www.w3.org/2001/XMLSchema#boolean
NodeType Literal
IsGroundTriple
False
10
_:autos6 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Subject
_:autos6
InternalID
autos6
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #nil
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos6
InternalID autos6
HasAutoAssignedID True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
EffectiveType
NumericType NaN
NodeType Uri
IsGroundTriple
False
Quoted (empty)
(values)
index value
0
http://example.org/ns#subj , http://example.org/ns#pred , _:b1
Subject
http://example.org/ns#subj
Uri
http://example.org/ns#subj
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#subj
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#subj
Scheme
http
OriginalString
http://example.org/ns#subj
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Predicate
http://example.org/ns#pred
Uri
http://example.org/ns#pred
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#pred
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#pred
Scheme
http
OriginalString
http://example.org/ns#pred
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.UriNode
http://example.org/ns#subj
Uri
http://example.org/ns#subj
AbsolutePath /ns
AbsoluteUri http://example.org/ns#subj
LocalPath /ns
Authority example.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /ns
Segments [ /, ns ]
IsUnc False
Host example.org
Port 80
Query
Fragment #subj
Scheme http
OriginalString http://example.org/ns#subj
DnsSafeHost example.org
IdnHost example.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
1 VDS.RDF.UriNode
http://example.org/ns#pred
Uri
http://example.org/ns#pred
AbsolutePath /ns
AbsoluteUri http://example.org/ns#pred
LocalPath /ns
Authority example.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /ns
Segments [ /, ns ]
IsUnc False
Host example.org
Port 80
Query
Fragment #pred
Scheme http
OriginalString http://example.org/ns#pred
DnsSafeHost example.org
IdnHost example.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
1
_:b1 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 1^^http://www.w3.org/2001/XMLSchema#integer
Subject
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
1^^http://www.w3.org/2001/XMLSchema#integer
Value
1
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
1^^http://www.w3.org/2001/XMLSchema#integer
Value
1
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#integer
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #integer
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
IsGroundTriple
False
2
_:b1 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:b2
Subject
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
3
_:b2 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 2^^http://www.w3.org/2001/XMLSchema#integer
Subject
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
2^^http://www.w3.org/2001/XMLSchema#integer
Value
2
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
2^^http://www.w3.org/2001/XMLSchema#integer
Value
2
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#integer
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #integer
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
IsGroundTriple
False
4
_:b2 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:b3
Subject
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
5
_:b3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , 3^^http://www.w3.org/2001/XMLSchema#integer
Subject
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
3^^http://www.w3.org/2001/XMLSchema#integer
Value
3
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
3^^http://www.w3.org/2001/XMLSchema#integer
Value
3
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#integer
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #integer
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
IsGroundTriple
False
6
_:b3 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:autos5
Subject
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:autos5
InternalID
autos5
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:autos5
InternalID
autos5
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
7
_:autos5 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , true^^http://www.w3.org/2001/XMLSchema#boolean
Subject
_:autos5
InternalID
autos5
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
true^^http://www.w3.org/2001/XMLSchema#boolean
Value
true
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos5
InternalID
autos5
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
true^^http://www.w3.org/2001/XMLSchema#boolean
Value
true
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#boolean
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #boolean
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
IsGroundTriple
False
8
_:autos5 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , _:autos6
Subject
_:autos5
InternalID
autos5
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
_:autos6
InternalID
autos6
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos5
InternalID
autos5
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:autos6
InternalID
autos6
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
IsGroundTriple
False
9
_:autos6 , http://www.w3.org/1999/02/22-rdf-syntax-ns#first , false^^http://www.w3.org/2001/XMLSchema#boolean
Subject
_:autos6
InternalID
autos6
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
false^^http://www.w3.org/2001/XMLSchema#boolean
Value
false
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos6
InternalID
autos6
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #first
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.LiteralNode
false^^http://www.w3.org/2001/XMLSchema#boolean
Value
false
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath /2001/XMLSchema
AbsoluteUri http://www.w3.org/2001/XMLSchema#boolean
LocalPath /2001/XMLSchema
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /2001/XMLSchema
Segments [ /, 2001/, XMLSchema ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #boolean
Scheme http
OriginalString http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
NodeType Literal
IsGroundTriple
False
10
_:autos6 , http://www.w3.org/1999/02/22-rdf-syntax-ns#rest , http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Subject
_:autos6
InternalID
autos6
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
Predicate
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Object
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#nil
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
Context
<null>
Nodes
index type value
0 VDS.RDF.BlankNode
_:autos6
InternalID
autos6
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
1 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #rest
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath /1999/02/22-rdf-syntax-ns
AbsoluteUri http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath /1999/02/22-rdf-syntax-ns
Authority www.w3.org
HostNameType Dns
IsDefaultPort True
IsFile False
IsLoopback False
PathAndQuery /1999/02/22-rdf-syntax-ns
Segments [ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc False
Host www.w3.org
Port 80
Query
Fragment #nil
Scheme http
OriginalString http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost www.w3.org
IdnHost www.w3.org
IsAbsoluteUri True
UserEscaped False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
IsGroundTriple
False
QuotedTriples (empty)
Nodes
index type value
0 VDS.RDF.UriNode
http://example.org/ns#subj
Uri
http://example.org/ns#subj
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#subj
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#subj
Scheme
http
OriginalString
http://example.org/ns#subj
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
1 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
2 VDS.RDF.BlankNode
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
3 VDS.RDF.BlankNode
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
4 VDS.RDF.BlankNode
_:autos5
InternalID
autos5
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
5 VDS.RDF.BlankNode
_:autos6
InternalID
autos6
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
6 VDS.RDF.LiteralNode
1^^http://www.w3.org/2001/XMLSchema#integer
Value
1
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
7 VDS.RDF.LiteralNode
2^^http://www.w3.org/2001/XMLSchema#integer
Value
2
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
8 VDS.RDF.LiteralNode
3^^http://www.w3.org/2001/XMLSchema#integer
Value
3
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
9 VDS.RDF.LiteralNode
true^^http://www.w3.org/2001/XMLSchema#boolean
Value
true
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
10 VDS.RDF.LiteralNode
false^^http://www.w3.org/2001/XMLSchema#boolean
Value
false
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
11 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#nil
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
AllNodes
index type value
0 VDS.RDF.UriNode
http://example.org/ns#subj
Uri
http://example.org/ns#subj
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#subj
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#subj
Scheme
http
OriginalString
http://example.org/ns#subj
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
1 VDS.RDF.UriNode
http://example.org/ns#pred
Uri
http://example.org/ns#pred
AbsolutePath
/ns
AbsoluteUri
http://example.org/ns#pred
LocalPath
/ns
Authority
example.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/ns
Segments
[ /, ns ]
IsUnc
False
Host
example.org
Port
80
Query
Fragment
#pred
Scheme
http
OriginalString
http://example.org/ns#pred
DnsSafeHost
example.org
IdnHost
example.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2 VDS.RDF.BlankNode
_:b1
InternalID
b1
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
3 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#first
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#first
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
4 VDS.RDF.LiteralNode
1^^http://www.w3.org/2001/XMLSchema#integer
Value
1
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
5 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#rest
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
6 VDS.RDF.BlankNode
_:b2
InternalID
b2
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
7 VDS.RDF.LiteralNode
2^^http://www.w3.org/2001/XMLSchema#integer
Value
2
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
8 VDS.RDF.BlankNode
_:b3
InternalID
b3
HasAutoAssignedID
False
EffectiveType
NumericType NaN
NodeType Blank
9 VDS.RDF.LiteralNode
3^^http://www.w3.org/2001/XMLSchema#integer
Value
3
Language
DataType
http://www.w3.org/2001/XMLSchema#integer
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#integer
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#integer
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#integer
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
10 VDS.RDF.BlankNode
_:autos5
InternalID
autos5
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
11 VDS.RDF.LiteralNode
true^^http://www.w3.org/2001/XMLSchema#boolean
Value
true
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
12 VDS.RDF.BlankNode
_:autos6
InternalID
autos6
HasAutoAssignedID
True
EffectiveType
NumericType NaN
NodeType Blank
13 VDS.RDF.LiteralNode
false^^http://www.w3.org/2001/XMLSchema#boolean
Value
false
Language
DataType
http://www.w3.org/2001/XMLSchema#boolean
AbsolutePath
/2001/XMLSchema
AbsoluteUri
http://www.w3.org/2001/XMLSchema#boolean
LocalPath
/2001/XMLSchema
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/2001/XMLSchema
Segments
[ /, 2001/, XMLSchema ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#boolean
Scheme
http
OriginalString
http://www.w3.org/2001/XMLSchema#boolean
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
NodeType Literal
14 VDS.RDF.UriNode
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
Uri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
AbsolutePath
/1999/02/22-rdf-syntax-ns
AbsoluteUri
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
LocalPath
/1999/02/22-rdf-syntax-ns
Authority
www.w3.org
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/1999/02/22-rdf-syntax-ns
Segments
[ /, 1999/, 02/, 22-rdf-syntax-ns ]
IsUnc
False
Host
www.w3.org
Port
80
Query
Fragment
#nil
Scheme
http
OriginalString
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
DnsSafeHost
www.w3.org
IdnHost
www.w3.org
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
QuotedNodes (empty)
AllQuotedNodes (empty)
NamespaceMap
VDS.RDF.NamespaceMapper
Prefixes
[ rdf, rdfs, xsd, ex ]
BaseUri
<null>
Name
<null>
IsEmpty
False
NormalizeLiteralValues
False
LanguageTagValidation Turtle

Ajout d’éléments a une liste existante

AddToList() ajoute des éléments a la fin d’une liste RDF :

Avant Après ajout de [true, false]
[1, 2, 3] [1, 2, 3, true, false]

Mécanisme : 1. Trouve le dernier noeud (celui qui pointe vers rdf:nil) 2. Remplace dernierNoeud rdf:rest rdf:nil par dernierNoeud rdf:rest nouveauNoeud 3. Construit la nouvelle sous-liste 4. Termine par rdf:nil

// Liste initiale : [1, 2, 3]
g.AddToList(root, new List<INode>() {
    (true).ToLiteral(g),
    (false).ToLiteral(g)
});
// Résultat : [1, 2, 3, true, false]

Performance : O(n) ou n est la longueur de la liste (doit parcourir jusqu’a la fin).

Pour supprimer des éléments d’une liste, indépendamment de leur position dans la liste, faites ce qui suit :

g.RemoveFromList(root, new List<INode>() { (true).ToLiteral(g), (false).ToLiteral(g) });
Console.WriteLine($"Liste RDF modifiée : {g.Triples.Count} triplets dans le graphe");
Liste RDF modifiée : 7 triplets dans le graphe

Suppression selective d’éléments

RemoveFromList() supprime toutes les occurrences d’éléments specifies :

Liste initiale Éléments a supprimer Résultat
[1, 2, 3, 2, 1] [1, 2] [3]
[1, 2, 3] [4] [1, 2, 3] (inchange)

Comportement important : - Supprime TOUTES les occurrences (pas seulement la première) - Preserve l’ordre des éléments restants - Reconstruit les liens rdf:rest

// Liste : [true, false, true, false]
g.RemoveFromList(root, new List<INode>() {
    (true).ToLiteral(g)
});
// Résultat : [false, false]

Note : Si vous voulez supprimer seulement la première occurrence, vous devez parcourir manuellement avec GetListNodes().

Notez que si un élément existe plusieurs fois dans la liste, toutes les occurrences de celui-ci sont supprimées par cette méthode.

6. Travailler avec les Triple Store

Les Triple Stores dans dotNetRDF sont utilisés pour représenter des collections de graphes et vous permettent de travailler avec de plus grandes quantités de RDF facilement. Un Triple Store peut être une représentation en mémoire des graphes ou une interface vers un magasin sous-jacent réel.

Les propriétés de base d’un Triple Store sont les suivantes :

  • Graphs : Permet d’obtenir la collection de graphes présents dans le Triple Store.
  • IsEmpty : Indique si le Triple Store est vide, c’est-à-dire s’il ne contient aucun graphe.
  • Triples : Permet d’obtenir la collection de triplets de tous les graphes présents dans le Triple Store.

Vous pouvez accéder à un graphe spécifique dans le Triple Store en utilisant l’indexeur avec l’URI du graphe.

Le Triple Store propose également des méthodes pour vérifier l’existence d’un graphe, ajouter des graphes, les supprimer, et exécuter des requêtes.

Il existe deux types de Triple Stores :

  • Les Triple Stores en mémoire : Ils permettent d’interroger l’ensemble du store et offrent des méthodes similaires à celles de l’interface IGraph pour récupérer des triplets.
  • Les Triple Stores nativement interrogeables : Ils fournissent leur propre implémentation SPARQL et peuvent être interrogés directement à l’aide de méthodes ExecuteQuery prenant une requête SPARQL en chaîne.

Pour charger et enregistrer des Triple Stores, vous pouvez utiliser différents formats de jeu de données RDF tels que TriG, TriX et NQuads. Vous pouvez utiliser les classes TriGParser et TriGWriter pour charger et enregistrer des stores au format TriG, par exemple.

En résumé, les Triple Stores permettent de travailler avec des collections de graphes RDF. Ils offrent des fonctionnalités pour manipuler les graphes, exécuter des requêtes et charger/enregistrer des stores dans différents formats de jeu de données RDF.

Voici un exemple de code pour charger un Triple Store à partir d’un fichier TriG et l’enregistrer dans un autre fichier TriG :

TripleStore store = new TripleStore();
TriGParser parser = new TriGParser();
parser.Load(store, "input.trig");

TriGWriter writer = new TriGWriter();
writer.Save(store, "output.tr

ig");

Exemple plus détaillé

using System;
using VDS.RDF;
using VDS.RDF.Storage;

public class PersistentTripleStoreExample
{
    public static void Main(string[] args)
    {
        // Créer une connexion à 4store dans cet exemple
        FourStoreConnector store = new FourStoreConnector("http://example.com:8080/");
        PersistentTripleStore tripleStore = new PersistentTripleStore(store);

        // Vérifier si un graphe existe dans le store
        // Si le graphe existe dans le store sous-jacent, il sera chargé en mémoire
        if (tripleStore.HasGraph(new Uri("http://example.org/someGraph")))
        {
            // Obtenir le graphe de la vue en mémoire (notez que s'il change dans le store sous-jacent entre-temps, vous ne verrez pas ces changements)
            Graph g = tripleStore.Graph(new Uri("http://example.org/someGraph"));

            // Faire quelque chose avec le graphe...
        }

        // Si vous ajoutez un graphe au store, il sera ajouté uniquement à l'état en mémoire initialement
        Graph toAdd = new Graph();
        toAdd.LoadFromUri(new Uri("http://example.org/newGraph"));
        tripleStore.Add(toAdd);

        // Pour vous assurer que le nouveau graphe est enregistré, appelez Flush()
        tripleStore.Flush();

        // Vous pouvez également utiliser cette classe pour effectuer des requêtes/mises à jour sur le store sous-jacent
        // Remarque - Si vous avez apporté des modifications à l'état en mémoire du store, effectuer une requête/mise à jour provoquera une erreur à moins que vous n'ayez
        // persisté ces modifications
        // Utilisez Flush() ou Discard() pour vous assurer que l'état du store est cohérent pour l'interrogation

        // Effectuer une requête sur le store
        // Vous devriez obtenir un SparqlResultSet à partir d'une requête SELECT
        object results = tripleStore.ExecuteQuery("SELECT * WHERE {?s ?p ?o}");
        if (results is SparqlResultSet)
        {
            // Afficher les résultats
            SparqlResultSet resultSet = (SparqlResultSet)results;
            foreach (SparqlResult result in resultSet)
            {
                Console.WriteLine(result.ToString());
            }
        }
    }
}

Ce qui précède démontre comment créer, charger, manipuler et interroger un triple store à l’aide de dotNetRDF. Les triple stores offrent un moyen puissant et flexible de travailler avec de grandes quantités de données RDF, rendant la gestion et l’interrogation de graphes RDF plus efficaces et plus pratiques.

Conclusion : Manipulation des listes RDF

Les listes RDF sont des structures chainees encodees en triplets. dotNetRDF fournit une abstraction complete :

Opération Méthode Complexite
Lire valeurs GetListItems() O(n)
Lire noeuds GetListNodes() O(n)
Inspecter triplets GetListAsTriples() O(n)
Créer liste AssertList() O(n)
Ajouter éléments AddToList() O(n)
Supprimer éléments RemoveFromList() O(n)
Detruire liste RetractList() O(n)

Representations equivalentes :

Format Representation
Conceptuel [1, 2, 3]
Triplets RDF _:r rdf:first 1; rdf:rest _:b1. _:b1 rdf:first 2; ...
Code C# g.AssertList(new List<INode>{...})

Quand utiliser les listes RDF ? : Collections ordonnees dans des ontologies, sequences d’étapes, chemins, etc. Pour des collections non ordonnees, preferer rdf:Bag ou rdf:Set.

7. Créer des requêtes avec SPARQL

SPARQL est un langage de requête pour les données RDF. Il permet aux utilisateurs d’interroger les données RDF de manière flexible et puissante. Les requêtes SPARQL peuvent extraire des données de différents graphes RDF, fusionner des informations provenant de différentes sources et effectuer des opérations complexes sur les données. SPARQL est le langage de requête standard pour le Web sémantique et peut être utilisé pour interroger de grandes quantités de données RDF.

a) Hello World

using System;
using VDS.RDF.Query.Builder;


string x = "x";
var queryBuilder = QueryBuilder
    .Select(new string[] { x })
    .Where(
        (triplePatternBuilder) =>
        {
            triplePatternBuilder
                .Subject(x)
                .PredicateUri(new Uri("http://www.w3.org/2001/vcard-rdf/3.0#FN"))
                .Object("John Smith");
        });
using (var sw = new System.IO.StringWriter())
{
    sw.WriteLine(queryBuilder.BuildQuery().ToString());
    var result = sw.ToString();
    return result;
}
SELECT ?x WHERE
{ ?x <http://www.w3.org/2001/vcard-rdf/3.0#FN> ?John Smith . }

Introduction a SPARQL Query Builder

SPARQL est le langage de requête standard pour RDF (equivalent de SQL pour les bases relationnelles).

QueryBuilder : API fluide C# pour construire des requêtes SPARQL programmatiquement.

Approche Exemple Avantage
Chaîne brute "SELECT ?x WHERE { ?x ?y ?z }" Simple pour requêtes fixes
QueryBuilder QueryBuilder.Select("x").Where(...) Type safety, composition dynamique

Structure de base d’une requête SELECT :

SELECT ?variable
WHERE {
    ?subject ?predicate ?object .
}

Le QueryBuilder permet de construire cette structure en C# avec IntelliSense et validation.

b) PREFIX avec plusieurs triples

var prefixes = new NamespaceMapper(true);
        prefixes.AddNamespace("vcard", new Uri("http://www.w3.org/2001/vcard-rdf/3.0#"));
        string y = "y";
        var givenName = new SparqlVariable("givenName");
        var queryBuilder =
            QueryBuilder
            .Select(new SparqlVariable[] { givenName })
            .Where(
                (triplePatternBuilder) =>
                {
                    triplePatternBuilder
                        .Subject(y)
                        .PredicateUri("vcard:Family")
                        .Object("Smith");
                    triplePatternBuilder
                        .Subject(y)
                        .PredicateUri("vcard:Given")
                        .Object(givenName);
                });
        queryBuilder.Prefixes = prefixes;

        using (var sw = new System.IO.StringWriter())
        {
            sw.WriteLine(queryBuilder.BuildQuery().ToString());
            var result = sw.ToString();
            return result;
        }
PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>

SELECT ?givenName WHERE
{ 
  ?y vcard:Family ?Smith . 
  ?y vcard:Given ?givenName . 
}

Prefixes et espaces de noms

Les prefixes abregent les URIs longues :

Sans prefix Avec prefix
<http://www.w3.org/2001/vcard-rdf/3.0#FN> vcard:FN

Declaration de prefixes :

PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>
SELECT ?y ?givenName
WHERE {
    ?y vcard:Family "Smith" .
    ?y vcard:Given ?givenName .
}

Equivalent C# avec QueryBuilder :

var prefixes = new NamespaceMapper(true);  // true = inclut prefixes standards
prefixes.AddNamespace("vcard", new Uri("http://..."));

Prefixes standards : rdf:, rdfs:, xsd:, owl: sont inclus automatiquement.

c) FILTRE numérique

var prefixes = new NamespaceMapper(true);
        prefixes.AddNamespace("info", new Uri("http://somewhere/peopleInfo#"));
        string resource = "resource";
        string age = "age";
        var queryBuilder =
            QueryBuilder
            .Select(new string[] { resource })
            .Where(
                (triplePatternBuilder) =>
                {
                    triplePatternBuilder
                        .Subject(resource)
                        .PredicateUri($"info:{age}")
                        .Object(age);
                })
            .Filter((builder) => builder.Variable(age) > 24);
        queryBuilder.Prefixes = prefixes;

        using (var sw = new System.IO.StringWriter())
        {
            sw.WriteLine(queryBuilder.BuildQuery().ToString());
            var result = sw.ToString();
            return result;
        }
PREFIX info: <http://somewhere/peopleInfo#>

SELECT ?resource WHERE
{ 
  ?resource info:age ?age . 
  FILTER(?age > 24 )  . 
}

Filtres numériques en SPARQL

Les filtres restreignent les résultats selon des conditions :

Opérateur Exemple SPARQL Exemple QueryBuilder
> FILTER(?age > 24) .Filter(age > 24)
< FILTER(?price < 100) .Filter(price < 100)
>= FILTER(?score >= 50) .Filter(score >= 50)
= FILTER(?count = 10) .Filter(count == 10)

Requête de l’exemple :

SELECT ?resource
WHERE {
    ?resource info:age ?age .
    FILTER(?age > 24)
}

Signification : “Sélectionner toutes les ressources dont l’age est superieur a 24”.

d) FILTRE Regex

var prefixes = new NamespaceMapper(true);
        prefixes.AddNamespace("vcard", new Uri("http://www.w3.org/2001/vcard-rdf/3.0#"));
        var givenName = new SparqlVariable("givenName");
        var queryBuilder =
            QueryBuilder
            .Select(new SparqlVariable[] { givenName })
            .Where(
                (triplePatternBuilder) =>
                {
                    triplePatternBuilder
                        .Subject("y")
                        .PredicateUri("vcard:Given")
                        .Object(givenName);
                })
            .Filter((builder) => builder.Regex(builder.Variable("givenName"), "sarah", "i"));
        queryBuilder.Prefixes = prefixes;

        using (var sw = new System.IO.StringWriter())
        {
            sw.WriteLine(queryBuilder.BuildQuery().ToString());
            var result = sw.ToString();
            return result;
        }
PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>

SELECT ?givenName WHERE
{ 
  ?y vcard:Given ?givenName . 
  FILTER(REGEX(?givenName,"sarah","i"))  . 
}

Filtres avec expressions regulieres

REGEX permet de filtrer sur des patterns de texte :

Fonction Syntaxe Exemple
REGEX REGEX(?var, "pattern") Correspondance pattern
REGEX avec flags REGEX(?var, "pattern", "i") i = case insensitive

Flags disponibles : - i : Insensible a la casse - m : Multiline mode - s : Dot matches newline

Exemple de l’exercice :

FILTER(REGEX(?givenName, "^ali", "i"))

Signification : “Prenom commence par ‘ali’, ‘Ali’, ‘ALI’, etc.”

Pattern ^ali : - ^ : Debut de chaîne - ali : Lettres exactes - Flag i : Ignore la casse

Cas d’usage : Recherche de noms, filtrage d’URIs, validation de formats.

e) CLAUSE FACULTATIVE avec FILTRE

var prefixes = new NamespaceMapper(true);
        prefixes.AddNamespace("info", new Uri("http://somewhere/peopleInfo#"));
        prefixes.AddNamespace("vcard", new Uri("http://www.w3.org/2001/vcard-rdf/3.0#"));
        string name = "name";
        string age = "age";
        string person = "person";
        var queryBuilder =
            QueryBuilder
            .Select(new string[] { name, age })
            .Where(
                (triplePatternBuilder) =>
                {
                    triplePatternBuilder
                        .Subject(person)
                        .PredicateUri("vcard:FN")
                        .Object(name);
                })
            .Optional(
                (optionalBuilder) =>
                {
                    optionalBuilder.Where(
                        (triplePatternBuilder) =>
                        {
                            triplePatternBuilder
                                .Subject(person)
                                .PredicateUri($"info:{age}")
                                .Object(age);
                        });

                    optionalBuilder.Filter((b) => b.Variable(age) > 42);
                });
        queryBuilder.Prefixes = prefixes;

        using (var sw = new System.IO.StringWriter())
        {
            sw.WriteLine(queryBuilder.BuildQuery().ToString());
            var result = sw.ToString();
            return result;
        }
PREFIX info: <http://somewhere/peopleInfo#>
PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>

SELECT ?name ?age WHERE
{ 
  ?person vcard:FN ?name . 
  OPTIONAL { 
    ?person info:age ?age . 
    FILTER(?age > 42 )  . 
  }
}

Clauses OPTIONAL

OPTIONAL permet de recuperer des informations même si elles n’existent pas :

Sans OPTIONAL Avec OPTIONAL
Ressource sans age : exclue Ressource sans age : incluse (age = null)

Requête de l’exemple :

SELECT ?resource ?age
WHERE {
    ?resource info:name ?name .
    OPTIONAL {
        ?resource info:age ?age .
        FILTER(?age > 24)
    }
}

Comportement : - Toutes les ressources avec un nom sont retournees - Si elles ont un age > 24, il est retourne - Si elles n’ont pas d’age, ?age est null

Analogie SQL : Equivalent a un LEFT JOIN en SQL.

f) UNION

var prefixes = new NamespaceMapper(true);
        prefixes.AddNamespace("foaf", new Uri("http://xmlns.com/foaf/0.1/"));
        prefixes.AddNamespace("vcard", new Uri("http://www.w3.org/2001/vcard-rdf/3.0#"));
        string name = "name";
        var queryBuilder =
            QueryBuilder
            .Select(new string[] { name });
            

        queryBuilder
            .Union(
                (unionBuilder) =>
                {
                    unionBuilder.Where(
                        (tripleBuilder) =>
                        {
                            tripleBuilder
                            .Subject<IBlankNode>("abc")
                            .PredicateUri($"foaf:{name}")
                            .Object(name);
                        });
                },
                (unionBuilder) =>
                {
                    unionBuilder.Where(
                        c =>
                        {
                            c
                            .Subject<IBlankNode>("abc")
                            .PredicateUri("vcard:FN")
                            .Object(name);
                        });
                });
        queryBuilder.Prefixes = prefixes;

        using (var sw = new System.IO.StringWriter())
        {
            sw.WriteLine(queryBuilder.BuildQuery().ToString());
            var result = sw.ToString();
            return result;
        }
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>

SELECT ?name WHERE
{ { _:abc foaf:name ?name . } 
  UNION
  { _:abc vcard:FN ?name . } }

Clause UNION

UNION combine des patterns alternatifs :

WHERE {
    { ?person foaf:name ?name }
    UNION
    { ?person foaf:mbox ?mbox }
}

Signification : “Sélectionner les personnes qui ont soit un nom soit un email”.

Cas Résultat
Personne avec nom seulement Incluse
Personne avec email seulement Incluse
Personne avec les deux Incluse (2 résultats)
Personne sans nom ni email Exclue

Différence avec OPTIONAL :

OPTIONAL UNION
Pattern principal + extension optionnelle Patterns alternatifs
Toujours 1 résultat par ressource Peut generer plusieurs résultats

Cas d’usage : Recherche flexible, fusion de sources heterogenes.

g) ORDER BY

var prefixes = new NamespaceMapper(true);
        prefixes.AddNamespace("foaf", new Uri("http://xmlns.com/foaf/0.1/"));
        string name = "name";
        var queryBuilder =
            QueryBuilder
            .Select(new string[] { name })
            .Where(
                (triplePatternBuilder) =>
                {
                    triplePatternBuilder
                        .Subject("x")
                        .PredicateUri($"foaf:{name}")
                        .Object(name);
                })
            .OrderBy(name);
        queryBuilder.Prefixes = prefixes;

        using (var sw = new System.IO.StringWriter())
        {
            sw.WriteLine(queryBuilder.BuildQuery().ToString());
            var result = sw.ToString();
            return result;
        }
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

SELECT ?name WHERE
{ ?x foaf:name ?name . }
ORDER BY ASC(?name) 

Tri avec ORDER BY

ORDER BY trie les résultats selon une variable :

Direction Syntaxe Exemple
Ascendant ORDER BY ?var A->Z, 1->9
Descendant ORDER BY DESC(?var) Z->A, 9->1

Requête de l’exemple :

SELECT ?name
WHERE {
    ?x foaf:name ?name .
}
ORDER BY ?name

Résultat : Noms tries alphabetiquement.

Tri multiple :

ORDER BY DESC(?age) ?name

Signification : Trier par age decroissant, puis par nom croissant (pour ages identiques).

Note : Le tri s’applique après le filtrage et la sélection.

Ces exemples montrent comment construire et afficher des requêtes SPARQL en utilisant dotNetRDF. Vous pouvez les exécuter dans un notebook pour voir les requêtes générées.

Conclusion : Construction de requêtes SPARQL

Le QueryBuilder offre une API fluide pour construire des requêtes SPARQL complexes :

Clause SPARQL Méthode QueryBuilder Fonction
SELECT .Select(variables) Variables a retourner
WHERE .Where(pattern) Pattern de triplets
FILTER .Filter(condition) Conditions de filtrage
OPTIONAL .Optional(pattern) Patterns optionnels
UNION .Union(pattern1, pattern2) Patterns alternatifs
ORDER BY .OrderBy(variable) Tri des résultats

Avantages du QueryBuilder : - Type safety : Erreurs detectees a la compilation - IntelliSense : Autocompletion dans l’IDE - Composition dynamique : Construction conditionnelle de requêtes - Lisibilite : Code plus clair que les chaînes SPARQL

Exemple de composition dynamique :

var query = QueryBuilder.Select("x");
if (filterByAge) {
    query = query.Filter(age > 18);
}
if (sortByName) {
    query = query.OrderBy("name");
}

Nous allons maintenant utiliser ces requêtes pour interroger DBpedia.

A la découverte de DBpedia avec RDF.Net

RDF.Net peut être utilisé pour interroger DBpedia en utilisant SPARQL. Il offre des fonctionnalités pour créer des requêtes SPARQL et pour parser les résultats des requêtes. De plus, avec RDF.Net, les développeurs peuvent manipuler les données de DBpedia comme s’il s’agissait de graphes RDF locaux.

DBpedia est un projet qui extrait et structure le contenu de Wikipedia afin de le rendre accessible et réutilisable. Il s’agit d’un vaste graphe de connaissances qui représente une grande partie des informations contenues dans Wikipedia sous une forme structurée et interrogeable. DBpedia fournit un point d’accès SPARQL, qui est une interface permettant d’interroger les données de DBpedia à l’aide de la langue SPARQL. RDF.Net nous permet d’interroger ce point d’accès facilement et efficacement.

1. Interrogation d’un point d’accès SPARQL à distance

Les points d’accès SPARQL à distance peuvent être interrogés à l’aide de la classe SparqlRemoteEndpoint. Cette classe est une enveloppe autour d’un point d’accès à distance qui envoie des requêtes au point d’accès, puis transforme la réponse en un SparqlResultSet ou un IGraph, selon le cas.

Un point d’accès à distance est une combinaison d’un URI de point d’accès et d’un URI de graphe par défaut facultatif. SparqlRemoteEndpoint propose des méthodes spécifiques fortement typées pour réaliser des requêtes, ce qui signifie que vous n’avez pas besoin de vérifier le type et de couler le résultat. La méthode QueryWithResultGraph(String sparqlQuery) peut être utilisée pour faire une requête CONSTRUCT ou DESCRIBE, tandis que la méthode QueryWithResultSet(String sparqlQuery) peut être utilisée pour faire des requêtes SELECT et ASK. Vous pouvez également utiliser la méthode QueryRaw(String sparqlQuery, out String ctype) si vous souhaitez obtenir le flux de réponse brut du point d’accès et le traiter vous-même.

Un point d’accès à distance peut être utilisé comme suit :

using System;
using VDS.RDF;
using VDS.RDF.Query;

public static void ExecuteAndDisplaySparqlQuery(SparqlRemoteEndpoint endpoint, string query, int resultLimit = 10)
{
    try
    {
        SparqlResultSet results = endpoint.QueryWithResultSet(query);
        DisplaySparqlResultSet(results, resultLimit);
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Erreur lors de l'exécution de la requête SPARQL : {ex.Message}");
    }
}

public static void DisplaySparqlResultSet(SparqlResultSet results, int resultLimit)
{
    if (results != null && results.Count > 0)
    {
        int count = 0;
        foreach (var result in results)
        {
            Console.WriteLine(result.ToString());
            count++;
            if (count >= resultLimit)
            {
                Console.WriteLine($"...affiché {resultLimit} résultats sur {results.Count}.");
                break;
            }
        }
    }
    else
    {
        Console.WriteLine("Aucun résultat trouvé.");
    }
}

public static void ExecuteAndDisplaySparqlDescribe(SparqlRemoteEndpoint endpoint, string query)
{
    try
    {
        IGraph graph = endpoint.QueryWithResultGraph(query);
        DisplayGraphTriples(graph);
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Erreur lors de l'exécution de la requête SPARQL DESCRIBE : {ex.Message}");
    }
}

public static void DisplayGraphTriples(IGraph graph, int resultLimit = 10)
{
    if (graph != null && graph.Triples.Count > 0)
    {
        int count = 0;
        foreach (var triple in graph.Triples)
        {
            Console.WriteLine(triple.ToString());
            count++;
            if (count >= resultLimit)
            {
                Console.WriteLine($"...affiché {resultLimit} triples sur {graph.Triples.Count}.");
                break;
            }
        }
    }
    else
    {
        Console.WriteLine("Aucun triple trouvé.");
    }
}


SparqlRemoteEndpoint endpoint = new SparqlRemoteEndpoint(new Uri("http://dbpedia.org/sparql"), "http://dbpedia.org");
// Exemple de requête SELECT
string selectQuery = "SELECT DISTINCT ?Concept WHERE {[] a ?Concept}";
Console.WriteLine("Résultats de la requête SELECT :");
ExecuteAndDisplaySparqlQuery(endpoint, selectQuery);
// Exemple de requête DESCRIBE
string describeQuery = "DESCRIBE <http://dbpedia.org/resource/Albert_Einstein>";
Console.WriteLine("\nRésultats de la requête DESCRIBE :");
ExecuteAndDisplaySparqlDescribe(endpoint, describeQuery);
// Autres exemples de requêtes intéressantes
List<string> interestingQueries = new List<string>
{
    "SELECT ?person ?link WHERE { <http://dbpedia.org/resource/Albert_Einstein> ?link ?person . }",
    "SELECT ?film WHERE { ?film dbo:starring <http://dbpedia.org/resource/Brad_Pitt> . }",
    "SELECT ?book WHERE { ?book dbo:author <http://dbpedia.org/resource/J._K._Rowling> . }",
    "SELECT ?city WHERE { ?city dbo:country <http://dbpedia.org/resource/France> . }",
    "SELECT ?team ?city WHERE { ?team dbo:league <http://dbpedia.org/resource/Premier_League> . ?team dbo:ground ?ground . ?ground dbo:location ?city . }"
};
foreach (var query in interestingQueries)
{
    Console.WriteLine("\nRésultats de la requête :");
    ExecuteAndDisplaySparqlQuery(endpoint, query);
}
Résultats de la requête SELECT :
?Concept = http://www.w3.org/2002/07/owl#FunctionalProperty
?Concept = http://www.w3.org/1999/02/22-rdf-syntax-ns#Property
?Concept = http://www.w3.org/2002/07/owl#Thing
?Concept = http://www.w3.org/2002/07/owl#Class
?Concept = http://www.w3.org/2002/07/owl#Ontology
?Concept = http://www.w3.org/2002/07/owl#ObjectProperty
?Concept = http://www.w3.org/2002/07/owl#DatatypeProperty
?Concept = http://xmlns.com/foaf/0.1/Organization
?Concept = http://xmlns.com/foaf/0.1/Person
?Concept = http://dbpedia.org/ontology/Company
...affiché 10 résultats sur 1061.

Résultats de la requête DESCRIBE :
http://dbpedia.org/resource/Einstein_group , http://dbpedia.org/ontology/wikiPageWikiLink , http://dbpedia.org/resource/Albert_Einstein
http://dbpedia.org/resource/Jorge_Wagensberg_Lubinski , http://dbpedia.org/ontology/wikiPageWikiLink , http://dbpedia.org/resource/Albert_Einstein
http://dbpedia.org/resource/Albert_Einstein , http://www.w3.org/2002/07/owl#sameAs , http://or.dbpedia.org/resource/%E0%AC%86%E0%AC%B2%E0%AC%AC%E0%AC%B0%E0%AD%8D%E0%AC%9F_%E0%AC%86%E0%AC%87%E0%AC%A8%E0%AC%B7%E0%AD%8D%E0%AC%9F%E0%AC%BE%E0%AC%87%E0%AC%A8
http://dbpedia.org/resource/February_1921 , http://dbpedia.org/ontology/wikiPageWikiLink , http://dbpedia.org/resource/Albert_Einstein
http://dbpedia.org/resource/Euclidean_geometry , http://dbpedia.org/ontology/wikiPageWikiLink , http://dbpedia.org/resource/Albert_Einstein
http://dbpedia.org/resource/Albert_Einstein , http://dbpedia.org/ontology/wikiPageWikiLink , http://dbpedia.org/resource/Caltech
http://dbpedia.org/resource/1926_in_animation , http://dbpedia.org/ontology/wikiPageWikiLink , http://dbpedia.org/resource/Albert_Einstein
http://dbpedia.org/resource/Xallarap , http://dbpedia.org/ontology/wikiPageWikiLink , http://dbpedia.org/resource/Albert_Einstein
http://dbpedia.org/resource/Nicolas_Roeg , http://dbpedia.org/ontology/wikiPageWikiLink , http://dbpedia.org/resource/Albert_Einstein
http://dbpedia.org/resource/Index_of_physics_articles_(A) , http://dbpedia.org/ontology/wikiPageWikiLink , http://dbpedia.org/resource/Albert_Einstein
...affiché 10 triples sur 5026.

Résultats de la requête :
?person = http://www.w3.org/2002/07/owl#Thing , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
?person = http://xmlns.com/foaf/0.1/Person , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
?person = http://dbpedia.org/ontology/Person , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
?person = http://dbpedia.org/ontology/Person , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
?person = http://www.ontologydesignpatterns.org/ont/dul/DUL.owl#NaturalPerson , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
?person = http://www.wikidata.org/entity/Q19088 , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
?person = http://www.wikidata.org/entity/Q215627 , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
?person = http://www.wikidata.org/entity/Q5 , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
?person = http://www.wikidata.org/entity/Q729 , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
?person = http://www.wikidata.org/entity/Q901 , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
...affiché 10 résultats sur 1166.

Résultats de la requête :
?film = http://dbpedia.org/resource/Megamind
?film = http://dbpedia.org/resource/Ocean's_Thirteen
?film = http://dbpedia.org/resource/The_Assassination_of_Jesse_James_by_the_Coward_Robert_Ford
?film = http://dbpedia.org/resource/Too_Young_to_Die%3F
?film = http://dbpedia.org/resource/The_Mexican
?film = http://dbpedia.org/resource/Contact_(1992_film)
?film = http://dbpedia.org/resource/Bullet_Train_(film)
?film = http://dbpedia.org/resource/12_Years_a_Slave_(film)
?film = http://dbpedia.org/resource/Glory_Days_(1990_TV_series)
?film = http://dbpedia.org/resource/Two-Fisted_Tales_(film)
...affiché 10 résultats sur 57.

Résultats de la requête :
?book = http://dbpedia.org/resource/The_Christmas_Pig
?book = http://dbpedia.org/resource/The_Ickabog
?book = http://dbpedia.org/resource/The_Casual_Vacancy
?book = http://dbpedia.org/resource/The_Tales_of_Beedle_the_Bard
?book = http://dbpedia.org/resource/The_Silkworm
?book = http://dbpedia.org/resource/The_Running_Grave
?book = http://dbpedia.org/resource/Harry_Potter_and_the_Chamber_of_Secrets
?book = http://dbpedia.org/resource/Harry_Potter_and_the_Deathly_Hallows
?book = http://dbpedia.org/resource/Harry_Potter_and_the_Goblet_of_Fire
?book = http://dbpedia.org/resource/Harry_Potter_and_the_Half-Blood_Prince
...affiché 10 résultats sur 19.

Résultats de la requête :
?city = http://dbpedia.org/resource/183rd_Infantry_Division_of_Africa
?city = http://dbpedia.org/resource/Aur%C3%A9lien_Jeanney
?city = http://dbpedia.org/resource/Cat's_Eyes_(TV_series)
?city = http://dbpedia.org/resource/Cl%C3%A9ment_Chidekh
?city = http://dbpedia.org/resource/Commeny
?city = http://dbpedia.org/resource/Giovanni_Mpetshi_Perricard
?city = http://dbpedia.org/resource/Ingrandes-le-Fresne-sur-Loire
?city = http://dbpedia.org/resource/Jeu_de_Paume_de_Paris
?city = http://dbpedia.org/resource/Julien_Delaplane
?city = http://dbpedia.org/resource/L%C3%A9olia_Jeanjean
...affiché 10 résultats sur 10000.

Résultats de la requête :
?team = http://dbpedia.org/resource/1992%E2%80%9393_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/England
?team = http://dbpedia.org/resource/1992%E2%80%9393_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/Coventry
?team = http://dbpedia.org/resource/1992%E2%80%9393_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/Hillfields
?team = http://dbpedia.org/resource/1993%E2%80%9394_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/England
?team = http://dbpedia.org/resource/1993%E2%80%9394_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/Coventry
?team = http://dbpedia.org/resource/1993%E2%80%9394_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/Hillfields
?team = http://dbpedia.org/resource/1994%E2%80%9395_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/England
?team = http://dbpedia.org/resource/1994%E2%80%9395_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/Coventry
?team = http://dbpedia.org/resource/1994%E2%80%9395_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/Hillfields
?team = http://dbpedia.org/resource/1995%E2%80%9396_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/England
...affiché 10 résultats sur 1250.

Interrogation de DBpedia

DBpedia est une base de connaissances extraite de Wikipedia, accessible via SPARQL.

Fonction utilitaire ExecuteAndDisplaySparqlQuery() : - Execute une requête sur l’endpoint DBpedia - Affiche les résultats dans un tableau formate - Limite le nombre de résultats (resultsLimit)

Paramètre Type Description
endpoint SparqlRemoteEndpoint Connexion a DBpedia
query string Requête SPARQL
resultsLimit int Nombre max de résultats

Structure de la reponse SPARQL :

{
  "head": { "vars": ["person", "link"] },
  "results": {
    "bindings": [
      { "person": { "type": "uri", "value": "http://..." } },
      ...
    ]
  }
}

Important : DBpedia peut etre lent ou indisponible. Toujours utiliser un timeout et gerer les erreurs.

2. Requêtes SPARQL intéressantes sur DBpedia

Comprendre l’utilité du SPARQL pour ceux qui sont habitués au SQL peut être facilité par des exemples de requêtes intéressantes. Voici quelques exemples de requêtes que vous pourriez trouver utiles :

Trouver toutes les personnes liées à une personne spécifique (par exemple, Albert Einstein) :

SELECT ?person ?link WHERE {
  <http://dbpedia.org/resource/Albert_Einstein> ?link ?person .
}
string query = "SELECT ?person ?link WHERE { <http://dbpedia.org/resource/Albert_Einstein> ?link ?person . }";
ExecuteAndDisplaySparqlQuery(endpoint, query);
?person = http://www.w3.org/2002/07/owl#Thing , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
?person = http://xmlns.com/foaf/0.1/Person , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
?person = http://dbpedia.org/ontology/Person , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
?person = http://dbpedia.org/ontology/Person , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
?person = http://www.ontologydesignpatterns.org/ont/dul/DUL.owl#NaturalPerson , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
?person = http://www.wikidata.org/entity/Q19088 , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
?person = http://www.wikidata.org/entity/Q215627 , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
?person = http://www.wikidata.org/entity/Q5 , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
?person = http://www.wikidata.org/entity/Q729 , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
?person = http://www.wikidata.org/entity/Q901 , ?link = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
...affiché 10 résultats sur 1166.

Interpretation de la requête Albert Einstein

Requête :

SELECT ?person ?link
WHERE {
    <http://dbpedia.org/resource/Albert_Einstein> ?link ?person .
}

Signification : “Trouver toutes les relations (?link) et objets (?person) associes a Albert Einstein”

Résultats attendus (exemples) :

link person
dbo:birthPlace dbr:Ulm
dbo:almaMater dbr:ETH_Zurich
dbo:award dbr:Nobel_Prize_in_Physics
foaf:name “Albert Einstein”@en
dbo:field dbr:Theoretical_physics

Note : DBpedia contient des centaines de triplets par ressource. Limiter les résultats avec LIMIT 20.

Trouver tous les films dans lesquels un acteur spécifique (par exemple, Brad Pitt) a joué :

SELECT ?film WHERE {
  ?film dbo:starring <http://dbpedia.org/resource/Brad_Pitt> .
}
string query = "SELECT ?film WHERE { ?film dbo:starring <http://dbpedia.org/resource/Brad_Pitt> . }";
ExecuteAndDisplaySparqlQuery(endpoint, query);
?film = http://dbpedia.org/resource/Megamind
?film = http://dbpedia.org/resource/Ocean's_Thirteen
?film = http://dbpedia.org/resource/The_Assassination_of_Jesse_James_by_the_Coward_Robert_Ford
?film = http://dbpedia.org/resource/Too_Young_to_Die%3F
?film = http://dbpedia.org/resource/The_Mexican
?film = http://dbpedia.org/resource/Contact_(1992_film)
?film = http://dbpedia.org/resource/Bullet_Train_(film)
?film = http://dbpedia.org/resource/12_Years_a_Slave_(film)
?film = http://dbpedia.org/resource/Glory_Days_(1990_TV_series)
?film = http://dbpedia.org/resource/Two-Fisted_Tales_(film)
...affiché 10 résultats sur 57.

Films de Brad Pitt

Requête :

SELECT ?film
WHERE {
    ?film dbo:starring <http://dbpedia.org/resource/Brad_Pitt> .
}

Structure du triplet recherche :

?film --[dbo:starring]--> Brad_Pitt

Signification : “Quels films ont Brad Pitt comme acteur ?”

Predicat dbo:starring : Relation “X a comme acteur Y” dans l’ontologie DBpedia.

Résultats attendus (extrait) : - http://dbpedia.org/resource/Fight_Club - http://dbpedia.org/resource/Ocean's_Eleven - http://dbpedia.org/resource/Troy_(film) - …

Point important : Les URIs DBpedia suivent le pattern http://dbpedia.org/resource/Nom_Article_Wikipedia.

Trouver tous les livres d’un auteur spécifique (par exemple, J.K. Rowling) :

SELECT ?book WHERE {
  ?book dbo:author <http://dbpedia.org/resource/J._K._Rowling> .
}
string query = "SELECT ?book WHERE { ?book dbo:author <http://dbpedia.org/resource/J._K._Rowling> . }";
ExecuteAndDisplaySparqlQuery(endpoint, query);
?book = http://dbpedia.org/resource/The_Christmas_Pig
?book = http://dbpedia.org/resource/The_Ickabog
?book = http://dbpedia.org/resource/The_Casual_Vacancy
?book = http://dbpedia.org/resource/The_Tales_of_Beedle_the_Bard
?book = http://dbpedia.org/resource/The_Silkworm
?book = http://dbpedia.org/resource/The_Running_Grave
?book = http://dbpedia.org/resource/Harry_Potter_and_the_Chamber_of_Secrets
?book = http://dbpedia.org/resource/Harry_Potter_and_the_Deathly_Hallows
?book = http://dbpedia.org/resource/Harry_Potter_and_the_Goblet_of_Fire
?book = http://dbpedia.org/resource/Harry_Potter_and_the_Half-Blood_Prince
...affiché 10 résultats sur 19.

Livres de J.K. Rowling

Requête :

SELECT ?book
WHERE {
    ?book dbo:author <http://dbpedia.org/resource/J._K._Rowling> .
}

Structure du triplet :

?book --[dbo:author]--> J.K._Rowling

Signification : “Quels livres ont J.K. Rowling comme auteur ?”

Résultats attendus (extrait) : - dbr:Harry_Potter_and_the_Philosopher's_Stone - dbr:Harry_Potter_and_the_Chamber_of_Secrets - dbr:The_Casual_Vacancy - …

Différence avec la requête Brad Pitt :

Requête Predicat Domaine Range
Films dbo:starring Film Acteur
Livres dbo:author Livre Auteur

Note : DBpedia distingue les classes (Film, Livre, Personne) via rdf:type.

Trouver toutes les villes dans un pays spécifique (par exemple, la France) :

SELECT ?city WHERE {
  ?city dbo:country <http://dbpedia.org/resource/France> .
}
string query = "SELECT ?city WHERE { ?city dbo:country <http://dbpedia.org/resource/France> . }";
ExecuteAndDisplaySparqlQuery(endpoint, query);
?city = http://dbpedia.org/resource/183rd_Infantry_Division_of_Africa
?city = http://dbpedia.org/resource/Aur%C3%A9lien_Jeanney
?city = http://dbpedia.org/resource/Cat's_Eyes_(TV_series)
?city = http://dbpedia.org/resource/Cl%C3%A9ment_Chidekh
?city = http://dbpedia.org/resource/Commeny
?city = http://dbpedia.org/resource/Giovanni_Mpetshi_Perricard
?city = http://dbpedia.org/resource/Ingrandes-le-Fresne-sur-Loire
?city = http://dbpedia.org/resource/Jeu_de_Paume_de_Paris
?city = http://dbpedia.org/resource/Julien_Delaplane
?city = http://dbpedia.org/resource/L%C3%A9olia_Jeanjean
...affiché 10 résultats sur 10000.

Villes de France

Requête :

SELECT ?city
WHERE {
    ?city dbo:country <http://dbpedia.org/resource/France> .
}

Structure du triplet :

?city --[dbo:country]--> France

Signification : “Quelles villes sont dans le pays France ?”

Résultats attendus (extrait) : - dbr:Paris - dbr:Lyon - dbr:Marseille - dbr:Toulouse - …

Point important : La requête retourne des URIs, pas des labels. Pour obtenir les noms lisibles :

SELECT ?city ?name
WHERE {
    ?city dbo:country dbr:France .
    ?city rdfs:label ?name .
    FILTER(LANG(?name) = "fr")
}

Performance : Cette requête peut retourner des milliers de résultats. Utiliser LIMIT et OFFSET pour la pagination.

Trouver toutes les équipes de football de la Premier League anglaise et leurs villes respectives :

SELECT ?team ?city WHERE {
  ?team dbo:league <http://dbpedia.org/resource/Premier_League> .
  ?team dbo:ground ?ground .
  ?ground dbo:location ?city .
}

::: {#fe3ce436 .cell quarto-private-1='{"key":"polyglot_notebook","value":{"kernelName":"csharp"}}' tags='[]' execution_count=44}
``` {.csharp .cell-code}
string query = "SELECT ?team ?city WHERE { ?team dbo:league <http://dbpedia.org/resource/Premier_League> . ?team dbo:ground ?ground . ?ground dbo:location ?city . }";
ExecuteAndDisplaySparqlQuery(endpoint, query);
?team = http://dbpedia.org/resource/1992%E2%80%9393_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/England
?team = http://dbpedia.org/resource/1992%E2%80%9393_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/Coventry
?team = http://dbpedia.org/resource/1992%E2%80%9393_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/Hillfields
?team = http://dbpedia.org/resource/1993%E2%80%9394_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/England
?team = http://dbpedia.org/resource/1993%E2%80%9394_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/Coventry
?team = http://dbpedia.org/resource/1993%E2%80%9394_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/Hillfields
?team = http://dbpedia.org/resource/1994%E2%80%9395_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/England
?team = http://dbpedia.org/resource/1994%E2%80%9395_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/Coventry
?team = http://dbpedia.org/resource/1994%E2%80%9395_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/Hillfields
?team = http://dbpedia.org/resource/1995%E2%80%9396_Coventry_City_F.C._season , ?city = http://dbpedia.org/resource/England
...affiché 10 résultats sur 1250.

:::

Requête complexe : Équipes Premier League

Requête :

SELECT ?team ?city
WHERE {
    ?team dbo:league <http://dbpedia.org/resource/Premier_League> .
    ?team dbo:ground ?ground .
    ?ground dbo:location ?city .
}

Pattern de triplets (chaîne de relations) :

?team --[dbo:league]--> Premier_League
?team --[dbo:ground]--> ?ground
?ground --[dbo:location]--> ?city

Signification : “Trouver les équipes de Premier League, leur stade, et la ville du stade”

Exemple de résultat :

team city
dbr:Manchester_United_F.C. dbr:Manchester
dbr:Arsenal_F.C. dbr:London

Navigation de graphe : Cette requête navigue a travers 3 noeuds et 2 aretes.

Concept cle : SPARQL permet de naviguer dans le graphe RDF en suivant les relations.

3. Requêtes avancées

Voici quelques requêtes SPARQL plus avancées et subtiles qui peuvent être exécutées sur le endpoint DBpedia :

Rechercher tous les scientifiques lauréats du prix Nobel en physique et les classer par leur date de naissance :

PREFIX dbpedia: <http://dbpedia.org/resource/>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX dbpprop: <http://dbpedia.org/property/>

SELECT ?scientist ?birth 
WHERE {
  ?scientist a dbpedia-owl:Scientist .
  ?scientist dbpedia-owl:award dbpedia:Nobel_Prize_in_Physics .
  ?scientist dbo:birthDate ?birth
} 
ORDER BY ?birth
string query = @"
PREFIX dbpedia: <http://dbpedia.org/resource/>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX dbpprop: <http://dbpedia.org/property/>

SELECT ?scientist ?birth 
WHERE {
  ?scientist a dbpedia-owl:Scientist .
  ?scientist dbpedia-owl:award dbpedia:Nobel_Prize_in_Physics .
  ?scientist dbo:

birthDate ?birth
} 
ORDER BY ?birth";
ExecuteAndDisplaySparqlQuery(endpoint, query);
Erreur lors de l'exécution de la requête SPARQL : A HTTP Error occurred while trying to make the SPARQL Query, see inner exception for details

Requête avancee : Joueurs francais NBA

Requête :

PREFIX dbpedia: <http://dbpedia.org/resource/>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT ?player ?name
WHERE {
    ?player a dbo:BasketballPlayer .
    ?player dbo:birthPlace ?place .
    ?place dbo:country dbpedia:France .
    ?player foaf:name ?name .
}

Decomposition :

Pattern Signification
?player a dbo:BasketballPlayer X est un joueur de basket
?player dbo:birthPlace ?place X est ne a Y
?place dbo:country dbpedia:France Y est en France
?player foaf:name ?name Le nom de X est Z

Prefixes utilises : - dbo: - DBpedia Ontology (classes et proprietes) - foaf: - Friend of a Friend (proprietes de personnes) - dbpedia: - Ressources DBpedia

Note : ?player a dbo:BasketballPlayer est un raccourci pour ?player rdf:type dbo:BasketballPlayer.

Trouver toutes les pages Wikipedia qui contiennent un lien vers le film d’aventure :

SELECT DISTINCT ?film
WHERE
{
   ?film dbo:wikiPageWikiLink dbr:Adventure_film .
}
string query = "SELECT DISTINCT ?film WHERE { ?film dbo:wikiPageWikiLink dbr:Adventure_film . }";
ExecuteAndDisplaySparqlQuery(endpoint, query);
?film = http://dbpedia.org/resource/Abigail_(2019_Russian_film)
?film = http://dbpedia.org/resource/Bender:_Gold_of_the_Empire
?film = http://dbpedia.org/resource/Darby_Jones
?film = http://dbpedia.org/resource/Dogtanian_and_the_Three_Muskehounds_(film)
?film = http://dbpedia.org/resource/Dragon_Ball_Super:_Super_Hero
?film = http://dbpedia.org/resource/Onoda:_10,000_Nights_in_the_Jungle
?film = http://dbpedia.org/resource/List_of_Angolan_films
?film = http://dbpedia.org/resource/Don_Leonard
?film = http://dbpedia.org/resource/List_of_American_films_of_1994
?film = http://dbpedia.org/resource/List_of_American_films_of_1997
...affiché 10 résultats sur 3530.

En plus de la requête précédente, retourner le pageID, le résumé (abstract) et le nom du film :

SELECT DISTINCT ?film, ?number, ?abstract, ?name
WHERE
{
   ?film dbo:wikiPageWikiLink dbr:Adventure_film .
   ?film dbo:wikiPageID ?number .
   ?film rdfs:comment ?abstract .
   ?film dbp:name ?name .
}
string query = @"
SELECT DISTINCT ?film, ?number, ?abstract, ?name
WHERE
{
   ?film dbo:wikiPageWikiLink dbr:Adventure_film .
   ?film dbo:wikiPageID ?number .
   ?film rdfs:comment ?abstract .
   ?film dbp:name ?name .
}";
ExecuteAndDisplaySparqlQuery(endpoint, query);
Aucun résultat trouvé.

Enrichissement de la requête

Nouvelle requête :

SELECT DISTINCT ?film, ?number, ?abstract, ?name
WHERE {
    ?film dbo:wikiPageWikiLink dbr:Adventure_film .
    ?film dbo:wikiPageID ?number .
    ?film dbo:abstract ?abstract .
    ?film foaf:name ?name .
}

Proprietes ajoutees :

Propriete Type Exemple
dbo:wikiPageID Integer 12345 (ID Wikipedia)
dbo:abstract Literal Resume du film
foaf:name Literal Titre du film

Problème potentiel : Les abstract existent souvent en plusieurs langues.

Résultat sans filtre :

film: dbr:Avatar
abstract: "Avatar is a 2009 film..."@en
abstract: "Avatar est un film de 2009..."@fr
abstract: "Avatar ist ein Film von 2009..."@de

Solution : Filtrer par langue (voir cellule suivante).

Filtrer les films dont le résumé est en anglais :

FILTER ( LANG ( ?abstract ) = 'en' )

Cette ligne de code peut être ajoutée à n’importe quelle requête pour filtrer les films dont le résumé est en anglais.

Utiliser la fonction OPTIONAL pour retourner des champs qui peuvent ne pas être présents sur toutes les pages :

OPTIONAL { ?film dbo:cinematography ?cinematography }

Cette ligne de code peut être ajoutée à n’importe quelle requête pour retourner le champ “cinématographie” d’un film, même si ce champ n’est pas présent sur toutes les pages.

Grouper tous les objets dans un seul champ en utilisant GROUP_CONCAT :

SELECT DISTINCT ?film, ?number, ?abstract, (GROUP_CONCAT(DISTINCT ?starring; SEPARATOR="-") AS ?starring), ?name, (GROUP_CONCAT(DISTINCT ?subject; SEPARATOR="-") AS ?subjects)
, ?cinematography, ?director, ?gross, (GROUP_CONCAT(DISTINCT ?producer; SEPARATOR="-") AS ?producer), ?language
WHERE
{
  ?film dbo:wikiPageWikiLink dbr:Romantic_comedy .
  ?film dbo:wikiPageID ?number .
  ?film dbp:starring ?starring .
  ?film rdfs:comment ?abstract .
  ?film dbp:name ?name .
  OPTIONAL { ?film dct:subject ?subject} .
  OPTIONAL { ?film dbo:cinematography ?cinematography } .
  OPTIONAL { ?film dbo:director ?director } .
  OPTIONAL { ?film dbo:gross ?gross } .
  OPTIONAL { ?film dbo:producer ?producer } .
  OPTIONAL { ?film dbp:language ?language } .

  FILTER ( LANG ( ?abstract ) = 'en' )
}
string query = @"
SELECT DISTINCT ?film, ?number, ?abstract, (GROUP_CONCAT(DISTINCT ?starring; SEPARATOR='-') AS ?starring), ?name, (GROUP_CONCAT(DISTINCT ?subject; SEPARATOR='-') AS ?subjects)
, ?cinematography, ?director, ?gross, (GROUP_CONCAT(DISTINCT ?producer; SEPARATOR='-') AS ?producer), ?language
WHERE
{
  ?film dbo:wikiPageWikiLink dbr:Romantic_comedy .
  ?film dbo:wikiPageID ?number .
  ?film dbp:starring ?starring .
  ?film rdfs:comment ?abstract .
  ?film dbp:name ?name .
  OPTIONAL { ?film dct:subject ?subject} .
  OPTIONAL { ?film dbo:cinematography ?cinematography } .
  OPTIONAL { ?film dbo:director ?director } .
  OPTIONAL { ?film dbo:gross ?gross } .
  OPTIONAL { ?film dbo:producer ?producer } .
  OPTIONAL { ?film dbp:language ?language } .

  FILTER ( LANG ( ?abstract ) = 'en' )
}";
ExecuteAndDisplaySparqlQuery(endpoint, query);
Aucun résultat trouvé.

Requête complexe avec GROUP_CONCAT

Requête complete :

SELECT DISTINCT ?film, ?number, ?abstract,
       (GROUP_CONCAT(DISTINCT ?starring; SEPARATOR='-') AS ?starring),
       ?name,
       (GROUP_CONCAT(DISTINCT ?genre; SEPARATOR=',') AS ?genre)
WHERE {
    ...
    OPTIONAL { ?film dbo:starring ?starring }
    OPTIONAL { ?film dbo:genre ?genre }
    FILTER(LANG(?abstract) = 'en')
}
GROUP BY ?film ?number ?abstract ?name

Fonctions d’agregation :

Fonction Effet Exemple
GROUP_CONCAT Concatene les valeurs "Actor1-Actor2-Actor3"
SEPARATOR Separateur entre valeurs - ou ,
DISTINCT Elimine les doublons Acteurs uniques

Pourquoi GROUP BY ? : - Un film a plusieurs acteurs -> plusieurs lignes sans GROUP BY - GROUP_CONCAT + GROUP BY -> une ligne par film avec acteurs concatenes

Exemple de résultat :

film starring genre
Avatar Sam Worthington-Zoe Saldana Science fiction,Adventure

Note : OPTIONAL permet de retourner les films même s’ils n’ont pas d’acteurs ou de genres enregistres.

Ces requêtes avancées permettent d’obtenir des informations plus détaillées et spécifiques de DBpedia. Elles utilisent des concepts tels que les filtres, les options et le regroupement pour affiner les résultats de la requête.

4. Chargement et sauvegarde des résultats

Un SparqlResultSet peut être chargé/sauvegardé à l’aide des interfaces ISparqlResultsReader et ISparqlResultsWriter respectivement. Ces interfaces sont fonctionnellement très similaires aux interfaces IRdfReader et IRdfWriter décrites sur les pages Reading RDF et Writing RDF.

Voici un exemple rapide :

using System;
using VDS.RDF;
using VDS.RDF.Query;
using VDS.RDF.Writing;
using VDS.RDF.Data;



SparqlRemoteEndpoint endpoint = new SparqlRemoteEndpoint(new Uri("http://dbpedia.org/sparql"));
SparqlResultSet results = endpoint.QueryWithResultSet("SELECT DISTINCT ?type WHERE { ?s a ?type } LIMIT 100");
// Maintenant, sauvegardez ceci sur le disque en tant que SPARQL JSON
SparqlJsonWriter writer = new SparqlJsonWriter();
writer.Save(results, "example.srj");
// Sauvegarder ceci sur le disque en tant que SPARQL XML
SparqlXmlWriter writer2 = new SparqlXmlWriter();
writer2.Save(results, "example.srx");
// Lire à nouveau les résultats à partir du fichier
SparqlXmlParser parser = new SparqlXmlParser();
SparqlResultSet results2 = new SparqlResultSet();
parser.Load(results2, "example.srx");

results2.Take(10).Display();
index value
0
[ [type, http://www.openlinksw.com/schemas/virtrdf#QuadMap] ]
Count
1
Variables
[ type ]
Count
1
IsReadOnly
True
(values)
[ type ]
IsGroundResult
True
(values)
index value
0
[type, http://www.openlinksw.com/schemas/virtrdf#QuadMap]
Key
type
Value
http://www.openlinksw.com/schemas/virtrdf#QuadMap
Uri
http://www.openlinksw.com/schemas/virtrdf#QuadMap
AbsolutePath
/schemas/virtrdf
AbsoluteUri
http://www.openlinksw.com/schemas/virtrdf#QuadMap
LocalPath
/schemas/virtrdf
Authority
www.openlinksw.com
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/schemas/virtrdf
Segments
[ /, schemas/, virtrdf ]
IsUnc
False
Host
www.openlinksw.com
Port
80
Query
Fragment
#QuadMap
Scheme
http
OriginalString
http://www.openlinksw.com/schemas/virtrdf#QuadMap
DnsSafeHost
www.openlinksw.com
IdnHost
www.openlinksw.com
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
1
[ [type, http://www.openlinksw.com/schemas/virtrdf#QuadMapFormat] ]
Count
1
Variables
[ type ]
Count
1
IsReadOnly
True
(values)
[ type ]
IsGroundResult
True
(values)
index value
0
[type, http://www.openlinksw.com/schemas/virtrdf#QuadMapFormat]
Key
type
Value
http://www.openlinksw.com/schemas/virtrdf#QuadMapFormat
Uri
http://www.openlinksw.com/schemas/virtrdf#QuadMapFormat
AbsolutePath
/schemas/virtrdf
AbsoluteUri
http://www.openlinksw.com/schemas/virtrdf#QuadMapFormat
LocalPath
/schemas/virtrdf
Authority
www.openlinksw.com
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/schemas/virtrdf
Segments
[ /, schemas/, virtrdf ]
IsUnc
False
Host
www.openlinksw.com
Port
80
Query
Fragment
#QuadMapFormat
Scheme
http
OriginalString
http://www.openlinksw.com/schemas/virtrdf#QuadMapFormat
DnsSafeHost
www.openlinksw.com
IdnHost
www.openlinksw.com
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
2
[ [type, http://www.openlinksw.com/schemas/virtrdf#QuadStorage] ]
Count
1
Variables
[ type ]
Count
1
IsReadOnly
True
(values)
[ type ]
IsGroundResult
True
(values)
index value
0
[type, http://www.openlinksw.com/schemas/virtrdf#QuadStorage]
Key
type
Value
http://www.openlinksw.com/schemas/virtrdf#QuadStorage
Uri
http://www.openlinksw.com/schemas/virtrdf#QuadStorage
AbsolutePath
/schemas/virtrdf
AbsoluteUri
http://www.openlinksw.com/schemas/virtrdf#QuadStorage
LocalPath
/schemas/virtrdf
Authority
www.openlinksw.com
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/schemas/virtrdf
Segments
[ /, schemas/, virtrdf ]
IsUnc
False
Host
www.openlinksw.com
Port
80
Query
Fragment
#QuadStorage
Scheme
http
OriginalString
http://www.openlinksw.com/schemas/virtrdf#QuadStorage
DnsSafeHost
www.openlinksw.com
IdnHost
www.openlinksw.com
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
3
[ [type, http://www.openlinksw.com/schemas/virtrdf#array-of-QuadMapFormat] ]
Count
1
Variables
[ type ]
Count
1
IsReadOnly
True
(values)
[ type ]
IsGroundResult
True
(values)
index value
0
[type, http://www.openlinksw.com/schemas/virtrdf#array-of-QuadMapFormat]
Key
type
Value
http://www.openlinksw.com/schemas/virtrdf#array-of-QuadMapFormat
Uri
http://www.openlinksw.com/schemas/virtrdf#array-of-QuadMapFormat
AbsolutePath
/schemas/virtrdf
AbsoluteUri
http://www.openlinksw.com/schemas/virtrdf#array-of-QuadMapFormat
LocalPath
/schemas/virtrdf
Authority
www.openlinksw.com
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/schemas/virtrdf
Segments
[ /, schemas/, virtrdf ]
IsUnc
False
Host
www.openlinksw.com
Port
80
Query
Fragment
#array-of-QuadMapFormat
Scheme
http
OriginalString
http://www.openlinksw.com/schemas/virtrdf#array-of-QuadMapFormat
DnsSafeHost
www.openlinksw.com
IdnHost
www.openlinksw.com
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
4
[ [type, http://www.openlinksw.com/schemas/virtrdf#QuadMapValue] ]
Count
1
Variables
[ type ]
Count
1
IsReadOnly
True
(values)
[ type ]
IsGroundResult
True
(values)
index value
0
[type, http://www.openlinksw.com/schemas/virtrdf#QuadMapValue]
Key
type
Value
http://www.openlinksw.com/schemas/virtrdf#QuadMapValue
Uri
http://www.openlinksw.com/schemas/virtrdf#QuadMapValue
AbsolutePath
/schemas/virtrdf
AbsoluteUri
http://www.openlinksw.com/schemas/virtrdf#QuadMapValue
LocalPath
/schemas/virtrdf
Authority
www.openlinksw.com
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/schemas/virtrdf
Segments
[ /, schemas/, virtrdf ]
IsUnc
False
Host
www.openlinksw.com
Port
80
Query
Fragment
#QuadMapValue
Scheme
http
OriginalString
http://www.openlinksw.com/schemas/virtrdf#QuadMapValue
DnsSafeHost
www.openlinksw.com
IdnHost
www.openlinksw.com
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
5
[ [type, http://www.openlinksw.com/schemas/virtrdf#array-of-QuadMapColumn] ]
Count
1
Variables
[ type ]
Count
1
IsReadOnly
True
(values)
[ type ]
IsGroundResult
True
(values)
index value
0
[type, http://www.openlinksw.com/schemas/virtrdf#array-of-QuadMapColumn]
Key
type
Value
http://www.openlinksw.com/schemas/virtrdf#array-of-QuadMapColumn
Uri
http://www.openlinksw.com/schemas/virtrdf#array-of-QuadMapColumn
AbsolutePath
/schemas/virtrdf
AbsoluteUri
http://www.openlinksw.com/schemas/virtrdf#array-of-QuadMapColumn
LocalPath
/schemas/virtrdf
Authority
www.openlinksw.com
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/schemas/virtrdf
Segments
[ /, schemas/, virtrdf ]
IsUnc
False
Host
www.openlinksw.com
Port
80
Query
Fragment
#array-of-QuadMapColumn
Scheme
http
OriginalString
http://www.openlinksw.com/schemas/virtrdf#array-of-QuadMapColumn
DnsSafeHost
www.openlinksw.com
IdnHost
www.openlinksw.com
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
6
[ [type, http://www.openlinksw.com/schemas/virtrdf#QuadMapColumn] ]
Count
1
Variables
[ type ]
Count
1
IsReadOnly
True
(values)
[ type ]
IsGroundResult
True
(values)
index value
0
[type, http://www.openlinksw.com/schemas/virtrdf#QuadMapColumn]
Key
type
Value
http://www.openlinksw.com/schemas/virtrdf#QuadMapColumn
Uri
http://www.openlinksw.com/schemas/virtrdf#QuadMapColumn
AbsolutePath
/schemas/virtrdf
AbsoluteUri
http://www.openlinksw.com/schemas/virtrdf#QuadMapColumn
LocalPath
/schemas/virtrdf
Authority
www.openlinksw.com
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/schemas/virtrdf
Segments
[ /, schemas/, virtrdf ]
IsUnc
False
Host
www.openlinksw.com
Port
80
Query
Fragment
#QuadMapColumn
Scheme
http
OriginalString
http://www.openlinksw.com/schemas/virtrdf#QuadMapColumn
DnsSafeHost
www.openlinksw.com
IdnHost
www.openlinksw.com
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
7
[ [type, http://www.openlinksw.com/schemas/virtrdf#array-of-QuadMapATable] ]
Count
1
Variables
[ type ]
Count
1
IsReadOnly
True
(values)
[ type ]
IsGroundResult
True
(values)
index value
0
[type, http://www.openlinksw.com/schemas/virtrdf#array-of-QuadMapATable]
Key
type
Value
http://www.openlinksw.com/schemas/virtrdf#array-of-QuadMapATable
Uri
http://www.openlinksw.com/schemas/virtrdf#array-of-QuadMapATable
AbsolutePath
/schemas/virtrdf
AbsoluteUri
http://www.openlinksw.com/schemas/virtrdf#array-of-QuadMapATable
LocalPath
/schemas/virtrdf
Authority
www.openlinksw.com
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/schemas/virtrdf
Segments
[ /, schemas/, virtrdf ]
IsUnc
False
Host
www.openlinksw.com
Port
80
Query
Fragment
#array-of-QuadMapATable
Scheme
http
OriginalString
http://www.openlinksw.com/schemas/virtrdf#array-of-QuadMapATable
DnsSafeHost
www.openlinksw.com
IdnHost
www.openlinksw.com
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
8
[ [type, http://www.openlinksw.com/schemas/virtrdf#QuadMapATable] ]
Count
1
Variables
[ type ]
Count
1
IsReadOnly
True
(values)
[ type ]
IsGroundResult
True
(values)
index value
0
[type, http://www.openlinksw.com/schemas/virtrdf#QuadMapATable]
Key
type
Value
http://www.openlinksw.com/schemas/virtrdf#QuadMapATable
Uri
http://www.openlinksw.com/schemas/virtrdf#QuadMapATable
AbsolutePath
/schemas/virtrdf
AbsoluteUri
http://www.openlinksw.com/schemas/virtrdf#QuadMapATable
LocalPath
/schemas/virtrdf
Authority
www.openlinksw.com
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/schemas/virtrdf
Segments
[ /, schemas/, virtrdf ]
IsUnc
False
Host
www.openlinksw.com
Port
80
Query
Fragment
#QuadMapATable
Scheme
http
OriginalString
http://www.openlinksw.com/schemas/virtrdf#QuadMapATable
DnsSafeHost
www.openlinksw.com
IdnHost
www.openlinksw.com
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri
9
[ [type, http://www.openlinksw.com/schemas/virtrdf#QuadMapFText] ]
Count
1
Variables
[ type ]
Count
1
IsReadOnly
True
(values)
[ type ]
IsGroundResult
True
(values)
index value
0
[type, http://www.openlinksw.com/schemas/virtrdf#QuadMapFText]
Key
type
Value
http://www.openlinksw.com/schemas/virtrdf#QuadMapFText
Uri
http://www.openlinksw.com/schemas/virtrdf#QuadMapFText
AbsolutePath
/schemas/virtrdf
AbsoluteUri
http://www.openlinksw.com/schemas/virtrdf#QuadMapFText
LocalPath
/schemas/virtrdf
Authority
www.openlinksw.com
HostNameType Dns
IsDefaultPort
True
IsFile
False
IsLoopback
False
PathAndQuery
/schemas/virtrdf
Segments
[ /, schemas/, virtrdf ]
IsUnc
False
Host
www.openlinksw.com
Port
80
Query
Fragment
#QuadMapFText
Scheme
http
OriginalString
http://www.openlinksw.com/schemas/virtrdf#QuadMapFText
DnsSafeHost
www.openlinksw.com
IdnHost
www.openlinksw.com
IsAbsoluteUri
True
UserEscaped
False
UserInfo
EffectiveType
NumericType NaN
NodeType Uri

Exemple d’exécution de requête SPARQL

Le code précédent : 1. Définit une requête - Recherche de pays francophones 2. Execute sur DBpedia - Via QueryWithResultSet() 3. Affiche les résultats - Avec le writer SPARQL Results XML

Requête executee :

SELECT ?country ?capital
WHERE {
    ?country a dbo:Country .
    ?country dbo:officialLanguage dbr:French_language .
    ?country dbo:capital ?capital .
}

Signification : “Pays ayant le francais comme langue officielle, et leur capitale”

Formats de résultats SPARQL :

Format Extension Writer
XML .srx SparqlXmlWriter
JSON .srj SparqlJsonWriter
CSV .csv SparqlCsvWriter
TSV .tsv SparqlTsvWriter

Note : Le format XML est verbeux mais standard W3C.

D. Utilisation d’une abstraction de haut niveau avec Trinity RDF

1. Comment Trinity RDF simplifie la gestion de RDF

Trinity RDF offre une abstraction orientée objet pour les données RDF. Avec Trinity RDF, les développeurs peuvent travailler avec des données RDF comme s’ils travaillaient avec des objets .NET normaux. Trinity RDF automatise également certaines tâches courantes, comme la création de triples RDF et la sérialisation des données RDF.

2. Exemple d’application de Trinity RDF

// #i "nuget: https://api.nuget.org/v3/index.json"
#r "nuget: dotNetRDF"
#r "nuget: OpenLink.Data.Virtuoso"
#r "nuget: Semiodesk.Trinity"
#r "nuget: Semiodesk.Trinity.Virtuoso"
Installed Packages
  • dotNetRDF, 3.5.1
  • OpenLink.Data.Virtuoso, 7.20.3214.1
  • Semiodesk.Trinity, 1.0.3.77
  • Semiodesk.Trinity.Virtuoso, 1.0.3.77

Trinity RDF : Abstraction de haut niveau

Trinity RDF est un ORM (Object-Relational Mapping) pour RDF :

Concept RDF classique Trinity RDF
Graphe IGraph IModel
Triplet Triple Proprietes C#
Noeud INode Objets C#
Store ITripleStore IStore

Principe : Mapper des classes C# sur des ontologies RDF.

// RDF classique
IUriNode person = g.CreateUriNode(":john");
IUriNode name = g.CreateUriNode("foaf:name");
ILiteralNode value = g.CreateLiteralNode("John Doe");
g.Assert(new Triple(person, name, value));

// Trinity RDF (exemple conceptuel)
var person = new Person { Name = "John Doe" };
model.AddResource(person);

Limitation : Necessite un Triple Store compatible (Virtuoso, Stardog, etc.). Les cellules suivantes sont optionnelles car elles dependent d’un serveur externe.

Section optionnelle : connexion a Virtuoso (legacy)

Note pedagogique — Cette cellule etait un exemple de connexion au triple store Virtuoso via la librairie dotNetRDF. Elle est conservee a titre documentaire mais n’est plus executee :

  1. Virtuoso n’est pas installe sur les machines cluster du cours
  2. Le notebook RDF.Net est explicitement deplace en RDF.Net-Legacy/ (cf commit a9afcfbd) et n’est plus une cible pedagogique principale. Voir SemanticWeb/SW-1 a SW-13 pour le parcours actuel.

Le code original est preserve ci-dessous a titre de reference :

// SECTION OPTIONNELLE: Connexion a Virtuoso (serveur externe requis)
// Cette section necessite un serveur Virtuoso installe et configure
// Si vous n'avez pas Virtuoso, cette cellule affichera un message d'information

using VDS.RDF;
using VDS.RDF.Storage;
using VDS.RDF.Query;

try
{
    Console.WriteLine("NOTE: Cette section necessite un serveur Virtuoso externe.");
    Console.WriteLine("Si Virtuoso n'est pas installe, les exemples suivants ne fonctionneront pas.");
    Console.WriteLine("Pour installer Virtuoso: https://virtuoso.openlinksw.com/");
    Console.WriteLine("");
    
    // Tenter la connexion a Virtuoso
    VirtuosoManager virtuoso = new VirtuosoManager("localhost", 1111, "DB", "user", "password");
    PersistentTripleStore store = new PersistentTripleStore(virtuoso);
    
    Console.WriteLine("Connexion Virtuoso reussie!");
    
    // Liste les graphes disponibles
    foreach (var graphUri in store.Graphs.GraphUris)
    {
        Console.WriteLine($"Graphe: {graphUri}");
    }
    
    store.Dispose();
    virtuoso.Dispose();
}
catch (Exception ex)
{
    Console.WriteLine($"INFO: Virtuoso non disponible (attendu si serveur non installe): {ex.Message}");
    Console.WriteLine("");
    Console.WriteLine("Cette erreur est NORMALE si Virtuoso n'est pas installe sur cette machine.");
}

Note sur la section Virtuoso :

La cellule suivante tente de se connecter a Virtuoso, un Triple Store serveur.

Pourquoi cette section est optionnelle ? : - Virtuoso doit etre installe et demarre separement - Configuration requise : hostname, port, credentials - Ne fonctionne pas “out of the box” dans ce notebook

Alternative pour tester Trinity : - Utiliser un store en memoire (sans persistence) - Utiliser SQLite comme backend (pas besoin de serveur)

Message d’erreur attendu :

Connection failed: No connection could be made because the target machine actively refused it

Pour les utilisateurs avances : Installer Virtuoso Open Source et configurer les paramètres de connexion.

E. Inférence avec OWL

1. Concepts de base d’OWL

OWL, ou Web Ontology Language, est un langage de représentation de connaissances pour le Web sémantique, développé par le W3C. OWL permet aux utilisateurs de définir des ontologies, qui sont des modèles de connaissances structurés qui décrivent les concepts dans un domaine et les relations entre ces concepts.

2. Comment utiliser OWL avec RDF.Net

RDF.Net offre des fonctionnalités pour manipuler les ontologies OWL. Les développeurs peuvent utiliser RDF.Net pour créer, modifier et interroger des ontologies OWL, et pour utiliser ces ontologies pour effectuer des inférences sur les données RDF.

3. Exemple de base

Avec l’API Ontologie :
// SECTION DEMO: Manipulation d'ontologies avec OntologyGraph
// Cette section utilise un fichier Ontology.rdf d'exemple

using System;
using System.Linq;
using VDS.RDF;
using VDS.RDF.Ontology;
using VDS.RDF.Parsing;
using Graph = VDS.RDF.Graph;

try
{


    // Créer un exemple d'ontologie en mémoire au lieu de charger un fichier
    OntologyGraph g = new OntologyGraph();
    
    // Définir des namespaces
    g.NamespaceMap.AddNamespace("ex", new Uri("http://example.org/"));
    g.NamespaceMap.AddNamespace("rdfs", new Uri("http://www.w3.org/2000/01/rdf-schema#"));
    
    // Créer une hiérarchie de classes simple
    var animal = g.CreateOntologyClass(new Uri("http://example.org/Animal"));
    var mammal = g.CreateOntologyClass(new Uri("http://example.org/Mammal"));
    var dog = g.CreateOntologyClass(new Uri("http://example.org/Dog"));
    
    // Ajouter les relations de sous-classe
    g.Assert(new Triple(
        g.CreateUriNode(new Uri("http://example.org/Mammal")),
        g.CreateUriNode(new Uri("http://www.w3.org/2000/01/rdf-schema#subClassOf")),
        g.CreateUriNode(new Uri("http://example.org/Animal"))
    ));
    g.Assert(new Triple(
        g.CreateUriNode(new Uri("http://example.org/Dog")),
        g.CreateUriNode(new Uri("http://www.w3.org/2000/01/rdf-schema#subClassOf")),
        g.CreateUriNode(new Uri("http://example.org/Mammal"))
    ));
    
    Console.WriteLine("Hiérarchie de classes créée:");
    Console.WriteLine("  Animal");
    Console.WriteLine("    └── Mammal");
    Console.WriteLine("          └── Dog");
    Console.WriteLine($"Nombre de triplets: {g.Triples.Count}");
    Console.WriteLine("✓ Section OntologyGraph terminée avec succès");
}
catch (Exception ex)
{
    Console.WriteLine($"Erreur dans la section OntologyGraph: {ex.Message}");
}
Hiérarchie de classes créée:
  Animal
    └── Mammal
          └── Dog
Nombre de triplets: 2
✓ Section OntologyGraph terminée avec succès

Ontologies avec OntologyGraph

OntologyGraph : Extension d’IGraph specialisee pour les ontologies OWL.

Classe standard Classe ontologie Fonction
IGraph OntologyGraph Graphe avec helpers OWL
INode OntologyClass Classe OWL
INode OntologyProperty Propriete OWL

Helpers disponibles : - GetOntologyClass(uri) - Acceder a une classe - GetOntologyProperty(uri) - Acceder a une propriete - CreateOntologyClass(uri) - Créer une classe - Navigation de hiérarchies (SubClassOf, SuperClassOf)

Exemple de fichier Ontology.rdf :

<owl:Class rdf:about="&ex;Person">
    <rdfs:subClassOf rdf:resource="&owl;Thing"/>
</owl:Class>
<owl:ObjectProperty rdf:about="&ex;hasParent">
    <rdfs:domain rdf:resource="&ex;Person"/>
    <rdfs:range rdf:resource="&ex;Person"/>
</owl:ObjectProperty>

Note : La cellule suivante necessite un fichier Ontology.rdf d’exemple (absent dans le notebook vierge).

Avec les API de Graphe et de Triple :
// SECTION DEMO: Navigation dans un graphe RDF
// Exemple avec des données créées en mémoire
using VDS.RDF;
using VDS.RDF.Parsing;

try
{
    
    
    // Créer un graphe avec une hiérarchie simple
    IGraph g = new VDS.RDF.Graph();
    g.NamespaceMap.AddNamespace("ex", new Uri("http://example.org/"));
    g.NamespaceMap.AddNamespace("rdfs", new Uri("http://www.w3.org/2000/01/rdf-schema#"));
    
    IUriNode subClassOf = g.CreateUriNode(new Uri("http://www.w3.org/2000/01/rdf-schema#subClassOf"));
    IUriNode animal = g.CreateUriNode(new Uri("http://example.org/Animal"));
    IUriNode mammal = g.CreateUriNode(new Uri("http://example.org/Mammal"));
    IUriNode dog = g.CreateUriNode(new Uri("http://example.org/Dog"));
    
    g.Assert(new Triple(mammal, subClassOf, animal));
    g.Assert(new Triple(dog, subClassOf, mammal));
    
    // Navigation: trouver les super-classes de Dog
    Console.WriteLine("Super-classes de Dog:");
    foreach (Triple t in g.GetTriplesWithSubjectPredicate(dog, subClassOf))
    {
        Console.WriteLine($"  - {t.Object}");
    }
    
    Console.WriteLine("✓ Section navigation RDF terminée avec succès");
}
catch (Exception ex)
{
    Console.WriteLine($"Erreur: {ex.Message}");
}
Super-classes de Dog:
  - http://example.org/Mammal
✓ Section navigation RDF terminée avec succès

4. Concepts

L’API fournit les concepts suivants :

  • OntologyGraph : Représente un graphe dont les éléments d’ontologie peuvent être accédés.
  • Ontology : Représente des informations sur une ontologie.
  • OntologyResource : Représente une ressource dans l’ontologie.
  • OntologyClass : Représente une classe dans une ontologie.
  • OntologyProperty : Représente une propriété dans une ontologie.
  • Individual : Représente une instance d’une classe dans une ontologie.

5. Inférence

L’inférence et le raisonnement sont des mécanismes par lesquels une application peut découvrir des informations supplémentaires qui ne sont pas explicitement indiquées dans les données initiales.

a) L’interface IInferenceEngine

L’interface IInferenceEngine a deux principales méthodes :

  • Initialise(IGraph g) : Initialise le raisonneur avec un graphe de schéma/règles.
  • Apply() : Applique l’inférence à un graphe.

b) Implémentations Existantes

Trois types de raisonneurs sont actuellement fournis :

  1. Raisonneur RDFS : Pour les hiérarchies de classes et de propriétés.
  2. Raisonneur SKOS : Pour les taxonomies de concepts.
  3. Simple N3 Rules Reasoner : Pour appliquer de simples règles N3.

Exemple de Raisonneur RDFS

// SECTION DEMO: Inférence RDFS
// Exemple avec des données créées en mémoire

using VDS.RDF;
using VDS.RDF.Parsing;

try
{
    
    
    
    // Créer un graphe de données
    Graph data = new Graph();
    data.NamespaceMap.AddNamespace("ex", new Uri("http://example.org/"));
    data.NamespaceMap.AddNamespace("rdf", new Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#"));
    data.NamespaceMap.AddNamespace("rdfs", new Uri("http://www.w3.org/2000/01/rdf-schema#"));
    
    IUriNode rdfType = data.CreateUriNode(new Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"));
    IUriNode subClassOf = data.CreateUriNode(new Uri("http://www.w3.org/2000/01/rdf-schema#subClassOf"));
    
    // Définir le schéma: Car est une sous-classe de Vehicle
    IUriNode vehicle = data.CreateUriNode(new Uri("http://example.org/Vehicle"));
    IUriNode car = data.CreateUriNode(new Uri("http://example.org/Car"));
    data.Assert(new Triple(car, subClassOf, vehicle));
    
    // Données: myCar est de type Car
    IUriNode myCar = data.CreateUriNode(new Uri("http://example.org/myCar"));
    data.Assert(new Triple(myCar, rdfType, car));
    
    Console.WriteLine("Données RDF:");
    Console.WriteLine("  - Car rdfs:subClassOf Vehicle");
    Console.WriteLine("  - myCar rdf:type Car");
    Console.WriteLine($"Nombre de triplets: {data.Triples.Count}");
    
    // Avec inférence RDFS, myCar serait aussi de type Vehicle
    Console.WriteLine("Avec inférence RDFS, on pourrait déduire:");
    Console.WriteLine("  - myCar rdf:type Vehicle (par transitivité)");
    
    Console.WriteLine("✓ Section inférence RDFS terminée avec succès");
}
catch (Exception ex)
{
    Console.WriteLine($"Erreur: {ex.Message}");
}
Données RDF:
  - Car rdfs:subClassOf Vehicle
  - myCar rdf:type Car
Nombre de triplets: 2
Avec inférence RDFS, on pourrait déduire:
  - myCar rdf:type Vehicle (par transitivité)
✓ Section inférence RDFS terminée avec succès

Inference RDFS

RDFS (RDF Schema) définit une sémantique de base pour RDF :

Constructeur RDFS Signification
rdfs:subClassOf A est une sous-classe de B
rdfs:subPropertyOf P1 est une sous-propriete de P2
rdfs:domain La propriete P s’applique aux instances de C
rdfs:range La propriete P a des valeurs de type C

Exemple d’inference :

# Données
ex:Dog rdfs:subClassOf ex:Animal .
ex:Fido rdf:type ex:Dog .

# Inference automatique
ex:Fido rdf:type ex:Animal .  # Deduit par transitivite

Moteurs d’inference RDF.Net : - StaticRdfsReasoner - Inference RDFS complete - OwlReasoner - Inference OWL (plus complexe)

Performance : L’inference peut etre couteuse sur de gros graphes. Elle est souvent faite a la creation, pas a chaque requête.

6. Conclusion

Les fonctionnalités de Trinity RDF et les capacités d’inférence d’OWL dans RDF.Net permettent de manipuler des données RDF de manière plus intuitive et efficace. Grâce à ces outils, les développeurs peuvent interroger, inférer et travailler avec des graphes RDF et des ontologies de manière simplifiée et puissante.


Retour au sommaire : Index SemanticWeb

Retour au sommet