Jürgen,

I had a stab at this, you can find my query below. I ran it against a version of the SKOS spec that was sent through the Jena RDFS reasoner. It won't work without a reasoner.

The query returns exactly what you want for skos:Concept.

If you change skos:Concept in the query to skos:ConceptScheme, it will return the properties you asked for plus those six:

skos:altSymbol
skos:prefSymbol
skos:primarySubject
skos:subject
skos:symbol

I'm not sure why you excluded them from your expected results, their range is either rdfs:Resource or unconstrainted, so they are all applicable to ConceptSchemes. I think you just missed them?

So, what's the deal with skos:narrower? It doesn't have a domain declared, but it's declared to be a subproperty of skos:semanticRelation, and that has skos:Concept as its domain. So all you have to do is write the query to also check the domains of superproperties.

Best,
Richard


PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX dct: <http://purl.org/dc/terms/>
SELECT DISTINCT ?p
FROM <skos-with-inference.rdf>
WHERE {

  # Find all properties
  ?p a rdf:Property .

  # Remove non-SKOS properties
  ?p rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> .

  # Remove deprecated properties (those that have a replacement)
  OPTIONAL {
    ?p dct:isReplacedBy ?replacement .
  }
  FILTER (!BOUND(?replacement))

  # Try to find all classes in the domain of the property
  OPTIONAL {
    ?p rdfs:subPropertyOf ?superprop .
    ?superprop rdfs:domain ?domain .
    ?class rdfs:subClassOf ?domain .
  }

  # Only keep those with unconstrained domain, or who have our target
  # class in the domain
  FILTER (!BOUND(?domain) || ?class = skos:Concept)
}
ORDER BY ?p


On 16 May 2008, at 23:42, Jürgen Jakobitsch wrote:


hello,

as an application developer i'm getting to the point of thinking that rdf - owl and sparql
are absolutely not for production use in any way.

currently i'm developing [ trying to @ least ] a skos application that should enable an ordinary user [ not some kind of domain expert or programmer ] to create full
skos:Concept s in a web environment, now :

@ some point during the workflow i come to the point where i have to let the user choose the properties that should be applied to a skos:Concept, say a prefLabel, an altLabel and so on.

how can i sparql all properties for a skos:Concept to let user choose?

1. i could check for properties with a domain skos:Concept
- without a reasoner i just get semanticRelation and the like. not even broader or narrower - with a reasoner i get narrower and broader and the like but no scopeNote, definition and so on, so i just could 2. add a link to propertieswithoutadomainclickhere and sparql for properties that don't have a domain specified, but what 3. if i apply the same query [ and no i do not intend to write a whole set of queries for each ontology ] to a skos:ConceptScheme? 4. well i get skos:narrower as property suggestion for a skos:ConceptScheme and that's gonna lead a shoot first - check for consistence later application, which i don't want to develop. 5. allways displaying all properties of an ontology is not an option , too.

so here's the challenge :

write a [ 1 one uno une yek wahid ] sparql-query that displays about the following properties when i click on

skos:Concept :

http://www.w3.org/2004/02/skos/core#changeNote
http://www.w3.org/2004/02/skos/core#editorialNote
http://www.w3.org/2004/02/skos/core#historyNote
http://www.w3.org/2004/02/skos/core#example
http://www.w3.org/2004/02/skos/core#scopeNote
http://www.w3.org/2004/02/skos/core#definition
http://www.w3.org/2004/02/skos/core#note
http://www.w3.org/2004/02/skos/core#related
http://www.w3.org/2004/02/skos/core#narrower
http://www.w3.org/2004/02/skos/core#broader
http://www.w3.org/2004/02/skos/core#semanticRelation
http://www.w3.org/2004/02/skos/core#altSymbol
http://www.w3.org/2004/02/skos/core#prefSymbol
http://www.w3.org/2004/02/skos/core#symbol
http://www.w3.org/2004/02/skos/core#hiddenLabel
http://www.w3.org/2004/02/skos/core#altLabel
http://www.w3.org/2004/02/skos/core#prefLabel
http://www.w3.org/2004/02/skos/core#inScheme
http://www.w3.org/2004/02/skos/core#isSubjectOf
http://www.w3.org/2004/02/skos/core#subject
http://www.w3.org/2004/02/skos/core#isPrimarySubjectOf
http://www.w3.org/2004/02/skos/core#primarySubject
http://www.w3.org/2004/02/skos/core#subjectIndicator

and the following properties when i click on

skos:ConceptScheme :

http://www.w3.org/2004/02/skos/core#hasTopConcept

http://www.w3.org/2004/02/skos/core#changeNote
http://www.w3.org/2004/02/skos/core#editorialNote
http://www.w3.org/2004/02/skos/core#historyNote
http://www.w3.org/2004/02/skos/core#example
http://www.w3.org/2004/02/skos/core#scopeNote
http://www.w3.org/2004/02/skos/core#definition
http://www.w3.org/2004/02/skos/core#note
http://www.w3.org/2004/02/skos/core#hiddenLabel
http://www.w3.org/2004/02/skos/core#altLabel
http://www.w3.org/2004/02/skos/core#prefLabel
....
but without the narrower : the question for me here is how can i apply the (!bound(?Domain)) to say skos:scopeNote but remove skos:narrower from the result set, which itself hasnt got a domain specified.



Reply via email to