2012-08-29 5 views
4

Voici comment je sais pour créer une classe N3:Y at-il un raccourci pour la création d'une classe N3/tortue langage d'ontologie

:Person a rdfs:Class. 

Et voici comment spécifier qu'une ressource spécifique est une instance de cette classe:

:Pat a :Person. 

problème: Je veux créer une classe avec plus de 20000 cas (générés par programmation). L'écriture de l'ensemble :Pat a :Person. pour mes 20000 instances rend le fichier d'ontologie verbeux.

Question: Est-il possible de réduire le fichier?

Répondre

2

Vous pouvez définir un préfixe personnalisé pour l'URI complète de classe, puis il suffit d'utiliser le préfixe pour désigner la classe:

@prefix : <http://example.com/myOntology#>. 
@prefix x: <http://example.com/myOntology#MyClass>. 

:Alice a x: . 
:Bob a x: . 
:Charlie a x: . 

Ce n'est pas exactement lisible, mais aussi court que ça va arriver. Je suis d'accord avec Antoine pour dire qu'il y a peu de raison de ce genre de supercherie. L'espace disque est bon marché, et ce matériel se compresse bien pour le transfert réseau, et pour le traitement dans une application, il sera élargi de toute façon.

+0

Un grand merci pour ces réponses. J'aime la suggestion de préfixe. Ai-je besoin d'indiquer explicitement ": Alice a x:." si Alice est impliqué, est-ce que certaines relations? Plus précisément, disons que j'ai "x: Alice: hasSibling x: Bob". Est-ce que cela implique que Alice et Bob sont x? – user14750

+0

Un commentaire sur la raison pour laquelle je pose cette question. J'aime beaucoup le travail sur le web sémantique et je crois qu'il a un énorme potentiel mais ne parvient pas à fournir la simplicité qui permettrait une large acceptation du public (peut-être la façon dont le HTML a été largement adopté en son temps). Donc, j'étudie les raccourcis de notation disponibles. Maintenant, il est évident que les instances 20K sont difficiles à décrire d'une manière "simple". Mais j'espère que mon ontologie sera lue et utilisée par beaucoup de gens et je veux l'écrire de la manière la plus lisible possible. – user14750

+1

La réponse à vos questions est la suivante: Oui, vous devez taper les choses explicitement (sauf si vous supposez que chaque utilisateur des données a une boîte à outils qui supporte l'inférence, ce qui n'est généralement pas le cas). Et non, "' x: Alice: hasSibling x: Bob' "n'implique pas qu'Alice et Bob sont' x: '. – cygri

6

Si vous utilisez vraiment N3 et non tortue (ce dont je doute), vous pouvez utiliser les mots-clés @is ... @of, comme ceci:

:Person a rdfs:Class; 
    @is a @of :Pat, :Bob, :Chris, :Cindy, :Suzy . 

Il n'y a guère de boîte à outils de tortue qui le permettent.

Il y avait aussi un long fil de discussion sur le [email protected] Mail Archives sur l'ajout de cette fonctionnalité à Turtle (qui est actuellement publié par le W3C comme un dernier appel Projet), en commençant par un comment by Tim Berners-Lee. Puis est allé un comment by Dave Beckett demandant pas y compris la fonctionnalité, et un long thread à nouveau. Puis est allé un bon résumé des positions avec un comment by Gavin Carothers, éditeur de la spécification Turtle dans le groupe de travail RDF actuel.

Cependant, je doute que cela devienne une caractéristique de Turtle quand il sera finalement standardisé.

BTW, quel est le problème d'avoir 20 000 enregistrements quand tout est généré (et je suppose, parsé) par programmation? Si vous avez besoin d'échanger autant de données sur le réseau, vous pouvez facilement le compresser. Ou, vous pouvez utiliser une syntaxe de sérialisation compacte comme HDT, mais il existe peu d'implémentations.

Questions connexes