2009-12-08 17 views
1

J'ai un problème avec RDF. J'ai deux triplets défini comme:Définition de la cardinalité pour une instruction RDF

<User rdf:about="#T"> 
<hasName rdf:datatype="http://www.w3.org/2001/XMLSchema#string">T</hasName> 
<hasFavourite rdf:resource="#x"/> 
<hasFavourite rdf:resource="#y"/> 
</User> 

Im vouloir ajouter à la (utilisateur, hasFavourite, x) et (utilisateur, hasFavourite, y) triplets que je dois associer un entier avec eux. Im un peu incertain de la façon d'ajouter un entier à un triple. Je suis sûr que cela doit être simple, mais je suis juste en train de prendre RDF pour que toute aide soit appréciée.

Merci Ally

Répondre

1

Donc, si je lis la question et votre commentaire sur le post de dajobe correctement vous voulez probablement quelque chose comme ça (encore une fois en notation tortue car il est tellement plus facile à lire):

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

:T 
    :hasFavourite :fave1, :fave2 ; 
    :hasName "T" ; 
    a :User . 

:fave1 a :Favourite ; 
     :band :x ; 
     :playCount 10 . 

:fave2 a :Favourite ; 
     :band :y ; 
     :playCount 4 . 

:x a :Band ; 
    :hasName "Band 1" . 

:y a :Band ; 
    :hasName "Band 2" . 

donc, ce qui vous permet de garder les compteurs de lecture pour chaque utilisateurs favoris individuellement et chaque bande peut être choisie en tant que favori par les différents utilisateurs en créant de nouveaux favoris comme Champs obligatoires.

Je pourrais bien sûr me tromper complètement bien sûr et ceci peut ne rien avoir comme ce que vous voulez réellement!

+0

Compte tenu de la clarification sur le problème, cela me semble le bon modèle de données. Il est parfois plus facile de le faire sur papier, mais c'est difficile d'écrire sur une page Web! – dajobe

+0

Oui certainement plus facile à écrire sur papier, mais pour le web, je préfère taper cela dans Turtle que RDF/XML un jour – RobV

+0

Cheers les gars. Je viens juste de l'essayer et ça marche. Je n'ai pas pensé à créer un type qui soit fondamentalement une relation !! Merci encore – allyLogan

1

Je ne suis pas tout à fait clair ce que vous voulez modéliser ici; que la ressource Utilisateur a des triplets avec des valeurs entières ou que les ressources X et Y ont des valeurs entières. Je suppose que ce dernier est plus complexe.

<?xml version="1.0" encoding="utf-8"?> 
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns="http://example.org/ns#"> 
<User rdf:about="#T"> 
<hasName rdf:datatype="http://www.w3.org/2001/XMLSchema#string">T</hasName> 
<hasFavourite rdf:resource="#x"/> 
<hasFavourite rdf:resource="#y"/> 
</User> 
<hasFavourite rdf:about="#x"> 
    <integerThatMeansSomething rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">10</integerThatMeansSomething> 
</hasFavourite> 
<hasFavourite rdf:about="#y"> 
    <integerThatMeansSomething rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">20</integerThatMeansSomething> 
</hasFavourite> 
</rdf:RDF> 

Ceci est un peu plus facile à lire Turtle: (converti par rapper -q -o turtle foo.rdf 'http://example.org/ns#' de mon logiciel Raptor)

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

:T 
    :hasFavourite :x, :y ; 
    :hasName "T"^^<http://www.w3.org/2001/XMLSchema#string> ; 
    a :User . 

:x 
    :integerThatMeansSomething 10 ; 
    a :hasFavourite . 

:y 
    :integerThatMeansSomething 20 ; 
    a :hasFavourite . 

Disclaimer: J'edited rdf/xml, inventa la tortue et le logiciel écrit ci-dessus!

Lecture ci-dessus comme: "T est un utilisateur, a deux favoris x et y et un nom de chaîne X est un favori et a une propriété entière avec la valeur 10." etc. pour Y.

Si ce fut le premier, le rdf/xml est plus simple:

<User rdf:about="#T"> 
<hasName rdf:datatype="http://www.w3.org/2001/XMLSchema#string">T</hasName> 
<hasFavourite rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">10</hasFavourite> 
<hasFavourite rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">20</hasFavourite> 
</User> 
+0

Salut dajobe merci pour votre réponse. Vous ressemblez à vous maintenant votre rdf! J'ai réalisé que je n'ai pas expliqué mon problème correctement. Ce que je devrais avoir mentionné est qu'il pourrait y avoir plus d'un utilisateur et ils peuvent avoir la relation hasFavourite sur le même 'x' ou 'y' (qui sont en fait des bandes) donc fondamentalement pour chacun (utilisateur, hasfavourite, bande) triple i besoin d'associer une valeur entière (playCount) avec ce triplet réel plutôt que l'utilisateur ou la bande individuellement car chaque bande peut avoir plusieurs triplets hasFavoutite. Merci pour votre temps. Ally – allyLogan