Ich verwende TopBraid Composer Free Edition, um Ontologien und SPIN-Regeln zu erstellen. Ich lade meine Ontologien in Sesame OpenRDF Workbench mit einer RDF-Datei, die von TopBraid Composer Free Edition gespeichert wurde.Wie Konzept der aktiven/inaktiv zu SPIN-Regeln hinzufügen?
Ich habe eine Anwendung für SPIN-Regeln (genauer gesagt, SPIN-Konstruktoren), die in Bezug auf welche von Hunderten von Regeln dynamisch ist. Ich würde gerne einen Weg finden, SPIN-Regeln ein Konzept von "aktiv" oder "inaktiv" hinzuzufügen. Ich bin bereit, eine Regel zu jeder Regel in der WHERE
Klausel hinzuzufügen, so dass nur "aktive" Regeln. Um zu veranschaulichen, nehme ich an, dass ich zwei Untereigenschaften von SPIN erstelle: Konstruktor, rufe sie myPrefix:activeConstructor
und myPrefix:inactiveConstuctor
.
Jetzt möchte ich eine dreifache des Formulars auf der WHERE-Klausel meiner Konstrukteure hinzuzufügen:
?thisConstructorURI a myPrefix:activeConstructor .
Dieser Ansatz hängt ?thisConstuctorURI
auf definieren. SPIN setzt ?this
auf die aktuelle Instanz der Klasse, die der Regel zugeordnet ist. Gibt es etwas ähnliches für die URI der Regel itslef.
Ich glaube auch, dass derzeit die Regeln auf leere Knoten liegen. Zum Beispiel können die Konstrukteure für meine sxxicc: Pub7Proposal Klasse haben folgende Tripel für 13 Konstrukteuren wie in Sesame/OpenRDF Workbench angesehen:
SUBJECT PREDICATE OBJECT
sxxicc:Pub7Proposal spin:constructor _:node1anlqmpiox14591
sxxicc:Pub7Proposal spin:constructor _:node1anlqmpiox14638
sxxicc:Pub7Proposal spin:constructor _:node1anlqmpiox14710
sxxicc:Pub7Proposal spin:constructor _:node1anlqmpiox14787
sxxicc:Pub7Proposal spin:constructor _:node1anlqmpiox14841
sxxicc:Pub7Proposal spin:constructor _:node1anlqmpiox14927
sxxicc:Pub7Proposal spin:constructor _:node1anlqmpiox15002
sxxicc:Pub7Proposal spin:constructor _:node1anlqmpiox15088
sxxicc:Pub7Proposal spin:constructor _:node1anlqmpiox15114
sxxicc:Pub7Proposal spin:constructor _:node1anlqmpiox15195
sxxicc:Pub7Proposal spin:constructor _:node1anlqmpiox15257
sxxicc:Pub7Proposal spin:constructor _:node1anlqmpiox15336
sxxicc:Pub7Proposal spin:constructor _:node1anlqmpiox15377
Was wirklich brauche ich (glaube ich) ist
- Regeln der Lage sein, sich (meine
?thisConstructorURI
Idee) zu verweisen - der Lage sein, Regeln zu nennen, wenn ich sie schreiben (zB
sxxicci:Pub7ProposalSecurityClassificationConsistencyCheck
)
Das ist alles, damit ich die Regeln einzeln (oder durch einfache Erweiterung in beliebigen benannten Gruppen) aktivieren/deaktivieren kann. Irgendwelche Ideen, wie man das macht?
Erfüllen 1. oben ist ähnlich dem spin:violationSource
bereits für Einschränkungen unterstützt, die in einem spin:ConstraintViolation
enthalten sein können. Allerdings verwende ich ganz bewusst Konstruktoren anstelle von Constraints, hauptsächlich weil ich die Instantiierung einer Klasse nicht blockieren möchte, selbst wenn sie Verletzungen aufweist.
Ich fürchte, die Antwort ist, dass der aktuelle SPIN-Standard und Implementierungen dies nicht unterstützen und dass es erforderlich wäre, die unterstützende Implementierung zu ändern, um den Standard dafür zu erweitern.
Ich habe ein wenig Fortschritte gemacht, aber es ist peinlich. Ein Konstruktor kann sich unter der Annahme befinden, dass er eine eindeutige Kommentarzeichenfolge hat, etwa: 'sxicicc: Pub7Proposal sxicicc: activeSxxiPub7ComplianceCheckRule? ThisRule. ? ThisRule rdfs: Kommentar "Der Hauptfunktions-IDENTIFIZIERER IST UNGÜLTIG. (511 02)" ^^ xsd: string .' –