-
Notifications
You must be signed in to change notification settings - Fork 19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add a predicate to link AccessDescriptionSet
with AccessNeedGroupDescription
and AccessNeedDescription
#323
Comments
Hi, could you explain why <set>
a interop:AccessDescriptionSet ;
interop:usesLanguage "en"^^xsd:language .
<en-need-group-pm>
interop:inAccessDescriptionSet <set> . <en-need-group-pm>
a interop:AccessNeedGroupDescription ;
interop:inAccessDescriptionSet <set> ;
interop:hasAccessNeedGroup projectron:need-group-pm ;
skos:prefLabel "Read and Contribute to Projects"@en ;
skos:definition "Allow Projectron to read the Projects you select, and create new ones. Projectron won't modify existing data, but can add more."@en .
|
If I assume a LDP containers, ActivityStreams collections, WAC groups, all work this way. The "container" resource is where we define the "contained" resources (through Of course, I can also go through all the |
My example has those links <set>
a interop:AccessDescriptionSet ;
interop:usesLanguage "en"^^xsd:language .
<en-need-group-pm>
interop:inAccessDescriptionSet <set> .
<en-need-task>
interop:inAccessDescriptionSet <set> . Both Sometimes Some serializations allow hiding it by syntactic sugar, for example The only place where this could cause problem is if predicate is to be used in HTTP Link headers, since |
@srosset81 I've reread through your comments to double-check if I'm somehow missing your point.
Especially this paragraph confirms to me my understanding that we are talking about the difference in the ontology that defines inverse properties and one that prefers having predicates defined only in one of the possible directions. The drawback of defining inverse properties relates to the impact on future queries, one would either need to depend on a reasoner creating inferences based on I often recall this old post when it comes to this topic http://richard.cyganiak.de/blog/2006/06/an-rdf-design-pattern-inverse-property-labels/ |
I think there is a misunderstanding, I'm talking about having each resource in separate files. So, with the current spec, if I open the <set>
a interop:AccessDescriptionSet ;
interop:usesLanguage "en"^^xsd:language . By looking at this file, I wouldn't know what I understand that inverse relationships may be a bad practice, and that they are generally not used in Solid project. So my proposal would be to:
This way, we would conform with what is done with other similar data (LDP containers, WAC groups, ActivityStreams collections...) |
Please notice that in my examples, I did include the needed links <set>
a interop:AccessDescriptionSet ;
interop:usesLanguage "en"^^xsd:language .
<en-need-group-pm>
interop:inAccessDescriptionSet <set> .
<en-need-task>
interop:inAccessDescriptionSet <set> . The resource describing the So the other two separate resources would include the following statements <en-need-group-pm>
a interop:AccessNeedGroupDescription ;
interop:inAccessDescriptionSet <set> ;
interop:hasAccessNeedGroup projectron:need-group-pm ;
skos:prefLabel "Read and Contribute to Projects"@en ;
skos:definition "Allow Projectron to read the Projects you select, and create new ones. Projectron won't modify existing data, but can add more."@en . and <en-need-project>
a interop:AccessNeedDescription ;
interop:inAccessDescriptionSet <set> ;
interop:hasAccessNeed projectron:need-project ;
skos:prefLabel "Access to Projects is essential for Projectron to perform its core function of Project Management"@en . As we see the statements I think the misunderstanding shows in those two specific snippets: In your snippet showing the document describing the <set>
a interop:AccessDescriptionSet ;
interop:usesLanguage "en"^^xsd:language . Which indeed misses the information about relationships. In my snippet the relationship statements are included. <set>
a interop:AccessDescriptionSet ;
interop:usesLanguage "en"^^xsd:language .
<en-need-group-pm>
interop:inAccessDescriptionSet <set> .
<en-need-task>
interop:inAccessDescriptionSet <set> . All the other details about those related resources are in separate documents describing them.
Solid doesn't support LDP Directed and Indirected containers. If it did, one could do: <set> a ldp:DirectContainer, interop:AccessDescriptionSet ;
ldp:membershipResource <set>;
ldp:isMemberOfRelation interop:inAccessDescriptionSet . From https://www.w3.org/ns/ldp
We can see that LDP can use a predicate regardless of its direction from container to contained or vice versa. |
OK I see, thanks for the clarifications... <set>
a interop:AccessDescriptionSet ;
interop:usesLanguage "en"^^xsd:language .
<en-need-group-pm>
interop:inAccessDescriptionSet <set> .
<en-need-task>
interop:inAccessDescriptionSet <set> . over the more straightforward: <set>
a interop:AccessDescriptionSet ;
interop:usesLanguage "en"^^xsd:language .
interop:hasAccessNeedGroupDescription: <en-need-group-pm> .
interop:hasAccessNeedDescription: <en-need-task> . ? That looks like a preference to me. And one I don't understand...
I'm talking about Basic Containers, and the simple |
I don't see a problem with defining it in the other direction; there are a few things we would need to keep in mind, though.
We should probably do another pass on access needs and descriptions keeping in mind change from #303 |
This issue is very close to another one I pointed out regarding TypeIndexes.
There is no predicate linking a
AccessDescriptionSet
withAccessNeedGroupDescription
andAccessNeedDescription
.So if you don't want to store all these resources on the same file (as it should be allowed, according to Linked Data philosophy), you have no way to find where they are.
IMO the spec should include a
interop:hasAccessNeedGroupDescription
and ainterop:hasAccessNeedDescription
predicates, which would be the reverse relationships ofinterop:inAccessDescriptionSet
.Another possibility could be to use the skos:member predicate. But since SKOS is not used elsewhere, it probably doesn't make much sense.
The text was updated successfully, but these errors were encountered: