Sie arbeiten wahrscheinlich in RDF (S) und nicht in OWL, aber wenn Sie die Möglichkeit haben, OWL-basierte Tools zu verwenden, und für alle, die diese Frage finden und OWL-basierte Tools verwenden können, Hier ist eine OWL-basierte Antwort.
Wenn Sie möchten, dass jede Instanz einer Klasse (einschließlich Instanzen ihrer Unterklassen) einen bestimmten Eigenschaftswert gemeinsam hat, können Sie eine Individual Value Restriction verwenden. In der Manchester-Syntax kann man sagen, dass Fälle von SomeClass
alle den Wert sharedIndividual
für die propery hasValue
durch das Axiom haben:
SomeClass SubClassOf hasValue value sharedIndividual
Dann hat jede Instanz SomeClass
den Typen hasValue value sharedIndividual
, was bedeutet, dass die Instanz hat sharedIndividual
als ein Wert für die hasValue
Eigenschaft.
Hier ist die N3-Serialisierung einer Ontologie mit einer Klasse SomeClass
und zwei Unterklassen SomeSubClass
und AnotherSubClass
. Jede der drei Klassen hat eine deklarierte Person. Der Typ hasValue value sharedIndividual
ist eine Oberklasse von SomeClass
.
@prefix : <http://www.example.com/valueClassExample#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
<http://www.example.com/valueClassExample>
a owl:Ontology .
:hasValue
a owl:ObjectProperty .
:sharedValue
a owl:Thing , owl:NamedIndividual .
:SomeClass
a owl:Class ;
rdfs:subClassOf
[ a owl:Restriction ;
owl:hasValue :sharedValue ;
owl:onProperty :hasValue
] .
:SomeSubClass
a owl:Class ;
rdfs:subClassOf :SomeClass .
:AnotherSubClass
a owl:Class ;
rdfs:subClassOf :SomeClass .
:SomeClassInstance
a :SomeClass , owl:NamedIndividual .
:SomeSubClassInstance
a owl:NamedIndividual , :SomeSubClass .
:AnotherSubClassInstance
a owl:NamedIndividual , :AnotherSubClass .
Mit dieser Ontologie in Protégé geladen und mit Pellet für die Argumentation angebracht ist, zu fragen, welche Personen haben sharedValue
als Wert der hasValue
Eigenschaft zeigt alle Individuen.
Wenn OWL im Bild ist (was es ist wahrscheinlich nicht, da RDF-Listen verwendet werden), wenn es einen Weg gibt, um die Liste zu beziehen, obwohl, können Sie festlegen, dass 'Someclass subClassOf semapi: hasChainTo value ', was bedeutet, dass jede Instanz von' SomeClass 'tatsächlich 'semapi: hasChainTo ' (und "jede Instanz" enthält Instanzen von Unterklassen). –
Ja, es ist wahr, dass Sie das tun könnten. Sie würden damit rechnen, die Komplexität eines OWL-Reasoners zu benötigen, anstatt jedes Mal, wenn eine Instanz erstellt wird, ein zusätzliches Tripel zu setzen. Da das Parlament die Update-Leistung bereits als problematisch eingestuft hat, bin ich mir nicht sicher, ob ich den Kompromiss zugunsten des Reasoners machen würde. Diese Entscheidung hängt jedoch vollständig von den Einzelheiten des Projektkontextes ab. –