Frage

Ich habe eine RDF-Datei in meinem semantischen Web-Projekt und ich verwende Rowlex es für die Manipulation. Ich habe benötigt, um eine Person von RDF zu entfernen, so habe ich

<RDFDoc instance>.RemoveIndividual(new OwlThing(<individual URI>, <RDFDoc instance>));

Mit diesem Code hatte ich meine einzelnen gegangen, aber es ist Eigenschaften blieb. So habe ich herausgefunden, dass ich zuerst die Eigenschaften entfernen. Außerdem habe ich keinen Befehl zum Entfernen aller Eigenschaften zusammen finden. Also, Question1 : Gibt es eine Möglichkeit, ein Individuum mit all entfernen es Eigenschaften sind? oder kann ich alle Eigenschaften in einer Zeile Code entfernen und nicht eins nach dem anderen? Und wie kann ich entfernen Eigenschaften mit mehreren Werten. Zum Beispiel drei StudyLists, in Beispiel unten Seite.

Auf der anderen Seite, als ich versuchte, eine Eigenschaft, zum Beispiel ‚useSudyList‘ von Schülern Individuum zu entfernen, die von diesem Code:

student.RemoveuseStudyList(student.useStudyList);

fand ich meine RDF-Datei:

<Ontologyowl:Student rdf:about="ehsanm">
//other properties
    <Ontologyowl:useStudyList>
        <Ontologyowl:StudyList rdf:about="stdl184516"/>
    </Ontologyowl:useStudyList>
</Ontologyowl:Student>

... sich wie folgt:

<Ontologyowl:Student rdf:about="ehsanm">
    //other properties  

</Ontologyowl:Student>
<Ontologyowl:StudyList rdf:about="stdl184516"/>

So wurde das Anwesen geworfen. Ich habe nicht dieses Problem mit wörtlichen Eigenschaften. Question2 : Was ist das Problem

Vielen Dank für Ihre Aufmerksamkeit und Hilfe im Voraus.

War es hilfreich?

Lösung

Ihre Frage hat nichts mit ROWLEX zu tun, aber es ist ein typisches Diagramm Problem: Wenn Sie einen Knoten löschen, wie Sie die Löschung weit Sie kaskadieren? Wenn Sie eine Eigenschaft mit einem wörtlichen löschen, ist der Fall einfach, da es keine Fortsetzung des Graphen ist. Wenn Sie eine Eigenschaft löschen auf einen anderen Knoten zeigen sollten Sie den Knoten löschen? Deletion in Ihrem Beispiel sieht offensichtlich, weil Ihr Diagramm weder zirkulären Verweis enthält, noch geteilt Beziehungen.

Stellen Sie sich das folgende Diagramm: Sie haben 3 Personen: A (Adam), B (Bill), und ihr Vater F (Fred). Sie haben Vaterschaft Beziehung zwischen A - F und B - F. Sie löschen Beziehung zwischen Adam und seinem Vater. Sollten Sie den Vater-Knoten und bringen Bill in einem inkonsistenten (orphan :) Zustand löschen? Die Antwort ist „Nein“. Sie löschen die Beziehung nur.

In UML-Diagramme, haben Sie die Möglichkeit, in Aggregationsbeziehung zwischen „besitzen“ und „shared“ zu unterscheiden. Es ist in der Farbe (schwarz oder weiß) des Diamanten am Ende der Zeile zum Ausdruck gebracht. In relationalen Datenbanken können Sie festlegen, oder „Cascade löschen“ über Fremdschlüssel ignorieren. Sie repräsentieren das gleiche Konzept. Leider hat RDF nicht diese zusätzliche Metadaten über eine Eigenschaft bieten. diese Informationen zur Verfügung hatte RDF haben, konnten wir bestimmen, wann und wie weit wir Löschung über die Grafik kaskadieren. Aber wir tun es nicht. Das stellt den Fall für die schlechten Nachrichten auf. Sie alleine sind, können Sie das Löschen implementieren, wie Sie sehen, passen

Andere Tipps

Sie haben die Eigenschaft entfernen, aber es gab auch andere Aussagen im Zusammenhang mit <stdl184516>, die Sie nicht entfernen.

Hier sind die tatsächlichen Anweisungen, die Sie haben (Turtle-Format):

<ehsanm> a Ontologyowl:Student .
## Other statements
<ehsanm> Ontologyowl:useStudyList <stdl184516> .
<stdl184516> a Ontologyowl:StudyList .

So macht es Sinn, dass die Entfernung des Ontologyowl:useStudyList Prädikats für <ehsanm> Subjekt (und die Erklärung, die sie enthält) die verbleibende Behauptung in Bezug auf <stdl184516> des Typs verlassen würde.

Der Grund, warum Sie dieses Problem nicht mit Literale haben, ist, dass Sie keine Literale als Subjekte einer Aussage haben (sie nur Objekte einer Aussage sind). So diese Aussage zu entfernen entfernt die wörtliche (und alle Verweise darauf). Mit Ressourcen als Objekt der Aussage, könnte es weitere Aussagen sein in Bezug auf diese Ressource (wie in Ihrem Beispiel ist).

RDF hält Literale disjunkt, dh sie alle verschieden sind (auch wenn sie den gleichen Wert haben). Dieses warum das Entfernen ein Prädikat zu einem wörtlichen (dem „Link“, um es, wenn Sie es auf diese Weise denken) entfernt auch die wörtlichen.

Update (hinzufügen, um Mr. Lame Antwort): Konzeptionell RDF ist über Kanten (Beziehungen / Prädikate) in einem Graphen von Knoten (Ressourcen). Die Idee, einen Knoten zu löschen ist zu RDF Gegenteil; es bedeutet, der Knoten (Ressource) auf seine eigene Bedeutung hat. Selbst eine Ressource Eingabe durch seine rdf:type behauptet ist ein Knoten / Kanten / Knoten-Anweisung. Der Knoten URI allein wird als opak und hat keine Semantik über eine eindeutige Kennung sein. Aus diesem Grund RDF nicht „blank“ Knoten erlauben (ein Knoten außerhalb einer Erklärung.) - sie haben keine eigene Bedeutung

die Frage von Ehsan gestellt verlängern, würde einen Knoten zu löschen tatsächlich alle seine eingehenden / ausgehenden Prädikate löschen. Dies gilt nicht wirklich „löschen“ den Knoten, es tatsächlich entfernt alle Aussagen / Behauptungen, die darauf verweisen (man denke an sie als „versteckt“, wenn keine Aussagen darauf verweisen).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top