I have following concepts in turtle file. I would like to extract preferred label and ids for parent node (DOID_4159) and all its child from below concepts. I have written following SPARQL query to fetch the information, but it will not give all the child nodes.
qres = g.query(
"""
SELECT *
WHERE {
{?s skos:prefLabel ?prefLabel .
?s skos:broader <http://purl.obolibrary.org/obo/DOID_4159> .
}
UNION
{?s skos:prefLabel "skin cancer"@en .
?s skos:prefLabel ?prefLabel .
}
}
""")
<http://purl.obolibrary.org/obo/DOID_8923>
a skos:Concept ;
skos:altLabel "malignant scalp melanoma"@en , "malignant lip melanoma"@en , "malignant melanoma of skin of upper limb"@en , "cutaneous melanoma"@en , "malignant melanoma of ear and/or external auricular canal"@en , "malignant trunk melanoma"@en , "malignant melanoma of skin of trunk except scrotum"@en , "malignant lower limb melanoma"@en , "malignant melanoma of skin of lower limb"@en , "malignant upper limb melanoma"@en , "malignant ear melanoma"@en , "malignant neck melanoma"@en ;
skos:broader <http://purl.obolibrary.org/obo/DOID_4159> ;
skos:definition "A skin cancer that has_material_basis_in melanocytes." ;
skos:inScheme <https://localhost:8443/ontology/Applicanttest/APPLICANTTEST> ;
<http://purl.obolibrary.org/obo/DOID_3451>
a skos:Concept ;
skos:altLabel "carcinoma of skin"@en ;
skos:broader <http://purl.obolibrary.org/obo/DOID_4159> ;
skos:definition "A skin cancer that is located_in tissues of the skin and develops from epithelial cells." ;
skos:inScheme <https://localhost:8443/ontology/Applicanttest/APPLICANTTEST> ;
skos:prefLabel "skin carcinoma"@en .
<http://purl.obolibrary.org/obo/DOID_6944>
a skos:Concept ;
skos:altLabel "Seborrheic Keratosis of Vulva"@en ;
skos:broader <http://purl.obolibrary.org/obo/DOID_6498> , <http://purl.obolibrary.org/obo/DOID_4159> ;
skos:inScheme <https://localhost:8443/ontology/Applicanttest/APPLICANTTEST> ;
skos:prefLabel "vulvar seborrheic keratosis"@en .
<http://purl.obolibrary.org/obo/DOID_4159>
a skos:Concept ;
skos:altLabel "malignant neoplasm of skin"@en , "CA - skin cancer"@en , "melanoma and Non-melanoma skin cancer"@en ;
skos:broader <http://purl.obolibrary.org/obo/DOID_37> ;
skos:definition "An integumentary system cancer located_in the skin that is the uncontrolled growth of abnormal skin cells." ;
skos:inScheme <https://localhost:8443/ontology/Applicanttest/APPLICANTTEST> ;
skos:prefLabel "skin cancer"@en .
<http://purl.obolibrary.org/obo/DOID_11684>
a skos:Concept ;
skos:broader <http://purl.obolibrary.org/obo/DOID_6498> ;
skos:inScheme <https://localhost:8443/ontology/Applicanttest/APPLICANTTEST> ;
skos:prefLabel "melanoacanthoma"@en .
Following is the desired output:
id label
DOID_8923 skin melanoma
DOID_3451 skin carcinoma
DOID_6944 vulvar seborrheic keratosis
DOID_4159 skin cancer
DOID_6498 seborrheic keratosis
DOID_11684 melanoacanthoma
If I would like to fetch this information for parent (DOID_4159) and all its associated nodes, how can I achieve this? I am new to SPARQL, any help is highly appreciated.
here we have some issues
.
at the end. So you have to update the definition from:<http://purl.obolibrary.org/obo/DOID_8923>
a skos:Concept ;
skos:altLabel "malignant scalp melanoma"@en , "malignant lip melanoma"@en , "malignant melanoma of skin of upper limb"@en , "cutaneous melanoma"@en , "malignant melanoma of ear and/or external auricular canal"@en , "malignant trunk melanoma"@en , "malignant melanoma of skin of trunk except scrotum"@en , "malignant lower limb melanoma"@en , "malignant melanoma of skin of lower limb"@en , "malignant upper limb melanoma"@en , "malignant ear melanoma"@en , "malignant neck melanoma"@en ;
skos:broader <http://purl.obolibrary.org/obo/DOID_4159> ;
skos:definition "A skin cancer that has_material_basis_in melanocytes." ;
skos:inScheme <https://localhost:8443/ontology/Applicanttest/APPLICANTTEST> ;
To:
<http://purl.obolibrary.org/obo/DOID_8923>
a skos:Concept ;
skos:altLabel "malignant scalp melanoma"@en , "malignant lip melanoma"@en , "malignant melanoma of skin of upper limb"@en , "cutaneous melanoma"@en , "malignant melanoma of ear and/or external auricular canal"@en , "malignant trunk melanoma"@en , "malignant melanoma of skin of trunk except scrotum"@en , "malignant lower limb melanoma"@en , "malignant melanoma of skin of lower limb"@en , "malignant upper limb melanoma"@en , "malignant ear melanoma"@en , "malignant neck melanoma"@en ;
skos:broader <http://purl.obolibrary.org/obo/DOID_4159> ;
skos:definition "A skin cancer that has_material_basis_in melanocytes." ;
skos:inScheme <https://localhost:8443/ontology/Applicanttest/APPLICANTTEST> .
The .
at the end, it means that the definition of your entity is complete. While the ;
is used when you need to add other relationships.
The record DOID_8923 has no skos:prefLabel
so, you are not able to retrieve the prefLabel from DOID_8923. You need to add the skos:prefLabel
also to this entity
As already pointed out by UninformedUser
you have to specify the relation between DOID_11684
and DOID_4159
also in your schema
Here you can find your .ttl
file updated and the transitive SPARQL query
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
<http://purl.obolibrary.org/obo/DOID_8923>
a skos:Concept ;
skos:altLabel "malignant scalp melanoma"@en , "malignant lip melanoma"@en , "malignant melanoma of skin of upper limb"@en , "cutaneous melanoma"@en , "malignant melanoma of ear and/or external auricular canal"@en , "malignant trunk melanoma"@en , "malignant melanoma of skin of trunk except scrotum"@en , "malignant lower limb melanoma"@en , "malignant melanoma of skin of lower limb"@en , "malignant upper limb melanoma"@en , "malignant ear melanoma"@en , "malignant neck melanoma"@en ;
skos:broader <http://purl.obolibrary.org/obo/DOID_4159> ;
skos:definition "A skin cancer that has_material_basis_in melanocytes." ;
skos:inScheme <https://localhost:8443/ontology/Applicanttest/APPLICANTTEST> .
<http://purl.obolibrary.org/obo/DOID_3451>
a skos:Concept ;
skos:altLabel "carcinoma of skin"@en ;
skos:broader <http://purl.obolibrary.org/obo/DOID_4159> ;
skos:definition "A skin cancer that is located_in tissues of the skin and develops from epithelial cells." ;
skos:inScheme <https://localhost:8443/ontology/Applicanttest/APPLICANTTEST> ;
skos:prefLabel "skin carcinoma"@en .
<http://purl.obolibrary.org/obo/DOID_6944>
a skos:Concept ;
skos:altLabel "Seborrheic Keratosis of Vulva"@en ;
skos:broader <http://purl.obolibrary.org/obo/DOID_6498> , <http://purl.obolibrary.org/obo/DOID_4159> ;
skos:inScheme <https://localhost:8443/ontology/Applicanttest/APPLICANTTEST> ;
skos:prefLabel "vulvar seborrheic keratosis"@en .
<http://purl.obolibrary.org/obo/DOID_4159>
a skos:Concept ;
skos:altLabel "malignant neoplasm of skin"@en , "CA - skin cancer"@en , "melanoma and Non-melanoma skin cancer"@en ;
skos:broader <http://purl.obolibrary.org/obo/DOID_37> ;
skos:definition "An integumentary system cancer located_in the skin that is the uncontrolled growth of abnormal skin cells." ;
skos:inScheme <https://localhost:8443/ontology/Applicanttest/APPLICANTTEST> ;
skos:prefLabel "skin cancer"@en .
<http://purl.obolibrary.org/obo/DOID_11684>
a skos:Concept ;
skos:broader <http://purl.obolibrary.org/obo/DOID_6498> ;
skos:inScheme <https://localhost:8443/ontology/Applicanttest/APPLICANTTEST> ;
skos:prefLabel "melanoacanthoma"@en .
SPARQL
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix skos: <http://www.w3.org/2004/02/skos/core#>
SELECT *
WHERE {?s skos:broader* <http://purl.obolibrary.org/obo/DOID_4159>;
skos:prefLabel ?prefLabel
}
s prefLabel
<http://purl.obolibrary.org/obo/DOID_4159> skin cancer
<http://purl.obolibrary.org/obo/DOID_3451> skin carcinoma
<http://purl.obolibrary.org/obo/DOID_6944> vulvar seborrheic keratosis