Bonjour,
S'il vous plait, je voudrais créer une interface information personnelles des chercheurs ou je récupère directement les valeurs des attributs de mon concept Chercheur de mon ontologie (nom, prénom, email...). Pourriez-vous m'aider ?
Bonjour,
S'il vous plait, je voudrais créer une interface information personnelles des chercheurs ou je récupère directement les valeurs des attributs de mon concept Chercheur de mon ontologie (nom, prénom, email...). Pourriez-vous m'aider ?
Qu'entends-tu par "attributs"?
En lisant le sujet et ton message, j'ai l'impression d'avoir affaire à deux questions différentes
Pas de grandeur pour qui veut grandir. Pas de modèle pour qui cherche ce qu'il n'a jamais vu.
bonjour,
alors j'ai plusieurs classes dans mon ontologie :chercheur,projet de recherche chaque classe posséde des propriétés nom,prénom,email...,au lieu de les rentrer dans protégé directement je veux faire une interface avec des champs nom,prenom et un bouton ajouter pour rentrer directement les instances dans protégé je sais qu'il faut créer un ressource mais je sais pas comment préciser nom,prenom....
La solution la plus simple est de créer des propriétés de données (Datatype property) liant ton entité chercheur par exemple à des chaînes de caractères, des entiers...
Exemple: Création d'une propriété de données aPourAge entre la classe Chercheur et un entier
Pas de grandeur pour qui veut grandir. Pas de modèle pour qui cherche ce qu'il n'a jamais vu.
Bonjour,
merci de me répondre, vous m'avez donné une idée. Au lieu de créer des data property, j'ai crée des individus. Voila mon code :
Pouvez-vous me donner votre avis s'il vous plait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part public static final String NL = System.getProperty("line.separator") ;
Cordialement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 public static void main(String[] args)throws Exception { OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_MICRO_RULE_INF); String inputFileName ="C:\\Users\\sarah\\Desktop\\ontocerist.owl"; // use the FileManager to find the input file InputStream in = FileManager.get().open(inputFileName ); if (in == null) { model.read(in, " ", inputFileName); throw new IllegalArgumentException("File: " + inputFileName + " not found");} String URI = "http://www.semanticweb.org/SEVEN7/ontologies/2012/2/Ontology1331977184905.owl#"; OntClass person = model.createClass(URI + "Cours"); Individual l1 = model.createIndividual( URI+ "base", person ); for (Iterator i = l1.listRDFTypes(true); i.hasNext(); ) System.out.println( l1.getURI() + " is asserted in class " + i.next() ); OutputStream out = new FileOutputStream("altered.rdf"); model.write( out, "RDF/XML"); // readable rdf/xml out.close(); }
La solution que j'ai proposé concernait votre besoin de stocker dans une ontologie des attributs comme l'âge d'une personne.
Votre code ne gère pas ces attributs.
Pas de grandeur pour qui veut grandir. Pas de modèle pour qui cherche ce qu'il n'a jamais vu.
Oui, je me suis trompée mais s'il vous plait, comment puis je préciser que je veux rajouter la propriété "a pour nom" dans la propriété "nom" de ma classe ? Pouvez-vous m'orienter ? Je ne sais pas comment continuer. J'ai fait ça :
Merci pour tout,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Resource p1=model.createResource(URI+"base"); Property apournom=model.createProperty(URI); p1.addProperty(apournom, URI);}
cordialement.
Je vous invite à consulter la FAQ de la section et plus particulièrement cette article http://web-semantique.developpez.com...er-prop-donnee
Pas de grandeur pour qui veut grandir. Pas de modèle pour qui cherche ce qu'il n'a jamais vu.
merci pour tout
c'est pas vraiment ce que je cherche moi mon ontologie est deja faite par protégé 2000 je vais juste l'omprter et créer des instances sous java pas en passant par protégé
Résumons la situation : tu as créé une ontologie avec Protégé qui contient des classes et des propriétés. D'après ce que j'ai compris, l'ontologie définit grosso-modo des choses comme ça (syntax Turtle) :
Que ce soit fait avec Protégé ou non n'a pas d'importance, ce qui importe est que tu as un fichier décrivant cette ontologie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 @prefix onto: <baseUriDeTonOntologie> . @prefix owl: <http://www.w3.org/2002/07/owl#> . onto:Chercheur a owl:Class . onto:nom a owl:DatatypeProperty . onto:prenom a owl:DatatypeProperty . onto:email a owl:DatatypeProperty .
Maintenant, tu voudrais avoir une interface graphique dans laquelle on entre le nom, prénom et email d'une nouvelle personne et des assertions sont automatiquement créées. On peut procéder de différentes manières, mais dans tous les cas, on construit son interface graphique avec l'outil ou le langage que l'on veut. Ensuite, il y a plusieurs possibilités quant à la manière dont on va utiliser les données soumises par le formulaire.
Première solution : gestion en mémoire. Tu crées, avec une API RDF (par exemple Jena en Java, dotNetRDF en C#, etc) un modèle en mémoire qui représente un graphe RDF. Ce graphe peut éventuellement être initialisé avec l'ontologie mais ce n'est pas obligatoire (d'ailleurs, il est souvent préférable de maintenir une séparation entre l'ontologie et les données conformes à l'ontologie).
Il faudra en tout cas générer un nouvel URI pour le chercheur ajouté. Pour cela, il faut décider d'une convention de nommage (par exemple, on génère un nouveau numéro qu'on incrémente à chaque fois, ou bien on décide de prendre le nom et le prénom, au risque d'avoir des homonymes).
Chaque soumission de données par l'interface ajoutera des triplets dans le modèle en mémoire. Pour que l'information persiste après avoir quitter l'application, on peut sérialiser le modèle dans un fichier RDF/XML ou Turtle ou N-Triple par exemple. On peut aussi décider de créer un fichier différent pour chaque chercheur ajouté, mais ce n'est pas particulièrement pratique. Si l'on souhaite que tout soit ajouté au même fichier à chaque exécution de l'appli, il faudra alors charger en mémoire les données déjà enregistrées auparavant avant d'enrichir le modèle, puis le réécrire entièrement avant de quitter.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 /* Initialisation : on charge l'ontologie en mémoire, on crée un nouveau modèle vide et on sélectionne les termes de l'ontologie dont on a besoin */ //ici, il faut mettre le nom du fichier ontologie InputStream is = new BufferedInputStream(new FileInputStream("monOntologie.owl")); OntModel ontology = ModelFactory.createOntologyModel(); // si le fichier n'est pas enregistré en RDF/XML, changer le paramètre ontModel.read(is, "RDF/XML"); // on va mettre les données dans un autre modèle Jena OntModel mod = ModelFactory.createOntologyModel(); OntClass chercheurClass = ontology.getOntClass("uriDeLaClassChercheurDansLOntologie"); DatatypeProperty nomProp = ontology.getDatatypeProperty("uriDeLaProprieteNomDansLOntologie"); DatatypeProperty prenomProp = ontology.getDatatypeProperty("uriDeLaProprietePrenomDansLOntologie"); DatatypeProperty emailProp = ontology.getDatatypeProperty("uriDeLaProprieteEmailDansLOntologie"); /* Gestion des données soumises par l'intermédiaire de l'interface */ Individual c = mod.createIndividual(uriChercheur,chercheurClass); // on peut éventuellement mettre un langageTag: Literal n = mod.createLiteral(nom); Literal p = mod.createLiteral(prenom); // idem Literal e = mod.createTypedLiteral(email,XSD.string); mod.createStatement(c,nomProp,n); mod.createStatement(c,prenomProp,p); mod.createStatement(c,emailProp,e);
C'est sans doute la solution la plus simple, mais pas la plus flexible ni la plus performante.
Deuxième solution : on utilise un magasin de triplets (triple store, i.e., une base de données RDF). Dans ce cas, il faut au préalable installer un triple store de son choix. Puis, pour ajouter des données à partir de ce qui est soumis depuis l'interface, on construit une requête SPARQL UPDATE que l'on envoie au triple store, et celui-ci se charge de ranger tout ça comme il faut. L'avantage est qu'on n'a pas besoin de garder un gros graphe en mémoire, qu'on ne réécrit pas tout le temps toutes les données et qu'on a la possibilité "gratuitement" de faire des requêtes sur ce qu'on a ajouté.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 String requete = "PREFIX onto: <baseUriDeTonOntologie> .\n" + "INSERT DATA {\n" + " <nouvelURIGenerePourLeChercheur> a onto:Chercheur;\n" + " onto:nom " + champNom.getTex() + ";\n" + " onto:prenom " + champPrenom.getTex() + ";\n" + " onto:email " + champEmail.getTex() + " .\n" + "}"; // Ensuite, on n'est même pas obligé d'utiliser Jena, // il suffit de faire un HTTP POST à l'URL du service d'update du triple store // en mettant la requete en paramètre, ainsi en utilisant apache Jakarta: PostMethod post = new PostMethod("<urlDuServiceUpdate>"); NameValuePair[] paramRequete = { new NameValuePair("query", $requete), }; post.setRequestBody(paramRequete); // gestion possible d'erreurs éventuelles ... InputStream in = post.getResponseBodyAsStream(); // gérer la réponse du serveur.
7susd bl'ham owsql wuul pô!
merci beaucoup c'est ce que je cherchais je vais esseyer les deux solution
cordialement
J'ai essayé la première solution, ils me disent que les adresses relatives URI ne sont pas acceptées dans RDF comment faire ?
code
RDFDefaultErrorHandler.java:49) - unknown-source: {W136} Relative URIs are not permitted in RDF: specifically <RDF/XML>
j'ai esseyé de créer des ressources aprés des individus aprés des data property d'aprés ce qu'elle dit la page mais toujours le problem des URI ils me disent les URIS adresses relatives ne sont pas admisent en RDF
Pouvez-vous nous montrer votre code s'il vous plaît?
Pas de grandeur pour qui veut grandir. Pas de modèle pour qui cherche ce qu'il n'a jamais vu.
oui biensure merci beaucoup pour votre attention:
voici mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package licence; import com.hp.hpl.jena.iri.impl.Main; import com.hp.hpl.jena.ontology.DatatypeProperty; import com.hp.hpl.jena.ontology.Individual; import com.hp.hpl.jena.ontology.OntClass; import com.hp.hpl.jena.ontology.OntModel; import com.hp.hpl.jena.ontology.OntModelSpec; import com.hp.hpl.jena.rdf.model.*; import com.hp.hpl.jena.util.FileManager; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Iterator; import java.util.logging.Level; import java.util.logging.Logger; import com.hp.hpl.jena.query.Query; import com.hp.hpl.jena.vocabulary.XSD; import java.io.BufferedInputStream; import java.io.FileInputStream; public class Licence { public static final String NL = System.getProperty("line.separator") ; public static final String URIB="http://www.semanticweb.org/SEVEN7/ontologies/2012/2/Ontology1331977184905.owl#"; public void connect() throws FileNotFoundException { OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_MICRO_RULE_INF); InputStream is = new BufferedInputStream(new FileInputStream("C:\\Users\\sarah\\Desktop\\ontocerist.owl")); OntModel ontology = ModelFactory.createOntologyModel(); model.read(is, "RDF/XML"); OntModel mod = ModelFactory.createOntologyModel(); OntClass chercheurClass = ontology.getOntClass("http://www.semanticweb.org/SEVEN7/ontologies/2012/2/Ontology1331977184905.owl#Chercheur"); DatatypeProperty nomProp = ontology.getDatatypeProperty("http://www.semanticweb.org/SEVEN7/ontologies/2012/2/Ontology1331977184905.owl#Nom"); DatatypeProperty prenomProp = ontology.getDatatypeProperty("http://www.semanticweb.org/SEVEN7/ontologies/2012/2/Ontology1331977184905.owl#Prenom"); Individual c = mod.createIndividual("http://www.semanticweb.org/SEVEN7/ontologies/2012/2/Ontology1331977184905.owl#Chercheur",chercheurClass); // on peut éventuellement mettre un langageTag: Literal n = mod.createLiteral("sarah"); Literal p = mod.createLiteral("sefti"); // idem mod.createStatement(c,nomProp,n); mod.createStatement(c,prenomProp,p); } public static void main(String[] args)throws Exception { Licence a=new Licence (); a.connect(); } }
Et le contenu de l'ontologie s'il vous plaît
Pas de grandeur pour qui veut grandir. Pas de modèle pour qui cherche ce qu'il n'a jamais vu.
Il y a une erreur dans la création de ton instance:
La méthode createIndividual de la classe OntModel prend en premier paramètre l'URI de l'instance et en second paramètre un objet de type Resource représentant la classe à instancier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Individual c = mod.createIndividual("http://www.semanticweb.org/SEVEN7/ontologies/2012/2/Ontology1331977184905.owl#Chercheur",chercheurClass);
Pas de grandeur pour qui veut grandir. Pas de modèle pour qui cherche ce qu'il n'a jamais vu.
bonjour,
mon ontologie contient plusieurs classes:"chercheur""projet de recherche".... chaque classe a des propriétés par exemple la classe chercheur possède un nom,prenom,email.....,comme je l'ai déja mentionné au par avant je voudrais crée un formulaire à partir de java ou à chaque clique les noms et prénoms des chercheurs(les triplets RDF) sont rentrés directement dans mon ontologie sachant que je n'ai pas d'individus voila c 'est tout merci pour votre attention
merci je vais rectifier en creant une ressource
cordialement
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager